Ir para conteúdo

Featured Replies

Postado

Então estou aqui pra fazer um pedido em relação ao bank, eu queria saber como que faço pra quando eu ir em qualquer NPC pra comprar algo, ele utilizar o dinheiro o Bank.

Pois no ot que eu tenho o dinheiro tem que esta na BP.

ficarei agradecido pela ajuda.

 

 

.Qual servidor ou website você utiliza como base? 

GESIOR TIBIA 8.60

Qual o motivo deste tópico? 

AJUDA

Está surgindo algum erro? Se sim coloque-o aqui. 

Citar

 

 

Você tem o código disponível? Se tiver publique-o aqui: 

 

 

Você tem alguma imagem que possa auxiliar no problema? Se sim, coloque-a aqui. 

 

  • 1 month later...
Postado
  • Diretor

Para permitir que os jogadores usem o dinheiro em seu banco para comprar itens de NPCs, você precisará modificar o arquivo modules/shop/shop.lua. Vamos supor que você tenha uma tabela player_data que armazena as informações do banco do jogador.

Primeiro, você precisará adicionar uma nova função que verifica se o jogador tem dinheiro suficiente no banco para comprar um item. Adicione este código ao final do arquivo shop.lua:

function getPlayerBankBalance(cid)
    local resultId = db.storeQuery("SELECT `balance` FROM `player_data` WHERE `id` = " .. getPlayerGUID(cid))
    if resultId == false then
        return false
    end

    local balance = result.getNumber(resultId, "balance")
    result.free(resultId)

    return balance
end

function getPlayerBankBalanceString(cid)
    local balance = getPlayerBankBalance(cid)
    if balance == false then
        return "Not available"
    else
        return formatNumber(balance) .. " gold coins"
    end
end

function doPlayerWithdrawFromBank(cid, amount)
    if amount <= 0 then
        return false
    end

    local balance = getPlayerBankBalance(cid)
    if balance == false or balance < amount then
        return false
    end

    db.query("UPDATE `player_data` SET `balance` = `balance` - " .. amount .. " WHERE `id` = " .. getPlayerGUID(cid))
    doPlayerAddMoney(cid, amount)

    return true
end


Agora, você precisará modificar a função onBuy para permitir que o jogador compre o item usando o dinheiro do banco. Aqui está o código modificado:

function onBuy(cid, item, subType, amount, ignoreCap, inBackpacks)
    local cost = getItemPrice(item.itemid) * amount
    
    if(getPlayerMoney(cid) + getPlayerBalance(cid) < cost) then
        return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You do not have enough money.")
    end
    
    if(inBackpacks) then
        local container = doPlayerAddItem(cid, 2000, 1)
        if(container == 0) then
            return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You do not have any container to put the item.")
        end
        doAddContainerItem(container, item.itemid, amount)
        item = container
    else
        doPlayerAddItem(cid, item.itemid, amount)
    end
    
    doPlayerRemoveMoney(cid, cost - getPlayerBalance(cid))
    doPlayerRemoveBalance(cid, math.min(cost, getPlayerBalance(cid)))
    
    doSendAnimatedText(getThingPos(cid), "$-"..cost, TEXTCOLOR_ORANGE)
    doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You bought ".. amount .." ".. getItemNameById(item.itemid) .." for ".. cost .." gold.")
    return true
end


Agora que você identificou onde o dinheiro do jogador está sendo verificado, você pode fazer a seguinte modificação:

Antes:

if getPlayerMoney(cid) < item.price then npcHandler:say('Desculpe, você não tem dinheiro suficiente.', cid) return false end
Depois:

if getPlayerMoney(cid) + getPlayerBalance(cid) < item.price then npcHandler:say('Desculpe, você não tem dinheiro suficiente.', cid) return false end

 

20230912_034613.png.cf49b650c34dd7d7b1f79bd49c70f53c.png

Eu sou um entusiasta da programação apaixonado por ajudar a comunidade open source a crescer. Sempre em busca de novos desafios e oportunidades para contribuir com meu código.  #OpenSource #Programação #Contribuição

 

  • 1 year later...
Postado
Em 16/03/2023 em 08:35, L3K0T disse:

Para permitir que os jogadores usem o dinheiro em seu banco para comprar itens de NPCs, você precisará modificar o arquivo modules/shop/shop.lua. Vamos supor que você tenha uma tabela player_data que armazena as informações do banco do jogador.

Primeiro, você precisará adicionar uma nova função que verifica se o jogador tem dinheiro suficiente no banco para comprar um item. Adicione este código ao final do arquivo shop.lua:

 

function getPlayerBankBalance(cid)
    local resultId = db.storeQuery("SELECT `balance` FROM `player_data` WHERE `id` = " .. getPlayerGUID(cid))
    if resultId == false then
        return false
    end

    local balance = result.getNumber(resultId, "balance")
    result.free(resultId)

    return balance
end

function getPlayerBankBalanceString(cid)
    local balance = getPlayerBankBalance(cid)
    if balance == false then
        return "Not available"
    else
        return formatNumber(balance) .. " gold coins"
    end
end

function doPlayerWithdrawFromBank(cid, amount)
    if amount <= 0 then
        return false
    end

    local balance = getPlayerBankBalance(cid)
    if balance == false or balance < amount then
        return false
    end

    db.query("UPDATE `player_data` SET `balance` = `balance` - " .. amount .. " WHERE `id` = " .. getPlayerGUID(cid))
    doPlayerAddMoney(cid, amount)

    return true
end
 

Agora, você precisará modificar a função onBuy para permitir que o jogador compre o item usando o dinheiro do banco. Aqui está o código modificado:

 

function onBuy(cid, item, subType, amount, ignoreCap, inBackpacks)
    local cost = getItemPrice(item.itemid) * amount
    
    if(getPlayerMoney(cid) + getPlayerBalance(cid) < cost) then
        return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You do not have enough money.")
    end
    
    if(inBackpacks) then
        local container = doPlayerAddItem(cid, 2000, 1)
        if(container == 0) then
            return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You do not have any container to put the item.")
        end
        doAddContainerItem(container, item.itemid, amount)
        item = container
    else
        doPlayerAddItem(cid, item.itemid, amount)
    end
    
    doPlayerRemoveMoney(cid, cost - getPlayerBalance(cid))
    doPlayerRemoveBalance(cid, math.min(cost, getPlayerBalance(cid)))
    
    doSendAnimatedText(getThingPos(cid), "$-"..cost, TEXTCOLOR_ORANGE)
    doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You bought ".. amount .." ".. getItemNameById(item.itemid) .." for ".. cost .." gold.")
    return true
end

 

 

Agora que você identificou onde o dinheiro do jogador está sendo verificado, você pode fazer a seguinte modificação:

 

 

Antes:

if getPlayerMoney(cid) < item.price then npcHandler:say('Desculpe, você não tem dinheiro suficiente.', cid) return false end

Depois:

if getPlayerMoney(cid) + getPlayerBalance(cid) < item.price then npcHandler:say('Desculpe, você não tem dinheiro suficiente.', cid) return false end

existe isso para tfs 0.3.6

Participe da conversa

Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.

Visitante
Responder

Quem Está Navegando 0

  • Nenhum usuário registrado visualizando esta página.

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 519.6k

Informação Importante

Confirmação de Termo