Ir para conteúdo
  • 0

[OTX2] Como fazer os NPCs aceitarem dinheiro do banco no Trade?


LucasOlzon

Pergunta

1 resposta a esta questão

Posts Recomendados

  • 0
    • No script Lua do NPC que lida com transações comerciais (geralmente dentro da pasta data/npc/scripts/), você deve incluir verificações do saldo bancário do jogador, além de verificar o dinheiro que ele tem em mãos.
  • Usar a função getBankBalance:

    • Use a função getPlayerBalance(cid) para verificar o saldo bancário do jogador. Se o jogador não tiver dinheiro suficiente em mãos, mas tiver saldo no banco, o NPC pode debitar diretamente do banco.
  • Exemplo de implementação: Aqui está um exemplo básico de como ajustar o código de um NPC para verificar o saldo bancário:

     

    local function playerHasMoney(cid, amount)
        local money = getPlayerMoney(cid)  -- Dinheiro que o jogador tem na mochila
        local bankBalance = getPlayerBalance(cid)  -- Saldo do banco
    
        -- Verifica se o jogador tem dinheiro suficiente na mochila ou no banco
        return (money + bankBalance) >= amount
    end
    
    local function removePlayerMoney(cid, amount)
        local money = getPlayerMoney(cid)
    
        if money >= amount then
            -- Se o jogador tiver dinheiro suficiente na mochila, remover da mochila
            doPlayerRemoveMoney(cid, amount)
        else
            -- Se não, remover o que tem na mochila e o restante do banco
            doPlayerRemoveMoney(cid, money)
            doPlayerSetBalance(cid, getPlayerBalance(cid) - (amount - money))
        end
    end
    
    -- Exemplo de função de venda de item
    local function sellItem(cid, itemId, amount, cost)
        if not playerHasMoney(cid, cost) then
            npcHandler:say("Você não tem dinheiro suficiente.", cid)
            return false
        end
    
        -- Se o jogador tiver dinheiro suficiente, remover o dinheiro e dar o item
        removePlayerMoney(cid, cost)
        doPlayerAddItem(cid, itemId, amount)
        npcHandler:say("Aqui está o seu item!", cid)
        return true
    end
    
    -- Exemplo de uso no script de NPC
    local tradeItems = {
        {name = "sword", id = 2376, price = 100},  -- Exemplo de item para vender
    }
    
    function onCreatureSay(cid, type, msg)
        if msgcontains(msg, 'trade') then
            npcHandler:say("Gostaria de comprar algo?", cid)
            openShopWindow(cid, tradeItems)  -- Abre a janela de trade
        end
    end

    Explicação:

  • playerHasMoney(cid, amount): Verifica se o jogador tem dinheiro suficiente na mochila e/ou no banco.
  • removePlayerMoney(cid, amount): Deduz a quantia necessária primeiro da mochila e depois, se necessário, do banco.
  • Adicionar ao sistema de NPC existente:

  • Certifique-se de ajustar os nomes das funções e estruturas de diálogo do NPC para o formato usado no seu servidor.
  • Você pode integrar essa lógica com o sistema de eventos de NPCHandler que já está no OTX2.
  •  
  • sellItem: Implementa a lógica de venda de um item, removendo o dinheiro do jogador e entregando o item.
Link para o comentário
Compartilhar em outros sites

  • Quem Está Navegando   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.
×
×
  • Criar Novo...