🈴Trade

Documentação da Classe Trade

A classe Trade permite manipular itens na janela de troca (trade) 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 Trade

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

    local playerTrade = Trade.new(aIndex)
  2. Uso de Funções: Use o operador : para chamar as funções, passando o slot do item (posição na janela de troca) como argumento.

  3. Observação:

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

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

    • Exemplo com múltiplos índices:

      local playerTrade = Trade.new(aIndex)
      local playerTargetTrade = Trade.new(TargetIndex)
      playerTrade:isItem(1)
      playerTargetTrade:isItem(1)

Funções da Classe Trade

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 = playerTrade:getIndex(1)
    if itemIndex == -1 then
        LogAdd(string.format("[Trade] - Slot %d está vazio!", 1), 0)
    else
        LogAdd(string.format("[Trade] - 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 playerTrade:isItem(2) == 1 then
        LogAdd(string.format("[Trade] - Slot %d contém um item!", 2), 0)
    else
        LogAdd(string.format("[Trade] - 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 playerTrade:isExc(3) == 1 then
        LogAdd(string.format("[Trade] - Item no slot %d é excelente!", 3), 0)
    end

4. getLevel(slot)

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

  • Exemplo:

    local level = playerTrade:getLevel(1)
    LogAdd(string.format("[Trade] - 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 = playerTrade:getName(1)
    LogAdd(string.format("[Trade] - 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 = playerTrade:getSection(1)
    LogAdd(string.format("[Trade] - 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 = playerTrade:getIndex2(1)
    LogAdd(string.format("[Trade] - Í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 = playerTrade:getSerial(1)
    LogAdd(string.format("[Trade] - 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 = playerTrade:getDurability(1)
    LogAdd(string.format("[Trade] - 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:

    playerTrade:setDurability(1, 200)
    LogAdd(string.format("[Trade] - 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:

    playerTrade:setItemTable(1, 1, 1) -- Define item como excelente
    playerTrade:convertItem(1) -- Atualiza o item
    LogAdd(string.format("[Trade] - 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 playerTrade:getIsPeriodic(1) == 1 then
        LogAdd(string.format("[Trade] - 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 = playerTrade:getPeriodicTime(1)
    LogAdd(string.format("[Trade] - 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 opção1

    • type: 3 -> valor opção2

    • type: 4 -> valor opção3

    • type: 5 -> valor antigo (ancient)

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

    • type: 7 -> valor Ex option

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

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

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

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

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

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

  • Exemplo:

    local excValue = playerTrade:getItemTable(1, 1)
    LogAdd(string.format("[Trade] - 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 opção1

    • type: 3 -> valor opção2

    • type: 4 -> valor opção3

    • type: 5 -> valor antigo (ancient)

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

    • type: 7 -> valor Ex option

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

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

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

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

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

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

  • Exemplo:

    playerTrade:setItemTable(1, 1, 1) -- Define como excelente
    LogAdd(string.format("[Trade] - 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 Trade em uma única função para verificar e modificar um item na janela de troca de um jogador. Este código pode ser usado como base para manipulações na troca.

-- Sistema de gerenciamento de troca
TRADE_MANAGER = {}

function TRADE_MANAGER.ProcessPlayerTrade(aIndex)
    -- Cria um objeto Trade para o jogador
    local playerTrade = Trade.new(aIndex)
    local player = User.new(aIndex)
    local playerName = player:getName()

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

        -- Exibe informações do item
        LogAdd(string.format("[Trade] - [%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 playerTrade:getIsPeriodic(1) == 1 then
            local periodicTime = playerTrade:getPeriodicTime(1)
            LogAdd(string.format("[Trade] - [%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
        playerTrade:setDurability(1, 255)
        playerTrade:setItemTable(1, 1, 1) -- Define como excelente
        playerTrade:setItemTable(1, 9, 3) -- Define opção de socket 1
        playerTrade:convertItem(1) -- Atualiza o item

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

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

return TRADE_MANAGER

Resumo

  • A classe Trade facilita a manipulação de itens na janela de troca 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