Ir para conteúdo

Featured Replies

Postado
  • Este é um post popular.

Olhando alguns posts vi que pediram um Cassino que já existe em um servidor ou um semelhante, porem não encontrei ninguém postando nenhum, então resolvi criar ele já que não tinha nada melhor pra fazer...

 

Testado: OTX mas acredito que funcione em TFS 0.3/0.4

Como funciona: Ao puxar a alavanca será roletado uma serie de itens X vezes, ao terminar o item que parar no centro é a recompensa do player.

 

Spoiler

 

Instalação: Crie uma sala parecida com esta pelo seu Map Editor

Spoiler

EVENTO.thumb.png.5b9bf314f87c8c090dafbcd6b0415f75.png

 

 

Depois em data/actions/scripts crie um arquivo chamado cassinoroll.lua

Spoiler
-------------------------------------------
-- | Script: Cassino - Roleta de items | --
-- | Author: Feeh                                | --
-- | Test: OTX, TFS 0.4                         | --
-------------------------------------------
local config = {
    effect = 1345-- efeito em cima do jogador
    effectReward = 322-- efeito em cima do premio
    effectLever = 320-- efeito em cima da alavanca
    eventCoin = 2159-- valor para jogar
    qtdCoin = 5-- quantidade do coin para jogar.
    lose = false-- se ira ter a opção de não ganhar nada
    itemLose = 2638-- id do item que representara a perca (Obs: não se esqueça de adiciona-lo a lista de items)
    effectLose = 29-- efeito em cima do premio quando perder
    exaust = 10.0-- Segundos de exaust
    storage = 23111-- Storage do exaust
    used = 10-- Tempo da duração da roleta
    used_storage = 23112-- Storage pra verificar se a roleta esta sendo usada
    used = 10,
    poss = {
        [1] = {x = 993, y = 866, z = 6}, -- Coloque a coordenada da POS1 no Map Editor
        [2] = {x = 994, y = 866, z = 6}, -- Coloque a coordenada da POS2 no Map Editor
        [3] = {x = 995, y = 866, z = 6}, -- Coloque a coordenada da POS3 no Map Editor - local do premio
        [4] = {x = 996, y = 866, z = 6}, -- Coloque a coordenada da POS4 no Map Editor
        [5] = {x = 997, y = 866, z = 6-- Coloque a coordenada da POS5 no Map Editor
    },
    items = { -- id = id do item - chance = chance de aparecer o item - count = a quantidade de item que a pessoa ira ganhar
        [1] = {id = 11452, chance = 20, count = 2},
        [2] = {id = 11452, chance = 30, count = 1},
        [3] = {id = 12122, chance = 60, count = 1},
        [4] = {id = 12121, chance = 70, count = 1},
        [5] = {id = 2160, chance = 65, count = 100},
        [6] = {id = 12120, chance = 50, count = 1},
        [7] = {id = 12124, 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(itemi)
    doCleanTile(config.poss[i], true)
    doCreateItem(item, 1, config.poss[i])
end
 
local function raffle(item)
    if slot4 ~= nil then
        slot5 = slot4
        cleanTile(16175)
        doCreateItem(slot5.id, slot5.count, config.poss[5])
    end
    if slot3 ~= nil then
        slot4 = slot3
        cleanTile(16174)
        doCreateItem(slot4.id, slot4.count, config.poss[4])
    end
    if slot2 ~= nil then
        slot3 = slot2
        cleanTile(14853)
        doCreateItem(slot3.id, slot3.count, config.poss[3])
    end
    if slot1 ~= nil then
        slot2 = slot1
        cleanTile(16172)
        doCreateItem(slot2.id, slot2.count, config.poss[2])
    end
    slot1 = {id = item.id, count = item.count}
    cleanTile(16171)
    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(ciditempositemExposEx)
    if item.itemid == 1945 then doTransformItem(item.uid, item.itemid + 1end
    if item.itemid == 1946 then doTransformItem(item.uid, item.itemid - 1end
 
    if getGlobalStorageValue(config.used_storage) <= os.time() then
        if not exhaustion.check(cid, config.storagethen
            if getPlayerItemCount(cid, config.eventCoin) >= config.qtdCoin then
                local rand = math.random(1030)
                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(1100)
                    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

 

Agora em Actions.xml

Spoiler
    <action uniqueid="43578" event="script" value="cassinoroll.lua"/>

 

Créditos:

Feeh - Por criar

@Storm - Me ajudar em algumas duvidas

 

Caso alguém conheça quem teve a ideia do evento eu coloco os créditos

 

Editado por FeehLoveCes
Melhoria no codigo (veja o histórico de edições)

  • 1 month later...
  • Respostas 15
  • Visualizações 5.1k
  • Created
  • Última resposta

Top Posters In This Topic

Posted Images

Postado
  • Autor
12 horas atrás, Diego Rosa disse:

Sabe me Informar se tem como tirar pra nao Usar o GOLD. e coloca pra usa por outro item?

 

Editei o tópico e agora deixei livre o item a escolha, assim podendo colocar outro item ou gold mesmo

52 minutos atrás, Apache disse:

muito bom mano, parabéns sistema diferenciado e top!

Obrigado.

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

Quem Está Navegando 0

  • Nenhum usuário registrado visualizando esta página.

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 519.6k

Informação Importante

Confirmação de Termo