def gg_win(event_var): # Store the winner's name name = event_var['es_attackername'] # Store the winner's index index = int(event_var['es_attackerindex']) # Send chat message for player winning the match saytext2('#human', index, 'PlayerWon', {'player': name}) # We want to loop, so we send a message every second for 3 seconds for x in xrange(4): # Send centermsgs to players about the winner delayed(x, centermsg, ('#human', 'PlayerWon_Center', {'player': name})) # Was the winner a Terrorist? if int(event_var['es_attackerteam']) == 2: # Store color for Terrorists color = '#red' # Was the winner a CT? else: # Store color for CTs color = '#blue' # Send toptext message to players about the winner toptext('#human', 10, color, 'PlayerWon_Center', {'player': name})
def gg_win(event_var): # Store the winner's name name = event_var["es_attackername"] # Store the winner's index index = int(event_var["es_attackerindex"]) # Send chat message for player winning the match saytext2("#human", index, "PlayerWon", {"player": name}) # We want to loop, so we send a message every second for 3 seconds for x in xrange(4): # Send centermsgs to players about the winner delayed(x, centermsg, ("#human", "PlayerWon_Center", {"player": name})) # Was the winner a Terrorist? if int(event_var["es_attackerteam"]) == 2: # Store color for Terrorists color = "#red" # Was the winner a CT? else: # Store color for CTs color = "#blue" # Send toptext message to players about the winner toptext("#human", 10, color, "PlayerWon_Center", {"player": name})
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()
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()
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)
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)})
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 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) })
def do_multi_level(userid): # Check userid validity if not es.exists('userid', userid): return # Retrieve the player's name name = es.getplayername(userid) # Tell everyone we leveled! centermsg('#all', "CenterMultiLevelled", {'name': name}) saytext2('#all', Player(userid).index, 'MultiLevelled', {'name': name}) # Play game sound sound = Player(userid).emitsound('multilevel') # Add the player to the multi-leveling dictionary with the sound to # remove currentMultiLevel[userid] = sound # Create env_spark spark_instance = spe.giveNamedItem(userid, "env_spark") spark_index = spe.getIndexOfEntity(spark_instance) cmd = 'es_xfire %s env_spark SetParent !activator;' % userid cmd += 'es_xfire %s env_spark AddOutput "spawnflags 896";' % userid cmd += 'es_xfire %s env_spark AddOutput "angles -90 0 0";' % userid cmd += 'es_xfire %s env_spark AddOutput "magnitude 8";' % userid cmd += 'es_xfire %s env_spark AddOutput "traillength 3";' % userid cmd += 'es_xfire %s env_spark StartSpark' % userid es.server.queuecmd(cmd) # Set the player's speed getPlayer(userid).speed = int(gg_multi_level_speed) / 100.0 # If gg_multi_level_gravity is enabled, ajust the player's gravity if int(gg_multi_level_gravity) != 100 and int(gg_multi_level_gravity) >= 0: gravity.addGravityChange(userid, int(gg_multi_level_gravity) * 0.01) # Append the spark's index to this player's list if spark_index: Player(userid).multiLevelEntities.append(spark_index) # Set up the gg_multi_level event gg_multi_level_event = GG_Multi_Level(userid=userid, leveler=userid) # Fire the gg_multi_level event gg_multi_level_event.fire()
def do_multi_level(userid): # Check userid validity if not es.exists('userid', userid): return # Retrieve the player's name name = es.getplayername(userid) # Tell everyone we leveled! centermsg('#all', "CenterMultiLevelled", {'name': name}) saytext2('#all', Player(userid).index, 'MultiLevelled', {'name': name}) # Play game sound sound = Player(userid).emitsound('multilevel') # Add the player to the multi-leveling dictionary with the sound to # remove currentMultiLevel[userid] = sound # Create env_spark spark_instance = spe.giveNamedItem(userid, "env_spark") spark_index = spe.getIndexOfEntity(spark_instance) cmd = 'es_xfire %s env_spark SetParent !activator;' % userid cmd += 'es_xfire %s env_spark AddOutput "spawnflags 896";' % userid cmd += 'es_xfire %s env_spark AddOutput "angles -90 0 0";' % userid cmd += 'es_xfire %s env_spark AddOutput "magnitude 8";' % userid cmd += 'es_xfire %s env_spark AddOutput "traillength 3";' % userid cmd += 'es_xfire %s env_spark StartSpark' % userid es.server.queuecmd(cmd) # Set the player's speed getPlayer(userid).speed = int(gg_multi_level_speed) / 100.0 # If gg_multi_level_gravity is enabled, ajust the player's gravity if int(gg_multi_level_gravity) != 100 and int(gg_multi_level_gravity) >= 0: gravity.addGravityChange(userid, int(gg_multi_level_gravity) * 0.01) # Append the spark's index to this player's list if spark_index: Player(userid).multiLevelEntities.append(spark_index) # Set up the gg_multi_level event gg_multi_level_event = GG_Multi_Level(userid=userid, leveler=userid) # Fire the gg_multi_level event gg_multi_level_event.fire()
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 nominateSubmit(userid, choice, popupname): # It has already been chosen while their popup was open if choice in nominations: msg(userid, "NominatedAlready", {"map": choice}, True) return # The nominations list is full if len(nominations) >= int(gg_map_vote_size): msg(userid, "NominationsFull", {"size": int(gg_map_vote_size)}, True) return # Add the chosen nomination nominations.append(choice) saytext2( "#human", Player(userid).index, "Nominated", {"pName": es.getplayername(userid), "map": choice, "cmd": str(gg_map_vote_nominate_command)}, True, )
def nominateSubmit(userid, choice, popupname): # It has already been chosen while their popup was open if choice in nominations: msg(userid, "NominatedAlready", {"map": choice}, True) return # The nominations list is full if len(nominations) >= int(gg_map_vote_size): msg(userid, "NominationsFull", {"size": int(gg_map_vote_size)}, True) return # Add the chosen nomination nominations.append(choice) saytext2( "#human", Player(userid).index, "Nominated", { "pName": es.getplayername(userid), "map": choice, "cmd": str(gg_map_vote_nominate_command) }, True)
def gg_tied_leader(event_var): # Get the number of current leaders leaders = len(event_var['leaders'].split(',')) # Are there only 2 leaders now? if leaders == 2: # Send message that the player just tied the other leader saytext2('#human', event_var['es_userindex'], 'TiedLeader_Singular', {'player': event_var['es_username'], 'level': event_var['leader_level']}) # Is there a tie of 3 or more players? else: # Send message that the player just tied the other leaders saytext2('#human', event_var['es_userindex'], 'TiedLeader_Plural', {'count': leaders, 'player': event_var['es_username'], 'level': event_var['leader_level']})
def remove(self, item): '''Removes a list of userids from the respawn list and spawns the players if necessary''' # Create a list to store names of players being respawned players = list() # Loop through all userids in the current list for userid in item: # Does the current userid exist on the server? if not exists('userid', userid): # If not, do not respawn them continue # Is the player still on a team? if getplayerteam(userid) < 2: # If not, do not respawn them continue # Respawn the player Player(userid).respawn() # Add the player's name to the list of names players.append(getplayername(userid)) # Are any players being respawned? if players: # Get the first player's index index = Player(getuserid(players[0])).index # Send a message about all the players being respawned saytext2('#human', index, 'RespawningPlayer', {'player': '\x01, \x03'.join(players)}, True) # Remove the list from the respawn list super(_RespawnPlayers, self).remove(item)
def remove(self, item): '''Removes a list of userids from the respawn list and spawns the players if necessary''' # Create a list to store names of players being respawned players = list() # Loop through all userids in the current list for userid in item: # Does the current userid exist on the server? if not exists('userid', userid): # If not, do not respawn them continue # Is the player still on a team? if getplayerteam(userid) < 2: # If not, do not respawn them continue # Respawn the player Player(userid).respawn() # Add the player's name to the list of names players.append(getplayername(userid)) # Are any players being respawned? if players: # Get the first player's index index = Player(getuserid(players[0])).index # Send a message about all the players being respawned saytext2('#human', index, 'RespawningPlayer', {'player': '\x01, \x03'.join(players)}, True) # Remove the list from the respawn list super(_RespawnPlayers, self).remove(item)
def gg_leader_disconnect(event_var): # Are there any current leaders? if event_var['leaders'] == "None": return # Get the userids of each of the current leaders in a list leaders = [int(userid) for userid in event_var['leaders'].split(',')] # Is there only 1 leader? if len(leaders) == 1: # Is the player still on the server? if not es.exists('userid', leaders[0]): return # Send message about the new leader saytext2('#human', getPlayer(leaders[0]).index, 'NewLeader', {'player': es.getplayername(leaders[0]), 'level': event_var['leader_level']}) # Are there multiple leaders currently? else: # Get a list of leader names leader_names = [es.getplayername(userid) for userid in leaders if es.exists('userid', userid)] # Are there any leaders? if not leader_names: # If not, return return # Send message about all the current leaders msg('#human', 'NewLeaders', {'players': ', '.join(leader_names), 'level': event_var['leader_level']})
def gg_new_leader(event_var): saytext2('#human', event_var['es_userindex'], 'NewLeader', {'player': event_var['es_username'], 'level': event_var['leader_level']})