def parse(packet): if packet.decoded["body"].strip() == 'No Players Connected': player_list = {} else: body = packet.decoded["body"].split("\n") rx = re.compile('[\d]+\. (?P<name>[^,]+), (?P<steamid>[\d]+)', re.IGNORECASE) player_list = {} for line in body: match = rx.search(line) if match is None: #empty string continue steam_id = match.group("steamid") name = match.group("name") player_list[steam_id] = name connected_ids = set(player_list.keys()) - set( Storage.players_online_steam_name.keys()) connected = {} for steam_id in connected_ids: connected[steam_id] = player_list[steam_id] if steam_id not in Storage.players_online_player_name: player = Db.find_player(steam_id=steam_id) if player and player.name: Storage.players_online_player_name[steam_id] = player.name else: Storage.players_online_player_name[steam_id] = "" disconnected_ids = set(Storage.players_online_steam_name.keys()) - set( player_list.keys()) disconnected = {} for steam_id in disconnected_ids: disconnected[steam_id] = Storage.players_online_steam_name[ steam_id] Storage.players_online_steam_name = player_list if len(connected): for steam_id in connected: name = Storage.players_online_steam_name[steam_id] player = Db.find_player(name, steam_id) if player is None: EventHandler.triggerEvent(EventHandler.E_NEW_PLAYER, steam_id, name) EventHandler.triggerEvent(EventHandler.E_CONNECT, connected) if len(disconnected): EventHandler.triggerEvent(EventHandler.E_DISCONNECT, disconnected) return connected, disconnected, Storage.players_online_steam_name
def parse(packet): if packet.decoded["body"].strip() == 'No Players Connected': player_list = {} else: body = packet.decoded["body"].split("\n") rx = re.compile('[\d]+\. (?P<name>[^,]+), (?P<steamid>[\d]+)', re.IGNORECASE) player_list = {} for line in body: match = rx.search(line) if match is None: #empty string continue steam_id = match.group("steamid") name = match.group("name") player_list[steam_id] = name connected_ids = set(player_list.keys()) - set(Storage.players_online_steam_name.keys()) connected = {} for steam_id in connected_ids: connected[steam_id] = player_list[steam_id] if steam_id not in Storage.players_online_player_name: player = Db.find_player(steam_id=steam_id) if player and player.name: Storage.players_online_player_name[steam_id] = player.name else: Storage.players_online_player_name[steam_id] = "" disconnected_ids = set(Storage.players_online_steam_name.keys()) - set(player_list.keys()) disconnected = {} for steam_id in disconnected_ids: disconnected[steam_id] = Storage.players_online_steam_name[steam_id] Storage.players_online_steam_name = player_list if len(connected): for steam_id in connected: name = Storage.players_online_steam_name[steam_id] player = Db.find_player(name,steam_id) if player is None: EventHandler.triggerEvent(EventHandler.E_NEW_PLAYER, steam_id, name) EventHandler.triggerEvent(EventHandler.E_CONNECT, connected) if len(disconnected): EventHandler.triggerEvent(EventHandler.E_DISCONNECT, disconnected) return connected,disconnected,Storage.players_online_steam_name
def is_admin(steam_id=None, steam_name=None): player = Db.find_player(steam_id=steam_id, steam_name=steam_name) if not player: return False if player.admin: return True return False
def filter_chat(cls,steam_name,player_name,text,line): words=text.split() res=None for word in words: if res is None: res=Db.check_mot(word) if res: player=Db.find_player(steam_name=steam_name) steamid=player.steam_id if player is not None else None if steamid is not None: """Rcon.kick_player(steamid)""" """msg=Lang.get('chat_filter_player_kicked').format(player_name,res)""" msg=Lang.get('chat_filter_forbidden_word').format(player_name,res) Rcon.broadcast(msg, rcon.response_callback_response_only)
def store_chat(cls,steam_name,player_name,text,line): player = Db.find_player(steam_name=player_name) player_id = player.id if player is not None else None Db.create_chat_entry(player_id,player_name,text)