É chato entrar num ot e ver a quest:
Mata o dragon e abra o baú.
então resolvi fazer um tutorial para vocês.
lembrando que:
Você não deve fazer uma quest assim exatamente como a minha, com o baú do lado da alavanca e etc..., fiz o mapa em menos de um minuto.
Isso serve como exemplo de actions, e realmente, da para fazer muita coisa com esse exemplo.
Resumindo:
Você puxa uma alavanca, então é atribuido um storage ID à você, quando vc pisa no tile especial, ele checa se vc ja puxou a alavanca, se não, ele move você 1 sqm para o lado oposto.
Vou por um esquema para vocês verem:
Fiz o script da alavanca o mais facil possivel de configurar:
salve como questcomplexa.lua
function onUse(cid, item, frompos, item2, topos)
local summonpos = {x=578, y=432, z=7, stackpos=1} -- posição de onde vai sumonar
local iditem = 1945, 1946 -- ids das alavancas
local itemuid = 12345 -- uid da alavanca
local creaturename = "Demon" -- monstro a ser sumonado
local storageid = 12345
local storagestatus = getPlayerStorageValue(cid, storageid)
if item.itemid == iditem and item.uid == itemuid and storagestatus == -1 then
doSummonCreature(creaturename, summonpos)
setPlayerStorageValue(cid,storageid,1)
doPlayerSendTextMessage(cid,22,"You summoned a monster!")
else
doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR,"You already summoned the monster, go to the reward room.")
end
return 1
end
Única coisa que vc deve configurar são as primeiras linhas, onde tem 'local = blablabla'
No actions.xml
<action uniqueid="12345" script="questcomplexa.lua"/>
Agora o tile, que ve se puxou a alavanca, se não ele te empurra para traz.
Salve como quest_tile.lua
local position = getCreaturePosition(cid)
function onStepIn(cid, item, position, fromPosition)
if getPlayerLookDir(cid) == 0 then
newdir = 2
elseif getPlayerLookDir(cid) == 1 then
newdir = 3
elseif getPlayerLookDir(cid) == 2 then
newdir = 0
else
newdir = 1
end
if item.uid == 12344 and getPlayerStorageValue(cid, 12345) == 1 then
doPlayerSendTextMessage(cid,22,"You can get your reward!")
else
doMoveCreature(cid, newdir)
doSendMagicEffect(position, 10)
doPlayerSendTextMessage(cid,22,"You must pull the lever!")
end
end
No movements.xml:
<movevent event="StepIn" uniqueid="12344" script="quest_tile.lua"/>
Nele vc só edita a mensagem que manda, e botar o UID no mapa.
Sem fazer a quest vc não pode abrir o baú:
Sumonando o demon:
Você não pode puxar a alavanca novamente:
Espero que tenha ajudado, dúvidas é só postar.
Grato,
Tuco