Ir para conteúdo
  • 0

Roleta System


lucasguzella

Pergunta

Roleta System

Olá, gostaria de um sistema, em que o jogador clica-se na alavanca, assim:

- Ele não pode se mover até terminar a roleta e distribuir os premios.

- A alavanca não pode ser usada novamente até terminar a roleta e distribuir os premios.

 

O item que é usado para pagar e receber são Event Tokens.

 

A roleta, roda um numero aleatório (eu gostaria de math.random(1, 100), mas eu não saberia fazer), jogando sempre um efeito no proximo SQM (atenção, eu gostaria de um delay na hora de usar os effect's de pelo menos 1 ou meio segundo)

 

Da a premiação de acordo com o item que parou.

Segue imagem do script que eu fiz:

Screenshot_1.png.26435e7bbd04e32cbb533147f7a16efc.png

 

Infelizmente meu script não esta da maneira que eu gostaria, então vou posta-lo como base para ajudas.. Obrigado!

-- Sqm's
local pos = {
    [1] = {x = 187, y = 31, z = 9, id = 12411, count = 40},
    [2] = {x = 188, y = 31, z = 9, id = 12411, count = 0},
    [3] = {x = 189, y = 31, z = 9, id = 12411, count = 60},
    [4] = {x = 190, y = 31, z = 9, id = 12411, count = 0},
    [5] = {x = 191, y = 31, z = 9, id = 12411, count = 40},
    [6] = {x = 191, y = 32, z = 9, id = 12411, count = 0},
    [7] = {x = 191, y = 33, z = 9, id = 12411, count = 30},
    [8] = {x = 191, y = 34, z = 9, id = 12411, count = 10},
    [9] = {x = 191, y = 35, z = 9, id = 12411, count = 100},
    [10] = {x = 191, y = 36, z = 9, id = 12411, count = 10},
    [11] = {x = 191, y = 37, z = 9, id = 12411, count = 30},
    [12] = {x = 191, y = 38, z = 9, id = 12411, count = 0},
    [13] = {x = 191, y = 39, z = 9, id = 12411, count = 40},
    [14] = {x = 190, y = 39, z = 9, id = 12411, count = 0},
    [15] = {x = 189, y = 39, z = 9, id = 12411, count = 60},
    [16] = {x = 188, y = 39, z = 9, id = 12411, count = 0},
    [17] = {x = 187, y = 39, z = 9, id = 12411, count = 40},
    [18] = {x = 187, y = 38, z = 9, id = 12411, count = 0},
    [19] = {x = 187, y = 37, z = 9, id = 12411, count = 30},
    [20] = {x = 187, y = 36, z = 9, id = 12411, count = 10},
    [21] = {x = 187, y = 35, z = 9, id = 12411, count = 150},
    [22] = {x = 187, y = 34, z = 9, id = 12411, count = 10},
    [23] = {x = 187, y = 33, z = 9, id = 12411, count = 30},
    [24] = {x = 187, y = 32, z = 9, id = 12411, count = 0}
}

function onUse(cid, item, fromPos)
    if not doPlayerRemoveItem(cid, 12411, 30) then
        doPlayerSendTextMessage(cid, MESSAGE_STATUS_WARNING, 'You need 30 Event Tokens to play.')
        return true
    else
        doSendAnimatedText(getThingPos(cid), '-$ 30', 180)
        local function doTransform()
            local lever = getTileItemById(fromPos, 1945)
            doTransformItem(lever.uid, 1946)
        end

        addEvent(doTransform, 1 * 1000, 1945)
        local rodou = math.random(1,24)
        for i=1, rodou do
            doSendMagicEffect(pos[i], 3)
        end
        doSendMagicEffect(pos[rodou], 56)
        doPlayerAddItem(cid, pos[rodou].id, pos[rodou].count)
        doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, 'Você ganhou ' .. pos[rodou].count ..' event tokens!')
    end
end

 

Ele é muito padrão e nem um pouco avançado, sou muito inexperiente nesse quesito.

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 1

Cara eu fiz um para você, porem estou com pouco tempo acabei configurando poucos itens na roleta, e não configurei as alavancas, testei o sistema em um item qualquer, se foi tu que fez esse sistema que tu postou, vai ser facil configurar a alavanca e algo a mais que você queira.

 


 
 
function onUse(cid, item)

local possitem = {
{x=81 ,y=339, z=7, id = 2160, count = 10}, -- poss de cada item, id e quantidade
{x=82 ,y=339, z=7, id = 5903, count = 1}, -- poss de cada item, id e quantidade
{x=83 ,y=339, z=7, id = 2160, count = 10}, -- poss de cada item, id e quantidade
{x=84 ,y=339, z=7, id = 5878, count = 100}, -- poss de cada item, id e quantidade
{x=85 ,y=339, z=7, id = 5786, count = 1}, -- poss de cada item, id e quantidade
{x=86 ,y=339, z=7, id = 8306, count = 100} -- poss de cada item, id e quantidade
}

local config = {
tempo = 30, -- tempo de espera para jogar 
custo = 100000, -- custo para jogar
str = 21887, -- nao mexa
}

local size = #possitem

if getPlayerStorageValue(cid, config.str) < os.time() and getPlayerMoney(cid) >= config.custo then
doPlayerRemoveMoney(cid, config.custo)
setPlayerStorageValue(cid, config.str, os.time() + config.tempo)
doSendMagicEffect(getThingPos(cid), 12)
 
    for i = 1, size  do
        index = math.random(#possitem)
        sorteio = possitem[index]
 
        addEvent(doSendMagicEffect, 1000+400*(i-1), sorteio, 39)
        table.remove(possitem, index)
    end
 
		addEvent(doPlayerAddItem, 1000+400*size, cid, sorteio.id, sorteio.count)
		else
		doPlayerSendTextMessage(cid, 22, "Espere 30 segundos para jogar novamente, e tenha 100000gps em sua bp!")
		doSendMagicEffect(getThingPos(cid), 2)
		end
		end

O sistema percorre por todas as posições da tabela em random, ele não segue a ordem da tabela, porque se não ele iria ganhar o mesmo item sempre, o efeito corre por todas as posições mas aleatoriamente, quando o efeito parar de andar ele vai checar a posição que parou, e ver na tabela qual é o item dessa posição e adicionar ao player

 

você so precisa adicionar pelo mapa editor os itens no chão, ver o item da posição e adicionar pelo mapa editor, para o player saber o que ele vai ganhar 

 

espero que de certo, abraço !

Link para o comentário
Compartilhar em outros sites

  • Quem Está Navegando   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.
×
×
  • Criar Novo...