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 freeze(self): """Freeze the player, stopping them from being able to move. If they were moving before, footstep sounds will continue to emit and weapon fire will resemble any inaccuracies. """ es.setplayerprop(self.user_ID, "CBaseEntity.movetype", 0)
def weapon_fire(ev): userid = ev['userid'] if not superhero.hasHero(userid,'Agent Zero'): return player = playerlib.getPlayer(userid) es.setplayerprop(userid, 'CCSPlayer.cslocaldata.m_iShotsFired', 0) es.setplayerprop(userid, 'CCSPlayer.baseclass.localdata.m_Local.m_vecPunchAngle', '0.000000,0.000000,0.000000')
def player_hurt(event_var): """ Executed when a player is damaged. Get the amount of damage done and multiply it by the percentage @PARAM event_var - an automatically passed event instance """ attacker = event_var['attacker'] if attacker and attacker.isdigit() and int(attacker) > 0: player = sourcerpg.players[attacker] level = player[skillName] if level: level = level * float(percentage) / 100.0 if event_var['dmg_health']: amountToHeal = int(level * int(event_var['dmg_health'])) elif event_var['damage']: amountToHeal = int(level * int(event_var['damage'])) else: raise ValueError, "This game does not support vampire" if amountToHeal: maxHealth = player['maxHealth'] currentHealth = es.getplayerprop(event_var['attacker'], 'CBasePlayer.m_iHealth') currentHealth += amountToHeal if currentHealth > maxHealth: currentHealth = maxHealth es.setplayerprop(event_var['attacker'], 'CBasePlayer.m_iHealth', currentHealth)
def player_blind(ev): userid = ev['userid'] if not superhero.hasHero(userid,'Jubilee'): return if jub[userid] == 1: es.setplayerprop(userid,'CCSPlayer.m_flFlashMaxAlpha',0) es.setplayerprop(userid,'CCSPlayer.m_flFlashDuration',0)
def rpg_repulse(userid): skillname = 'Speed' player = playerlist[userid] level = player.GetSkillLevel(skillname) if level: es.setplayerprop(userid, 'CBasePlayer.localdata.m_flLaggedMovementValue', (1 + 0.015 * level)) else: playerlist[userid].player.setSpeed(1)
def setHealth(userid, amount): """ This static method sets a new value of health to a user @PARAM userid - the userid to get the health of @PARAM amount - the new amount of health to set to """ es.setplayerprop(userid, 'CBasePlayer.m_iHealth', amount)
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 setArmor(userid, amount): """ This static method sets a new value of armor to a user @PARAM userid - the userid to get the armor of @PARAM amount - the new amount of armor to set to """ es.setplayerprop(userid, 'CCSPlayer.m_ArmorValue', amount)
def weapon_fire(ev): userid = int(ev['userid']) weapon = str(ev['weapon']) weapon_index = getweaponindex(userid, weapon) if weapon == "knife": es.setplayerprop(userid, "CCSPlayer.cslocaldata.m_iShotsfired", 1) es.setindexprop(weapon_index, "CBaseCombatWeapon.LocalActiveWeaponData.m_flNextPrimaryAttack", 0) es.setindexprop(weapon_index, "CBaseCombatWeapon.LocalActiveWeaponData.m_flNextSecondaryAttack", 0) es.setplayerprop(userid, "CBaseCombatCharacter.bcc_localdata.m_flNextAttack", 0)
def Request_SetPlayerMaxHealth(Userid,Health): for item in es.createentitylist("tf_player_manager"): Ent = item break index = int(playerlib.getPlayer(Userid).get('index')) Template = GetTemplate(str("CTFPlayerResource.m_iMaxHealth.0"),index) es.setindexprop(Ent,Template,Health) es.setplayerprop(Userid,"CTFPlayer.baseclass.baseclass.m_bGlowEnabled",1) es.setplayerprop(Userid,"CTFPlayer.baseclass.m_flMaxspeed",random.randint(300,400))
def set(self, user_ID, value): """Set the value of the player"s entity property. This method should generally only be implicitly called by python. Arguments: user_ID - the unique session ID of the user. value - the new value to set the property at. """ es.setplayerprop(user_ID, self.name, value)
def player_spawn(EV): Userid = int(EV['userid']) Team = EV['team'] Class = EV['class'] global Zombies,Survivors,Spec Request_WeaponKill_Update() if Userid in Zombies: Kill_InfectedClip(Userid) es.setplayerprop(Userid,"CTFPlayer.baseclass.m_iHealth",(4000/es.getplayercount(2))+1000) Request_SetPlayerMaxHealth(Userid,(4000/es.getplayercount(2))+1000) Request_TeamUpdate()
def _drug(userid, adminid, args): drugged = players[userid]['drugged'] players[userid]['drugged'] = (1 if not drugged else 0) if str(xa_admindrug_anonymous) == "0": tokens = {} tokens['admin'] = es.getplayername(adminid) tokens['user'] = es.getplayername(userid) for player in playerlib.getPlayerList(): tokens['state'] = xalanguage("drugged", lang=player.get("lang")) if not drugged else xalanguage("undrugged", lang=player.get("lang")) es.tell(int(player), xalanguage("admin state", tokens, player.get("lang"))) es.setplayerprop(userid, 'CBasePlayer.m_iDefaultFOV', 165 if not drugged else 90)
def player_jump(ev): # Get userid and level for that skill userid = int(ev["userid"]) level = playerlist[userid].GetSkillLevel(skillname) # Calculate jump vector and set it horizontalVector = es.getplayerprop(userid, "CBasePlayer.localdata.m_vecVelocity[0]") verticalVector = es.getplayerprop(userid, "CBasePlayer.localdata.m_vecVelocity[1]") horizontalVector = (level * horizontalVector) * 0.085 verticalVector = (level * verticalVector) * 0.085 vector = "%s,%s,0" % (horizontalVector, verticalVector) es.setplayerprop(userid, "CBasePlayer.localdata.m_vecBaseVelocity", vector)
def pre_player_hurt(ev): userid = int(ev['userid']) attacker = int(ev['attacker']) dmg_health = int(ev['dmg_health']) hitgroup = int(ev['hitgroup']) weapon = str(ev['weapon']) steamid = getplayerid(userid) if attacker > 0: attackersteamid = getplayerid(attacker) health = es.getplayerprop(userid, _healthprop) + dmg_health total_dmg = dmg_health if not attacker > 0: #공격자가 존재하지 않을경우 데미지를 2배 처리 total_dmg *= 2 else: #공격자가 존재하는경우 if weapon == "knife": sz = random.choice(["zeisenproject/The-Killers/sounds/sndHit.wav", "zeisenproject/The-Killers/sounds/sndHit1.wav", "zeisenproject/The-Killers/sounds/sndHit3.wav"]) for i in range(1,2 + 1): if i == 1: es.playsound(attacker, sz, 1.0) else: es.playsound(attacker, sz, 0.5) else: es.playsound(attacker, "zeisenproject/The-Killers/sounds/sndHit2.wav", 1.0) if hitgroup == 1: if weapon == "awp": total_dmg = 250 elif weapon == "scout": total_dmg = 165 elif weapon == "p90": total_dmg = 70 else: total_dmg = 100 else: if weapon == "knife": total_dmg = 100 else: total_dmg = 50 health -= total_dmg es.setplayerprop(userid, _healthprop, health) if attacker > 0: if steamid == "BOT" and health > 0 and attackersteamid != "BOT": gore = bool(es.keygetvalue(attackersteamid, "player_data", "gore")) if gore: if hitgroup == 1: for i in range(1,5 + 1): make_blood(userid, color=0, amount=10, headshot=1, valueat=attacker) else: for i in range(1,5 + 1): make_blood(userid, color=0, amount=10, headshot=0, valueat=attacker)
def setHealth(userid): """ A function which alters the maximum and current health of a player to match their current level @PARAM userid - the userid of which to set the health of """ player = sourcerpg.players[userid] level = player[skillName] if userid not in baseHealth: baseHealth[userid] = player['baseHealth'] level = level * int(healthIncrement) + baseHealth[userid] player['maxHealth'] = level es.setplayerprop(userid, 'CBasePlayer.m_iHealth', player['maxHealth'])
def restart(): """ Teleports player to first level """ userid = es.getcmduserid() if (es.getplayerteam(userid) != 1): entities = es.createentitylist('info_teleport_destination') for i in entities: if (es.entitygetvalue(i, 'targetname') == "timer_stage1"): x = es.getplayerprop(userid, "CBasePlayer.localdata.m_vecVelocity[0]") * -1 / 2 y = es.getplayerprop(userid, "CBasePlayer.localdata.m_vecVelocity[1]") * -1 / 2 z = es.getplayerprop(userid, "CBasePlayer.localdata.m_vecVelocity[2]") * -1 / 2 es.setplayerprop(userid, "CBasePlayer.localdata.m_vecBaseVelocity", es.createvectorstring(x, y, z)) gamethread.delayed(0.01, es.setplayerprop, (userid, "CBasePlayer.localdata.m_vecBaseVelocity", es.createvectorstring(x, y, z))) startPos = es.entitygetvalue(i, 'origin').split(' ') startAng = es.entitygetvalue(i, 'angles').split(' ') gamethread.delayed(0.01, es.setpos, (userid, startPos[0], startPos[1], startPos[2])) es.setang(userid, startAng[0], startAng[1], startAng[2])
def bonusMenu_select(userid, choice, popupid): if (es.getplayerteam(userid) == 1): return for a in range(1,4): if (choice == '%s' % a): entities = es.createentitylist('info_teleport_destination') for b in entities: if (es.entitygetvalue(b, 'targetname') == "timer_bonus%s" % a): x = es.getplayerprop(userid, "CBasePlayer.localdata.m_vecVelocity[0]") * -1 / 2 y = es.getplayerprop(userid, "CBasePlayer.localdata.m_vecVelocity[1]") * -1 / 2 z = es.getplayerprop(userid, "CBasePlayer.localdata.m_vecVelocity[2]") * -1 / 2 es.setplayerprop(userid, "CBasePlayer.localdata.m_vecBaseVelocity", es.createvectorstring(x, y, z)) gamethread.delayed(0.01, es.setplayerprop, (userid, "CBasePlayer.localdata.m_vecBaseVelocity", es.createvectorstring(x, y, z))) startPos = es.entitygetvalue(b, 'origin').split(' ') startAng = es.entitygetvalue(b, 'angles').split(' ') es.setpos(userid, startPos[0], startPos[1], startPos[2]) es.setang(userid, startAng[0], startAng[1], startAng[2])
def _noclip(userid, adminid, args): noclipped = players[userid]['noclipped'] if str(xa_adminnoclip_anonymous) == "0": tokens = {} tokens['admin'] = es.getplayername(adminid) tokens['user'] = es.getplayername(userid) for player in playerlib.getPlayerList(): if not noclipped: es.tell(int(player), xalanguage("noclip on", tokens, player.get("lang"))) else: es.tell(int(player), xalanguage("noclip off", tokens, player.get("lang"))) if not noclipped: players[userid]['noclipped'] = 1 es.setplayerprop(userid, "CBaseEntity.movetype", 8) else: players[userid]['noclipped'] = 0 es.setplayerprop(userid, "CBaseEntity.movetype", 2)
def setArmor(userid): """ A function which alters the maximum and current armor of a player to match their current level @PARAM userid - the userid of which to set the armor of """ player = sourcerpg.players[userid] if userid not in baseArmor: armor = 100 baseArmor[userid] = player['maxArmor'] else: armor = baseArmor[userid] level = player[skillName] level = level * int(armorIncrement) + armor player['maxArmor'] = level es.setplayerprop(userid, 'CCSPlayer.m_ArmorValue', level)
def _select_player(userid, choice, popupid): command = admins[userid]['command'] if command.startswith('weapon_') or command.startswith('item_'): if 'vest' not in command: if str(admingive_stripfirst) == '1': if command.replace('weapon_','') in pistols: secondary = playerlib.getPlayer(choice).get('secondary') if secondary: RemoveWeapon(choice, secondary) elif command.replace('weapon_','') in (list(shotguns) + list(smgs) + list(rifles) + list(snipers) + ['m249']): primary = playerlib.getPlayer(choice).get('primary') if primary: RemoveWeapon(choice, primary) gamethread.delayed(0.1, es.server.queuecmd, 'es_xgive %s %s'%(choice, command)) else: if 'helm' in command: es.setplayerprop(choice, 'CCSPlayer.m_bHasHelmet', 1) es.setplayerprop(choice, 'CCSPlayer.m_ArmorValue', 100) if str(admingive_anonymous) == '0': tokens = {} tokens['admin'] = es.getplayername(userid) tokens['user'] = es.getplayername(choice) for myplayer in playerlib.getPlayerList('#human'): tokens['item'] = '#greena #lightgreen' + str(xalanguage(command.replace('weapon_','').replace('item_',''), lang=myplayer.get("lang"))) es.tell(int(myplayer), '#multi', xalanguage('admin give', tokens, myplayer.get("lang"))) elif command.startswith('health_'): if str(admingive_anonymous) == '0': tokens = {} tokens['admin'] = es.getplayername(userid) tokens['user'] = es.getplayername(choice) health = command.replace('health_','') c = '' while len(health) > 3: c = ',' + health[-3:] health = health[0:-3] c = health + c tokens['item'] = '#green' + c + ' #lightgreenhealth' for myplayer in playerlib.getPlayerList('#human'): es.tell(int(myplayer), '#multi', xalanguage('admin give', tokens, myplayer.get("lang"))) es.setplayerprop(choice, 'CBasePlayer.m_iHealth', es.getplayerprop(choice, 'CBasePlayer.m_iHealth') + int(command.replace('health_',''))) elif command.startswith('cash_'): if str(admingive_anonymous) == '0': tokens = {} tokens['admin'] = es.getplayername(userid) tokens['user'] = es.getplayername(choice) cash = command.replace('cash_','') c = '' while len(cash) > 3: c = ',' + cash[-3:] cash = cash[0:-3] c = '$' + cash + c tokens['item'] = '#green' + c for myplayer in playerlib.getPlayerList('#human'): es.tell(int(myplayer), '#multi', xalanguage('admin give', tokens, myplayer.get("lang"))) es.setplayerprop(choice, 'CCSPlayer.m_iAccount', es.getplayerprop(choice, 'CCSPlayer.m_iAccount') + int(command.replace('cash_','')))
def player_death(ev): userid = int(ev['userid']) if not userid in players: players[userid] = {} players[userid]['gimped'] = 0 players[userid]['timebombed'] = 0 players[userid]['freezebombed'] = 0 players[userid]['firebombed'] = 0 players[userid]['noclipped'] = 0 players[userid]['beaconed'] = 0 players[userid]['drugged'] = 0 players[userid]['blind'] = 0 gamethread.cancelDelayed('beacon_%s'%userid) gamethread.cancelDelayed('timebomb_%s'%userid) gamethread.cancelDelayed('freezebomb_%s'%userid) gamethread.cancelDelayed('firebomb_%s'%userid) es.setplayerprop(userid, "CBaseEntity.movetype", 2) es.setplayerprop(userid, 'CBasePlayer.m_iDefaultFOV', 90)
def setSpeed(userid): """ A function which alters the maximum and current speed of a player to match their current level @PARAM userid - the userid of which to set the speed of """ player = sourcerpg.players[userid] if player is None: return level = player[skillName] if level > maxLevel: level = int(maxLevel) if level: eachSegment = (float(maxSpeed) - player['maxSpeed']) / maxLevel level = level * eachSegment + player['maxSpeed'] player['maxSpeed'] = level es.setplayerprop(userid, 'CBasePlayer.localdata.m_flLaggedMovementValue', level)
def _punishment_slap(userid, adminid, args, force): if len(args) > 1: health = args[1] else: health = xa_slap_to_damage if str(xa_adminslap_anonymous) == '0' and not force: tokens = {} tokens['admin'] = es.getplayername(adminid) tokens['user'] = es.getplayername(userid) tokens['health'] = str(health) for user in playerlib.getPlayerList(): es.tell(int(user), xalanguage("admin slap", tokens, user.get("lang"))) player = playerlib.getPlayer(userid) player.set('health', int(health)) es.emitsound('player', userid, 'player/damage2.wav', '1.0', '0.5') es.setplayerprop(userid, 'CCSPlayer.baseclass.localdata.m_vecBaseVelocity', '%s,%s,%s'%(random.randint(-255, 255), random.randint(-255, 255), random.randint(-100, 255))) if player.get('health') <= 0: player.kill()
def round_end(ev): for userid in es.getUseridList(): if not es.getplayerprop(userid, 'CBasePlayer.pl.deadflag'): if not players.has_key(userid): player_activate({'userid':userid}) players[userid]['timebombed'] = 0 players[userid]['freezebombed'] = 0 players[userid]['firebombed'] = 0 players[userid]['noclipped'] = 0 players[userid]['beaconed'] = 0 players[userid]['drugged'] = 0 players[userid]['blind'] = 0 gamethread.cancelDelayed('beacon_%s'%userid) gamethread.cancelDelayed('timebomb_%s'%userid) gamethread.cancelDelayed('freezebomb_%s'%userid) gamethread.cancelDelayed('firebomb_%s'%userid) es.setplayerprop(userid, "CBaseEntity.movetype", 2) es.setplayerprop(userid, 'CBasePlayer.m_iDefaultFOV', 90)
def push(self, horizontal, vertical, vertical_override=False): """Forcefully move the player in a given direction. Keyword Arguments: horizontal - the horizontal component value to move the player. vertical - the vertical component value to move the player. vertical_override (Keyword Default: False) - whether or not the vertical value should take precedence in calculating the vector to move the player through. """ x, y, z = _get_vector(self.user_ID) horizontal_x = float(horizontal * x) horizontal_y = float(horizontal * y) if not vertical_override: vertical_z = 0 else: vertical_z = vertical es.setplayerprop(self.user_ID, "CBasePlayer.localdata.m_vecBaseVelocity", "%f,%f,%f" %(horizontal_x, horizontal_y, vertical_z))
def player_death(ev): userid = int(ev['userid']) attacker = int(ev['attacker']) headshot = bool(ev['headshot']) weapon = str(ev['weapon']) steamid = getplayerid(userid) attackersteamid = getplayerid(attacker) es.setplayerprop(attacker, _moneyprop, es.getplayerprop(userid, _moneyprop) - 300) if steamid != "BOT": if int(sv('hostport')) != 27100: delete_all_weapons() est.spawn("#a") es.set("score", 0) es.set("combo", 0) if attacker > 0 and attacker != userid: if attackersteamid != "BOT": combo, score = int(sv('combo')), int(sv('score')) gamethread.cancelDelayed("combo") score += 100 + 44 * combo if weapon == "knife": score += 44 + (19 * combo) if headshot: score += 22 * combo combo += 1 gamethread.delayedname(4.4, "combo", es.set, ("combo", 0)) es.set("combo", combo) es.set("score", score) refresh_hudhint() gore = bool(es.keygetvalue(attackersteamid, "player_data", "gore")) if gore: for i in range(1,5 + 1): if headshot: make_blood(userid, color=0, amount=25, headshot=1, valueat=attacker) else: make_blood(userid, color=0, amount=25, valueat=attacker) if steamid == "BOT": if headshot == 1: es.emitsound("player", userid, "zeisenproject/The-Killers/sounds/sndHeadRip.wav", 1.0, 1.0)
def giveObject(adminid, userid): command = admins[adminid]['command'] if command.startswith(('health_', 'cash_')): prop = 'CBasePlayer.m_iHealth' if command.startswith('health_') else 'CCSPlayer.m_iAccount' amount = int(command.replace('health_', '').replace('cash_', '')) currentAmount = es.getplayerprop(userid, prop) es.setplayerprop(userid, prop, currentAmount + amount) # issue #70 :: value formatting error strInt = str(amount) thousands = [] while strInt: thousands.append(strInt[-3:]) strInt = strInt[:-3] formattedAmount = ",".join(reversed(thousands)) tokens = {} tokens['admin'] = es.getplayername(adminid) tokens['user'] = es.getplayername(userid) tokens['item'] = '#green%s #lightgreen%s' % (formattedAmount, 'cash' if command.startswith('cash_') else 'health') for tellplayer in playerlib.getPlayerList('#human'): es.tell(int(tellplayer), '#multi', xalanguage('admin give', tokens, tellplayer.get("lang"))) xaadmingive.logging.log("has given player %s %s" % (tokens['user'], tokens['item']), adminid, True) else: weaponName = _remove_prefix(command) fullName = _prepend_prefix(command) if int(admingive_stripfirst) == 1: if fullName in weaponlib.getWeaponNameList('#secondary'): weapon = playerlib.getPlayer(userid).get('secondary') else: weapon = playerlib.getPlayer(userid).get('primary') if weapon: _remove_weapon(userid, weapon) es.delayed(0.1, 'es_xgive %s %s' % (userid, fullName)) if str(admingive_anonymous) == '0': tokens = {} tokens['admin'] = es.getplayername(adminid) tokens['user'] = es.getplayername(userid) for tellplayer in playerlib.getPlayerList('#human'): tokens['item'] = '#greena #lightgreen%s' % weaponName es.tell(int(tellplayer), '#multi', xalanguage('admin give', tokens, tellplayer.get("lang"))) xaadmingive.logging.log("has given player %s %s" % (tokens['user'], tokens['item']), adminid, True)
def _punishment_slap(userid, adminid, args, force): if len(args) > 1: health = args[1] else: health = xa_slap_to_damage if str(xa_adminslap_anonymous) == '0' and not force: tokens = {} tokens['admin'] = es.getplayername(adminid) tokens['user'] = es.getplayername(userid) tokens['health'] = str(health) for user in playerlib.getPlayerList(): es.tell(int(user), xalanguage("admin slap", tokens, user.get("lang"))) player = playerlib.getPlayer(userid) player.set('health', int(health)) es.emitsound('player', userid, 'player/damage2.wav', '1.0', '0.5') es.setplayerprop( userid, 'CCSPlayer.baseclass.localdata.m_vecBaseVelocity', '%s,%s,%s' % (random.randint(-255, 255), random.randint( -255, 255), random.randint(-100, 255))) if player.get('health') <= 0: player.kill()
def stageMenu_select(userid, choice, popupid): if (es.getplayerteam(userid) == 1): return if (userid in started): started.remove(userid) for a in range(1,26): if (choice == '%s' % a): entities = es.createentitylist('info_teleport_destination') for b in entities: if (es.entitygetvalue(b, 'targetname') == "timer_stage%s" % a): x = es.getplayerprop(userid, "CBasePlayer.localdata.m_vecVelocity[0]") * -1 / 2 y = es.getplayerprop(userid, "CBasePlayer.localdata.m_vecVelocity[1]") * -1 / 2 z = es.getplayerprop(userid, "CBasePlayer.localdata.m_vecVelocity[2]") * -1 / 2 es.setplayerprop(userid, "CBasePlayer.localdata.m_vecBaseVelocity", es.createvectorstring(x, y, z)) gamethread.delayed(0.01, es.setplayerprop, (userid, "CBasePlayer.localdata.m_vecBaseVelocity", es.createvectorstring(x, y, z))) startPos = es.entitygetvalue(b, 'origin').split(' ') startAng = es.entitygetvalue(b, 'angles').split(' ') es.setpos(userid, startPos[0], startPos[1], startPos[2]) es.setang(userid, startAng[0], startAng[1], startAng[2]) if (int(choice) > 7): gamethread.delayed(0.5, stageMenu.sendPage, (userid, (math.ceil(float(choice) / float(7))))) else: gamethread.delayed(0.5, stageMenu.send, (userid))
def player_jump(event_var): """ Executed when a player jumps. Get the level and set their velecity to a greater amount. """ userid = event_var['userid'] player = sourcerpg.players[userid] level = player[skillName] if level: """ Acqure their current vectors """ horizontalVector = es.getplayerprop( userid, 'CBasePlayer.localdata.m_vecVelocity[0]') verticalVector = es.getplayerprop( userid, 'CBasePlayer.localdata.m_vecVelocity[1]') """ Multiply them by the level then by a quater so it's not such a huge difference """ horizontalVector = (level * horizontalVector) * 0.25 verticalVector = (level * verticalVector) * 0.25 """ Create a string vector which is used by valve """ vector = "%s,%s,0" % (horizontalVector, verticalVector) """ Assign the new vector to the players velocity """ es.setplayerprop(userid, 'CBasePlayer.localdata.m_vecBaseVelocity', vector)
def set_boost(userid, cp): steamid = es.getplayersteamid(userid) if cp == 0: client[steamid]["save_speed_stack"] += 1 myNewVector2 = es.createvectorstring(client[steamid]['save_speed'][0], client[steamid]['save_speed'][1], client[steamid]['save_speed'][2]) # es.setplayerprop(userid, "CBasePlayer.localdata.m_vecBaseVelocity", myNewVector) es.setplayerprop(userid, "CBasePlayer.localdata.m_vecBaseVelocity", myNewVector2) if client[steamid]["save_speed_stack"] > 1: esc.tell(userid, "#124,252,0[ Trikz] #245,0,61Speed has now been stacked (multiplier X%s" % client[steamid]["save_speed_stack"]) client[steamid]["save_speed_stack"] -= 1 else: client[steamid]["save_speed_stack_2"] += 1 myNewVector2 = es.createvectorstring(client[steamid]['save_speed_2'][0], client[steamid]['save_speed_2'][1], client[steamid]['save_speed_2'][2]) # es.setplayerprop(userid, "CBasePlayer.localdata.m_vecBaseVelocity", myNewVector) es.setplayerprop(userid, "CBasePlayer.localdata.m_vecBaseVelocity", myNewVector2) if client[steamid]["save_speed_stack_2"] > 1: esc.tell(userid, "#124,252,0[ Trikz] #245,0,61Speed has now been stacked (multiplier X%s" % client[steamid]["save_speed_stack"]) client[steamid]["save_speed_stack_2"] -= 1
def pushto(users, location, force): '''Push a player to the given location...''' # Get the given Vector... vector = vecmath.Vector(location) # Loop through all matching players... for userid in _get_matching_players(users): # Is the player dead? if es.getplayerprop(userid, 'CBasePlayer.pl.deadflag'): # Don't go further... continue # Get the vector from the player location... vector -= vecmath.Vector(es.getplayerlocation(userid)) # Multiply the force... vector *= float(force) # Push the player... es.setplayerprop(userid, 'CBasePlayer.localdata.m_vecBaseVelocity', es.createvectorstring(*vector))
def healTeamates(self): """ This is the actual function which will get the current level, and loop through all team players and if their positions are within range increment their armor / health. """ x, y, z = es.getplayerlocation(self.userid) team = es.getplayerteam(self.userid) player = sourcerpg.players[self.userid] if team not in (2, 3): return if player is not None: level = player[skillName] if level: """ The user is at least level one in the medic skill """ distance = (int(minDistance) + (level - 1) * float(distanceInc)) healing = int(healingInc) * level armor = 0 for teamPlayer in filter( lambda x: es.getplayerteam(x) == team and not es. getplayerprop(x, 'CBasePlayer.pl.deadflag'), es.getUseridList()): """ Loop through all the living players on their team """ xx, yy, zz = es.getplayerlocation(teamPlayer) if ((x - xx)**2 + (y - yy)**2 + (z - zz)**2)**0.5 <= distance: health = es.getplayerprop(teamPlayer, 'CBasePlayer.m_iHealth') sourcerpgPlayer = sourcerpg.players[teamPlayer] if health < sourcerpgPlayer['maxHealth']: if health + healing > sourcerpgPlayer['maxHealth']: armor = sourcerpgPlayer[ 'maxHealth'] - health - healing es.setplayerprop(teamPlayer, 'CBasePlayer.m_iHealth', sourcerpgPlayer['maxHealth']) else: es.setplayerprop(teamPlayer, 'CBasePlayer.m_iHealth', healing + health) else: armor = healing if armor and self.gameName == "cstrike": """ if we're playing CSS and we have armor to increment, do the task """ maxArmor = sourcerpgPlayer['maxArmor'] currentArmor = es.getplayerprop( teamPlayer, 'CCSPlayer.m_ArmorValue') currentArmor += armor if currentArmor > maxArmor: currentArmor = maxArmor es.setplayerprop(teamPlayer, 'CCSPlayer.m_ArmorValue', currentArmor)
def player_spawn(ev): PlayerP = playerlib.getPlayer(ev['userid']) if (ev['es_userteam'] == "2"): es.setplayerprop(ev['userid'], "CBasePlayer.m_iHealth", 4000) es.setplayerprop(ev['userid'], "CBasePlayer.localdata.m_flLaggedMovementValue", 1.2) es.server.queuecmd("es_xgive %s %s" % (ev['userid'], "player_weaponstrip")) es.server.queuecmd("es_xfire %s player_weaponstrip strip" % (ev['userid'])) es.server.queuecmd("es_xfire %s player_weaponstrip kill" % (ev['userid'])) es.server.queuecmd("es_xgive %s %s" % (ev['userid'], "weapon_knife")) if (ev['es_userteam'] == "3"): es.setplayerprop(ev['userid'], "CBasePlayer.m_iHealth", 100) es.cexec(ev['userid'], "play vo/npc/male01/zombies01.wav") ammo(ev['userid'])
def _player_spawn(ev): userid = int(ev['userid']) es.cexec(userid, 'r_screenoverlay off') es.setplayerprop(userid, 'CBasePlayer.m_iDefaultFOV', 90) es.setplayerprop(userid, 'CBasePlayer.m_iFOV', 90)
def _select_target(userid, choice, popupid): if not admins.has_key(userid): return if choice == "player": giveplayermenu = popuplib.construct("giveplayermenu", "players", "#alive") giveplayermenu.settitle(xalanguage["choose player"]) giveplayermenu.menuselectfb = _select_player giveplayermenu.send(userid) else: if choice == "team3": playerlist = filter(lambda x: es.getplayerteam(x) == 3, es.getUseridList()) elif choice == "team2": playerlist = filter(lambda x: es.getplayerteam(x) == 2, es.getUseridList()) elif choice == "bots": playerlist = filter(lambda x: es.isbot(x), es.getUseridList()) elif choice == "all": playerlist = es.getUseridList() playerlist = filter( lambda x: not es.getplayerprop(x, 'CBasePlayer.pl.deadflag'), playerlist) for player in playerlist: command = admins[userid]['command'] if command.startswith('weapon_') or command.startswith('item_'): if str(admingive_anonymous) == '0': tokens = {} tokens['admin'] = es.getplayername(userid) tokens['user'] = es.getplayername(player) for myplayer in playerlib.getPlayerList('#human'): tokens['item'] = '#greena #lightgreen' + str( xalanguage(command.replace('weapon_', '').replace( 'item_', ''), lang=myplayer.get("lang"))) es.tell( int(myplayer), '#multi', xalanguage('admin give', tokens, myplayer.get("lang"))) if 'vest' not in command: if str(admingive_stripfirst) == '1': if command.replace('weapon_', '') in pistols: secondary = playerlib.getPlayer(player).get( 'secondary') if secondary: RemoveWeapon(player, secondary) elif command.replace( 'weapon_', '') in (list(shotguns) + list(smgs) + list(rifles) + list(snipers) + ['m249']): primary = playerlib.getPlayer(player).get( 'primary') if primary: RemoveWeapon(player, primary) gamethread.delayed(0.1, es.server.queuecmd, 'es_xgive %s %s' % (player, command)) else: if 'helm' in command: es.setplayerprop(player, 'CCSPlayer.m_bHasHelmet', 1) es.setplayerprop(player, 'CCSPlayer.m_ArmorValue', 100) elif command.startswith('health_'): if str(admingive_anonymous) == '0': tokens = {} tokens['admin'] = es.getplayername(userid) tokens['user'] = es.getplayername(player) health = command.replace('health_', '') c = '' while len(health) > 3: c = ',' + health[-3:] health = health[0:-3] c = health + c tokens['item'] = '#green' + c + ' #lightgreenhealth' for myplayer in playerlib.getPlayerList('#human'): es.tell( int(myplayer), '#multi', xalanguage('admin give', tokens, myplayer.get("lang"))) es.setplayerprop( player, 'CBasePlayer.m_iHealth', es.getplayerprop(player, 'CBasePlayer.m_iHealth') + int(command.replace('health_', ''))) elif command.startswith('cash_'): if str(admingive_anonymous) == '0': tokens = {} tokens['admin'] = es.getplayername(userid) tokens['user'] = es.getplayername(player) cash = command.replace('cash_', '') c = '' while len(cash) > 3: c = ',' + cash[-3:] cash = cash[0:-3] c = '$' + cash + c tokens['item'] = '#green' + c for myplayer in playerlib.getPlayerList('#human'): es.tell( int(myplayer), '#multi', xalanguage('admin give', tokens, myplayer.get("lang"))) es.setplayerprop( player, 'CCSPlayer.m_iAccount', es.getplayerprop(player, 'CCSPlayer.m_iAccount') + int(command.replace('cash_', '')))
def rpg_respawn(userid): if allowed: es.setplayerprop(userid, 'CCSPlayer.m_iPlayerState', 0) es.setplayerprop(userid, 'CCSPlayer.baseclass.m_lifeState', 512) es.server.queuecmd('es_spawnplayer %s' % userid)
def _select_player(userid, choice, popupid): command = admins[userid]['command'] if command.startswith('weapon_') or command.startswith('item_'): if 'vest' not in command: if str(admingive_stripfirst) == '1': if command.replace('weapon_', '') in pistols: secondary = playerlib.getPlayer(choice).get('secondary') if secondary: RemoveWeapon(choice, secondary) elif command.replace('weapon_', '') in (list(shotguns) + list(smgs) + list(rifles) + list(snipers) + ['m249']): primary = playerlib.getPlayer(choice).get('primary') if primary: RemoveWeapon(choice, primary) gamethread.delayed(0.1, es.server.queuecmd, 'es_xgive %s %s' % (choice, command)) else: if 'helm' in command: es.setplayerprop(choice, 'CCSPlayer.m_bHasHelmet', 1) es.setplayerprop(choice, 'CCSPlayer.m_ArmorValue', 100) if str(admingive_anonymous) == '0': tokens = {} tokens['admin'] = es.getplayername(userid) tokens['user'] = es.getplayername(choice) for myplayer in playerlib.getPlayerList('#human'): tokens['item'] = '#greena #lightgreen' + str( xalanguage(command.replace('weapon_', '').replace( 'item_', ''), lang=myplayer.get("lang"))) es.tell(int(myplayer), '#multi', xalanguage('admin give', tokens, myplayer.get("lang"))) elif command.startswith('health_'): if str(admingive_anonymous) == '0': tokens = {} tokens['admin'] = es.getplayername(userid) tokens['user'] = es.getplayername(choice) health = command.replace('health_', '') c = '' while len(health) > 3: c = ',' + health[-3:] health = health[0:-3] c = health + c tokens['item'] = '#green' + c + ' #lightgreenhealth' for myplayer in playerlib.getPlayerList('#human'): es.tell(int(myplayer), '#multi', xalanguage('admin give', tokens, myplayer.get("lang"))) es.setplayerprop( choice, 'CBasePlayer.m_iHealth', es.getplayerprop(choice, 'CBasePlayer.m_iHealth') + int(command.replace('health_', ''))) elif command.startswith('cash_'): if str(admingive_anonymous) == '0': tokens = {} tokens['admin'] = es.getplayername(userid) tokens['user'] = es.getplayername(choice) cash = command.replace('cash_', '') c = '' while len(cash) > 3: c = ',' + cash[-3:] cash = cash[0:-3] c = '$' + cash + c tokens['item'] = '#green' + c for myplayer in playerlib.getPlayerList('#human'): es.tell(int(myplayer), '#multi', xalanguage('admin give', tokens, myplayer.get("lang"))) es.setplayerprop( choice, 'CCSPlayer.m_iAccount', es.getplayerprop(choice, 'CCSPlayer.m_iAccount') + int(command.replace('cash_', '')))
def cp_menu_select(userid, choice, popupid): steamid = es.getplayersteamid(userid) velocity_x = float(es.getplayerprop(userid, 'CBasePlayer.localdata.m_vecVelocity[0]')) velocity_y = float(es.getplayerprop(userid, 'CBasePlayer.localdata.m_vecVelocity[1]')) velocity_z = float(es.getplayerprop(userid, 'CBasePlayer.localdata.m_vecVelocity[2]')) timer = es.import_addon("queue_timer/plugins/timer") if timer.CheckPartner(userid): timer_id = timer.player[steamid]["timer_id"] state = timer.timer[timer_id]["state"] if int(choice) == 1: if timer.CheckPartner(userid): cp_menu(userid) else: player = playerlib.getPlayer(userid) client[steamid]["view_angles"] = player.getViewAngle() view_angles = client[steamid]["view_angles"] client[steamid]['snapshot_1'] = es.getplayerlocation(userid) client[steamid]['save_speed'] = (velocity_x, velocity_y, velocity_z) esc.tell(userid, '#124,252,0[ Trikz] #snowYou have saved your #yellow1st #245,61,0checkpoint') cp_menu(userid) if int(choice) == 2: if timer.CheckPartner(userid): cp_menu(userid) else: if client[steamid]['snapshot_1'] != (0, 0, 0): current_location = es.getplayerlocation(userid) location = client[steamid]['snapshot_1'] distance = vecmath.distance(current_location, location) player = playerlib.getPlayer(userid) view_angles = client[steamid]["view_angles"] timer.TimerSolo_Stop(userid) client[steamid]["time"] = time.time() player.setColor(255, 255, 255, 255) player.noblock(0) if client[steamid]["stop_speed"] == "On": es.server.queuecmd('es_setpos %s %s %s %s' % (userid, location[0], location[1], location[2])) velocity_x = float(es.getplayerprop(userid, 'CBasePlayer.localdata.m_vecVelocity[0]')) velocity_y = float(es.getplayerprop(userid, 'CBasePlayer.localdata.m_vecVelocity[1]')) velocity_z = float(es.getplayerprop(userid, 'CBasePlayer.localdata.m_vecVelocity[2]')) myNewVector2 = es.createvectorstring(-velocity_x, -velocity_y, -velocity_z) es.setplayerprop(userid, "CBasePlayer.localdata.m_vecBaseVelocity", myNewVector2) gamethread.delayed(0.025, set_boost, args=(userid, 0)) else: es.server.queuecmd('es_setpos %s %s %s %s' % (userid, location[0], location[1], location[2])) velocity_x = float(es.getplayerprop(userid, 'CBasePlayer.localdata.m_vecVelocity[0]')) velocity_y = float(es.getplayerprop(userid, 'CBasePlayer.localdata.m_vecVelocity[1]')) velocity_z = float(es.getplayerprop(userid, 'CBasePlayer.localdata.m_vecVelocity[2]')) myNewVector2 = es.createvectorstring(-velocity_x, -velocity_y, -velocity_z) es.setplayerprop(userid, "CBasePlayer.localdata.m_vecBaseVelocity", myNewVector2) if client[steamid]["save_angles"] == "On": es.server.queuecmd('es_xsetang %s %s %s %s' % ( userid, str(view_angles[0]), str(view_angles[1]), str(view_angles[2]))) else: esc.tell(userid, '#124,252,0[ Trikz] #245,0,61You have not set your 1st checkpoint.') cp_menu(userid) if int(choice) == 3: if timer.CheckPartner(userid): cp_menu(userid) else: player = playerlib.getPlayer(userid) client[steamid]["view_angles_2"] = player.getViewAngle() client[steamid]['snapshot_2'] = es.getplayerlocation(userid) client[steamid]['save_speed_2'] = (velocity_x, velocity_y, velocity_z) esc.tell(userid, '#124,252,0[ Trikz] #snowYou have saved your #yellow2nd #245,61,0checkpoint') cp_menu(userid) if int(choice) == 4: if timer.CheckPartner(userid): cp_menu(userid) else: if client[steamid]['snapshot_2'] != (0, 0, 0): current_location = es.getplayerlocation(userid) location = client[steamid]['snapshot_2'] distance = vecmath.distance(current_location, location) player = playerlib.getPlayer(userid) view_angles = client[steamid]["view_angles_2"] client[steamid]["time"] = time.time() timer.TimerSolo_Stop(userid) player.setColor(255, 255, 255, 255) player.noblock(0) if client[steamid]["stop_speed"] == "On": es.server.queuecmd('es_setpos %s %s %s %s' % (userid, location[0], location[1], location[2])) velocity_x = float(es.getplayerprop(userid, 'CBasePlayer.localdata.m_vecVelocity[0]')) velocity_y = float(es.getplayerprop(userid, 'CBasePlayer.localdata.m_vecVelocity[1]')) velocity_z = float(es.getplayerprop(userid, 'CBasePlayer.localdata.m_vecVelocity[2]')) myNewVector2 = es.createvectorstring(-velocity_x, -velocity_y, -velocity_z) es.setplayerprop(userid, "CBasePlayer.localdata.m_vecBaseVelocity", myNewVector2) gamethread.delayed(0.025, set_boost, args=(userid, 1)) else: es.server.queuecmd('es_setpos %s %s %s %s' % (userid, location[0], location[1], location[2])) velocity_x = float(es.getplayerprop(userid, 'CBasePlayer.localdata.m_vecVelocity[0]')) velocity_y = float(es.getplayerprop(userid, 'CBasePlayer.localdata.m_vecVelocity[1]')) velocity_z = float(es.getplayerprop(userid, 'CBasePlayer.localdata.m_vecVelocity[2]')) myNewVector2 = es.createvectorstring(-velocity_x, -velocity_y, -velocity_z) es.setplayerprop(userid, "CBasePlayer.localdata.m_vecBaseVelocity", myNewVector2) if client[steamid]["save_angles"] == "On": es.server.insertcmd('es_xsetang %s %s %s %s' % ( userid, str(view_angles[0]), str(view_angles[1]), str(view_angles[2]))) else: esc.tell(userid, '#124,252,0[ Trikz] #245,0,61You have not set your 2nd checkpoint.') cp_menu(userid) if int(choice) == 5: if client[steamid]['stop_speed'] == "Off": esc.tell(userid, '#124,252,0[ Trikz] #snowYour speed will now be restored when teleporting!') client[steamid]['stop_speed'] = "On" cp_menu(userid) else: esc.tell(userid, '#124,252,0[ Trikz] #snowYou will not save speed anymore!') client[steamid]['stop_speed'] = "Off" cp_menu(userid) if int(choice) == 6: if client[steamid]['save_angles'] == "Off": esc.tell(userid, '#124,252,0[ Trikz] #snowYou will now save ur angles!') client[steamid]['save_angles'] = "On" cp_menu(userid) else: esc.tell(userid, '#124,252,0[ Trikz] #snowYou angles wont be saved!') client[steamid]['save_angles'] = "Off" cp_menu(userid) if int(choice) == 8: trikz_menu(userid)
def player_say(event_var): """ Executed when a player talks. Run the chat commands """ message = event_var['text'].strip() userid = int(event_var['userid']) if message == "!surftimer": """ Admin menu """ if isAuthed(userid): adminPopup.send(userid) elif message.startswith("!wr"): """ Display world record time to all players """ sortedList = mk_sortDict(str(currentMap)) es.tell( userid, "#multi", "#green[Surf Timer] #default- #lightgreen%s holds the world record with time #default%s#lightgreen." % (mapDicts[str(currentMap)][sortedList[0][0]]["name"], formatTime(sortedList[0][1]))) elif message.startswith("!top"): """ Display a popup with all times for that map, or if a map was present as an argument, display for that map. !top // display current map records !top <map name> // displays <map name>'s current records """ if message.count(" "): mapName = " ".join(message.split()[1:]) else: mapName = str(currentMap) if mapName not in mapDicts: es.tell( userid, "#multi", "#green[Surf Timer] #default- #lightgreenSorry, we cannot find %s on the server." % mapName) return if "startpos" not in mapDicts[mapName]: return if "endpos" not in mapDicts[mapName]: return topMenu = popuplib.easymenu("topMenu%s" % userid, "_popup_choice", None) topMenu.settitle("[Map Records : %s]" % mapName) sortedList = mk_sortDict(mapName) if sortedList: lx = 1 for top in sortedList: topMenu.addoption( 'an', "Rank " + str(lx) + ": " + mapDicts[mapName][top[0]]["name"] + " " + formatTime(mapDicts[mapName][top[0]]["time"])) lx += 1 else: topMenu.addoption('an', "[No places recorded]") topMenu.send(userid) elif message.startswith("!pr"): """ Similar to a rank command. Tell the user their time or another person's time on that current map. !pr // displays their time for that map !pr <userid/name/steamid> // displays the user's time for that map TODO: Add in an additional [map] argument and test for the last argument and see if it's a dict item. If so, then they want information for that map. """ mapName = str(currentMap) if mapName not in mapDicts: return if "startpos" not in mapDicts[mapName]: return if "endpos" not in mapDicts[mapName]: return if message.count(" "): message = " ".join(message.split()[1:]) target = es.getuserid(message) else: target = userid if not target: es.tell( userid, "#multi", "#green[Surf Timer] #default- #lightgreenSorry, we cannot find %s on the server." % message) return steamid = es.getplayersteamid(target) (_pos, _len) = mk_sortDictIndex(mapName, steamid) for player in es.getUseridList(): if (_pos > 0): sortedList = mk_sortDict(str(currentMap)) dictObject = mapDicts[mapName][steamid] es.tell( player, "#multi", "#green[Surf Timer] #default- #lightgreen%s is ranked #default%s/%s #lightgreenwith time #default%s #lightgreen(#default+%s#lightgreen)." % (dictObject['name'], _pos, _len, formatTime(dictObject['time']), formatTime(dictObject['time'] - sortedList[0][1]))) else: es.tell( player, "#multi", "#green[Surf Timer] #default- #lightgreen%s has not yet completed this map." % es.getplayername(target)) elif message.startswith("!stage"): """ Opens a stage selection menu """ mapName = str(currentMap) global stageMenu stageMenu = popuplib.easymenu('stageMenu', '_popup_choice', stageMenu_select) stageMenu.settitle("[Stage Menu : %s]" % (mapName)) entities = es.createentitylist('info_teleport_destination') """ Create Stage Menu """ stages = 0 for a in range(1, 26): for b in entities: if (es.entitygetvalue(b, 'targetname') == "timer_stage%s" % a): stageMenu.addoption('%s' % a, "Stage %s" % a) stages += 1 if (stages > 1): stageMenu.send(userid) if (userid in started): es.tell( userid, "#green", "Teleporting to a stage while the timer is active will clear your time" ) else: es.tell( userid, "#multi", "#green[Surf Timer] #default- #lightgreenThis is not a staged map." ) elif message.startswith("!bonus"): """ Opens a bonus selection menu """ mapName = str(currentMap) global bonusMenu bonusMenu = popuplib.easymenu('bonusMenu', '_popup_choice', bonusMenu_select) bonusMenu.settitle("[Bonus Menu : %s]" % (mapName)) entities = es.createentitylist('info_teleport_destination') bonuses = 0 """ Set up bonus menu and count the number of bonuses (up to 3 bonuses) """ for a in range(1, 4): for b in entities: if (es.entitygetvalue(b, 'targetname') == "timer_bonus%s" % a): bonuses += 1 bonusMenu.addoption('%s' % a, "Bonus %s" % a) if (bonuses > 1): bonusMenu.send(userid) elif (bonuses == 1): entities = es.createentitylist('info_teleport_destination') for i in entities: if (es.entitygetvalue(i, 'targetname') == "timer_bonus1"): x = es.getplayerprop( userid, "CBasePlayer.localdata.m_vecVelocity[0]") * -1 / 2 y = es.getplayerprop( userid, "CBasePlayer.localdata.m_vecVelocity[1]") * -1 / 2 z = es.getplayerprop( userid, "CBasePlayer.localdata.m_vecVelocity[2]") * -1 / 2 es.setplayerprop( userid, "CBasePlayer.localdata.m_vecBaseVelocity", es.createvectorstring(x, y, z)) gamethread.delayed( 0.01, es.setplayerprop, (userid, "CBasePlayer.localdata.m_vecBaseVelocity", es.createvectorstring(x, y, z))) startPos = es.entitygetvalue(i, 'origin').split(' ') startAng = es.entitygetvalue(i, 'angles').split(' ') es.setpos(userid, startPos[0], startPos[1], startPos[2]) es.setang(userid, startAng[0], startAng[1], startAng[2]) else: es.tell( userid, "#multi", "#green[Surf Timer] #default- #lightgreenCurrent map has no bonuses." )
def rpg_unfreeze(userid): player = playerlist[userid] es.setplayerprop(player.userid, 'CBaseAnimating.m_nHitboxSet', 0) es.setplayerprop(userid, 'CBaseEntity.movetype', 2) player.player.setColor(*player.properties['color'])
def speed(userid, value): es.setplayerprop(userid, "CBasePlayer.localdata.m_flLaggedMovementValue", value)
def unfreeze(self): """Unfreeze the player, allowing them to move again.""" es.setplayerprop(self.user_ID, "CBaseEntity.movetype", 2)
def _set_model(player, value): colour = tools.get_colour(player.index) es.setplayerprop(player.index, "CBaseEntity.m_nModelIndex", es.precachemodel("models/%s" % value)) tools.set_colour(player.index, *colour)
def player_blind(ev): if (ev['es_userteam'] == "3"): es.setplayerprop(ev['userid'], "CCSPlayer.m_flFlashDuration", "1") es.setplayerprop(ev['userid'], "CCSPlayer.m_flFlashMaxAlpha", "1")
def _set_ammo(self, value): owner = self.owner if self.owner is None: raise WeaponsError("weapon does not have an owner") return es.setplayerprop(owner.user_ID, self.weapon_type.ammo_property, value)
def sm2es_keyPress(ev): userid = ev["userid"] timer = es.import_addon("queue_timer/plugins/timer") if es.exists("userid", userid): if ev['status'] == '0': return ply = playerlib.getPlayer(userid) if ply.isdead: return velocity_x = float(es.getplayerprop(userid, 'CBasePlayer.localdata.m_vecVelocity[0]')) velocity_y = float(es.getplayerprop(userid, 'CBasePlayer.localdata.m_vecVelocity[1]')) steamid = es.getplayersteamid(userid) if ev["command"] == 'IN_MOVELEFT': if not ply.onGround() and client[steamid]["strafe_sync"] == "On": if not client[steamid]["view_angle"] == ply.viewVector(): if not client[steamid]["last_k"] == 0: if timer.CheckPartner(userid): timer_id = timer.player[steamid]["timer_id"] state = timer.timer[timer_id]["state"] if state == 2: return else: myNewVector = es.createvectorstring((velocity_x ** 0.1) * 18, (velocity_y ** 0.1) * 18) myNewVector2 = es.createvectorstring((velocity_x ** 0.1) * 18, (velocity_y ** 0.1) * 18) es.setplayerprop(userid, "CBasePlayer.localdata.m_vecBaseVelocity", myNewVector) es.setplayerprop(userid, "CBasePlayer.localdata.m_vecBaseVelocity", myNewVector2) client[steamid]["view_angle"] = ply.viewVector() client[steamid]["last_k"] = 0 else: myNewVector = es.createvectorstring((velocity_x ** 0.1) * 18, (velocity_y ** 0.1) * 18) myNewVector2 = es.createvectorstring((velocity_x ** 0.1) * 18, (velocity_y ** 0.1) * 18) es.setplayerprop(userid, "CBasePlayer.localdata.m_vecBaseVelocity", myNewVector) es.setplayerprop(userid, "CBasePlayer.localdata.m_vecBaseVelocity", myNewVector2) client[steamid]["view_angle"] = ply.viewVector() client[steamid]["last_k"] = 0 if ev['command'] == 'IN_MOVERIGHT': if not ply.onGround() and client[steamid]["strafe_sync"] == "On": if not client[steamid]["view_angle"] == ply.viewVector(): if not client[steamid]["last_k"] == 1: if timer.CheckPartner(userid): timer_id = timer.player[steamid]["timer_id"] state = timer.timer[timer_id]["state"] if state == 2: return else: myNewVector = es.createvectorstring((velocity_x ** 0.1) * 18, (velocity_y ** 0.1) * 18) myNewVector2 = es.createvectorstring((velocity_x ** 0.1) * 18, (velocity_y ** 0.1) * 18) es.setplayerprop(userid, "CBasePlayer.localdata.m_vecBaseVelocity", myNewVector) es.setplayerprop(userid, "CBasePlayer.localdata.m_vecBaseVelocity", myNewVector2) client[steamid]["view_angle"] = ply.viewVector() client[steamid]["last_k"] = 0 else: myNewVector = es.createvectorstring((velocity_x ** 0.1) * 18, (velocity_y ** 0.1) * 18) myNewVector2 = es.createvectorstring((velocity_x ** 0.1) * 18, (velocity_y ** 0.1) * 18) es.setplayerprop(userid, "CBasePlayer.localdata.m_vecBaseVelocity", myNewVector) es.setplayerprop(userid, "CBasePlayer.localdata.m_vecBaseVelocity", myNewVector2) client[steamid]["view_angle"] = ply.viewVector() client[steamid]["last_k"] = 0
def RunCmd(args): ucmd = spe.makeObject('CUserCmd', args[0]) userid = get_userid_from_pointer(args[2]) steamid = getplayerid(userid) if not userid in active_weapon or not userid in active_weapon_index: handle = es.getplayerprop(userid, "CBaseCombatCharacter.m_hActiveWeapon") index = es.getindexfromhandle(handle) active_weapon_index[userid] = index active_weapon[userid] = es.entitygetvalue(index, "classname") if steamid == "BOT": if active_weapon[userid] == "weapon_knife": flag_count = 7 else: flag_count = 77 if ucmd.buttons & IN_ATTACK or ucmd.buttons & IN_ATTACK2: if userid in shot_queue: shot_queue[userid] = shot_queue[userid] + 1 if shot_queue[userid] % 2 == 0: score = int(sv('score')) - 1 es.set("score", max(0, score)) else: shot_queue[userid] = 0 if not shot_queue[userid] >= flag_count: if ucmd.buttons & IN_ATTACK: ucmd.buttons &= ~IN_ATTACK elif ucmd.buttons & IN_ATTACK2: ucmd.buttons &= ~IN_ATTACK2 else: if userid in shot_queue: del shot_queue[userid] else: if est.isalive(userid): if ucmd.impulse % 256 == 100: ucmd.impulse = 0 if est.isalive(userid): ObserverMode = es.getplayerprop( userid, "CCSPlayer.baseclass.m_iObserverMode") if ObserverMode == 0: es.setplayerprop( userid, "CCSPlayer.baseclass.m_iObserverMode", 1) es.setplayerprop( userid, "CCSPlayer.baseclass.m_hObserverTarget", es.getplayerhandle(userid)) es.setplayerprop( userid, "CCSPlayer.baseclass.localdata.m_Local.m_bDrawViewmodel", 0) es.setplayerprop(userid, "CCSPlayer.baseclass.m_iFOV", 120) elif ObserverMode == 1: es.setplayerprop( userid, "CCSPlayer.baseclass.m_iObserverMode", 0) es.setplayerprop( userid, "CCSPlayer.baseclass.m_hObserverTarget", 0) es.setplayerprop( userid, "CCSPlayer.baseclass.localdata.m_Local.m_bDrawViewmodel", 1) es.setplayerprop(userid, "CCSPlayer.baseclass.m_iFOV", 90) if ucmd.buttons & IN_ATTACK2: ucmd.buttons &= ~IN_ATTACK2 if ucmd.buttons & IN_RELOAD: ucmd.buttons &= ~IN_RELOAD return (spe.HookAction.Continue, 0)
def player_death(ev): player = playerlist[ev['userid']] es.setplayerprop(player.userid, 'CBaseAnimating.m_nHitboxSet', 0) player.player.setColor(*player.properties['color']) gamethread.cancelDelayed('rpg_%s_%s' % (skillname, player.userid))
def pre_player_hurt(ev): userid = int(ev['userid']) attacker = int(ev['attacker']) dmg_health = int(ev['dmg_health']) hitgroup = int(ev['hitgroup']) weapon = str(ev['weapon']) steamid = getplayerid(userid) if attacker > 0: attackersteamid = getplayerid(attacker) health = es.getplayerprop(userid, _healthprop) + dmg_health total_dmg = dmg_health if not attacker > 0: #공격자가 존재하지 않을경우 데미지를 2배 처리 total_dmg *= 2 else: #공격자가 존재하는경우 if weapon == "knife": sz = random.choice([ "zeisenproject/The-Killers/sounds/sndHit.wav", "zeisenproject/The-Killers/sounds/sndHit1.wav", "zeisenproject/The-Killers/sounds/sndHit3.wav" ]) for i in range(1, 2 + 1): if i == 1: es.playsound(attacker, sz, 1.0) else: es.playsound(attacker, sz, 0.5) else: es.playsound(attacker, "zeisenproject/The-Killers/sounds/sndHit2.wav", 1.0) if hitgroup == 1: if weapon == "awp": total_dmg = 250 elif weapon == "scout": total_dmg = 165 elif weapon == "p90": total_dmg = 70 else: total_dmg = 100 else: if weapon == "knife": total_dmg = 100 else: total_dmg = 50 health -= total_dmg es.setplayerprop(userid, _healthprop, health) if attacker > 0: if steamid == "BOT" and health > 0 and attackersteamid != "BOT": gore = bool(es.keygetvalue(attackersteamid, "player_data", "gore")) if gore: if hitgroup == 1: for i in range(1, 5 + 1): make_blood(userid, color=0, amount=10, headshot=1, valueat=attacker) else: for i in range(1, 5 + 1): make_blood(userid, color=0, amount=10, headshot=0, valueat=attacker)
def setentname_cmd(args): if gamename in ['cstrike', 'dod', 'hl2mp']: userid = es.getuserid() if userid: if len(args) > 1: entity = args[0] entityname = args[1] if entity.isdigit() and entityname: player = playerlib.getPlayer(userid) playerlocation = vecmath.vector(player.getLocation()) playermovetype = es.getplayerprop(int(player), 'CBaseEntity.movetype') if gamename == 'cstrike': playerviewangles = vecmath.vector( (float( es.getplayerprop( int(player), 'CCSPlayer.m_angEyeAngles[0]')), float( es.getplayerprop( int(player), 'CCSPlayer.m_angEyeAngles[1]')), 0.0)) playerviewoffset = vecmath.vector( (float( es.getplayerprop( int(player), 'CBasePlayer.localdata.m_vecViewOffset[0]') ), float( es.getplayerprop( int(player), 'CBasePlayer.localdata.m_vecViewOffset[1]' )), float( es.getplayerprop( int(player), 'CBasePlayer.localdata.m_vecViewOffset[2]' )))) elif gamename == 'dod': playerviewangles = vecmath.vector( (float( es.getplayerprop( int(player), 'CDODPlayer.m_angEyeAngles[0]')), float( es.getplayerprop( int(player), 'CDODPlayer.m_angEyeAngles[1]')), 0.0)) playerviewoffset = vecmath.vector( (float( es.getplayerprop( int(player), 'CBasePlayer.localdata.m_vecViewOffset[0]') ), float( es.getplayerprop( int(player), 'CBasePlayer.localdata.m_vecViewOffset[1]' )), float( es.getplayerprop( int(player), 'CBasePlayer.localdata.m_vecViewOffset[2]' )))) elif gamename == 'hl2mp': playerviewangles = vecmath.vector( (float( es.getplayerprop( int(player), 'CHL2MP_Player.m_angEyeAngles[0]')), float( es.getplayerprop( int(player), 'CHL2MP_Player.m_angEyeAngles[1]')), 0.0)) playerviewoffset = vecmath.vector(( float( es.getplayerprop( int(player), 'CHL2MP_Player.baseclass.baseclass.baseclass.baseclass.m_vecViewOffset[0]' )), float( es.getplayerprop( int(player), 'CHL2MP_Player.baseclass.baseclass.baseclass.baseclass.m_vecViewOffset[1]' )), float( es.getplayerprop( int(player), 'CHL2MP_Player.baseclass.baseclass.baseclass.baseclass.m_vecViewOffset[2]' )))) playerviewvector = (vecmath.vector( vecmath.angles( (1.0, 1.0, 1.0), playerviewangles))) * 0.5 entitylocation = vecmath.vector( es.getindexprop(entity, 'CBaseEntity.m_vecOrigin')) entityviewvector = ( playerlocation - (playerviewoffset + playerviewvector)) + entitylocation player.freeze(1) player.setLocation(list(entityviewvector)) player.viewCoord(list(entitylocation)) es.entsetname(int(player), entityname) es.server.cmd('es_xsetang %s %s %s' % (int(player), playerviewangles[0], playerviewangles[1])) es.setplayerprop(int(player), 'CBaseEntity.movetype', playermovetype) player.setLocation(list(playerlocation)) else: es.dbgmsg( 0, 'setentname: Invalid target user "%s" to setentname.' % target) else: es.dbgmsg( 0, 'setentname: Not enough arguments to setentname. Syntax: setentname <entity-index#> <desired-name>' ) else: es.dbgmsg( 0, 'setentname: No userid available. Sorry, no targetname set!') else: es.dbgmsg( 0, 'setentname: Game "%s" is not supported. Sorry, no targetname set!' % gamename)
def setplayerprop(argv): es.setplayerprop(*argv)
def rpg_teleport(userid): tell(userid, 'Teleporting in %s seconds' % (rpgTeleportTime)) teleporting.add(userid) name = 'rpg_teleport_%s' % (userid) es.setplayerprop(userid, 'CBaseEntity.movetype', 0) if rpgTeleportEffects: x, y, z = es.getplayerlocation(userid) z += 40 pX, pY, pZ = teleportStore[userid].pos pZ += 40 if es.getplayerteam(userid) == 2: for i in xrange(rpgTeleportTime * 10): move = int(30 / (rpgTeleportTime * 10) * i) gamethread.delayedname( i * 0.1, name, effectlib.drawCircle, ((x, y, z), 30, 5, (1, 0, 0), (0, 1, 0), None, "materials/sprites/laser.vmt", "materials/sprites/halo01.vmt", 0.1, 10, 10, 255, 0, 0)) gamethread.delayedname( i * 0.1, name, effectlib.drawCircle, ((x, y, z + move), 30, 5, (1, 0, 0), (0, 1, 0), None, "materials/sprites/laser.vmt", "materials/sprites/halo01.vmt", 0.1, 10, 10, 255, 0, 0)) gamethread.delayedname( i * 0.1, name, effectlib.drawCircle, ((x, y, z - move), 30, 5, (1, 0, 0), (0, 1, 0), None, "materials/sprites/laser.vmt", "materials/sprites/halo01.vmt", 0.1, 10, 10, 255, 0, 0)) gamethread.delayedname( i * 0.1, name, effectlib.drawCircle, ((pX, pY, pZ), 30, 5, (1, 0, 0), (0, 1, 0), None, "materials/sprites/laser.vmt", "materials/sprites/halo01.vmt", 0.1, 10, 10, 255, 0, 0)) gamethread.delayedname( i * 0.1, name, effectlib.drawCircle, ((pX, pY, pZ + move), 30, 5, (1, 0, 0), (0, 1, 0), None, "materials/sprites/laser.vmt", "materials/sprites/halo01.vmt", 0.1, 10, 10, 255, 0, 0)) gamethread.delayedname( i * 0.1, name, effectlib.drawCircle, ((pX, pY, pZ - move), 30, 5, (1, 0, 0), (0, 1, 0), None, "materials/sprites/laser.vmt", "materials/sprites/halo01.vmt", 0.1, 10, 10, 255, 0, 0)) else: for i in xrange(rpgTeleportTime * 10): move = int(30 / (rpgTeleportTime * 10) * i) gamethread.delayedname( i * 0.1, name, effectlib.drawCircle, ((x, y, z), 30, 5, (1, 0, 0), (0, 1, 0), None, "materials/sprites/laser.vmt", "materials/sprites/halo01.vmt", 0.1, 10, 10, 0, 0, 255)) gamethread.delayedname( i * 0.1, name, effectlib.drawCircle, ((x, y, z + move), 30, 5, (1, 0, 0), (0, 1, 0), None, "materials/sprites/laser.vmt", "materials/sprites/halo01.vmt", 0.1, 10, 10, 0, 0, 255)) gamethread.delayedname( i * 0.1, name, effectlib.drawCircle, ((x, y, z - move), 30, 5, (1, 0, 0), (0, 1, 0), None, "materials/sprites/laser.vmt", "materials/sprites/halo01.vmt", 0.1, 10, 10, 0, 0, 255)) gamethread.delayedname( i * 0.1, name, effectlib.drawCircle, ((pX, pY, pZ), 30, 5, (1, 0, 0), (0, 1, 0), None, "materials/sprites/laser.vmt", "materials/sprites/halo01.vmt", 0.1, 10, 10, 0, 0, 255)) gamethread.delayedname( i * 0.1, name, effectlib.drawCircle, ((pX, pY, pZ + move), 30, 5, (1, 0, 0), (0, 1, 0), None, "materials/sprites/laser.vmt", "materials/sprites/halo01.vmt", 0.1, 10, 10, 0, 0, 255)) gamethread.delayedname( i * 0.1, name, effectlib.drawCircle, ((pX, pY, pZ - move), 30, 5, (1, 0, 0), (0, 1, 0), None, "materials/sprites/laser.vmt", "materials/sprites/halo01.vmt", 0.1, 10, 10, 0, 0, 255)) gamethread.delayedname(rpgTeleportTime, name, teleporting.remove, userid) gamethread.delayedname(rpgTeleportTime + 0.1, name, rpg_do_teleport, (userid))