def give_weapon(self): ''' Gives a player their current levels weapon. ''' error = None # Make sure player is on a team if self.team < 2: error = ('Unable to give player weapon (%s): ' % self.userid + 'is not on a team.') # Make sure player is alive elif _getPlayer(self.userid).isdead: error = ('Unable to give player weapon (%s): ' % self.userid + 'is not alive.') # Error ? if error: raise GunGameError(error) # Knife ? if self.weapon == 'knife': # Make them use their knife _es.server.queuecmd('es_xsexec %s "use weapon_knife"' % (self.userid)) # If there is a level below the user's current level if self.level > 1: # Strip previous weapons self.strip_weapons(_level_weapon(self.level - 1)) else: self.strip() # Nade ? elif self.weapon == 'hegrenade': # Give them a grenade. given_weapon = _spe.giveNamedItem(self.userid, "weapon_hegrenade") # Make them use the grenade _es.server.queuecmd('es_xsexec %s "use weapon_hegrenade"' % (self.userid)) # If there is a level below the user's current level if self.level > 1: # Strip previous weapons self.strip_weapons(_level_weapon(self.level - 1)) else: self.strip() else: # Player owns this weapon. if _spe.ownsWeapon(self.userid, "weapon_%s" % self.weapon): # Make them use it. If we don't do this, a very # strange bug comes up which prevents the player # from getting their current level's weapon after # being stripped, _es.server.queuecmd('es_xsexec %s "use weapon_%s"' % (self.userid, self.weapon)) return # Player DOES NOT own this weapon. else: # Retrieve a list of all weapon names in the player's # possession playerWeapons = _spe.getWeaponDict(self.userid) if playerWeapons: # See if there is a primary weapon in the list of weapons pWeapon = set( playerWeapons.keys()).intersection(list_pWeapons) # See if there is a primary weapon in the list of weapons sWeapon = set( playerWeapons.keys()).intersection(list_sWeapons) # Set up the weapon to strip weapToStrip = None # Strip secondary weapon ? if 'weapon_' + self.weapon in list_sWeapons and sWeapon: weapToStrip = sWeapon.pop() # Strip primary weapon ? elif 'weapon_' + self.weapon in list_pWeapons and pWeapon: weapToStrip = pWeapon.pop() if weapToStrip: # Make them drop the weapon _spe.dropWeapon(self.userid, weapToStrip) # Now remove it _spe.removeEntityByInstance( playerWeapons[weapToStrip]["instance"]) # Now give them the weapon and save the weapon instance given_weapon = _spe.giveNamedItem(self.userid, "weapon_%s" % self.weapon) # Retrieve the weapon instance of the weapon they "should" own weapon_check = _spe.ownsWeapon(self.userid, "weapon_%s" % self.weapon) # Make sure that the player owns the weapon we gave them if weapon_check != given_weapon: # Remove the given weapon since the player does not own it _spe.removeEntityByInstance(given_weapon) # If they don't have the right weapon, fire give_weapon() if not weapon_check: self.give_weapon() return _es.server.queuecmd('es_xsexec %s "use weapon_%s"' % (self.userid, self.weapon))
def give_weapon(self): ''' Gives a player their current levels weapon. ''' error = None # Make sure player is on a team if self.team < 2: error = ('Unable to give player weapon (%s): ' % self.userid + 'is not on a team.') # Make sure player is alive elif _getPlayer(self.userid).isdead: error = ('Unable to give player weapon (%s): ' % self.userid + 'is not alive.') # Error ? if error: raise GunGameError(error) # Knife ? if self.weapon == 'knife': # Make them use their knife _es.server.queuecmd('es_xsexec %s "use weapon_knife"' % ( self.userid)) # If there is a level below the user's current level if self.level > 1: # Strip previous weapons self.strip_weapons(_level_weapon(self.level - 1)) else: self.strip() # Nade ? elif self.weapon == 'hegrenade': # Give them a grenade. given_weapon = _spe.giveNamedItem(self.userid, "weapon_hegrenade") # Make them use the grenade _es.server.queuecmd('es_xsexec %s "use weapon_hegrenade"' % ( self.userid)) # If there is a level below the user's current level if self.level > 1: # Strip previous weapons self.strip_weapons(_level_weapon(self.level - 1)) else: self.strip() else: # Player owns this weapon. if _spe.ownsWeapon(self.userid, "weapon_%s" % self.weapon): # Make them use it. If we don't do this, a very # strange bug comes up which prevents the player # from getting their current level's weapon after # being stripped, _es.server.queuecmd('es_xsexec %s "use weapon_%s"' % (self.userid, self.weapon)) return # Player DOES NOT own this weapon. else: # Retrieve a list of all weapon names in the player's # possession playerWeapons = _spe.getWeaponDict(self.userid) if playerWeapons: # See if there is a primary weapon in the list of weapons pWeapon = set(playerWeapons.keys()).intersection( list_pWeapons) # See if there is a primary weapon in the list of weapons sWeapon = set(playerWeapons.keys()).intersection( list_sWeapons) # Set up the weapon to strip weapToStrip = None # Strip secondary weapon ? if 'weapon_' + self.weapon in list_sWeapons and sWeapon: weapToStrip = sWeapon.pop() # Strip primary weapon ? elif 'weapon_' + self.weapon in list_pWeapons and pWeapon: weapToStrip = pWeapon.pop() if weapToStrip: # Make them drop the weapon _spe.dropWeapon(self.userid, weapToStrip) # Now remove it _spe.removeEntityByInstance(playerWeapons [weapToStrip]["instance"]) # Now give them the weapon and save the weapon instance given_weapon = _spe.giveNamedItem(self.userid, "weapon_%s" % self.weapon) # Retrieve the weapon instance of the weapon they "should" own weapon_check = _spe.ownsWeapon(self.userid, "weapon_%s" % self.weapon) # Make sure that the player owns the weapon we gave them if weapon_check != given_weapon: # Remove the given weapon since the player does not own it _spe.removeEntityByInstance(given_weapon) # If they don't have the right weapon, fire give_weapon() if not weapon_check: self.give_weapon() return _es.server.queuecmd('es_xsexec %s "use weapon_%s"' % (self.userid, self.weapon))
def get_weapon(self): return _level_weapon(self.level)