Ejemplo n.º 1
0
def _punish_player(userid, punishment, adminid, args = [], force = False):
    if adminid == 0 or xapunishments.isUseridAuthorized(adminid, punishment+"_player") or force:
        if (not xapunishments.isUseridAuthorized(userid, "immune_"+punishment)) or (userid == adminid) or force:
            if userid in playerlib.getUseridList("#alive"):
                if callable(punishment_method[punishment]):
                    xapunishments.logging.log("Player "+es.getplayername(adminid)+ " used punishment "+str(punishment)+" on player "+es.getplayername(userid))
                    try:
                        punishment_method[punishment](userid, adminid, args, force)
                    except TypeError:
                        try:
                            punishment_method[punishment](userid, adminid, args)
                        except TypeError:
                            punishment_method[punishment](userid, adminid)
                    return True
                else:
                    es.dbgmsg(0, "xapunishments.py: Cannot find method '"+str(punishment_method[punishment])+"'!")
                    return False
            else:
                es.tell(adminid, xalanguage("dead", {'username':es.getplayername(userid)}, playerlib.getPlayer(adminid).get("lang")))
                return False
        else:
            es.tell(adminid, xalanguage("immune", {'username':es.getplayername(userid)}, playerlib.getPlayer(adminid).get("lang")))
            return False
    else:
        es.tell(adminid, xalanguage("not allowed", (), playerlib.getPlayer(adminid).get("lang")))
        return False
Ejemplo n.º 2
0
def _play_quakesound(soundname, userid, attackerid):
    if soundname in quake_sounds_kv:
        if 'mode' in quake_sounds_kv[soundname]:
            mode = int(quake_sounds_kv[soundname]['mode'])
        else:
            mode = '1'
        if 'visual_mode' in quake_sounds_kv[soundname]:
            visual_mode = int(quake_sounds_kv[soundname]['visual_mode'])
        else:
            visual_mode = '1'
        if mode == 0:
            useridlist_sound = []
        elif mode == 1:
            useridlist_sound = playerlib.getUseridList('#human')
        elif mode == 2:
            useridlist_sound = [userid, attackerid]
        elif mode == 3:
            useridlist_sound = [attackerid]
        elif mode == 4:
            useridlist_sound = [userid]
        else:
            useridlist_sound = playerlib.getUseridList('#human')
        if visual_mode == 0:
            useridlist_text = []
        elif visual_mode == 1:
            useridlist_text = playerlib.getUseridList('#human')
        elif visual_mode == 2:
            useridlist_text = [userid, attackerid]
        elif visual_mode == 3:
            useridlist_text = [attackerid]
        elif visual_mode == 4:
            useridlist_text = [userid]
        else:
            useridlist_text = playerlib.getUseridList('#human')
        if (userid > 0) and (attackerid > 0):
            langdata = {"username":es.getplayername(userid), "attackername":es.getplayername(attackerid)}
        elif userid > 0:
            langdata = {"username":es.getplayername(userid)}
        elif attackerid > 0:
            langdata = {"attackername":es.getplayername(attackerid)}
        else:
            langdata = {}
        for userid in useridlist_sound:
            if not es.isbot(userid):
                soundfile = None
                style = str(quake_sounds_setting.get(userid))
                if style != 'off':
                    if style in quake_sounds_kv[soundname]['sound']:
                        soundfile = str(quake_sounds_kv[soundname]['sound'][style])
                    elif 'standard' in quake_sounds_kv[soundname]['sound']:
                        soundfile = str(quake_sounds_kv[soundname]['sound']['standard'])
                    if soundfile:
                        es.playsound(userid, soundfile, 1.0)
        for userid in useridlist_text:
            if not es.isbot(userid):
                style = str(quake_sounds_setting.get(userid))
                if style != 'off':
                    player = playerlib.getPlayer(userid)
                    soundtext = quake_sounds_language(soundname, langdata, player.get("lang"))
                    usermsg.centermsg(userid, str(soundtext))
Ejemplo n.º 3
0
def score_menu_cmd(userid, args):
    # Make sure player exists
    if not es.exists('userid', userid) and userid != 0:
        return

    # Get list of levels
    scoreList = []
    for player in es.getUseridList():
        scoreList.append('[%s] %s' % (Player(player).level,
                                                    es.getplayername(player)))
    # Sort from highest to lowest
    scoreList.sort(lambda a, b: cmp(int(b[1:].split("]")[0]),
        int(a[1:].split("]")[0])))

    # Is the list empty ?
    if not scoreList:
        return

    # Get the list number the player is at
    listNumber = scoreList.index('[%s] %s' % (Player(userid).level,
                                                es.getplayername(userid))) + 1

    # Create a new OrderedMenu
    ggScoreMenu = OrderedMenu(userid, 'GunGame: Score Menu', scoreList,
                                                    highlightIndex=listNumber)

    # Send the OrderedMenu on the page the player is on
    ggScoreMenu.send_page(get_index_page(listNumber))
Ejemplo n.º 4
0
def sendSecondMenu(userid, choice, popupid):
    oldChoice, target = choice
    if oldChoice == 2:
        steamid           = playerlib.uniqueid(userid, False)
        lang              = playerlib.getPlayer(userid).get("lang")
        if steamid not in locations:
            es.tell(userid, "#green", xalanguage("no locations", {}, lang) )
            return
        currentMap = str(es.ServerVar('eventscripts_currentmap'))
        if currentMap not in locations[steamid]:
            es.tell(userid, "#green", xalanguage("no map locations", {}, lang) )
            return
        if es.getplayerprop(target, 'CBasePlayer.pl.deadflag'):
            es.tell(userid, xalanguage('one player died', {}, playerlib.getPlayer(userid).get("lang") ) )
            return
        x, y, z = locations[steamid][currentMap]
        es.server.queuecmd('es_xsetpos %s %s %s %s' % (target, x, y, z + 10) )
        if not int(xa_anonymous):
            args           = {}
            args["player"] = es.getplayername(target)
            args["admin"]  = es.getplayername(userid)
            for player in playerlib.getPlayerList("#all"):
                es.tell(int(player), xalanguage("teleport to location", args, player.get("lang") ) )
        xateleport.logging.log("has teleported user %s [%s] to their saved location" % (es.getplayername(target), es.getplayersteamid(target)), userid)
    else:
        lang = playerlib.getPlayer(userid).get("lang")
        popupMenu = popuplib.easymenu("xa_teleport_players", "_popup_choice", teleportPlayerToPlayer)
        popupMenu.settitle(xalanguage["player select to send to"])
        for player in filter(lambda x: not es.getplayerprop(x, "CBasePlayer.pl.deadflag"), es.getUseridList()):
            popupMenu.addoption([target, player], es.getplayername(player), lang=lang)
        popupMenu.send(userid)
Ejemplo n.º 5
0
 def mute(self, userid, adminid, args=None):
     userid = int(userid)
     steamid = es.getplayersteamid(userid)
     if userid in self.muted:
         self.muted.remove(userid)
         self.steamids.remove(steamid)
         status = 'unmuted'
         if not bool(self.muted):
             es.addons.unregisterTickListener(self._tickListener)
             self.tickStatus = self.UNREGISTERED
     else:
         if not bool(self.muted):
             es.addons.registerTickListener(self._tickListener)
             self.tickStatus = self.REGISTERED
         self.steamids.add(steamid)
         self.muted.add(userid)
         status = 'muted'
     if str(xa_adminmute_anonymous) == '0':
         tokens = {}
         tokens['admin'] = es.getplayername(adminid)
         tokens['user'] = es.getplayername(userid)
         for player in playerlib.getPlayerList('#human'):
             tokens['state'] = xalanguage(status, lang=player.get("lang"))
             es.tell(int(player), '#multi',
                     xalanguage('admin state', tokens, player.get("lang")))
Ejemplo n.º 6
0
def teleportPlayerToPlayer(userid, choice, popupid):
    target, recipient = choice
    if es.getplayerprop(target, 'CBasePlayer.pl.deadflag') or es.getplayerprop(
            recipient, 'CBasePlayer.pl.deadflag'):
        es.tell(
            userid,
            xalanguage('one player died', {},
                       playerlib.getPlayer(userid).get("lang")))
        return

    if not es.exists('userid', target) or not es.exists('userid', recipient):
        """ One of the player's doesn't exists... Return early and break the function """
        return
    x, y, z = es.getplayerlocation(recipient)
    z += 100
    es.server.queuecmd('es_xsetpos %s %s %s %s' % (target, x, y, z))
    if not int(xa_anonymous):
        args = {}
        args["admin"] = es.getplayername(userid)
        args["target"] = es.getplayername(target)
        args["recipient"] = es.getplayername(recipient)
        for player in playerlib.getPlayerList("#all"):
            es.tell(
                int(player),
                xalanguage("player sent to player", args, player.get("lang")))
    xateleport.logging.log(
        "has teleported user %s [%s] to user %s [%s]" %
        (es.getplayername(target), es.getplayersteamid(target),
         es.getplayername(recipient), es.getplayersteamid(recipient)), userid,
        True)
Ejemplo n.º 7
0
def voteBanCheck(userid, choice, popupid):
    """
    Executed when a player has chosen another to vote ban. Get the steamid
    of the victim, and check for the amount of bans needed. Ban the player
    if their are enough votes
    """
    userid = str(userid)
    if not es.exists('userid', choice):
        """ Something went wrong, the user no longer exists, return early """
        return
    steamid = es.getplayersteamid(choice)
    if userid not in userids or steamid not in targets:
        """ One of the instances weren't avaiable, return early """
        return
        
    xavotekickban.logging.log("has voted to ban user %s [%s]" % (es.getplayername(choice), es.getplayersteamid(choice) ), userid )
    userids[userid]["bans"].append(choice)
    targets[steamid]["bans"] += 1
    bansRemaining = getBansRemaining(steamid)
    if bansRemaining == 0:
        """ There has been enough kicks passed, kick the player. """
        removePlayer(steamid)
        es.server.queuecmd('banid %s %s;writeid;kickid %s "You have been banned"' % (banTime, choice, choice) )
        tokens = {}
        tokens['name'] = es.getplayername(choice)
        for player in playerlib.getPlayerList('#all'):
            es.tell(int(player), '#multi', xalanguage('player banned', tokens, player.get("lang") ) )
        xavotekickban.logging.log("has been vote banned", choice)
    else:
        tokens = {}
        tokens['name']   = es.getplayername(choice)
        tokens['amount'] = bansRemaining
        for player in playerlib.getPlayerList("#all"):
            es.tell( int(player), '#multi', xalanguage('player votes banned', tokens, player.get("lang") ) )
        xavotekickban.logging.log("needs %s more votes till they are banned" % bansRemaining, choice)
Ejemplo n.º 8
0
def score_menu_cmd(userid, args):
    # Make sure player exists
    if not es.exists('userid', userid) and userid != 0:
        return

    # Get list of levels
    scoreList = []
    for player in es.getUseridList():
        scoreList.append('[%s] %s' %
                         (Player(player).level, es.getplayername(player)))
    # Sort from highest to lowest
    scoreList.sort(
        lambda a, b: cmp(int(b[1:].split("]")[0]), int(a[1:].split("]")[0])))

    # Is the list empty ?
    if not scoreList:
        return

    # Get the list number the player is at
    listNumber = scoreList.index(
        '[%s] %s' % (Player(userid).level, es.getplayername(userid))) + 1

    # Create a new OrderedMenu
    ggScoreMenu = OrderedMenu(userid,
                              'GunGame: Score Menu',
                              scoreList,
                              highlightIndex=listNumber)

    # Send the OrderedMenu on the page the player is on
    ggScoreMenu.send_page(get_index_page(listNumber))
Ejemplo n.º 9
0
def _punish_player(userid, punishment, adminid, args = [], force = False):
    if adminid == 0 or xapunishments.isUseridAuthorized(adminid, punishment+"_player") or force:
        if (not xapunishments.isUseridAuthorized(userid, "immune_"+punishment)) or (userid == adminid) or force:
            if userid in playerlib.getUseridList("#alive") or True == punishment_ondead[punishment]:
                if callable(punishment_method[punishment]):
                    xapunishments.logging.log("used punishment %s on user %s [%s]" % (punishment, es.getplayername(userid), es.getplayersteamid(userid)), adminid, True)
                    try:
                        punishment_method[punishment](userid, adminid, args, force)
                    except TypeError:
                        try:
                            punishment_method[punishment](userid, adminid, args)
                        except TypeError:
                            punishment_method[punishment](userid, adminid)
                    return True
                else:
                    es.dbgmsg(0, "xapunishments.py: Cannot find method '"+str(punishment_method[punishment])+"'!")
                    return False
            else:
                if userid not in dead_delayed:
                    dead_delayed[userid] = []
                dead_delayed[userid].append(punishment,adminid,args,force)
                xapunishments.logging.log("will be punished when he next spawns", userid)
                es.tell(adminid, xalanguage("dead", {'username':es.getplayername(userid)}, playerlib.getPlayer(adminid).get("lang")))
                return False
        else:
            es.tell(adminid, xalanguage("immune", {'username':es.getplayername(userid)}, playerlib.getPlayer(adminid).get("lang")))
            return False
    else:
        es.tell(adminid, xalanguage("not allowed", (), playerlib.getPlayer(adminid).get("lang")))
        return False
Ejemplo n.º 10
0
def sendSecondMenu(userid, choice, popupid):
    oldChoice, target = choice
    if oldChoice == 2:
        steamid           = playerlib.uniqueid(userid, False)
        lang              = playerlib.getPlayer(userid).get("lang")
        if steamid not in locations:
            es.tell(userid, "#green", xalanguage("no locations", {}, lang) )
            return
        currentMap = str(es.ServerVar('eventscripts_currentmap'))
        if currentMap not in locations[steamid]:
            es.tell(userid, "#green", xalanguage("no map locations", {}, lang) )
            return
        if es.getplayerprop(target, 'CBasePlayer.pl.deadflag'):
            es.tell(userid, xalanguage('one player died', {}, playerlib.getPlayer(userid).get("lang") ) )
            return
        x, y, z = locations[steamid][currentMap]
        es.server.queuecmd('es_xsetpos %s %s %s %s' % (target, x, y, z + 10) )
        if not int(xa_anonymous):
            args           = {}
            args["player"] = es.getplayername(target)
            args["admin"]  = es.getplayername(userid)
            for player in playerlib.getPlayerList("#all"):
                es.tell(int(player), xalanguage("teleport to location", args, player.get("lang") ) )
        xateleport.logging.log("has teleported user %s [%s] to their saved location" % (es.getplayername(target), es.getplayersteamid(target)), userid)
    else:
        lang = playerlib.getPlayer(userid).get("lang")
        popupMenu = popuplib.easymenu("xa_teleport_players", "_popup_choice", teleportPlayerToPlayer)
        popupMenu.settitle(xalanguage["player select to send to"])
        for player in filter(lambda x: not es.getplayerprop(x, "CBasePlayer.pl.deadflag"), es.getUseridList()):
            popupMenu.addoption([target, player], es.getplayername(player), lang=lang)
        popupMenu.send(userid)
Ejemplo n.º 11
0
def _punishment_slay(userid, adminid, args, force):
    if str(xa_adminslay_anonymous) == '0' and not force:
        tokens = {}
        tokens['admin']   = es.getplayername(adminid)
        tokens['user']    = es.getplayername(userid)
        for user in playerlib.getPlayerList():
            es.tell(int(userid), xalanguage("admin slay", tokens, user.get("lang")))
    player = playerlib.getPlayer(userid)
    player.kill()
Ejemplo n.º 12
0
def respawn(userid, player):
    es.setplayerprop(userid, "CCSPlayer.m_iPlayerState", 0)
    es.setplayerprop(userid, "CCSPlayer.baseclass.m_lifeState", 512)
    command = 'es_xspawnplayer ' + userid
    gamethread.delayed(0.01, es.server.queuecmd, (command))
    spawner = es.getplayername(player.userid)
    other = es.getplayername(userid)
    es.msg('#multi', '#green[SH]', other,
           '#lightgreenhas been respawned by#green', spawner,
           '#lightgreenZeus!')
def _gimp(userid, adminid, args): 
    gimped = players[userid]['gimped'] 
    players[userid]['gimped'] = (1 if not gimped else 0) 
    if str(xa_admingimp_anonymous) == "0": 
        tokens = {} 
        tokens['admin'] = es.getplayername(adminid) 
        tokens['user']  = es.getplayername(userid) 
        for player in playerlib.getPlayerList(): 
            tokens['state'] = xalanguage("gimped", lang=player.get("lang")) if not gimped else xalanguage("ungimped", lang=player.get("lang")) 
            es.tell(int(player), xalanguage("admin state", tokens, player.get("lang"))) 
def _drug(userid, adminid, args): 
    drugged = players[userid]['drugged'] 
    players[userid]['drugged'] = (1 if not drugged else 0) 
    if str(xa_admindrug_anonymous) == "0": 
        tokens = {} 
        tokens['admin'] = es.getplayername(adminid) 
        tokens['user']  = es.getplayername(userid) 
        for player in playerlib.getPlayerList(): 
            tokens['state'] = xalanguage("drugged", lang=player.get("lang")) if not drugged else xalanguage("undrugged", lang=player.get("lang")) 
            es.tell(int(player), xalanguage("admin state", tokens, player.get("lang"))) 
        es.setplayerprop(userid, 'CBasePlayer.m_iDefaultFOV', 165 if not drugged else 90) 
Ejemplo n.º 15
0
def rtv():
    """ Executed when a user types 'rtv' in chat """
    global votes_in
    global vote_req_total
     
    userid  = es.getcmduserid() 
    steamid = es.getplayersteamid(userid) 
    entry(steamid) 
    if not players[steamid][0]:
        
        if (time.time() - map_start_time) < float(vote_req_time):
            tokens = {}
            tokens['time'] = int(float(vote_req_time) - int( time.time() - map_start_time ) ) 
            es.tell(userid, '#multi', lang('map_time', tokens, playerlib.getPlayer(userid).get('lang') ) )
            xartv.logging.log("has been denied the right to RTV as not enough time in the map has passed", userid ) 
        else: 
            if allowVoting:
                players[steamid][0] = True
                vote_req_total = int( round(vote_req_p / 100. * len(playerlib.getPlayerList("#human") ) ) )
                if not votes_in: 
                    name = es.getplayername(userid) 
                    for user in es.getUseridList(): 
                        tokens = {}
                        tokens['player'] = es.getplayername(user)
                        es.tell(user, '#multi', lang('player_started', tokens, playerlib.getPlayer(user).get('lang') ) ) 
                        popuplib.unsend("nomination_menu", user)
                votes_in += 1
                xartv.logging.log("has rocked the vote, %s votes in" % votes_in, userid )
                
                if votes_in >= int(vote_req_min): 
                    if votes_in >= vote_req_total:
                        xartv.logging.log("Rock the vote has passed, starting the vote") 
                        rtv_init() 
                    else: 
                        name   = es.getplayername(userid)
                        tokens = {}
                        tokens['player'] = name
                        tokens['votes']  = vote_req_total - votes_in
                        xartv.logging.log("%s votes still needed to rock the vote" % (vote_req_total - votes_in) ) 
                        for user in es.getUseridList():
                            es.tell(user, '#multi', lang('req', tokens ,playerlib.getPlayer(user).get('lang') ) ) 
                else: 
                    name   = es.getplayername(userid)
                    tokens = {}
                    tokens['player'] = name
                    tokens['votes']  = int(vote_req_min) - votes_in
                    for user in es.getUseridList(): 
                        es.tell(user, '#multi', lang('req', tokens, playerlib.getPlayer(user).get('lang') ) ) 
            else: 
                es.tell(userid, '#multi', lang('started', lang=playerlib.getPlayer(userid).get('lang') ) ) 
    else:
        xartv.logging.log("has attempted to RTV more than once", userid) 
        es.tell(userid, '#multi', lang('1vote', lang=playerlib.getPlayer(userid).get('lang') ) ) 
Ejemplo n.º 16
0
def rtv():
    """ Executed when a user types 'rtv' in chat """
    global votes_in
    global vote_req_total
     
    userid  = es.getcmduserid() 
    steamid = es.getplayersteamid(userid) 
    entry(steamid) 
    if not players[steamid][0]:
        
        if (time.time() - map_start_time) < float(vote_req_time):
            tokens = {}
            tokens['time'] = int(float(vote_req_time) - int( time.time() - map_start_time ) ) 
            es.tell(userid, '#multi', lang('map_time', tokens, playerlib.getPlayer(userid).get('lang') ) )
            xartv.logging.log("has been denied the right to RTV as not enough time in the map has passed", userid ) 
        else: 
            if allowVoting:
                players[steamid][0] = True
                vote_req_total = int( round(vote_req_p / 100. * len(playerlib.getPlayerList("#human") ) ) )
                if not votes_in: 
                    name = es.getplayername(userid) 
                    for user in es.getUseridList(): 
                        tokens = {}
                        tokens['player'] = es.getplayername(user)
                        es.tell(user, '#multi', lang('player_started', tokens, playerlib.getPlayer(user).get('lang') ) ) 
                        popuplib.unsend("nomination_menu", user)
                votes_in += 1
                xartv.logging.log("has rocked the vote, %s votes in" % votes_in, userid )
                
                if votes_in >= int(vote_req_min): 
                    if votes_in >= vote_req_total:
                        xartv.logging.log("Rock the vote has passed, starting the vote") 
                        rtv_init() 
                    else: 
                        name   = es.getplayername(userid)
                        tokens = {}
                        tokens['player'] = name
                        tokens['votes']  = vote_req_total - votes_in
                        xartv.logging.log("%s votes still needed to rock the vote" % (vote_req_total - votes_in) ) 
                        for user in es.getUseridList():
                            es.tell(user, '#multi', lang('req', tokens ,playerlib.getPlayer(user).get('lang') ) ) 
                else: 
                    name   = es.getplayername(userid)
                    tokens = {}
                    tokens['player'] = name
                    tokens['votes']  = int(vote_req_min) - votes_in
                    for user in es.getUseridList(): 
                        es.tell(user, '#multi', lang('req', tokens, playerlib.getPlayer(user).get('lang') ) ) 
            else: 
                es.tell(userid, '#multi', lang('started', lang=playerlib.getPlayer(userid).get('lang') ) ) 
    else:
        xartv.logging.log("has attempted to RTV more than once", userid) 
        es.tell(userid, '#multi', lang('1vote', lang=playerlib.getPlayer(userid).get('lang') ) ) 
Ejemplo n.º 17
0
def TeamChat(userid, text, teamonly):
	text = str(str(text).strip('"'))
	if es.exists('saycommand',text.split(' ')[0]) or text.split(' ')[0].lower() in ["!vote","!kick","!ban","!tele","!teleport","!burn","!slay","!noclip","!beacon","!happy","!slap","!nominate","!rtv","rtv","/rtv","votekick","voteban","!votekick","!voteban","!me","/me"]:
		return (userid, text, teamonly)
	else:
		if es.getplayerteam(userid) == 1:
			return (userid, text, teamonly)
		if es.getplayerteam(userid) == 2:
			es.msg('#multi','[#greenInfected#default] %s: #default%s'%(es.getplayername(userid),text))
		if es.getplayerteam(userid) == 3:
			es.msg('#multi','[#greenSurvivor#default] %s: #default%s'%(es.getplayername(userid),text))
		es.cexec_all('play common/talk.wav')
		return (0, None, None)
Ejemplo n.º 18
0
def xarates_cmd():
    int_userid = es.getcmduserid()
    xarates.logging.log(
        'xarates request by %s (%s)' %
        (es.getplayersteamid(int_userid), es.getplayername(int_userid)))
    dict_rates = {}
    longest_name = 4
    longest_rate = 4
    longest_cmdrate = 8
    longest_updaterate = 11
    longest_interp = 6
    for instance_player in playerlib.getPlayerList("#all"):
        int_player = int(instance_player)
        if es.getplayersteamid(int_player) != "BOT":
            str_name = es.getplayername(int_player)
            if len(str_name) > longest_name:
                longest_name = len(str_name)
            dict_rates[int_player] = {}
            str_rate = es.getclientvar(int_player, "rate")
            dict_rates[int_player]["rate"] = str_rate
            if len(str_rate) > longest_rate:
                longest_rate = len(str_rate)
            str_cmdrate = es.getclientvar(int_player, "cl_cmdrate")
            dict_rates[int_player]["cmdrate"] = str_cmdrate
            if len(str_cmdrate) > longest_cmdrate:
                longest_cmdrate = len(str_cmdrate)
            str_updaterate = es.getclientvar(int_player, "cl_updaterate")
            dict_rates[int_player]["updaterate"] = str_updaterate
            if len(str_updaterate) > longest_updaterate:
                longest_updaterate = len(str_updaterate)
            str_interp = es.getclientvar(int_player, "cl_interp")
            dict_rates[int_player]["interp"] = str_interp
            if len(str_interp) > longest_interp:
                longest_interp = len(str_interp)
    total_len = longest_name + longest_rate + longest_cmdrate + longest_updaterate + longest_interp + 12
    usermsg.echo(int_userid, "|%s|" % ("-" * total_len))
    usermsg.echo(
        int_userid, "|%-*s   %-*s   %-*s   %-*s   %-*s|" %
        (longest_name, "Name", longest_rate, "Rate", longest_cmdrate,
         "CMD Rate", longest_updaterate, "Update Rate", longest_interp,
         "Interp"))
    usermsg.echo(int_userid, "|%s|" % ("-" * total_len))
    for int_player in dict_rates:
        usermsg.echo(
            int_userid, "|%-*s   %-*s   %-*s   %-*s   %-*s|" %
            (longest_name, es.getplayername(int_player), longest_rate,
             dict_rates[int_player]["rate"], longest_cmdrate,
             dict_rates[int_player]["cmdrate"], longest_updaterate,
             dict_rates[int_player]["updaterate"], longest_interp,
             dict_rates[int_player]["interp"]))
    usermsg.echo(int_userid, "|%s|" % ("-" * total_len))
Ejemplo n.º 19
0
def _punish_player(userid, punishment, adminid, args=[], force=False):
    if adminid == 0 or xapunishments.isUseridAuthorized(
            adminid, punishment + "_player") or force:
        if (not xapunishments.isUseridAuthorized(
                userid, "immune_" + punishment)) or (userid
                                                     == adminid) or force:
            if userid in playerlib.getUseridList(
                    "#alive") or True == punishment_ondead[punishment]:
                if callable(punishment_method[punishment]):
                    xapunishments.logging.log(
                        "used punishment %s on user %s [%s]" %
                        (punishment, es.getplayername(userid),
                         es.getplayersteamid(userid)), adminid, True)
                    try:
                        punishment_method[punishment](userid, adminid, args,
                                                      force)
                    except TypeError:
                        try:
                            punishment_method[punishment](userid, adminid,
                                                          args)
                        except TypeError:
                            punishment_method[punishment](userid, adminid)
                    return True
                else:
                    es.dbgmsg(
                        0, "xapunishments.py: Cannot find method '" +
                        str(punishment_method[punishment]) + "'!")
                    return False
            else:
                if userid not in dead_delayed:
                    dead_delayed[userid] = []
                dead_delayed[userid].append(punishment, adminid, args, force)
                xapunishments.logging.log(
                    "will be punished when he next spawns", userid)
                es.tell(
                    adminid,
                    xalanguage("dead", {'username': es.getplayername(userid)},
                               playerlib.getPlayer(adminid).get("lang")))
                return False
        else:
            es.tell(
                adminid,
                xalanguage("immune", {'username': es.getplayername(userid)},
                           playerlib.getPlayer(adminid).get("lang")))
            return False
    else:
        es.tell(
            adminid,
            xalanguage("not allowed", (),
                       playerlib.getPlayer(adminid).get("lang")))
        return False
Ejemplo n.º 20
0
def fire_gg_knife_steal(attacker, victim):
    ggAttacker = Player(attacker)

    # Set up the gg_knife_steal event
    gg_knife_steal = GG_Knife_Steal(attacker=attacker, userid=victim,
                                    attacker_level=ggAttacker.level,
                                    userid_level=Player(victim).level)
    # Fire the gg_knife_steal event
    gg_knife_steal.fire()

    # Announce the level steal
    saytext2('#human', ggAttacker.index, 'StoleLevel',
        {'attacker': es.getplayername(attacker),
        'victim': es.getplayername(victim)})
Ejemplo n.º 21
0
def _gimp(userid, adminid, args):
    gimped = players[userid]['gimped']
    players[userid]['gimped'] = (1 if not gimped else 0)
    if str(xa_admingimp_anonymous) == "0":
        tokens = {}
        tokens['admin'] = es.getplayername(adminid)
        tokens['user'] = es.getplayername(userid)
        for player in playerlib.getPlayerList():
            tokens['state'] = xalanguage(
                "gimped",
                lang=player.get("lang")) if not gimped else xalanguage(
                    "ungimped", lang=player.get("lang"))
            es.tell(int(player),
                    xalanguage("admin state", tokens, player.get("lang")))
Ejemplo n.º 22
0
def _punishment_slap(userid, adminid, args, force):
    if len(args) > 1:
        health = args[1]
    else:
        health = xa_slap_to_damage
    if str(xa_adminslap_anonymous) == '0' and not force:
        tokens = {}
        tokens['admin']   = es.getplayername(adminid)
        tokens['user']    = es.getplayername(userid)
        tokens['health']  = str(health)
        for user in playerlib.getPlayerList():
            es.tell(int(user), xalanguage("admin slap", tokens, user.get("lang")))
    player = playerlib.getPlayer(userid)
    player.set('health', int(health))
def _freeze(userid, adminid, args): 
    player = playerlib.getPlayer(userid) 
    if str(xa_adminfreeze_anonymous) == '0': 
        tokens = {} 
        tokens['admin']   = es.getplayername(adminid) 
        tokens['user']    = es.getplayername(userid) 
        for player in playerlib.getPlayerList(): 
            tokens['state']   = xalanguage("frozen", lang=player.get("lang")) if player.get('freeze') == '0' else xalanguage("defrosted", lang=player.get("lang")) 
            es.tell(int(player), xalanguage("admin state", tokens, player.get("lang")))
    if player.get('freeze') == '0':
        gamethread.queue(player.set, ('noclip', 1))
        gamethread.queue(player.set, ('freeze', 1))
    else:
        gamethread.queue(player.set, ('freeze', 0))
Ejemplo n.º 24
0
def log(module, text, userid=None, admin=False, loglvl=0):
    """
        XA logging
        
        module:         module name (usually automatically provided)
        test:           text string to log
        userid:         optionally provide a userid as reference
        admin:          set to true if this is an admin action
        loglvl:         an optional level - messages with lower xa_log values will not be recorded
        
        Appends a line to the module's log file (found in the xa/logs directory).
        
        Includes ability to reference a specific player and also flag as an admin action
    """
    # Is logging enabled and does our module exist?
    if int(es.ServerVar('xa_log')) and int(
            es.ServerVar('xa_log')) >= loglvl and xa.exists(module):
        # Was a valid source userid specified?
        if userid and es.exists('userid', int(userid)):
            # Is this userid an admin?
            if admin:
                # Adming log
                logtext = '%s: Admin %s [%s]: %s' % (
                    module, es.getplayername(userid),
                    es.getplayersteamid(userid), text)

            else:
                # User log
                logtext = '%s: User %s [%s]: %s' % (
                    module, es.getplayername(userid),
                    es.getplayersteamid(userid), text)

        else:
            # Default log
            logtext = '%s: %s' % (module, text)

        # Create our log folder if it does not exist
        if not os.path.isdir('%s/logs' % xa.coredir()):
            os.mkdir('%s/logs' % xa.coredir())

        # Write to our log file
        logname = '%s/logs/l%s' % (xa.coredir(), time.strftime('%m%d000.log'))
        logfile = open(logname, 'a+')
        logfile.write(
            time.strftime('L %m/%d/%Y - %H:%M:%S: ') + logtext + '\n')
        logfile.close()

        # Write to the SRCDS log file
        es.log(logtext)
def _beacon(userid, adminid, args): 
    beaconed = players[userid]['beaconed'] 
    if str(xa_adminbeacon_anonymous) == "0": 
        tokens = {} 
        tokens['admin'] = es.getplayername(adminid) 
        tokens['user']  = es.getplayername(userid) 
        for player in playerlib.getPlayerList(): 
            tokens['state'] = xalanguage("beaconed", lang=player.get("lang")) if not beaconed else xalanguage("unbeaconed", lang=player.get("lang")) 
            es.tell(int(player), xalanguage("admin state", tokens, player.get("lang"))) 
    if not beaconed: 
        players[userid]['beaconed'] = 1 
        _beacon_loop(userid) 
    else: 
        players[userid]['beaconed'] = 0 
        gamethread.cancelDelayed('beacon_%s'%userid) 
Ejemplo n.º 26
0
def _punishment_burn(userid, adminid, args, force):
    if len(args) > 1:
        burntime = args[1]
    else:
        burntime = xa_admin_burn_time
    if str(xa_adminburn_anonymous) == '0' and not force:
        tokens = {}
        tokens['admin']   = es.getplayername(adminid)
        tokens['user']    = es.getplayername(userid)
        for user in playerlib.getPlayerList():
            es.tell(user, xalanguage("admin burn", tokens, user.get("lang")))
    player = playerlib.getPlayer(userid)
    player.set('burn')
    if int(burntime) > 0:
        gamethread.delayedname(int(burntime), 'burn_%s'%userid, _punishment_extinguish, (userid, adminid, (), True))
def _mute(userid, adminid, args):
    steamid = es.getplayersteamid(userid)
    if userid in muted:
        del muted[userid]
        status = 'unmuted'
    else:
        muted[userid] = steamid
        status = 'muted'
    if str(xa_adminmute_anonymous) == '0':
        tokens = {}
        tokens['admin']  = es.getplayername(adminid)
        tokens['user']   = es.getplayername(userid)
        for player in playerlib.getPlayerList('#human'):
            tokens['state'] = xalanguage(status, lang=player.get("lang"))
            es.tell(int(player), '#multi', xalanguage('admin state', tokens, player.get("lang")))
Ejemplo n.º 28
0
def teleportPlayerToPlayer(userid, choice, popupid):
    target, recipient = choice
    if es.getplayerprop(target, 'CBasePlayer.pl.deadflag') or es.getplayerprop(recipient, 'CBasePlayer.pl.deadflag'):
        es.tell(userid, xalanguage('one player died', {}, playerlib.getPlayer(userid).get("lang") ) )
        return
    x, y, z = es.getplayerlocation(recipient)
    z += 100
    es.server.queuecmd('es_xsetpos %s %s %s %s' % (target, x, y, z) )
    if not int(xa_anonymous):
        args              = {}
        args["admin"]     = es.getplayername(userid)
        args["target"]    = es.getplayername(target)
        args["recipient"] = es.getplayername(recipient) 
        for player in playerlib.getPlayerList("#all"):
            es.tell(int(player), xalanguage("player sent to player", args, player.get("lang") ) )
Ejemplo n.º 29
0
def _punishment_extinguish(userid, adminid, args, force):
    if str(xa_adminburn_anonymous) == '0' and not force:
        tokens = {}
        tokens['admin']   = es.getplayername(adminid)
        tokens['user']    = es.getplayername(userid)
        for user in playerlib.getPlayerList():
            es.tell(user, xalanguage("admin extinguish", tokens, user.get("lang")))
    # Copied from un-released playerlib
    flamelist = es.createentitylist("entityflame") 
    handle = es.getplayerhandle(userid) 
    for flame_entity in flamelist: 
        string = es.getindexprop(flame_entity, 'CEntityFlame.m_hEntAttached') 
        if string == handle: 
            es.setindexprop(flame_entity, 'CEntityFlame.m_flLifetime', 0) 
            break
Ejemplo n.º 30
0
def rtv_cmd(userid, args):
    global voteRocked
    # The vote has already been rocked for this map
    if voteRocked:
        msg(userid, "RTVInitiated", {}, True)
        return

    # The leader level is past the level to disable RTV
    if get_leader_level() >= rtv_DisableLevel:
        msg(userid, "RTVPastLevel", {"level": rtv_DisableLevel}, True)
        return

    # Removed userids no longer in the server
    checkList = rtvList
    for uid in checkList:
        if not es.exists("userid", uid):
            rtvList.remove(uid)

    # The number of total votes required to RTV
    votesRequired = int((len(getUseridList("#human")) *
                         gg_map_vote_rtv_percent / 100.0) + 0.999)
    # The user has already voted
    if userid in rtvList:
        if not len(rtvList) >= votesRequired:
            saytext2(
                "#human",
                Player(userid).index, "RTVVote", {
                    "name": es.getplayername(userid),
                    "votes": len(rtvList),
                    "required": votesRequired
                })
            return
    else:
        rtvList.append(userid)

    # The vote passed
    if len(rtvList) >= votesRequired:
        msg("#human", "RTVPassed", {}, True)
        voteStart()
        voteRocked = True
    else:
        saytext2(
            "#human",
            Player(userid).index, "RTVVote", {
                "name": es.getplayername(userid),
                "votes": len(rtvList),
                "required": votesRequired
            })
Ejemplo n.º 31
0
def rtv():
    """ Executed when a user types 'rtv' in chat """
    global votes_in
    global vote_req_total

    userid = es.getcmduserid()
    steamid = es.getplayersteamid(userid)
    entry(steamid)
    if not players[steamid][0]:

        if (time.time() - map_start_time) < float(vote_req_time):
            tokens = {}
            tokens["time"] = int(float(vote_req_time) - int(time.time() - map_start_time))
            es.tell(userid, "#multi", lang("map_time", tokens, playerlib.getPlayer(userid).get("lang")))
        else:
            if allowVoting:
                players[steamid][0] = True
                vote_req_total = int(round(vote_req_p / 100.0 * len(playerlib.getPlayerList("#human"))))
                if not votes_in:
                    name = es.getplayername(userid)
                    for user in es.getUseridList():
                        tokens = {}
                        tokens["player"] = es.getplayername(user)
                        es.tell(user, "#multi", lang("player_started", tokens, playerlib.getPlayer(user).get("lang")))
                        popuplib.unsend("nomination_menu", user)
                votes_in += 1

                if votes_in >= int(vote_req_min):
                    if votes_in >= vote_req_total:
                        rtv_init()
                    else:
                        name = es.getplayername(userid)
                        tokens = {}
                        tokens["player"] = name
                        tokens["votes"] = vote_req_total - votes_in
                        for user in es.getUseridList():
                            es.tell(user, "#multi", lang("req", tokens, playerlib.getPlayer(user).get("lang")))
                else:
                    name = es.getplayername(userid)
                    tokens = {}
                    tokens["player"] = name
                    tokens["votes"] = int(vote_req_min) - votes_in
                    for user in es.getUseridList():
                        es.tell(user, "#multi", lang("req", tokens, playerlib.getPlayer(user).get("lang")))
            else:
                es.tell(userid, "#multi", lang("started", lang=playerlib.getPlayer(userid).get("lang")))
    else:
        es.tell(userid, "#multi", lang("1vote", lang=playerlib.getPlayer(userid).get("lang")))
Ejemplo n.º 32
0
def rtv():
    """ Executed when a user types 'rtv' in chat """
    global votes_in
    global vote_req_total
     
    userid  = es.getcmduserid() 
    steamid = es.getplayersteamid(userid) 
    entry(steamid) 
    if not players[steamid][0]:
        
        if (time.time() - map_start_time) < float(vote_req_time):
            tokens = {}
            tokens['time'] = int(float(vote_req_time) - int( time.time() - map_start_time ) ) 
            es.tell(userid, '#multi', lang('map_time', tokens, playerlib.getPlayer(userid).get('lang') ) ) 
        else: 
            if allowVoting:
                players[steamid][0] = True
                vote_req_total = int( round(vote_req_p / 100. * len(playerlib.getPlayerList("#human") ) ) )
                if not votes_in: 
                    name = es.getplayername(userid) 
                    for user in es.getUseridList(): 
                        tokens = {}
                        tokens['player'] = es.getplayername(user)
                        es.tell(user, '#multi', lang('player_started', tokens, playerlib.getPlayer(user).get('lang') ) ) 
                        popuplib.unsend("nomination_menu", user)
                votes_in += 1
                
                if votes_in >= int(vote_req_min): 
                    if votes_in >= vote_req_total: 
                        rtv_init() 
                    else: 
                        name   = es.getplayername(userid)
                        tokens = {}
                        tokens['player'] = name
                        tokens['votes']  = vote_req_total - votes_in 
                        for user in es.getUseridList():
                            es.tell(user, '#multi', lang('req', tokens ,playerlib.getPlayer(user).get('lang') ) ) 
                else: 
                    name   = es.getplayername(userid)
                    tokens = {}
                    tokens['player'] = name
                    tokens['votes']  = int(vote_req_min) - votes_in
                    for user in es.getUseridList(): 
                        es.tell(user, '#multi', lang('req', tokens, playerlib.getPlayer(user).get('lang') ) ) 
            else: 
                es.tell(userid, '#multi', lang('started', lang=playerlib.getPlayer(userid).get('lang') ) ) 
    else: 
        es.tell(userid, '#multi', lang('1vote', lang=playerlib.getPlayer(userid).get('lang') ) ) 
Ejemplo n.º 33
0
def fire_gg_knife_steal(attacker, victim):
    ggAttacker = Player(attacker)

    # Set up the gg_knife_steal event
    gg_knife_steal = GG_Knife_Steal(attacker=attacker,
                                    userid=victim,
                                    attacker_level=ggAttacker.level,
                                    userid_level=Player(victim).level)
    # Fire the gg_knife_steal event
    gg_knife_steal.fire()

    # Announce the level steal
    saytext2('#human', ggAttacker.index, 'StoleLevel', {
        'attacker': es.getplayername(attacker),
        'victim': es.getplayername(victim)
    })
Ejemplo n.º 34
0
def genPlayerlistPop(popupname, callback):
	checkPop(popupname)
	p = popuplib.easymenu(popupname, None, callback)
	p.settitle('Select Player')
	for i in es.getUseridList():
		p.addoption(i, es.getplayername(i))
	return p
Ejemplo n.º 35
0
def voteBan():
    """
    Executed when a player types 'voteban' in either console or chat. Build
    a popup of all the valid players they can ban.
    """
    userid = str(es.getcmduserid())
    if es.getplayercount() >= minBanPlayers:
        """ There are enough players to run the command """
        myPopupInstance = popuplib.easymenu("xa_voteban_%s" % userid,
                                            "_popup_choice", voteBanCheck)
        myPopupInstance.settitle("Select a player to ban")
        for player in es.getUseridList():
            """ Loop through all the players in the server """
            if str(player) != userid:
                """ The current iteration is not equal to the user who executed the command """
                myPopupInstance.addoption(
                    player, es.getplayername(player),
                    bool(player not in userids[userid]["bans"]))
        myPopupInstance.send(userid)
    else:
        """ There are not enough players, notify the user """
        es.tell(
            userid, '#green',
            xalanguage("not enough players", {},
                       playerlib.getPlayer(userid).get("lang")))
Ejemplo n.º 36
0
    def removeWeapon(self, weapon):
        """
      Executes "lastinv" on the client if the weapon to remove is the player's active weapon
      Removes the weapon by index
      Creates a new weapon at the player's feet if necessary
      Announces the restricted pickup
      """
        longname = "weapon_" + weapon
        xarestrict.logging.log("Weapon %s has been removed from user %s" % (weapon, es.getplayername(self.userid)))
        if es.createplayerlist(self.userid)[self.userid]["weapon"] == longname:
            es.cexec(self.userid, "lastinv")

        for index in es.createentitylist(longname):
            if es.getindexprop(x, "CBaseEntity.m_hOwnerEntity") <> self.handle:
                continue

            gamethread.delayedname(0.2, "saferemove_%s" % index, saferemove, index)

            if (getTeam(2).isRestricted(weapon) and getTeam(3).isRestricted(weapon)) if int(removebanned) else False:
                lastgive = -1

            else:
                eye_angles = tuple(es.getplayerprop(self.userid, eyeangle_prop % x) for x in range(3))
                es.server.cmd("es_xsetang %s 90 0 0" % self.userid)

                es.server.cmd("es_xentcreate %s %s" % (self.userid, longname))
                lastgive = int(es.ServerVar("eventscripts_lastgive"))
                setNPCWeapon(longname)

                es.server.cmd("es_xsetang %s %s %s %s" % ((self.userid,) + eye_angles))

            self.announceRestrictedPickup(weapon, lastgive)

            break
Ejemplo n.º 37
0
def _mute(userid, adminid, args):
    steamid = es.getplayersteamid(userid)
    if userid in muted:
        del muted[userid]
        status = 'unmuted'
    else:
        muted[userid] = steamid
        status = 'muted'
    if str(xa_adminmute_anonymous) == '0':
        tokens = {}
        tokens['admin'] = es.getplayername(adminid)
        tokens['user'] = es.getplayername(userid)
        for player in playerlib.getPlayerList('#human'):
            tokens['state'] = xalanguage(status, lang=player.get("lang"))
            es.tell(int(player), '#multi',
                    xalanguage('admin state', tokens, player.get("lang")))
Ejemplo n.º 38
0
def voteSubmit(userid, choice, popupname):
    votedUserids.add(userid)
    # Is a revote ?
    for option in mapVoteOptions.keys():
        if userid in mapVoteOptions[option]:

            # Is not the same choice ?
            if choice != option:
                mapVoteOptions[option].remove(userid)
                mapVoteOptions[choice].append(userid)
                break

            # Same choice, stop here
            else:
                return

    # Is a new vote
    else:
        mapVoteOptions[choice].append(userid)

    # Announce players choice if enabled
    if int(gg_map_vote_show_player_vote):
        saytext2("#human", Player(userid).index, "VotedFor", {"name": es.getplayername(userid), "map": choice.lower()})

    # Everyone voted ?
    if isVoteDone():
        voteEnd()
Ejemplo n.º 39
0
def player_death(ev):
    userid = ev['userid']
    steamid = es.getplayersteamid(userid)
    if steamid == 'BOT': steamid = es.getplayername(userid)
    attacker = ev['attacker']
    weapon = ev['weapon']
    if weapon != 'world':
        if weapon != 'worldspawn':
            if userid != attacker:
                if ev['es_userteam'] != ev['es_attackerteam']: 
                    # Normal Player kill
                    xp_kill_min = es.ServerVar('xp_kill_min')
                    xp_kill_max = es.ServerVar('xp_kill_max')
                    xp = random.randint(xp_kill_min,xp_kill_max)
                    if attacker != '0':
                        if userid != '0':
                            pid, plevel = cursor.execute('SELECT id, level FROM users WHERE id=?', (steamid,)).fetchone()
                            if es.getplayersteamid(attacker) == 'BOT':
                                aid = getID(attacker)
                                alevel = '1'
                            else:
                                aid, alevel = cursor.execute('SELECT id, level FROM users WHERE id=?', (getID(attacker),)).fetchone()
                            level_dif = int(plevel) - int(alevel)
                            if alevel < 1:
                                xp = xp * float(es.ServerVar('xp_multi'))
                            if level_dif > 1:
                                xp = xp * level_dif * level_dif
                            elif level_dif == 1:
                                xp = xp * 2
                            if steamid == 'BOT':
                                return
                            xp_msg = langlib.Strings(es.getAddonPath('superhero') + '/languages/xp_msg.ini')
                            global popup_language
                            sh_givexp(attacker,xp,xp_msg('xp_kill',lang=str(popup_language)))
Ejemplo n.º 40
0
def playerinfo_list_selection(userid,choice,popup):
    steamid = getID(choice.userid)
    pheroes = cursor.execute('SELECT heroes FROM users WHERE id=?', (steamid,)).fetchone()
    if pheroes:
        id = choice.userid
        playerinfo = popuplib.create('playerinfo')
        playerinfo.addline('-> 1.'+str(es.getplayername(id)))
        playerinfo.addline('---------')
        heroes = []
        heroes = list(pheroes)
        heroes = heroes[0].split(',')
        counter = 0
        for hero in heroes:
            hero = str(hero)
            if hero != '0':
                counter += 1
                playerinfo.addline(str(counter)+' - '+hero)
        if counter == 0:
            playerinfo_popup = langlib.Strings(es.getAddonPath("superhero") + "/languages/playerinfo_popup.ini")
            global popup_language
            playerinfo.addline(playerinfo_popup('playerinfo_noheroes',lang=str(popup_language)))
        playerinfo.addline('---------')
        playerinfo.addline('-> 2.Back')
        playerinfo.menuselect = playerinfo_selection
        #close_popups(userid)
        popuplib.send('playerinfo',userid)
Ejemplo n.º 41
0
def _play_sound(soundfile, soundname, userid):
    player = playerlib.getPlayer(userid)
    if userid in playerlimit:
        playerlimit[userid] = playerlimit[userid] + 1
    else:
        playerlimit[userid] = 1
    if (playerlimit[userid] < int(sounds_per_round)) or (
        xasounds.isUseridAuthorized(userid, "play_adminsound") == True
    ):
        if (int(sounds_filter_if_dead) == 1) and int(player.get("isdead")) == 1:
            useridlist_sound = playerlib.getUseridList("#dead")
        else:
            useridlist_sound = es.getUseridList()
        langdata = {"username": es.getplayername(userid), "sound": str(soundname)}
        for userid in useridlist_sound:
            if int(xaplayerdata_sounds.get(userid)) == 1:
                es.playsound(userid, soundfile, 1.0)
        for userid in useridlist_sound:
            if int(xaplayerdata_sounds.get(userid)) == 1:
                player = playerlib.getPlayer(userid)
                soundtext = xalanguage("played sound", langdata, player.get("lang"))
                es.tell(userid, soundtext)
    else:
        soundtext = xalanguage("sound limit", {}, player.get("lang"))
        es.tell(userid, soundtext)
Ejemplo n.º 42
0
def _inputbox_handle():
    userid = es.getcmduserid()
    count = int(es.getargc())
    if count > 4:
        parent = es.getargv(1)
        if popuplib.exists(parent):
            module = es.getargv(2)
            if xa.exists(module):
                module = xa.find(module)
                varname = es.getargv(3)
                if module and varname in module.variables:
                    var = module.variables[varname]
                    i = 4
                    oldval = str(var)
                    newvalue = ''
                    while i < count:
                        newvalue = newvalue + ' ' + es.getargv(i)
                        i = i + 1
                    newvalue = newvalue.strip()
                    var.set(newvalue)
                    es.esctextbox(
                        10, userid, "Changed '" + str(varname) + "' setting",
                        "Changed '%s' to '%s'\nThe variable menu is open again.\nPress [ESC] a second time."
                        % (varname, newvalue))
                    menu = _variableEditMenu(userid, module, var, parent)
                    menu.send(userid)
                    xaconfig.logging.log(
                        "Admin %s just change config %s from %s to %s" %
                        (es.getplayername(userid), varname, oldval, newvalue))
    else:
        es.esctextbox(10, userid, "Invalid Entry", "<value>")
Ejemplo n.º 43
0
def voteSubmit(userid, choice, popupname):
    votedUserids.add(userid)
    # Is a revote ?
    for option in mapVoteOptions.keys():
        if userid in mapVoteOptions[option]:

            # Is not the same choice ?
            if choice != option:
                mapVoteOptions[option].remove(userid)
                mapVoteOptions[choice].append(userid)
                break

            # Same choice, stop here
            else:
                return

    # Is a new vote
    else:
        mapVoteOptions[choice].append(userid)

    # Announce players choice if enabled
    if int(gg_map_vote_show_player_vote):
        saytext2('#human',
                 Player(userid).index, 'VotedFor', {
                     'name': es.getplayername(userid),
                     'map': choice.lower()
                 })

    # Everyone voted ?
    if isVoteDone():
        voteEnd()
Ejemplo n.º 44
0
def level_menu_cmd(userid, args):
    # Make sure player exists
    if not es.exists('userid', userid) and userid != 0:
        return

    if len(args):
        # Send user level search
        searchInput = str(args)
        checkUserid = es.getuserid(searchInput)

        # If the search failed, tell them and return
        if not checkUserid:
            msg(userid, 'LevelInfo_PlayerSearchFailed',
                {'player': searchInput})
            return

        # Get the player instance
        ggPlayer = Player(checkUserid)

        # Send the results
        saytext2(userid, ggPlayer.index, 'LevelInfo_PlayerSearch',
                            {'player': es.getplayername(checkUserid),
                            'level': ggPlayer.level,
                            'weapon': ggPlayer.weapon})
    else:
        # Send menu
        popuplib.send('ggLevelMenu', userid)
Ejemplo n.º 45
0
def player_spawn(ev):
    dbg('player_spawn')
    if not es.isbot(ev['userid']):
        steamid = es.getplayersteamid(ev['userid'])
        if not steamid:
            dbg('NO STEAM ID!!!')
            return
        if steamid == 'STEAM_ID_PENDING':
            dbg('STEAM_ID_PENDING')
            gamethread.delayedname(1, 'xs_delayed_%s' % ev['userid'], pendingCheck, kw={userid:ev['userid']})
            pending.append(ev['userid']) 
            return
        if not ev['userid'] in newconnected:
            return
        if not steamid in players:
            players.newplayer(steamid)
        if not steamid in toplist:
            toplist.newplayer(steamid)
        players.increment(steamid,'sessions')
        players.update(steamid,'sessionstart',time.time())
        players.update(steamid,'lastseen',time.time())
        players.update(steamid,'teamchange_time',time.time())
        newname = es.getplayername(ev['userid'])
        players.name(steamid,newname)
        newconnected.remove(ev['userid'])
        if ev['userid'] in pending:
            pending.remove(ev['userid'])
        dbg('player spawned: %s' % steamid)
Ejemplo n.º 46
0
    def log_event(self, event_var):
        '''Method used to log the given event'''

        # Store the event and userid Event Variables
        event = event_var['es_event']
        userid = event_var['userid']

        # Is this an event that needs to log the "attacker" instead?
        if event in ('gg_levelup', 'gg_knife_steal', 'gg_win'):

            # Store the attacker's userid
            userid = event_var['attacker']

        # Is the player still on the server?
        if not es.exists('userid', userid) and userid != 0:

            # If not, return
            return

        # Get all other information to be logged
        player_name = es.getplayername(userid)
        steamid = es.getplayersteamid(userid)
        team_name = self.get_team_name(userid)

        # Log the event with the necessary information
        es.server.queuecmd('es_xlogq "%s<%s><%s><%s>" triggered "%s"'
            % (player_name, userid, steamid, team_name, event))
Ejemplo n.º 47
0
def log(module, text, userid=0, admin=False):
    if bool(int(es.ServerVar("xa_log"))) and xa.exists(module):
        if (int(userid) > 0) and es.exists('userid', int(userid)):
            if admin:
                logtext = str(module) + ': Admin ' + es.getplayername(userid) + ' [' + es.getplayersteamid(userid) + ']: ' + str(text)
            else:
                logtext = str(module) + ': User ' + es.getplayername(userid) + ' [' + es.getplayersteamid(userid) + ']: ' + str(text)
        else:
            logtext = str(module) + ': ' + str(text)
        logname = '%s/logs/l%s' % (xa.coredir(), time.strftime('%m%d000.log'))
        logfile = open(logname, 'a+')
        logfile.write(time.strftime('L %m/%d/%Y - %H:%M:%S: ') + logtext + '\n')
        logfile.close()
        es.log(logtext)
        return True
    return False
Ejemplo n.º 48
0
def playerinfo_list_selection(userid, choice, popup):
    steamid = getID(choice.userid)
    pheroes = cursor.execute('SELECT heroes FROM users WHERE id=?',
                             (steamid, )).fetchone()
    if pheroes:
        id = choice.userid
        playerinfo = popuplib.create('playerinfo')
        playerinfo.addline('-> 1.' + str(es.getplayername(id)))
        playerinfo.addline('---------')
        heroes = []
        heroes = list(pheroes)
        heroes = heroes[0].split(',')
        counter = 0
        for hero in heroes:
            hero = str(hero)
            if hero != '0':
                counter += 1
                playerinfo.addline(str(counter) + ' - ' + hero)
        if counter == 0:
            playerinfo_popup = langlib.Strings(
                es.getAddonPath("superhero") +
                "/languages/playerinfo_popup.ini")
            global popup_language
            playerinfo.addline(
                playerinfo_popup('playerinfo_noheroes',
                                 lang=str(popup_language)))
        playerinfo.addline('---------')
        playerinfo.addline('-> 2.Back')
        playerinfo.menuselect = playerinfo_selection
        #close_popups(userid)
        popuplib.send('playerinfo', userid)
Ejemplo n.º 49
0
def _drug(userid, adminid, args):
    drugged = players[userid]['drugged']
    players[userid]['drugged'] = (1 if not drugged else 0)
    if str(xa_admindrug_anonymous) == "0":
        tokens = {}
        tokens['admin'] = es.getplayername(adminid)
        tokens['user'] = es.getplayername(userid)
        for player in playerlib.getPlayerList():
            tokens['state'] = xalanguage(
                "drugged",
                lang=player.get("lang")) if not drugged else xalanguage(
                    "undrugged", lang=player.get("lang"))
            es.tell(int(player),
                    xalanguage("admin state", tokens, player.get("lang")))
        es.setplayerprop(userid, 'CBasePlayer.m_iDefaultFOV',
                         165 if not drugged else 90)
Ejemplo n.º 50
0
 def database_update(self):
     '''
     Updates the time and the player's name in the database
     '''
     if self.wins:
         _update_winner(('name', 'timestamp'), (_es.getplayername(
             self.userid), 'strftime("%s","now")'), uniqueid=self.steamid)
Ejemplo n.º 51
0
def _play_sound(soundfile, soundname, userid):
    player = playerlib.getPlayer(userid)
    if userid in playerlimit:
        playerlimit[userid] = playerlimit[userid] + 1
    else:
        playerlimit[userid] = 1
    if (playerlimit[userid] < int(sounds_per_round)) or (
            xasounds.isUseridAuthorized(userid, "play_adminsound") == True):
        if (int(sounds_filter_if_dead) == 1) and int(
                player.get('isdead')) == 1:
            useridlist_sound = playerlib.getUseridList('#dead')
        else:
            useridlist_sound = es.getUseridList()
        langdata = {
            "username": es.getplayername(userid),
            "sound": str(soundname)
        }
        for userid in useridlist_sound:
            if int(xaplayerdata_sounds.get(userid)) == 1:
                es.playsound(userid, soundfile, 1.0)
        for userid in useridlist_sound:
            if int(xaplayerdata_sounds.get(userid)) == 1:
                player = playerlib.getPlayer(userid)
                soundtext = xalanguage('played sound', langdata,
                                       player.get("lang"))
                es.tell(userid, soundtext)
    else:
        soundtext = xalanguage('sound limit', {}, player.get("lang"))
        es.tell(userid, soundtext)