def player_hurt(ev): armor = int(ev['es_userarmor']) if armor < 150 and armor + int(ev['dmg_armor']) >= 150: player = getPlayer(ev['userid']) gamethread.cancelDelayed(delayname % player) gamethread.delayedname(FUEL_REGEN_DELAY, delayname % player, fuel_regen, player)
def server_cvar(event_var): value = event_var['cvarvalue'] name = event_var['cvarname'] if name == "mp_timelimit" and startTime is not None and int( time_before_end_of_map_vote): gamethread.cancelDelayed('votemap_timer') timeLimit = int(value) * 60 if timeLimit: delay = timeLimit - int(time_before_end_of_map_vote) - ( time.time() - startTime) if delay: gamethread.delayedname(delay, 'votemap_timer', EndOfMapVote, "mp_timelimit changing") else: EndOfMapVote('mp_timelimit changing') if name == "mp_maxrounds" and int(rounds_before_mp_maxrounds): maxRounds = int(value) if maxRounds: maxrounds = maxRounds - int(rounds_before_mp_maxrounds) if round_count['round_counting'] >= maxrounds: EndOfMapVote('mp_maxrounds') if name == "mp_winlimit" and int(rounds_before_mp_winlimit): winlimit = int(value) if winlimit: winlimit = winlimit - int(rounds_before_mp_winlimit) maxwins = max(round_count['t_wins'], round_count['c_wins']) if maxwins >= winlimit: EndOfMapVote('mp_winlimit')
def player_hurt(ev): userid = int(ev['userid']) if userid in teleporting: gamethread.cancelDelayed('rpg_teleport_%s' % (userid)) es.setplayerprop(userid, 'CBaseEntity.movetype', 2) teleporting.remove(userid) tell(userid, 'Teleport aborted')
def player_hurt(ev): attacker = ev['attacker'] player = playerlist[ev['attacker']] # If damage is not NULL if ev['damage'].isdigit(): damage = int(ev['damage']) elif ev['dmg_health'].isdigit(): damage = int(ev['dmg_health']) player = playerlist[ev['userid']] userid = player.userid # If Attacker and Victim are not frozen: if ev['weapon'] == 'knife': if attacker and int(attacker) in frozen: quit() if damage >= 35: player = playerlist[ev['attacker']] level = player.GetSkillLevel(skillname) if level: if userid not in frozen: frozen.append(userid) # Freeze the player gamethread.cancelDelayed('rpg_%s_%s' % (skillname, userid)) es.emitsound('player', userid, 'physics/glass/glass_impact_bullet%s.wav' % random.randint(1,4), '1.0', '0.5') player = playerlib.getPlayer(userid) player.freeze(True) player.setColor(0, 0, 255) # Delay delayname = 'rpg_%s_%s' %(skillname, userid) gamethread.cancelDelayed(delayname) gamethread.delayedname(0.42 * level, delayname, rpg_unfreeze, (player.userid)) if ev['weapon'] != 'knife': if userid in frozen: player = playerlib.getPlayer(userid) player.health += int(damage / 100 * 98)
def DelayTimer(): gamethread.cancelDelayed('votemap_timer') timeLimit = int(es.ServerVar('mp_timelimit')) * 60 if timeLimit: delay = timeLimit - int(time_before_end_of_map_vote) - 10 gamethread.delayedname(delay, 'votemap_timer', EndOfMapVote, "timelimit")
def check_spawn(self): '''Used to check if a player should be spawned when joining a round late''' # Should players be spawned during the mid round? if not int(gg_elimination_spawn): # If not, return return # Is the round active? if not ActiveInfo.round: # If not, return return # Is the player on a team? if getplayerteam(self.userid) < 2: # If not, return return if self.reconnect: # If they are reconnecting, return return # Cancel the current delay (if it exists) cancelDelayed('gg_elimination_respawn_%s' % self.userid) # Add the player to the respawn list in 3 seconds delayedname(3, 'gg_elimination_respawn_%s' % self.userid, respawn_players.append, [self.userid])
def player_disconnect(event_var): userid = int(event_var['userid']) # Remove from protected list if userid in protectedList: gamethread.cancelDelayed('ggSpawnProtect%s' % userid) protectedList.remove(userid)
def clearList(self): """ Loop through all the players, reset their gravity to 1, delete the gravity list then unregister the tick listener. """ self.gravityList.clear() gamethread.cancelDelayed('gravity_check')
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 unload(): es.unregsaycmd(scfg.say_command_prefix + scfg.command_help) for userid in pending: gamethread.cancelDelayed('xs_delayed_%s' % userid) for addon in addonsunloaders: addon() unloadCommands()
def player_hurt(event_var): """ When a player is damaged, check for team attacks, then if the weapon is a secondary weapon then freeze the player @PARAM event_var - an automatically passed event instance """ userid = event_var['userid'] attacker = event_var['attacker'] if int(attacker): """ The attacker did not hurt themselves """ player = sourcerpg.players[attacker] level = player[skillName] if level: """ The player has at least level 1 in this skill """ if event_var['es_userteam'] <> event_var['es_attackerteam']: """ It was not a team kill """ if event_var['weapon'] in map(lambda x: x.split('_')[-1], weaponlib.getWeaponNameList('#secondary')): victim = sourcerpg.players[userid] speed = victim['maxSpeed'] if not victim['slowed']: """ If they're frozen, there's no point (i,e Ice Stab) """ playerlibInstance = playerlib.getPlayer(userid) if not playerlibInstance.getFreeze(): """ Ensure that they're only slowed once """ victim['slowed'] = True speed /= 2.0 victim['maxSpeed'] = speed playerlibInstance.speed = speed playerlibInstance.setColor(0, 0, 255) gamethread.delayedname(float(freezeTime) * level, 'sourcerpg_slow_user%s' % userid, speedUp, (userid, speed * 2.0)) else: gamethread.cancelDelayed("sourcerpg_slow_user%s" % userid) gamethread.delayedname(float(freezeTime) * level, 'sourcerpg_slow_user%s' % userid, speedUp, (userid, speed * 2.0))
def round_end(ev): global teleportingAllowed teleportingAllowed = False for i in teleporting: gamethread.cancelDelayed('rpg_teleport_%s' % (i)) es.setplayerprop(i, 'CBaseEntity.movetype', 2) teleporting.clear()
def unload(): gamethread.cancelDelayed('advertDelay') cmdlib.unregisterServerCommand('dump_colors') es.msg( '#multi', '\x07FF8D00[\x0703B0FFSimple Adverts\x07FF8D00] \x0703B0FF%s \x07FF8D00successfully unloaded!' % info.version)
def unload(): gamethread.cancelDelayed("advertDelay") cmdlib.unregisterServerCommand("dump_colors") es.msg( "#multi", "\x07FF8D00[\x0703B0FFSimple Adverts\x07FF8D00] \x0703B0FF%s \x07FF8D00successfully unloaded!" % info.version, )
def Check_Runboost(userid): location = es.getplayerlocation(userid) steamid = es.getplayersteamid(userid) velocity = int( round( vector( (float( es.getplayerprop( userid, 'CBasePlayer.localdata.m_vecVelocity[0]')), float( es.getplayerprop( userid, 'CBasePlayer.localdata.m_vecVelocity[1]')), float( es.getplayerprop( userid, 'CBasePlayer.localdata.m_vecVelocity[2]')))).length(), 2)) gamethread.cancelDelayed("Check_Ground_%s" % userid) if playerOnTop(userid)[0] == "True": client[steamid]['loc'] = location client[steamid]['time'] = 0 client[steamid]['avs'] = [] client[steamid]['pre'] = velocity else: gamethread.cancelDelayed("Check_Ground_%s" % userid) Check_When_Grounded(userid, False, True) return gamethread.delayedname(0.001, 'Check_Runboost_%s' % userid, Check_Runboost, args=(userid))
def pause(self): ''' Pauses the beacon. ''' gamethread.cancelDelayed(self.__name) self.__stopped = True
def player_say(ev): userid = ev['userid'] text = ev['text'] plyinst = playerlib.getPlayer(userid) if text == '!block' or text == '!unghost': if int(es.ServerVar('noblock_allow_block')) >= 1: if not plyinst.isdead and plyinst.teamid != 1 and plyinst.teamid != 0: try: if not players[userid]['queued']: plyinst.noblock(0) gamethread.delayedname(float(es.ServerVar('noblock_block_time')), userid, noblock, userid) players[userid]['queued'] = True es.tell(userid, '#multi', '#green[NoBlock]#default You are now solid for ' + float(es.ServerVar('noblock_block_time')) + ' seconds') else: es.tell(userid, '#multi', '#green[NoBlock]#default You are already blocking') except KeyError: es.msg('#green', 'Error in keys') for k, v in players.items(): es.msg('#green', str(k) + '=' + str(v)) else: es.tell(userid, '#multi', '#green[NoBlock]#default You cannot block when you are dead or not on a team') else: es.tell(userid, '#multi', '#green[NoBlock]#default Blocking is not allowed on this server') if text == '!noblock' or text == '!unblock' or text == '!ghost': if int(es.ServerVar('noblock_allow_block')) >= 1: if not plyinst.isdead and plyinst.teamid != 1 and plyinst.teamid != 0: if players[userid]['queued']: gamethread.cancelDelayed(userid) plyinst.noblock(1) es.tell(userid, '#multi', '#green[NoBlock]#default You are no longer solid') else: es.tell(userid, '#multi', '#green[NoBlock]#default You are not blocking') else: es.tell(userid, '#multi', '#green[NoBlock]#default You cannot unblock when dead or not on a team') else: es.tell(userid, '#multi', '#green[NoBlock]#default Cannot unblock because blocking is not allowed')
def clear(self): '''Clears the list and stops any active delay''' # Cancel the delay (if one exists) cancelDelayed('gg_elimination_respawn') # Clear the list self[:] = list()
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 es_map_start(event_var): """Cancels outstanding delays and clears list_delays""" global list_delays for int_userid in list_delays: gamethread.cancelDelayed('xaredirect_%s' % int_userid) list_delays[:] = []
def unload(): es.addons.unregisterSayFilter(TeamChat) es.addons.unregisterClientCommandFilter(CommandFilter) gamethread.cancelDelayed("Grace") gamethread.cancelDelayed("Deplete_Infected_Ammo") gamethread.cancelDelayed("Request_RoundType_Update") gamethread.cancelDelayed("LastMan") gamethread.cancelDelayed("clock")
def player_spawn(ev): global gusers userid = ev['userid'] gusers[userid] = {} if not superhero.hasHero(userid,'Invisible Man'): return gamethread.cancelDelayed(delayname % ev['userid']) check_moving(userid)
def server_cvar(event_var): if event_var['cvarname'] == "mp_timelimit" and startTime is not None and int(time_before_end_of_map_vote): gamethread.cancelDelayed('votemap_timer') delay = es.ServerVar('mp_timelimit') * 60 - int(time_before_end_of_map_vote) - (time.time() - startTime) if delay: gamethread.delayedname(delay, 'votemap_timer', EndOfMapVote) else: EndOfMapVote()
def player_death(event_var): """ Executed when a player dies - ensure that they are unfrozen so we don't create an error @PARAM event_var - an automatically passed event instance """ gamethread.cancelDelayed('sourcerpg_slow_user%s' % event_var['userid'])
def player_spawn(ev): global gusers userid = ev['userid'] gusers[userid] = {} if not superhero.hasHero(userid, 'Invisible Man'): return gamethread.cancelDelayed(delayname % ev['userid']) check_moving(userid)
def player_disconnect(event_var): """Cancels the delay if the client was redirected""" global list_delays int_userid = int(event_var['userid']) if int_userid in list_delays: gamethread.cancelDelayed('xaredirect_%s' % int_userid) list_delays.remove(int_userid)
def load(): es.set('eventscripts_noisy', 1) global client gamethread.cancelDelayed("antispam") antispam() load_client_pref() chat.hook("window.chat", None) """ Trikz menu """ chat.registerHiddenCommand("!t", trikz_menu, True, True) chat.registerHiddenCommand("/t", trikz_menu, True, True) chat.registerHiddenCommand("t", trikz_menu, True, True) chat.registerHiddenCommand("!trikz", trikz_menu, True, True) """ TP menu """ # TODO: startswith chat.registerPublicCommand("!tp ", tp_menu, True, True, startswith=True) chat.registerPublicCommand("!tp", tp_menu, True, True, startswith=False) chat.registerPublicCommand("!tpto", tp_menu, True, True, startswith=True) chat.registerHiddenCommand("/tp ", tp_menu, True, True, startswith=True) chat.registerHiddenCommand("/tp", tp_menu, True, True, startswith=False) chat.registerHiddenCommand("/tptp", tp_menu, True, True, startswith=True) """ TP accept """ chat.registerPublicCommand("!y", tp_accept, False, True, startswith=True) chat.registerHiddenCommand("/y", tp_accept, False, True, startswith=True) """ Commands menu""" chat.registerPublicCommand("!commands", commands, True, True) chat.registerHiddenCommand("/commands", commands, True, True) """ Get weapon_glock command""" chat.registerPublicCommand("!glock", get_glock, False, True) chat.registerHiddenCommand("/glock", get_glock, False, True) """ Get weapon_usp command""" chat.registerPublicCommand("!usp", get_usp, False, True) chat.registerHiddenCommand("/usp", get_usp, False, True) """ Toggle block command """ chat.registerPublicCommand("!b", toggle, True, True) chat.registerPublicCommand("!block", toggle, True, True) chat.registerHiddenCommand("/b", toggle, True, True) chat.registerHiddenCommand("/block", toggle, True, True) """ Set player spectate command """ # TODO: Choose target (startswith method) chat.registerPublicCommand("!spec", change_spec, True, True) chat.registerPublicCommand("!spectate", change_spec, True, True) chat.registerHiddenCommand("/spec", change_spec, True, True) chat.registerHiddenCommand("/spectate", change_spec, True, True) # TODO: Choose target (startswith method) chat.registerPublicCommand("!cp", cp_menu, True, True) chat.registerPublicCommand("!checkpoint", cp_menu, True, True) chat.registerHiddenCommand("/cp", cp_menu, True, True) chat.registerHiddenCommand("/checkpoint", cp_menu, True, True)
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 player_disconnect(event_var): """ An event which occurs when a player disconnects from the game. Cancel the delay. @PARAM event_var - an automatically passed event instance """ userid = event_var['userid'] gamethread.cancelDelayed('sourcerpg_adrenaline_user%s' % userid)
def player_spawn(ev): global gusers userid = int(ev['userid']) if not superhero.hasHero(userid, 'Goku'): return gamethread.cancelDelayed(delayname % ev['userid']) player = playerlib.getPlayer(userid) player.armor = 100 KI_regen(userid)
def player_spawn(ev): global gusers userid = int(ev['userid']) if not superhero.hasHero(userid,'Goku'): return gamethread.cancelDelayed(delayname % ev['userid']) player = playerlib.getPlayer(userid) player.armor = 100 KI_regen(userid)
def unload(): del started[:] players.clear() fileStream = open(dictPath, 'w') cPickle.dump(mapDicts, fileStream) fileStream.close() gamethread.cancelDelayed('surftime_checkloop') gamethread.cancelDelayed('surftimer_hudloop') if playerList: playerList.delete()
def player_death(event_var): """ An event which occurs when a player dies. Ensure that their adrenaline delay is canceled @PARAM event_var - an automatically passed event instance """ userid = event_var['userid'] gamethread.cancelDelayed('sourcerpg_adrenaline_user%s' % userid) sourcerpg.players[userid]['adrenalined'] = False
def poweroff(): global hero userid = es.getcmduserid() heroB = {} heroB['target'] = {} for t in hero['target']: if not t == userid: heroB['target'][t] = hero['target'][t] hero['target'] = heroB['target'] gamethread.cancelDelayed(hero['delay_name'] % (userid))
def unregisterMute(self): if self.currentStatus == self.ENABLED: if self.tickStatus == self.REGISTERED: es.addons.unregisterTickListener(self._tickListener) xaextendedpunishments.xapunishments.unregisterPunishment("mute") self.currentStatus = self.DISABLED self.muted.clear() for steamid in self.steamids: gamethread.cancelDelayed('unmute_%s' % steamid) self.steamids.clear()
def player_disconnect(event_var): ''' Remove the players kick delays (cos it will cause errors!) if they leave - thx to SD's xaredirect for the idea ''' global kick_delays userid = int(event_var['userid']) if userid in kick_delays: gamethread.cancelDelayed('res_redirect_%s' % userid) kick_delays.remove(userid)
def cancel_delays(): """ Cancels delays for dead players Unregisters client command filter """ for userid in delays: gamethread.cancelDelayed('xaobserve_%s' % userid) if dead_players: es.addons.unregisterClientCommandFilter(client_command_filter) dead_players.clear()
def unload(): # Unregister the drop command es.addons.unregisterClientCommandFilter(drop_filter) #Stop the idle weapon removal loop gamethread.cancelDelayed('gg_removeIdleLoop') # Make sure that all weapons can be picked up for userid in es.getUseridList(): for weapon in spe.getWeaponDict(userid): set_spawn_flags(userid, weapon[7:], 0)
def es_map_start(event_var): # For all players for userid in currentMultiLevel: # Cancel the gamethread gamethread.cancelDelayed("%i_multilevel" % userid) # Remove them from the gravity class gravity.removeGravityChange(userid) # Clear the list of players currently multi-leveling currentMultiLevel.clear()
def deleteGravityList(self): ''' Loop through all the players, reset their gravity to 1, delete the gravity list then unregister the tick listener. ''' for player in self.gravityList: _resetGravity(player, 1.0) del self.gravityList gamethread.cancelDelayed('gravity_check')
def unload(): for userid in es.getUseridList(): gamethread.cancelDelayed('burn_%s' % userid) for punishment in punishment_method: xapunishments.unregisterPunishment(punishment) popuplib.delete("xapunishmentmenu") popuplib.delete("xapunishtargetmenu") popuplib.delete("xapunishsuremenu") for page in punishment_pmenus: punishment_pmenus[page].delete() xapunishments.unregister()
def unload(): for userid in es.getUseridList(): gamethread.cancelDelayed('burn_%s'%userid) for punishment in punishment_method: xapunishments.unregisterPunishment(punishment) popuplib.delete("xapunishmentmenu") popuplib.delete("xapunishtargetmenu") popuplib.delete("xapunishsuremenu") for page in punishment_pmenus: page.delete() xapunishments.unregister()