Stealth moderator implementation

This commit is contained in:
rsakeys 2019-09-03 06:11:57 +04:00
parent 675099f70c
commit 1ec827b543
4 changed files with 28 additions and 7 deletions

View File

@ -455,6 +455,7 @@ CREATE TABLE penguin (
last_paycheck TIMESTAMP NOT NULL,
minutes_played INT NOT NULL DEFAULT 0,
moderator BOOLEAN NOT NULL DEFAULT FALSE,
stealth_moderator BOOLEAN NOT NULL DEFAULT FALSE,
character INT DEFAULT NULL,
igloo INT DEFAULT NULL,
coins INT NOT NULL DEFAULT 500,

View File

@ -28,6 +28,7 @@ class Penguin(db.Model):
last_paycheck = db.Column(db.DateTime, nullable=False, server_default=db.text("now()"))
minutes_played = db.Column(db.Integer, nullable=False, server_default=db.text("0"))
moderator = db.Column(db.Boolean, nullable=False, server_default=db.text("false"))
stealth_moderator = db.Column(db.Boolean, nullable=False, server_default=db.text("false"))
character = db.Column(db.ForeignKey('character.id', ondelete='CASCADE', onupdate='CASCADE'))
igloo = db.Column(db.ForeignKey('penguin_igloo_room.id', ondelete='CASCADE', onupdate='CASCADE'))
coins = db.Column(db.Integer, nullable=False, server_default=db.text("500"))

View File

@ -1,4 +1,5 @@
from houdini.data import db, BaseCrumbsCollection
from houdini.constants import ClientType
class Room(db.Model):
@ -31,12 +32,23 @@ class Room(db.Model):
self.penguins.append(p)
p.room = self
await p.send_xt('jr', self.id, await self.get_string())
await self.send_xt('ap', await p.string)
if p.client_type == ClientType.Vanilla:
if p.data.stealth_moderator:
await p.send_xt('jr', self.id, (await self.get_string(p) + await p.string))
await p.send_xt('ap', await p.string)
else:
await p.send_xt('jr', self.id, await self.get_string(p))
await self.send_xt('ap', await p.string)
else:
await p.send_xt('jr', self.id, await self.get_string(p))
await self.send_xt('ap', await p.string)
async def remove_penguin(self, p):
await self.send_xt('rp', p.data.id)
if p.client_type == ClientType.Vanilla:
if not p.data.stealth_moderator:
await self.send_xt('rp', p.data.id)
else:
await self.send_xt('rp', p.data.id)
self.penguins.remove(p)
p.room = None
@ -44,9 +56,13 @@ class Room(db.Model):
p.toy = None
async def refresh(self, p):
await p.send_xt('grs', self.id, await self.get_string())
if p.client_type == ClientType.Vanilla:
return await p.send_xt('grs', self.id, (await self.get_string(p) + await p.string))
await p.send_xt('grs', self.id, await self.get_string(p))
async def get_string(self):
async def get_string(self, p):
if p.client_type == ClientType.Vanilla:
return '%'.join([await p.string for p in self.penguins if not p.data.stealth_moderator])
return '%'.join([await p.string for p in self.penguins])
async def send_xt(self, *data):

View File

@ -16,8 +16,11 @@ async def handle_join_server(p, penguin_id: int, login_key: str):
return await p.close()
await p.send_xt('activefeatures')
moderator_status = 3 if p.data.character else 2 if p.data.stealth_moderator else 1 if p.data.moderator else 0
await p.send_xt('js', int(p.data.agent_status), int(0),
int(p.data.moderator), int(p.data.book_modified))
moderator_status, int(p.data.book_modified))
current_time = int(time.time())
penguin_standard_time = current_time * 1000