def extinguish(self): """Stop the player from being on fire and taking damage from burning. """ for index in _get_flame_indexes(self): es.setindexprop(index, "CEntityFlame.m_flLifetime", 0)
def _set_mode(self, value): if self.weapon_type.weapon_mode_property is None: raise AttributeError("can't set attribute") # The property set function that will only be available if the weapon # has a SLOT_SECONDARY weapon mode and can forcefully set the mode to # be on or off. es.setindexprop(self.index, self.weapon_type.weapon_mode_property, int(value))
def _extinguish(userid): napalmlist = es.createentitylist("entityflame") handle = es.getplayerhandle(userid) for flame_entity in napalmlist: string = es.getindexprop(flame_entity, 'CEntityFlame.m_hEntAttached') if string == handle: es.setindexprop(flame_entity, 'CEntityFlame.m_flLifetime', 0) break
def Kill_InfectedClip(Userid): handle = es.getplayerhandle(Userid) List = es.createentitylist() for index in List: if "tf_weapon" in List[index]["classname"]: for item in List[index]: if "clip" in str(item).lower(): if es.getindexprop(index,'CBaseEntity.m_hOwnerEntity') == handle: es.setindexprop(index,item,0)
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 _count_down(amount, bombType, userid): if amount: es.centermsg(amount) amount -= 1 gamethread.delayedname(1, '%s_%s' % (bombType, userid), _count_down, (amount, bombType, userid)) es.emitsound('player', userid, xa_adminbomb_sound, '1.0', '0.7') r, g, b, a = str(xa_adminbomb_beaconcolor).split() location = es.getplayerlocation(userid) effectlib.drawCircle(location, 150, steps=50, model="materials/sprites/laser.vmt", seconds=0.2, width=20, endwidth=10, red=r, green=g, blue=b, brightness=a, speed=70) elif bombType == "timebomb": for index in es.createentitylist('env_explosion'): es.server.cmd('es_xremove %s' % index) es.server.cmd('es_xgive %s env_explosion' % userid) es.server.cmd('es_xfire %s env_explosion addoutput "imagnitude 300"' % userid) es.server.cmd( 'es_xfire %s env_explosion addoutput "iradiusoverride 600"' % userid) es.setindexprop(es.ServerVar('eventscripts_lastgive'), 'CBaseEntity.m_hOwnerEntity', es.getplayerhandle(userid)) es.server.cmd('es_xfire %s env_explosion explode' % userid) es.server.cmd('es_xfire %s env_explosion kill' % userid) players[userid]['timebombed'] = 0 elif bombType == "freezebomb": x, y, z = es.getplayerlocation(userid) for player in es.getUseridList(): xx, yy, zz = es.getplayerlocation(player) if (((xx - x)**2 + (yy - y)**2 + (zz - z)**2)**0.5) <= 300: player = playerlib.Player(userid) gamethread.queue(player.set, ('noclip', 1)) gamethread.queue(player.set, ('freeze', 1)) players[userid]['freezebombed'] = 0 elif bombType == "firebomb": x, y, z = es.getplayerlocation(userid) for player in es.getUseridList(): xx, yy, zz = es.getplayerlocation(player) if (((xx - x)**2 + (yy - y)**2 + (zz - z)**2)**0.5) <= 300: es.server.cmd('es_xfire %s !self ignite' % player) gamethread.delayedname(xa_adminfirebomb_duration, 'remove_fire', _extinguish, player) players[userid]['firebombed'] = 0
def Commander4(userid, args): steamid = getplayerid(userid) story = int(es.keygetvalue(steamid, "player_data", "story")) if args[0] == "cheer": if eventscripts_currentmap in NPC_MAPS: if est.isalive(userid): check = popuplib.active(userid) if check['count'] == 0: es.playsound( userid, "zeisenproject/the-killers/sounds/sndMobileopen.mp3", 1.0) cphone = popuplib.easymenu('cphonemenu_%s' % (userid), None, cphone_select) cphone.settitle("@ Cell Phone") cphone.c_stateformat[False] = "%2" if story == 1: es.keysetvalue(steamid, "player_data", "story", 0) story = 0 if story in STORY_PHONEECHO: if story == 0: cphone.addoption("전화 받기 (형)", "전화 받기 (형)") else: cphone.addoption("전화 받기 (알수없음)", "전화 받기 (알수없음)") cphone.send(userid) if steamid == "142119022": if args[0] == "!getloc": es.tell(userid, es.getplayerlocation(userid)) if args[0] == "!helpz": esc.tell(userid, "#255,255,255!make_npc 모델 이름 모션") if args[0] == "!make_npc": model = args[1] if model == "!robot": model = "props/cs_office/vending_machine" name = args[2] seq = args[3] ang = es.getplayerprop(userid, "CCSPlayer.m_angEyeAngles[1]") x, y, z = es.getplayerlocation(userid) esc.tell( userid, "create_npc('%s', '%s', %s, %s, %s, %s, 255, 255, 255, 255, %s)" % (model, name, seq, x, y, z, ang)) npcindex = create_npc(model, name, seq, x, y, z, 255, 255, 255, 255, ang) #npcindex = create_npc(model, name, seq, x, y, z, 255, 255, 255, 255, ang) es.setindexprop( npcindex, "CAI_BaseNPC.baseclass.baseclass.baseclass.baseclass.baseclass.m_CollisionGroup", 2) return True
def _punishment_extinguish(userid, adminid, args, force): if str(xa_adminburn_anonymous) == '0' and not force: tokens = {} tokens['admin'] = es.getplayername(adminid) tokens['user'] = es.getplayername(userid) for user in playerlib.getPlayerList(): es.tell(user, xalanguage("admin extinguish", tokens, user.get("lang"))) # Copied from un-released playerlib flamelist = es.createentitylist("entityflame") handle = es.getplayerhandle(userid) for flame_entity in flamelist: string = es.getindexprop(flame_entity, 'CEntityFlame.m_hEntAttached') if string == handle: es.setindexprop(flame_entity, 'CEntityFlame.m_flLifetime', 0) break
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 loadRandomPoints(userid): # Remove existing spawnpoints for tSpawn in es.getEntityIndexes('info_player_terrorist'): es.server.cmd('es_xremove %s' % tSpawn) for ctSpawn in es.getEntityIndexes('info_player_counterterrorist'): es.server.cmd('es_xremove %s' % ctSpawn) # Loop through the spawnpoints for spawn in spawnPoints: for team in ('info_player_terrorist', 'info_player_counterterrorist'): # Create the spawnpoint and get the index index = spe.getIndexOfEntity(spe.giveNamedItem(userid, team)) # Set the spawnpoint position and rotation es.setindexprop(index, 'CBaseEntity.m_vecOrigin', '%s,%s,%s' % (spawn[0], spawn[1], spawn[2])) es.setindexprop(index, 'CBaseEntity.m_angRotation', '0,%s,0' % spawn[4])
def Commander4(userid, args): steamid = getplayerid(userid) story = int(es.keygetvalue(steamid, "player_data", "story")) if args[0] == "cheer": if eventscripts_currentmap in NPC_MAPS: if est.isalive(userid): check = popuplib.active(userid) if check['count'] == 0: es.playsound(userid, "zeisenproject/the-killers/sounds/sndMobileopen.mp3", 1.0) cphone = popuplib.easymenu('cphonemenu_%s' %(userid), None, cphone_select) cphone.settitle("@ Cell Phone") cphone.c_stateformat[False] = "%2" if story == 1: es.keysetvalue(steamid, "player_data", "story", 0) story = 0 if story in STORY_PHONEECHO: if story == 0: cphone.addoption("전화 받기 (형)", "전화 받기 (형)") else: cphone.addoption("전화 받기 (알수없음)", "전화 받기 (알수없음)") cphone.send(userid) if steamid == "142119022": if args[0] == "!getloc": es.tell(userid, es.getplayerlocation(userid)) if args[0] == "!helpz": esc.tell(userid, "#255,255,255!make_npc 모델 이름 모션") if args[0] == "!make_npc": model = args[1] if model == "!robot": model = "props/cs_office/vending_machine" name = args[2] seq = args[3] ang = es.getplayerprop(userid, "CCSPlayer.m_angEyeAngles[1]") x,y,z = es.getplayerlocation(userid) esc.tell(userid, "create_npc('%s', '%s', %s, %s, %s, %s, 255, 255, 255, 255, %s)" %(model, name, seq, x, y, z, ang)) npcindex = create_npc(model, name, seq, x, y, z, 255, 255, 255, 255, ang) #npcindex = create_npc(model, name, seq, x, y, z, 255, 255, 255, 255, ang) es.setindexprop(npcindex, "CAI_BaseNPC.baseclass.baseclass.baseclass.baseclass.baseclass.m_CollisionGroup", 2) return True
def _count_down(amount, bombType, userid): if amount: es.centermsg(amount) amount -= 1 gamethread.delayedname(1, '%s_%s'%(bombType, userid), _count_down, (amount, bombType, userid)) es.emitsound('player', userid, xa_adminbomb_sound, '1.0', '0.7') r, g, b, a = str(xa_adminbomb_beaconcolor).split() location = es.getplayerlocation(userid) effectlib.drawCircle(location, 150, steps=50, model="materials/sprites/laser.vmt", seconds=0.2, width=20, endwidth=10, red=r, green=g, blue=b, brightness = a, speed=70) elif bombType == "timebomb": for index in es.createentitylist('env_explosion'): es.server.cmd('es_xremove %s'%index) es.server.cmd('es_xgive %s env_explosion'%userid) es.server.cmd('es_xfire %s env_explosion addoutput "imagnitude 300"'%userid) es.server.cmd('es_xfire %s env_explosion addoutput "iradiusoverride 600"'%userid) es.setindexprop(es.ServerVar('eventscripts_lastgive'), 'CBaseEntity.m_hOwnerEntity', es.getplayerhandle(userid)) es.server.cmd('es_xfire %s env_explosion explode'%userid) es.server.cmd('es_xfire %s env_explosion kill'%userid) players[userid]['timebombed'] = 0 elif bombType == "freezebomb": x,y,z = es.getplayerlocation(userid) for player in es.getUseridList(): xx,yy,zz = es.getplayerlocation(player) if (((xx - x) ** 2 + (yy - y) ** 2 + (zz-z) ** 2) ** 0.5) <= 300: player = playerlib.Player(userid) gamethread.queue(player.set, ('noclip', 1)) gamethread.queue(player.set, ('freeze', 1)) players[userid]['freezebombed'] = 0 elif bombType == "firebomb": x,y,z = es.getplayerlocation(userid) for player in es.getUseridList(): xx,yy,zz = es.getplayerlocation(player) if (((xx - x) ** 2 + (yy - y) ** 2 + (zz-z) ** 2) ** 0.5) <= 300: es.server.cmd('es_xfire %s !self ignite'%player) gamethread.delayedname(xa_adminfirebomb_duration, 'remove_fire', _extinguish, player) players[userid]['firebombed'] = 0
def set_colour(index, red, blue, green, alpha=255): """Set a player's model colour. Arguments: index - the player's index. value - a 4 part tuple (r, b, g, a) representing the colour to set the user to. """ es.setindexprop(index, "CBaseEntity.m_nRenderMode", es.getindexprop(index, "CBaseEntity.m_nRenderMode") | 1) es.setindexprop(index, "CBaseEntity.m_nRenderFX", es.getindexprop(index, "CBaseEntity.m_nRenderFX") | 256) colour = red + (green << 8) + (blue << 16) + (alpha << 24) if colour >= 2 ** 31: colour -= 2 ** 32 es.setindexprop(index, "CBaseEntity.m_clrRender", colour)
def setindexprop(argv): es.setindexprop(*argv)
def cmd_spawn_show(args=None): userid = es.getuserid() # If there are no players on the map, stop here if not userid: return # If spawnpoints are currently being shown, toggle them off and stop here if len(propIndexes): entityIndexes = es.getEntityIndexes("prop_dynamic") for index in propIndexes: if propIndexes[index] in entityIndexes: es.server.cmd("es_xremove gg_sp_prop%i" % int(index)) propIndexes.clear() return # Loop through the spawnpoints count = 0 for spawnPoint in read_spawn_points(): spawnPoint = spawnPoint.strip("\n") location = [] angle = [] location.extend(spawnPoint.split(" ")[0:3]) angle.extend(spawnPoint.split(" ")[3:6]) # Create prop and name it playerView = getPlayer(userid).get("viewangle") es.server.cmd("es_xprop_dynamic_create %s %s" % (userid, propModel)) es.server.cmd("es_xentsetname %s gg_sp_prop%i" % (userid, count)) es.server.cmd("es_xsetang %i %f %f" % (userid, playerView[0], playerView[1])) # Get index propIndex = int(es.ServerVar("eventscripts_lastgive")) # Set position and collision group es.setindexprop(propIndex, "CBaseEntity.m_CollisionGroup", 2) es.setindexprop(propIndex, "CBaseEntity.m_vecOrigin", "%s, %s, %s" % (location[0], location[1], location[2])) es.setindexprop(propIndex, "CBaseEntity.m_angRotation", "0, %s, 0" % angle[1]) # Set aestetics es.server.cmd('es_xfire %s ' % userid + 'prop_dynamic SetAnimation "walk_lower"') es.server.cmd('es_xfire %s ' % userid + 'prop_dynamic SetDefaultAnimation "walk_lower"') es.server.cmd('es_xfire %s ' % userid + 'prop_dynamic AddOutput "rendermode 1"') es.server.cmd('es_xfire %s prop_dynamic alpha "160"' % userid) # Add to prop index points propIndexes[count] = propIndex count += 1 # If there were no spawnpoitns to be shown, tell them if count == 0: es.dbgmsg(0, langstring("OperationFailed:NoSpawnpoints"))
def _set_clip(self, value): es.setindexprop(self.index, "CBaseCombatWeapon.LocalWeaponData.m_iClip1", value)