Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 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))
Add Comment
Please, Sign In to add comment