Ir para conteúdo
Propaganda

Posts Recomendados

Apresento a vocês um novo sistema de armazenamento de dinheiro que foi desenvolvido com base na PXG. Este sistema visa oferecer uma maneira prática e eficiente para os jogadores gerenciarem seus recursos financeiros no jogo. Além das funcionalidades básicas, adicionei algumas melhorias para tornar a experiência mais envolvente.


Funcionalidades

Armazenamento de Dinheiro
 

  • Armazenamento e Retorno: O jogador pode armazenar todo o seu dinheiro ao usar um item específico (ID 22951). Se o jogador não tiver dinheiro, uma mensagem informará que não há fundos disponíveis.

 

  • Retorno do Dinheiro: O jogador pode recuperar seu dinheiro armazenado a qualquer momento, desde que não esteja armazenado. Uma mensagem confirma a quantidade de dinheiro retornada.

Formatação de Valores

 

  • Visualização Atraente: O sistema inclui uma função para formatar os valores monetários, exibindo-os de maneira mais compreensível, incluindo bilhões, milhões, milhares, dólares e centavos. Isso facilita a leitura e o entendimento dos recursos financeiros do jogador.

Exibição de Dinheiro Armazenado

 

  • Consulta Rápida: O jogador pode verificar quanto dinheiro tem armazenado através de uma talkaction. Se não houver dinheiro armazenado, uma mensagem apropriada será exibida.

Essa parte deve ser criada em:  data/actions/cofre.lua

function onUse(cid, item, fromPosition, itemEx, toPosition)
    local storageItemId = 22951

    if item.itemid ~= storageItemId then
        return false
    end

    if not isPlayer(cid) then
        return false
    end

    local storedMoney = getPlayerStorageValue(cid, 303030)

    -- Função para formatar o valor corretamente, incluindo bilhões
    local function formatMoney(value)
        local billions = math.floor(value / 1e9) -- bilhões
        local millions = math.floor((value % 1e9) / 1e6) -- milhões
        local thousands = math.floor((value % 1e6) / 1e3) -- milhares
        local dollars = math.floor(value % 1e3) -- dólares
        local cents = value % 100 -- centavos (baseados no item 12416)

        local formatted = ""
        if billions > 0 then
            formatted = formatted .. billions .. " bilhões "
        end
        if millions > 0 then
            formatted = formatted .. millions .. " milhões "
        end
        if thousands > 0 then
            formatted = formatted .. thousands .. " mil "
        end
        if dollars > 0 then
            formatted = formatted .. dollars .. " dólares "
        end
        if cents > 0 then
            formatted = formatted .. cents .. " centavos"
        end

        if formatted == "" then
            formatted = "0 centavos"
        end

        return formatted
    end

    if storedMoney == -1 then
        local money = getPlayerMoney(cid)

        if money > 0 then
            doPlayerRemoveMoney(cid, money)
            setPlayerStorageValue(cid, 303030, money)
            doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Todo o seu dinheiro foi armazenado: " .. formatMoney(money) .. ".")
        else
            doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você não tem dinheiro para armazenar.")
        end
    else
        doPlayerAddMoney(cid, storedMoney)
        setPlayerStorageValue(cid, 303030, -1)
        doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Seu dinheiro foi retornado: " .. formatMoney(storedMoney) .. ".")
    end

    return true
end

Já essa parte em: data/talkaction/checkmoney.lua

 

function onSay(cid, words, param)
    if not isPlayer(cid) then
        return false
    end

    local storedMoney = getPlayerStorageValue(cid, 303030)

    -- Função para formatar o valor corretamente, incluindo bilhões
    local function formatMoney(value)
        local billions = math.floor(value / 1e9) -- bilhões
        local millions = math.floor((value % 1e9) / 1e6) -- milhões
        local thousands = math.floor((value % 1e6) / 1e3) -- milhares
        local dollars = math.floor(value % 1e3) -- dólares
        local cents = value % 100 -- centavos

        local formatted = ""
        if billions > 0 then
            formatted = formatted .. billions .. " bilhões "
        end
        if millions > 0 then
            formatted = formatted .. millions .. " milhões "
        end
        if thousands > 0 then
            formatted = formatted .. thousands .. " mil "
        end
        if dollars > 0 then
            formatted = formatted .. dollars .. " dólares "
        end
        if cents > 0 then
            formatted = formatted .. cents .. " centavos"
        end

        if formatted == "" then
            formatted = "0 centavos"
        end

        return formatted
    end

    if storedMoney == -1 then
        doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você não tem dinheiro armazenado.")
    else
        doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você tem " .. formatMoney(storedMoney) .. " armazenado(s).")
    end

    return true
end
Action:
<action itemid="22951" event="script" value="cofre.lua"/>
Talk:
<talkaction words="!checkmoney" separator=" " script="checkmoney.lua" />

Conclusão

Este sistema foi projetado para proporcionar uma experiência mais rica e intuitiva ao gerenciamento de dinheiro dentro do jogo. Agradeço à PXG pela inspiração e espero que os jogadores aproveitem as novas funcionalidades adicionadas.

  • Like 2
  • Thanks 1
Link para o comentário
https://tibiadevs.com/forums/topic/676-transforme-seu-dinheiro-em-riqueza-conhe%C3%A7a-o-novo-sistema-de-armazenamento/
Compartilhar em outros sites

  • Suporte
17 horas atrás, kevin disse:

Apresento a vocês um novo sistema de armazenamento de dinheiro que foi desenvolvido com base na PXG. Este sistema visa oferecer uma maneira prática e eficiente para os jogadores gerenciarem seus recursos financeiros no jogo. Além das funcionalidades básicas, adicionei algumas melhorias para tornar a experiência mais envolvente.


Funcionalidades

Armazenamento de Dinheiro
 

  • Armazenamento e Retorno: O jogador pode armazenar todo o seu dinheiro ao usar um item específico (ID 22951). Se o jogador não tiver dinheiro, uma mensagem informará que não há fundos disponíveis.

 

  • Retorno do Dinheiro: O jogador pode recuperar seu dinheiro armazenado a qualquer momento, desde que não esteja armazenado. Uma mensagem confirma a quantidade de dinheiro retornada.

Formatação de Valores

 

  • Visualização Atraente: O sistema inclui uma função para formatar os valores monetários, exibindo-os de maneira mais compreensível, incluindo bilhões, milhões, milhares, dólares e centavos. Isso facilita a leitura e o entendimento dos recursos financeiros do jogador.

Exibição de Dinheiro Armazenado

 

  • Consulta Rápida: O jogador pode verificar quanto dinheiro tem armazenado através de uma talkaction. Se não houver dinheiro armazenado, uma mensagem apropriada será exibida.

Essa parte deve ser criada em:  data/actions/cofre.lua

function onUse(cid, item, fromPosition, itemEx, toPosition)
    local storageItemId = 22951

    if item.itemid ~= storageItemId then
        return false
    end

    if not isPlayer(cid) then
        return false
    end

    local storedMoney = getPlayerStorageValue(cid, 303030)

    -- Função para formatar o valor corretamente, incluindo bilhões
    local function formatMoney(value)
        local billions = math.floor(value / 1e9) -- bilhões
        local millions = math.floor((value % 1e9) / 1e6) -- milhões
        local thousands = math.floor((value % 1e6) / 1e3) -- milhares
        local dollars = math.floor(value % 1e3) -- dólares
        local cents = value % 100 -- centavos (baseados no item 12416)

        local formatted = ""
        if billions > 0 then
            formatted = formatted .. billions .. " bilhões "
        end
        if millions > 0 then
            formatted = formatted .. millions .. " milhões "
        end
        if thousands > 0 then
            formatted = formatted .. thousands .. " mil "
        end
        if dollars > 0 then
            formatted = formatted .. dollars .. " dólares "
        end
        if cents > 0 then
            formatted = formatted .. cents .. " centavos"
        end

        if formatted == "" then
            formatted = "0 centavos"
        end

        return formatted
    end

    if storedMoney == -1 then
        local money = getPlayerMoney(cid)

        if money > 0 then
            doPlayerRemoveMoney(cid, money)
            setPlayerStorageValue(cid, 303030, money)
            doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Todo o seu dinheiro foi armazenado: " .. formatMoney(money) .. ".")
        else
            doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você não tem dinheiro para armazenar.")
        end
    else
        doPlayerAddMoney(cid, storedMoney)
        setPlayerStorageValue(cid, 303030, -1)
        doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Seu dinheiro foi retornado: " .. formatMoney(storedMoney) .. ".")
    end

    return true
end

Já essa parte em: data/talkaction/checkmoney.lua

 

function onSay(cid, words, param)
    if not isPlayer(cid) then
        return false
    end

    local storedMoney = getPlayerStorageValue(cid, 303030)

    -- Função para formatar o valor corretamente, incluindo bilhões
    local function formatMoney(value)
        local billions = math.floor(value / 1e9) -- bilhões
        local millions = math.floor((value % 1e9) / 1e6) -- milhões
        local thousands = math.floor((value % 1e6) / 1e3) -- milhares
        local dollars = math.floor(value % 1e3) -- dólares
        local cents = value % 100 -- centavos

        local formatted = ""
        if billions > 0 then
            formatted = formatted .. billions .. " bilhões "
        end
        if millions > 0 then
            formatted = formatted .. millions .. " milhões "
        end
        if thousands > 0 then
            formatted = formatted .. thousands .. " mil "
        end
        if dollars > 0 then
            formatted = formatted .. dollars .. " dólares "
        end
        if cents > 0 then
            formatted = formatted .. cents .. " centavos"
        end

        if formatted == "" then
            formatted = "0 centavos"
        end

        return formatted
    end

    if storedMoney == -1 then
        doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você não tem dinheiro armazenado.")
    else
        doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você tem " .. formatMoney(storedMoney) .. " armazenado(s).")
    end

    return true
end
Action:
<action itemid="22951" event="script" value="cofre.lua"/>
Talk:
<talkaction words="!checkmoney" separator=" " script="checkmoney.lua" />

Conclusão

Este sistema foi projetado para proporcionar uma experiência mais rica e intuitiva ao gerenciamento de dinheiro dentro do jogo. Agradeço à PXG pela inspiração e espero que os jogadores aproveitem as novas funcionalidades adicionadas.

Muito bom, agradecemos a contribuição. Mas por que usar o GPT pra gerar um texto só pra enviar o código kk? 

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
  • Criar Novo...