Пример #1
0
 def __init__(self, host, rconpassword):
     self.host = host
     self.rconpassword = rconpassword
     self.console = Console(host, rconpassword)
     self.players = None
     # test connection
     self.console.update()
Пример #2
0
class UrtClient(object):

    color_re = re.compile(r'\^[0-9]')

    _gametype = {'0': 'ffa',
                 '3': 'tdm',
                 '4': 'ts',
                 '5': 'ftl',
                 '6': 'cah',
                 '7': 'ctf',
                 '8': 'bomb'}
    
    _gametype_rev = {'ffa': '0',
                 'tdm': '3',
                 'ts': '4',
                 'ftl': '5',
                 'cah': '6',
                 'ctf': '7',
                 'bomb': '8'}
    
    def __init__(self, host, rconpassword):
        self.host = host
        self.rconpassword = rconpassword
        self.console = Console(host, rconpassword)
        self.players = None
        # test connection
        self.console.update()
        
    def check_rcon(self):
        """
        check if rcon password is valid
        """
        try:
            self.console.rcon('status')
        except:
            return False
        return True

    def getservername(self):
        return self.get_cvar("sv_hostname")
        
    def get_player_list(self, force = False):
        if self.players and not force:
            return self.players
        self.console.rcon_update()
        self.players = self.console.players 
        return self.players
    
    def _clean_colors(self, text):
        if text:
            return self.color_re.sub('',text)
        return text
        
    def _normalize(self, data):
        if data:
            return data.encode('utf_8').strip()
        return data

    def write(self, data):
        cmd, data = self.console.rcon(self._normalize(data))
        return data
    
    def get_cvar(self, data):
        try:
            return self._clean_colors(self.console.vars[data])
        except IndexError:
            return None

    def set_cvar(self, name, value):
        data = self.write('set %s %s' % (self._normalize(name), self._normalize(value)))
        return data
    
    def cyclemap(self):
        data = self.write('cyclemap')
        return data

    def restartmap(self):
        data = self.write('restart')
        return None
    
    def reloadmap(self):
        data = self.write('reload')
        return data

    def bigtext(self, data):
        data = self.write('bigtext "^7%s"' % data)
        return data

    def say(self, data):
        data = self.write('say "^7%s"' % data)
        return data
                    
    def kick(self, data):
        data = self.write('clientkick %s' % data)
        return data   

    def slap(self, data):
        data = self.write('slap %s' % data)
        return data
        
    def set_map(self, data):
        self.write('map %s' % data)
        
    def get_map(self):
        return self.get_cvar('mapname')

    def set_nextmap(self, data):
        self.set_cvar('g_nextmap', data)
        
    def get_nextmap(self):
        return self.get_cvar('g_nextmap')
    
    def set_password(self, data):
        self.set_cvar('g_password', data)
        
    def get_password(self):
        return self.get_cvar('g_password')
        
    def set_gametype(self, data):
        self.set_cvar('g_gametype', self._gametype_rev[data])
        
    def get_gametype(self):
        c = self.get_cvar('g_gametype')
        if c:
            return self._gametype[c] 
        return 'Unknown'