Guest User

Untitled

a guest
Aug 14th, 2018
163
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 4.63 KB | None | 0 0
  1.     def give_weapon(self):
  2.         '''
  3.        Gives a player their current levels weapon.
  4.        '''
  5.         error = None
  6.         # Make sure player is on a team
  7.         if self.team < 2:
  8.             error = ('Unable to give player weapon (%s): ' % self.userid +
  9.                      'is not on a team.')
  10.  
  11.         # Make sure player is alive
  12.         elif _getPlayer(self.userid).isdead:
  13.             error = ('Unable to give player weapon (%s): ' % self.userid +
  14.                      'is not alive.')
  15.  
  16.         # Error ?
  17.         if error:
  18.             raise GunGameError(error)
  19.  
  20.         # Knife ?
  21.         if self.weapon == 'knife':
  22.             # Make them use their knife
  23.             _es.server.queuecmd('es_xsexec %s "use weapon_knife"' % (
  24.                                                                 self.userid))
  25.  
  26.             # If there is a level below the user's current level
  27.             if self.level > 1:
  28.                 # Strip previous weapons
  29.                 self.strip_weapons(_level_weapon(self.level - 1))
  30.             else:
  31.                 self.strip()
  32.  
  33.         # Nade ?
  34.         elif self.weapon == 'hegrenade':
  35.             # Give them a grenade.
  36.             given_weapon = _spe.giveNamedItem(self.userid, "weapon_hegrenade")
  37.  
  38.             # Make them use the grenade
  39.             _es.server.queuecmd('es_xsexec %s "use weapon_hegrenade"' % (
  40.                                                                 self.userid))
  41.  
  42.             # If there is a level below the user's current level
  43.             if self.level > 1:
  44.                 # Strip previous weapons
  45.                 self.strip_weapons(_level_weapon(self.level - 1))
  46.             else:
  47.                 self.strip()
  48.  
  49.         else:
  50.             # Player owns this weapon.
  51.             if _spe.ownsWeapon(self.userid, "weapon_%s" % self.weapon):
  52.                 # Make them use it. If we don't do this, a very
  53.                 # strange bug comes up which prevents the player
  54.                 # from getting their current level's weapon after
  55.                 # being stripped,
  56.                 _es.server.queuecmd('es_xsexec %s "use weapon_%s"'
  57.                     % (self.userid, self.weapon))
  58.  
  59.                 return
  60.  
  61.             # Player DOES NOT own this weapon.
  62.             else:
  63.                 # Retrieve a list of all weapon names in the player's
  64.                 # possession
  65.                 playerWeapons = _spe.getWeaponDict(self.userid)
  66.  
  67.                 if playerWeapons:
  68.                     # See if there is a primary weapon in the list of weapons
  69.                     pWeapon = set(playerWeapons.keys()).intersection(
  70.                                                                 list_pWeapons)
  71.  
  72.                     # See if there is a primary weapon in the list of weapons
  73.                     sWeapon = set(playerWeapons.keys()).intersection(
  74.                                                                 list_sWeapons)
  75.  
  76.                     # Set up the weapon to strip
  77.                     weapToStrip = None
  78.  
  79.                     # Strip secondary weapon ?
  80.                     if 'weapon_' + self.weapon in list_sWeapons and sWeapon:
  81.                         weapToStrip = sWeapon.pop()
  82.  
  83.                     # Strip primary weapon ?
  84.                     elif 'weapon_' + self.weapon in list_pWeapons and pWeapon:
  85.                         weapToStrip = pWeapon.pop()
  86.  
  87.                     if weapToStrip:
  88.                         # Make them drop the weapon
  89.                         _spe.dropWeapon(self.userid, weapToStrip)
  90.  
  91.                         # Now remove it
  92.                         _spe.removeEntityByInstance(playerWeapons
  93.                                                     [weapToStrip]["instance"])
  94.  
  95.                 # Now give them the weapon and save the weapon instance
  96.                 given_weapon = _spe.giveNamedItem(self.userid,
  97.                     "weapon_%s" % self.weapon)
  98.  
  99.                 # Retrieve the weapon instance of the weapon they "should" own
  100.                 weapon_check = _spe.ownsWeapon(self.userid, "weapon_%s"
  101.                     % self.weapon)
  102.  
  103.                 # Make sure that the player owns the weapon we gave them
  104.                 if weapon_check != given_weapon:
  105.                     # Remove the given weapon since the player does not own it
  106.                     _spe.removeEntityByInstance(given_weapon)
  107.  
  108.                     # If they don't have the right weapon, fire give_weapon()
  109.                     if not weapon_check:
  110.                         self.give_weapon()
  111.                         return
  112.  
  113.                 _es.server.queuecmd('es_xsexec %s "use weapon_%s"'
  114.                     % (self.userid, self.weapon))
Add Comment
Please, Sign In to add comment