Ir para conteúdo
Propaganda

Posts Recomendados

  • Administrador

Salve rapaziada, script feito pra TFS 0.3.6

 

1° Passo

Spoiler

Crie um arquivos roleta.lua na pasta actions/scripts e cole o código

local config = {
    effect = 1345, -- effect on player
    effectReward = 322, --- effect on top of premium
    effectLever = 320, -- effect on top of lever
    eventCoin = 2159, -- item to play
    qtdCoin = 5, --amount of coin to play
    lose = false, --chaance for win NOTHING XD
    itemLose = 2638, -- item that represent the loss ( u need to aadd this item to the table)
    effectLose = 29, -- effect on top of prize when lose
    exaust = 10.0, -- exhaus
    storage = 23111, -- storaage exhaust
    used = 10, -- tempo = duraation time
    used_storage = 23112, -- Storage pra verificar se a roleta esta sendo usada
    used = 10,
    poss = {
        [1] = {x = 2484, y = 2439, z = 7},
        [2] = {x = 2485, y = 2439, z = 7},
        [3] = {x = 2486, y = 2439, z = 7},
        [4] = {x = 2487, y = 2439, z = 7},
        [5] = {x = 2488, y = 2439, z = 7}
    },
    items = { -- id = id do item - chance = chance de aparecer o item - count = a quantidade de item que a pessoa ira ganhar
        [1] = {id = 2506, chance = 20, count = 1},
        [2] = {id = 2480, chance = 30, count = 1},
        [3] = {id = 2128, chance = 60, count = 1},
        [4] = {id = 11562, chance = 70, count = 1},
        [5] = {id = 2160, chance = 65, count = 100},
        [6] = {id = 2173, chance = 50, count = 1},
        [7] = {id = 2415, chance = 35, count = 1},
      --  [8] = {id = 12386, chance = 50, count = 30},
      --  [9] = {id = 12391, chance = 45, count = 30},
      --  [10] = {id = 12390, chance = 40, count = 30},
        --[11] = {id = 12211, chance = 3, count = 1},
      --  [12] = {id = 12212, chance = 3, count = 1},
      --  [13] = {id = 12213, chance = 3, count = 1}
    }
}
 
local slot1, slot2, slot3, slot4, slot5
 
local function cleanTile(item, i)
    doCleanTile(config.poss[i], true)
    doCreateItem(item, 1, config.poss[i])
end
 
local function raffle(item)
    if slot4 ~= nil then
        slot5 = slot4
        cleanTile(1617, 5)
        doCreateItem(slot5.id, slot5.count, config.poss[5])
    end
    if slot3 ~= nil then
        slot4 = slot3
        cleanTile(1617, 4)
        doCreateItem(slot4.id, slot4.count, config.poss[4])
    end
    if slot2 ~= nil then
        slot3 = slot2
        cleanTile(1485, 3)
        doCreateItem(slot3.id, slot3.count, config.poss[3])
    end
    if slot1 ~= nil then
        slot2 = slot1
        cleanTile(1617, 2)
        doCreateItem(slot2.id, slot2.count, config.poss[2])
    end
    slot1 = {id = item.id, count = item.count}
    cleanTile(1617, 1)
    doCreateItem(slot1.id, slot1.count, config.poss[1])
end
 
local function result(uid)
    if isPlayer(uid) then
        if config.lose and slot3.id == config.itemLose then
            doSendMagicEffect(getCreaturePosition(uid), CONST_ME_POFF)
            doSendMagicEffect(config.poss[3], config.effectLose)
            doPlayerSendTextMessage(uid, MESSAGE_STATUS_CONSOLE_BLUE,
                                    "[ROLETA] Que azar, tente novamente!.")
        else
            doSendMagicEffect(getCreaturePosition(uid), config.effect)
            doSendMagicEffect(config.poss[3], config.effectReward)
            doPlayerSendTextMessage(uid, MESSAGE_STATUS_CONSOLE_BLUE,
                                    "[ROLETA] Voce ganhou " .. slot3.count .. " " .. getItemNameById(slot3.id) .. ". Parabens!")
            doPlayerAddItem(uid, slot3.id, slot3.count)
        end
    end
end
 
function onUse(cid, item, pos, itemEx, posEx)
    if item.itemid == 1945 then doTransformItem(item.uid, item.itemid + 1) end
    if item.itemid == 1946 then doTransformItem(item.uid, item.itemid - 1) end
 
    if getGlobalStorageValue(config.used_storage) <= os.time() then
        if not exhaustion.check(cid, config.storage) then
            if getPlayerItemCount(cid, config.eventCoin) >= config.qtdCoin then
                local rand = math.random(10, 30)
                doSendMagicEffect(pos, config.effectLever)
                setGlobalStorageValue(config.used_storage, rand + 5 + os.time())
                exhaustion.set(cid, config.storage, rand)
                doPlayerRemoveItem(cid, config.eventCoin, config.qtdCoin)
                local loop = 0
                slot1 = nil
                slot2 = nil
                slot3 = nil
                slot4 = nil
                slot5 = nil
 
                for i = 1, #config.poss do
                    if i == 3 then
                        cleanTile(1485, i)
                    else
                        cleanTile(1617, i)
                    end
                end
 
                while rand >= loop do
                    local roll = math.random(1, 100)
                    index = math.random(#config.items)
                    if roll <= config.items[index].chance then
                        local item = config.items[index]
                        loop = loop + 1
                        addEvent(raffle, loop * 1000, item)
                    end
                end
                addEvent(result, (rand + 2) * 1000, cid)
            else
                doSendMagicEffect(getCreaturePosition(cid), CONST_ME_POFF)
                doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE,
                                        "[ROLETA] Voce precisa ter " .. config.qtdCoin .. " " .. getItemNameById(config.eventCoin) .. " na BP!.")
            end
        else
            doSendMagicEffect(fromPosition, CONST_ME_POFF)
            doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR,
                                    "Exhaustion, aguarde " .. exhaustion.get(cid, config.storage) .. " segundos para usar a roleta novamente!")
            return false
        end
        return true
    else
        doSendMagicEffect(getCreaturePosition(cid), CONST_ME_POFF)
        doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "[ROLETA] Sorteio em andamento, espere finalizar para iniciar outro.")
    end
end

As edições que precisa fazer estão comentadas no código. Caso queira alterar a velocidade da roleta, procure no código por

while rand >= loop do
                    local roll = math.random(1, 100)
                    index = math.random(#config.items)
                    if roll <= config.items[index].chance then
                        local item = config.items[index]
                        loop = loop + 1
                        addEvent(raffle, loop * 500, item)
                    end
                end
                addEvent(result, (rand + 2) * 500, cid)
            else

Não esqueça de adicionar no actions.xml

<action actionid="44950" event="script" value="roulette.lua"/> --(lembre de adicionar a actionId na alavanca)

 

 

  • Like 13
  • Thanks 3
  • Sad 2
Link para o comentário
https://tibiadevs.com/forums/topic/55-sistema-de-cassinoroleta/
Compartilhar em outros sites

  • Administrador

Obrigado pela contribuição 🥹❤️

Link para o comentário
https://tibiadevs.com/forums/topic/55-sistema-de-cassinoroleta/#findComment-289
Compartilhar em outros sites

Crie uma conta ou entre para comentar

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

Criar uma conta

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

Crie uma nova conta

Entrar

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

Entrar Agora
×
  • Criar Novo...