📪Inventory

Documentação da Classe Inventory

A classe Inventory permite manipular itens no inventário de um jogador.

Esta documentação apresenta as funções de forma clara, intuitiva e com exemplos práticos e concisos para facilitar o uso.


Como Usar a Classe Inventory

  1. Inicialização: Crie um objeto Inventory passando o índice do jogador (aIndex).

    local playerInventory = Inventory.new(aIndex)
  2. Uso de Funções: Use o operador : para chamar as funções, passando o slot do item (posição no inventário) como argumento.

  3. Observação:

    • Você pode usar a classe para um ou mais jogadores (ex.: playerInventory para um jogador, playerTargetInventory para outro).

    • É possível usar dentro de loops, como em um for.

    • Exemplo com múltiplos índices:

      local playerInventory = Inventory.new(aIndex)
      local playerTargetInventory = Inventory.new(TargetIndex)
      playerInventory:isItem(1)
      playerTargetInventory:isItem(1)

Funções da Classe Inventory

Abaixo estão todas as funções disponíveis, explicadas de forma simples com exemplos práticos:

1. getIndex(slot)

  • Descrição: Retorna o índice do item no slot. Retorna -1 se o slot estiver vazio.

  • Exemplo:

    local itemIndex = playerInventory:getIndex(1)
    if itemIndex == -1 then
        LogAdd(string.format("[Inventory] - Slot %d está vazio!", 1), 0)
    else
        LogAdd(string.format("[Inventory] - Item no slot %d tem índice: %d", 1, itemIndex), 0)
    end

2. isItem(slot)

  • Descrição: Retorna 1 se o slot contém um item, ou 0 se estiver vazio.

  • Exemplo:

    if playerInventory:isItem(2) == 1 then
        LogAdd(string.format("[Inventory] - Slot %d contém um item!", 2), 0)
    else
        LogAdd(string.format("[Inventory] - Slot %d está vazio!", 2), 0)
    end

3. isExc(slot)

  • Descrição: Retorna 1 se o item no slot é excelente, ou 0 caso contrário.

  • Exemplo:

    if playerInventory:isExc(3) == 1 then
        LogAdd(string.format("[Inventory] - Item no slot %d é excelente!", 3), 0)
    end

4. getLevel(slot)

  • Descrição: Retorna o nível do item no slot.

  • Exemplo:

    local level = playerInventory:getLevel(1)
    LogAdd(string.format("[Inventory] - Nível do item no slot %d: %d", 1, level), 0)

5. getName(slot)

  • Descrição: Retorna o nome do item no slot.

  • Exemplo:

    local itemName = playerInventory:getName(1)
    LogAdd(string.format("[Inventory] - Nome do item no slot %d: %s", 1, itemName), 0)

6. getSection(slot)

  • Descrição: Retorna a seção/categoria do item no slot.

  • Exemplo:

    local section = playerInventory:getSection(1)
    LogAdd(string.format("[Inventory] - Seção do item no slot %d: %d", 1, section), 0)

7. getIndex2(slot)

  • Descrição: Retorna o índice alternativo do item no slot.

  • Exemplo:

    local index2 = playerInventory:getIndex2(1)
    LogAdd(string.format("[Inventory] - Índice alternativo do item no slot %d: %d", 1, index2), 0)

8. getSerial(slot)

  • Descrição: Retorna o serial único do item no slot.

  • Exemplo:

    local serial = playerInventory:getSerial(1)
    LogAdd(string.format("[Inventory] - Serial do item no slot %d: %s", 1, serial), 0)

9. getDurability(slot)

  • Descrição: Retorna a durabilidade atual do item no slot (máximo: 255).

  • Exemplo:

    local durability = playerInventory:getDurability(1)
    LogAdd(string.format("[Inventory] - Durabilidade do item no slot %d: %d", 1, durability), 0)

10. setDurability(slot, value)

  • Descrição: Define a durabilidade do item no slot (máximo: 255).

  • Exemplo:

    playerInventory:setDurability(1, 200)
    LogAdd(string.format("[Inventory] - Durabilidade do item no slot %d definida para %d!", 1, 200), 0)

11. convertItem(slot)

  • Descrição: Atualiza o item no slot após modificações (ex.: mudar opções excelentes).

  • Exemplo:

    playerInventory:setItemTable(1, 1, 1) -- Define item como excelente
    playerInventory:convertItem(1) -- Atualiza o item
    LogAdd(string.format("[Inventory] - Item no slot %d atualizado!", 1), 0)

12. getIsPeriodic(slot)

  • Descrição: Retorna 1 se o item no slot é periódico, ou 0 caso contrário.

  • Exemplo:

    if playerInventory:getIsPeriodic(1) == 1 then
        LogAdd(string.format("[Inventory] - Item no slot %d é periódico!", 1), 0)
    end

13. getPeriodicTime(slot)

  • Descrição: Retorna o tempo restante de um item periódico no slot.

  • Exemplo:

    local time = playerInventory:getPeriodicTime(1)
    LogAdd(string.format("[Inventory] - Tempo restante do item periódico no slot %d: %d", 1, time), 0)

14. getItemTable(slot, type)

  • Descrição: Retorna o valor de uma opção específica do item no slot.

  • Tipos de ItemTable:

    • type: 1 -> valor exc (excelente)

    • type: 2 -> valor option1

    • type: 3 -> valor option2

    • type: 4 -> valor option3

    • type: 5 -> valor ancient

    • type: 6 -> valor JoH (Jewel of Harmony)

    • type: 7 -> valor Ex option

    • type: 8 -> opção de bônus do socket

    • type: 9 -> opção do socket 1

    • type: 10 -> opção do socket 2

    • type: 11 -> opção do socket 3

    • type: 12 -> opção do socket 4

    • type: 13 -> opção do socket 5

  • Exemplo:

    local excValue = playerInventory:getItemTable(1, 1)
    LogAdd(string.format("[Inventory] - Valor excelente do item no slot %d: %d", 1, excValue), 0)

15. setItemTable(slot, type, value)

  • Descrição: Define o valor de uma opção específica do item no slot.

  • Tipos de ItemTable:

    • type: 1 -> valor exc (excelente)

    • type: 2 -> valor option1

    • type: 3 -> valor option2

    • type: 4 -> valor option3

    • type: 5 -> valor ancient

    • type: 6 -> valor JoH (Jewel of Harmony)

    • type: 7 -> valor Ex option

    • type: 8 -> opção de bônus do socket

    • type: 9 -> opção do socket 1

    • type: 10 -> opção do socket 2

    • type: 11 -> opção do socket 3

    • type: 12 -> opção do socket 4

    • type: 13 -> opção do socket 5

  • Exemplo:

    playerInventory:setItemTable(1, 1, 1) -- Define como excelente
    LogAdd(string.format("[Inventory] - Item no slot %d agora é excelente!", 1), 0)

Exemplo Prático Completo

Abaixo está um exemplo fictício que utiliza várias funções da classe Inventory em uma única função para verificar e modificar um item no inventário do jogador. Este código pode ser usado como base para manipulações no inventário.

-- Sistema de gerenciamento de inventário
INVENTORY_MANAGER = {}

function INVENTORY_MANAGER.ProcessPlayerInventory(aIndex)
    -- Cria um objeto Inventory para o jogador
    local playerInventory = Inventory.new(aIndex)
    local player = User.new(aIndex)
    local playerName = player:getName()

    -- Verifica se há um item no slot 1
    if playerInventory:isItem(1) == 1 then
        -- Obtém informações do item
        local itemName = playerInventory:getName(1)
        local itemLevel = playerInventory:getLevel(1)
        local isExc = playerInventory:isExc(1)
        local durability = playerInventory:getDurability(1)
        local serial = playerInventory:getSerial(1)
        local section = playerInventory:getSection(1)
        local index2 = playerInventory:getIndex2(1)

        -- Exibe informações do item
        LogAdd(string.format("[Inventory] - [%s] Item no slot 1: %s, Nível: %d, Excelente: %d, Durabilidade: %d, Serial: %s, Seção: %d, Índice Alternativo: %d",
            playerName, itemName, itemLevel, isExc, durability, serial, section, index2), 0)

        -- Verifica se o item é periódico
        if playerInventory:getIsPeriodic(1) == 1 then
            local periodicTime = playerInventory:getPeriodicTime(1)
            LogAdd(string.format("[Inventory] - [%s] Item no slot 1 é periódico com %d segundos restantes!", playerName, periodicTime), 0)
        end

        -- Modifica o item: define durabilidade, torna excelente e adiciona uma opção de socket
        playerInventory:setDurability(1, 255)
        playerInventory:setItemTable(1, 1, 1) -- Define como excelente
        playerInventory:setItemTable(1, 9, 3) -- Define opção de socket 1
        playerInventory:convertItem(1) -- Atualiza o item

        LogAdd(string.format("[Inventory] - [%s] Item no slot 1 foi atualizado: durabilidade máxima, agora é excelente e com socket!", playerName), 0)
    else
        LogAdd(string.format("[Inventory] - [%s] Nenhum item encontrado no slot 1!", playerName), 0)
    end
end

-- Exemplo de chamada da função
INVENTORY_MANAGER.ProcessPlayerInventory(100) -- Substitua 100 pelo aIndex do jogador

return INVENTORY_MANAGER

Resumo

  • A classe Inventory facilita a manipulação de itens no inventário do jogador de forma prática e eficiente.

  • Use o operador : para chamar as funções, passando o slot do item como argumento.

  • As funções getItemTable e setItemTable permitem controle detalhado sobre opções como excelente, sockets e mais.

  • O exemplo prático mostra como verificar, exibir e modificar propriedades de um item em uma única função.

Last updated