def getAverageLevel(uid): # Everyone on level 1? if get_leader_level() == 1: return 1 levels = [] # Loop through the players for userid in es.getUseridList(): if int(es.getplayerteam(userid)) <= 1: continue # If the player is the one we are checking for, skip them if userid == uid: continue # Add level to the list levels.append(Player(userid).level) # Make sure the levels list is not empty (can't divide by 0) if len(levels) == 0: return 1 # Get the average average = sum(levels) / len(levels) # Is the average 1 or less? if average <= 1: return 1 return average
def leader_menu_cmd(userid, args): global leaderList # Make sure player exists if not es.exists('userid', userid) and userid != 0: return # Get menu contents newLeaderList = ['->1. Current Leaders:'] leaderNames = get_leader_names() # Add names if we have leaders if leaderNames: # Add leader level and weapon leaderLevel = get_leader_level() newLeaderList.append(' Level %s (%s)' % (leaderLevel, get_level_weapon(leaderLevel))) # Divider newLeaderList.append('-' * 26) # Add player names for player_name in leaderNames: newLeaderList.append(' * %s' % player_name) # No leader else: newLeaderList.extend(('-' * 26, ' * There currently is no leader')) # Finish popup with divider and exit newLeaderList.extend(('-' * 26, '0. Exit')) # Does the popup exists ? if popuplib.exists('ggLeaderMenu'): # Send the user the current popup ? if newLeaderList == leaderList: popuplib.send('ggLeaderMenu', userid) return # Delete the popup popuplib.unsendname('ggLeaderMenu', getUseridList('#human')) popuplib.delete('ggLeaderMenu') # Build new popup ggLeaderMenu = popuplib.create('ggLeaderMenu') ggLeaderMenu.timeout('send', 10) ggLeaderMenu.timeout('view', 10) # Add lines to new popup for line in newLeaderList: ggLeaderMenu.addline(line) # Save current popup leaderList = newLeaderList # Send it popuplib.send('ggLeaderMenu', userid)
def round_start(event_var): global played_knife global played_nade # Reset the played_ variables played_knife = False played_nade = False # Check to see if a sound needs played check_leader_warning(get_leader_level())
def prep_level_menu(userid, popupid): # Make sure the popup exists if not popuplib.exists('ggLevelMenu'): return ggLevelMenu = popuplib.find('ggLevelMenu') ggPlayer = Player(userid) # Get multikill count for the player's level multiKill = get_level_multikill(ggPlayer.level) # Use multikill style menu ? if multiKill > 1: ggLevelMenu.modline(2, ' * You are on level %s (%s)' % (ggPlayer.level, ggPlayer.weapon)) ggLevelMenu.modline(3, ' * You have made %s' % ggPlayer.multikill + '/%s of your required kills' % multiKill) # Normal style menu else: ggLevelMenu.modline(2, ' * You are on level %s' % ggPlayer.level) ggLevelMenu.modline(3, ' * You need a %s kill to advance' % ggPlayer.weapon) # Get leader's level leaderLevel = get_leader_level() # See if the leader is higher than level 1 if leaderLevel > 1: # See if the player is a leader: if is_leader(userid): # See if there is more than 1 leader if get_leader_count() > 1: ggLevelMenu.modline(4, ' * You are currently tied for the leader position') # Player is the only leader else: ggLevelMenu.modline(4, ' * You are currently the leader') # This player is not a leader else: ggLevelMenu.modline(4, ' * You are %s level(s)' % (leaderLevel - ggPlayer.level) + 'behind the leader') # There are no leaders else: ggLevelMenu.modline(4, ' * There currently is no leader') # Wins information ggLevelMenu.modline(6, ' * You have won %s time(s)' % ggPlayer.wins)
def gg_levelup(event_var): # Get the attacker attacker = int(event_var['attacker']) # Get the attacker's instance ggPlayer = Player(attacker) # Is the attacker on the leader level? if ggPlayer.level == get_leader_level(): # Check to see if a sound needs played check_leader_warning(ggPlayer.level)
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 })
def send_level_info_hudhint(ggPlayer): # Get the level, total number of levels and leader level for the hudhint level = ggPlayer.level totalLevels = get_total_levels() leaderLevel = get_leader_level() # Create a string for the hudhint text = langstring('LevelInfo_CurrentLevel', tokens={ 'level': level, 'total': totalLevels }, userid=ggPlayer.userid) text += langstring('LevelInfo_CurrentWeapon', tokens={'weapon': ggPlayer.weapon}, userid=ggPlayer.userid) multiKill = get_level_multikill(level) if multiKill > 1: text += langstring('LevelInfo_RequiredKills', tokens={ 'kills': ggPlayer.multikill, 'total': get_level_multikill(level) }, userid=ggPlayer.userid) leaderTokens = {} # Choose the leaderString based on the player's leadership status if get_leader_count() == 0: leaderString = 'LevelInfo_NoLeaders' elif is_leader(ggPlayer.userid): leaderString = 'LevelInfo_CurrentLeader' if get_leader_count() > 1: leaderString = 'LevelInfo_AmongstLeaders' else: leaderString = 'LevelInfo_LeaderLevel' leaderTokens = { 'level': leaderLevel, 'total': totalLevels, 'weapon': get_level_weapon(leaderLevel) } text += langstring(leaderString, tokens=leaderTokens, userid=ggPlayer.userid) # Send the level information hudhint ggPlayer.hudhint(text)
def gg_levelup(event_var): # Get activation level activateLevel = (get_total_levels() + 1) - int(gg_friendlyfire) # If the Leader is on the friendlyfire level? if get_leader_level() >= activateLevel: # Check whether mp_friendlyfire is enabled if int(mp_friendlyfire) == 0: # Set mp_friendlyfire to 1 mp_friendlyfire.set(1) # Send the message msg('#human', 'WatchYourFire', prefix=True) # Playing sound for userid in getUseridList('#human'): Player(userid).playsound('friendlyfire')
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}, )
def gg_levelup(event_var): global voteHasStarted # Vote has allready been started? if voteHasStarted: return # Start vote ? if get_leader_level() < (get_total_levels() - int(gg_map_vote_trigger)): return # Change global so we dont fire the vote twice voteHasStarted = True # Use 3rd party voting system ? if int(gg_map_vote) > 1: es.server.queuecmd(str(gg_map_vote_command)) return voteStart()
def send_level_info_hudhint(ggPlayer): # Get the level, total number of levels and leader level for the hudhint level = ggPlayer.level totalLevels = get_total_levels() leaderLevel = get_leader_level() # Create a string for the hudhint text = langstring('LevelInfo_CurrentLevel', tokens={ 'level': level, 'total': totalLevels}, userid=ggPlayer.userid) text += langstring('LevelInfo_CurrentWeapon', tokens={ 'weapon': ggPlayer.weapon}, userid=ggPlayer.userid) multiKill = get_level_multikill(level) if multiKill > 1: text += langstring('LevelInfo_RequiredKills', tokens={ 'kills': ggPlayer.multikill, 'total': get_level_multikill(level)}, userid=ggPlayer.userid) leaderTokens = {} # Choose the leaderString based on the player's leadership status if get_leader_count() == 0: leaderString = 'LevelInfo_NoLeaders' elif is_leader(ggPlayer.userid): leaderString = 'LevelInfo_CurrentLeader' if get_leader_count() > 1: leaderString = 'LevelInfo_AmongstLeaders' else: leaderString = 'LevelInfo_LeaderLevel' leaderTokens = {'level': leaderLevel, 'total': totalLevels, 'weapon': get_level_weapon(leaderLevel)} text += langstring(leaderString, tokens=leaderTokens, userid=ggPlayer.userid) # Send the level information hudhint ggPlayer.hudhint(text)
def getLowestLevelUsers(): lowestLevel = get_leader_level() userList = [] # Loop through the users for userid in es.getUseridList(): if int(es.getplayerteam(userid)) <= 1: continue # Get the player's level playerLevel = Player(userid).level # If their level is lower than the previous lowestLevel, reset it if playerLevel < lowestLevel: lowestLevel = playerLevel # Add the player to the userList for the lowestLevel userList = [userid] # If their level is equal to the lowestLevel, add them to userList elif playerLevel == lowestLevel: userList.append(userid) return userList