VI
action

[Action] Roll System [8.50]

Por Vilden, 08 de set. de 2009 em Actions e Talkactions

script
12
3k
VildenV
08 de setembro de 2009 às 14:33

Roll System

(essa script foi testado no alissow ots)

 

 

Comentario:

 

Bem, eu irei postar aqui uma action que funciona da seguinte maneira: o player compra as apostas no NPC, no caso gold ingots e gold nuggets, cada gold nugget vale 10k e cada ingot 50k, apos adquirida a aposta, o player deve colocá-la no ArrowSlot (onde ficam os bolts), feito isso ele puxa a lavanca e o dado é jogado, se ele tirar um 6 ele ganha 4 vezes o que ele apostou, cada vez que ele vai jogar é removido somente 1 item para ser a aposta, ou seja, não tem como ele apostar mais de 1 gold ingot ou nugget, depois de jogar, o player pega o que recebeu e troca no mesmo NPC para receber seu prêmio em dinheiro (Eu arrumei os preços de venda menores do que os de compra para se fazer um balanceamento nos prêmios porque senão o player levaria muita vantagem).

 

 

Então vamos ao Script:

 

Em data/actions/actions.xml:

 

<action actionid="7655" event="script" value="rolldice.lua"/>

(Eu usei o actionid 7655 na lavanca mais pode alterar a gosto.)

 

Com seu Map Editor crie um local parecido com este (não precisa ser idêntico, fique a vontade para alterar):

rolldemo.jpg

 

Em data/actions/scripts crie um arquivo rolldice.lua e nele cole:

 

function onUse(cid, item, frompos, item2, topos)

 

Bet = getPlayerSlotItem(cid, 10)

 

if Bet.itemid == 2157 then

Type = " gold nugget"

elseif Bet.itemid == 9971 then

Type = " gold ingot"

else

doPlayerSendTextMessage(cid, 25, "[Roll] Ponha seus gold nuggets ou ingots no slot Arrow para serem sua aposta.")

return 0

end

 

local dicepos = {x=30, y=744, z=7}

local player = getPlayerPosition(cid)

Roll = math.random(1, 6)

 

if Roll == 1 then

doSendAnimatedText(player, 'Number 1', 180)

doPlayerRemoveItem(cid,Bet.itemid,1)

doSendMagicEffect(dicepos, 26)

doCreateItem(5792, 1, dicepos)

doPlayerSendTextMessage(cid, 25, "[Roll] Voce perdeu.")

elseif Roll == 2 then

doSendAnimatedText(player, 'Number 2', 180)

doPlayerRemoveItem(cid,Bet.itemid,1)

doSendMagicEffect(dicepos, 26)

doCreateItem(5793, 1, dicepos)

doPlayerSendTextMessage(cid, 25, "[Roll] Voce perdeu.")

elseif Roll == 3 then

doSendAnimatedText(player, 'Number 3', 180)

doPlayerRemoveItem(cid,Bet.itemid,1)

doSendMagicEffect(dicepos, 26)

doCreateItem(5794, 1, dicepos)

doPlayerSendTextMessage(cid, 25, "[Roll] Voce perdeu.")

elseif Roll == 4 then

doSendAnimatedText(player, 'Number 4', 180)

doPlayerRemoveItem(cid,Bet.itemid,1)

doSendMagicEffect(dicepos, 26)

doCreateItem(5795, 1, dicepos)

doPlayerSendTextMessage(cid, 25, "[Roll] Voce perdeu.")

elseif Roll == 5 then

doSendAnimatedText(player, 'Number 5', 180)

doPlayerRemoveItem(cid,Bet.itemid,1)

doSendMagicEffect(dicepos, 26)

doCreateItem(5796, 1, dicepos)

doPlayerSendTextMessage(cid, 25, "[Roll] Voce perdeu.")

else

doSendAnimatedText(player, 'Number 6', 30)

doSendMagicEffect(dicepos, 26)

doCreateItem(5797, 1, dicepos)

doPlayerSendTextMessage(cid, 25, "[Roll] Voce ganhou! Premio: 4" .. Type .. "s.")

doSendMagicEffect(player, 27)

doPlayerAddItem(cid, Bet.itemid, 4)

end

end

 

Legenda:

Negrito: Gold Nugget ID

Itálico: Gold Ingot ID.

sublinhado Posição em que o dado será lançado. (Onde está o dado na imagem)

 

 

 

Vamos ao NPC:

 

Em data/npc crie um arquivo Robert.xml e cole:

<?xml version="1.0" encoding="UTF-8"?>

<npc name="Robert" script="data/npc/scripts/robert.lua" walkinterval="5000" floorchange="0" access="5" level="1" maglevel="1">

<health now="150" max="150"/>

<look type="328" head="78" body="0" legs="0" feet="114" corpse="2212"/>

<parameters>

<parameter key="message_greet" value="Bem vindo |PLAYERNAME|. Eu vendo e compro {gold nuggets} e {gold ingots} para voce fazer suas apostas e receber o seu dinheiro. Para saber as regras e informacoes sobre o Cassino use o comando {!cassino}." />

<parameter key="message_needmoremoney" value="Voce nao tem dinheiro."/>

<parameter key="message_decline" value="|TOTALCOST| Humpf!"/>

</parameters>

</npc>

 

Em data/npc/scripts crie o arquivo robert.lua e cole:

 

local keywordHandler = KeywordHandler:new()

local npcHandler = NpcHandler:new(keywordHandler)

NpcSystem.parseParameters(npcHandler)

 

function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end

function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end

function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) end

function onThink() npcHandler:onThink() end

 

function thinkCallback(cid)

local rand = math.random(1,100)

if rand == 1 then

selfSay('Compro e vendo gold nuggets e gold ingots.')

end

return true

end

 

function greetCallback(cid)

 

return true

 

end

 

local shopModule = ShopModule:new()

npcHandler:addModule(shopModule)

 

shopModule:addSellableItem({'gold nugget', 'gold nugget'}, 2157, 10000, 'gold nugget')

shopModule:addSellableItem({'gold ingot', 'gold ingot'}, 9971, 50000, 'gold ingot')

shopModule:addBuyableItem({'gold nugget', 'gold nugget'}, 2157, 11000, 'gold nugget')

shopModule:addBuyableItem({'gold ingot', 'gold ingot'}, 9971, 55000, 'gold ingot')

 

npcHandler:setCallback(CALLBACK_ONTHINK, thinkCallback)

npcHandler:setCallback(CALLBACK_GREET, greetCallback)

npcHandler:addModule(FocusModule:new())

 

Esse será o NPC em que se compram as apostas e as trocam pelo prêmio em dinheiro.

 

Feito isso basta adicionar o NPC ao mapa e pronto!

Divirtam-se.

 

Crédito:

 

Criador: ChesterB

(outro forum)

lucasatakL
08 de setembro de 2009 às 14:37

Muito bom vilden,acabei de testar aqui no meu otsever!

 

Vaaleu!

YstiflerY
09 de setembro de 2009 às 01:32

Muito bom gostei muito disso vou por no meu otserv ;)

rockstar96R
09 de setembro de 2009 às 22:16

Vou dizer o mesmo que eu disse no outro lugar que vi esse script.

 

Modifica o doCreateItem para doTransformItem pois senão vai lotar de dados naquele lugar ._.

3 semanas depois...
VildenV
23 de setembro de 2009 às 23:32

Que bom que gostaram..

 

~iRockStar~

 

Você poderia modificar para mim?? sou preguiçoso..

tipo modifica se quiser.. dos dois jeitos a script vai

funcionar :D, agradeço se ajudar..

 

Flws..

RulezKnightR
24 de setembro de 2009 às 09:52

ta maneiro :), testei aqui e funfo direitinho!

 

:button_ok: Aprovado

1 mês depois...
VildenV
07 de outubro de 2009 às 19:51

Que bom que gostou, essa script é muito maneira

e muito criativa, parabéns ao criador ChesterB

renansdcR
07 de outubro de 2009 às 20:40

Bem legal essa script

 

Valeu Vilden por trazer ao fórum e parabéns para quem fez ela. :smile_positivo:

MesengaM
07 de outubro de 2009 às 20:41

gostei, simples, prático e ajuda a inovar um OT!

CrazydevilC
08 de outubro de 2009 às 13:39

Taah otimoo caraa!!

taaah no meeu ot jaah!!

Editado Outubro 8 por Crazydevil

1 ano depois...
HosterDaianH
01 de fevereiro de 2011 às 19:33

Ola, tenho um server de pokemon 8.54 [tfs], que "tentei" colocar o Roll System, fiz tudo certin e tals

mais eh preciso colocar o gold nugget na Slot da arrow certo? bom, no server de pokemon n existe slot algum, alem da backpack, sera que n haveria como me ajudar? colocarem para retirar os nuggets de dentro da backpack?

 

vlws ;D

2 semanas depois...
otherealityO
10 de fevereiro de 2011 às 05:48

Testado e funcionando perfeitamente, muito legal ;)

só que alterei os valores das coisas um pouco.