A ideia do scripts e do Leoxtibia mais foi eu que realizei a ideia criando o scripts.
O player vai ate o npc e por um money e teleportado ate uma hunt la ele pode batalhar até que o tempo dele acabe voltando para outra posiçao sendo que apenas uma pessoa pode ficar na hunt ou seja se outro player for no npc e pedir para ir a hunt sendo que outro player estiver lá ele não se teleporta.
Primeiramente o script e totalmente configuravel e obrigatorio a configuraçao de posiçao para onde ele sera levado e onde ele sera levado quando o tempo acabar.
Crie um arquivo xml em npc chamado npchunt
<npc name="Hunt" script="data/npc/scripts/npchunt.lua" walkinterval="2000" floorchange="0"> <health now="100" max="100"/> <look type="134" head="78" body="88" legs="0" feet="88" addons="3"/> <parameters> <parameter key="message_greet" value="Ola. Para ir na hunt paga diga {hunt}." /> <parameter key="message_farewell" value="Ate mais." /> <parameter key="message_walkaway" value="Ate mais." /> </parameters> </npc>
Crie um arquivo lua em npc/scripts chamado npchunt.lua e adicione isto
local keywordHandler = KeywordHandler:new()
local npcHandler = NpcHandler:new(keywordHandler)
NpcSystem.parseParameters(npcHandler)
local talkState = {}
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 creatureSayCallback(cid, type, msg)
local pos = {x=1039, y=1072, z=7} -- Local da hunt
local posreturn = {x=1039, y=1072, z=7} -- Posiçao onde o player sera teleportado quando acabar o tempo
local money = 400000 --- Quanto de dinheiro sera removido
config = {
time = 10 ---Tempo que ele vai ficar na hunt sabendo que cada numeral equivale a um minuto-----
}
function doReturnPos()
doTeleportThing(cid, posreturn)
setGlobalStorageValue(24688, 0)
setGlobalStorageValue(24686, none)
setPlayerStorageValue(cid, 28680, 0)
end
if(not npcHandler:isFocused(cid)) then
return false
end
local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid
if msgcontains(msg, 'hunt') then
if getGlobalStorageValue(24688) == 1 then
doPlayerSendTextMessage(cid,22,"O player "..getGlobalStorageValue(24686).." esta na hunt")
return true
end
if not doPlayerRemoveMoney(cid, money) then
doPlayerSendTextMessage(cid,22,""..getPlayerName(cid).." precisa de "..money.." para usar a hunt paga")
return true
end
doPlayerRemoveMoney(cid, money)
doPlayerSendTextMessage(cid,22,"Obrigado "..getPlayerName(cid).." foi teleportado.")
doTeleportThing(cid, pos)
setGlobalStorageValue(24688, 1)
setGlobalStorageValue(24686, getPlayerName(cid))
setPlayerStorageValue(cid, 28680, 1)
addEvent(doReturnPos, config.time*60*1000)
else
selfSay('Diga Hunt', cid)
end
return true
end
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())
Agora va em Creaturescripts/scripts e crie um arquivo chamado death.lua
function onDeath(cid, corpse, killer)
function doReturnDeath()
setGlobalStorageValue(24688, 0)
setGlobalStorageValue(24686, none)
setPlayerStorageValue(cid, 28680, 0)
end
if getPlayerStorageValue(cid, 28680) == 1 then
doReturnDeath()
end
return TRUE
end
Agora na mesma pasta Creaturescripts/scripts crie outro arquivo chamado logouthunt.lua
function onLogout(cid)
local pos = {x=1039, y=1072, z=7} -- Para onde quando o player deslogar da hunt sera teleportado
if getPlayerStorageValue(cid, 28680) == 1 then
doSendMagicEffect(getThingPos(cid), 29)
doTeleportThing(cid, pos)
setGlobalStorageValue(24688, 0)
setGlobalStorageValue(24686, none)
setPlayerStorageValue(cid, 28680, 0)
return true
end
return true
end
Agora va em creaturescripts.xml e coloque estas tags
<event type="death" name="huntdeath" event="script" value="death.lua"/> <event type="logout" name="loguthunt" event="script" value="loguthunt.lua"/>
Agora em Creaturescripts/scripts abra login.lua e coloque isto antes do ultimo return
registerCreatureEvent(cid, "huntdeath") registerCreatureEvent(cid, "loguthunt")
E super recomendavel que a hunt não tenha saida para que o sistema fique completo ou seja quando o player entrar naquele local nao podera sair a não ser pelo tempo esgotado ou deslogando