Ir para conteúdo
Entre para seguir isso  
mastercraft

Slot Machine (para pokemon/cassino)

Recommended Posts

mastercraft    1
mastercraft

nome: Slot Machine (action, jogo de cassino)

autor: mastercraft

versão testada: TFS 0.36 pl 1 (8.54)

 

[spoiler=O que é ?]É um joguinho que você puxa a alavanca (da use no item) e a máquina te devolve 3 números aleatórios, e dependendo desses números, o jogador ganha um prêmio em STORAGE.

 

 

Devo avisar logo que isso era a princípio ser um sistema, pois as moedas que o jogador ganha estão em storage, e eu ia fazer um NPC que troca essas moedas por prêmios etc.

 

Também foi feito pra servidores de pokemon!

 

Primeiro passo: crie um arquivo chamado slotmachine.lua e coloque na pasta data/actions/scripts/, e coloque esses códigos dentro:

 

local coins = 23254
local cost = 10
local playing = createConditionObject(CONDITION_INFIGHT)
setConditionParam(playing, CONDITION_PARAM_TICKS, 3000)

   function getJackpotEffect()
       local it = math.random(1,5)
       if it == 1 then
       return 27
       elseif it == 2 then
       return 28
       elseif it == 3 then
       return 29
       elseif it == 4 then
       return 84
       else
       return 85
       end
   end

   function sendJackpotEffect(pos)
       local pos1 = {x = pos.x + 2, y = pos.y, z = pos.z}
       local pos2 = {x = pos.x + 1, y = pos.y + 1, z = pos.z}
       local pos3 = {x = pos.x, y = pos.y + 2, z = pos.z}
       local pos4 = {x = pos.x - 1, y = pos.y + 1, z = pos.z}
       local pos5 = {x = pos.x - 2, y = pos.y, z = pos.z}
       local pos6 = {x = pos.x - 1, y = pos.y - 1, z = pos.z}
       local pos7 = {x = pos.x, y = pos.y - 2, z = pos.z}
       local pos8 = {x = pos.x + 1, y = pos.y - 1, z = pos.z}
       doSendDistanceShoot(pos, pos1, 39)
       doSendDistanceShoot(pos, pos2, 39)
       doSendDistanceShoot(pos, pos3, 39)
       doSendDistanceShoot(pos, pos4, 39)
       doSendDistanceShoot(pos, pos5, 39)
       doSendDistanceShoot(pos, pos6, 39)
       doSendDistanceShoot(pos, pos7, 39)
       doSendDistanceShoot(pos, pos8, 39)
       doSendMagicEffect(pos1, getJackpotEffect())
       doSendMagicEffect(pos2, getJackpotEffect())
       doSendMagicEffect(pos3, getJackpotEffect())
       doSendMagicEffect(pos4, getJackpotEffect())
       doSendMagicEffect(pos5, getJackpotEffect())
       doSendMagicEffect(pos6, getJackpotEffect())
       doSendMagicEffect(pos7, getJackpotEffect())
       doSendMagicEffect(pos8, getJackpotEffect())
   end


function onUse(cid, item, frompos, item2, topos)
if topos.y + 1 ~= getThingPos(cid).y or topos.x ~= getThingPos(cid).x then
local poss = {x = topos.x, y = topos.y + 1, z = topos.z}
if isWalkable(poss, cid, 0, 0) then
doPushCreature(cid, getDirectionTo(getThingPos(cid), poss), 1, 0)
if not (getThingPos(cid).x == topos.x and getThingPos(cid).y == topos.y + 1) then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Please, stay in front of the slot machine to play it.")
return true
end
doCreatureSetLookDir(cid, 0)
else
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Please, stay in front of the slot machine to play it.")
return true
end
end
doCreatureSetLookDir(cid, 0)
if getPlayerNoMove(cid) == true then
return true
end
if getPlayerStorageValue(cid, coins) < cost then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You don't have enough cassino coins to play the slot machine.")
return true
end
local mymoney = getPlayerStorageValue(cid, coins)
setPlayerStorageValue(cid, coins, mymoney - cost)
doPlayerSetNoMove(cid, true)
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You pushed the machine lever.")
doTransformItem(item2.uid, 3718)
   local function doPullBack(pos)
   doTransformItem(getTileItemById(pos, 3718).uid, 3719)
   end
addEvent(doPullBack, 500, topos)

   local function doPlay(cid, pos, first, second, third)
       doAddCondition(cid, playing)
       if first == 0 then
       firstplay = math.random(1, 9)
       doSendAnimatedText(pos, firstplay, 66)
       addEvent(doPlay, 900, cid, pos, firstplay, second, third)
       return true
       end
       if second == 0 then
       secondplay = math.random(1, 9)
       doSendAnimatedText(pos, secondplay, 66)
       addEvent(doPlay, 900, cid, pos, first, secondplay, third)
       return true
       end
       if third == 0 then
       thirdplay = math.random(1, 9)
       doSendAnimatedText(pos, thirdplay, 66)
       addEvent(doPlay, 900, cid, pos, first, second, thirdplay)
       return true
       end
       if first == second and second == third and third == 9 then
       doSendAnimatedText(pos, "JACKPOT!", 180)
       sendJackpotEffect(getThingPos(cid))
       addEvent(doSendAnimatedText, 600, pos, "JACKPOT!", 66)
       addEvent(sendJackpotEffect, 600, getThingPos(cid))
       addEvent(doSendAnimatedText, 1400, pos, "JACKPOT!", 180)
       addEvent(sendJackpotEffect, 1400, getThingPos(cid))
       addEvent(doSendAnimatedText, 2200, pos, "JACKPOT!", 66)
       addEvent(sendJackpotEffect, 2200, getThingPos(cid))
       local ppos = getThingPos(cid)
       local win = (mymoney - cost) + 1000
       addEvent(doSendAnimatedText, 2500, ppos, "+1000", 35)
       addEvent(setPlayerStorageValue, 2500, cid, coins, win)
       addEvent(doPlayerSendTextMessage, 2500, cid, MESSAGE_STATUS_CONSOLE_BLUE, "You won 1000 cassino coins.")
       addEvent(doPlayerSetNoMove, 2500, cid, false)
       return true
       end
       if first == second then
       if first <= 4 then
       doSendAnimatedText(pos, "GOOD", 215)
       local ppos = getThingPos(cid)
       local win = (mymoney - cost) + 30
       addEvent(doSendAnimatedText, 500, ppos, "+30", 35)
       addEvent(setPlayerStorageValue, 500, cid, coins, win)
       addEvent(doPlayerSendTextMessage, 500, cid, MESSAGE_STATUS_CONSOLE_BLUE, "You won 30 cassino coins.")
       addEvent(doPlayerSetNoMove, 500, cid, false)
       elseif first <= 8 then
       doSendAnimatedText(pos, "GREAT", 210)
       local ppos = getThingPos(cid)
       local win = (mymoney - cost) + 75
       addEvent(doSendAnimatedText, 500, ppos, "+75", 35)
       addEvent(setPlayerStorageValue, 500, cid, coins, win)
       addEvent(doPlayerSendTextMessage, 500, cid, MESSAGE_STATUS_CONSOLE_BLUE, "You won 75 cassino coins.")
       addEvent(doPlayerSetNoMove, 500, cid, false)
       else
       doSendAnimatedText(pos, "EXCELLENT", 35)
       local ppos = getThingPos(cid)
       local win = (mymoney - cost) + 120
       addEvent(doSendAnimatedText, 500, ppos, "+120", 35)
       addEvent(setPlayerStorageValue, 500, cid, coins, win)
       addEvent(doPlayerSendTextMessage, 500, cid, MESSAGE_STATUS_CONSOLE_BLUE, "You won 120 cassino coins.")
       addEvent(doPlayerSetNoMove, 500, cid, false)
       end
       return true
       end
       if first == third then
       if first <= 4 then
       doSendAnimatedText(pos, "GOOD", 215)
       local ppos = getThingPos(cid)
       local win = (mymoney - cost) + 30
       addEvent(doSendAnimatedText, 500, ppos, "+30", 35)
       addEvent(setPlayerStorageValue, 500, cid, coins, win)
       addEvent(doPlayerSendTextMessage, 500, cid, MESSAGE_STATUS_CONSOLE_BLUE, "You won 30 cassino coins.")
       addEvent(doPlayerSetNoMove, 500, cid, false)
       elseif first <= 8 then
       doSendAnimatedText(pos, "GREAT", 210)
       local ppos = getThingPos(cid)
       local win = (mymoney - cost) + 75
       addEvent(doSendAnimatedText, 500, ppos, "+75", 35)
       addEvent(setPlayerStorageValue, 500, cid, coins, win)
       addEvent(doPlayerSendTextMessage, 500, cid, MESSAGE_STATUS_CONSOLE_BLUE, "You won 75 cassino coins.")
       addEvent(doPlayerSetNoMove, 500, cid, false)
       else
       doSendAnimatedText(pos, "EXCELLENT", 35)
       local ppos = getThingPos(cid)
       local win = (mymoney - cost) + 120
       addEvent(doSendAnimatedText, 500, ppos, "+120", 35)
       addEvent(setPlayerStorageValue, 500, cid, coins, win)
       addEvent(doPlayerSendTextMessage, 500, cid, MESSAGE_STATUS_CONSOLE_BLUE, "You won 120 cassino coins.")
       addEvent(doPlayerSetNoMove, 500, cid, false)
       end
       return true
       end
       if third == second then
       if third <= 4 then
       doSendAnimatedText(pos, "GOOD", 215)
       local ppos = getThingPos(cid)
       local win = (mymoney - cost) + 30
       addEvent(doSendAnimatedText, 500, ppos, "+30", 35)
       addEvent(setPlayerStorageValue, 500, cid, coins, win)
       addEvent(doPlayerSendTextMessage, 500, cid, MESSAGE_STATUS_CONSOLE_BLUE, "You won 30 cassino coins.")
       addEvent(doPlayerSetNoMove, 500, cid, false)
       elseif third <= 8 then
       doSendAnimatedText(pos, "GREAT", 210)
       local ppos = getThingPos(cid)
       local win = (mymoney - cost) + 75
       addEvent(doSendAnimatedText, 500, ppos, "+75", 35)
       addEvent(setPlayerStorageValue, 500, cid, coins, win)
       addEvent(doPlayerSendTextMessage, 500, cid, MESSAGE_STATUS_CONSOLE_BLUE, "You won 75 cassino coins.")
       addEvent(doPlayerSetNoMove, 500, cid, false)
       else
       doSendAnimatedText(pos, "EXCELLENT", 35)
       local ppos = getThingPos(cid)
       local win = (mymoney - cost) + 120
       addEvent(doSendAnimatedText, 500, ppos, "+120", 35)
       addEvent(setPlayerStorageValue, 500, cid, coins, win)
       addEvent(doPlayerSendTextMessage, 500, cid, MESSAGE_STATUS_CONSOLE_BLUE, "You won 120 cassino coins.")
       addEvent(doPlayerSetNoMove, 500, cid, false)
       end
       return true
       end
       doSendAnimatedText(pos, "FAIL", 180)
       doPlayerSetNoMove(cid, false)
       return true
       end
doAddCondition(cid, playing)
addEvent(doPlay, 850, cid, topos, 0, 0, 0)
return true
end

Último passo: abra o arquivo actions.xml (localizado em data/actions) e adicione essa tag em qualquer lugar:

 

    <action itemid="3719" event="script" value="slotmachine.lua"/>

Depois disso, só testar, logo mais ensino como configurar, como colocar prêmios como itens/dinheiro, e posso fazer o NPC que troca as moedas por outros itens.

 

Basta dizer /i 3719 e dar use no item para testar

 

Um detalhe: quando o jogador ganha com os números no máximo, aparece um efeito bem legal :)

Tentem ai tirar o jackpot, ou então estudem a script e tentem fazer ser 100% de chance de tirar o jackpot hahaha boa diversão :)

Editado por mastercraft

Compartilhar este post


Link para o post
Oneshot    24
Oneshot

O script está um pouco grande para a idéia que ele passa, no entanto, está muito bem feito. Gostei bastante e, creio, pode ser usado em qualquer servidor, mesmo os não-Poketemáticos.

 

Criatividade: 80

Organização: 70

Tamanho: 60

Utilidade: 70

 

Nota Final: 70 ou B-

Remuneração Total: 25V$

Compartilhar este post


Link para o post
degloriocg    0
degloriocg

Mastercraft, tem como vc adicionar ai o NPC que vende Pokemon pelas moedas do coincase?

 

E vc é nota 1000, belo script, pra mim vc é o melhor em atividade, pq os considerados melhores não estão postando nada, pra mim vc é o melhor.

 

Vlw.

Compartilhar este post


Link para o post
victor_moa    0
victor_moa

O script parece funcionar perfeitamente...

Parabéns...

Para ficar perfeito so falta add o npc que troca as coins...

e explicar melhor como funciona... pois eh td em volta das storages!

=D

Compartilhar este post


Link para o post
iuniX    4
iuniX

da pra diminuir um pouco usando for

mas ficou legal até.

Compartilhar este post


Link para o post
ManoManolo    0
ManoManolo

dava pra ter usado for + tabelas, ia ficar sei lá, 15 linhas de código

Compartilhar este post


Link para o post
victor_moa    0
victor_moa

Gostaria de saber qual a moeda utilizada por vc na slotmachine..

pois sempre q tento usar fala que nao tem moedas! =D

Compartilhar este post


Link para o post
RafaelMelgaco    0
RafaelMelgaco
Gostaria de saber qual a moeda utilizada por vc na slotmachine..

pois sempre q tento usar fala que nao tem moedas! =D

 

sim aqui também tem esse bug por favor dono do topico arrume isso

Compartilhar este post


Link para o post
iuniX    4
iuniX

Ele não funciona com um item e sim com uma storage.

Compartilhar este post


Link para o post
Ribas1574    1
Ribas1574

Muito legal, tópico organizado... Gostei do sistema :D

Compartilhar este post


Link para o post
RafaelMelgaco    0
RafaelMelgaco

explique melhor por favor, e qual item é usado?

Compartilhar este post


Link para o post
iuniX    4
iuniX

Leia meu post, eu disse que não é usado item. E sim uma storage....

Compartilhar este post


Link para o post
Jhonts    0
Jhonts

Apesar de algumas pessoas se atrapalharem esquecendo q eh uma storage, esta perfeito, muito bom mesmo.

Compartilhar este post


Link para o post
RafaelMelgaco    0
RafaelMelgaco

MAIS NAO DA PRA USAR A A MAQUINA OLHA OQ APARECE

17:58 You don't have enough cassino coins to play the slot machine. :@

Compartilhar este post


Link para o post
iuniX    4
iuniX
MAIS NAO DA PRA USAR A A MAQUINA OLHA OQ APARECE

17:58 You don't have enough cassino coins to play the slot machine. :@

 

Cara, eu te expliquei duas vezes, NÃO É USADO ITEM, É USADO STORAGE como coin.

 

Não é querendo ofender nem nada, mas se você não sabe o básico do básico. Como pretende cuidar de um otserver?

Compartilhar este post


Link para o post
Pokemoon    0
Pokemoon

qual a storage que usa ele esta querendo dizer..aliais nao achei a storage tambem OPASDOPASDOPASOPDOP

Editado por Pokemoon

Compartilhar este post


Link para o post
victor_moa    0
victor_moa

Sim, é uma storage..

Mas mesmo quando eu add valor para essa storage no char, continua sem funcionar!

portanto, não sei o que fazer! =X

Compartilhar este post


Link para o post
RafaelMelgaco    0
RafaelMelgaco

é manow como encontrar essa storage nao sei achar ela, tpw é a storage do player com o item(cassino coins)?

Compartilhar este post


Link para o post
Pokemoon    0
Pokemoon
é manow como encontrar essa storage nao sei achar ela, tpw é a storage do player com o item(cassino coins)?

 

2.......

Compartilhar este post


Link para o post
victor_moa    0
victor_moa

"local coins = 23254"

Está é a storage utiliza (acho)...

Mas mesmo eu adicionando um value a ela, continua a mensagem que não possuo coins! =X

 

---edit--

vou criar um npc que venda os values da storage..

talvez eu esteja add de forma errada!

Compartilhar este post


Link para o post
Visitante
Este tópico está impedido de receber novos posts.
Entre para seguir isso  
  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

×