def _load_configs(self): '''Loads all "main", "included", and "custom" addon config files''' # Print a message that the base cfg files # and the Included Addon cfg files are being loaded es.dbgmsg(0, langstring('Load_Configs')) # Loop through all base _config.py files for cfgfile in ConfigTypeDictionary.main: # Load the file self._load_config(cfgfile) # Loop through all Included Addon _config.py files for cfgfile in ConfigTypeDictionary.included: # Load the file self._load_config(cfgfile) # Print a message that the Custom Addon cfg files are being loaded es.dbgmsg(0, langstring('Load_CustomConfigs')) # Loop through all Custom Addon _config.py files for cfgfile in ConfigTypeDictionary.custom: # Load the file self._load_config(cfgfile) # Execute all cfg files in one tick delayed(0, self._execute_cfg_files)
def bot_configs(): if int(sv('hostport')) != 27100: es.ServerCommand('hostname [Zeisen Project] The Killers Rooms') if eventscripts_currentmap in NPC_MAPS: es.ServerCommand('mp_ignore_round_win_conditions 1') es.ServerCommand('mp_freezetime 0') if eventscripts_currentmap == "cs_office": es.ServerCommand('bot_quota 0') est.remove("hostage_entity") else: es.ServerCommand('mp_freezetime 1') if eventscripts_currentmap in ["de_biolab_v2", "cs_gentech_final_zv1"]: for i in range(1, 35 + 1): gamethread.delayed(i * 0.05, es.ServerCommand, ('bot_add "Gangsters - %s"' % (i))) if ONLINE: es.ServerCommand('mp_ignore_round_win_conditions 1') else: es.ServerCommand('mp_ignore_round_win_conditions 1') es.ServerCommand('mp_round_restart_delay 4') es.ServerCommand('bot_all_weapons') es.ServerCommand('bot_eco_limit 16001') es.ServerCommand('ammo_338mag_max 0') es.ServerCommand('ammo_357sig_max 0') es.ServerCommand('ammo_45acp_max 0') es.ServerCommand('ammo_50AE_max 0') es.ServerCommand('ammo_556mm_box_max 0') es.ServerCommand('ammo_556mm_max 0') es.ServerCommand('ammo_57mm_max 0') es.ServerCommand('ammo_762mm_max 0') es.ServerCommand('ammo_9mm_max 0') es.ServerCommand('ammo_buckshot_max 0')
def end_warmup(self): """Ends the current Warmup Round""" # Is Warmup Round currently active? if not info.name in PriorityAddon: # If not, there is no need to end the Warmup Round return # Send stop command to repeat loop self.repeat.stop() # Send hudhint to players that Warmup has ended hudhint("#human", self.message) # Remove Priority Addons self.priorities.clear() # Reset the number of extensions self.extensions = 0 # Reset mp_freezetime mp_freezetime.set(self.freezetime) # Execute the End Warmup Round cfg file es.mexec("gungame51/" + str(warmup_end_file)) # Restart the game es.server.queuecmd("mp_restartgame 1") # Set all living players godmode value to True self.set_all_players_godmode(True) # After a 1 second delay, clean up this Warmup Round delayed(1, self.clean_up)
def voteSendcmd(userid, args): # If the map vote isn't running, then stop here ggRepeat = repeat.find('gg_map_vote') if not ggRepeat: return # Make sure the popup exists if not ggVote: return # Make sure the player is eligable to vote if userid not in voteUserids: return # Make sure the player has not recently used the cmd (prevent spam) if userid in voteCmdUserids: return # Add userid to list of cmd ussage voteCmdUserids.append(userid) # Remove from list in 3 seconds gamethread.delayed(3, voteCmdUserids.remove, userid) # Send the menu to the player ggVote.send(userid)
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 genRaceinfoPop(popupname, callback, userid, race): checkPop(popupname) raceinfop = popuplib.create("raceinfo_menu_%s" % userid) raceinfop.menuselect = raceinfo_handler raceinfop.addline("->%s. %s (%s levels/%s skills)" % (race, es.keygetvalue("wcsraces", race, "name"), es.keygetvalue("wcsraces", race, "numberoflevels"), es.keygetvalue("wcsraces", race, "numberofskills"))) raceinfop.addline("Credits: %s" % es.keygetvalue("wcsraces", race, "author")) raceinfop.addline("------------------------") numofskills = int(es.keygetvalue("wcsraces", race, "numberofskills")) counter = 1 scounter = 0 skillnames = es.keygetvalue("wcsraces", race, "skillnames").split("|") skilldescr = es.keygetvalue("wcsraces", race, "skilldescr").split("|") while (counter <= numofskills): raceinfop.addline("->%s. %s" % (counter, skillnames[scounter])) raceinfop.addline("%s" % skilldescr[scounter]) scounter += 1 counter += 1 raceinfop.addline("------------------------") raceinfop.addline("->8. Back") raceinfop.addline("->9. Next") gamethread.delayed(0.0001, raceinfop.send, (userid)) es.keysetvalue("wcsuserdata", userid, "raceinfo", race)
def teleport(self, x, y, z, eyeangle0=0, eyeangle1=0): ''' Teleport the player. Recalculates the player's location automatically for the scripter. ''' # Make sure player is on a team if es.getplayerteam(self.userid) < 2: raise ValueError('Unable to teleport player (%s): not on a team.' % self.userid) # Make sure the player is alive if getPlayer(userid).isdead: raise ValueError('Unable to teleport player (%s): not alive.' % self.userid) # Set position es.server.queuecmd('es_xsetpos %d %s %s %s' % (self.userid, x, y, z)) # Set eye angles if eyeangle0 != 0 or eyeangle1 != 0: es.server.queuecmd('es_xsetang %d %s %s' % (self.userid, eyeangle0, eyeangle1)) # Reset player AFK calculation gamethread.delayed(0.1, self.reset, ())
def wcs_ulti_roots(): userid = int(es.ServerVar('wcs_userid')) count = 0 if es.getplayerteam(userid) >= 2: if playerlib.getUseridList('#alive'): usermsg.fade(userid, 0, 1, 1, 10, 55, 5, 200) x,y,z = es.getplayerlocation(userid) radius = float(es.ServerVar('wcs_radius')) time = float(es.ServerVar('wcs_freezetime')) for user in playerlib.getUseridList('#alive,#'+['ct','t'][es.getplayerteam(userid)-2]): x1,y1,z1 = es.getplayerlocation(user) if ((x1 - x) ** 2 + (y1 - y) ** 2 + (z1 - z) ** 2) ** 0.5 <= radius: #check for wall between... if not tools.wcsgroup.wcsgroup.getUser(user, 'ulti_immunity'): playerlib.getPlayer(user).freeze = 1 gamethread.delayed(time, reset, (user, 'freeze', 0)) count += 1 else: es.tell(user, '#multi', '#lightgreenYour ultimate was blocked, the enemy is #greenimmune.') es.tell(userid, '#multi', '#lightgreenYou #greenblocked #lightgreenan ultimate skill.') if count: es.centertell('Entangling Roots: %s' % (count)) else: es.tell(userid, '#multi','#lightgreenEntangling Roots #greenfailed#lightgreen, because no enemy is close enough.') es.server.queuecmd('es wcs_reset_cooldown %s' % (userid))
def bonusMenu_select(userid, choice, popupid): if (es.getplayerteam(userid) == 1): return for a in range(1, 4): if (choice == '%s' % a): entities = es.createentitylist('info_teleport_destination') for b in entities: if (es.entitygetvalue(b, 'targetname') == "timer_bonus%s" % a): x = es.getplayerprop( userid, "CBasePlayer.localdata.m_vecVelocity[0]") * -1 / 2 y = es.getplayerprop( userid, "CBasePlayer.localdata.m_vecVelocity[1]") * -1 / 2 z = es.getplayerprop( userid, "CBasePlayer.localdata.m_vecVelocity[2]") * -1 / 2 es.setplayerprop( userid, "CBasePlayer.localdata.m_vecBaseVelocity", es.createvectorstring(x, y, z)) gamethread.delayed( 0.01, es.setplayerprop, (userid, "CBasePlayer.localdata.m_vecBaseVelocity", es.createvectorstring(x, y, z))) startPos = es.entitygetvalue(b, 'origin').split(' ') startAng = es.entitygetvalue(b, 'angles').split(' ') es.setpos(userid, startPos[0], startPos[1], startPos[2]) es.setang(userid, startAng[0], startAng[1], startAng[2])
def voteSendcmd(userid, args): # If the map vote isn't running, then stop here ggRepeat = repeat.find("gg_map_vote") if not ggRepeat: return # Make sure the popup exists if not ggVote: return # Make sure the player is eligable to vote if userid not in voteUserids: return # Make sure the player has not recently used the cmd (prevent spam) if userid in voteCmdUserids: return # Add userid to list of cmd ussage voteCmdUserids.append(userid) # Remove from list in 3 seconds gamethread.delayed(3, voteCmdUserids.remove, userid) # Send the menu to the player ggVote.send(userid)
def es_map_start(event_var): global map_list global startTime global change_map change_map = None gameDir = str(es.ServerVar('eventscripts_gamedir')).replace('\\', '/') + '/' mapfilename = gameDir + str(vote_map_file) if os.path.exists(mapfilename): map_file = open(mapfilename, 'r') map_lines = map(lambda x: x.strip(), map_file.readlines()) map_file.close() map_lines = filter(lambda x: not x.startswith('//') and len(x), map_lines) map_list = filter( lambda x: os.path.isfile(gameDir + 'maps/%s.bsp' % x), map_lines) else: es.dbgmsg( 0, "xavote.py: Note: Cannot find maplist file '" + mapfilename + "'") gamethread.cancelDelayed('votemap_timer') round_count.clear() round_count['round_counting'] = 0 round_count['t_wins'] = 0 round_count['c_wins'] = 0 round_count['frag_kills'] = 0 startTime = time.time() if int(time_before_end_of_map_vote): gamethread.delayed(10, DelayTimer) previousMaps.append(event_var['mapname']) if len(previousMaps) and len(previousMaps) > int(ignore_last_map_amount): previousMaps.remove(previousMaps[0])
def start_warmup(self): '''Called when Warmup Round needs to start''' # Add Warmup Round to PriorityAddon self.priorities.add(info.name) # Set the Warmup Message self.message = 'Timer_Ended' # Store a backup of mp_freezetime self.freezetime = int(mp_freezetime) # Set Freeze Time to 0 mp_freezetime.set(0) # Execute the Start Warmup Round cfg es.mexec('gungame51/' + str(warmup_start_file)) # Get the Warmup Weapon self.weapon = self.set_warmup_weapon() # Start the count down self.repeat.start(1, int(warmup_timer)) # Loop through all living players for player in getPlayerList('#alive'): # Give the player the warmup weapon self.give_warmup_weapon(player.userid) # Wait until adding other PriortyAddons delayed(0.1, self.add_priority_addons)
def start_warmup(self): """Called when Warmup Round needs to start""" # Add Warmup Round to PriorityAddon self.priorities.add(info.name) # Set the Warmup Message self.message = "Timer_Ended" # Store a backup of mp_freezetime self.freezetime = int(mp_freezetime) # Set Freeze Time to 0 mp_freezetime.set(0) # Execute the Start Warmup Round cfg es.mexec("gungame51/" + str(warmup_start_file)) # Get the Warmup Weapon self.weapon = self.set_warmup_weapon() # Start the count down self.repeat.start(1, int(warmup_timer)) # Loop through all living players for player in getPlayerList("#alive"): # Give the player the warmup weapon self.give_warmup_weapon(player.userid) # Wait until adding other PriortyAddons delayed(0.1, self.add_priority_addons)
def gg_leveldown(event_var): userid = int(event_var['userid']) # Player leveled down to nade ? if not check_bonus(userid): return # Using weapon list ? if not using_weapon_list(): return oldlevel = int(event_var['old_level']) # Was Player on nade ? if get_level_weapon(oldlevel) == 'hegrenade': # Reset bonus levels Player(userid).nadeBonusMulti = 0 Player(userid).nadeBonusLevel = 1 # Giving bonus (delayed more for bots) if es.isbot(userid): gamethread.delayed(0.50, give_bonus, userid) return gamethread.delayed(0.10, give_bonus, userid)
def end_warmup(self): '''Ends the current Warmup Round''' # Is Warmup Round currently active? if not info.name in PriorityAddon: # If not, there is no need to end the Warmup Round return # Send stop command to repeat loop self.repeat.stop() # Send hudhint to players that Warmup has ended hudhint('#human', self.message) # Remove Priority Addons self.priorities.clear() # Reset the number of extensions self.extensions = 0 # Reset mp_freezetime mp_freezetime.set(self.freezetime) # Execute the End Warmup Round cfg file es.mexec('gungame51/' + str(warmup_end_file)) # Restart the game es.server.queuecmd('mp_restartgame 1') # Set all living players godmode value to True self.set_all_players_godmode(True) # After a 1 second delay, clean up this Warmup Round delayed(1, self.clean_up)
def speed_set(userid): userid = str(userid) player = playerlib.getPlayer(userid) if not playerlib.getPlayer(userid).isdead: if gusers[userid]['crawl'] != 0: player.set("speed", 1.0) gamethread.delayed(0.2, speed_set, userid)
def power(): userid = str(es.getcmduserid()) player = playerlib.getPlayer(userid) if not playerlib.getPlayer(userid).isdead: if int(time.time()) >= int(gusers[userid]['nc_cooldown']): es.server.queuecmd('es_xsetplayerprop %s "CBaseEntity.movetype" 8' % userid) if not 'speed' in gusers[userid]: gusers[userid]['speed'] = 1.0 player.set("speed", 1.0) gusers[userid]['nc_cooldown'] = int(time.time()) + 10 es.centertell(userid,'Noclip activated, do not get Stuck!') es.tell(userid,'#multi','#green[SH]#lightgreen Nightcrawler is partially blinded. You now are aswell.') gusers[userid]['crawl'] = 1 fade(userid, 1, 0.5, 2.8, 0, 0, 0, 254) speed_set(userid) #es.server.cmd('ezrestrict %s #all' % userid) #es.server.cmd('ezrestrict_removeidle #all') #es.server.cmd('ezunrestrict %s knife' % userid) gamethread.delayed(0.1, es.server.queuecmd, 'es_xgive %s weapon_knife' % userid) es.delayed(1,'es_centertell %s 6 seconds left...' % userid) es.delayed(2,'es_centertell %s 5 seconds left...' % userid) es.delayed(3,'es_centertell %s 4 seconds left...' % userid) es.delayed(4,'es_centertell %s 3 seconds left...' % userid) es.delayed(5,'es_centertell %s 2 seconds left...' % userid) es.delayed(6,'es_centertell %s 1 seconds left...' % userid) gamethread.delayed(7,undo,(player)) else: es.tell(userid,'#multi','#green[SH]#lightgreen Cannot activate Nightcrawler #green',int(gusers[userid]['nc_cooldown'])-int(time.time()),'#lightgreenseconds left')
def speed_set(userid): userid = str(userid) player = playerlib.getPlayer(userid) if not playerlib.getPlayer(userid).isdead: if gusers[userid]['crawl'] != 0: player.set("speed", 1.0) gamethread.delayed(0.2,speed_set,userid)
def es_map_start(event_var): '''Method to be ran on es_map_start event''' # Make the sounds downloadable make_downloadable() # Load custom GunGame events gg_resource_file.load() # Execute GunGame's server.cfg file es.delayed(1, 'exec gungame51/gg_server.cfg') # Reset all players reset_players() # Reset current leaders LeaderManager().reset() # Prune the Database prune_winners_db() # Loop through all human players for userid in getUseridList('#human'): # Update players in winner's database Player(userid).database_update() # Is the weapon order sort type set to #random? if str(gg_weapon_order_sort_type) == '#random': # Re-randomize the weapon order get_weapon_order().randomize() # Check to see if gg_start needs fired after everything is loaded delayed(2, check_gg_start)
def restart(): """ Teleports player to first level """ userid = es.getcmduserid() if (es.getplayerteam(userid) != 1): entities = es.createentitylist('info_teleport_destination') for i in entities: if (es.entitygetvalue(i, 'targetname') == "timer_stage1"): x = es.getplayerprop( userid, "CBasePlayer.localdata.m_vecVelocity[0]") * -1 / 2 y = es.getplayerprop( userid, "CBasePlayer.localdata.m_vecVelocity[1]") * -1 / 2 z = es.getplayerprop( userid, "CBasePlayer.localdata.m_vecVelocity[2]") * -1 / 2 es.setplayerprop(userid, "CBasePlayer.localdata.m_vecBaseVelocity", es.createvectorstring(x, y, z)) gamethread.delayed( 0.01, es.setplayerprop, (userid, "CBasePlayer.localdata.m_vecBaseVelocity", es.createvectorstring(x, y, z))) startPos = es.entitygetvalue(i, 'origin').split(' ') startAng = es.entitygetvalue(i, 'angles').split(' ') gamethread.delayed( 0.01, es.setpos, (userid, startPos[0], startPos[1], startPos[2])) es.setang(userid, startAng[0], startAng[1], startAng[2])
def loopStart(): myRepeat = repeat.find('gungameHandicapLoop') status = repeat.status('gungameHandicapLoop') # If the gg_handicap_update is removed if int(gg_handicap_update) == 0: # If the repeat exists, delete it if status > 0: myRepeat.delete() # Stop here return # Loop running ? if status == 0: # Create loop myRepeat = repeat.create('gungameHandicapLoop', handicapUpdate) myRepeat.start(int(gg_handicap_update), 0) return # If the gg_handicap_update was changed, re-create the loop if int(myRepeat['interval']) != float(gg_handicap_update): loopStop() gamethread.delayed(0.1, loopStart) return # Is the loop stopped? if status == 2: # Start loop myRepeat.start(int(gg_handicap_update), 0)
def initialize(): '''Tries to initialize GunGame''' # Load GunGame's events load_events() # Load custom events gg_resource_file.declare_and_load() # Load the base translations load_translation('gungame', 'gungame') # Send message about GunGame loading es.dbgmsg(0, langstring("Load_Start", {'version': gungame_info('version')})) # Load config files load_configs() # Load weapon orders WeaponOrderManager().load_orders() # Load menus MenuManager().load_menus() # Make the sounds downloadable make_downloadable(True) # Pause a moment for the configs to be loaded (OB engine requires this) delayed(0.1, complete_initialization)
def es_map_start(event_var): global map_list global startTime global change_map change_map = None gameDir = str(es.ServerVar('eventscripts_gamedir')).replace('\\','/') + '/' mapfilename = gameDir + str(vote_map_file) if os.path.exists(mapfilename): map_file = open(mapfilename, 'r') map_lines = map(lambda x: x.strip(), map_file.readlines()) map_file.close() map_lines = filter(lambda x: not x.startswith('//') and len(x), map_lines) map_list = filter(lambda x: os.path.isfile(gameDir + 'maps/%s.bsp' % x), map_lines) else: es.dbgmsg(0, "xavote.py: Note: Cannot find maplist file '"+mapfilename+"'") gamethread.cancelDelayed('votemap_timer') round_count.clear() round_count['round_counting'] = 0 round_count['t_wins'] = 0 round_count['c_wins'] = 0 round_count['frag_kills'] = 0 startTime = time.time() if int(time_before_end_of_map_vote): gamethread.delayed(10, DelayTimer) previousMaps.append(event_var['mapname']) if len(previousMaps) and len(previousMaps) > int(ignore_last_map_amount): previousMaps.remove(previousMaps[0])
def finish_initialization(): '''Tries to finish GunGame's initialization''' # Fire the gg_server.cfg es.server.cmd('exec gungame51/gg_server.cfg') # Clear out the GunGame system reset_players() # Restart map msg('#human', 'Loaded') # Prune the DB prune_winners_db() # Load error logging delayed(3.50, make_log_file) # Fire gg_load event GG_Load().fire() # Send message that loading has completed es.dbgmsg(0, langstring("Load_Completed")) # Change the value of gg_weapon_order_file to make sure we call # server_cvar when reloading gungame51 gg_weapon_order_file_backup = str(gg_weapon_order_file) gg_weapon_order_file.set(0) gg_weapon_order_file.set(gg_weapon_order_file_backup) # See if we need to fire event gg_start after everything is loaded delayed(2, check_first_gg_start)
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 round_start(event_var): global quake_sounds_kills quake_sounds_kills = 0 if int(quake_sounds_round_reset): for userid in es.getUseridList(): quake_sounds_players[userid] = { 'kills': 0, 'multikills': 0, 'headshot': False, 'headshots': 0 } else: for userid in es.getUseridList(): if userid in quake_sounds_players: quake_sounds_players[userid]['multikills'] = 0 quake_sounds_players[userid]['headshot'] = False quake_sounds_players[userid]['headshots'] = 0 else: quake_sounds_players[userid] = { 'kills': 0, 'multikills': 0, 'headshot': False, 'headshots': 0 } if int(quake_sounds_round_announce): gamethread.delayed(10, round_announce) _check_event(event_var)
def smokegrenade_detonate(ev): userid = ev['userid'] level = playerlist[userid].GetSkillLevel(skillname) if level > 0: team = int(ev['es_userteam']) save = (float(ev['x']), float(ev['y']), float(ev['z']), team, level) nades.append(save) gamethread.delayed(19.0, rpg_remove_poison, (save,)) # Make the smoke colourfull index = es.createentity("light_dynamic","mylight%s" % userid) es.entitysetvalue(index, "angles", "-90 0 0") if team == 3: es.entitysetvalue(index,"_light", "0 0 255") elif team == 2: es.entitysetvalue(index,"_light", "255 0 0") es.entitysetvalue(index, "_inner_cone","-89") es.entitysetvalue(index, "_cone","-89") es.entitysetvalue(index, "pitch","-90") es.entitysetvalue(index, "distance","256") es.entitysetvalue(index, "spotlight_radius","96") es.entitysetvalue(index, "origin","%s %s %s"% (ev['x'], ev['y'], ev['z'])) es.entitysetvalue(index, "brightness","5") es.entitysetvalue(index, "style","6") es.entitysetvalue(index, "spawnflags","1") es.spawnentity(index) gamethread.delayed(20.0, es.remove, index) es.server.queuecmd('es_xfire %s mylight%s DisableShadow' % (userid,userid)) es.server.queuecmd('es_xfire %s mylight%s addoutput "OnUser1 !self,kill,-1,24"' % (userid,userid)) es.server.queuecmd('es_xfire %s mylight%s addoutput "OnUser2 !self,Toggle,-1,21"' % (userid,userid)) es.server.queuecmd('es_xfire %s mylight%s addoutput "OnUser3 !self,TurnOff,-1,23"' % (userid,userid)) es.server.queuecmd('es_xfire %s mylight%s addoutput "OnUser4 !self,spawnflags,3,19"' % (userid,userid))
def bot_configs(): if int(sv('hostport')) != 27100: es.ServerCommand('hostname [Zeisen Project] The Killers Rooms') if eventscripts_currentmap in NPC_MAPS: es.ServerCommand('mp_ignore_round_win_conditions 1') es.ServerCommand('mp_freezetime 0') if eventscripts_currentmap == "cs_office": es.ServerCommand('bot_quota 0') est.remove("hostage_entity") else: es.ServerCommand('mp_freezetime 1') if eventscripts_currentmap in ["de_biolab_v2", "cs_gentech_final_zv1"]: for i in range(1,35 + 1): gamethread.delayed(i * 0.05, es.ServerCommand, ('bot_add "Gangsters - %s"' %(i))) if ONLINE: es.ServerCommand('mp_ignore_round_win_conditions 1') else: es.ServerCommand('mp_ignore_round_win_conditions 1') es.ServerCommand('mp_round_restart_delay 4') es.ServerCommand('bot_all_weapons') es.ServerCommand('bot_eco_limit 16001') es.ServerCommand('ammo_338mag_max 0') es.ServerCommand('ammo_357sig_max 0') es.ServerCommand('ammo_45acp_max 0') es.ServerCommand('ammo_50AE_max 0') es.ServerCommand('ammo_556mm_box_max 0') es.ServerCommand('ammo_556mm_max 0') es.ServerCommand('ammo_57mm_max 0') es.ServerCommand('ammo_762mm_max 0') es.ServerCommand('ammo_9mm_max 0') es.ServerCommand('ammo_buckshot_max 0')
def updateAdminModLists(): global serverId gbanPath = es.getAddonPath('GlobalBan') # Strip out eventscripts/addons/GlobalBan = 29 characters basePath = gbanPath[0:len(gbanPath)-29] # Determine what admin mods exist by looking for the admin files # If the admin mod files do not exist, then the mod is not installed # Mani Detection # See if cfg/mani_admin_plugin/clients.txt exists if pluginMani == 1: # es.server.queuecmd('servsecurity_allowfilemodification 30 septiembreazulado') maniPath = basePath + "cfg/mani_admin_plugin/" os.system(wgetPath + " -b --quiet -O " + maniPath + "reserveslots.txt -a " + es.getAddonPath('GlobalBan') + "/gban.log \"" + websiteAddy + "index.php?page=getManiReservedSlots&es=1&serverId=" + serverId + "\"") os.system(wgetPath + " -b --quiet -O " + maniPath + "clients.txt -a " + es.getAddonPath('GlobalBan') + "/gban.log \"" + websiteAddy + "index.php?page=getManiList&es=1&serverId=" + serverId + "\"") # Execute mani command to refresh admin list gamethread.delayed(10, reloadMani); gbanLog('GBAN: Updating Mani clients.txt file.') # SourceMod Detection # See if addons/soucemod/configs/admin_simple.ini exists if pluginSourceMod == 1: sourceModPath = basePath + "addons/sourcemod/configs/" os.system(wgetPath + " -b --quiet -O " + sourceModPath + "admin_groups.cfg -a " + es.getAddonPath('GlobalBan') + "/gban.log \"" + websiteAddy + "index.php?page=getSourceModGroups&es=1&serverId=" + serverId + "\"") os.system(wgetPath + " -b --quiet -O " + sourceModPath + "admins_simple.ini -a " + es.getAddonPath('GlobalBan') + "/gban.log \"" + websiteAddy + "index.php?page=getSourceModList&es=1&serverId=" + serverId + "\"") # Execute sourcemod command to refresh admin list gamethread.delayed(10, reloadSourceMod); gbanLog('GBAN: Updating SourceMod admins_simple.ini and admin_group.cfg files.')
def player_activate(event_var): """ Executed automatically when a player activates on the server. Ensure that they have the items in the dictionary loaded. @PARAM event_var - an automatic passed event instance """ gamethread.delayed(0, setDefaultAttributes, event_var['userid'])
def Overlay(self): index = es.createentity('env_screenoverlay') es.setentityname(index,self.NAME) es.entitysetvalue(index,'OverlayTime1',self.duration) es.entitysetvalue(index,'OverlayName1',str(self.path)) es.spawnentity(index) gamethread.queue(es.fire,(es.getUseridList()[0],self.NAME,'StartOverlays')) gamethread.delayed(self.duration,self.Shutdown,())
def _ticker(vname): vote = find(vname) if vote and vote.running: vote.time -= 1 if vote.time > 0: gamethread.delayed(1, _ticker, (vote.name)) elif vote.endtime: vote.stop(False, True)
def player_team(event_var): userid = int(event_var["userid"]) # Store them here so we don't punish them if this team change caused a # suicide if not userid in recentTeamChange: recentTeamChange.append(userid) gamethread.delayed(0.2, recentTeamChange.remove, userid)
def check_nade(userid): userid = str(userid) player = playerlib.getPlayer(userid) if not playerlib.getPlayer(userid).isdead: if int(es.getplayerprop(userid, "CBasePlayer.localdata.m_iAmmo.011")) != 1: gamethread.delayed(0.1, es.server.cmd, 'es_xgive %s weapon_hegrenade' % userid) gamethread.cancelDelayed(delayname % player) gamethread.delayedname(GOBHE_DELAY, delayname % player, check_nade, player)
def round_end(event_var): '''Fired at the end of each round''' # Loop through both teams for team in gg_teams: # Delay 1 tick so that the level is set properly delayed(0.1, gg_teams[team].set_all_player_levels)
def player_activate(event_var): bomb_timer_setting.updateTime(int(event_var['userid'])) gamethread.delayed( 30, es.cexec, (int(event_var['userid']), 'echo ' + hunter_bomb_timer_text)) gamethread.delayed( 15, es.tell, (int(event_var['userid']), '#multi', '#green[BombTimer] #defaultSay \'!bombtimer\' for settings menu'))
def power(): userid = str(es.getcmduserid()) player = playerlib.getPlayer(userid) if not playerlib.getPlayer(userid).isdead: if jub[userid] < MAX_POW: es.tell(userid, '#multi', '#green[SH]#lightgreen Jubilee pink shades now protect you from flashbangs') fade(userid, 0, 5, 5, 64, 0, 64, 130) gamethread.delayed(12, Unblind, userid) jub[userid] += 1
def player_activate(event_var): global on_connect if int(es.ServerVar("sv_cheats")) == 0: on_connect = True if int(check_on_fragR) == 0 and int(check_repeatR) == 0: check_variable_connect(event_var['userid']) gamethread.delayed(random.randint(40,100), check_variable, event_var['userid']) else: check_variable(event_var['userid'])
def levelup(self, levelsAwarded, victim=0, reason=''): """ Adds a declared number of levels to the attacker. Arguments: * levelsAwarded: (required) The number of levels to award to the attacker. * victim: (default of 0) The userid of the victim. * reason: (not required) The string reason for leveling up the attacker. """ # Return false if we can't level up if self.preventlevel.levelup: return False # Calculate the new level newLevel = self.level + int(levelsAwarded) # TODO: Winner check would be good for the callback method of eventlib # See if we have a winner if newLevel > _total_levels(): global recentWinner # If there was a recentWinner, stop here to prevent multiple wins if recentWinner: return False # Set recentWinner to True recentWinner = True # In 3 seconds, remove the recentWinner _gamethread.delayed(3, _remove_recent_winner, ()) # Set up the gg_win event gg_win = _GG_Win(attacker=self.userid, winner=self.userid, userid=victim, loser=victim) # Fire the gg_win event return gg_win.fire() # Set the new level self.level = newLevel # Play the levelup sound self.playsound('levelup') # Reset multikill self.multikill = 0 # Set up the gg_levelup event gg_levelup = _GG_LevelUp(attacker=self.userid, leveler=self.userid, userid=victim, old_level=self.level, new_level=newLevel, reason=reason) # Fire the gg_levelup event return gg_levelup.fire()
def es_map_start(event_var): """ Executed when the map starts """ global map_start_time global allowVoting map_start_time = time.time() allowVoting = True for steamid in players: players[steamid] = [False, False] gamethread.delayed(1, loadPopups)
def refreshAdmins(): global websiteAddy, serverId os.system(wgetPath + " -b --quiet -O " + es.getAddonPath('GlobalBan') + "/es_clanMembers_db.txt -a " + es.getAddonPath('GlobalBan') + "/gban.log \"" + websiteAddy + "index.php?page=getAdminList&es=1&serverId="+serverId+"\"") gbanLog('GBAN: Updating Admin List') gamethread.delayed(10, reloadAdminKeyGroup) # Get the list of plugins this server is enabled for os.system(wgetPath + " -b --quiet -O " + es.getAddonPath('GlobalBan') + "/plugins.cfg -a " + es.getAddonPath('GlobalBan') + "/gban.log \"" + websiteAddy + "index.php?page=getPluginConfig&es=1&serverId=" + serverId + "\"") gamethread.delayed(12, loadPluginConfig)
def player_activate(event_var): global on_connect if int(es.ServerVar("sv_cheats")) == 0: on_connect = True if int(check_on_fragR) == 0 and int(check_repeatR) == 0: check_variable_connect(event_var['userid']) gamethread.delayed(random.randint(40, 100), check_variable, event_var['userid']) else: check_variable(event_var['userid'])
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 genCategoriesPop(popupname, callback, userid): checkPop(popupname) categories_menu = popuplib.easymenu(popupname, None, callback) categories_menu.settitle('Choose a Catagory') counter = 1 while es.exists("key", "wcscategories", counter): catname = es.keygetvalue("wcscategories", counter, "name") categories_menu.addoption(counter, catname) counter += 1 gamethread.delayed(0.001, categories_menu.send, userid)
def level_call_back(name, value, ggPlayer): # If the player is getting their level attribute set for the first time, we # can't get it yet if not hasattr(ggPlayer, "level"): return # Add the player to recentlyLeveled for a short time so that we will # know in player_death that they just leveled up recentlyLeveled.append(ggPlayer.userid) gamethread.delayed(0.2, recentlyLeveled.remove, ggPlayer.userid)
def _select_player(userid, choice, popupid): command = admins[userid]['command'] if command.startswith('weapon_') or command.startswith('item_'): if 'vest' not in command: if str(admingive_stripfirst) == '1': if command.replace('weapon_','') in pistols: secondary = playerlib.getPlayer(choice).get('secondary') if secondary: RemoveWeapon(choice, secondary) elif command.replace('weapon_','') in (list(shotguns) + list(smgs) + list(rifles) + list(snipers) + ['m249']): primary = playerlib.getPlayer(choice).get('primary') if primary: RemoveWeapon(choice, primary) gamethread.delayed(0.1, es.server.queuecmd, 'es_xgive %s %s'%(choice, command)) else: if 'helm' in command: es.setplayerprop(choice, 'CCSPlayer.m_bHasHelmet', 1) es.setplayerprop(choice, 'CCSPlayer.m_ArmorValue', 100) if str(admingive_anonymous) == '0': tokens = {} tokens['admin'] = es.getplayername(userid) tokens['user'] = es.getplayername(choice) for myplayer in playerlib.getPlayerList('#human'): tokens['item'] = '#greena #lightgreen' + str(xalanguage(command.replace('weapon_','').replace('item_',''), lang=myplayer.get("lang"))) es.tell(int(myplayer), '#multi', xalanguage('admin give', tokens, myplayer.get("lang"))) elif command.startswith('health_'): if str(admingive_anonymous) == '0': tokens = {} tokens['admin'] = es.getplayername(userid) tokens['user'] = es.getplayername(choice) health = command.replace('health_','') c = '' while len(health) > 3: c = ',' + health[-3:] health = health[0:-3] c = health + c tokens['item'] = '#green' + c + ' #lightgreenhealth' for myplayer in playerlib.getPlayerList('#human'): es.tell(int(myplayer), '#multi', xalanguage('admin give', tokens, myplayer.get("lang"))) es.setplayerprop(choice, 'CBasePlayer.m_iHealth', es.getplayerprop(choice, 'CBasePlayer.m_iHealth') + int(command.replace('health_',''))) elif command.startswith('cash_'): if str(admingive_anonymous) == '0': tokens = {} tokens['admin'] = es.getplayername(userid) tokens['user'] = es.getplayername(choice) cash = command.replace('cash_','') c = '' while len(cash) > 3: c = ',' + cash[-3:] cash = cash[0:-3] c = '$' + cash + c tokens['item'] = '#green' + c for myplayer in playerlib.getPlayerList('#human'): es.tell(int(myplayer), '#multi', xalanguage('admin give', tokens, myplayer.get("lang"))) es.setplayerprop(choice, 'CCSPlayer.m_iAccount', es.getplayerprop(choice, 'CCSPlayer.m_iAccount') + int(command.replace('cash_','')))
def weapon_fire(ev): userid = ev["userid"] steamid = es.getplayersteamid(userid) player = playerlib.getPlayer(userid) if ev['weapon'] == 'flashbang': if client[steamid]["auto_flash"] == "On": if player.getFB() < 10: player.setFB(30) if client[steamid]['auto_switch'] == "On": gamethread.delayed(0.10, auto_switch, userid)