First commit
This commit is contained in:
		@@ -0,0 +1,151 @@
 | 
			
		||||
-- @docclass Player
 | 
			
		||||
 | 
			
		||||
PlayerStates = {
 | 
			
		||||
  None = 0,
 | 
			
		||||
  Poison = 1,
 | 
			
		||||
  Burn = 2,
 | 
			
		||||
  Energy = 4,
 | 
			
		||||
  Drunk = 8,
 | 
			
		||||
  ManaShield = 16,
 | 
			
		||||
  Paralyze = 32,
 | 
			
		||||
  Haste = 64,
 | 
			
		||||
  Swords = 128,
 | 
			
		||||
  Drowning = 256,
 | 
			
		||||
  Freezing = 512,
 | 
			
		||||
  Dazzled = 1024,
 | 
			
		||||
  Cursed = 2048,
 | 
			
		||||
  PartyBuff = 4096,
 | 
			
		||||
  PzBlock = 8192,
 | 
			
		||||
  Pz = 16384,
 | 
			
		||||
  Bleeding = 32768,
 | 
			
		||||
  Hungry = 65536
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
InventorySlotOther = 0
 | 
			
		||||
InventorySlotHead = 1
 | 
			
		||||
InventorySlotNeck = 2
 | 
			
		||||
InventorySlotBack = 3
 | 
			
		||||
InventorySlotBody = 4
 | 
			
		||||
InventorySlotRight = 5
 | 
			
		||||
InventorySlotLeft = 6
 | 
			
		||||
InventorySlotLeg = 7
 | 
			
		||||
InventorySlotFeet = 8
 | 
			
		||||
InventorySlotFinger = 9
 | 
			
		||||
InventorySlotAmmo = 10
 | 
			
		||||
InventorySlotPurse = 11
 | 
			
		||||
 | 
			
		||||
InventorySlotFirst = 1
 | 
			
		||||
InventorySlotLast = 10
 | 
			
		||||
 | 
			
		||||
function Player:isPartyLeader()
 | 
			
		||||
  local shield = self:getShield()
 | 
			
		||||
  return (shield == ShieldWhiteYellow or
 | 
			
		||||
          shield == ShieldYellow or
 | 
			
		||||
          shield == ShieldYellowSharedExp or
 | 
			
		||||
          shield == ShieldYellowNoSharedExpBlink or
 | 
			
		||||
          shield == ShieldYellowNoSharedExp)
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
function Player:isPartyMember()
 | 
			
		||||
  local shield = self:getShield()
 | 
			
		||||
  return (shield == ShieldWhiteYellow or
 | 
			
		||||
          shield == ShieldYellow or
 | 
			
		||||
          shield == ShieldYellowSharedExp or
 | 
			
		||||
          shield == ShieldYellowNoSharedExpBlink or
 | 
			
		||||
          shield == ShieldYellowNoSharedExp or
 | 
			
		||||
          shield == ShieldBlueSharedExp or
 | 
			
		||||
          shield == ShieldBlueNoSharedExpBlink or
 | 
			
		||||
          shield == ShieldBlueNoSharedExp or
 | 
			
		||||
          shield == ShieldBlue)
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
function Player:isPartySharedExperienceActive()
 | 
			
		||||
  local shield = self:getShield()
 | 
			
		||||
  return (shield == ShieldYellowSharedExp or
 | 
			
		||||
          shield == ShieldYellowNoSharedExpBlink or
 | 
			
		||||
          shield == ShieldYellowNoSharedExp or
 | 
			
		||||
          shield == ShieldBlueSharedExp or
 | 
			
		||||
          shield == ShieldBlueNoSharedExpBlink or
 | 
			
		||||
          shield == ShieldBlueNoSharedExp)
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
function Player:hasVip(creatureName)
 | 
			
		||||
  for id, vip in pairs(g_game.getVips()) do
 | 
			
		||||
    if (vip[1] == creatureName) then return true end
 | 
			
		||||
  end
 | 
			
		||||
  return false
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
function Player:isMounted()
 | 
			
		||||
  local outfit = self:getOutfit()
 | 
			
		||||
  return outfit.mount ~= nil and outfit.mount > 0
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
function Player:toggleMount()
 | 
			
		||||
  if g_game.getFeature(GamePlayerMounts) then
 | 
			
		||||
    g_game.mount(not self:isMounted())
 | 
			
		||||
  end
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
function Player:mount()
 | 
			
		||||
  if g_game.getFeature(GamePlayerMounts) then
 | 
			
		||||
    g_game.mount(true)
 | 
			
		||||
  end
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
function Player:dismount()
 | 
			
		||||
  if g_game.getFeature(GamePlayerMounts) then
 | 
			
		||||
    g_game.mount(false)
 | 
			
		||||
  end
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
function Player:getItem(itemId, subType)
 | 
			
		||||
  return g_game.findPlayerItem(itemId, subType or -1)
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
function Player:getItems(itemId, subType)
 | 
			
		||||
  local subType = subType or -1
 | 
			
		||||
 | 
			
		||||
  local items = {}
 | 
			
		||||
  for i=InventorySlotFirst,InventorySlotLast do
 | 
			
		||||
    local item = self:getInventoryItem(i)
 | 
			
		||||
    if item and item:getId() == itemId and (subType == -1 or item:getSubType() == subType) then
 | 
			
		||||
      table.insert(items, item)
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  for i, container in pairs(g_game.getContainers()) do
 | 
			
		||||
    for j, item in pairs(container:getItems()) do
 | 
			
		||||
      if item:getId() == itemId and (subType == -1 or item:getSubType() == subType) then
 | 
			
		||||
        item.container = container
 | 
			
		||||
        table.insert(items, item)
 | 
			
		||||
      end
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
  return items
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
function Player:getItemsCount(itemId)
 | 
			
		||||
  local items, count = self:getItems(itemId), 0
 | 
			
		||||
  for i=1,#items do
 | 
			
		||||
    count = count + items[i]:getCount()
 | 
			
		||||
  end
 | 
			
		||||
  return count
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
function Player:hasState(state, states)
 | 
			
		||||
  if not states then
 | 
			
		||||
    states = self:getStates()
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  for i = 1, 32 do
 | 
			
		||||
    local pow = math.pow(2, i-1)
 | 
			
		||||
    if pow > states then break end
 | 
			
		||||
 | 
			
		||||
    local states = bit32.band(states, pow)
 | 
			
		||||
    if states == state then
 | 
			
		||||
      return true
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
  return false
 | 
			
		||||
end
 | 
			
		||||
		Reference in New Issue
	
	Block a user