E aew Povo do xtibia 
Galera vo explicar para que o npc iria servir antes de tudo. 
seria o seguinte... um player noob sem a quest (vamos supor) numero 1 feita. 
ai o noob chega no npc1 e diz: hi 
Npc1: sai fora meu irmao 
  
daí o tempo vai passando e o noob se evoluindo e talz... daí ele vai la e faz a quest 1... ai quando ele clicka no bau manda ele fazer: Fale Com o Npc1 
ai o noob chega la com a quest numero 1 feita e fla 
noob: HI! 
npc: quer que eu te leve para o final da quest? 
noob:Yes! 
  
daí o npc leva ele... 
eu fiz o script e talz mas o npc nao ta respondendo nada e nao aparece nenhum erro no exe do ot... entaum resolvi postar aki no xtibia 
Script do npc: 
 
finaldaquest = {x=854, y=1602, z=7}
local focus = 0
local talk_start = 0
local target = 0
local following = false
local attacking = false
function onThingMove(creature, thing, oldpos, oldstackpos, cid, item, frompos, item2, topos)
end
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
function onCreatureAppear(creature)
end
function onCreatureDisappear(cid, pos)
 	if focus == cid then
         selfSay('Flw.')
         focus = 0
         talk_start = 0
 	end
end
function onCreatureTurn(creature)
end
local storage = 11578 -- storage da sua quest 
function msgcontains(txt, str)
 	return (string.find(txt, str) and not string.find(txt, '(%w+)' .. str) and not string.find(txt, str .. '(%w+)'))
end
function onCreatureSay(cid, type, msg)
 	msg = string.lower(msg)
if (msgcontains(msg, 'hi') and (focus == 0)) and getDistanceToCreature(cid) < 4 then
       if getPlayerStorageValue(cid, storage) <= 0 then
selfSay('Sai daqui meu irmao!.', cid)
talkState[talkUser] = 1
else
 		selfSay('fla aew noob, quer finalmente terminar a quest?.')
talkState[talkUser] = 2
 		focus = cid
 		talk_start = os.clock()
end
 	elseif msgcontains(msg, 'hi') and (focus ~= cid) and getDistanceToCreature(cid) < 4 then
 		selfSay('Sorry, ' .. getCreatureName(cid) .. '! Pera noob to flando com ele')
 	elseif focus == cid then
	talk_start = os.clock()
		if msgcontains(msg, 'yes') then
                       talkState[talkUser] = (2)
				doTeleportThing(cid,finaldaquest)
   					doSendMagicEffect(finaldaquest,10)
				selfSay("Bora!")
				focus = 0
				talk_start = 0
			end
       elseif msgcontains(msg, 'bye') and getDistanceToCreature(cid) < 4 then
           selfSay('Vlw brother... te vejo na proxima')
           focus = 0
           talk_start = 0
   end
end
function onCreatureChangeOutfit(creature)
end
function onThink()
   doNpcSetCreatureFocus(focus)
   if (os.clock() - talk_start) > 30 then
       if focus > 0 then
           selfSay('Ta afk? Proximo noob!.')
       end
       focus = 0
       talk_start = 0
   end
   if focus ~= 0 then
       if getDistanceToCreature(focus) > 5 then
           selfSay('MAL EDUCADO VOLTA AKI E DIZ BYE')
           focus = 0
           talk_start = 0
       end
   end
endend
 
Npc xml: 
  
 
<?xml version="1.0" encoding="UTF-8"?>
<npc name="Jobson" script="data/npc/scripts/npc jobson.lua" walkinterval="2000" floorchange="0">
<health now="100" max="100"/>
<look type="128" head="113" body="113" legs="113" feet="88" addons="3"/>
</npc>