Postado Janeiro 1, 2021 4 anos 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 Gif-Cassino.mp4 Instalação: Crie uma sala parecida com esta pelo seu Map Editor Spoiler 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(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 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 Fevereiro 14, 2021 4 anos por FeehLoveCes Melhoria no codigo (veja o histórico de edições)
Postado Fevereiro 14, 2021 4 anos Sabe me Informar se tem como tirar pra nao Usar o GOLD. e coloca pra usa por outro item?
Postado Fevereiro 14, 2021 4 anos 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.
Postado Fevereiro 18, 2021 4 anos Boa Tarde, Estou com um Problema quando a Roleta entrega o Premio toma debug poderia me da uma ajuda de como arruma isso?
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.