Пример #1
0
def getSiteIndex(centerpos):
    for index in es.createentitylist('func_bomb_target'):
        current_min = vecmath.vector(es.getindexprop(index, 'CBaseEntity.m_Collision.m_vecMins'))
        current_max = vecmath.vector(es.getindexprop(index, 'CBaseEntity.m_Collision.m_vecMaxs'))
        if vecmath.isbetweenRect(centerpos, current_min, current_max):
             return index
    return 0
Пример #2
0
def getSiteIndex(centerpos):
    for index in es.createentitylist('func_bomb_target'):
        current_min = vecmath.vector(
            es.getindexprop(index, 'CBaseEntity.m_Collision.m_vecMins'))
        current_max = vecmath.vector(
            es.getindexprop(index, 'CBaseEntity.m_Collision.m_vecMaxs'))
        if vecmath.isbetweenRect(centerpos, current_min, current_max):
            return index
    return 0
Пример #3
0
def siteCheck():
    bombsitesNum.clear()
    managerindex = es.getentityindex('cs_player_manager')
    if managerindex > 0:
        index = getSiteIndex(vecmath.vector(es.getindexprop(managerindex, 'CCSPlayerResource.m_bombsiteCenterA')))
        if index:
            bombsitesNum['A'] = index
        index = getSiteIndex(vecmath.vector(es.getindexprop(managerindex, 'CCSPlayerResource.m_bombsiteCenterB')))
        if index:
            bombsitesNum['B'] = index
Пример #4
0
def pre_weapon_fire(ev):
    userid = int(ev['userid'])
    weapon = str(ev['weapon'])
    weapon_index = getweaponindex(userid, weapon)
    player_ammo = est.getammo(userid, weapon)
    if player_ammo > 1:
        est.setclipammo(userid, weapon, 256)
        est.setammo(userid, weapon, est.getammo(userid, weapon) - 1)
    else:
        est.setclipammo(userid, weapon, 0)
        est.setammo(userid, weapon, 0)

    if weapon == "glock":
        es.playsound(userid, "zeisenproject/The-Killers/sounds/sndGlock.wav", 1.0)
    
    if weapon == "mp5navy":
        es.playsound(userid, "zeisenproject/The-Killers/sounds/snd9mm.wav", 1.0)

    if weapon == "ump45":
        es.playsound(userid, "zeisenproject/The-Killers/sounds/sndUmp.wav", 1.0)

    if weapon == "ak47":
        es.playsound(userid, "zeisenproject/The-Killers/sounds/sndAk47.wav", 1.0)

    if weapon == "mac10":
        es.playsound(userid, "zeisenproject/The-Killers/sounds/sndUzi.wav", 1.0)

    if weapon == "m3":
        es.playsound(userid, "zeisenproject/The-Killers/sounds/sndDoubleBarrel.wav", 1.0)
    
    if weapon == "xm1014":
        es.playsound(userid, "zeisenproject/The-Killers/sounds/sndXM1014.wav", 1.0)
        
    if weapon == "famas":
        es.playsound(userid, "zeisenproject/The-Killers/sounds/sndKalashnikov.wav", 1.0)
    
    if weapon in "m4a1, usp":
        if weapon == "m4a1": SilencerOn = es.getindexprop(weapon_index, "CWeaponM4A1.m_bSilencerOn")
        else: SilencerOn = es.getindexprop(weapon_index, "CWeaponUSP.m_bSilencerOn")
        
        if SilencerOn:
            es.playsound(userid, "zeisenproject/The-Killers/sounds/sndSilencer.wav", 1.0)
        else:
            if weapon == "m4a1":
                es.playsound(userid, "zeisenproject/The-Killers/sounds/sndM16.wav", 1.0)
            else:
                es.playsound(userid, "zeisenproject/The-Killers/sounds/sndUsp.wav", 1.0)

    if weapon == "knife":
        es.playsound(userid, "zeisenproject/The-Killers/sounds/sndSwing%s.wav" %(random.randint(1,2)), 1.0)
Пример #5
0
    def removeWeapon(self, weapon):
        """
      Executes "lastinv" on the client if the weapon to remove is the player's active weapon
      Removes the weapon by index
      Creates a new weapon at the player's feet if necessary
      Announces the restricted pickup
      """
        longname = "weapon_" + weapon
        xarestrict.logging.log("Weapon %s has been removed from user %s" % (weapon, es.getplayername(self.userid)))
        if es.createplayerlist(self.userid)[self.userid]["weapon"] == longname:
            es.cexec(self.userid, "lastinv")

        for index in es.createentitylist(longname):
            if es.getindexprop(x, "CBaseEntity.m_hOwnerEntity") <> self.handle:
                continue

            gamethread.delayedname(0.2, "saferemove_%s" % index, saferemove, index)

            if (getTeam(2).isRestricted(weapon) and getTeam(3).isRestricted(weapon)) if int(removebanned) else False:
                lastgive = -1

            else:
                eye_angles = tuple(es.getplayerprop(self.userid, eyeangle_prop % x) for x in range(3))
                es.server.cmd("es_xsetang %s 90 0 0" % self.userid)

                es.server.cmd("es_xentcreate %s %s" % (self.userid, longname))
                lastgive = int(es.ServerVar("eventscripts_lastgive"))
                setNPCWeapon(longname)

                es.server.cmd("es_xsetang %s %s %s %s" % ((self.userid,) + eye_angles))

            self.announceRestrictedPickup(weapon, lastgive)

            break
Пример #6
0
   def removeWeapon(self, weapon):
      """
      Executes "lastinv" on the client if the weapon to remove is the player's active weapon
      Removes the weapon by index
      Creates a new weapon at the player's feet if necessary
      Announces the restricted pickup
      """
      longname = 'weapon_' + weapon

      if es.createplayerlist(self.userid)[self.userid]['weapon'] == longname:
         es.cexec(self.userid, 'lastinv')

      for index in es.createentitylist(longname):
         if es.getindexprop(x, 'CBaseEntity.m_hOwnerEntity') <> self.handle: continue

         gamethread.delayedname(0.2, 'saferemove_%s'%index, saferemove, index)

         if (getTeam(2).isRestricted(weapon) and getTeam(3).isRestricted(weapon)) if int(removebanned) else False:
            lastgive = -1

         else:
            eye_angles = tuple(es.getplayerprop(self.userid, eyeangle_prop % x) for x in range(3))
            es.server.cmd('es_xsetang %s 90 0 0' % self.userid)

            es.server.cmd('es_xentcreate %s %s' % (self.userid, longname))
            lastgive = int(es.ServerVar('eventscripts_lastgive'))
            setNPCWeapon(longname)

            es.server.cmd('es_xsetang %s %s %s %s' % ((self.userid,) + eye_angles))

         self.announceRestrictedPickup(weapon, lastgive)

         break
def player_death(event_var):
    # Find the number of hostages following the victim
    handle = es.getplayerhandle(event_var['userid'])
    hostages = len(filter(lambda index: es.getindexprop(index,
        'CHostage.m_leader') == handle, es.getEntityIndexes('hostage_entity')))

    # Were any hostages following?
    if not hostages:
        return

    # Was suicide?
    attacker = int(event_var['attacker'])
    if not attacker:
        return

    # Was a team kill?
    if event_var['es_userteam'] == event_var['es_attackerteam']:
        return

    # Get the attacker instance
    ggPlayer = Player(attacker)

    # Increment player hostage stops
    ggPlayer.hostage_stopped += hostages

    # Enough hostages stopped to level player up?
    if ggPlayer.hostage_stopped >= int(gg_hostage_stopped_stops):

        # Decrease the hostage stopped counter
        ggPlayer.hostage_stopped -= int(gg_hostage_stopped_stops)

        # The number of levels we will level up the player
        levels = 1

        # If they shouldn't be skipping their current level, stop here
        if (not int(gg_hostage_stopped_skip_nade)
          and ggPlayer.weapon == 'hegrenade') or (
          not int(gg_hostage_stopped_skip_knife)
          and ggPlayer.weapon == 'knife'):
            msg(ggPlayer.userid, 'CannotSkipLevel_ByStopping',
                {'level': ggPlayer.weapon})
            return

        # Loop through weapons of the levels we plan to level the player past
        for weapon in getLevelupList(ggPlayer.level,
          ggPlayer.level + int(gg_hostage_stopped_levels)):
            # If gg_hostage_stopped_skip_knife or gg_hostage_stopped_skip_nade
            # are disabled, make sure the player will not skip that level
            if (not int(gg_hostage_stopped_skip_knife)
              and weapon == 'knife') or (
              not int(gg_hostage_stopped_skip_nade)
              and weapon == 'hegrenade'):
                msg(ggPlayer.userid, 'CannotSkipLevel_ByStopping',
                    {'level': weapon})
                break

            # Add to the number of levels they will gain
            levels += 1

        ggPlayer.levelup(levels, 0, 'hostage_stopped')
Пример #8
0
def _get_view_coordinates(user_ID):
    model = "props_c17/tv_monitor01_screen.mdl"
    es.server.cmd("es_xprop_dynamic_create %s %s" %(user_ID, model))
    last_give = int(es.ServerVar("eventscripts_lastgive"))
    location = es.getindexprop(last_give, "CBaseEntity.m_vecOrigin")
    es.server.insertcmd("es_xremove %s" % last_give)
    return location
Пример #9
0
def round_start(event_var):
    '''Called at the start of every round'''

    # Remove weapons from the map
    do_not_strip = [(x.strip() if x.strip().startswith('weapon_') else
                     'weapon_%s' % x.strip())
                    for x in str(gg_map_strip_exceptions).split(',')
                    if x.strip() != '']

    for weapon in getWeaponList('#all'):
        # Make sure that the admin doesn't want the weapon left on the map
        if weapon in do_not_strip:
            continue

        # Remove all weapons of this type from the map
        for index in weapon.indexlist:
            # If the weapon has an owner, stop here
            if es.getindexprop(index, 'CBaseEntity.m_hOwnerEntity') != -1:
                continue

            removeEntityByIndex(index)

    # Equip players with a knife and
    # possibly item_kevlar or item_assaultsuit
    equip_player()
Пример #10
0
def _remove_weapon(userid, weapon):
    handle = es.getplayerhandle(userid)
    weapon = _prepend_prefix(weapon)
    for index in es.createentitylist(weapon):
        if es.getindexprop(index, 'CBaseEntity.m_hOwnerEntity') == handle:
            es.server.cmd('es_xremove %s' % index)
            break
Пример #11
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)
Пример #12
0
def siteCheck():
    bombsitesNum.clear()
    managerindex = es.getentityindex('cs_player_manager')
    if managerindex > 0:
        index = getSiteIndex(
            vecmath.vector(
                es.getindexprop(managerindex,
                                'CCSPlayerResource.m_bombsiteCenterA')))
        if index:
            bombsitesNum['A'] = index
        index = getSiteIndex(
            vecmath.vector(
                es.getindexprop(managerindex,
                                'CCSPlayerResource.m_bombsiteCenterB')))
        if index:
            bombsitesNum['B'] = index
Пример #13
0
def _get_view_coordinates(user_ID):
    model = "props_c17/tv_monitor01_screen.mdl"
    es.server.cmd("es_xprop_dynamic_create %s %s" % (user_ID, model))
    last_give = int(es.ServerVar("eventscripts_lastgive"))
    location = es.getindexprop(last_give, "CBaseEntity.m_vecOrigin")
    es.server.insertcmd("es_xremove %s" % last_give)
    return location
Пример #14
0
def removeidle(arg_weapons='#all'):
   """Removes idle weapons of the desired type"""
   arg_weapons = getWeaponList(arg_weapons)
   if not arg_weapons: raise IndexError, 'Invalid weapon list'

   for weapon in arg_weapons:
      for index in filter(lambda x: es.getindexprop(x, 'CBaseEntity.m_hOwnerEntity') == -1, es.createentitylist('weapon_' + weapon)):
         es.server.cmd('es_xremove %s' % index)
Пример #15
0
def RemoveWeapon(userid, weapon):
    handle = es.getplayerhandle(userid)
    if not weapon.startswith('weapon_'):
        weapon = "weapon_" + weapon
    for index in es.createentitylist(weapon):
        if es.getindexprop(index, 'CBaseEntity.m_hOwnerEntity') == handle:
            es.server.cmd('es_xremove %s' % index)
            break
Пример #16
0
def _extinguish(userid):
    napalmlist = es.createentitylist("entityflame")
    handle = es.getplayerhandle(userid)
    for flame_entity in napalmlist:
        string = es.getindexprop(flame_entity, 'CEntityFlame.m_hEntAttached')
        if string == handle:
            es.setindexprop(flame_entity, 'CEntityFlame.m_flLifetime', 0)
            break
Пример #17
0
def set_colour(index, red, blue, green, alpha=255):
    """Set a player's model colour.

    Arguments:
    index - the player's index.
    value - a 4 part tuple (r, b, g, a) representing the colour to set the
    user to.

    """
    es.setindexprop(index, "CBaseEntity.m_nRenderMode",
                    es.getindexprop(index, "CBaseEntity.m_nRenderMode") | 1)
    es.setindexprop(index, "CBaseEntity.m_nRenderFX",
                    es.getindexprop(index, "CBaseEntity.m_nRenderFX") | 256)
    colour = red + (green << 8) + (blue << 16) + (alpha << 24)
    if colour >= 2 ** 31:
        colour -= 2 ** 32
    es.setindexprop(index, "CBaseEntity.m_clrRender", colour)
def _extinguish(userid): 
    napalmlist = es.createentitylist("entityflame") 
    handle = es.getplayerhandle(userid) 
    for flame_entity in napalmlist: 
        string = es.getindexprop(flame_entity, 'CEntityFlame.m_hEntAttached') 
        if string == handle: 
            es.setindexprop(flame_entity, 'CEntityFlame.m_flLifetime', 0) 
            break
Пример #19
0
def RemoveWeapon(userid, weapon):
    handle = es.getplayerhandle(userid)
    if not weapon.startswith('weapon_'):
        weapon = "weapon_" + weapon
    for index in es.createentitylist(weapon):
        if es.getindexprop(index, 'CBaseEntity.m_hOwnerEntity') == handle:
            es.server.cmd('es_xremove %s' % index)
            break
Пример #20
0
 def _get_clip(self):
     clip = es.getindexprop(self.index,
                            "CBaseCombatWeapon.LocalWeaponData.m_iClip1")
     if clip != -1:
         return clip
     # Instead of raising an exception, if the weapon has no clip value,
     # return None.
     return None
Пример #21
0
def Kill_InfectedClip(Userid):
	handle = es.getplayerhandle(Userid)
	List = es.createentitylist()
	for index in List:
		if "tf_weapon" in List[index]["classname"]:
			for item in List[index]:
				if "clip" in str(item).lower():
					if es.getindexprop(index,'CBaseEntity.m_hOwnerEntity') == handle:
						es.setindexprop(index,item,0)
Пример #22
0
    def _is_mode_on(self):
        """Determine whether the weapon's SLOT_SECONDARY attack mode is on and
        return the result. Immediately return False if the weapon has no
        SLOT_SECONDARY mode.

        """
        if self.weapon_type.weapon_mode_property is None:
            return False
        return bool(es.getindexprop(self.index, self.weapon_type))
Пример #23
0
def player_death(event_var):
    # Get the userids of the attacker and victim
    attacker = int(event_var['attacker'])
    userid = int(event_var['userid'])

    # If there is no attacker (falling to death), return
    if not attacker:
        return

    # If the kill was a suicide, return
    if attacker == userid:
        return

    # If the kill was a teamkill, return
    if event_var['es_attackerteam'] == event_var['es_userteam']:
        return

    # Get the name of the weapon used to get the kill
    weapon = event_var['weapon']

    ggPlayer = Player(attacker)
    level = ggPlayer.level

    # If the player has already leveled up internally, check their last level
    if attacker in recentlyLeveled:
        level -= 1
        level = 1 if level < 1 else level

    reloadWeapons = [get_level_weapon(level)]
    # If nade bonus is loaded, add the bonus weapons to reloadWeapons
    if not str(gg_nade_bonus) in ('', '0'):
        reloadWeapons.extend(get_weapon(userid))

    # If the weapon name doesn't match the player's level's weapon name at the
    # time, return
    if not weapon in reloadWeapons:
        return

    # If the player is on hegrenade or knife level, return
    if weapon in ('hegrenade', 'knife'):
        return

    # Get the weapon object and the size if its clip
    weaponObject = getWeapon(weapon)

    # Find the attacker's weapon index to be used to reload the weapon
    playerHandle = es.getplayerhandle(attacker)

    for index in weaponObject.indexlist:
        # When the attacker's handle matches the index handle we have found
        # the attacker's weapon index
        if es.getindexprop(index,
                           'CBaseEntity.m_hOwnerEntity') == playerHandle:
            # Set the clip to the maximum ammo allowed
            getPlayer(attacker)['clip'][weaponObject] = weaponObject.clip
            break
Пример #24
0
def player_death(event_var):
    # Get the userids of the attacker and victim
    attacker = int(event_var['attacker'])
    userid = int(event_var['userid'])

    # If there is no attacker (falling to death), return
    if not attacker:
        return

    # If the kill was a suicide, return
    if attacker == userid:
        return

    # If the kill was a teamkill, return
    if event_var['es_attackerteam'] == event_var['es_userteam']:
        return

    # Get the name of the weapon used to get the kill
    weapon = event_var['weapon']

    ggPlayer = Player(attacker)
    level = ggPlayer.level

    # If the player has already leveled up internally, check their last level
    if attacker in recentlyLeveled:
        level -= 1
        level = 1 if level < 1 else level

    reloadWeapons = [get_level_weapon(level)]
    # If nade bonus is loaded, add the bonus weapons to reloadWeapons
    if not str(gg_nade_bonus) in ('', '0'):
        reloadWeapons.extend(get_weapon(userid))

    # If the weapon name doesn't match the player's level's weapon name at the
    # time, return
    if not weapon in reloadWeapons:
        return

    # If the player is on hegrenade or knife level, return
    if weapon in ('hegrenade', 'knife'):
        return

    # Get the weapon object and the size if its clip
    weaponObject = getWeapon(weapon)

    # Find the attacker's weapon index to be used to reload the weapon
    playerHandle = es.getplayerhandle(attacker)

    for index in weaponObject.indexlist:
        # When the attacker's handle matches the index handle we have found
        # the attacker's weapon index
        if es.getindexprop(index,
          'CBaseEntity.m_hOwnerEntity') == playerHandle:
            # Set the clip to the maximum ammo allowed
            getPlayer(attacker)['clip'][weaponObject] = weaponObject.clip
            break
Пример #25
0
def removeidle(arg_weapons='#all'):
    """Removes idle weapons of the desired type"""
    arg_weapons = getWeaponList(arg_weapons)
    if not arg_weapons: raise IndexError, 'Invalid weapon list'

    for weapon in arg_weapons:
        for index in filter(
                lambda x: es.getindexprop(x, 'CBaseEntity.m_hOwnerEntity') ==
                -1, es.createentitylist('weapon_' + weapon)):
            es.server.cmd('es_xremove %s' % index)
Пример #26
0
def get_colour(index):
    """Calculate and return a 4 part tuple (r, b, g, a) representing the
    user's colour.

    Arguments:
    index - the player's index.

    """
    colour = es.getindexprop(index, "CBaseEntity.m_clrRender")
    return (colour & 0xff, (colour & 0xff00) >> 8,
            (colour & 0xff0000) >> 16, (colour & 0xff000000) >> 24)
Пример #27
0
def removeidle(arg_weapons="#all"):
    """Removes idle weapons of the desired type"""
    arg_weapons = getWeaponList(arg_weapons)
    if not arg_weapons:
        raise IndexError, "Invalid weapon list"

    for weapon in arg_weapons:
        for index in filter(
            lambda x: es.getindexprop(x, "CBaseEntity.m_hOwnerEntity") == -1, es.createentitylist("weapon_" + weapon)
        ):
            es.server.cmd("es_xremove %s" % index)
Пример #28
0
def _get_weapon(player):
    if player._attributes is None or player.auto_update_attributes:
        player.update_attributes()
    weapon = player._attributes["weapon"]
    if weapon is None:
        return None
    for index in weapons.indexes_by_names(weapon):
        ownership = es.getindexprop(index, "CBaseCombatWeapon.m_hOwner")
        if ownership == player.handle:
            return weapons.Weapon(index)
    return None
Пример #29
0
def idle_weapon_types_by_categories(*args):
    """Return a generator object of idle weapon indexes. If arguments are
    omitted, return all.

    Arguments:
    args - categories to filter return results by.

    """
    for index in _get_indexes(weapon_types_by_categories(*args)):
        if es.getindexprop(index, "CBaseCombatWeapon.m_hOwner") == -1:
            yield index
Пример #30
0
def _get_weapon(player):
    if player._attributes is None or player.auto_update_attributes:
        player.update_attributes()
    weapon = player._attributes["weapon"]
    if weapon is None:
        return None
    for index in weapons.indexes_by_names(weapon):
        ownership = es.getindexprop(index, "CBaseCombatWeapon.m_hOwner")
        if ownership == player.handle:
            return weapons.Weapon(index)
    return None
Пример #31
0
def _punishment_extinguish(userid, adminid, args, force):
    if str(xa_adminburn_anonymous) == '0' and not force:
        tokens = {}
        tokens['admin']   = es.getplayername(adminid)
        tokens['user']    = es.getplayername(userid)
        for user in playerlib.getPlayerList():
            es.tell(user, xalanguage("admin extinguish", tokens, user.get("lang")))
    # Copied from un-released playerlib
    flamelist = es.createentitylist("entityflame") 
    handle = es.getplayerhandle(userid) 
    for flame_entity in flamelist: 
        string = es.getindexprop(flame_entity, 'CEntityFlame.m_hEntAttached') 
        if string == handle: 
            es.setindexprop(flame_entity, 'CEntityFlame.m_flLifetime', 0) 
            break
Пример #32
0
def smokegrenade_detonate(event_var):
    """
    Executed when a smoke grenade detonates. Get the userid of the person
    who detonated it and add the user and entity into the class.

    @PARAM event_var - an automatically passed event instance
    """
    userid = event_var['userid']
    player = sourcerpg.players[userid]
    level  = player[skillName]
    if level:
        """ The player has at least level 1, so create an instance of this object """
        handle      = es.getplayerhandle(userid)
        for entity in es.createentitylist("smokegrenade_projectile"):
            if handle == es.getindexprop(entity, 'CBaseEntity.m_hOwnerEntity'):
                """ Add in the entitty as we have the owner so the right handle """
                smoke.addEntity(entity, userid)
                break
Пример #33
0
def smokegrenade_detonate(event_var):
    """
    Executed when a smoke grenade detonates. Get the userid of the person
    who detonated it and add the user and entity into the class.

    @PARAM event_var - an automatically passed event instance
    """
    userid = event_var['userid']
    player = sourcerpg.players[userid]
    level = player[skillName]
    if level:
        """ The player has at least level 1, so create an instance of this object """
        handle = es.getplayerhandle(userid)
        for entity in es.createentitylist("smokegrenade_projectile"):
            if handle == es.getindexprop(entity, 'CBaseEntity.m_hOwnerEntity'):
                """ Add in the entitty as we have the owner so the right handle """
                smoke.addEntity(entity, userid)
                break
Пример #34
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)
Пример #35
0
def removeIdleLoop():
    list_noStrip = [(x.strip() if x.strip().startswith('weapon_') else
        'weapon_%s' % x.strip()) for x in
        str(gg_map_strip_exceptions).split(',') if x.strip() != '']

    for weapon in getWeaponList('#all'):
        # Make sure that the admin doesn't want the weapon left on the map
        if weapon in list_noStrip:
            continue

        # Remove all weapons of this type from the map
        for index in weapon.indexlist:
            # If the weapon has an owner, stop here
            if es.getindexprop(index, 'CBaseEntity.m_hOwnerEntity') != -1:
                continue

            spe.removeEntityByIndex(index)

    gamethread.delayedname(5, "gg_removeIdleLoop", removeIdleLoop)
Пример #36
0
def HG_Trail(uid):
    handle = es.getplayerhandle(uid)
    index = 0
    for index in es.getEntityIndexes('hegrenade_projectile'):
        if handle == es.getindexprop(index, 'CBaseEntity.m_hOwnerEntity'):
            spe_effects.beamFollow(
                '#all',  # users
                0.,  # fDelay
                index,  # iEntityIndex
                'sprites/laser.vmt',  # szModelPath
                1,  # iHaloIndex
                0.5,  # fLife
                16,  # fWidth
                4,  # fEndWidth
                0,  # fFadeLength
                0,  # iRed
                255,  # iGreen
                0,  # iBlue
                255,  # iAlpha
            )
Пример #37
0
 def addAmmo(self, amount):
     """
     This function gets the current weapons of the user and adds ammo
     to their weapons.
     
     @PARAM amount - amount of ammo to add
     """
     weaponList  = weaponlib.getWeaponList('#primary')
     weaponList += weaponlib.getWeaponList("#secondary")
     for weapon in weaponList:
         for index in weapon.indexlist:
             if es.getindexprop(index, 'CBaseEntity.m_hOwnerEntity') == self.handle:
                 maxAmmo = weapon.maxammo
                 prop    = weapon.prop
                 currentAmmo = es.getplayerprop(self.userid, prop)
                 
                 currentAmmo += amount
                 if currentAmmo > maxAmmo:
                     currentAmmo = maxAmmo
                 es.setplayerprop(self.userid, prop, currentAmmo)
Пример #38
0
def HG_Trail(uid):
    handle = es.getplayerhandle(uid)
    index = 0
    for index in es.getEntityIndexes('hegrenade_projectile'):
        if handle == es.getindexprop(index, 'CBaseEntity.m_hOwnerEntity'):
            spe_effects.beamFollow(
                '#all', # users
                0., # fDelay
                index, # iEntityIndex
                'sprites/laser.vmt', # szModelPath
                1, # iHaloIndex
                0.5, # fLife
                16, # fWidth
                4, # fEndWidth
                0, # fFadeLength
                0, # iRed
                255, # iGreen
                0, # iBlue
                255, # iAlpha
            )
Пример #39
0
    def removeWeapon(self, weapon):
        """
      Executes "lastinv" on the client if the weapon to remove is the player's active weapon
      Removes the weapon by index
      Creates a new weapon at the player's feet if necessary
      Announces the restricted pickup
      """
        longname = 'weapon_' + weapon
        xarestrict.logging.log("Weapon %s has been removed from user %s" %
                               (weapon, es.getplayername(self.userid)))
        if es.createplayerlist(self.userid)[self.userid]['weapon'] == longname:
            es.cexec(self.userid, 'lastinv')

        for index in es.createentitylist(longname):
            if es.getindexprop(x, 'CBaseEntity.m_hOwnerEntity') <> self.handle:
                continue

            gamethread.delayedname(0.2, 'saferemove_%s' % index, saferemove,
                                   index)

            if (getTeam(2).isRestricted(weapon)
                    and getTeam(3).isRestricted(weapon)
                ) if int(removebanned) else False:
                lastgive = -1

            else:
                eye_angles = tuple(
                    es.getplayerprop(self.userid, eyeangle_prop % x)
                    for x in range(3))
                es.server.cmd('es_xsetang %s 90 0 0' % self.userid)

                es.server.cmd('es_xentcreate %s %s' % (self.userid, longname))
                lastgive = int(es.ServerVar('eventscripts_lastgive'))
                setNPCWeapon(longname)

                es.server.cmd('es_xsetang %s %s %s %s' %
                              ((self.userid, ) + eye_angles))

            self.announceRestrictedPickup(weapon, lastgive)

            break
Пример #40
0
def removeIdleLoop():
    list_noStrip = [
        (x.strip() if x.strip().startswith('weapon_') else 'weapon_%s' %
         x.strip()) for x in str(gg_map_strip_exceptions).split(',')
        if x.strip() != ''
    ]

    for weapon in getWeaponList('#all'):
        # Make sure that the admin doesn't want the weapon left on the map
        if weapon in list_noStrip:
            continue

        # Remove all weapons of this type from the map
        for index in weapon.indexlist:
            # If the weapon has an owner, stop here
            if es.getindexprop(index, 'CBaseEntity.m_hOwnerEntity') != -1:
                continue

            spe.removeEntityByIndex(index)

    gamethread.delayedname(5, "gg_removeIdleLoop", removeIdleLoop)
Пример #41
0
def player_spawn(event_var):
    """
    Executed automatically when a player spawns. Test to see if their recover
    key is active, if so, activate their weapons and give them back their
    previous weapons.

    @PARAM event_var - an automatically passed event instance
    """
    userid = event_var['userid']
    if es.getplayerprop(userid, 'CBasePlayer.pl.deadflag'):
        """ The player is dead so we ignore this event, return early """
        return
    player = sourcerpg.players[userid]
    if player is not None:
        if player['recover']:
            level = player[skillName]
            if level:
                currentDelay = 0.1
                """ Player is at least level one in this skill """
                for weaponName in weaponlib.getWeaponNameList("#grenade"):
                    while player[weaponName] > 0:
                        gamethread.delayed(currentDelay, giveWeapon, (userid, weaponName))
                        player[weaponName] -= 1

                if level >= 2:
                    """ Player has at least level 2, give them back their secondary """
                    if player["secondary"]:
                        handle = es.getplayerhandle(userid)
                        for index in weaponlib.getIndexList({2 : "weapon_glock", 3 : "weapon_usp"}[es.getplayerteam(userid)]):
                            if es.getindexprop(index, 'CBaseEntity.m_hOwnerEntity') == handle:
                                safeRemove(index)
                                break
                        gamethread.delayed(currentDelay, giveWeapon, (userid, player["secondary"]))

                if level >= 3:
                    """ Player has at least level 3, give them back their primary """
                    if player["primary"]:
                        gamethread.delayed(currentDelay, giveWeapon, (userid, player["primary"]))

                player['recover'] = False
Пример #42
0
def setentname_cmd(args):
    if gamename in ['cstrike', 'dod', 'hl2mp']:
        userid = es.getuserid()
        if userid:
            if len(args) > 1:
                entity = args[0]
                entityname = args[1]
                if entity.isdigit() and entityname:
                    player = playerlib.getPlayer(userid)
                    playerlocation = vecmath.vector(player.getLocation())
                    playermovetype = es.getplayerprop(int(player), 'CBaseEntity.movetype')
                    if gamename == 'cstrike':
                        playerviewangles = vecmath.vector((float(es.getplayerprop(int(player), 'CCSPlayer.m_angEyeAngles[0]')), float(es.getplayerprop(int(player), 'CCSPlayer.m_angEyeAngles[1]')), 0.0))
                        playerviewoffset = vecmath.vector((float(es.getplayerprop(int(player), 'CBasePlayer.localdata.m_vecViewOffset[0]')), float(es.getplayerprop(int(player), 'CBasePlayer.localdata.m_vecViewOffset[1]')), float(es.getplayerprop(int(player), 'CBasePlayer.localdata.m_vecViewOffset[2]'))))
                    elif gamename == 'dod':
                        playerviewangles = vecmath.vector((float(es.getplayerprop(int(player), 'CDODPlayer.m_angEyeAngles[0]')), float(es.getplayerprop(int(player), 'CDODPlayer.m_angEyeAngles[1]')), 0.0))
                        playerviewoffset = vecmath.vector((float(es.getplayerprop(int(player), 'CBasePlayer.localdata.m_vecViewOffset[0]')), float(es.getplayerprop(int(player), 'CBasePlayer.localdata.m_vecViewOffset[1]')), float(es.getplayerprop(int(player), 'CBasePlayer.localdata.m_vecViewOffset[2]'))))
                    elif gamename == 'hl2mp':
                        playerviewangles = vecmath.vector((float(es.getplayerprop(int(player), 'CHL2MP_Player.m_angEyeAngles[0]')), float(es.getplayerprop(int(player), 'CHL2MP_Player.m_angEyeAngles[1]')), 0.0))
                        playerviewoffset = vecmath.vector((float(es.getplayerprop(int(player), 'CHL2MP_Player.baseclass.baseclass.baseclass.baseclass.m_vecViewOffset[0]')), float(es.getplayerprop(int(player), 'CHL2MP_Player.baseclass.baseclass.baseclass.baseclass.m_vecViewOffset[1]')), float(es.getplayerprop(int(player), 'CHL2MP_Player.baseclass.baseclass.baseclass.baseclass.m_vecViewOffset[2]'))))
                    playerviewvector = (vecmath.vector(vecmath.angles((1.0,1.0,1.0), playerviewangles))) * 0.5
                    entitylocation = vecmath.vector(es.getindexprop(entity, 'CBaseEntity.m_vecOrigin'))
                    entityviewvector = (playerlocation - (playerviewoffset + playerviewvector)) + entitylocation
                    player.freeze(1)
                    player.setLocation(list(entityviewvector))
                    player.viewCoord(list(entitylocation))
                    es.entsetname(int(player), entityname)
                    es.server.cmd('es_xsetang %s %s %s' % (int(player), playerviewangles[0], playerviewangles[1]))
                    es.setplayerprop(int(player), 'CBaseEntity.movetype', playermovetype)
                    player.setLocation(list(playerlocation))
                else:
                    es.dbgmsg(0, 'setentname: Invalid target user "%s" to setentname.' % target)
            else:
                es.dbgmsg(0, 'setentname: Not enough arguments to setentname. Syntax: setentname <entity-index#> <desired-name>')
        else:
            es.dbgmsg(0, 'setentname: No userid available. Sorry, no targetname set!')
    else:
        es.dbgmsg(0, 'setentname: Game "%s" is not supported. Sorry, no targetname set!' % gamename)
Пример #43
0
def round_start(event_var):
    '''Called at the start of every round'''

    # Remove weapons from the map
    do_not_strip = [(x.strip() if x.strip().startswith('weapon_') else
        'weapon_%s' % x.strip()) for x in str(
        gg_map_strip_exceptions).split(',') if x.strip() != '']

    for weapon in getWeaponList('#all'):
        # Make sure that the admin doesn't want the weapon left on the map
        if weapon in do_not_strip:
            continue

        # Remove all weapons of this type from the map
        for index in weapon.indexlist:
            # If the weapon has an owner, stop here
            if es.getindexprop(index, 'CBaseEntity.m_hOwnerEntity') != -1:
                continue

            removeEntityByIndex(index)

    # Equip players with a knife and
    # possibly item_kevlar or item_assaultsuit
    equip_player()
Пример #44
0
def getentitycolor(index):
    color = es.getindexprop(index, "CBaseEntity.m_clrRender")
    return tuple(
        int(x) for x in (color & 0xff, (color & 0xff00) >> 8,
                         (color & 0xff0000) >> 16, (color & 0xff000000) >> 24))
Пример #45
0
def _has_c4(player):
    for index in weapons.weapon_types_by_name("weapon_c4").indexes:
        ownership = es.getindexprop(index, "CBaseCombatWeapon.m_hOwner")
        if ownership == player.handle:
            return True
    return False
Пример #46
0
def setentname_cmd(args):
    if gamename in ['cstrike', 'dod', 'hl2mp']:
        userid = es.getuserid()
        if userid:
            if len(args) > 1:
                entity = args[0]
                entityname = args[1]
                if entity.isdigit() and entityname:
                    player = playerlib.getPlayer(userid)
                    playerlocation = vecmath.vector(player.getLocation())
                    playermovetype = es.getplayerprop(int(player),
                                                      'CBaseEntity.movetype')
                    if gamename == 'cstrike':
                        playerviewangles = vecmath.vector(
                            (float(
                                es.getplayerprop(
                                    int(player),
                                    'CCSPlayer.m_angEyeAngles[0]')),
                             float(
                                 es.getplayerprop(
                                     int(player),
                                     'CCSPlayer.m_angEyeAngles[1]')), 0.0))
                        playerviewoffset = vecmath.vector(
                            (float(
                                es.getplayerprop(
                                    int(player),
                                    'CBasePlayer.localdata.m_vecViewOffset[0]')
                            ),
                             float(
                                 es.getplayerprop(
                                     int(player),
                                     'CBasePlayer.localdata.m_vecViewOffset[1]'
                                 )),
                             float(
                                 es.getplayerprop(
                                     int(player),
                                     'CBasePlayer.localdata.m_vecViewOffset[2]'
                                 ))))
                    elif gamename == 'dod':
                        playerviewangles = vecmath.vector(
                            (float(
                                es.getplayerprop(
                                    int(player),
                                    'CDODPlayer.m_angEyeAngles[0]')),
                             float(
                                 es.getplayerprop(
                                     int(player),
                                     'CDODPlayer.m_angEyeAngles[1]')), 0.0))
                        playerviewoffset = vecmath.vector(
                            (float(
                                es.getplayerprop(
                                    int(player),
                                    'CBasePlayer.localdata.m_vecViewOffset[0]')
                            ),
                             float(
                                 es.getplayerprop(
                                     int(player),
                                     'CBasePlayer.localdata.m_vecViewOffset[1]'
                                 )),
                             float(
                                 es.getplayerprop(
                                     int(player),
                                     'CBasePlayer.localdata.m_vecViewOffset[2]'
                                 ))))
                    elif gamename == 'hl2mp':
                        playerviewangles = vecmath.vector(
                            (float(
                                es.getplayerprop(
                                    int(player),
                                    'CHL2MP_Player.m_angEyeAngles[0]')),
                             float(
                                 es.getplayerprop(
                                     int(player),
                                     'CHL2MP_Player.m_angEyeAngles[1]')), 0.0))
                        playerviewoffset = vecmath.vector((
                            float(
                                es.getplayerprop(
                                    int(player),
                                    'CHL2MP_Player.baseclass.baseclass.baseclass.baseclass.m_vecViewOffset[0]'
                                )),
                            float(
                                es.getplayerprop(
                                    int(player),
                                    'CHL2MP_Player.baseclass.baseclass.baseclass.baseclass.m_vecViewOffset[1]'
                                )),
                            float(
                                es.getplayerprop(
                                    int(player),
                                    'CHL2MP_Player.baseclass.baseclass.baseclass.baseclass.m_vecViewOffset[2]'
                                ))))
                    playerviewvector = (vecmath.vector(
                        vecmath.angles(
                            (1.0, 1.0, 1.0), playerviewangles))) * 0.5
                    entitylocation = vecmath.vector(
                        es.getindexprop(entity, 'CBaseEntity.m_vecOrigin'))
                    entityviewvector = (
                        playerlocation -
                        (playerviewoffset + playerviewvector)) + entitylocation
                    player.freeze(1)
                    player.setLocation(list(entityviewvector))
                    player.viewCoord(list(entitylocation))
                    es.entsetname(int(player), entityname)
                    es.server.cmd('es_xsetang %s %s %s' %
                                  (int(player), playerviewangles[0],
                                   playerviewangles[1]))
                    es.setplayerprop(int(player), 'CBaseEntity.movetype',
                                     playermovetype)
                    player.setLocation(list(playerlocation))
                else:
                    es.dbgmsg(
                        0,
                        'setentname: Invalid target user "%s" to setentname.' %
                        target)
            else:
                es.dbgmsg(
                    0,
                    'setentname: Not enough arguments to setentname. Syntax: setentname <entity-index#> <desired-name>'
                )
        else:
            es.dbgmsg(
                0,
                'setentname: No userid available. Sorry, no targetname set!')
    else:
        es.dbgmsg(
            0,
            'setentname: Game "%s" is not supported. Sorry, no targetname set!'
            % gamename)
Пример #47
0
def _get_player_weapon(handle, slot):
    for index in weapons.indexes_by_slot(slot):
        if es.getindexprop(index, "CBaseCombatWeapon.m_hOwner") == handle:
            return weapons.Weapon(index)
    return None
Пример #48
0
def _get_flame_indexes(player):
    for index in es.createentityindexlist("entityflame"):
        ownership = es.getindexprop(index, "CEntityFlame.m_hEntAttached")
        if ownership == player.handle:
            yield index
Пример #49
0
def getentitycolor(index):
    color = es.getindexprop(index, "CBaseEntity.m_clrRender")
    return tuple(int(x) for x in (color & 0xff, (color & 0xff00) >> 8, (color & 0xff0000) >> 16, (color & 0xff000000) >> 24))
Пример #50
0
def getgametime():
   index = es.createentity("env_particlesmokegrenade")
   gametime = es.getindexprop(index, "ParticleSmokeGrenade.m_flSpawnTime")
   spe.removeEntityByIndex(index)
   return gametime
Пример #51
0
def getindexprop(argv):
    result = es.getindexprop(*argv[1:])
    if result is not None:
        sv[argv[0]] = result
Пример #52
0
 def _get_owner(self):
     from esutils import players
     return players.get_player_from_handle(es.getindexprop(self.index,
                                           "CBaseCombatWeapon.m_hOwner"))