Beispiel #1
0
    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)
Beispiel #2
0
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)
Beispiel #3
0
 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)
Beispiel #4
0
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)
Beispiel #5
0
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')
Beispiel #6
0
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 
Beispiel #8
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
Beispiel #10
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
Beispiel #12
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))
Beispiel #13
0
    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
Beispiel #14
0
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()
Beispiel #16
0
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"))
Beispiel #17
0
 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)
Beispiel #21
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 _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')
Beispiel #24
0
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 
Beispiel #28
0
def emitsound(argv):
    es.emitsound(*argv)
Beispiel #29
0
def emitsound(argv):
  es.emitsound(*argv)