示例#1
0
    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
示例#2
0
    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
示例#3
0
文件: rcon.py 项目: LDMBatman/pyarc
    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
示例#4
0
    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
示例#5
0
 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)
示例#6
0
 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)