Fixed:
-> !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:
@@ -257,6 +257,8 @@ class Character(Any):
|
||||
if char_id is None:
|
||||
return SenderObj(char_id, val.capitalize(), None)
|
||||
else:
|
||||
if int(char_id) >= 4294967290:
|
||||
return SenderObj(None, val.capitalize(), None)
|
||||
return SenderObj(char_id, val.capitalize(), access_service.get_access_level(char_id))
|
||||
|
||||
|
||||
|
||||
+30
-7
@@ -17,6 +17,7 @@ from core.logger import Logger
|
||||
from core.lookup.character_service import CharacterService
|
||||
from core.public_channel_service import PublicChannelService
|
||||
from core.setting_service import SettingService
|
||||
from core.setting_types import BooleanSettingType
|
||||
from core.text import Text
|
||||
from modules.core.accounting.services.access_service import AccessService
|
||||
|
||||
@@ -41,8 +42,8 @@ class IgnCore:
|
||||
self.dimension = None
|
||||
self.last_timer_event = 0
|
||||
self.start_time = int(time.time())
|
||||
self.major_version = "IGNCore v2.7"
|
||||
self.minor_version = "2"
|
||||
self.major_version = "IGNCore v2.8"
|
||||
self.minor_version = "0"
|
||||
self.incoming_queue = FifoQueue()
|
||||
self.mass_message_queue = None
|
||||
self.conns = DictObject()
|
||||
@@ -151,6 +152,15 @@ class IgnCore:
|
||||
|
||||
def start(self):
|
||||
self.register_packet_handler(server_packets.PrivateMessage.id, self.handle_private_message, priority=40)
|
||||
self.setting_service.register("core.logging", "log_tells", "false",
|
||||
BooleanSettingType(),
|
||||
"Should tells get logged to file")
|
||||
self.setting_service.register("core.logging", "log_priv", "false",
|
||||
BooleanSettingType(),
|
||||
"Should the private channel get logged to file")
|
||||
self.setting_service.register("core.logging", "log_org", "false",
|
||||
BooleanSettingType(),
|
||||
"Should the org channel get logged to file")
|
||||
|
||||
def connect(self, config):
|
||||
conn = self.create_conn("main")
|
||||
@@ -352,6 +362,13 @@ class IgnCore:
|
||||
else:
|
||||
color = self.setting_service.get("private_message_color").get_font_color() if add_color else ""
|
||||
pages = self.get_text_pages(msg, self.setting_service.get("private_message_max_page_length").get_value())
|
||||
if self.setting_service.get_value("log_tells") == "1":
|
||||
if type(msg) == ChatBlob:
|
||||
self.logger.log_tell('spam', '->', self.character_service.get_char_name(char_id),
|
||||
f"[link]{msg.title}[/link]")
|
||||
|
||||
else:
|
||||
self.logger.log_tell('spam', '->', self.character_service.get_char_name(char_id), msg)
|
||||
for page in pages:
|
||||
# self.logger.log_tell(conn_id, "To", self.character_service.get_char_name(char_id), page)
|
||||
packet = client_packets.PrivateMessage(char_id, color + page, "\0")
|
||||
@@ -376,18 +393,23 @@ class IgnCore:
|
||||
DictObject({"private_channel_id": private_channel_id, "message": msg}))
|
||||
|
||||
def send_mass_message(self, char_id, msg, add_color=True, log_message=False):
|
||||
# self.logger.log_tell('spam', 'To', self.character_service.get_char_name(char_id), msg)
|
||||
if not char_id:
|
||||
self.logger.warning("Could not send message to empty char_id")
|
||||
if len(self.conns.items()) == 1:
|
||||
self.send_private_message(char_id, msg, add_color, log_message)
|
||||
else:
|
||||
if self.setting_service.get_value("log_tells") == "1":
|
||||
if type(msg) == ChatBlob:
|
||||
self.logger.log_tell('spam', '->', self.character_service.get_char_name(char_id),
|
||||
f"[link]{msg.title}[/link]")
|
||||
|
||||
else:
|
||||
self.logger.log_tell('spam', '->', self.character_service.get_char_name(char_id), msg)
|
||||
color = self.setting_service.get("private_message_color").get_font_color() if add_color else ""
|
||||
pages = self.get_text_pages(msg, self.setting_service.get("private_message_max_page_length").get_value())
|
||||
for page in pages:
|
||||
if log_message:
|
||||
self.logger.log_tell("spam", "To", self.character_service.get_char_name(char_id), page)
|
||||
|
||||
# if self.log_mass_tell().get_value():
|
||||
# self.logger.log_tell("spam", "->", self.character_service.get_char_name(char_id), page)
|
||||
if self.mass_message_queue:
|
||||
packet = client_packets.PrivateMessage(char_id, color + page, "\0")
|
||||
self.mass_message_queue.put(packet)
|
||||
@@ -396,7 +418,8 @@ class IgnCore:
|
||||
self.conns["main"].send_packet(packet)
|
||||
|
||||
def handle_private_message(self, conn: Conn, packet: server_packets.PrivateMessage):
|
||||
# self.logger.log_tell(conn.id, "From", self.character_service.get_char_name(packet.char_id), packet.message)
|
||||
if self.setting_service.get_value("log_tells") == "1":
|
||||
self.logger.log_tell(conn.id, "<-", self.character_service.get_char_name(packet.char_id), packet.message)
|
||||
self.event_service.fire_event(self.PRIVATE_MSG_EVENT, packet)
|
||||
|
||||
def get_text_pages(self, msg, max_page_length):
|
||||
|
||||
@@ -2,6 +2,7 @@ from core.aochat import server_packets, client_packets
|
||||
from core.conn import Conn
|
||||
from core.decorators import instance
|
||||
from core.logger import Logger
|
||||
from core.setting_service import SettingService
|
||||
|
||||
|
||||
@instance()
|
||||
@@ -19,6 +20,7 @@ class PrivateChannelService:
|
||||
self.event_service = registry.get_instance("event_service")
|
||||
self.character_service = registry.get_instance("character_service")
|
||||
self.access_service = registry.get_instance("access_service")
|
||||
self.setting_service: SettingService = registry.get_instance("setting_service")
|
||||
|
||||
def pre_start(self):
|
||||
self.event_service.register_event_type(self.JOINED_PRIVATE_CHANNEL_EVENT)
|
||||
@@ -38,15 +40,19 @@ class PrivateChannelService:
|
||||
def handle_private_channel_message(self, conn: Conn, packet: server_packets.PrivateChannelMessage):
|
||||
if conn.id != "main":
|
||||
return
|
||||
|
||||
if self.setting_service.get_value("log_priv") == "1":
|
||||
char_name = self.character_service.get_char_name(packet.char_id)
|
||||
self.logger.log_chat(conn, "Private Channel", char_name, packet.message)
|
||||
if packet.private_channel_id == self.bot.get_char_id():
|
||||
self.event_service.fire_event(self.PRIVATE_CHANNEL_MESSAGE_EVENT, packet)
|
||||
|
||||
def handle_private_channel_client_joined(self, conn: Conn, packet: server_packets.PrivateChannelClientJoined):
|
||||
if conn.id != "main":
|
||||
return
|
||||
|
||||
if packet.private_channel_id == self.bot.get_char_id():
|
||||
if self.setting_service.get_value("log_priv") == "1":
|
||||
char_name = self.character_service.get_char_name(packet.char_id)
|
||||
self.logger.log_chat(conn, "Private Channel", None, f"{char_name} joined the channel.")
|
||||
self.private_channel_chars[packet.char_id] = packet
|
||||
self.event_service.fire_event(self.JOINED_PRIVATE_CHANNEL_EVENT, packet)
|
||||
|
||||
@@ -55,6 +61,9 @@ class PrivateChannelService:
|
||||
return
|
||||
|
||||
if packet.private_channel_id == self.bot.get_char_id():
|
||||
if self.setting_service.get_value("log_priv") == "1":
|
||||
char_name = self.character_service.get_char_name(packet.char_id)
|
||||
self.logger.log_chat(conn, "Private Channel", None, f"{char_name} left the channel.")
|
||||
del self.private_channel_chars[packet.char_id]
|
||||
self.event_service.fire_event(self.LEFT_PRIVATE_CHANNEL_EVENT, packet)
|
||||
|
||||
|
||||
@@ -87,20 +87,22 @@ class PublicChannelService(BaseModule):
|
||||
return
|
||||
|
||||
if self.is_org_channel_id(packet.channel_id):
|
||||
# char_name = self.character_service.get_char_name(packet.char_id)
|
||||
# if packet.extended_message:
|
||||
# message = packet.extended_message.get_message()
|
||||
# else:
|
||||
# message = packet.message
|
||||
# # self.logger.log_chat(conn.id, "Org Channel", char_name, message)
|
||||
if self.setting_service.get_value("log_org") == "1" and packet.char_id == self.bot.get_char_id():
|
||||
char_name = self.character_service.get_char_name(packet.char_id)
|
||||
if packet.extended_message:
|
||||
message = packet.extended_message.get_message()
|
||||
else:
|
||||
message = packet.message
|
||||
self.logger.log_chat(conn.id, "Org Channel", char_name, message)
|
||||
self.event_service.fire_event(self.ORG_CHANNEL_MESSAGE_EVENT, packet)
|
||||
elif packet.channel_id == self.ORG_MSG_CHANNEL_ID:
|
||||
# char_name = self.character_service.get_char_name(packet.char_id)
|
||||
# if packet.extended_message:
|
||||
# message = packet.extended_message.get_message()
|
||||
# else:
|
||||
# message = packet.message
|
||||
# self.logger.log_chat(conn.id, "Org Msg", char_name, message)
|
||||
if self.setting_service.get_value("log_org") == "1" and packet.char_id == self.bot.get_char_id():
|
||||
char_name = self.character_service.get_char_name(packet.char_id)
|
||||
if packet.extended_message:
|
||||
message = packet.extended_message.get_message()
|
||||
else:
|
||||
message = packet.message
|
||||
self.logger.log_chat(conn.id, "Org Msg", char_name, message)
|
||||
self.event_service.fire_event(self.ORG_MSG_EVENT, packet)
|
||||
|
||||
def is_org_channel_id(self, channel_id):
|
||||
|
||||
+1
-1
@@ -128,7 +128,7 @@ class Text:
|
||||
if count == 0:
|
||||
return no_data_msg
|
||||
else:
|
||||
blob = "<font color=CCInfoText>"
|
||||
blob = ""
|
||||
blob += "" + pages + "\n"
|
||||
blob += headline
|
||||
index = offset
|
||||
|
||||
Reference in New Issue
Block a user