-> !wants
-> !orgs info
-> special cmd's
-> !assist
-> "afk" for players without active account
-> !loot add <item_ref> <count> => nolonger breaks !account
Changes:
-> grouped !tara, !gaunt, .. into !wb
-> Display the most recent news entry on logon (default: enabled)
-> improved grouping of !items
-> Added the option to authentificate WS connections (Datanet module). This is used in special cases, where the Websocket Server requires the clien tto authentificate itself. (Server sends "#auth", client responds with the auth string)
-> Add main name to relaying (priv <-> org) [default: disabled]
-> Added logon/logoff messages back
-> restricted default access to "dangerous" commands to moderator
-> Added optional logging (Private Channel, Org Channel, Tells, ... disabled by default)

Rewrite of the Tower Module.
-> More verbosity, if enabled in config. by default, GAS and Hot timer only.
-> !hot displays currently hot (and in penalty) sites, and these which go hot in < 60 minutes
-> !attacks filterable by PF and Site
-> display current contract QL's grouped by org: !contracts (requires managed cache)
This commit is contained in:
2021-11-25 14:09:43 +01:00
parent 2d7ecf4883
commit 17c776faec
44 changed files with 1669 additions and 1249 deletions
+15 -4
View File
@@ -55,6 +55,9 @@ class OnlineDisplay:
org, priv, notify = 0, 0, 0
previous = DictObject({'char_id': 0})
for player in players:
if player.faction == "":
player.faction = "unknown"
rank = ""
if 'rank' in player:
@@ -74,7 +77,8 @@ class OnlineDisplay:
if main_id != player.main_id:
main_id = player.main_id
afk = "" if not afk else f" [<notice>{afk.message} - since {self.util.time_to_readable(int(time.time() - afk.time))}</notice>]"
blob += f"\n<highlight>{player.main_name}</highlight>{rank}:{afk}\n"
style = "style='text-decoration:none'"
blob += f"\n<highlight>{self.text.make_tellcmd(player.main_name, f'alts {player.main_name}', style=style)}</highlight>{rank}:{afk}\n"
if channel_id == 1:
org += 1
elif channel_id == 2:
@@ -99,6 +103,8 @@ class OnlineDisplay:
org, priv, notify = 0, 0, 0
previous = DictObject({'char_id': 0})
for player in players:
if player.faction == "":
player.faction = "unknown"
rank = ""
if player.char_id in in_org_priv:
continue
@@ -139,6 +145,8 @@ class OnlineDisplay:
}
last = 0
for user in query:
if user.faction == "":
user.faction = "unknown"
if last == user.char_id:
continue
last = user.char_id
@@ -168,23 +176,26 @@ class OnlineDisplay:
def format_org(self, player, rank="", afk="", main_order=False):
main = f"[{self.text.make_tellcmd(player.main_name, f'alts {player.main_name}')}]" if main_order else ""
org = f"({player.org_rank_name}) " if player.org_rank_name else "(Applicant)"
return f" {self.util.get_prof_icon(player.profession)} {rank}" \
f"{self.text.zfill(player.level, 220)}/<green>{self.text.zfill(player.ai_level, 30)}</green> " \
f"<{player.faction.lower()}>{player.name}</{player.faction.lower()}> ({player.org_rank_name}){afk} {main}\n"
f"<{player.faction.lower()}>{player.name}</{player.faction.lower()}> {org}{afk} {main}\n"
def format_priv(self, player, rank="", afk="", main_order=False):
main = f"[{self.text.make_tellcmd(player.main_name, f'alts {player.main_name}')}]" if main_order else ""
org = f"({player.org_name}|{player.org_rank_name}) " if player.org_name else ""
return f" {self.util.get_prof_icon(player.profession)} {rank}" \
f"{self.text.zfill(player.level, 220)}/<green>{self.text.zfill(player.ai_level, 30)}</green> " \
f"<{player.faction.lower()}>{player.name}</{player.faction.lower()}> " \
f"({player.org_name}|{player.org_rank_name}){afk} {main}\n"
f"{org}{afk} {main}\n"
def format_notify(self, player, rank="", afk="", main_order=False):
main = f"[{self.text.make_tellcmd(player.main_name, f'alts {player.main_name}')}]" if main_order else ""
org = f"({player.org_name}|{player.org_rank_name}) " if player.org_name else ""
return f" {self.util.get_prof_icon(player.profession)} {rank}" \
f"{self.text.zfill(player.level, 220)}/<green>{self.text.zfill(player.ai_level, 30)}</green> " \
f"<{player.faction.lower()}>{player.name}</{player.faction.lower()}> " \
f"({player.org_name}|{player.org_rank_name}){afk} {main}\n"
f"{org}{afk} {main}\n"
def count_prof(self, query, params, filters):
if filters: