Ir para conteúdo

Featured Replies

Postado

Use o novo código, como informei no meu comentário anterior. Testei o sistema como foi pedido pelo autor, e funcionou perfeitamente.

Poderia dar mais detalhes sobre a personalização que você pediu do código?

Irei refazer tudo de novo aqui então.

Seguinte, eu queria que cada jogo tivesse um preço fixo (1kk) para usar o comando !apostar. O player não iria escolher o valor que quisesse, pois seria fixo o valor de 1kk por jogo.

E o comando seria direto, sem o valor. Por exemplo: !apostar 1 2 3 4

  • Respostas 41
  • Visualizações 2.8k
  • Created
  • Última resposta

Top Posters In This Topic

Most Popular Posts

  • Em data/lib/050-function.lua, coloque as seguintes funções: function compareTables(c, d)     for i = 1, #c do         if not isInArray(d, c[i]) then             return false         end     end    

  • Globalevent: local config = {     cash = xxx,                                    --Valor inicial da loteria.     limit = {1, 200},                              --Número mínimo e máximo da loteria.  

  • Ops, como testei a loteria com apenas um vencedor, não presenciei este erro. Enfim, corrigido. Sobre as outras alterações, as farei e editarei os códigos. EDIT: Pronto, códigos alterados. Não se esq

Postado

Globalevent:

local config = {
    cash = xxx,                                    --Valor inicial da loteria.
    limit = {1, 200},                              --Número mínimo e máximo da loteria.
    numbers = 3,                                   --Quantos números o player deve escolher.
    startTime = 5,                                 --Tempo para as apostas serem fechadas/anunciar vencedor, em minutos.
    messages = {                                   --Mensagens.
        "A loteria está aberta, façam suas apostas! Tempo até fechar: %d minuto(s).\nDinheiro acumulado até agora: %s.",
        "A loteria está fechada!\nPrêmio (individual): %s gold. Vencedor%s: %s.",
        "Sem vencedores na loteria!\nDinheiro acumulado [total]: %s gold.",
    },
    storages = {9571, 9572, 9573},
}
function onThink()
    setGlobalStorageValue(config.storages[1], 1)
    if getGlobalStorageValue(config.storages[2]) < 0 then
        setGlobalStorageValue(config.storages[2], config.cash)
    end
    broadcastMessage(config.messages[1]:format(config.startTime, pointNumber(getGlobalStorageValue(config.storages[2]))), MESSAGE_INFO_DESCR)
    for i = 1, config.startTime do
        addEvent(function()
            if i ~= config.startTime then
                broadcastMessage(config.messages[1]:format(config.startTime - i), MESSAGE_INFO_DESCR)
            else
                local sortedNumbers = {}
                for i = 1, config.numbers do
                    local value = math.random(config.limit[1], config.limit[2])
                    if isInArray(sortedNumbers, value) then
                        while isInArray(sortedNumbers, value) do
                            value = math.random(config.limit[1], config.limit[2])
                        end
                    end
                    table.insert(sortedNumbers, value)
                end
                setGlobalStorageValue(config.storages[1], -1)
                local winners, str = getLotteryWinners(sortedNumbers, config.numbers), ""
                local prize = math.floor(getGlobalStorageValue(config.storages[2]) / #winners)
                if #winners > 0 then
                    for i = 1, #winners do
                        if str == "" then
                            str = getCreatureName(winners[i])
                        else
                            str = str..(i == #winners and " e " or ", ")..getCreatureName(winners[i])
                        end
                    end
                end
                if str == "" then
                    broadcastMessage(config.messages[3]:format(pointNumber(getGlobalStorageValue(config.storages[2]))), MESSAGE_INFO_DESCR)
                else
                    broadcastMessage(config.messages[2]:format(pointNumber(prize), #winners > 1 and "es" or "", str), MESSAGE_INFO_DESCR)
                    setGlobalStorageValue(config.storages[2], -1)
                    for i = 1, #winners do
                        if isPlayer(winners[i]) then
                            doPlayerDepositMoney(winners[i], prize)
                            doPlayerSendTextMessage(winners[i], MESSAGE_STATUS_CONSOLE_ORANGE, "Por vencer a loteria, você recebeu: "..prize.." gold.")
                        end
                    end
                end
                resetStorage(config.storages[3], config.numbers)
            end
        end, i * 60 * 1000)
    end
    return true
end
Talkaction:
local config = {
    limit = {1, 200},                              --Número mínimo e máximo da loteria.
    numbers = 3,                                   --Quantos números o player deve escolher.
    price = xxx,                                   --Preço para participar da loteria.
    storages = {9571, 9572, 9573},
}    
function onSay(cid, words, param)
    if getGlobalStorageValue(config.storages[1]) < 1 then
        doPlayerSendCancel(cid, "A loteria está fechada.")
    elseif getPlayerStorageValue(cid, config.storages[3]) ~= -1 then
        doPlayerSendCancel(cid, "Você já fez sua aposta.")
    elseif param == "" then
        doPlayerSendCancel(cid, "!apostar number1 number2 number3")
    elseif getPlayerMoney(cid) < config.price then
        doPlayerSendCancel(cid, "Você precisa de, no mínimo, "..config.price.." gold para apostar.")
    else
        local numbers = param:explode(" ")
        if #numbers ~= config.numbers then
            doPlayerSendCancel(cid, "Escolha "..config.numbers.." números, entre "..config.limit[1].." - "..config.limit[2]..".")
        else           
            local str = ""
            for i = 1, #numbers do
                numbers[i] = tonumber(numbers[i])
                if not numbers[i] or numbers[i] < config.limit[1] or numbers[i] > config.limit[2] then
                    return doPlayerSendCancel(cid, "Escolha números válidos ["..config.limit[1].." - "..config.limit[2].."].")
                end
                if str == "" then
                    str = numbers[i]
                else
                    str = str..(i == #numbers and " e " or ", ")..numbers[i]
                end
            end
            doPlayerRemoveMoney(cid, config.price)
            doPlayerSendTextMessage(cid, 27, "Você escolheu os números: "..str..".")
            for i = 0, config.numbers - 1 do
                setPlayerStorageValue(cid, config.storages[3] + i, numbers[i + 1])
            end
            addGlobalStorageValue(config.storages[2], config.price)
        end
    end
    return true
end

Em 050-function.lua (data/lib), adicione mais esta função:

function pointNumber(number)
    if not number or not tonumber(number) then
        return false
    end
    local d = tostring(number):reverse()
    local z = {}
    for i = 1, d:len(), 3 do
        table.insert(z, d:sub(i, i + 2))
    end
    return table.concat(z, "."):reverse()
end  

Editado por zipter98 (veja o histórico de edições)

não respondo pms solicitando suporte em programação/scripting

Postado

 

Globalevent:

local config = {
    cash = xxx,                                    --Valor inicial da loteria.
    limit = {1, 200},                              --Número mínimo e máximo da loteria.
    numbers = 3,                                   --Quantos números o player deve escolher.
    startTime = 5,                                 --Tempo para as apostas serem fechadas/anunciar vencedor, em minutos.
    messages = {                                   --Mensagens.
        "A loteria está aberta, façam suas apostas! Tempo até fechar: %d minuto(s).",
        "A loteria está fechada!\nPrêmio (individual): %d gold. Vencedor%s: %s.",
        "Sem vencedores na loteria!\nDinheiro acumulado [total]: %d gold.",
    },
    storages = {9571, 9572, 9573},
}
function onThink()
    broadcastMessage(config.messages[1]:format(config.startTime), MESSAGE_INFO_DESCR)
    setGlobalStorageValue(config.storages[1], 1)
    if getGlobalStorageValue(config.storages[2]) < 0 then
        setGlobalStorageValue(config.storages[2], config.cash)
    end
    for i = 1, config.startTime do
        addEvent(function()
            if i ~= config.startTime then
                broadcastMessage(config.messages[1]:format(config.startTime - i), MESSAGE_INFO_DESCR)
            else
                local sortedNumbers = {}
                for i = 1, config.numbers do
                    local value = math.random(config.limit[1], config.limit[2])
                    if isInArray(sortedNumbers, value) then
                        while isInArray(sortedNumbers, value) do
                            value = math.random(config.limit[1], config.limit[2])
                        end
                    end
                    table.insert(sortedNumbers, value)
                end
                setGlobalStorageValue(config.storages[1], -1)
                local winners, str = getLotteryWinners(sortedNumbers, config.numbers), ""
                local prize = math.floor(getGlobalStorageValue(config.storages[2]) / #winners)
                if #winners > 0 then
                    for i = 1, #winners do
                        if str == "" then
                            str = getCreatureName(winners[i])
                        else
                            str = str..(i == #winners and " e " or ", ")..winners[i]
                        end
                    end
                end
                if str == "" then
                    broadcastMessage(config.messages[3]:format(getGlobalStorageValue(config.storages[2])), MESSAGE_INFO_DESCR)
                else
                    broadcastMessage(config.messages[2]:format(prize, #winners > 1 and "es" or "", str), MESSAGE_INFO_DESCR)
                    setGlobalStorageValue(config.storages[2], -1)
                    for i = 1, #winners do
                        if isPlayer(winners[i]) then
                            doPlayerAddMoney(winners[i], prize)
                            doPlayerSendTextMessage(winners[i], MESSAGE_STATUS_CONSOLE_ORANGE, "Por vencer a loteria, você recebeu: "..prize.." gold.")
                        end
                    end
                end
                resetStorage(config.storages[3], config.numbers)
            end
        end, i * 60 * 1000)
    end
    return true
end
Talkaction:
local config = {
    limit = {1, 200},                              --Número mínimo e máximo da loteria.
    numbers = 3,                                   --Quantos números o player deve escolher.
    price = xxx,                                   --Preço para participar da loteria.
    storages = {9571, 9572, 9573},
}    
function onSay(cid, words, param)
    if getGlobalStorageValue(config.storages[1]) < 1 then
        doPlayerSendCancel(cid, "A loteria está fechada.")
    elseif getPlayerStorageValue(cid, config.storages[3]) ~= -1 then
        doPlayerSendCancel(cid, "Você já fez sua aposta.")
    elseif param == "" then
        doPlayerSendCancel(cid, "!apostar number1 number2 number3")
    elseif getPlayerMoney(cid) < config.price then
        doPlayerSendCancel(cid, "Você precisa de, no mínimo, "..config.minCash.." gold para apostar.")
    else
        local numbers = param:explode(" ")
        if #numbers ~= config.numbers then
            doPlayerSendCancel(cid, "Escolha "..config.numbers.." números, entre "..config.limit[1].." - "..config.limit[2]..".")
        else           
            local str = ""
            for i = 1, #numbers do
                numbers[i] = tonumber(numbers[i])
                if not numbers[i] or numbers[i] < config.limit[1] or numbers[i] > config.limit[2] then
                    return doPlayerSendCancel(cid, "Escolha números válidos ["..config.limit[1].." - "..config.limit[2].."].")
                end
                if str == "" then
                    str = numbers[i]
                else
                    str = str..(i == #numbers and " e " or ", ")..numbers[i]
                end
            end
            doPlayerRemoveMoney(cid, config.price)
            doPlayerSendTextMessage(cid, 27, "Você escolheu os números: "..str..".")
            for i = 0, config.numbers - 1 do
                setPlayerStorageValue(cid, config.storages[3] + i, numbers[i + 1])
            end
            addGlobalStorageValue(config.storages[2], config.price)
        end
    end
    return true
end

 

Perfeito !!!!!!!

Nessa parte faltou o nome dos players, que veio em numeros:::

 

 

Prêmio (individual): 5000000 gold. Vencedores: [ ADMIN ], 268446773 e 268446775.

Outra coisa, teria como o valor ser enviado pro banco? Pois se acumula de mais corre o risco de nao ter espaço na backpack!!

Teria como simplificar: "1000000 gold" para "1kk" , pois os numeros podem confundi os players, se nao, tudo bem..

Na primeira mensagem, tem como falar o total que ja esta acumulado?

Postado

Ops, como testei a loteria com apenas um vencedor, não presenciei este erro. Enfim, corrigido.

Sobre as outras alterações, as farei e editarei os códigos.

EDIT: Pronto, códigos alterados. Não se esqueça de adicionar a nova função.

Editado por zipter98 (veja o histórico de edições)

não respondo pms solicitando suporte em programação/scripting

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.7k

Informação Importante

Confirmação de Termo