O NPC caminha junto com o player ate a hunt.
Esse sistema é bem SIMPLES, um amigo me pediu, desenvolvi para ele e vim compartilhar com vocês
Crie um arquivo lua em npcs e adicione :
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)
if(not npcHandler:isFocused(cid)) then
return false
end
local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid
local possnpc = { --- poss que o npc vai andar
{x=81 ,y=339, z=7}, {x=82 ,y=339, z=7}, {x=83 ,y=339, z=7}, {x=84 ,y=339, z=7}, {x=85 ,y=339, z=7}, {x=86 ,y=339, z=7}, {x=79, y=340, z=7}
}
local possplayer = { -- poss que o player vai andar
{x=81 ,y=339, z=7}, {x=82 ,y=339, z=7}, {x=83 ,y=339, z=7}, {x=84 ,y=339, z=7}, {x=85 ,y=339, z=7}, {x=86 ,y=339, z=7}
}
local pid = getNpcId() -- não mexa
local config = { -- não mexa
str = 150729,
tempo = 30,
}
function andarnpc()
for i, pos in ipairs(possnpc) do
addEvent(doTeleportThing, 1000+400*(i-1), pid, pos)
end
end
function andarplayer(cid)
for i, posdois in ipairs(possplayer) do
if isCreature(cid) then
addEvent(doTeleportThing, 1000+500*(i-1), cid, posdois)
end
end
end
for _, player in pairs(getPlayersOnline()) do
if msgcontains(msg, "hunt") and getPlayerStorageValue(player, config.str) >= os.time() then
selfSay("Não posso atender você agora!", cid)
break
end
if msgcontains(msg, "hunt") and getPlayerStorageValue(player, config.str) < os.time() then
setPlayerStorageValue(cid, config.str, os.time() + config.tempo)
selfSay("Vou te levar ate a caverna misteriosa !", cid)
andarnpc()
andarplayer(cid)
break
end
end
end
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())
Configuração :
Aqui é aonde o npc vai andar, são as mesma poss que o player vai andar, porem você tem que por uma ultima poss para o npc, nessa ultima poss você coloca a posição aonde o npc estava antes do jogador falar com ele !
local possnpc = { --- poss que o npc vai andar
{x=81 ,y=339, z=7}, {x=82 ,y=339, z=7}, {x=83 ,y=339, z=7}, {x=84 ,y=339, z=7}, {x=85 ,y=339, z=7}, {x=86 ,y=339, z=7}, {x=79, y=340, z=7}
}
Essa é a poss do inicio, aonde o npc vai aparecer quando ele levar o jogador, não esqueca de colocar a posição correta, se não o npc vai ficar dentro da hunt com o player, e outros players não vão conseguir encontrar o npc.
{x=79, y=340, z=7} -- poss aonde o npc tava antes de levar o player para a hunt
OBS: Existe um tempo para poder falar com o NPC, caso o npc esteja levando algum player para a hunt, outro jogador não pode conversar com ele, ate que ele complete a caminhada, caso queira mudar o tempo edite aqui :
tempo = 30, -- 30 = 30 segundos