def __mainloop(self): ''' Creates the beacon, plays the sound and calls the callbacks. ''' if self.duration != 'indefinitely': self.duration -= self.interval if self.duration <= 0: return stop(self.__userid) self.precallback(self.__userid, self) origin = es.getplayerlocation(self.__userid) origin = tuple(origin[x]+self.offset[y] for x, y in enumerate('xyz')) beamRingPoint(self.users, 0, origin, self.startradius, self.endradius, self.model, self.halo, self.startframe, self.framerate, self.interval, self.width, self.spread, self.amplitude, self.r, self.g, self.b, self.a, self.speed, self.flags) if self.soundtype == 'emitsound': es.emitsound('player', self.__userid, self.sound, self.volume, self.attenuation) elif self.soundtype == 'playsound': es.playsound(self.__userid, self.sound, self.volume) self.postcallback(self.__userid, self) gamethread.delayedname(self.interval, self.__name, self.__mainloop)
def player_hurt(ev): attacker = ev['attacker'] player = playerlist[ev['attacker']] # If damage is not NULL if ev['damage'].isdigit(): damage = int(ev['damage']) elif ev['dmg_health'].isdigit(): damage = int(ev['dmg_health']) player = playerlist[ev['userid']] userid = player.userid # If Attacker and Victim are not frozen: if ev['weapon'] == 'knife': if attacker and int(attacker) in frozen: quit() if damage >= 35: player = playerlist[ev['attacker']] level = player.GetSkillLevel(skillname) if level: if userid not in frozen: frozen.append(userid) # Freeze the player gamethread.cancelDelayed('rpg_%s_%s' % (skillname, userid)) es.emitsound('player', userid, 'physics/glass/glass_impact_bullet%s.wav' % random.randint(1,4), '1.0', '0.5') player = playerlib.getPlayer(userid) player.freeze(True) player.setColor(0, 0, 255) # Delay delayname = 'rpg_%s_%s' %(skillname, userid) gamethread.cancelDelayed(delayname) gamethread.delayedname(0.42 * level, delayname, rpg_unfreeze, (player.userid)) if ev['weapon'] != 'knife': if userid in frozen: player = playerlib.getPlayer(userid) player.health += int(damage / 100 * 98)
def check(self): """ This function is a function which is repeated every second to check all current player positions and relative smoke grenades. If the player is in range, damage them. """ smokeList = es.createentitylist("smokegrenade_projectile") for entity in self.entities.copy(): if entity in smokeList: x, y, z = map( float, es.getindexprop(entity, 'CBaseEntity.m_vecOrigin').split(",")) player = self.entities[entity] level = sourcerpg.players[player][skillName] for loopPlayer in playerlib.getPlayerList( '#t,#alive' if es.getplayerteam(player) == 3 else '#ct,#alive'): xx, yy, zz = loopPlayer.get('location') if abs(x - xx) <= 220 and abs(y - yy) <= 220 and abs( z - zz) <= 220: es.server.queuecmd('damage %s %s 32 %s' % (int(loopPlayer), level * int(damagePerLevel), player)) es.emitsound( 'player', int(loopPlayer), 'player/damage%s.wav' % random.randint(1, 3), '0.7', '0.6') else: self.removeEntity(entity)
def round_start(ev): Number = random.randint(1, 5) Player = es.getuserid() if (Player): if (Number == 1): es.emitsound("player", Player, "music/HL2_song3.mp3", 0.45, 0) if (Number == 2): es.emitsound("player", Player, "music/HL2_song29.mp3", 0.45, 0) if (Number == 3): es.emitsound("player", Player, "music/HL2_song20_submix4.mp3", 0.45, 0) if (Number == 4): es.emitsound("player", Player, "music/HL2_song14.mp3", 0.45, 0) if (Number == 5): es.emitsound("player", Player, "music/HL2_song16.mp3", 0.45, 0) es.ServerVar("mp_roundtime").set(9) es.ServerVar("ammo_338mag_max").set(1000) es.ServerVar("ammo_357sig_max").set(1000) es.ServerVar("ammo_45acp_max").set(1000) es.ServerVar("ammo_50AE_max").set(1000) es.ServerVar("ammo_556mm_box_max").set(1000) es.ServerVar("ammo_556mm_max").set(1000) es.ServerVar("ammo_57mm_max").set(1000) es.ServerVar("ammo_762mm_max").set(1000) es.ServerVar("ammo_9mm_max").set(1000) es.ServerVar("ammo_buckshot_max").set(1000)
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 (ev['es_userteam'] == "2"): es.emitsound("player", ev['userid'], "npc/zombie/zombie_pain%i.wav" % (random.randint(1, 6)), 1, 0.5) if (ev['es_userteam'] == "3"): es.emitsound("player", ev['userid'], "vo/npc/male01/pain0%i.wav" % (random.randint(1, 9)), 1, 0.5)
def _beacon_loop(userid): if userid in playerlib.getUseridList("#alive"): es.emitsound('player', userid, xa_adminbeacon_sound, '1.0', '0.7') r, g, b, a = str(xa_adminbeacon_color).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) gamethread.delayedname(0.8, 'beacon_%s'%userid, _beacon_loop, userid) else: players[userid]['beaconed'] = 0
def player_death(ev): if (ev['es_userteam'] == "2"): es.emitsound("player", ev['userid'], "npc/zombie/zombie_die%i.wav" % (random.randint(1, 3)), 1, 0.5) if (ev['es_userteam'] == "3"): es.emitsound("player", ev['userid'], "vo/npc/male01/no0%i.wav" % (random.randint(1, 2)), 1, 0.5)
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 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 Clock(): global ClockTime if int(ClockTime) <= 2: gamethread.cancelDelayed("clock") if int(ClockTime) > 9: es.emitsound("player", es.getUseridList()[0],"pl_hoodoo\\alarm_clock_ticking_3.wav", 1, 0) gamethread.delayedname(2.7,"clock",Clock,()) ClockTime -= 3 else: Msg("Ten Seconds To Sudden Death!") es.emitsound("player", es.getUseridList()[0],"pl_hoodoo\\alarm_clock_alarm_3.wav", 1, 0) gamethread.cancelDelayed("clock") ClockTime = 0
def doWork(arg1, arg2): global checkTeabag victim = playerlib.getPlayer(arg1) attacker = playerlib.getPlayer(arg2) isDucking = es.getplayerprop(arg2, 'CBasePlayer.localdata.m_Local.m_bDucked') victimPos = victim.x + victim.y + victim.z attackerPos = attacker.x + attacker.y + attacker.z if (attackerPos - victimPos) <= 50: # Change this to change sensitivity if isDucking > 0: checkTeabag.stop es.centermsg("%s just got teabagged!!!" % victim.name) es.emitsound(player, arg2, 'bot/owned.wav', 1.0, 0.5) es.msg("#multi", "#lightgreen[#greenTea-Bag#lightgreen] %s#default has just tea-bagged #lightgreen%s#default!" % (attacker.name, victim.name))
def emitsound(self, sound, volume=1.0, attenuation=1.0): ''' Emits the declared sound from the player. ''' # Format the sound sound = self._format_sound(sound) # Make sure the sound exists if sound: # Play the sound es.emitsound('player', self.userid, sound, volume, attenuation) # Return the sound used return sound
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 _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 player_death(event_var): if mattie_mugmod > 0: if event_var['weapon'] == "knife": # don't mug if they're on the same team. if event_var['es_attackerteam'] != event_var['es_userteam']: victim = playerlib.getPlayer(event_var['userid']) attacker = playerlib.getPlayer(event_var['attacker']) # take money killercash = attacker.get("cash") victimcash = victim.get("cash") muggedamount = (victimcash * mugmod_percentage) / 100 # complete the transaction victim.set("cash", victimcash - muggedamount) attacker.set("cash", muggedamount + killercash) # build the tokens for string replacement tokens = {} tokens['attacker'] = attacker.get("name") tokens['victim'] = victim.get("name") tokens['dollars'] = muggedamount # tell the victim es.tell(victim, text("mugged notice", tokens, victim.get("lang"))) # tell the attacker es.tell(attacker, text("mugger notice", tokens, attacker.get("lang"))) # play sound if mugmod_sounds > 0: es.emitsound("player", int(attacker), str(mugmod_soundfile), 1, 0.6) if mugmod_taunt > 0: # say message if muggedamount <= 200: es.sexec(int(attacker), "say %s" % text("poor victim")) else: # rich victim choices = [x for x in text.keys() if x[0:8] == 'mugging:'] chosen = random.choice(choices) es.sexec(int(attacker), "say %s" % text(chosen)) else: if mugmod_taunt > 0: # team knifer! es.sexec(int(attacker), "say %s" % text("team mugger"))
def check(self): """ This function is a function which is repeated every second to check all current player positions and relative smoke grenades. If the player is in range, damage them. """ smokeList = es.createentitylist("smokegrenade_projectile") for entity in self.entities.copy(): if entity in smokeList: x, y, z = map(float, es.getindexprop(entity, 'CBaseEntity.m_vecOrigin').split(",")) player = self.entities[entity] level = sourcerpg.players[player][skillName] for loopPlayer in playerlib.getPlayerList('#t,#alive' if es.getplayerteam(player) == 3 else '#ct,#alive'): xx, yy, zz = loopPlayer.get('location') if abs(x - xx) <= 220 and abs(y - yy) <= 220 and abs(z - zz) <= 220: es.server.queuecmd('damage %s %s 32 %s' % ( int(loopPlayer), level * int(damagePerLevel), player)) es.emitsound('player', int(loopPlayer), 'player/damage%s.wav' % random.randint(1, 3), '0.7', '0.6') else: self.removeEntity(entity)
def _beacon_loop(userid): if userid in playerlib.getUseridList("#alive"): es.emitsound('player', userid, xa_adminbeacon_sound, '1.0', '0.7') r, g, b, a = str(xa_adminbeacon_color).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) gamethread.delayedname(0.8, 'beacon_%s' % userid, _beacon_loop, userid) else: players[userid]['beaconed'] = 0
def _rocket(userid, adminid, args): if str(xa_adminrocket_anonymous) == "0": tokens = {} tokens['admin'] = es.getplayername(adminid) tokens['user'] = es.getplayername(userid) for player in playerlib.getPlayerList(): es.tell(int(player), xalanguage("rocketed", tokens, player.get("lang"))) es.emitsound('player', userid, 'weapons/rpg/rocketfire1.wav', '1.0', '0.4') es.usermsg('create', 'shake', 'Shake') es.usermsg('write', 'byte', 'shake', 0) es.usermsg('write', 'float', 'shake', 25) es.usermsg('write', 'float', 'shake', 1.0) es.usermsg('write', 'float', 'shake', 3) es.usermsg('send', 'shake', userid) es.usermsg('delete', 'shake') gamethread.delayed(0.5, es.emitsound, ('player', userid, 'ambient/fire/ignite.wav', '1.0', '0.4') ) #playerlib.getPlayer(userid).set("freeze", 1) rocketEffectLoop(userid, 3.0)
def IronManLoop(player): armor = player.armor if player.armor <= 1: es.tell( player, '#multi', '#green[SH]#lightgreen Not enough fuel, wait until it regens.') return # Stop this loop player.armor = armor - 2 player.set("push", (0, 145, True)) loc = player.location drawBox(loc, [loc[0] + 10, loc[1] + 10, loc[2]], "materials/sprites/laser.vmt", "materials/sprites/halo01.vmt", 0.2, 20, 20, 255, 0, 0, 255, 10, 0, 0, 0, 0) drawBox(loc, [loc[0] - 10, loc[1] - 10, loc[2]], "materials/sprites/laser.vmt", "materials/sprites/halo01.vmt", 0.2, 20, 20, 255, 128, 0, 255, 10, 0, 0, 0, 0) drawBox([loc[0] - 5, loc[1] - 5, loc[2]], [loc[0] + 5, loc[1] + 5, loc[2]], "materials/sprites/laser.vmt", "materials/sprites/halo01.vmt", 0.2, 20, 20, 0, 0, 255, 255, 10, 0, 0, 0, 0) es.emitsound('player', player, 'ambient/explosions/exp4.wav', 0.3, 0.4) gamethread.delayedname(0.1, delayname % player, IronManLoop, player)
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 _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 rocketEffectLoop(userid, time): """ A command to make some neat effects and push a player vertically... Made by bonbon <3 """ if time >= 0: time -= 0.1 loc = es.getplayerlocation(userid) if time < 2.5: effectlib.drawBox(loc, [loc[0] + 10, loc[1] + 10, loc[2]], "materials/sprites/laser.vmt", "materials/sprites/halo01.vmt", 0.2, 20, 20, 255, 0, 0, 255, 10, 0, 0, 0, 0) effectlib.drawBox(loc, [loc[0] - 10, loc[1] - 10, loc[2]], "materials/sprites/laser.vmt", "materials/sprites/halo01.vmt", 0.2, 20, 20, 255, 128, 0, 255, 10, 0, 0, 0, 0) effectlib.drawBox([loc[0] - 5, loc[1] - 5, loc[2]], [loc[0] + 5, loc[1] + 5, loc[2]], "materials/sprites/laser.vmt", "materials/sprites/halo01.vmt", 0.2, 20, 20, 0, 0, 255, 255, 10, 0, 0, 0, 0) if (time * 10) % 2: #es.setplayerprop(userid, 'CBasePlayer.localdata.m_vecBaseVelocity', '0,0,145') if es.exists('userid', userid): # stops the playerlib error if the player doesn't exist playerlib.getPlayer(userid).set("push", (0, 145, True) ) else: return gamethread.delayed(0.1, rocketEffectLoop, (userid, time) ) else: es.server.queuecmd('es_give %s env_explosion' % userid) es.server.queuecmd('es_xfire %s env_explosion addoutput "iMagnitude 100"' % userid) es.server.queuecmd('es_xfire %s env_explosion explode' % userid) es.server.queuecmd('damage %s %s' % (userid, es.getplayerprop(userid, 'CBasePlayer.m_iHealth') ) ) es.emitsound('player', userid, 'ambient/explosions/exp3.wav', '1.0', '0.4')
def player_hurt(event_var): """ When a player is damaged, check for team attacks, then if the wepapon is a hegrenade, then set the player on fire, and delay and extinguish @PARAM event_var - an automatically passed event instance """ userid = event_var['userid'] attacker = event_var['attacker'] if attacker and int(attacker) and attacker not in frozen: """ The attacker did not hurt themselves """ player = sourcerpg.players[attacker] level = player[skillName] if level: """ The player has at least level 1 in this skill """ if event_var['es_userteam'] != event_var['es_attackerteam']: """ It was not a team kill """ damage = 0 if event_var['damage'].isdigit(): damage = int(event_var['damage']) elif event_var['dmg_health'].isdigit(): damage = int(event_var['dmg_health']) if event_var['weapon'] in map(lambda x: x.split('_')[-1], weaponlib.getWeaponNameList("#melee")): if damage > 30: """ The attack was a hard hit from one of the weapons """ if userid not in frozen: frozen.append(userid) gamethread.cancelDelayed('sourcerpg_freeze_user%s' % userid) es.emitsound('player', userid, 'physics/glass/glass_impact_bullet%s.wav' % random.randint(1,4), '1.0', '0.5') player = playerlib.getPlayer(userid) player.freeze(True) player.setColor(0, 0, 255) gamethread.delayedname(float(iceTime) * level, 'sourcerpg_freeze_user%s' % userid, unFreeze, userid) elif bool(int(damageReduction)) and userid in frozen: """ Damage reduction """ if not es.getplayerprop(userid, 'CBasePlayer.pl.deadflag'): player = playerlib.getPlayer(userid) player.health += int(damage / 100. * damageReduction)
def rocketEffectLoop(userid, time): """ A command to make some neat effects and push a player vertically... Made by bonbon <3 """ if time >= 0: time -= 0.1 loc = es.getplayerlocation(userid) if time < 2.5: effectlib.drawBox(loc, [loc[0] + 10, loc[1] + 10, loc[2]], "materials/sprites/laser.vmt", "materials/sprites/halo01.vmt", 0.2, 20, 20, 255, 0, 0, 255, 10, 0, 0, 0, 0) effectlib.drawBox(loc, [loc[0] - 10, loc[1] - 10, loc[2]], "materials/sprites/laser.vmt", "materials/sprites/halo01.vmt", 0.2, 20, 20, 255, 128, 0, 255, 10, 0, 0, 0, 0) effectlib.drawBox([loc[0] - 5, loc[1] - 5, loc[2]], [loc[0] + 5, loc[1] + 5, loc[2]], "materials/sprites/laser.vmt", "materials/sprites/halo01.vmt", 0.2, 20, 20, 0, 0, 255, 255, 10, 0, 0, 0, 0) if (time * 10) % 2: #es.setplayerprop(userid, 'CBasePlayer.localdata.m_vecBaseVelocity', '0,0,145') if es.exists( 'userid', userid ): # stops the playerlib error if the player doesn't exist playerlib.getPlayer(userid).set("push", (0, 145, True)) else: return gamethread.delayed(0.1, rocketEffectLoop, (userid, time)) else: es.server.queuecmd('es_give %s env_explosion' % userid) es.server.queuecmd( 'es_xfire %s env_explosion addoutput "iMagnitude 100"' % userid) es.server.queuecmd('es_xfire %s env_explosion explode' % userid) es.server.queuecmd( 'damage %s %s' % (userid, es.getplayerprop(userid, 'CBasePlayer.m_iHealth'))) es.emitsound('player', userid, 'ambient/explosions/exp3.wav', '1.0', '0.4')
def _rocket(userid, adminid, args): if str(xa_adminrocket_anonymous) == "0": tokens = {} tokens['admin'] = es.getplayername(adminid) tokens['user'] = es.getplayername(userid) for player in playerlib.getPlayerList(): es.tell(int(player), xalanguage("rocketed", tokens, player.get("lang"))) es.emitsound('player', userid, 'weapons/rpg/rocketfire1.wav', '1.0', '0.4') es.usermsg('create', 'shake', 'Shake') es.usermsg('write', 'byte', 'shake', 0) es.usermsg('write', 'float', 'shake', 25) es.usermsg('write', 'float', 'shake', 1.0) es.usermsg('write', 'float', 'shake', 3) es.usermsg('send', 'shake', userid) es.usermsg('delete', 'shake') gamethread.delayed( 0.5, es.emitsound, ('player', userid, 'ambient/fire/ignite.wav', '1.0', '0.4')) #playerlib.getPlayer(userid).set("freeze", 1) rocketEffectLoop(userid, 3.0)
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 emitsound(argv): es.emitsound(*argv)