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

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