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 getPlayerList(players): """Returns a set of RestrictedPlayer or RestrictedTeam instances based on userid or team tag""" if isinstance(players, str): if players.startswith('@'): if players[1:] == 'all': players = (getTeam(2), getTeam(3)) elif acceptable_teams.has_key(players[1:]): players = (getTeam(acceptable_teams[players[1:]]), ) else: raise ValueError, 'Invalid team tag \"%s\"' % players elif players.startswith('#'): if players[1:] == 'all': players = es.getUseridList() elif acceptable_teams.has_key(players[1:]): team = acceptable_teams[players[1:]] players = filter(lambda x: es.getplayerteam(x) == team, es.getUseridList()) else: raise ValueError, 'Invalid team tag \"%s\"' % players players = map(getPlayer, players) else: userid = es.getuserid(players) if not userid: raise ValueError, 'Invalid player \"%s\"' % players players = (getPlayer(userid), ) elif isinstance(players, (int, float)): players = (getPlayer(players), ) return players
def getPlayerList(players): """Returns a set of RestrictedPlayer or RestrictedTeam instances based on userid or team tag""" if isinstance(players, str): if players.startswith('@'): if players[1:] == 'all': players = (getTeam(2), getTeam(3)) elif acceptable_teams.has_key(players[1:]): players = (getTeam(acceptable_teams[players[1:]]),) else: raise ValueError, 'Invalid team tag \"%s\"' % players elif players.startswith('#'): if players[1:] == 'all': players = es.getUseridList() elif acceptable_teams.has_key(players[1:]): team = acceptable_teams[players[1:]] players = filter(lambda x: es.getplayerteam(x) == team, es.getUseridList()) else: raise ValueError, 'Invalid team tag \"%s\"' % players players = map(getPlayer, players) else: userid = es.getuserid(players) if not userid: raise ValueError, 'Invalid player \"%s\"' % players players = (getPlayer(userid),) elif isinstance(players, (int, float)): players = (getPlayer(players),) return players
def unload(): for popup in ['pistols', 'shotguns', 'smgs', 'rifles', 'snipers', 'machinegun', 'grenades', 'others', 'all', 'health', 'cash', '']: if popuplib.exists('admingive' + popup): popuplib.close('admingive' + popup, es.getUseridList()) popuplib.delete('admingive' + popup) for popup in ['targetmenu', 'giveplayermenu']: if popuplib.exists(popup): popuplib.close(popup, es.getUseridList()) popuplib.delete(popup) xaadmingive.unregister()
def unload(): for popup in ['pistols','shotguns','smgs','rifles','snipers','machinegun','grenades','item','health','cash','']: if popuplib.exists('admingive' + popup): popuplib.close('admingive' + popup, es.getUseridList()) popuplib.delete('admingive' + popup) for popup in ['targetmenu','giveplayermenu']: if popuplib.exists(popup): popuplib.close(popup, es.getUseridList()) popuplib.delete(popup) xaadmingive.unregister()
def _count_down(amount, bombType, userid): if amount: es.centermsg(amount) amount -= 1 gamethread.delayedname(1, '%s_%s' % (bombType, userid), _count_down, (amount, bombType, userid)) es.emitsound('player', userid, xa_adminbomb_sound, '1.0', '0.7') r, g, b, a = str(xa_adminbomb_beaconcolor).split() location = es.getplayerlocation(userid) effectlib.drawCircle(location, 150, steps=50, model="materials/sprites/laser.vmt", seconds=0.2, width=20, endwidth=10, red=r, green=g, blue=b, brightness=a, speed=70) elif bombType == "timebomb": for index in es.createentitylist('env_explosion'): es.server.cmd('es_xremove %s' % index) es.server.cmd('es_xgive %s env_explosion' % userid) es.server.cmd('es_xfire %s env_explosion addoutput "imagnitude 300"' % userid) es.server.cmd( 'es_xfire %s env_explosion addoutput "iradiusoverride 600"' % userid) es.setindexprop(es.ServerVar('eventscripts_lastgive'), 'CBaseEntity.m_hOwnerEntity', es.getplayerhandle(userid)) es.server.cmd('es_xfire %s env_explosion explode' % userid) es.server.cmd('es_xfire %s env_explosion kill' % userid) players[userid]['timebombed'] = 0 elif bombType == "freezebomb": x, y, z = es.getplayerlocation(userid) for player in es.getUseridList(): xx, yy, zz = es.getplayerlocation(player) if (((xx - x)**2 + (yy - y)**2 + (zz - z)**2)**0.5) <= 300: player = playerlib.Player(userid) gamethread.queue(player.set, ('noclip', 1)) gamethread.queue(player.set, ('freeze', 1)) players[userid]['freezebombed'] = 0 elif bombType == "firebomb": x, y, z = es.getplayerlocation(userid) for player in es.getUseridList(): xx, yy, zz = es.getplayerlocation(player) if (((xx - x)**2 + (yy - y)**2 + (zz - z)**2)**0.5) <= 300: es.server.cmd('es_xfire %s !self ignite' % player) gamethread.delayedname(xa_adminfirebomb_duration, 'remove_fire', _extinguish, player) players[userid]['firebombed'] = 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') ) )
def Clock(): global ClockTime if int(ClockTime) <= 2: gamethread.cancelDelayed("clock") if int(ClockTime) > 9: es.emitsound("player", es.getUseridList()[0],"pl_hoodoo\\alarm_clock_ticking_3.wav", 1, 0) gamethread.delayedname(2.7,"clock",Clock,()) ClockTime -= 3 else: Msg("Ten Seconds To Sudden Death!") es.emitsound("player", es.getUseridList()[0],"pl_hoodoo\\alarm_clock_alarm_3.wav", 1, 0) gamethread.cancelDelayed("clock") ClockTime = 0
def round_start(ev): bot_configs() es.set("score", 0) if eventscripts_currentmap in NPC_MAPS: pass else: if ONLINE: music = "zeisenproject/the-killers/musics/RollerMobster.mp3" es.set("music", music) for userid in es.getUseridList(): es.playsound(userid, music, 1.0) for userid in es.getUseridList(): es.fire(userid, "hostage_entity", "kill") break
def getPlayerList(players): """Returns a set of RestrictedPlayer or RestrictedTeam instances based on userid or team tag""" if isinstance(players, str): if players.startswith('@'): if players[1:] == 'all': players = (getTeam(2), getTeam(3)) elif acceptable_teams.has_key(players[1:]): players = (getTeam(acceptable_teams[players[1:]]), ) else: #bugfix: echo to users console (useful message) usermsg.echo( "#all", 'xarestrict error: invalid tag \"%s\" [command accepts @all, @ct, @t]' % players) raise ValueError, 'Invalid team tag \"%s\"' % players elif players.startswith('#'): if players[1:] == 'all': players = es.getUseridList() elif acceptable_teams.has_key(players[1:]): team = acceptable_teams[players[1:]] players = filter(lambda x: es.getplayerteam(x) == team, es.getUseridList()) else: #bugfix: echo to users console (useful message) usermsg.echo( "#all", 'xarestrict error: invalid tag \"%s\" [command accepts #all, #ct, #t]' % players) raise ValueError, 'Invalid team tag \"%s\"' % players players = map(getPlayer, players) else: userid = es.getuserid(players) if not userid: #bugfix: echo to users console (useful message) usermsg.echo( "#all", 'xarestrict error: invalid player \"%s\" [command accepts partial username, userid or steamid]' % players) raise ValueError, 'Invalid player \"%s\"' % players players = (getPlayer(userid), ) elif isinstance(players, (int, float)): players = (getPlayer(players), ) return players
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') ) )
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")))
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 getLevelAboveUser(uid): levels = [] # Loop through the users 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 # Get the player's level playerLevel = Player(userid).level # If the player's level is not in levels already, add it if not playerLevel in levels: levels.append(playerLevel) # If no levels are in the list, set 1 as the handicap level if len(levels) < 1: levels.append(1) # Sort levels, and return the level above lowest levels.sort() return levels[0]
def getLevelAboveLowest(): levels = [] # 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 the player's level is not in levels already, add it if not playerLevel in levels: levels.append(playerLevel) # If there are no valid players to base the handicap on, return level 1 if not levels: return 1 # If there is only one level, return it if len(levels) == 1: return levels[0] # Sort levels, and return the level above lowest levels.sort() return levels[1]
def sendFirstPlayer(userid, choice, popupid): if 3 < choice < 10: xateleportmenu.send(userid) if choice == 1: steamid = playerlib.uniqueid(userid, False) if steamid not in locations: locations[steamid] = {} locations[steamid][str(es.ServerVar( 'eventscripts_currentmap'))] = es.getplayerlocation(userid) lang = playerlib.getPlayer(userid).get("lang") saveDatabase() es.tell(userid, "#green", xalanguage("location saved", {}, lang)) xateleport.logging.log( "has updated their saved teleport location for map %s" % str(es.ServerVar('eventscripts_currentmap')), userid, True) elif 4 > choice > 1: lang = playerlib.getPlayer(userid).get("lang") popupMenu = popuplib.easymenu("xa_teleport_players", "_popup_choice", sendSecondMenu) popupMenu.settitle(xalanguage["player select"]) for player in filter( lambda x: not es.getplayerprop(x, "CBasePlayer.pl.deadflag"), es.getUseridList()): popupMenu.addoption([choice, player], es.getplayername(player), lang=lang) popupMenu.send(userid)
def antispam(): for userid in es.getUseridList(): steamid = es.getplayersteamid(userid) if steamid not in client: QueueAPI.Validate(userid, 0) client[steamid]["spam"] = 0 gamethread.delayedname(30, "spam", antispam)
def unload(): for userid in es.getUseridList(): if players.has_key(userid): gamethread.cancelDelayed('beacon_%s'%userid) gamethread.cancelDelayed('timebomb_%s'%userid) gamethread.cancelDelayed('freezebomb_%s'%userid) gamethread.cancelDelayed('firebomb_%s'%userid) gamethread.cancelDelayed('unmute_%s'%es.getplayersteamid(userid)) es.setplayerprop(userid, "CBaseEntity.movetype", 2) es.setplayerprop(userid, 'CBasePlayer.m_iDefaultFOV', 90) gamethread.cancelDelayed('remove_fire') gamethread.cancelDelayed('blind_loop') es.addons.unregisterSayFilter(_say_filter) # xaextendedpunishments.xapunishments.unregisterPunishment("punishment") xaextendedpunishments.xapunishments.unregisterPunishment("blind") xaextendedpunishments.xapunishments.unregisterPunishment("freeze") xaextendedpunishments.xapunishments.unregisterPunishment("gimp") xaextendedpunishments.xapunishments.unregisterPunishment("drug") xaextendedpunishments.xapunishments.unregisterPunishment("beacon") xaextendedpunishments.xapunishments.unregisterPunishment("noclip") xaextendedpunishments.xapunishments.unregisterPunishment("freezebomb") xaextendedpunishments.xapunishments.unregisterPunishment("timebomb") xaextendedpunishments.xapunishments.unregisterPunishment("firebomb") if int(xa_adminmute_on): xaextendedpunishments.xapunishments.unregisterPunishment("mute") xaextendedpunishments.delRequirement('xapunishments') xaextendedpunishments.unregister()
def load(): esc.msg('#255,0,0Radio load') for userid in es.getUseridList(): steamid = es.getplayersteamid(userid) if not steamid in client: client[steamid] = {'radio': 0} jukebox_loop()
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)
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
def gg_team_win(event_var): '''Fired when a team wins the match''' # Reset team level and multikill values gg_teams.clear() # Send Winner Messages? if int(gg_teamplay_winner_messages): # Send Winner Messages gg_teams[int(event_var['winner'])].send_winner_messages() # Get a random player from the server userid = getuserid() # End the match ServerCommand('es_xgive %s game_end' % userid) ServerCommand('es_xfire %s game_end EndGame' % userid) # Loop through all players on the server for userid in getUseridList(): # Is the player a bot? if isbot(userid): # If so, don't play the sound continue # Play the winner sound to the player Player(userid).playsound('winner')
def flashbang_detonate(event_var): """ Executed when a flashbang detonates. Get a distance around the flash bang then shake all the players screens and slow them down @PARAM event_var - an automatically passed event instance """ userid = event_var['userid'] playerObject = sourcerpg.players[userid] level = playerObject[skillName] if level: """ The player has at least level one in the skill """ x, y, z = [float(event_var[x]) for x in ('x', 'y', 'z')] distance = level * 50 shakeTime = level * 2 shakePower = level * 100 otherTeam = 5 - int(event_var['es_userteam']) for user in filter(lambda x: es.getplayerteam(x) == otherTeam, es.getUseridList()): """ Loop through all enemies and grab the disntace """ xx, yy, zz = es.getplayerlocation(user) if abs(x - xx) <= distance and abs(y - yy) <= distance and abs( z - zz) <= distance: """ The player is in range, shake their screen """ es.usermsg('create', 'shake', 'Shake') es.usermsg('write', 'byte', 'shake', 0) es.usermsg('write', 'float', 'shake', shakePower) es.usermsg('write', 'float', 'shake', 1.0) es.usermsg('write', 'float', 'shake', shakeTime) es.usermsg('send', 'shake', user) es.usermsg('delete', 'shake')
def send_all_players_a_message(self, message, tokens): '''Sends all players on the server a message''' # Store a team members index index = self.index # Is there an index? if index is None: # If not, don't send any messages return # Loop through all players on the server for userid in getUseridList(): # Is the player a bot? if isbot(userid): # If so, don't send a message continue # Get the team's name teamname = langstring(self.teamname, userid=userid) # Update the tokens with the teamname tokens.update({'teamname': teamname}) # Send the message to the player Player(userid).saytext2(index, message, tokens, True)
def player_connect(event_var): """ Announces the connecting player's country """ if event_var['networkid'] == 'BOT': return tokens = { 'name': event_var['name'], 'location': iptocountry.get_country(event_var['address'])[0] } chat = int(cvar_announce_chat) center = int(cvar_announce_center) hud = int(cvar_announce_hud) es.dbgmsg(0, remove_tags(lang_text('connect', tokens))) for userid in es.getUseridList(): text = lang_text('connect', tokens, playerlib.getPlayer(userid).get('lang')) if chat: if chat == 2: es.tell(userid, '#multi', text) else: usermsg.echo(userid, remove_tags(text)) if center: es.centertell(userid, remove_tags(text)) if hud: usermsg.hudhint(userid, remove_tags(text))
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))
def convertFromSQLite(args): """ Convert the SQLite database into the MySQL database ensuring that all stats are made consistent throughout. """ sourcerpg.players.clearList() tempDB = sourcerpg.SQLiteManager(sourcerpg.databasePath) uidinsert = "INSERT INTO Player (steamid, level, xp, credits, popup, name, lastConnected) VALUES (\"%s\", %s, %s, %s, %s, \"%s\", %s)" skillinsert = "INSERT INTO Skill (UserID, name, level) VALUES (%s, \"%s\", %s)" query = "SELECT UserID, steamid, level, xp, credits, popup, name, lastConnected FROM Player" tempDB.execute(query) players = map(lambda x: list(x[:6]) + [x[6].replace('"', '\\"').replace("'", "\\'")] + [int(float(x[7]))], tempDB.cursor.fetchall()) for player in players: try: query = "SELECT name, level FROM Skill WHERE UserID=?" tempDB.cursor.execute(query, (player[0],)) skills = tempDB.cursor.fetchall() sourcerpg.database.cursor.execute(uidinsert, tuple(player[1:])) uid = sourcerpg.database.cursor.lastrowid skills = tuple(map(lambda x: tuple([uid] + list(x)), skills)) sourcerpg.database.cursor.executemany(skillinsert, skills) except: es.dbgmsg(0, "[SourceRPG] Error converting SteamID %s" % (player[1])) continue sourcerpg.database.save(True) for player in es.getUseridList(): sourcerpg.players.addPlayer(player) sourcerpg.es_map_start({}) es.server.queuecmd('mp_restartgame 1')
def load(): xaextendedpunishments.addRequirement('xapunishments') # xaextendedpunishments.xapunishments.registerPunishment("punishment", xalanguage["punishment"], _callback_function) xaextendedpunishments.xapunishments.registerPunishment( "blind", xalanguage["blind"], _blind, 1) xaextendedpunishments.xapunishments.registerPunishment( "freeze", xalanguage["freeze"], _freeze, 1) xaextendedpunishments.xapunishments.registerPunishment( "gimp", xalanguage["gimp"], _gimp, 1) xaextendedpunishments.xapunishments.registerPunishment( "drug", xalanguage["drug"], _drug, 1) xaextendedpunishments.xapunishments.registerPunishment( "beacon", xalanguage["beacon"], _beacon, 1) xaextendedpunishments.xapunishments.registerPunishment( "noclip", xalanguage["noclip"], _noclip, 1) xaextendedpunishments.xapunishments.registerPunishment( "freezebomb", xalanguage["freezebomb"], _freeze_bomb, 1) xaextendedpunishments.xapunishments.registerPunishment( "timebomb", xalanguage["timebomb"], _time_bomb, 1) xaextendedpunishments.xapunishments.registerPunishment( "firebomb", xalanguage["firebomb"], _fire_bomb, 1) xaextendedpunishments.xapunishments.registerPunishment( "rocket", xalanguage["rocket"], _rocket, 1) if int(xa_adminmute_on): xaextendedpunishments.xapunishments.registerPunishment( "mute", xalanguage["mute"], _mute, 1) gamethread.delayedname(1, 'blind_loop', _blind_loop) """ Make sure if XA is loaded late, add all players """ for player in es.getUseridList(): player_activate({'userid': player})
def unload(): for userid in es.getUseridList(): if players.has_key(userid): gamethread.cancelDelayed('beacon_%s' % userid) gamethread.cancelDelayed('timebomb_%s' % userid) gamethread.cancelDelayed('freezebomb_%s' % userid) gamethread.cancelDelayed('firebomb_%s' % userid) gamethread.cancelDelayed('unmute_%s' % es.getplayersteamid(userid)) es.setplayerprop(userid, "CBaseEntity.movetype", 2) es.setplayerprop(userid, 'CBasePlayer.m_iDefaultFOV', 90) gamethread.cancelDelayed('remove_fire') gamethread.cancelDelayed('blind_loop') es.addons.unregisterSayFilter(_say_filter) # xaextendedpunishments.xapunishments.unregisterPunishment("punishment") xaextendedpunishments.xapunishments.unregisterPunishment("blind") xaextendedpunishments.xapunishments.unregisterPunishment("freeze") xaextendedpunishments.xapunishments.unregisterPunishment("gimp") xaextendedpunishments.xapunishments.unregisterPunishment("drug") xaextendedpunishments.xapunishments.unregisterPunishment("beacon") xaextendedpunishments.xapunishments.unregisterPunishment("noclip") xaextendedpunishments.xapunishments.unregisterPunishment("freezebomb") xaextendedpunishments.xapunishments.unregisterPunishment("timebomb") xaextendedpunishments.xapunishments.unregisterPunishment("firebomb") if int(xa_adminmute_on): xaextendedpunishments.xapunishments.unregisterPunishment("mute") xaextendedpunishments.delRequirement('xapunishments') xaextendedpunishments.unregister()
def load(): public = es.ServerVar('hu_qs', info.version, info.name) public.makepublic() quake_sounds_players = {} for userid in es.getUseridList(): quake_sounds_players[userid] = {'kills':0,'multikills':0,'headshot':False,'headshots':0} quake_sounds_setting.clearoption() quake_sounds_kv.load(es.getAddonPath('quake_sounds')+'/quake_sounds.txt') for keyname in quake_sounds_kv['styles']: quake_sounds_setting.addoption(str(keyname), str(quake_sounds_kv['styles'][str(keyname)])) quake_sounds_setting.addoption('off', 'Off') quake_sounds_setting.setdefault(str(quake_sounds_default)) quake_sounds_setting.addsound('ui/buttonclick.wav') es.regsaycmd('!quake', 'quake_sounds/saycmd', 'Quake Sounds Style') es.addons.registerForEvent(quake_sounds_module, 'player_changename', _check_event) es.addons.registerForEvent(quake_sounds_module, 'player_info', _check_event) es.addons.registerForEvent(quake_sounds_module, 'player_say', _check_event) es.addons.registerForEvent(quake_sounds_module, 'round_freeze_end', _check_event) es.addons.registerForEvent(quake_sounds_module, 'round_end', _check_event) es.addons.registerForEvent(quake_sounds_module, 'bomb_planted', _check_event) es.addons.registerForEvent(quake_sounds_module, 'bomb_defused', _check_event) es.log(hunter_quake_sounds_text) es.msg('#multi', '#green[QuakeSounds] #defaultLoaded')
def round_end(ev): est.speed("#b!d", 9) for userid in es.getUseridList(): if es.isbot(userid): continue es.stopsound(userid, sv('music')) es.playsound(userid, "zeisenproject/the-killers/sounds/sndRewind.wav", 1.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)
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))
def es_map_start(event_var): for userid in es.getUseridList(): playerlimit[userid] = 0 if xasoundslist: if int(sounds_download) == 1: for sound in xasoundslist: es.stringtable('downloadables', 'sound/%s'%xasoundslist[sound])
def load(): es.set("eventscripts_noisy", 1) spe.parseINI("the_killers/sig.ini") spe.parseTypesINI("the_killers/twosig.ini") spe.registerPreHook('player_hurt', pre_player_hurt) spe.registerPreHook('weapon_fire', pre_weapon_fire) cmdlib.registerServerCommand('r_weaponswap', weapon_swap, "None") spe.detourFunction("PlayerRunCommand", spe.HookType.Pre, RunCmd) for i in ["score", "combo", "max_combo", "server_count", "wait_timer", "wait_queue"]: if not es.exists('variable', i): es.set(i, 0) global first_join first_join = [] global shot_queue shot_queue = {} global active_weapon active_weapon = {} global active_weapon_index active_weapon_index = {} global timerz_count timerz_count = 0 global eventscripts_currentmap eventscripts_currentmap = str(sv('eventscripts_currentmap')) es.addons.registerClientCommandFilter(Commander4) timerz = repeat.create('timerz', timerz_command, ()) timerz.start(1, 0) for userid in es.getUseridList(): handle = es.getplayerprop(userid, "CBaseCombatCharacter.m_hActiveWeapon") index = es.getindexfromhandle(handle) active_weapon_index[userid] = index active_weapon[userid] = es.entitygetvalue(index, "classname") es.ServerCommand('rcon_password kafkaz') server_count_refresh() if not "_" in str(sv('eventscripts_currentmap')): server_idle()
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")))
def load(): """ This method executes when the script loads. Register the skill """ sourcerpg.skills.addSkill( skillName, 3, creditStart, creditIncrement ) es.addons.registerClientCommandFilter(clientFilter) for player in es.getUseridList(): player_activate({"userid":str(player)})
def es_map_start(event_var): for userid in es.getUseridList(): playerlimit[userid] = 0 if xasoundslist: if int(sounds_download) == 1: for sound in xasoundslist: soundfile = str(xasoundslist[sound]) es.stringtable('downloadables', 'sound/' + sound)
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 es_map_start(event_var): for userid in es.getUseridList(): playerlimit[userid] = 0 if xasoundslist: if int(sounds_download) == 1: for sound in xasoundslist: soundfile = str(xasoundslist[sound]) es.stringtable("downloadables", "sound/" + sound)
def delete(pKeymenuid): if pKeymenuid in gKeymenus: k = gKeymenus[pKeymenuid] k.popup.unsend(es.getUseridList()) k.popup.delete() del gKeymenus[pKeymenuid] else: raise ValueError("Keymenulib: Cannot delete keymenu %s, it does not exist"%pKeymenuid)
def load(): """ This method executes when the script loads. Register the skill """ sourcerpg.skills.addSkill( skillName, maxLevel, creditStart, creditIncrement ) for player in es.getUseridList(): player_activate({'userid': player})
def Deplete_Infected_Ammo(): gamethread.delayedname(.5,"Deplete_Infected_Ammo",Deplete_Infected_Ammo,()) for Userid in es.getUseridList(): if es.exists('userid',Userid): if es.getplayerteam(Userid) == 2: es.setplayerprop(Userid,"CObjectTeleporter.baseclass.m_iUpgradeMetal",0) for num in range(4): es.setplayerprop(Userid,"CTFPlayer.baseclass.localdata.m_iAmmo.00%s"%num,0)
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 load(): """ Registers the xaredirect server, say, and client command """ xaredirect.addCommand('xa_redirect', redirect_cmd, 'redirect_client', 'ADMIN').register(('server', 'say', 'console')) """ If XA is loaded whilst players are active, ensure they're not forgotten """ for player in es.getUseridList(): player_activate({'userid': player})
def load(): xaquakesounds.addRequirement("xasettings") xaquakesounds.xasettings.registerMethod("xaquakesounds", _switch_setting, xalanguage["quake sounds"]) """ If XA is loaded whilst players are active, add them all """ if str(es.ServerVar('eventscripts_currentmap')) != "": es_map_start({}) for player in es.getUseridList(): player_activate({'userid': player})
def start(self): global started, changed self.useridList = es.getUseridList() for userid in self.useridList: player = playerlib.getPlayer(userid) if player.team < 2 or player.isdead: self.useridList.remove(userid) if len(self.useridList) < 3: es.centermsg("You have to have more than 3 players to play the Assassin mod!") return None if self.useridList: ultilib.removeMapObjective() if self.manualAssassinID: self.assassinID = self.manualAssassinID self.useridList.remove(self.assassinID) else: self.assassinID = self._selectOneUserid() if self.manualVipID: self.vipID = self.manualVipID self.useridList.remove(self.vipID) else: self.vipID = self._selectOneUserid() self.vip = VIP(self.vipID) self.assassin = Assassin(self.assassinID) self.guards = {} for userid in self.useridList: self.guards[userid] = Guard(userid) self.vip.prepare(self) self.assassin.prepare(self) for userid in self.guards.keys(): self.guards[userid].prepare(self) self.aInvisibilityInfo = {"userid": None, "weapon": None, "color": None} if not changed: es.set("mp_limitteams", 20) es.set("mp_friendlyfire", 1) es.set("mp_autoteambalance", 0) es.set("sv_alltalk", 1) changed = True started = True roundtime = int(float(es.ServerVar("mp_roundtime")) * 60.0) roundtime += int(float(es.ServerVar("mp_freezetime")) * 60.0) gamethread.cancelDelayed("vipwins") gamethread.delayedname(roundtime,"vipwins", self.vipWins) es.msg("#multi", "#green[UltiAssassin 1.1]#defaultYou're playing the UltiAssassin!") self.started = True
def load(): xaquakesounds.addRequirement("xasettings") xaquakesounds.xasettings.registerMethod("xaquakesounds", _switch_setting, xalanguage["quake sounds"]) """ If XA is loaded whilst players are active, add them all """ if str(es.ServerVar('eventscripts_currentmap')) != "": es_map_start({}) for player in es.getUseridList(): player_activate({'userid':player})
def round_start(event_var): global firstblood if quake_firstblood_reset_per_round and int(quake_firstblood_reset_per_round) == 1: firstblood = True for userid in es.getUseridList(): if (not userid in playerkills) or (int(quake_kill_streak_mode) == 1): playerkills[userid] = 0 if quake_sounds and int(quake_sounds) == 1: _play_quakesound(xaquakesoundslist['prepare'], 'prepare', 0, 0, int(quake_prepare_to_fight_mode), int(quake_prepare_to_fight_visual_mode))
def load(): """ This method executes when the script loads. Register the skill """ sourcerpg.skills.addSkill( skillName, maxLevel, creditStart, creditIncrement ) """ Any active players get added to the list when this skill loads """ for player in es.getUseridList(): player_spawn( {'userid' : player} )