Ir para conteúdo

Sistema: Casino Slots [Cassino]


Posts Recomendados

Bom dia turma do Xtibia.

Venho trazer um script que fiz para um usuário de outro fórum, abaixo seguem maiores informações sobre.

 

  • Introdução:

  • Bom, este script simula a máquina de Cassino conhecida como Cassino Slots, pra quem não conhece é a máquina que se encontra no spoiler abaixo:

     

    casino-slots.jpg

     

 

 

  • Como funciona?

  • O jogador precisa escolher 1 (um) dos 10 (dez) itens disponíveis (da para configurar a quantidade de itens) como seu Item da Sorte, e após feito isso, terá que girar a alavanca e torcer para que a máquina sorteie 3 itens repetidos igual ao que o jogador em questão escolheu.

  • Para tornar um pouco mais fácil de vencer, criei para que a máquina dê pequenos brindes à quem acertar 1 ou 2 itens dos sorteados (configurável).

 

  • Como jogar?

  • Para jogar é simples, como desenvolvi todo script em apenas um arquivo, para facilitar na criação, na instalação e até mesmo na jogabilidade, o jogo se baseia na posição em que o jogador está para identificar qual ação executar.

  • Selecionar Item da Sorte: com seu personagem virado para baixo (sul), clique na alavanca e automaticamente o item da sorte aparecerá na mesa configurada no script, caso queira outro item, basta ir usando a alavanca até encontrar o item desejado.

  • Como Jogar: Após ter selecionado seu item da sorte, que deve estar à mostra em cima da mesa própria, basta virar seu personagem para cima (norte) e clicar novamente na alavanca.

  • E se virar esquerda ou direita?: Nada acontecerá, apenas uma mensagem ensinando como jogar será enviada para que o jogador se oriente.

 

  • Dicas de instalação!

  • Sugiro que quando for criar o mapa para o evento, não faça como do vídeo, pois os itens criados nas mesas não estão com atributos para que não possam ser movidos, sendo assim é provável que jogadores de má fé venham a roubar itens... Faça como a imagem abaixo:

    WWUMqIe.jpg

     

 

  • Instalando:

  • Basta criar um arquivo na pasta “data/actions/scripts” chamado “cassino_slots.lua” e adicionar o código abaixo dentro:

     

     

    ------- Script by: Adriano Swatt ----
    local condition_infight = createConditionObject(CONDITION_INFIGHT)
    setConditionParam(condition_infight, CONDITION_PARAM_TICKS, 8000)

    local gstrg = 12129 -- Não Mexa, Storage de Controle Item Global.
    local gstrg_control = 12130 -- Não Mexa, Storage de Controle Jogo em Execução.
    local istrg = {12131, 12132, 12133} -- Não Mexa, Storage de Itens.
    local items = {
    [0] = {0}, -- NEUTRO
    [1] = {2182}, -- ID do ITEM 1
    [2] = {2183}, -- ID do ITEM 2
    [3] = {2184}, -- ID do ITEM 3
    [4] = {2185}, -- ID do ITEM 4
    [5] = {2186}, -- ID do ITEM 5
    [6] = {2187}, -- ID do ITEM 6
    [7] = {2188}, -- ID do ITEM 7
    [8] = {2189}, -- ID do ITEM 8
    [9] = {2190}, -- ID do ITEM 9
    [10] = {2191}, --ID do ITEM 10
    [11] = {0} -- NEUTRO
    }
    local qtdd = 10 -- Quantidade de Itens a Sortear // Não precisa apagar as demais linhas de configuração acima.
    local valor = {2160, 10} -- ID da Moeda pra Jogar, Quantidade (preço)
    local comb1 = {2160, 10} -- ID , Quantidade, para quem acertar 1 item da combinação
    local comb2 = {2160, 20} -- ID , Quantidade, para quem acertar 2 item da combinação
    local comb3 = {2160, 50} -- ID , Quantidade, para quem acertar todos itens da combinação + o prêmio configurado acima
    local premio = {6132, 1} -- ID do Prêmio, Quantidade (que o player ganhará ao acertar os 3 itens)
    local iluck_pos = {x=1040, y=1030, z=6} -- Posição onde fica a amostra do item da sorte
    local pos = {{x=1041, y=1030, z=6}, {x=1042, y=1030, z=6}, {x=1043, y=1030, z=6}} -- Posições onde os itens sorteados aparecerão
    local effect = 26 -- Efeito na hora de selecionar o item da sorte
    local eff = 30 -- Efeito ao criar os itens na mesa (hora do sorteio)
    local reff = 29 -- Efeito ao remover itens da mesa (ao finalizar)
    -------- FIM DAS CONFIGURAÇÕES --------

    function onUse(cid, item, frompos, item2, topos)
    local dir = getPlayerLookDir(cid)
    local gget = getGlobalStorageValue(gstrg)
    local gnumb = items[gget]
    local gnumba = items[gget + 1]
    local gnumbs = items[gget - 1]

    if gnumb then
    if dir == WEST or dir == EAST then -- Caso não esteja em posição de jogar.
    doPlayerSendTextMessage(cid, 18, "Para jogar, siga as dicas abaixo: \n Para escolher o item da sorte, vire-se para baixo e clique na alavanca até selecioná-lo. \n Para jogar, após ter selecionado o item da sorte, vire-se para cima e puxe novamente a alavanca.")

    elseif dir == NORTH then -- Posição de Jogar
    if gget ~= 0 then
    if getGlobalStorageValue(gstrg_control) < 1 then
    if getPlayerItemCount(cid, valor[1]) >= valor[2] then
    math1 = math.random(1, qtdd)
    math2 = math.random(1, qtdd)
    math3 = math.random(1, qtdd)
    doPlayerRemoveItem(cid, valor[1], valor[2])
    mayNotMove(cid, true)
    doAddCondition(cid, condition_infight)
    doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Máquina em funcionamento, aguarde.")
    setGlobalStorageValue(gstrg_control, 1)
    --- Criando itens
    doSendMagicEffect(pos[1], eff)
    doCreateItem(items[math1][1], pos[1])
    setGlobalStorageValue(istrg[1], items[math1][1])
    addEvent(doSendMagicEffect, 1000, pos[2], eff)
    addEvent(doCreateItem, 1000, items[math2][1], pos[2])
    setGlobalStorageValue(istrg[2], items[math2][1])
    addEvent(doSendMagicEffect, 2000, pos[3], eff)
    addEvent(doCreateItem, 2000, items[math3][1], pos[3])
    setGlobalStorageValue(istrg[3], items[math3][1])
    --- Checando Itens
    if gnumbs[1] == getGlobalStorageValue(istrg[1]) then
    doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Parabéns, você já acertou o primeiro item da combinação.")
    setPlayerStorageValue(cid, gstrg, (getPlayerStorageValue(cid, gstrg) + 1))
    else
    doPlayerSendTextMessage(cid, 18, "Que pena, já perdeu na primeira chance.")
    end
    if gnumbs[1] == getGlobalStorageValue(istrg[2]) then
    addEvent(doPlayerSendTextMessage, 1000, cid, MESSAGE_STATUS_CONSOLE_BLUE, "Parabéns, você acertou o segundo item da combinação.")
    setPlayerStorageValue(cid, gstrg, (getPlayerStorageValue(cid, gstrg) + 1))
    else
    addEvent(doPlayerSendTextMessage, 1000, cid, 18, "Que pena, perdeu na segunda chance.")
    end
    if gnumbs[1] == getGlobalStorageValue(istrg[3]) then
    addEvent(doPlayerSendTextMessage, 2000, cid, MESSAGE_STATUS_CONSOLE_BLUE, "Parabéns, você acertou o terceiro item da combinação.")
    setPlayerStorageValue(cid, gstrg, (getPlayerStorageValue(cid, gstrg) + 1))
    else
    addEvent(doPlayerSendTextMessage, 2000, cid, 18, "Que pena, perdeu na terceira chance.")
    end
    addEvent(function()
    for z = 1, 3 do
    doRemoveItem(getTileItemById(pos[z], getGlobalStorageValue(istrg[z])).uid, 1)
    doSendMagicEffect(pos[z], reff)
    end
    mayNotMove(cid, false)
    setGlobalStorageValue(gstrg_control, 0)
    addEvent(CassPremio, 500, cid)
    end, 5000)
    --- Fim Checagem
    else
    doPlayerSendCancel(cid, "Você precisa de "..valor[2].." "..getItemNameById(valor[1]).." para jogar.")
    end
    else
    doPlayerSendCancel(cid, "Precisa esperar o jogo finalizar para jogar novamente.")
    end
    else
    doPlayerSendCancel(cid, "Primeiro selecione o item de sorte para poder jogar.")
    end

    elseif dir == SOUTH then -- Posição de Selecionar Item da Sorte
    if getGlobalStorageValue(gstrg_control) < 1 then
    if gget <= 0 then
    doCreateItem(gnumba[1], 1, iluck_pos)
    doSendMagicEffect(iluck_pos, effect)
    doPlayerSendCancel(cid, "Você selecionou o "..getItemNameById(gnumba[1]).." como seu item da sorte.")
    setGlobalStorageValue(gstrg, 2)
    elseif gget >= 2 and gget < (qtdd + 1) then
    if getTileItemById(iluck_pos, gnumbs[1]).uid > 0 then
    doRemoveItem(getTileItemById(iluck_pos, gnumbs[1]).uid, 1)
    end
    doCreateItem(gnumb[1], 1, iluck_pos)
    doSendMagicEffect(iluck_pos, effect)
    doPlayerSendCancel(cid, "Você selecionou o "..getItemNameById(gnumb[1]).." como seu item da sorte.")
    setGlobalStorageValue(gstrg, (gget + 1))
    elseif gget >= (qtdd + 1) then
    if getTileItemById(iluck_pos, gnumbs[1]).uid > 0 then
    doRemoveItem(getTileItemById(iluck_pos, gnumbs[1]).uid, 1)
    end
    doSendMagicEffect(iluck_pos, effect)
    doPlayerSendCancel(cid, "Você resetou os itens.")
    setGlobalStorageValue(gstrg, 0)
    end
    else
    doPlayerSendCancel(cid, "Precisa esperar o jogo finalizar para selecionar outro item da sorte.")
    end
    end
    else
    doPlayerSendCancel(cid, "Você ativou o Cassino Slots.")
    setGlobalStorageValue(gstrg, 0)
    end
    return true
    end

    function CassPremio(cid)
    if getPlayerStorageValue(cid, gstrg) == 1 then
    doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Hmmm, você acertou um item da combinação e foi recompensado em "..comb1[2].." "..getItemNameById(comb1[1])..".")
    doPlayerAddItem(cid, comb1[1], comb1[2])
    setPlayerStorageValue(cid, gstrg, 0)
    elseif getPlayerStorageValue(cid, gstrg) == 2 then
    doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Uffa, foi por pouco, mas você acertou dois itens da combinação e foi recompensado em "..comb2[2].." "..getItemNameById(comb2[1])..".")
    doPlayerAddItem(cid, comb2[1], comb2[2])
    setPlayerStorageValue(cid, gstrg, 0)
    elseif getPlayerStorageValue(cid, gstrg) == 3 then
    doBroadcastMessage("Parabéns ao jogador "..getPlayerName(cid).." acertou as 3 combinações da Cassino Slots e foi recompensado em "..comb3[2].." "..getItemNameById(comb3[1]).." e "..premio[2].." "..getItemNameById(premio[1])..".")
    doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Parabéns, você acertou TODOS itens da combinação e foi recompensado em "..comb3[2].." "..getItemNameById(comb3[1]).." e "..premio[2].." "..getItemNameById(premio[1])..".")
    doPlayerAddItem(cid, premio[1], premio[2])
    doPlayerAddItem(cid, comb3[1], comb3[2])
    setPlayerStorageValue(cid, gstrg, 0)
    elseif getPlayerStorageValue(cid, gstrg) > 3 then
    doPlayerSendCancel(cid, "Mais sorte da próxima vez.")
    setPlayerStorageValue(cid, gstrg, 0)
    end
    return true
    end

  • Agora em “actions.xml” adicione a tag abaixo:

     

     

    <action actionid="12129" script="cassino_slots.lua"/>

  • Agora basta configurar de acordo com as informações disponíveis no início do script.

 

  • Vejam o vídeo demonstrativo do Sistema em funcionamento.

 

 

 

CHANGELOG:

Update v1.1. (09/02/2015)

- Corrigido bug que impedia funcionamento na primeira execução.

 

Update v1.2. (10/02/2015)

- Corrigido problema que bugava storages do player.

- Corrigido bug que impedia alguns players de jogar.

- Adicionada tag de configuração para quantidade de itens que serão sorteados.

 

Update v1.3. (17/03/2015)

- Corrigido problema de erro no launcher ao dar clean e/ou o item da sorte não estar no lugar.

 

Criado por: Adriano Swatt'

Link para o comentário
Compartilhar em outros sites

  • 2 weeks later...
  • 1 month later...
  • 5 months later...

Muito Bom, ainda não testei mas já deixei o Rep+ se funcionar, deixo outro ^_^

Uma dúvida, não entendi uma coisa, na configuração do prêmio que será recebido (em vermelho) o que coloco ali? deixo 6132 mesmo? tipo, se eu colocar um id de um item e o player escolher outro item ? queria que ele recebesse o item escolhido como item da sorte, para isso o id do prêmio não pode ser 1 só, teria de ser alguma coisa tipo:

 

local premio = = {"itemdasorte", 1} ao invés de local premio = {6132, 1} não?

 

Porque se eu colocar o id de um dos itens sorteados, e o item da sorte escolhido pelo player não for esse?

 

Quero que o player ao acertar os 3, ganhe o item escolhido por ele como item da sorte, então o que coloco em local premio ?

local valor = {2160, 10} -- ID da Moeda pra Jogar, Quantidade (preço)
local comb1 = {2160, 10} -- ID , Quantidade, para quem acertar 1 item da combinação
local comb2 = {2160, 20} -- ID , Quantidade, para quem acertar 2 item da combinação
local comb3 = {2160, 50} -- ID , Quantidade, para quem acertar todos itens da combinação + o prêmio configurado acima
local premio = {6132, 1} -- ID do Prêmio, Quantidade (que o player ganhará ao acertar os 3 itens)
local iluck_pos = {x=1040, y=1030, z=6} -- Posição onde fica a amostra do item da sorte
Editado por samlecter
Link para o comentário
Compartilhar em outros sites

Boa tarde,

 

 

Tente assim:

#Obs: O prêmio não precisa ser configurado, pois será identificado automaticamente.

 

 

 

------- Script by: Adriano Swatt ----
local condition_infight = createConditionObject(CONDITION_INFIGHT)
setConditionParam(condition_infight, CONDITION_PARAM_TICKS, 8000)

local gstrg = 12129 -- Não Mexa, Storage de Controle Item Global.
local gstrg_control = 12130 -- Não Mexa, Storage de Controle Jogo em Execução.
local istrg = {12131, 12132, 12133} -- Não Mexa, Storage de Itens.
local items = {
[0] = {0},  -- NEUTRO
[1] = {2182}, -- ID do ITEM 1
[2] = {2183}, -- ID do ITEM 2
[3] = {2184}, -- ID do ITEM 3
[4] = {2185}, -- ID do ITEM 4
[5] = {2186}, -- ID do ITEM 5
[6] = {2187}, -- ID do ITEM 6
[7] = {2188}, -- ID do ITEM 7
[8] = {2189}, -- ID do ITEM 8
[9] = {2190}, -- ID do ITEM 9
[10] = {2191}, --ID do ITEM 10
[11] = {0}  -- NEUTRO
}
local qtdd = 10 -- Quantidade de Itens a Sortear // Não precisa apagar as demais linhas de configuração acima.
local valor = {2160, 10} -- ID da Moeda pra Jogar, Quantidade (preço)
local comb1 = {2160, 10} -- ID , Quantidade, para quem acertar 1 item da combinação
local comb2 = {2160, 20} -- ID , Quantidade, para quem acertar 2 item da combinação
local comb3 = {2160, 50} -- ID , Quantidade, para quem acertar todos itens da combinação + o prêmio configurado acima
local iluck_pos = {x=1040, y=1030, z=6} -- Posição onde fica a amostra do item da sorte
local pos = {{x=1041, y=1030, z=6}, {x=1042, y=1030, z=6}, {x=1043, y=1030, z=6}} -- Posições onde os itens sorteados aparecerão
local effect = 26 -- Efeito na hora de selecionar o item da sorte
local eff = 30 -- Efeito ao criar os itens na mesa (hora do sorteio)
local reff = 29 -- Efeito ao remover itens da mesa (ao finalizar)
-------- FIM DAS CONFIGURAÇÕES --------

function onUse(cid, item, frompos, item2, topos)
local dir = getPlayerLookDir(cid)
local gget = getGlobalStorageValue(gstrg)
local gnumb = items[gget]
local gnumba = items[gget + 1]
local gnumbs = items[gget - 1]
    
    if gnumb then
        if dir == WEST or dir == EAST then -- Caso não esteja em posição de jogar.
            doPlayerSendTextMessage(cid, 18, "Para jogar, siga as dicas abaixo: \n Para escolher o item da sorte, vire-se para baixo e clique na alavanca até selecioná-lo. \n Para jogar, após ter selecionado o item da sorte, vire-se para cima e puxe novamente a alavanca.")
            
        elseif dir == NORTH then -- Posição de Jogar
            if gget ~= 0 then
                if getGlobalStorageValue(gstrg_control) < 1 then
                    if getPlayerItemCount(cid, valor[1]) >= valor[2] then
                    math1 = math.random(1, qtdd)
                    math2 = math.random(1, qtdd)
                    math3 = math.random(1, qtdd)
                        doPlayerRemoveItem(cid, valor[1], valor[2])
                        mayNotMove(cid, true)
                        doAddCondition(cid, condition_infight)
                        doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Máquina em funcionamento, aguarde.")
                        setGlobalStorageValue(gstrg_control, 1)
                    --- Criando itens
                        doSendMagicEffect(pos[1], eff)
                        doCreateItem(items[math1][1], pos[1])
                        setGlobalStorageValue(istrg[1], items[math1][1])
                        addEvent(doSendMagicEffect, 1000, pos[2], eff)
                        addEvent(doCreateItem, 1000, items[math2][1], pos[2])
                        setGlobalStorageValue(istrg[2], items[math2][1])
                        addEvent(doSendMagicEffect, 2000, pos[3], eff)
                        addEvent(doCreateItem, 2000, items[math3][1], pos[3])
                        setGlobalStorageValue(istrg[3], items[math3][1])
                    --- Checando Itens
                        if gnumbs[1] == getGlobalStorageValue(istrg[1]) then
                            doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Parabéns, você já acertou o primeiro item da combinação.")
                            setPlayerStorageValue(cid, gstrg, (getPlayerStorageValue(cid, gstrg) + 1))
                        else
                            doPlayerSendTextMessage(cid, 18, "Que pena, já perdeu na primeira chance.")
                        end
                        if gnumbs[1] == getGlobalStorageValue(istrg[2]) then
                            addEvent(doPlayerSendTextMessage, 1000, cid, MESSAGE_STATUS_CONSOLE_BLUE, "Parabéns, você acertou o segundo item da combinação.")
                            setPlayerStorageValue(cid, gstrg, (getPlayerStorageValue(cid, gstrg) + 1))
                        else
                            addEvent(doPlayerSendTextMessage, 1000, cid, 18, "Que pena, perdeu na segunda chance.")
                        end
                        if gnumbs[1] == getGlobalStorageValue(istrg[3]) then
                            addEvent(doPlayerSendTextMessage, 2000, cid, MESSAGE_STATUS_CONSOLE_BLUE, "Parabéns, você acertou o terceiro item da combinação.")
                            setPlayerStorageValue(cid, gstrg, (getPlayerStorageValue(cid, gstrg) + 1))
                        else
                            addEvent(doPlayerSendTextMessage, 2000, cid, 18, "Que pena, perdeu na terceira chance.")
                        end
                        addEvent(function()
                        for z = 1, 3 do
                            doRemoveItem(getTileItemById(pos[z], getGlobalStorageValue(istrg[z])).uid, 1)
                            doSendMagicEffect(pos[z], reff)
                        end
                            mayNotMove(cid, false)
                            setGlobalStorageValue(gstrg_control, 0)
                            addEvent(CassPremio, 500, cid)
                        end, 5000)
                    --- Fim Checagem
                    else
                        doPlayerSendCancel(cid, "Você precisa de "..valor[2].." "..getItemNameById(valor[1]).." para jogar.")
                    end
                else
                    doPlayerSendCancel(cid, "Precisa esperar o jogo finalizar para jogar novamente.")
                end
            else
                doPlayerSendCancel(cid, "Primeiro selecione o item de sorte para poder jogar.")
            end
            
        elseif dir == SOUTH then -- Posição de Selecionar Item da Sorte
            if getGlobalStorageValue(gstrg_control) < 1 then
                if gget <= 0 then
                    doCreateItem(gnumba[1], 1, iluck_pos)
                    doSendMagicEffect(iluck_pos, effect)
                    doPlayerSendCancel(cid, "Você selecionou o "..getItemNameById(gnumba[1]).." como seu item da sorte.")
                    setGlobalStorageValue(gstrg, 2)
                elseif gget >= 2 and gget < (qtdd + 1) then    
                    if getTileItemById(iluck_pos, gnumbs[1]).uid > 0 then
                        doRemoveItem(getTileItemById(iluck_pos, gnumbs[1]).uid, 1)
                    end
                    doCreateItem(gnumb[1], 1, iluck_pos)
                    doSendMagicEffect(iluck_pos, effect)
                    doPlayerSendCancel(cid, "Você selecionou o "..getItemNameById(gnumb[1]).." como seu item da sorte.")
                    setGlobalStorageValue(gstrg, (gget + 1))
                elseif gget >= (qtdd + 1) then
                    if getTileItemById(iluck_pos, gnumbs[1]).uid > 0 then
                        doRemoveItem(getTileItemById(iluck_pos, gnumbs[1]).uid, 1)
                    end
                    doSendMagicEffect(iluck_pos, effect)
                    doPlayerSendCancel(cid, "Você resetou os itens.")
                    setGlobalStorageValue(gstrg, 0)
                end
            else
                doPlayerSendCancel(cid, "Precisa esperar o jogo finalizar para selecionar outro item da sorte.")
            end
        end
    else
        doPlayerSendCancel(cid, "Você ativou o Cassino Slots.")
        setGlobalStorageValue(gstrg, 0)
    end
return true
end

function CassPremio(cid)
local gget = getGlobalStorageValue(gstrg)
local gnumb = items[gget]
    if gnumb then
        if getPlayerStorageValue(cid, gstrg) == 1 then
            doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Hmmm, você acertou um item da combinação e foi recompensado em "..comb1[2].." "..getItemNameById(comb1[1])..".")
            doPlayerAddItem(cid, comb1[1], comb1[2])
            setPlayerStorageValue(cid, gstrg, 0)
        elseif getPlayerStorageValue(cid, gstrg) == 2 then
            doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Uffa, foi por pouco, mas você acertou dois itens da combinação e foi recompensado em "..comb2[2].." "..getItemNameById(comb2[1])..".")
            doPlayerAddItem(cid, comb2[1], comb2[2])
            setPlayerStorageValue(cid, gstrg, 0)
        elseif getPlayerStorageValue(cid, gstrg) == 3 then
            doBroadcastMessage("Parabéns ao jogador "..getPlayerName(cid).." acertou as 3 combinações da Cassino Slots e foi recompensado em "..comb3[2].." "..getItemNameById(comb3[1]).." e "..premio[2].." "..getItemNameById(premio[1])..".")
            doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Parabéns, você acertou TODOS itens da combinação e foi recompensado em "..comb3[2].." "..getItemNameById(comb3[1]).." e "..premio[2].." "..getItemNameById(premio[1])..".")
            doPlayerAddItem(cid, gnumb, 1)
            doPlayerAddItem(cid, comb3[1], comb3[2])
            setPlayerStorageValue(cid, gstrg, 0)
        elseif getPlayerStorageValue(cid, gstrg) > 3 then
            doPlayerSendCancel(cid, "Mais sorte da próxima vez.")
            setPlayerStorageValue(cid, gstrg, 0)
        end
    else
        print('Ocorreu um erro ao detecer o premio.')
    end
return true
end

 

 

 

Boa sorte.

Editado por Adriano Swatt
Link para o comentário
Compartilhar em outros sites

Boa tarde,

 

 

Tente assim:

#Obs: O prêmio não precisa ser configurado, pois será identificado automaticamente.

 

 

 

------- Script by: Adriano Swatt ----
local condition_infight = createConditionObject(CONDITION_INFIGHT)
setConditionParam(condition_infight, CONDITION_PARAM_TICKS, 8000)

local gstrg = 12129 -- Não Mexa, Storage de Controle Item Global.
local gstrg_control = 12130 -- Não Mexa, Storage de Controle Jogo em Execução.
local istrg = {12131, 12132, 12133} -- Não Mexa, Storage de Itens.
local items = {
[0] = {0},  -- NEUTRO
[1] = {2182}, -- ID do ITEM 1
[2] = {2183}, -- ID do ITEM 2
[3] = {2184}, -- ID do ITEM 3
[4] = {2185}, -- ID do ITEM 4
[5] = {2186}, -- ID do ITEM 5
[6] = {2187}, -- ID do ITEM 6
[7] = {2188}, -- ID do ITEM 7
[8] = {2189}, -- ID do ITEM 8
[9] = {2190}, -- ID do ITEM 9
[10] = {2191}, --ID do ITEM 10
[11] = {0}  -- NEUTRO
}
local qtdd = 10 -- Quantidade de Itens a Sortear // Não precisa apagar as demais linhas de configuração acima.
local valor = {2160, 10} -- ID da Moeda pra Jogar, Quantidade (preço)
local comb1 = {2160, 10} -- ID , Quantidade, para quem acertar 1 item da combinação
local comb2 = {2160, 20} -- ID , Quantidade, para quem acertar 2 item da combinação
local comb3 = {2160, 50} -- ID , Quantidade, para quem acertar todos itens da combinação + o prêmio configurado acima
local iluck_pos = {x=1040, y=1030, z=6} -- Posição onde fica a amostra do item da sorte
local pos = {{x=1041, y=1030, z=6}, {x=1042, y=1030, z=6}, {x=1043, y=1030, z=6}} -- Posições onde os itens sorteados aparecerão
local effect = 26 -- Efeito na hora de selecionar o item da sorte
local eff = 30 -- Efeito ao criar os itens na mesa (hora do sorteio)
local reff = 29 -- Efeito ao remover itens da mesa (ao finalizar)
-------- FIM DAS CONFIGURAÇÕES --------

function onUse(cid, item, frompos, item2, topos)
local dir = getPlayerLookDir(cid)
local gget = getGlobalStorageValue(gstrg)
local gnumb = items[gget]
local gnumba = items[gget + 1]
local gnumbs = items[gget - 1]
    
    if gnumb then
        if dir == WEST or dir == EAST then -- Caso não esteja em posição de jogar.
            doPlayerSendTextMessage(cid, 18, "Para jogar, siga as dicas abaixo: \n Para escolher o item da sorte, vire-se para baixo e clique na alavanca até selecioná-lo. \n Para jogar, após ter selecionado o item da sorte, vire-se para cima e puxe novamente a alavanca.")
            
        elseif dir == NORTH then -- Posição de Jogar
            if gget ~= 0 then
                if getGlobalStorageValue(gstrg_control) < 1 then
                    if getPlayerItemCount(cid, valor[1]) >= valor[2] then
                    math1 = math.random(1, qtdd)
                    math2 = math.random(1, qtdd)
                    math3 = math.random(1, qtdd)
                        doPlayerRemoveItem(cid, valor[1], valor[2])
                        mayNotMove(cid, true)
                        doAddCondition(cid, condition_infight)
                        doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Máquina em funcionamento, aguarde.")
                        setGlobalStorageValue(gstrg_control, 1)
                    --- Criando itens
                        doSendMagicEffect(pos[1], eff)
                        doCreateItem(items[math1][1], pos[1])
                        setGlobalStorageValue(istrg[1], items[math1][1])
                        addEvent(doSendMagicEffect, 1000, pos[2], eff)
                        addEvent(doCreateItem, 1000, items[math2][1], pos[2])
                        setGlobalStorageValue(istrg[2], items[math2][1])
                        addEvent(doSendMagicEffect, 2000, pos[3], eff)
                        addEvent(doCreateItem, 2000, items[math3][1], pos[3])
                        setGlobalStorageValue(istrg[3], items[math3][1])
                    --- Checando Itens
                        if gnumbs[1] == getGlobalStorageValue(istrg[1]) then
                            doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Parabéns, você já acertou o primeiro item da combinação.")
                            setPlayerStorageValue(cid, gstrg, (getPlayerStorageValue(cid, gstrg) + 1))
                        else
                            doPlayerSendTextMessage(cid, 18, "Que pena, já perdeu na primeira chance.")
                        end
                        if gnumbs[1] == getGlobalStorageValue(istrg[2]) then
                            addEvent(doPlayerSendTextMessage, 1000, cid, MESSAGE_STATUS_CONSOLE_BLUE, "Parabéns, você acertou o segundo item da combinação.")
                            setPlayerStorageValue(cid, gstrg, (getPlayerStorageValue(cid, gstrg) + 1))
                        else
                            addEvent(doPlayerSendTextMessage, 1000, cid, 18, "Que pena, perdeu na segunda chance.")
                        end
                        if gnumbs[1] == getGlobalStorageValue(istrg[3]) then
                            addEvent(doPlayerSendTextMessage, 2000, cid, MESSAGE_STATUS_CONSOLE_BLUE, "Parabéns, você acertou o terceiro item da combinação.")
                            setPlayerStorageValue(cid, gstrg, (getPlayerStorageValue(cid, gstrg) + 1))
                        else
                            addEvent(doPlayerSendTextMessage, 2000, cid, 18, "Que pena, perdeu na terceira chance.")
                        end
                        addEvent(function()
                        for z = 1, 3 do
                            doRemoveItem(getTileItemById(pos[z], getGlobalStorageValue(istrg[z])).uid, 1)
                            doSendMagicEffect(pos[z], reff)
                        end
                            mayNotMove(cid, false)
                            setGlobalStorageValue(gstrg_control, 0)
                            addEvent(CassPremio, 500, cid)
                        end, 5000)
                    --- Fim Checagem
                    else
                        doPlayerSendCancel(cid, "Você precisa de "..valor[2].." "..getItemNameById(valor[1]).." para jogar.")
                    end
                else
                    doPlayerSendCancel(cid, "Precisa esperar o jogo finalizar para jogar novamente.")
                end
            else
                doPlayerSendCancel(cid, "Primeiro selecione o item de sorte para poder jogar.")
            end
            
        elseif dir == SOUTH then -- Posição de Selecionar Item da Sorte
            if getGlobalStorageValue(gstrg_control) < 1 then
                if gget <= 0 then
                    doCreateItem(gnumba[1], 1, iluck_pos)
                    doSendMagicEffect(iluck_pos, effect)
                    doPlayerSendCancel(cid, "Você selecionou o "..getItemNameById(gnumba[1]).." como seu item da sorte.")
                    setGlobalStorageValue(gstrg, 2)
                elseif gget >= 2 and gget < (qtdd + 1) then    
                    if getTileItemById(iluck_pos, gnumbs[1]).uid > 0 then
                        doRemoveItem(getTileItemById(iluck_pos, gnumbs[1]).uid, 1)
                    end
                    doCreateItem(gnumb[1], 1, iluck_pos)
                    doSendMagicEffect(iluck_pos, effect)
                    doPlayerSendCancel(cid, "Você selecionou o "..getItemNameById(gnumb[1]).." como seu item da sorte.")
                    setGlobalStorageValue(gstrg, (gget + 1))
                elseif gget >= (qtdd + 1) then
                    if getTileItemById(iluck_pos, gnumbs[1]).uid > 0 then
                        doRemoveItem(getTileItemById(iluck_pos, gnumbs[1]).uid, 1)
                    end
                    doSendMagicEffect(iluck_pos, effect)
                    doPlayerSendCancel(cid, "Você resetou os itens.")
                    setGlobalStorageValue(gstrg, 0)
                end
            else
                doPlayerSendCancel(cid, "Precisa esperar o jogo finalizar para selecionar outro item da sorte.")
            end
        end
    else
        doPlayerSendCancel(cid, "Você ativou o Cassino Slots.")
        setGlobalStorageValue(gstrg, 0)
    end
return true
end

function CassPremio(cid)
local gget = getGlobalStorageValue(gstrg)
local gnumb = items[gget]
    if gnumb then
        if getPlayerStorageValue(cid, gstrg) == 1 then
            doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Hmmm, você acertou um item da combinação e foi recompensado em "..comb1[2].." "..getItemNameById(comb1[1])..".")
            doPlayerAddItem(cid, comb1[1], comb1[2])
            setPlayerStorageValue(cid, gstrg, 0)
        elseif getPlayerStorageValue(cid, gstrg) == 2 then
            doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Uffa, foi por pouco, mas você acertou dois itens da combinação e foi recompensado em "..comb2[2].." "..getItemNameById(comb2[1])..".")
            doPlayerAddItem(cid, comb2[1], comb2[2])
            setPlayerStorageValue(cid, gstrg, 0)
        elseif getPlayerStorageValue(cid, gstrg) == 3 then
            doBroadcastMessage("Parabéns ao jogador "..getPlayerName(cid).." acertou as 3 combinações da Cassino Slots e foi recompensado em "..comb3[2].." "..getItemNameById(comb3[1]).." e "..premio[2].." "..getItemNameById(premio[1])..".")
            doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Parabéns, você acertou TODOS itens da combinação e foi recompensado em "..comb3[2].." "..getItemNameById(comb3[1]).." e "..premio[2].." "..getItemNameById(premio[1])..".")
            doPlayerAddItem(cid, gnumb, 1)
            doPlayerAddItem(cid, comb3[1], comb3[2])
            setPlayerStorageValue(cid, gstrg, 0)
        elseif getPlayerStorageValue(cid, gstrg) > 3 then
            doPlayerSendCancel(cid, "Mais sorte da próxima vez.")
            setPlayerStorageValue(cid, gstrg, 0)
        end
    else
        print('Ocorreu um erro ao detecer o premio.')
    end
return true
end

 

 

 

Boa sorte.

Amigo, quando acerto os 3 itens, não ganho nada, nem o comb3 nem o item escolhido, quandoa certo 1 ou 2 eu ganho o comb1 e comb2, tem como me ajudar?

 

Editado por samlecter
Link para o comentário
Compartilhar em outros sites

Boa tarde,

 

Teste assim:

 

 

 

--[[ Script by: Adriano Swatt ]]--
local condition_infight = createConditionObject(CONDITION_INFIGHT)
setConditionParam(condition_infight, CONDITION_PARAM_TICKS, 8000)

local gstrg = 12129 -- Não Mexa, Storage de Controle Item Global.
local gstrg_control = 12130 -- Não Mexa, Storage de Controle Jogo em Execução.
local istrg = {12131, 12132, 12133} -- Não Mexa, Storage de Itens.
local items = {
    [0] = {0},  -- NEUTRO
    [1] = {2182}, -- ID do ITEM 1
    [2] = {2183}, -- ID do ITEM 2
    [3] = {2184}, -- ID do ITEM 3
    [4] = {2185}, -- ID do ITEM 4
    [5] = {2186}, -- ID do ITEM 5
    [6] = {2187}, -- ID do ITEM 6
    [7] = {2188}, -- ID do ITEM 7
    [8] = {2189}, -- ID do ITEM 8
    [9] = {2190}, -- ID do ITEM 9
    [10] = {2191}, --ID do ITEM 10
    [11] = {0}  -- NEUTRO
}
local qtdd = 10 -- Quantidade de Itens a Sortear // Não precisa apagar as demais linhas de configuração acima.
local valor = {2160, 10} -- ID da Moeda pra Jogar, Quantidade (preço)
local comb1 = {2160, 10} -- ID , Quantidade, para quem acertar 1 item da combinação
local comb2 = {2160, 20} -- ID , Quantidade, para quem acertar 2 item da combinação
local comb3 = {2160, 50} -- ID , Quantidade, para quem acertar todos itens da combinação + o prêmio configurado acima
local iluck_pos = {x=1040, y=1030, z=6} -- Posição onde fica a amostra do item da sorte
local pos = {{x=1041, y=1030, z=6}, {x=1042, y=1030, z=6}, {x=1043, y=1030, z=6}} -- Posições onde os itens sorteados aparecerão
local effect = 26 -- Efeito na hora de selecionar o item da sorte
local eff = 30 -- Efeito ao criar os itens na mesa (hora do sorteio)
local reff = 29 -- Efeito ao remover itens da mesa (ao finalizar)
-------- FIM DAS CONFIGURAÇÕES --------

function onUse(cid, item, frompos, item2, topos)
local dir = getPlayerLookDir(cid)
local gget = getGlobalStorageValue(gstrg)
local gnumb = items[gget]
local gnumba = items[gget + 1]
local gnumbs = items[gget - 1]
    
    if gnumb then
        if dir == WEST or dir == EAST then -- Caso não esteja em posição de jogar.
            doPlayerSendTextMessage(cid, 18, "Para jogar, siga as dicas abaixo: \n Para escolher o item da sorte, vire-se para baixo e clique na alavanca até selecioná-lo. \n Para jogar, após ter selecionado o item da sorte, vire-se para cima e puxe novamente a alavanca.")
            
        elseif dir == NORTH then -- Posição de Jogar
            if gget ~= 0 then
                if getGlobalStorageValue(gstrg_control) < 1 then
                    if getPlayerItemCount(cid, valor[1]) >= valor[2] then
                    math1 = math.random(1, qtdd)
                    math2 = math.random(1, qtdd)
                    math3 = math.random(1, qtdd)
                        doPlayerRemoveItem(cid, valor[1], valor[2])
                        mayNotMove(cid, true)
                        doAddCondition(cid, condition_infight)
                        doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Máquina em funcionamento, aguarde.")
                        setGlobalStorageValue(gstrg_control, 1)
                    --- Criando itens
                        doSendMagicEffect(pos[1], eff)
                        doCreateItem(items[math1][1], pos[1])
                        setGlobalStorageValue(istrg[1], items[math1][1])
                        addEvent(doSendMagicEffect, 1000, pos[2], eff)
                        addEvent(doCreateItem, 1000, items[math2][1], pos[2])
                        setGlobalStorageValue(istrg[2], items[math2][1])
                        addEvent(doSendMagicEffect, 2000, pos[3], eff)
                        addEvent(doCreateItem, 2000, items[math3][1], pos[3])
                        setGlobalStorageValue(istrg[3], items[math3][1])
                    --- Checando Itens
                        if gnumbs[1] == getGlobalStorageValue(istrg[1]) then
                            doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Parabéns, você já acertou o primeiro item da combinação.")
                            setPlayerStorageValue(cid, gstrg, (getPlayerStorageValue(cid, gstrg) + 1))
                        else
                            doPlayerSendTextMessage(cid, 18, "Que pena, já perdeu na primeira chance.")
                        end
                        if gnumbs[1] == getGlobalStorageValue(istrg[2]) then
                            addEvent(doPlayerSendTextMessage, 1000, cid, MESSAGE_STATUS_CONSOLE_BLUE, "Parabéns, você acertou o segundo item da combinação.")
                            setPlayerStorageValue(cid, gstrg, (getPlayerStorageValue(cid, gstrg) + 1))
                        else
                            addEvent(doPlayerSendTextMessage, 1000, cid, 18, "Que pena, perdeu na segunda chance.")
                        end
                        if gnumbs[1] == getGlobalStorageValue(istrg[3]) then
                            addEvent(doPlayerSendTextMessage, 2000, cid, MESSAGE_STATUS_CONSOLE_BLUE, "Parabéns, você acertou o terceiro item da combinação.")
                            setPlayerStorageValue(cid, gstrg, (getPlayerStorageValue(cid, gstrg) + 1))
                        else
                            addEvent(doPlayerSendTextMessage, 2000, cid, 18, "Que pena, perdeu na terceira chance.")
                        end
                        addEvent(function()
                        for z = 1, 3 do
                            doRemoveItem(getTileItemById(pos[z], getGlobalStorageValue(istrg[z])).uid, 1)
                            doSendMagicEffect(pos[z], reff)
                        end
                            mayNotMove(cid, false)
                            setGlobalStorageValue(gstrg_control, 0)
                            premioID = getGlobalStorageValue(istrg[3])
                            addEvent(CassPremio, 500, cid, premioID)
                        end, 5000)
                    --- Fim Checagem
                    else
                        doPlayerSendCancel(cid, "Você precisa de "..valor[2].." "..getItemNameById(valor[1]).." para jogar.")
                    end
                else
                    doPlayerSendCancel(cid, "Precisa esperar o jogo finalizar para jogar novamente.")
                end
            else
                doPlayerSendCancel(cid, "Primeiro selecione o item de sorte para poder jogar.")
            end
            
        elseif dir == SOUTH then -- Posição de Selecionar Item da Sorte
            if getGlobalStorageValue(gstrg_control) < 1 then
                if gget <= 0 then
                    doCreateItem(gnumba[1], 1, iluck_pos)
                    doSendMagicEffect(iluck_pos, effect)
                    doPlayerSendCancel(cid, "Você selecionou o "..getItemNameById(gnumba[1]).." como seu item da sorte.")
                    setGlobalStorageValue(gstrg, 2)
                elseif gget >= 2 and gget < (qtdd + 1) then    
                    if getTileItemById(iluck_pos, gnumbs[1]).uid > 0 then
                        doRemoveItem(getTileItemById(iluck_pos, gnumbs[1]).uid, 1)
                    end
                    doCreateItem(gnumb[1], 1, iluck_pos)
                    doSendMagicEffect(iluck_pos, effect)
                    doPlayerSendCancel(cid, "Você selecionou o "..getItemNameById(gnumb[1]).." como seu item da sorte.")
                    setGlobalStorageValue(gstrg, (gget + 1))
                elseif gget >= (qtdd + 1) then
                    if getTileItemById(iluck_pos, gnumbs[1]).uid > 0 then
                        doRemoveItem(getTileItemById(iluck_pos, gnumbs[1]).uid, 1)
                    end
                    doSendMagicEffect(iluck_pos, effect)
                    doPlayerSendCancel(cid, "Você resetou os itens.")
                    setGlobalStorageValue(gstrg, 0)
                end
            else
                doPlayerSendCancel(cid, "Precisa esperar o jogo finalizar para selecionar outro item da sorte.")
            end
        end
    else
        doPlayerSendCancel(cid, "Você ativou o Cassino Slots.")
        setGlobalStorageValue(gstrg, 0)
    end
return true
end

function CassPremio(cid, premioID)
    if getPlayerStorageValue(cid, gstrg) == 1 then
        doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Hmmm, você acertou um item da combinação e foi recompensado em "..comb1[2].." "..getItemNameById(comb1[1])..".")
        doPlayerAddItem(cid, comb1[1], comb1[2])
        setPlayerStorageValue(cid, gstrg, 0)
    elseif getPlayerStorageValue(cid, gstrg) == 2 then
        doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Uffa, foi por pouco, mas você acertou dois itens da combinação e foi recompensado em "..comb2[2].." "..getItemNameById(comb2[1])..".")
        doPlayerAddItem(cid, comb2[1], comb2[2])
        setPlayerStorageValue(cid, gstrg, 0)
    elseif getPlayerStorageValue(cid, gstrg) == 3 then
        doBroadcastMessage("Parabéns ao jogador "..getPlayerName(cid).." acertou as 3 combinações da Cassino Slots e foi recompensado em "..comb3[2].." "..getItemNameById(comb3[1]).." e "..premio[2].." "..getItemNameById(premio[1])..".")
        doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Parabéns, você acertou TODOS itens da combinação e foi recompensado em "..comb3[2].." "..getItemNameById(comb3[1]).." e "..premio[2].." "..getItemNameById(premio[1])..".")
        setPlayerStorageValue(cid, gstrg, 0)
        doPlayerAddItem(cid, comb3[1], comb3[2])
        doPlayerAddItem(cid, premioID, 1)
    elseif getPlayerStorageValue(cid, gstrg) > 3 then
        doPlayerSendCancel(cid, "Mais sorte da próxima vez.")
        setPlayerStorageValue(cid, gstrg, 0)
    end
return true
end

 

Boa sorte.

Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...