예제 #1
0
def wcs_ulti_chain():
	userid = int(es.ServerVar('wcs_userid'))
	count = 0

	if es.getplayerteam(userid) >= 2:
		if playerlib.getUseridList('#alive'):
			usermsg.fade(userid, 0, 2, 1, 240, 240, 240, 100)
			x,y,z = es.getplayerlocation(userid)
			radius = float(es.ServerVar('wcs_radius'))
			es.ServerVar('vector1').set(','.join(map(str, (x,y,z))))

			for user in playerlib.getUseridList('#alive,#'+['ct','t'][es.getplayerteam(userid)-2]):
				x1,y1,z1 = es.getplayerlocation(user)

				if ((x1 - x) ** 2 + (y1 - y) ** 2 + (z1 - z) ** 2) ** 0.5 <= radius:
					#check for wall between...

					if not tools.wcsgroup.wcsgroup.getUser(user, 'ulti_immunity'):
						tools.expand.expand.damage(user, 32, userid)
						count += 1

						if es.ServerVar('wcs_cfg_graphicfx'):
							es.server.insertcmd('es_xset vector2 '+','.join(map(str, (x1,y1,z1)))+';es_xdoblock wcs/addons/effect/ChainLightning')

					else:
						es.tell(user, '#multi', '#lightgreenYour ultimate was blocked, the enemy is #greenimmune.')
						es.tell(userid, '#multi', '#lightgreenYou #greenblocked #lightgreenan ultimate skill.')

	if count:
		es.centertell('Chain Lightning: %s players damaged' % (count))
	else:
		es.tell(userid, '#multi', '#lightgreenChain Lightning #greenfailed#lightgreen, because no enemy is close enough to be damaged.')
		es.server.queuecmd('es wcs_reset_cooldown %s' % (userid))
예제 #2
0
def wcs_ulti_roots():
	userid = int(es.ServerVar('wcs_userid'))
	count = 0

	if es.getplayerteam(userid) >= 2:
		if playerlib.getUseridList('#alive'):
			usermsg.fade(userid, 0, 1, 1, 10, 55, 5, 200)
			x,y,z = es.getplayerlocation(userid)
			radius = float(es.ServerVar('wcs_radius'))
			time = float(es.ServerVar('wcs_freezetime'))

			for user in playerlib.getUseridList('#alive,#'+['ct','t'][es.getplayerteam(userid)-2]):
				x1,y1,z1 = es.getplayerlocation(user)

				if ((x1 - x) ** 2 + (y1 - y) ** 2 + (z1 - z) ** 2) ** 0.5 <= radius:
					#check for wall between...

					if not tools.wcsgroup.wcsgroup.getUser(user, 'ulti_immunity'):
						playerlib.getPlayer(user).freeze = 1
						gamethread.delayed(time, reset, (user, 'freeze', 0))
						count += 1

					else:
						es.tell(user, '#multi', '#lightgreenYour ultimate was blocked, the enemy is #greenimmune.')
						es.tell(userid, '#multi', '#lightgreenYou #greenblocked #lightgreenan ultimate skill.')

	if count:
		es.centertell('Entangling Roots: %s' % (count))
	else:
		es.tell(userid, '#multi','#lightgreenEntangling Roots #greenfailed#lightgreen, because no enemy is close enough.')
		es.server.queuecmd('es wcs_reset_cooldown %s' % (userid))
예제 #3
0
def _run_bomb(tick):
    if tick.isdigit():
        soundtext = '%s sec'%tick
    elif tick == 'P':
        soundtext = 'Bomb Planted'
    elif tick == 'D':
        soundtext = 'Bomb Defused'
    elif tick == 'E':
        soundtext = 'Bomb Exploded'
    if 'command_%s'%tick in bomb_timer_language.keys():
        for commandname in bomb_timer_language['command_%s'%tick].keys():
            es.server.queuecmd(bomb_timer_language['command_%s'%tick][commandname].strip())
    for userid in playerlib.getUseridList('#human'):
        if bomb_timer_setting.get('display', userid):
            if int(bomb_timer_middle_screen) == 1:
                usermsg.hudhint(userid, soundtext)
            elif int(bomb_timer_middle_screen) == 2:
                usermsg.centermsg(userid, soundtext)
        if bomb_timer_setting.get('text', userid):
            if 'text_%s'%tick in bomb_timer_language.keys():
                es.tell(userid, '#multi', bomb_timer_language('text_%s'%tick, {}, playerlib.getPlayer(userid).get('lang')))
        if bomb_timer_setting.get('sound', userid):
            if int(es.getplayerteam(userid)) < 2:
                keyname = 'spec'
            elif int(es.getplayerteam(userid)) == 2:
                keyname = 't'
            elif int(es.getplayerteam(userid)) == 3:
                keyname = 'ct'
            if 'sound_%s'%tick in bomb_timer_language.keys():
                es.playsound(userid, bomb_timer_language['sound_%s'%tick][keyname], 1.0)
예제 #4
0
def player_hurt(ev):
    # Get level of that skill
    level = playerlist[ev['attacker']].GetSkillLevel(skillname)
    if ev['weapon'] == 'hegrenade' and level > 0 and (
            rpgFiregrenadeTeamignite or es.getplayerteam(
                ev['attacker']) != es.getplayerteam(ev['userid'])):
        es.server.queuecmd('es_fire %s !self IgniteLifetime %s' %
                           (ev['userid'], level * rpgFiregrenadeTime))
예제 #5
0
    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)
예제 #6
0
def TeamChat(userid, text, teamonly):
	text = str(str(text).strip('"'))
	if es.exists('saycommand',text.split(' ')[0]) or text.split(' ')[0].lower() in ["!vote","!kick","!ban","!tele","!teleport","!burn","!slay","!noclip","!beacon","!happy","!slap","!nominate","!rtv","rtv","/rtv","votekick","voteban","!votekick","!voteban","!me","/me"]:
		return (userid, text, teamonly)
	else:
		if es.getplayerteam(userid) == 1:
			return (userid, text, teamonly)
		if es.getplayerteam(userid) == 2:
			es.msg('#multi','[#greenInfected#default] %s: #default%s'%(es.getplayername(userid),text))
		if es.getplayerteam(userid) == 3:
			es.msg('#multi','[#greenSurvivor#default] %s: #default%s'%(es.getplayername(userid),text))
		es.cexec_all('play common/talk.wav')
		return (0, None, None)
예제 #7
0
파일: Damage.py 프로젝트: dretax/MeowRPG
def player_hurt(ev):
    # Get level of that skill
    level = playerlist[ev['attacker']].GetSkillLevel(skillname)
    userid = int(ev['userid'])
    if userid in block:
        block.remove(userid)
    else:
        if level > 0 and (rpgDamageTeam or es.getplayerteam(ev['attacker']) !=
                          es.getplayerteam(ev['userid'])):
            block.add(userid)
            rpg_damage(ev['userid'],
                       int(int(ev['dmg_health']) * level * rpgDamageValue),
                       ev['attacker'], ev['weapon'])
예제 #8
0
    def check_spawn(self):
        '''Used to check if a player should be
            spawned when joining a round late'''

        # Should players be spawned during the mid round?
        if not int(gg_elimination_spawn):

            # If not, return
            return

        # Is the round active?
        if not ActiveInfo.round:

            # If not, return
            return

        # Is the player on a team?
        if getplayerteam(self.userid) < 2:

            # If not, return
            return

        if self.reconnect:

            # If they are reconnecting, return
            return

        # Cancel the current delay (if it exists)
        cancelDelayed('gg_elimination_respawn_%s' % self.userid)

        # Add the player to the respawn list in 3 seconds
        delayedname(3,
            'gg_elimination_respawn_%s' % self.userid,
            respawn_players.append, [self.userid])
예제 #9
0
def getPlayerList(players):
    """Returns a set of RestrictedPlayer or RestrictedTeam instances based on userid or team tag"""
    if isinstance(players, str):
        if players.startswith('@'):
            if players[1:] == 'all':
                players = (getTeam(2), getTeam(3))
            elif acceptable_teams.has_key(players[1:]):
                players = (getTeam(acceptable_teams[players[1:]]), )
            else:
                raise ValueError, 'Invalid team tag \"%s\"' % players

        elif players.startswith('#'):
            if players[1:] == 'all':
                players = es.getUseridList()
            elif acceptable_teams.has_key(players[1:]):
                team = acceptable_teams[players[1:]]
                players = filter(lambda x: es.getplayerteam(x) == team,
                                 es.getUseridList())
            else:
                raise ValueError, 'Invalid team tag \"%s\"' % players

            players = map(getPlayer, players)

        else:
            userid = es.getuserid(players)
            if not userid:
                raise ValueError, 'Invalid player \"%s\"' % players

            players = (getPlayer(userid), )

    elif isinstance(players, (int, float)):
        players = (getPlayer(players), )

    return players
예제 #10
0
def healingwarden():
    userid = str(es.ServerVar('wcs_userid'))
    count = int(wcsgroup.getUser(userid, 'ability_count'))

    if count:
        param = str(wcsgroup.getUser(userid, 'ability_parameter'))

        if param:
            param = param.split('_')
            team = int(es.getplayerteam(userid))

            if team == 2:
                teamtarget = '2'
                teamtargetn = '#t'
                color = '255 0 10 150'

            elif team == 3:
                teamtarget = '3'
                teamtargetn = '#ct'
                color = '10 0 255 150'

            x, y, z = es.getplayerlocation(userid)
            es.server.queuecmd('wcs_healingwarden ' + userid + ' ' + param[0] +
                               ' ' + param[1] + ' ' + param[2] + ' ' +
                               teamtarget + ' ' + teamtargetn + ' ' + str(x) +
                               ' ' + str(y) + ' ' + str(z) + ' ' +
                               str(es.ServerVar('wcs_roundcounter')))

            tell(userid, 'a_wardencreated')

        if count and not count == -1:
            wcsgroup.setUser(userid, 'ability_count', count - 1)

    else:
        tell(userid, 'a_failed')
예제 #11
0
    def check_spawn(self):
        '''Used to check if a player should be
            spawned when joining a round late'''

        # Should players be spawned during the mid round?
        if not int(gg_elimination_spawn):

            # If not, return
            return

        # Is the round active?
        if not ActiveInfo.round:

            # If not, return
            return

        # Is the player on a team?
        if getplayerteam(self.userid) < 2:

            # If not, return
            return

        if self.reconnect:

            # If they are reconnecting, return
            return

        # Cancel the current delay (if it exists)
        cancelDelayed('gg_elimination_respawn_%s' % self.userid)

        # Add the player to the respawn list in 3 seconds
        delayedname(3, 'gg_elimination_respawn_%s' % self.userid,
                    respawn_players.append, [self.userid])
예제 #12
0
파일: afk.py 프로젝트: robtomlinson/GunGame
    def teleport(self, x, y, z, eyeangle0=0, eyeangle1=0):
        '''
        Teleport the player.

        Recalculates the player's location automatically for the scripter.
        '''
        # Make sure player is on a team
        if es.getplayerteam(self.userid) < 2:
            raise ValueError('Unable to teleport player (%s): not on a team.'
                % self.userid)

        # Make sure the player is alive
        if getPlayer(userid).isdead:
            raise ValueError('Unable to teleport player (%s): not alive.'
                % self.userid)

        # Set position
        es.server.queuecmd('es_xsetpos %d %s %s %s' % (self.userid, x, y, z))

        # Set eye angles
        if eyeangle0 != 0 or eyeangle1 != 0:
            es.server.queuecmd('es_xsetang %d %s %s' % (self.userid, eyeangle0,
                                                       eyeangle1))

        # Reset player AFK calculation
        gamethread.delayed(0.1, self.reset, ())
예제 #13
0
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])
예제 #14
0
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))
예제 #15
0
def item_pickup(event_var):
    """
    Exeecuted when a player picks up a weapon. Store their current weapon
    so it remembers the value

    @PARAM event_var - an automatically passed event instance
    """
    weapon = weaponlib.getWeapon(event_var['item'])
    if weapon is None:
        """ The item picked up is not a valid weapon, return early """
        return
    weapon = weapon.name # format the weapon name
    userid = event_var['userid']
    player = sourcerpg.players[userid]
    if player is not None:
        level  = player[skillName]
        if level:
            """ Player is at least level 1 in this skill """
            if weapon in weaponlib.getWeaponNameList('#primary') and level >= 3:
                player['primary'] = weapon

            elif weapon in weaponlib.getWeaponNameList('#secondary') and level >= 2:
                if weapon != {2 : "weapon_glock", 3 : "weapon_usp"}[es.getplayerteam(userid)]:
                    player['secondary'] = weapon

            elif weapon in weaponlib.getWeaponNameList('#grenade'):
                player[weapon] += 1
예제 #16
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)
예제 #17
0
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])
예제 #18
0
def getPlayerList(players):
   """Returns a set of RestrictedPlayer or RestrictedTeam instances based on userid or team tag"""
   if isinstance(players, str):
      if players.startswith('@'):
         if players[1:] == 'all':
            players = (getTeam(2), getTeam(3))
         elif acceptable_teams.has_key(players[1:]):
            players = (getTeam(acceptable_teams[players[1:]]),)
         else:
            raise ValueError, 'Invalid team tag \"%s\"' % players

      elif players.startswith('#'):
         if players[1:] == 'all':
            players = es.getUseridList()
         elif acceptable_teams.has_key(players[1:]):
            team    = acceptable_teams[players[1:]]
            players = filter(lambda x: es.getplayerteam(x) == team, es.getUseridList())
         else:
            raise ValueError, 'Invalid team tag \"%s\"' % players

         players = map(getPlayer, players)

      else:
         userid = es.getuserid(players)
         if not userid:
            raise ValueError, 'Invalid player \"%s\"' % players

         players = (getPlayer(userid),)

   elif isinstance(players, (int, float)):
      players = (getPlayer(players),)

   return players
예제 #19
0
def flashbang_detonate(event_var):
    """
    Executed when a flashbang detonates. Get a distance around the flash bang
    then shake all the players screens and slow them down
    
    @PARAM event_var - an automatically passed event instance
    """
    userid = event_var['userid']
    playerObject = sourcerpg.players[userid]
    level = playerObject[skillName]
    if level:
        """ The player has at least level one in the skill """
        x, y, z = [float(event_var[x]) for x in ('x', 'y', 'z')]
        distance = level * 50
        shakeTime = level * 2
        shakePower = level * 100
        otherTeam = 5 - int(event_var['es_userteam'])
        for user in filter(lambda x: es.getplayerteam(x) == otherTeam,
                           es.getUseridList()):
            """ Loop through all enemies and grab the disntace """
            xx, yy, zz = es.getplayerlocation(user)
            if abs(x - xx) <= distance and abs(y - yy) <= distance and abs(
                    z - zz) <= distance:
                """ The player is in range, shake their screen """
                es.usermsg('create', 'shake', 'Shake')
                es.usermsg('write', 'byte', 'shake', 0)
                es.usermsg('write', 'float', 'shake', shakePower)
                es.usermsg('write', 'float', 'shake', 1.0)
                es.usermsg('write', 'float', 'shake', shakeTime)
                es.usermsg('send', 'shake', user)
                es.usermsg('delete', 'shake')
예제 #20
0
def getLevelAboveUser(uid):
    levels = []

    # Loop through the users
    for userid in es.getUseridList():
        if int(es.getplayerteam(userid)) <= 1:
            continue

        # If the player is the one we are checking for, skip them
        if userid == uid:
            continue

        # Get the player's level
        playerLevel = Player(userid).level

        # If the player's level is not in levels already, add it
        if not playerLevel in levels:
            levels.append(playerLevel)

    # If no levels are in the list, set 1 as the handicap level
    if len(levels) < 1:
        levels.append(1)

    # Sort levels, and return the level above lowest
    levels.sort()
    return levels[0]
예제 #21
0
def getAverageLevel(uid):
    # Everyone on level 1?
    if get_leader_level() == 1:
        return 1

    levels = []

    # Loop through the players
    for userid in es.getUseridList():
        if int(es.getplayerteam(userid)) <= 1:
            continue

        # If the player is the one we are checking for, skip them
        if userid == uid:
            continue

        # Add level to the list
        levels.append(Player(userid).level)

    # Make sure the levels list is not empty (can't divide by 0)
    if len(levels) == 0:
        return 1

    # Get the average
    average = sum(levels) / len(levels)

    # Is the average 1 or less?
    if average <= 1:
        return 1

    return average
예제 #22
0
def getLevelAboveLowest():
    levels = []

    # Loop through the users
    for userid in es.getUseridList():
        if int(es.getplayerteam(userid)) <= 1:
            continue

        # Get the player's level
        playerLevel = Player(userid).level

        # If the player's level is not in levels already, add it
        if not playerLevel in levels:
            levels.append(playerLevel)

    # If there are no valid players to base the handicap on, return level 1
    if not levels:
        return 1

    # If there is only one level, return it
    if len(levels) == 1:
        return levels[0]

    # Sort levels, and return the level above lowest
    levels.sort()
    return levels[1]
예제 #23
0
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)
예제 #24
0
def player_death(EV):
	Userid = int(EV['userid'])
	global Zombies,Survivors,Spec,Grace,Kicked_Bots
	if Grace == 0:
		#Zombie to Spectator
		if es.getplayerteam(Userid) == 2:
			if Userid in Zombies:
				Zombies.remove(Userid)
			Request_Spectate(Userid)

		#Survivor to Zombie 
		if es.getplayerteam(Userid) == 3 and EV["attacker"] != Userid:
			if Userid in Survivors:
				Survivors.remove(Userid)
			Zombies.append(Userid)
			es.changeteam(Userid,2)
			Msg("%s Was Zombified by %s!"%(es.getplayername(Userid),es.getplayername(EV['attacker'])))
	Request_TeamUpdate()
예제 #25
0
    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)
예제 #26
0
def Request_TeamUpdate():
	#Lets move the players to their respecive teams.
	#1 = Spectator, 2 = Infected, 3 = Survivors 
	global Zombies,Survivors,Spec,Grace
		
	for Userid in Zombies:
		if es.exists('userid',Userid):
			if es.getplayerteam(Userid) != 2:
				es.changeteam(Userid,2)
		else:
			Zombies.remove(Userid)

	for Userid in Survivors:
		if es.exists('userid',Userid):
			if es.getplayerteam(Userid) != 3:
				es.changeteam(Userid,3)
		else:
			Survivors.remove(Userid)

	for Userid in Spec:
		if es.exists('userid',Userid):
			if es.getplayerteam(Userid) != 1:
				es.changeteam(Userid,1)
		else:
			Spec.remove(Userid)


	if es.getplayercount() > 1 and not Grace:
		if int(es.getplayercount(2)) == 0:
			es.server.queuecmd("sv_cheats 1")
			es.server.queuecmd("mp_forcewin 3")
			gamethread.delayed(.2,es.server.queuecmd,("sv_cheats 0"))

		if int(es.getplayercount(3)) == 0:
			es.server.queuecmd("sv_cheats 1")
			es.server.queuecmd("mp_forcewin 2")
			gamethread.delayed(.2,es.server.queuecmd,("sv_cheats 0"))
	elif es.getplayercount() == 1:
		if not es.isbot(es.getUseridList()[0]):
			es.server.queuecmd("tf_bot_add")
			es.server.queuecmd("tf_bot_add")
			Msg("Well this looks boring, lets throw some bots in.")
예제 #27
0
    def team_players(self):
        '''Returns all userid's on the team'''

        # Loop through all players on the server
        for userid in getUseridList():

            # Is the player on this team?
            if getplayerteam(userid) == self.team:

                # Yield the player's userid
                yield userid
예제 #28
0
def _select_target(userid, choice, popupid):
    if userid not in admins:
        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:
            giveObject(userid, player)
예제 #29
0
    def team_players(self):
        '''Returns all userid's on the team'''

        # Loop through all players on the server
        for userid in getUseridList():

            # Is the player on this team?
            if getplayerteam(userid) == self.team:

                # Yield the player's userid
                yield userid
예제 #30
0
def round_freeze_end(event_var):
    remove = []
    for userid in dead_delayed:
        if es.getplayerteam(userid) != 1:
            for punishment,adminid,args,force in dead_delayed[userid]:
                _punish_player(userid,punishment,adminid,args,force)
            remove.append(userid)
        else:
            xapunishments.logging.log("is in spectator mode and will be punished when he next spawns", userid)
    for userid in remove:
        del dead_delayed[userid]
예제 #31
0
def round_start(event_var):
    """
    Cancels outstanding delays and unregisters client command filter
    Refreshes the dictionary of living player handles
    """
    global team_handles

    cancel_delays()

    team_handles = {2: [], 3: []}
    for userid in es.getUseridList():
        add_player_handle(userid, es.getplayerteam(userid))
예제 #32
0
   def addRestriction(self, weapon):
      """
      Adds the weapon to the set of restricted weapons
      Calls the removeWeapon function on the RestrictedPlayer instance for each player on the restricted team
      """
      weapon = weapon.replace('weapon_', '')
      if weapon in self.restrictions: return

      self.restrictions.add(weapon)

      for userid in filter(lambda x: es.getplayerteam(x) == self.teamnum if not es.getplayerprop(x, 'CBasePlayer.pl.deadflag') else False, es.getUseridList()):
         getPlayer(userid).removeWeapon(weapon)
예제 #33
0
def round_start(ev):
    steamid = ev['es_steamid']
    if steamid == 'BOT':
        return
    global gct #T General count
    global gcct #CT General count 
    global gusers #General users
    gct = 0
    gcct = 0
    gusers = {}
    playerList = playerlib.getPlayerList('#alive')
    for ply in playerList:
        userid = ply.userid
        gusers[userid] = {}
        gusers[userid]['Gensupport'] = 0
        if not superhero.hasHero(userid,'General'):
            return
        if es.getplayerteam(userid) == 2:
            gct = gct + 1
        elif es.getplayerteam(userid) == 3:
            gcct = gcct + 1
예제 #34
0
def round_start(ev):
    steamid = ev['es_steamid']
    if steamid == 'BOT':
        return
    global gct  #T General count
    global gcct  #CT General count
    global gusers  #General users
    gct = 0
    gcct = 0
    gusers = {}
    playerList = playerlib.getPlayerList('#alive')
    for ply in playerList:
        userid = ply.userid
        gusers[userid] = {}
        gusers[userid]['Gensupport'] = 0
        if not superhero.hasHero(userid, 'General'):
            return
        if es.getplayerteam(userid) == 2:
            gct = gct + 1
        elif es.getplayerteam(userid) == 3:
            gcct = gcct + 1
예제 #35
0
def round_start(event_var):
    """
    Cancels outstanding delays and unregisters client command filter
    Refreshes the dictionary of living player handles
    """
    global team_handles

    cancel_delays()

    team_handles = {2:[], 3:[]}
    for userid in es.getUseridList():
        add_player_handle(userid, es.getplayerteam(userid))
예제 #36
0
def pre_gg_win(**event_var):
    '''Fired prior to gg_win event being fired'''

    # Get the team the winner is one
    winning_team = getplayerteam(event_var['winner'])

    # Fire the gg_teamwin event instead with the
    # winning team and losing team event variables
    GG_Team_Win(winner=winning_team, loser=5 - winning_team).fire()

    # Always return False so that gg_win never fires
    return False
예제 #37
0
def round_freeze_end(event_var):
    remove = []
    for userid in dead_delayed:
        if es.getplayerteam(userid) != 1:
            for punishment, adminid, args, force in dead_delayed[userid]:
                _punish_player(userid, punishment, adminid, args, force)
            remove.append(userid)
        else:
            xapunishments.logging.log(
                "is in spectator mode and will be punished when he next spawns",
                userid)
    for userid in remove:
        del dead_delayed[userid]
예제 #38
0
def client_command_filter(userid, args):
    """
    Checks all non-admin dead players for spectating an opponent
    """
    team = es.getplayerteam(userid)
    if userid not in dead_players or not args or team not in (2, 3):
        return True

    if userid in delays:
        gamethread.cancelDelayed('xaobserve_%s' % userid)
        delays.remove(userid)

    if len(args):
        if args[0] == 'spec_mode':
            if es.getplayerprop(
                    userid,
                    'CBasePlayer.m_iObserverMode') == 3 and int(allow_chase):
                es.setplayerprop(userid, 'CBasePlayer.m_iObserverMode', 4)
            else:
                es.setplayerprop(userid, 'CBasePlayer.m_iObserverMode', 3)
            return False

        elif args[0] == 'spec_next' and team_handles[team]:
            target_handle = es.getplayerprop(userid,
                                             'CBasePlayer.m_hObserverTarget')
            if target_handle in team_handles[team]:
                target_index = team_handles[team].index(target_handle) + 1
                if target_index >= len(team_handles[team]):
                    target_index = 0
                dead_players[userid] = team_handles[team][target_index]
            else:
                dead_players[userid] = team_handles[team][0]
            es.setplayerprop(userid, 'CBasePlayer.m_hObserverTarget',
                             dead_players[userid])
            return False

        elif args[0] == 'spec_prev' and team_handles[team]:
            target_handle = es.getplayerprop(userid,
                                             'CBasePlayer.m_hObserverTarget')
            if target_handle in team_handles[team]:
                target_index = team_handles[team].index(target_handle) - 1
                if target_index < 0:
                    target_index = len(team_handles[team]) - 1
                dead_players[userid] = team_handles[team][target_index]
            else:
                dead_players[userid] = team_handles[team][0]
            es.setplayerprop(userid, 'CBasePlayer.m_hObserverTarget',
                             dead_players[userid])
            return False

    return True
예제 #39
0
def power():
    global gusers
    userid = str(es.getcmduserid())
    if not es.exists('userid',userid):
        return
    player = playerlib.getPlayer(userid)
    if not playerlib.getPlayer(userid).isdead:
	if int(time.time()) >= int(gusers[userid]['my_cooldown']):
		gusers[userid]['my_cooldown'] = int(time.time()) + 3
		RandSkin = random.randint(1, 4)
		if es.getplayerteam(userid) == 2:
			if RandSkin == 1:
				player.model = 'player/ct_urban'
				es.tell(userid,'#multi','#green[SH]#lightgreen Mystique changes skin, now you look like #greenCT Urban')
			elif RandSkin == 2:
				player.model = 'player/ct_gsg9'
				es.tell(userid,'#multi','#green[SH]#lightgreen Mystique changes skin, now you look like #greenCT Gsg 9')
			elif RandSkin == 3:
				player.model = 'player/ct_sas'
				es.tell(userid,'#multi','#green[SH]#lightgreen Mystique changes skin, now you look like #greenCT Sas')
			elif RandSkin == 4:
				player.model = 'player/ct_gign'
				es.tell(userid,'#multi','#green[SH]#lightgreen Mystique changes skin, now you look like #greenCT Gign')
		elif es.getplayerteam(userid) == 3:
			if RandSkin == 1:
				player.model = 'player/t_phoenix'
				es.tell(userid,'#multi','#green[SH]#lightgreen Mystique changes skin, now you look like #greenT Phoenix')
			elif RandSkin == 2:
				player.model = 'player/t_leet'
				es.tell(userid,'#multi','#green[SH]#lightgreen Mystique changes skin, now you look like #greenT Leet')
			elif RandSkin == 3:
				player.model = 'player/t_arctic'
				es.tell(userid,'#multi','#green[SH]#lightgreen Mystique changes skin, now you look like #greenT Arctic')
			elif RandSkin == 4:
				player.model = 'player/t_guerilla'
				es.tell(userid,'#multi','#green[SH]#lightgreen Mystique changes skin, now you look like #greenT Guerilla')
	else:
		es.tell(userid,'#multi','#green[SH]#lightgreen Cannot activate Mystique #green',int(gusers[userid]['my_cooldown'])-int(time.time()),'#lightgreenseconds left')
예제 #40
0
def wcs_ulti_suicide():
	userid = int(es.ServerVar('wcs_userid'))

	if es.getplayerteam(userid) >= 2:
		if playerlib.getUseridList('#alive'):
			usermsg.fade(userid, 0, 2, 1, 240, 240, 240, 100)
			x,y,z = es.getplayerlocation(userid)
			radius = float(es.ServerVar('wcs_radius'))
			magnitude = float(es.ServerVar('wcs_magnitude'))
			v = round(radius * magnitude) / 150

			for user in playerlib.getUseridList('#alive,#'+['ct','t'][es.getplayerteam(userid)-2]):
				x1,y1,z1 = es.getplayerlocation(user)

				if ((x1 - x) ** 2 + (y1 - y) ** 2 + (z1 - z) ** 2) ** 0.5 <= radius:
					#check for wall between...

					if not tools.wcsgroup.wcsgroup.getUser(user, 'ulti_immunity'):
						tools.expand.expand.damage(user, v, userid)

					else:
						es.tell(user, '#multi', '#lightgreenYour ultimate was blocked, the enemy is #greenimmune.')
						es.tell(userid, '#multi', '#lightgreenYou #greenblocked #lightgreenan ultimate skill.')
예제 #41
0
def _run_bomb(tick):
    if tick.isdigit():
        soundtext = '%s sec' % tick
    elif tick == 'P':
        soundtext = 'Bomb Planted'
    elif tick == 'D':
        soundtext = 'Bomb Defused'
    elif tick == 'E':
        soundtext = 'Bomb Exploded'
    if 'command_%s' % tick in bomb_timer_language.keys():
        for commandname in bomb_timer_language['command_%s' % tick].keys():
            es.server.queuecmd(bomb_timer_language['command_%s' %
                                                   tick][commandname].strip())
    for userid in playerlib.getUseridList('#human'):
        if bomb_timer_setting.get('display', userid):
            if int(bomb_timer_middle_screen) == 1:
                usermsg.hudhint(userid, soundtext)
            elif int(bomb_timer_middle_screen) == 2:
                usermsg.centermsg(userid, soundtext)
        if bomb_timer_setting.get('text', userid):
            if 'text_%s' % tick in bomb_timer_language.keys():
                es.tell(
                    userid, '#multi',
                    bomb_timer_language(
                        'text_%s' % tick, {},
                        playerlib.getPlayer(userid).get('lang')))
        if bomb_timer_setting.get('sound', userid):
            if int(es.getplayerteam(userid)) < 2:
                keyname = 'spec'
            elif int(es.getplayerteam(userid)) == 2:
                keyname = 't'
            elif int(es.getplayerteam(userid)) == 3:
                keyname = 'ct'
            if 'sound_%s' % tick in bomb_timer_language.keys():
                es.playsound(userid,
                             bomb_timer_language['sound_%s' % tick][keyname],
                             1.0)
예제 #42
0
def getPlayerList(players):
    """Returns a set of RestrictedPlayer or RestrictedTeam instances based on userid or team tag"""
    if isinstance(players, str):
        if players.startswith('@'):
            if players[1:] == 'all':
                players = (getTeam(2), getTeam(3))
            elif acceptable_teams.has_key(players[1:]):
                players = (getTeam(acceptable_teams[players[1:]]), )
            else:
                #bugfix: echo to users console (useful message)
                usermsg.echo(
                    "#all",
                    'xarestrict error: invalid tag \"%s\" [command accepts @all, @ct, @t]'
                    % players)
                raise ValueError, 'Invalid team tag \"%s\"' % players

        elif players.startswith('#'):
            if players[1:] == 'all':
                players = es.getUseridList()
            elif acceptable_teams.has_key(players[1:]):
                team = acceptable_teams[players[1:]]
                players = filter(lambda x: es.getplayerteam(x) == team,
                                 es.getUseridList())
            else:
                #bugfix: echo to users console (useful message)
                usermsg.echo(
                    "#all",
                    'xarestrict error: invalid tag \"%s\" [command accepts #all, #ct, #t]'
                    % players)
                raise ValueError, 'Invalid team tag \"%s\"' % players

            players = map(getPlayer, players)

        else:
            userid = es.getuserid(players)
            if not userid:
                #bugfix: echo to users console (useful message)
                usermsg.echo(
                    "#all",
                    'xarestrict error: invalid player \"%s\" [command accepts partial username, userid or steamid]'
                    % players)
                raise ValueError, 'Invalid player \"%s\"' % players

            players = (getPlayer(userid), )

    elif isinstance(players, (int, float)):
        players = (getPlayer(players), )

    return players
예제 #43
0
def player_team_f(userid):
    userteam = es.getplayerteam(userid)
    steamid = getplayerid(userid)
    if userteam > 1:
        if steamid != "BOT":
            if userid in first_join:
                if int(sv('hostport')) != 27100:
                    delete_all_weapons()
                    est.spawn("#a")
                if eventscripts_currentmap == "cs_office":
                    esc.tell(userid, "#0,255,255[Location]#255,255,255 Kyonggi-do, Korea Republic of")
            try:
                first_join.remove(userid)
            except:
                pass
예제 #44
0
    def addRestriction(self, weapon):
        """
      Adds the weapon to the set of restricted weapons
      Calls the removeWeapon function on the RestrictedPlayer instance for each player on the restricted team
      """
        weapon = weapon.replace('weapon_', '')
        if weapon in self.restrictions: return

        self.restrictions.add(weapon)

        for userid in filter(
                lambda x: es.getplayerteam(x) == self.teamnum if not es.
                getplayerprop(x, 'CBasePlayer.pl.deadflag') else False,
                es.getUseridList()):
            getPlayer(userid).removeWeapon(weapon)
예제 #45
0
def give_weapon_check(userid):
    # Is there an active weapon order?
    if WeaponOrderManager().active is None:
        return

    # Is spectator?
    if es.getplayerteam(userid) < 2:
        return

    # Is player dead?
    if getPlayer(userid).isdead:
        return

    # Give the weapon
    Player(userid).give_weapon()
예제 #46
0
def give_weapon_check(userid):
    # Is there an active weapon order?
    if WeaponOrderManager().active is None:
        return

    # Is spectator?
    if es.getplayerteam(userid) < 2:
        return

    # Is player dead?
    if getPlayer(userid).isdead:
        return

    # Give the weapon
    Player(userid).give_weapon()
예제 #47
0
def player_spawn_f(userid):
    userteam = es.getplayerteam(userid)
    if userteam < 2:
        return
    steamid = getplayerid(userid)
    if steamid != "BOT":
        skin = str(es.keygetvalue(steamid, "player_data", "skin"))
        primary_weapon = str(
            es.keygetvalue(steamid, "player_data", "primary_weapon"))
        secondary_weapon = str(
            es.keygetvalue(steamid, "player_data", "secondary_weapon"))
        if skin == "sas":
            est.setmodel(userid, "player/ct_sas.mdl")
            esc.tell(
                userid,
                "#0,255,255[Player Skins Effect]#255,255,255 Free #55,55,55Night#0,255,0vision"
            )
            est.give(userid, "item_nvgs")
        est.give(userid, "item_assaultsuit")
        es.setplayerprop(userid, _moneyprop, 0)
        est.removeweapon(userid, 1)
        est.removeweapon(userid, 2)
        if "weapon" in primary_weapon:
            est.give(userid, primary_weapon)
        if "weapon" in secondary_weapon:
            est.give(userid, secondary_weapon)
        est.speed(userid, 1.5)
    if steamid == "BOT":
        username = es.getplayername(userid)
        if "Gangsters" in username:
            number = int(username.split()[2])
            role = random.choice(["rifler", "melee"])
            if role == "rifler":
                est.setmodel(userid, "player/t_phoenix.mdl")
                est.removeweapon(userid, 1)
                est.removeweapon(userid, 2)
                gamethread.queue(
                    es.ServerCommand,
                    ('es_xgive %s weapon_%s' %
                     (userid,
                      random.choice([
                          "glock", "ak47", "famas", "mac10", "mp5navy", "ump45"
                      ]))))
            elif role == "melee":
                est.setmodel(userid, "player/t_arctic.mdl")
                est.removeweapon(userid, 1)
                est.removeweapon(userid, 2)
                est.sethealth(userid, 100)
예제 #48
0
파일: afk.py 프로젝트: cagemonkey/GunGame
    def is_active(self):
        '''
        Sets the player to a state that is NOT AFK.
        Only used when we know that the player is active and NOT AFK.

        Example:
            event player_jump
        '''
        # Make sure player is on a team
        if es.getplayerteam(self.userid) < 2:
            raise ValueError('Unable to make player active ' +
                            '(%s): not on a team.' % self.userid)

        # Reset player math total
        self.total = 0
        self.afkrounds = 0
예제 #49
0
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])
예제 #50
0
def flashbang_detonate(ev):  
    level = playerlist[ev['userid']].GetSkillLevel(skillname)
    team = 5 - int(ev['es_userteam'])      
    if level > 0:
        time = level * 2
        power = level * 100
        for i in stun:
            if int(es.getplayerteam(i)) == team:
                es.usermsg('create', 'shake', 'Shake')
                es.usermsg('write',  'byte',  'shake', 0)
                es.usermsg('write',  'float', 'shake', power)
                es.usermsg('write',  'float', 'shake', 1.0)
                es.usermsg('write',  'float', 'shake', time)
                es.usermsg('send',   'shake', i)
                es.usermsg('delete', 'shake')
    del stun[:]
예제 #51
0
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])
예제 #52
0
def player_spawn(ev):
    global checksites, coords
    userid = ev['userid']
    try:
        if not checksites:
            mapsites[mapname].announce(userid)
        else:
            if es.getplayersteamid(userid) != 'BOT':
                siteCheck()
                gamethread.delayed(0.5, mapsites[mapname].announce, (userid))
                checksites = 0
    except KeyError:
        mapsites[mapname] = bombsites(mapname, 'A')
        mapsites[mapname].announce(userid)
    if es.getplayerteam(ev['userid']) == 3:
        if not es.getplayerlocation(ev['userid']) in coords:
            coords.append(es.getplayerlocation(ev['userid']))
예제 #53
0
def client_command_filter(userid, args):
    """
    Checks all non-admin dead players for spectating an opponent
    """
    team = es.getplayerteam(userid)
    if userid not in dead_players or not args or team not in (2, 3):
        return True

    if userid in delays:
        gamethread.cancelDelayed('xaobserve_%s' % userid)
        delays.remove(userid)

    if len(args):
        if args[0] == 'spec_mode':
            if es.getplayerprop(userid, 'CBasePlayer.m_iObserverMode') == 3 and int(allow_chase):
                es.setplayerprop(userid, 'CBasePlayer.m_iObserverMode', 4)
            else:
                es.setplayerprop(userid, 'CBasePlayer.m_iObserverMode', 3)
            return False
    
        elif args[0] == 'spec_next' and team_handles[team]:
            target_handle = es.getplayerprop(userid, 'CBasePlayer.m_hObserverTarget')
            if target_handle in team_handles[team]:
                target_index = team_handles[team].index(target_handle) + 1
                if target_index >= len(team_handles[team]):
                    target_index = 0
                dead_players[userid] = team_handles[team][target_index]
            else:
                dead_players[userid] = team_handles[team][0]
            es.setplayerprop(userid, 'CBasePlayer.m_hObserverTarget', dead_players[userid])
            return False
    
        elif args[0] == 'spec_prev' and team_handles[team]:
            target_handle = es.getplayerprop(userid, 'CBasePlayer.m_hObserverTarget')
            if target_handle in team_handles[team]:
                target_index = team_handles[team].index(target_handle) - 1
                if target_index < 0:
                    target_index = len(team_handles[team]) - 1
                dead_players[userid] = team_handles[team][target_index]
            else:
                dead_players[userid] = team_handles[team][0]
            es.setplayerprop(userid, 'CBasePlayer.m_hObserverTarget', dead_players[userid])
            return False

    return True
예제 #54
0
def check_bonus(userid):
    # Valid userid?
    if userid < 1:
        return False

    # Valid team?
    if es.getplayerteam(userid) < 2:
        return False

    # Dead?
    if getPlayer(userid).isdead:
        return False

    # Nade level?
    if Player(userid).weapon != 'hegrenade':
        return False

    return True