Ir para conteúdo
  • Cadastre-se

Posts Recomendados

Ola galera do Tk.
Eu gostaria de um Scripts de loteria diferente, claro se alguém poder me ajudar.
Seria da seguinte forma, Todo dia de 3 em 3H anunciava em "green" que a loteria foi aberta.
com a seguinte frase "A loteria esta aberta faça suas apostas."

essa mensagem sera anunciada 5x em 5 minutos.
Depois disso sera fechado, e anunciar o se teve campeão ou nao, e a quantia que esta acumulada.
Ae o player aposta uma quantia em dinheiro, e cada player que aposta sua quantia em dinheiro,

esse dinheiro seria acumulado, e o ganhador ganharia o dinheiro de todos que apostaram.
Se não tiver ganhador o dinheiro ficara la acumulado ate ter um ganhador, tipo Mega Sena.
O player tera que escolher 3 números se ele acerta os 3 ele ganhara a bolada.
Sendo que so pode escolher de 1 a 200.


Obrigado dez de ja quem poder me ajudar darei 5+rep

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

Ajudei? da um Rep+, não custa nada. ;D:P

 

Servidor de PokeTibia ja online.

Pagina: https://www.facebook.com/PokemonxStore?ref=bookmarks

Grupo: https://www.facebook.com/groups/257989224406246/

Site: http://pokexstore.wix.com/pokexstore

Link para o post
Compartilhar em outros sites
  • Respostas 41
  • Created
  • Última resposta

Top Posters In This Topic

Top Posters In This Topic

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

Sera dividido o dinheiro entre eles.

Ajudei? da um Rep+, não custa nada. ;D:P

 

Servidor de PokeTibia ja online.

Pagina: https://www.facebook.com/PokemonxStore?ref=bookmarks

Grupo: https://www.facebook.com/groups/257989224406246/

Site: http://pokexstore.wix.com/pokexstore

Link para o post
Compartilhar em outros sites

Há uma quantia mínima para apostar?

E, num mesmo comando, o jogador escolheria os 3 números + a quantia que pretende apostar?

Ou o dinheiro que deve ser apostado é constante? Digo, o mesmo para todos?

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

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

Link para o post
Compartilhar em outros sites

Há uma quantia mínima para apostar?

E, num mesmo comando, o jogador escolheria os 3 números + a quantia que pretende apostar?

Ou o dinheiro que deve ser apostado é constante? Digo, o mesmo para todos?

Ele deve escolher uma quantia.

Acima de 5k

Sim no mesmo comando, tipo: !apostar 500,5

Ou se der pra aparecer uma aba quando ele falar !apostar

Ae la aparece quantia$ e numero em baixo

e ele coloca.

igual ao do otp ne

Eu nunca joguei esse Ot ai

Se tem eu nao sei.

So pensei na ideia.

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

Ajudei? da um Rep+, não custa nada. ;D:P

 

Servidor de PokeTibia ja online.

Pagina: https://www.facebook.com/PokemonxStore?ref=bookmarks

Grupo: https://www.facebook.com/groups/257989224406246/

Site: http://pokexstore.wix.com/pokexstore

Link para o post
Compartilhar em outros sites

 

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
    return true
end
function addGlobalStorageValue(key, addValue)
    local result = db.getResult("SELECT value FROM global_storage WHERE key = "..key)
    setGlobalStorageValue(key, getGlobalStorageValue(key) + addValue)
    if result:getID() ~= -1 then
        db.executeQuery("UPDATE global_storage SET value = value + addValue WHERE key = "..key)
        result:free()
    else
        db.executeQuery("INSERT INTO global_storage VALUES ("..key..", 0, "..addValue..")")
    end
end
function resetStorage(key)
    local result = db.getResult("SELECT id FROM players WHERE online < 1")
    if result:getID() ~= -1 then
        repeat
            db.executeQuery("UPDATE player_storage SET value = -1 WHERE key = "..key.." AND player_id = "..result:getDataInt("id"))
        until not result:next()
        result:free()
    end
    for _, pid in pairs(getPlayersOnline()) do
        setPlayerStorageValue(pid, key, -1)
    end
end
function getLotteryWinners(n)
    local winners = {}
    for _, cid in pairs(getPlayersOnline()) do
        if type(getPlayerStorageValue(cid, config.storages[3])) == "string" then
            local playerChose = getPlayerStorageValue(cid, config.storages[3]):explode("/")
            if compareTables(playerChose, n) then
                table.insert(winners, cid)
            end
        end
    end
    return winners
end
Depois, em data/globalevents/scripts:
local config = {
    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",
        "A loteria está fechada!\nPrêmio (individual): %d. Vencedor%s:%s.",
        "Sem vencedores na loteria!\nDinheiro acumulado [total]: %d.",
    },
    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], 0)
    end
    for i = 1, config.startTime do
        addEvent(function()
            if i ~= config.startTime then
                broadcastMessage(config.messages[1]:format(config.startTime - 1), 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), ""
                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(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Por vencer a loteria, você recebeu: "..prize.." gold.")
                        end
                    end
                end
                resetStorage(config.storages[3])
            end
        end, i * 60 * 1000)
    end
    return true
end
Tag:
<globalevent name="Loteria" interval="10800" event="script" value="nome_do_arquivo.lua"/>
Já em data/talkactions/scripts:
local config = {
    limit = {1, 200},                              --Número mínimo e máximo da loteria.
    numbers = 3,                                   --Quantos números o player deve escolher.
    minCash = 5000,                        --Quantia mínima para apostar.
    storages = {9571, 9572, 9573},
}    
function onSay(cid, words, param)
    if getGlobalStorageValue(config.storages[1]) < 1 then
        doPlayerSendCancel(cid, "A loteria está fechada.")
    elseif type(getPlayerStorageValue(cid, config.storages[3])) ~= "string" then
        doPlayerSendCancel(cid, "Você já fez sua aposta.")
    elseif param == "" then
        doPlayerSendCancel(cid, "!apostar cash,number1 number2 number3")
    elseif getPlayerMoney(cid) < config.minCash then
        doPlayerSendCancel(cid, "Você precisa de, no mínimo, "..config.minCash.." gold para apostar.")
    else
        param = param:explode(",")
        local cash, numbers = tonumber(param[1]), param[2]:explode(" ")
        if not cash then
            doPlayerSendCancel(cid, "Aposte uma quantia númerica.")
        elseif getPlayerMoney(cid) < cash then
            doPlayerSendCancel(cid, "Aposte uma quantia que você tenha.")
        else
            if not numbers or #numbers < config.numbers or #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, cash)
                doPlayerSendTextMessage(cid, 27, "Você apostou "..cash.." gold e escolheu os números: "..str..".")
                setPlayerStorageValue(cid, config.storages[3], table.concat(numbers, "/"))
                addGlobalStorageValue(config.storages[2], cash)
            end
        end
    end
    return true
end
Tag:
<talkaction words="!apostar" event="script" value="nome_do_arquivo.lua"/>
Comando:
!apostar cash,number1 number2 number3
Ex.:
!apostar 450000,78 43 185

 

Deu esse erro.

[11/05/2015 23:51:24] [Error - GlobalEvent Interface]

[11/05/2015 23:51:24] data/globalevents/scripts/sorteio.lua

[11/05/2015 23:51:24] Description:

[11/05/2015 23:51:24] data/globalevents/scripts/sorteio.lua:5: table index is nil

[11/05/2015 23:51:24] [Warning - Event::loadScript] Cannot load script (data/globalevents/scripts/sorteio.lua)

Foi algo que fiz de errado?

Ajudei? da um Rep+, não custa nada. ;D:P

 

Servidor de PokeTibia ja online.

Pagina: https://www.facebook.com/PokemonxStore?ref=bookmarks

Grupo: https://www.facebook.com/groups/257989224406246/

Site: http://pokexstore.wix.com/pokexstore

Link para o post
Compartilhar em outros sites

Coloquei aqui no meu Serv e não deu nenhum erro!!!

zipter98, seria possível a loteria começar com 10kk? Pois assim iria incentivar os outros a apostar.
 

Me tira um duvida tb, tem 3 storages certo? storages = {9571, 9572, 9573} essas storages é para cada numero escolhido? Ou so conhecidencia? Pois quero deixar 4 numero e fiquei com essa duvida !?
 

Teria como mudar essa Talkactions para cobra por cada jogo? Por exemplo: o cara falava !apostar 1 2 3 4 aí teria o preço fixo(configuravel) de cada aposta.

E queria adicionar uma mensagem dizendo em verde que a loteria foi fechada e abrirá em tal horas, como eu faço ?

Dei um rep+ pelo belo script, parabéns!


@edit 

Ao finalizar sem ninguem jogar e não ter vencedor, a distro menciona este erro:
212trwm.png

Uso versão 8.6 distro 0.4

Editado por brendoonh (veja o histórico de edições)
Link para o post
Compartilhar em outros sites

Funcionou Vlw

Mas deu um erro quando tava executando

[12/05/2015 00:38:43] [Error - GlobalEvent Interface]

[12/05/2015 00:38:43] In a timer event called from:

[12/05/2015 00:38:44] data/globalevents/scripts/loteria.lua:onThink

[12/05/2015 00:38:44] Description:

[12/05/2015 00:38:44] data/lib/050-function.lua:708: attempt to index global 'config' (a nil value)

[12/05/2015 00:38:44] stack traceback:

[12/05/2015 00:38:44] data/lib/050-function.lua:708: in function 'getLotteryWinners'

[12/05/2015 00:38:45] data/globalevents/scripts/loteria.lua:34: in function <data/globalevents/scripts/loteria.lua:19>

E nao esta mandando mensagem se o cara nao tiver a grana.

So fala voce ja fez sua aposta, e do ms geito quando vc tem a grana so fala isso.

Mas nao some dinheiro nem nada.

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

Ajudei? da um Rep+, não custa nada. ;D:P

 

Servidor de PokeTibia ja online.

Pagina: https://www.facebook.com/PokemonxStore?ref=bookmarks

Grupo: https://www.facebook.com/groups/257989224406246/

Site: http://pokexstore.wix.com/pokexstore

Link para o post
Compartilhar em outros sites

Ops, falta de atenção minha este erro. Inicialmente, pretendia deixar as funções no mesmo arquivo do globalevent. Por isso, esqueci de alterar uma informação.

Código corrigido.

Coloquei aqui no meu Serv e não deu nenhum erro!!!

zipter98, seria possível a loteria começar com 10kk? Pois assim iria incentivar os outros a apostar.
 

Me tira um duvida tb, tem 3 storages certo? storages = {9571, 9572, 9573} essas storages é para cada numero escolhido? Ou so conhecidencia? Pois quero deixar 4 numero e fiquei com essa duvida !?
 

Teria como mudar essa Talkactions para cobra por cada jogo? Por exemplo: o cara falava !apostar 1 2 3 4 aí teria o preço fixo(configuravel) de cada aposta.

E queria adicionar uma mensagem dizendo em verde que a loteria foi fechada e abrirá em tal horas, como eu faço ?

Dei um rep+ pelo belo script, parabéns!


@edit 

Ao finalizar sem ninguem jogar e não ter vencedor, a distro menciona este erro:
212trwm.png

Uso versão 8.6 distro 0.4

Apenas coincidência. Para deixar 4 números (ou mais, ou menos), altere o item numbers, da tabela config.

Sobre a alteração na talkaction, primeiramente deixarei este código totalmente funcional. Depois, farei esta modificação para você.

Já a mensagem de fechamento, basta alterá-la no item messages, na tabela config (globalevent, apenas).

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

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

Link para o post
Compartilhar em outros sites

O primeiro erro já corrigi faz tempo, mas esqueci de alterar no código que postei (função addGlobalStorageValue).

Sobre o segundo, ainda estou vendo o que é.

EDIT: Devido a um erro chato que não estou com paciência de corrigir adequadamente, refiz algumas coisas no sistema. Se possível, substituam a antiga versão por esta nova. Agora vai funcionar tudo como deve, espero. 

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

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

Link para o post
Compartilhar em outros sites

O primeiro erro já corrigi faz tempo, mas esqueci de alterar no código que postei (função addGlobalStorageValue).

Sobre o segundo, ainda estou vendo o que é.

Sim, eu adicionei ele depois que você corrigiu!

Acho que não ta tendo numero premiado, por q deixei 1 numero e joguei 1,2,3,4,5... ate o 10. E não teve vencedor, sendo que os numeros eu deixei {1, 10} um desses numeros teria que ser o premiado e nada...

 

 

15:51 Você apostou 1000000 gold e escolheu os números: 1.

15:51 Você apostou 1000000 gold e escolheu os números: 2.
15:51 Você apostou 1000000 gold e escolheu os números: 3.
15:51 Você apostou 1000000 gold e escolheu os números: 4.
15:51 Você apostou 1000000 gold e escolheu os números: 5.
15:51 Você apostou 1000000 gold e escolheu os números: 6.
15:51 Você apostou 1000000 gold e escolheu os números: 7.
15:51 Você apostou 1000000 gold e escolheu os números: 8.
15:51 Você apostou 1000000 gold e escolheu os números: 9.
15:51 Você apostou 1000000 gold e escolheu os números: 10.

15:52 [MEGA-SENA] Sem vencedores!
Dinheiro acumulado [total]: 52000000.
Link para o post
Compartilhar em outros sites

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?

 

Teria como mudar essa Talkactions para cobra por cada jogo? Por exemplo: o cara falava !apostar 1 2 3 4 aí teria o preço fixo(configuravel) de cada aposta.

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

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

Link para o post
Compartilhar em outros sites

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

Link para o post
Compartilhar em outros sites

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

Link para o post
Compartilhar em outros sites

 

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?

Link para o post
Compartilhar em outros sites

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

Link para o post
Compartilhar em outros sites

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

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.




×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo