コード例 #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
ファイル: bomb_timer.py プロジェクト: madPO/es_plugin-depot
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
ファイル: Medic.py プロジェクト: Grimston/sourcerpg-es
    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
ファイル: player.py プロジェクト: cagemonkey/GunGame
    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
ファイル: xarestrict.py プロジェクト: StarsGame/source_addons
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
ファイル: gg_handicap.py プロジェクト: robtomlinson/GunGame
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
ファイル: gg_handicap.py プロジェクト: robtomlinson/GunGame
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
ファイル: gg_handicap.py プロジェクト: robtomlinson/GunGame
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
ファイル: Medic.py プロジェクト: Grimston/sourcerpg-es
    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
ファイル: gg_teamplay.py プロジェクト: robtomlinson/GunGame
    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
ファイル: xarestrict.py プロジェクト: StarsGame/source_addons
   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
ファイル: xaobserve.py プロジェクト: StarsGame/source_addons
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
ファイル: bomb_timer.py プロジェクト: eventscripts/BombTimer
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
ファイル: xarestrict.py プロジェクト: fizek/source_addons
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
ファイル: the_killers.py プロジェクト: Zeisenx/The-Killers
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
ファイル: helpers.py プロジェクト: cagemonkey/GunGame
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
ファイル: surftimer.py プロジェクト: Lange/SurfTimer
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
ファイル: Stunnade.py プロジェクト: The-Sky/infinity-rpg
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
ファイル: surftimer.py プロジェクト: Lange/SurfTimer
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
ファイル: xaobserve.py プロジェクト: StarsGame/source_addons
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