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 wcs_ulti_chain(): userid = int(es.ServerVar('wcs_userid')) count = 0 if es.getplayerteam(userid) >= 2: if playerlib.getUseridList('#alive'): usermsg.fade(userid, 0, 2, 1, 240, 240, 240, 100) x,y,z = es.getplayerlocation(userid) radius = float(es.ServerVar('wcs_radius')) es.ServerVar('vector1').set(','.join(map(str, (x,y,z)))) 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'): tools.expand.expand.damage(user, 32, userid) count += 1 if es.ServerVar('wcs_cfg_graphicfx'): es.server.insertcmd('es_xset vector2 '+','.join(map(str, (x1,y1,z1)))+';es_xdoblock wcs/addons/effect/ChainLightning') 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('Chain Lightning: %s players damaged' % (count)) else: es.tell(userid, '#multi', '#lightgreenChain Lightning #greenfailed#lightgreen, because no enemy is close enough to be damaged.') es.server.queuecmd('es wcs_reset_cooldown %s' % (userid))
def register_center(args): if len(args) >= 2: userid = str(args[0]) text = str(args[1]) if userid.startswith('#'): userid = getPlayerList(userid) if not hasattr(userid, '__iter__'): if not exists('userid', userid): return userid = (getPlayer(userid), ) hmm = [] if len(args) >= 4: hmm = args[2:] tokens = {} for x in range(0, len(hmm), 2): try: tokens[hmm[x]] = hmm[x + 1] except IndexError: return for user in userid: if exists('userid', int(user)): player = Player.from_userid(int(userid)) if not player.is_bot(): centertell( user, strings(text, tokens, langlib.getLangAbbreviation(player.language)))
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 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 assassinWins(self): """Executes when the assassin wins""" global started for userid in self.guards.keys(): self.guards[userid].suicide() es.centertell(userid, "You have failed your mission!") started = False
def wcs_ulti_roots(): userid = int(es.ServerVar('wcs_userid')) player = Player.from_userid(userid) if player.team >= 2: count = 0 wcs_commands.fade(userid, 10, 55, 5, 200, 1) radius = float(es.ServerVar('wcs_radius')) time = float(es.ServerVar('wcs_duration')) atk_origin = player.origin for play in PlayerIter('alive'): if play.team != player.team: vic_origin = play.origin if vic_origin.get_distance(atk_origin) <= radius: if not wcsgroup.getUser(play.userid, 'ulti_immunity'): play.move_type = MoveType.NONE count += 1 Delay(time, remove_freeze, (play, )) es.emitsound('player', play.userid, 'wcs/root.wav', 1.0, 0.6) queue_command_string( 'es est_effect_06 #a 0 sprites/laser.vmt "%s,%s,%s" "%s,%s,%s" 10 1 5 5 10 4 0 160 0 155 2' % (atk_origin[0], atk_origin[1], atk_origin[2] + 35, vic_origin[0], vic_origin[1], vic_origin[2] + 35)) queue_command_string( 'es est_effect_06 #a 0 sprites/laser.vmt "%s,%s,%s" "%s,%s,%s" 10 1 4 4 10 2 0 108 0 180 2' % (atk_origin[0], atk_origin[1], atk_origin[2] + 35, vic_origin[0], vic_origin[1], vic_origin[2] + 35)) queue_command_string( 'es est_effect_06 #a 0 sprites/laser.vmt "%s,%s,%s" "%s,%s,%s" 10 1 5 5 10 4 0 80 0 190 2' % (atk_origin[0], atk_origin[1], atk_origin[2] + 35, vic_origin[0], vic_origin[1], vic_origin[2] + 35)) queue_command_string( 'es est_effect 10 #a 0 sprites/laser.vmt %s %s %s 60 20 1 3 3 5 0 80 0 155 0 255 2' % (vic_origin[0], vic_origin[1], vic_origin[2] + 10)) queue_command_string( 'es est_effect 10 #a 0 sprites/laser.vmt %s %s %s 75 35 1 3 3 6 0 108 0 190 0 255 2' % (vic_origin[0], vic_origin[1], vic_origin[2] + 25)) else: es.tell( player.userid, '#multi', '#lightgreenYour ultimate was blocked, the enemy is #greenimmune.' ) es.tell( play.userid, '#multi', '#lightgreenYou #greenblocked #lightgreenan ultimate skill.' ) if count > 0: es.centertell(userid, 'Entangling Roots: %s' % (count)) else: es.tell( userid, '#multi', '#lightgreenEntangling Roots #greenfailed#lightgreen, because no enemy is close enough.' ) cancel(userid, 'player_ultimate')
def player_hurt(ev): if ip_trainingserver_enable > 0: victim = playerlib.getPlayer(ev['userid']) attacker = playerlib.getPlayer(ev['attacker']) if training_report_damage > 0: es.centertell(ev['attacker'], "Hurt %s for %s " % (victim.name, ev['dmg_health']))
def weapon_fire(ev): userid = ev['userid'] if not superhero.hasHero(userid,'Invisible Man'): return player = playerlib.getPlayer(userid) r,g,b,a = player.getColor() player.set("color", [r, g, b, 255]) if a != 255: es.centertell(userid,"You are not cloaked anymore!")
def weapon_fire(ev): userid = ev['userid'] if not superhero.hasHero(userid, 'Invisible Man'): return player = playerlib.getPlayer(userid) r, g, b, a = player.getColor() player.set("color", [r, g, b, 255]) if a != 255: es.centertell(userid, "You are not cloaked anymore!")
def announce(self, userid): global active if es.getlivingplayercount(3) <= cts: if len(bombsitesNum) >= 1: active = 1 if playerlib.getPlayer(userid).attributes['teamid'] == 2: es.tell( userid, '#multi', '#green[#lightgreenBombsite#green-#lightgreenLimiter#lightgreen]#default Due to the low number of CT\'s this round, you must #lightgreenonly plant at site #green%s#lightgreen!' % self.defaultSiteLetter) gamethread.delayed(1, es.tell, ( userid, '#multi', '#green[#lightgreenBombsite#green-#lightgreenLimiter#lightgreen]#default Due to the low number of CT\'s this round, you must #lightgreenonly plant at site #green%s#lightgreen!' % self.defaultSiteLetter)) es.centertell( userid, 'You must only plant at %s site!' % self.defaultSiteLetter) gamethread.delayed( 1, es.centertell, (userid, 'You must only plant at %s site!' % self.defaultSiteLetter)) gamethread.delayed( 2, es.centertell, (userid, 'You must only plant at %s site!' % self.defaultSiteLetter)) gamethread.delayed( 3, es.centertell, (userid, 'You must only plant at %s site!' % self.defaultSiteLetter)) elif playerlib.getPlayer(userid).attributes['teamid'] == 3: es.tell( userid, '#multi', '#green[#lightgreenBombsite#green-#lightgreenLimiter#lightgreen]#default Due to the low number of CT\'s this round, you must #lightgreenonly protect site #green%s#lightgreen!' % self.defaultSiteLetter) gamethread.delayed(1, es.tell, ( userid, '#multi', '#green[#lightgreenBombsite#green-#lightgreenLimiter#lightgreen]#default Due to the low number of CT\'s this round, you must #lightgreenonly protect site #green%s#lightgreen!' % self.defaultSiteLetter)) es.centertell( userid, 'You must only protect %s site!' % self.defaultSiteLetter) gamethread.delayed( 1, es.centertell, (userid, 'You must only protect %s site!' % self.defaultSiteLetter)) gamethread.delayed( 2, es.centertell, (userid, 'You must only protect %s site!' % self.defaultSiteLetter)) gamethread.delayed( 3, es.centertell, (userid, 'You must only protect %s site!' % self.defaultSiteLetter)) else: active = 0
def _admin_say_center(userid, message, teamonly): tokens = {} tokens['username'] = es.getplayername(userid) tokens['message'] = message if not teamonly: for player in filter(lambda x: not es.getplayersteamid(x) == "BOT", es.getUseridList()): es.centertell(player, xalanguage('center message', tokens, playerlib.getPlayer(player).get("lang"))) else: for player in playerlib.getPlayerList('#admin_say'): es.centertell(int(player), xalanguage('admin only center message', tokens, player.get("lang"))) return (0,'',0)
def player_footstep(ev): global gusers userid = ev['userid'] if not superhero.hasHero(userid,'Invisible Man'): return player = playerlib.getPlayer(userid) r,g,b,a = player.getColor() player.set("color", [r, g, b, 255]) gusers[userid]['oldpos'] = es.getplayerlocation(userid) if a != 255: es.centertell(userid,"You are not cloaked anymore!")
def player_footstep(ev): global gusers userid = ev['userid'] if not superhero.hasHero(userid, 'Invisible Man'): return player = playerlib.getPlayer(userid) r, g, b, a = player.getColor() player.set("color", [r, g, b, 255]) gusers[userid]['oldpos'] = es.getplayerlocation(userid) if a != 255: es.centertell(userid, "You are not cloaked anymore!")
def plant(self, userid, site, mapname): if active: if site != bombsitesNum[self.defaultSiteLetter]: if es.getplayersteamid(userid) != 'BOT': playerlib.getPlayer(userid).set("push", (0, 300, 1)) es.tell(userid, '#multi', '#green[#lightgreenBombsite#green-#lightgreenLimiter#lightgreen]#default Due to the low number of CT\'s this round, you must #lightgreenonly plant at site #green%s#lightgreen!'%self.defaultSiteLetter) es.centertell(userid, 'You must only plant at %s site!'%self.defaultSiteLetter) gamethread.delayed(1, es.centertell, (userid, 'You must only plant at %s site!'%self.defaultSiteLetter)) else: x, y, z = random.choice(coords) es.server.queuecmd('es_xsetpos %s %s %s %s'%(userid, x, y, z)) es.msg('#multi','#green[#lightgreenBombsite#green-#lightgreenLimiter#green]#lightgreen %s #defaultwas teleported for planting at the wrong bombsite and being a bot!' % es.getplayername(userid))
def prepare(self, match): """ prepares the player for a match """ self.switchTeam(int(es.ServerVar("uam_vipteam"))) self.removePrimary() self.replaceSecondaryWeapon("weapon_deagle") ultilib.WeaponSelectionMenu(self.userid, GuardWeapons) self.resetColor() es.give(self.userid, "item_assaultsuit") self.health = es.ServerVar("uam_guardhealth") self.nightvision = 1 self.giveSmoke(1) self.giveFlash(2) self.giveHE(1) es.centertell(self.userid, "You're a guard! Protect %s! Kill %s!" % (match.vip.name, match.assassin.name))
def undo(player): userid = str(es.getcmduserid()) player = playerlib.getPlayer(userid) if not playerlib.getPlayer(userid).isdead: es.centertell(player.userid,'Noclip deactivated') gusers[str(player.userid)]['crawl'] = 0 if not 'speed' in gusers[str(player.userid)]: gusers[str(player.userid)]['speed'] = 1.0 player.set("speed", float(gusers[str(player.userid)]['speed'])) es.server.queuecmd('es_xsetplayerprop %s "CBaseEntity.movetype" 1' % player.userid) gusers[str(player.userid)]['nc_cooldown'] = int(time.time()) + 10 gusers[str(player.userid)]['on_ground'] = 0 #es.server.cmd('ezunrestrict %s #all' % player.userid) gamethread.delayed(0.5,check_stuck,(player))
def player_hurt(ev): userid = ev['userid'] attacker = ev['attacker'] damage = int(ev['dmg_health']) chance = 25 dice = random.randint(1, 100) if dice <= chance: if not superhero.hasHero(attacker, 'Dracula'): return drain = 0.5 health = int(damage * drain) player = playerlib.getPlayer(attacker) player.health = player.health + health es.centertell(attacker, 'Drained', health, 'Health')
def player_hurt(ev): userid = ev['userid'] attacker = ev['attacker'] damage = int(ev['dmg_health']) chance = 25 dice = random.randint(1,100) if dice <= chance: if not superhero.hasHero(attacker,'Dracula'): return drain = 0.5 health = int(damage*drain) player = playerlib.getPlayer(attacker) player.health = player.health + health es.centertell(attacker,'Drained',health,'Health')
def wcs_ulti_chain(): userid = int(es.ServerVar('wcs_userid')) player = Player.from_userid(userid) if player.team >= 2: count = 0 wcs_commands.fade(userid, 10, 55, 5, 200, 1) radius = float(es.ServerVar('wcs_radius')) atk_origin = player.origin for play in PlayerIter('alive'): if play.team != player.team: vic_origin = play.origin if vic_origin.get_distance(atk_origin) <= radius: if not wcsgroup.getUser(play.userid, 'ulti_immunity'): wcs_commands.damage(play.userid, 32, userid, solo=1) count += 1 es.emitsound('player', play.userid, 'wcs/lightning.wav', 1.0, 0.6) queue_command_string( 'es est_effect_06 #a 0 sprites/lgtning.vmt "%s,%s,%s" "%s,%s,%s" 10 .2 10 1 1 13 160 160 230 255 11' % (atk_origin[0], atk_origin[1], atk_origin[2] + 35, vic_origin[0], vic_origin[1], vic_origin[2] + 35)) queue_command_string( 'es est_effect_06 #a 0 sprites/lgtning.vmt "%s,%s,%s" "%s,%s,%s" 10 .2 10 2 2 12 150 150 255 220 8' % (atk_origin[0], atk_origin[1], atk_origin[2] + 35, vic_origin[0], vic_origin[1], vic_origin[2] + 35)) queue_command_string( 'es est_effect_06 #a 0 sprites/lgtning.vmt "%s,%s,%s" "%s,%s,%s" 10 .2 10 1 1 14 200 200 255 235 10' % (atk_origin[0], atk_origin[1], atk_origin[2] + 35, vic_origin[0], vic_origin[1], vic_origin[2] + 35)) else: es.tell( userid, '#multi', '#lightgreenYour ultimate was blocked, the enemy is #greenimmune.' ) es.tell( play.userid, '#multi', '#lightgreenYou #greenblocked #lightgreenan ultimate skill.' ) if count > 0: es.centertell(userid, 'Chain Lightning: %s players damaged' % (count)) else: es.tell( userid, '#multi', '#lightgreenChain Lightning #greenfailed#lightgreen, because no enemy is close enough to be damaged.' ) cancel(userid, 'player_ultimate')
def undo(player): userid = str(es.getcmduserid()) player = playerlib.getPlayer(userid) if not playerlib.getPlayer(userid).isdead: es.centertell(player.userid, 'Noclip deactivated') gusers[str(player.userid)]['crawl'] = 0 if not 'speed' in gusers[str(player.userid)]: gusers[str(player.userid)]['speed'] = 1.0 player.set("speed", float(gusers[str(player.userid)]['speed'])) es.server.queuecmd('es_xsetplayerprop %s "CBaseEntity.movetype" 1' % player.userid) gusers[str(player.userid)]['nc_cooldown'] = int(time.time()) + 10 gusers[str(player.userid)]['on_ground'] = 0 #es.server.cmd('ezunrestrict %s #all' % player.userid) gamethread.delayed(0.5, check_stuck, (player))
def check_stuck(player): userid = str(es.getcmduserid()) if not es.exists('userid',userid): return global gusers on_ground = int(gusers[str(player.userid)]['on_ground']) if on_ground != 8: if player.onground != 1: es.centertell(player.userid,'You are not on the ground, probably stuck, will slay you soon!') gusers[str(player.userid)]['on_ground'] = on_ground + 1 gamethread.delayed(0.5,check_stuck,(player)) else: return else: es.server.queuecmd('damage %s 999 1024' % player.userid)
def prepare(self, match): """ prepares the player for a match """ self.switchTeam(int(es.ServerVar("uam_vipteam"))) self.removePrimary() self.setColor(0, 255, 255, 255) self.replaceSecondaryWeapon("weapon_deagle") es.give(self.userid, "item_assaultsuit") self.armor = 150 self.health = es.ServerVar("uam_viphealth") self.nightvision = 1 self.giveSmoke(1) self.giveFlash(0) self.giveHE(0) self.setSpeed(1.2) es.centertell(self.userid, "You're the VIP. Survive at all cost. The assassin is %s." % match.assassin.name) es.dbgmsg(0, "The VIP id is %s" % self.userid)
def _admin_say_tell(adminid, message, teamonly): position = 0 tokens = {} username = '' messagetokens = message.split() if not messagetokens: return if messagetokens[0].startswith('"') and message.count('"') >= 2: for part in messagetokens: position += 1 username += ' '+part.strip('"') if part.endswith('"'): break try: message = ' '.join(messagetokens[position:]) except: message = '' elif messagetokens[0].startswith("'") and message.count("'") >= 2: for part in messagetokens: position += 1 username += ' '+part.strip("'") if part.endswith("'"): break try: message = ' '.join(messagetokens[position:]) except: message = '' else: username = messagetokens[0] message = ' '.join(messagetokens[1:]) username = username.lstrip() userid = es.getuserid(username) if userid: tokens['adminname'] = es.getplayername(adminid) tokens['username'] = es.getplayername(userid) tokens['message'] = message if not teamonly: es.tell(userid , '#multi', xalanguage('admin to player', tokens, playerlib.getPlayer(userid).get("lang"))) es.tell(adminid, '#multi', xalanguage('admin to player', tokens, playerlib.getPlayer(adminid).get("lang"))) else: es.centertell(userid , xalanguage('admin center to player', tokens, playerlib.getPlayer(userid).get("lang"))) es.centertell(adminid, xalanguage('admin center to player', tokens, playerlib.getPlayer(adminid).get("lang"))) else: tokens['username'] = username es.tell(adminid, '#multi', xalanguage('no player found', tokens, playerlib.getPlayer(adminid).get("lang"))) return (0,'',0)
def prepare(self, match): """ prepares the player for a match """ self.switchTeam(int(es.ServerVar("uam_assassinteam"))) self.removePrimary() self.setColor(0, 0, 0, AssassinAlpha) self.replaceSecondaryWeapon("weapon_deagle") es.give(self.userid, "item_assaultsuit") self.armor = 150 self.health = es.ServerVar("uam_assassinhealth") self.nightvision = 1 self.giveSmoke(2) self.giveFlash(3) self.giveHE(2) self.setSpeed(0.8) ultilib.WeaponSelectionMenu(self.userid, AssassinWeapons) es.centertell(self.userid, "You're the Assassin. Kill %s!" % match.vip.name) es.dbgmsg(0, "The Assassin id is %s" % self.userid)
def check_stuck(player): userid = str(es.getcmduserid()) if not es.exists('userid', userid): return global gusers on_ground = int(gusers[str(player.userid)]['on_ground']) if on_ground != 8: if player.onground != 1: es.centertell( player.userid, 'You are not on the ground, probably stuck, will slay you soon!' ) gusers[str(player.userid)]['on_ground'] = on_ground + 1 gamethread.delayed(0.5, check_stuck, (player)) else: return else: es.server.queuecmd('damage %s 999 1024' % player.userid)
def _admin_say_center(userid, message, teamonly): tokens = {} tokens['username'] = es.getplayername(userid) tokens['message'] = message if not teamonly: for player in filter(lambda x: not es.getplayersteamid(x) == "BOT", es.getUseridList()): es.centertell( player, xalanguage('center message', tokens, playerlib.getPlayer(player).get("lang"))) else: for player in playerlib.getPlayerList('#admin_say'): es.centertell( int(player), xalanguage('admin only center message', tokens, player.get("lang"))) return (0, '', 0)
def player_hurt(ev): if ip_scoutag_enable > 0 and ev['weapon'] == "scout": victim = playerlib.getPlayer(ev['userid']) attacker = playerlib.getPlayer(ev['attacker']) es.centertell(ev['attacker'], 'TaG') if int(ev["hitgroup"]) == 1: if ip_scoutag_announce_headshot > 0: es.msg("#multi", "#green [Scout Tag] : #default %s just #lightgreen HEADSHOT #default %s with the scout!" % (attacker.name, victim.name)) else: es.tell(attacker, "#multi", "#green [Scout Tag] : #default You just HEADSHOT %s for %s damage" % (victim.name, ev["dmg_health"])) es.tell(victim, "#multi", "#green [Scout Tag] : #default %s just HEADSHOT you!" % attacker.name) attackercash = attacker.get("cash") attacker.set("cash", attackercash + 500) elif int(ev["hitgroup"]) == 2: es.tell(attacker, "#multi", "#green [Scout Tag] : #default You just shot %s in the #lightgreen CHEST #default" % (victim.name)) es.tell(victim, "#multi", "#green [Scout Tag] : #default %s just shot your in the #lightgreen CHEST #default for #lightgreen %s #default damage" % (attacker.name, ev["dmg_health"]))
def check_moving(userid): userid = str(userid) if not superhero.hasHero(userid,'Invisible Man'): return player = playerlib.getPlayer(userid) if not playerlib.getPlayer(userid).isdead: if not 'oldpos' in gusers[userid]: gusers[userid]['oldpos'] = 0 newpos = es.getplayerlocation(userid) oldpos = gusers[userid]['oldpos'] if str(newpos) == str(oldpos): r,g,b,a = player.getColor() if a >= 15: a -= 15 invis = a invis = invis * 100 / 255 invis = 100-invis es.centertell(userid,invis,'% Cloaked') player.set("color", [r, g, b, a]) gusers[userid]['oldpos'] = newpos gamethread.delayedname(INVIS_DELAY, delayname % player, check_moving, player)
def check_moving(userid): userid = str(userid) if not superhero.hasHero(userid, 'Invisible Man'): return player = playerlib.getPlayer(userid) if not playerlib.getPlayer(userid).isdead: if not 'oldpos' in gusers[userid]: gusers[userid]['oldpos'] = 0 newpos = es.getplayerlocation(userid) oldpos = gusers[userid]['oldpos'] if str(newpos) == str(oldpos): r, g, b, a = player.getColor() if a >= 15: a -= 15 invis = a invis = invis * 100 / 255 invis = 100 - invis es.centertell(userid, invis, '% Cloaked') player.set("color", [r, g, b, a]) gusers[userid]['oldpos'] = newpos gamethread.delayedname(INVIS_DELAY, delayname % player, check_moving, player)
def announce(self, userid): global active if es.getlivingplayercount(3) <= cts: if len(bombsitesNum) >= 1: active = 1 if playerlib.getPlayer(userid).attributes['teamid'] == 2: es.tell(userid, '#multi', '#green[#lightgreenBombsite#green-#lightgreenLimiter#lightgreen]#default Due to the low number of CT\'s this round, you must #lightgreenonly plant at site #green%s#lightgreen!'%self.defaultSiteLetter) gamethread.delayed(1, es.tell, (userid, '#multi', '#green[#lightgreenBombsite#green-#lightgreenLimiter#lightgreen]#default Due to the low number of CT\'s this round, you must #lightgreenonly plant at site #green%s#lightgreen!'%self.defaultSiteLetter)) es.centertell(userid, 'You must only plant at %s site!'%self.defaultSiteLetter) gamethread.delayed(1, es.centertell, (userid, 'You must only plant at %s site!'%self.defaultSiteLetter)) gamethread.delayed(2, es.centertell, (userid, 'You must only plant at %s site!'%self.defaultSiteLetter)) gamethread.delayed(3, es.centertell, (userid, 'You must only plant at %s site!'%self.defaultSiteLetter)) elif playerlib.getPlayer(userid).attributes['teamid'] == 3: es.tell(userid, '#multi', '#green[#lightgreenBombsite#green-#lightgreenLimiter#lightgreen]#default Due to the low number of CT\'s this round, you must #lightgreenonly protect site #green%s#lightgreen!'%self.defaultSiteLetter) gamethread.delayed(1, es.tell, (userid, '#multi', '#green[#lightgreenBombsite#green-#lightgreenLimiter#lightgreen]#default Due to the low number of CT\'s this round, you must #lightgreenonly protect site #green%s#lightgreen!'%self.defaultSiteLetter)) es.centertell(userid, 'You must only protect %s site!'%self.defaultSiteLetter) gamethread.delayed(1, es.centertell, (userid, 'You must only protect %s site!'%self.defaultSiteLetter)) gamethread.delayed(2, es.centertell, (userid, 'You must only protect %s site!'%self.defaultSiteLetter)) gamethread.delayed(3, es.centertell, (userid, 'You must only protect %s site!'%self.defaultSiteLetter)) else: active = 0
def player_hurt(event_var): victim_id = int(event_var['userid']) damage = int(event_var['dmg_health']) attacker_id = int(event_var['attacker']) victim_name = event_var['es_username'] attacker_name = event_var['es_attackername'] if victim_id not in (0, attacker_id): display_areas_split = str(DISPLAY_DAMAGE_DISPLAY).strip().split(';') show_dmg = '-%sHP' %damage show_maxlen = max(len(victim_name), len(show_dmg)) if int(DISPLAY_DAMAGE_NAME): show_msg = '%s\n%s' %(victim_name.center(show_maxlen), show_dmg.center(show_maxlen)) else: show_msg = show_dmg if 'chat' in display_areas_split: es.tell(attacker_id, '#multi', '#green[DMG] #lightgreen%s' %show_msg) if 'hudhint' in display_areas_split: usermsg.hudhint(attacker_id, show_msg) if 'keyhint' in display_areas_split: usermsg.keyhint(attacker_id, show_msg) if 'center' in display_areas_split: es.centertell(attacker_id, show_msg)
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 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 plant(self, userid, site, mapname): if active: if site != bombsitesNum[self.defaultSiteLetter]: if es.getplayersteamid(userid) != 'BOT': playerlib.getPlayer(userid).set("push", (0, 300, 1)) es.tell( userid, '#multi', '#green[#lightgreenBombsite#green-#lightgreenLimiter#lightgreen]#default Due to the low number of CT\'s this round, you must #lightgreenonly plant at site #green%s#lightgreen!' % self.defaultSiteLetter) es.centertell( userid, 'You must only plant at %s site!' % self.defaultSiteLetter) gamethread.delayed( 1, es.centertell, (userid, 'You must only plant at %s site!' % self.defaultSiteLetter)) else: x, y, z = random.choice(coords) es.server.queuecmd('es_xsetpos %s %s %s %s' % (userid, x, y, z)) es.msg( '#multi', '#green[#lightgreenBombsite#green-#lightgreenLimiter#green]#lightgreen %s #defaultwas teleported for planting at the wrong bombsite and being a bot!' % es.getplayername(userid))
def player_hurt(ev): if started: userid = int(ev["userid"]) if userid == theMatch.vipID: if theMatch.vip.health / VIPHealth < 0.2 and not ev["es_userdead"]: es.centertell(theMatch.vipID, "Your health is critically low! Take cover!") elif userid == theMatch.assassinID and not ev["es_userdead"]: if theMatch.assassin.health / AssassinHealth < 0.2: es.centertell(theMatch.assassinID, "Your health is critically low! Take cover!") if ev["es_attackerteam"] == ev["es_userteam"] and not ev["userid"] == ev["attacker"]: es.centertell(ev["attacker"], "You just shot a friend!")
def player_spawn(ev): if started: es.sexec(ev["userid"], "kill") es.centertell(ev["userid"], "You may join the game next round!")
def auto_stuck(userid): # Player X-X width = 64.0625 units # Player Y-Y width = 64.2360839844 # Player height = 62.03125 units if es.exists("userid", userid): if not es.isbot(userid): steamid = es.getplayersteamid(userid) player = playerlib.getPlayer(userid) if not player.isdead: if client[steamid]["auto_flash"] == "On": if player.getFB() == 0: es.server.queuecmd('es_give %s weapon_flashbang' % userid) es.server.queuecmd('es_give %s weapon_flashbang' % userid) # player.setFB(100) if client[steamid]['auto_stuck'] == "On": alive = es.getlivingplayercount() if alive > 1 and time.time() - client[steamid]["time"] > 1.5: player = playerlib.getPlayer(userid) steamid = es.getplayersteamid(userid) target = playerlib.getPlayer(player.getClosestPlayer(team=None)[1]) player_target = playerlib.getPlayer(target) target_steamid = player_target.steamid target_pos = es.getplayerlocation(player.getClosestPlayer(team=None)[1]) # Tuple player_pos = es.getplayerlocation(userid) target_x = float(target_pos[0]) target_y = float(target_pos[1]) target_z = float(target_pos[2]) player_x = float(player_pos[0]) player_y = float(player_pos[1]) player_z = float(player_pos[2]) if not player.isdead: if not es.isbot(target): if abs(-target_z - (-player_z)) < 61 and abs(-target_z - (-player_z)) >= 0 and abs( -target_x - (-player_x)) < 32 and abs(-target_y - ( -player_y)) < 32 and not player_target.isDucked() and not player.isDucked(): player.noblock(1) player_target.noblock(1) player.setColor(255, 255, 255, 100) player_target.setColor(255, 255, 255, 100) es.centertell(userid, 'Anti-Stuck') elif abs(-target_z - (-player_z)) < 45 and abs(-target_z - (-player_z)) >= 0 and abs( -target_x - (-player_x)) < 32 and abs(-target_y - ( -player_y)) < 32 and player_target.isDucked() and not player.isDucked(): player.noblock(1) player_target.noblock(1) player.setColor(255, 255, 255, 100) player_target.setColor(255, 255, 255, 100) es.centertell(userid, 'Anti-Stuck') elif abs(-target_z - (-player_z)) < 45 and abs(-target_z - (-player_z)) >= 0 and abs( -target_x - (-player_x)) < 32 and abs(-target_y - ( -player_y)) < 32 and not player_target.isDucked() and player.isDucked(): player.noblock(1) player_target.noblock(1) player.setColor(255, 255, 255, 100) player_target.setColor(255, 255, 255, 100) es.centertell(userid, 'Anti-Stuck') elif abs(-target_z - (-player_z)) < 45 and abs(-target_z - (-player_z)) >= 0 and abs( -target_x - (-player_x)) < 32 and abs(-target_y - ( -player_y)) < 32 and player_target.isDucked() and player.isDucked(): player.noblock(1) player_target.noblock(1) player.setColor(255, 255, 255, 100) player_target.setColor(255, 255, 255, 100) es.centertell(userid, 'Anti-Stuck') elif abs(-target_z - (-player_z)) < 61 and abs(-target_z - (-player_z)) >= 0 and abs( -target_x - (-player_x)) < 32 and abs(-target_y - ( -player_y)) < 32 and not player_target.isDucked() and player.isDucked(): if target_z < player_z: player.noblock(1) player_target.noblock(1) player.setColor(255, 255, 255, 100) player_target.setColor(255, 255, 255, 100) es.centertell(userid, 'Anti-Stuck 1') elif abs(-target_z - (-player_z)) < 61 and abs(-target_z - (-player_z)) >= 0 and abs( -target_x - (-player_x)) < 32 and abs(-target_y - ( -player_y)) < 32 and player_target.isDucked() and not player.isDucked(): if target_z > player_z: player.noblock(1) player_target.noblock(1) player.setColor(255, 255, 255, 100) player_target.setColor(255, 255, 255, 100) es.centertell(userid, 'Anti-Stuck 2') else: if client[steamid]["player_state"] == "Block" and client[target_steamid][ "player_state"] == "Block": player.setColor(255, 255, 255, 255) player.noblock(0) player_target.noblock(0) player_target.setColor(255, 255, 255, 255) else: gamethread.cancelDelayed("auto_stuck_%s" % userid) return gamethread.delayedname(0.1, 'auto_stuck_%s' % userid, auto_stuck, args=(userid))
def _admin_say_tell(adminid, message, teamonly): position = 0 tokens = {} username = '' messagetokens = message.split() if not messagetokens: return if messagetokens[0].startswith('"') and message.count('"') >= 2: for part in messagetokens: position += 1 username += ' '+part.strip('"') if part.endswith('"'): break try: message = ' '.join(messagetokens[position:]) except: message = '' elif messagetokens[0].startswith("'") and message.count("'") >= 2: for part in messagetokens: position += 1 username += ' '+part.strip("'") if part.endswith("'"): break try: message = ' '.join(messagetokens[position:]) except: message = '' else: username = messagetokens[0] message = ' '.join(messagetokens[1:]) tokens['message'] = message tokens['adminname'] = es.getplayername(adminid) if username.startswith('#'): tokens['username'] = username pl = playerlib.getPlayerList(username) if pl: for player in pl: if not teamonly: es.tell(int(player) , '#multi', xalanguage('admin to player', tokens, player.get("lang"))) else: es.centertell(int(player) , xalanguage('admin center to player', tokens, player.get("lang"))) if not teamonly: es.tell(adminid, '#multi', xalanguage('admin to player', tokens, playerlib.getPlayer(adminid).get("lang"))) else: es.centertell(adminid, xalanguage('admin center to player', tokens, playerlib.getPlayer(adminid).get("lang"))) xaextendedsay.logging.log("has said '%s' to group %s" % (message, username), adminid, True ) else: xaextendedsay.logging.log("has said '%s' to %s, but no group existed" % (message, username), adminid, True ) else: username = username.lstrip() userid = es.getuserid(username) if userid: tokens['username'] = es.getplayername(userid) if not teamonly: es.tell(userid , '#multi', xalanguage('admin to player', tokens, playerlib.getPlayer(userid).get("lang"))) es.tell(adminid, '#multi', xalanguage('admin to player', tokens, playerlib.getPlayer(adminid).get("lang"))) xaextendedsay.logging.log("has said '%s' to user %s [%s]" % (message, tokens['username'], es.getplayersteamid(userid) ), adminid, True ) else: es.centertell(userid , xalanguage('admin center to player', tokens, playerlib.getPlayer(userid).get("lang"))) es.centertell(adminid, xalanguage('admin center to player', tokens, playerlib.getPlayer(adminid).get("lang"))) xaextendedsay.logging.log("has said '%s' to user %s [%s]" % (message, tokens['username'], es.getplayersteamid(userid) ), adminid, True ) else: tokens['username'] = username es.tell(adminid, '#multi', xalanguage('no player found', tokens, playerlib.getPlayer(adminid).get("lang"))) return (0,'',0)
def _admin_say_tell(adminid, message, teamonly): position = 0 tokens = {} username = '' messagetokens = message.split() if not messagetokens: return if messagetokens[0].startswith('"') and message.count('"') >= 2: for part in messagetokens: position += 1 username += ' ' + part.strip('"') if part.endswith('"'): break try: message = ' '.join(messagetokens[position:]) except: message = '' elif messagetokens[0].startswith("'") and message.count("'") >= 2: for part in messagetokens: position += 1 username += ' ' + part.strip("'") if part.endswith("'"): break try: message = ' '.join(messagetokens[position:]) except: message = '' else: username = messagetokens[0] message = ' '.join(messagetokens[1:]) tokens['message'] = message tokens['adminname'] = es.getplayername(adminid) if username.startswith('#'): tokens['username'] = username pl = playerlib.getPlayerList(username) if pl: for player in pl: if not teamonly: es.tell( int(player), '#multi', xalanguage('admin to player', tokens, player.get("lang"))) else: es.centertell( int(player), xalanguage('admin center to player', tokens, player.get("lang"))) if not teamonly: es.tell( adminid, '#multi', xalanguage('admin to player', tokens, playerlib.getPlayer(adminid).get("lang"))) else: es.centertell( adminid, xalanguage('admin center to player', tokens, playerlib.getPlayer(adminid).get("lang"))) xaextendedsay.logging.log( "has said '%s' to group %s" % (message, username), adminid, True) else: xaextendedsay.logging.log( "has said '%s' to %s, but no group existed" % (message, username), adminid, True) else: username = username.lstrip() userid = es.getuserid(username) if userid: tokens['username'] = es.getplayername(userid) if not teamonly: es.tell( userid, '#multi', xalanguage('admin to player', tokens, playerlib.getPlayer(userid).get("lang"))) es.tell( adminid, '#multi', xalanguage('admin to player', tokens, playerlib.getPlayer(adminid).get("lang"))) xaextendedsay.logging.log( "has said '%s' to user %s [%s]" % (message, tokens['username'], es.getplayersteamid(userid)), adminid, True) else: es.centertell( userid, xalanguage('admin center to player', tokens, playerlib.getPlayer(userid).get("lang"))) es.centertell( adminid, xalanguage('admin center to player', tokens, playerlib.getPlayer(adminid).get("lang"))) xaextendedsay.logging.log( "has said '%s' to user %s [%s]" % (message, tokens['username'], es.getplayersteamid(userid)), adminid, True) else: tokens['username'] = username es.tell( adminid, '#multi', xalanguage('no player found', tokens, playerlib.getPlayer(adminid).get("lang"))) return (0, '', 0)
def before_player_hurt(ev): if ev["weapon"] != "flashbang": ultilib.EasyPlayer(ev["userid"]).health = 1 es.centertell(ev["attacker"], "USE FLASHBANG ONLY!")
def centertell(argv): es.centertell(*argv)
def _admin_say_tell(adminid, message, teamonly): position = 0 tokens = {} username = '' messagetokens = message.split() if not messagetokens: return if messagetokens[0].startswith('"') and message.count('"') >= 2: for part in messagetokens: position += 1 username += ' ' + part.strip('"') if part.endswith('"'): break try: message = ' '.join(messagetokens[position:]) except: message = '' elif messagetokens[0].startswith("'") and message.count("'") >= 2: for part in messagetokens: position += 1 username += ' ' + part.strip("'") if part.endswith("'"): break try: message = ' '.join(messagetokens[position:]) except: message = '' else: username = messagetokens[0] message = ' '.join(messagetokens[1:]) username = username.lstrip() userid = es.getuserid(username) if userid: tokens['adminname'] = es.getplayername(adminid) tokens['username'] = es.getplayername(userid) tokens['message'] = message if not teamonly: es.tell( userid, '#multi', xalanguage('admin to player', tokens, playerlib.getPlayer(userid).get("lang"))) es.tell( adminid, '#multi', xalanguage('admin to player', tokens, playerlib.getPlayer(adminid).get("lang"))) else: es.centertell( userid, xalanguage('admin center to player', tokens, playerlib.getPlayer(userid).get("lang"))) es.centertell( adminid, xalanguage('admin center to player', tokens, playerlib.getPlayer(adminid).get("lang"))) else: tokens['username'] = username es.tell( adminid, '#multi', xalanguage('no player found', tokens, playerlib.getPlayer(adminid).get("lang"))) return (0, '', 0)