OT

Oque A De Errado No Meu Npc?

Por othereality, 16 de jul. de 2011 em Scripts

script
5
907
otherealityO
16 de julho de 2011 às 16:26

Eu fiz um npc de quest que quando o player leva para ele 5 peixes e diz: "peixes"

ele da xp, gp e uma storage.

 

se eu chego com 5 peixes e digo "peixes" funciona.

porem se eu chego sem os peixes e digo "peixes", ele responde "vamos la me traga os peixes", depois eu pego eles e volto. Quando eu falo "peixes" ele simplemente não faz nada.

 

O Script está aqui:

 

 

 

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

npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)

npcHandler:addModule(FocusModule:new())

if msgcontains(msg, 'peixes') or msgcontains(msg, 'aquiesta') then if

getPlayerStorageValue(cid, 25501) == -1 and

doPlayerRemoveItem(cid, 2667, 5) then

doPlayerAddExp(cid, 800)

doPlayerAddItem(cid, 2148, 25)

setPlayerStorageValue(cid, 25501, 1)

npcHandler:say('Obrigado pela ajuda, sempre que quizer podemos pescar e bater um {papo}.', cid)

else

if getPlayerStorageValue(cid, 25501) == 1 then

npcHandler:say('pode vender peixes na minha loja.', cid)

else

npcHandler:say('Vamos la me traga os peixes...', cid)

end

return true

end

end

end

npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)

npcHandler:addModule(FocusModule:new())

 

 

Se alguem souber aonde eu errei... =/

Obrigado a todos que responderem.

 

 

---

Edit:

Na verdade acabei de perceber que quando alguem fala com o npc sem ter o peixes,

nem ele nem ninguem mais consegue completar a quest. ele não faz mais nada quando a pessoas diz "Peixes". Parece que ele só executa alguma ação uma vez. depois para.

Editado Julho 16 por OtheReality

IlidianI
16 de julho de 2011 às 16:47

Fazer o seguinte, me fala exatamente oque você quer que o npc faça que eu monto ele do zero pra você.

Fica muito mais facil assim...

16 de julho de 2011 às 17:35

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

if msgcontains(msg, 'peixes') or msgcontains(msg, 'aquiesta') then
if getPlayerItemCount(cid, 2667) >= 5 then
if getPlayerStorageValue(cid, 25501) == -1 then
doPlayerAddExp(cid, 800)
doPlayerAddItem(cid, 2148, 25)
setPlayerStorageValue(cid, 25501, 1)
doPlayerRemoveItem(cid, 2667, 5)
selfSay('Obrigado pela ajuda, sempre que quizer podemos pescar e bater um papo.', cid)
else
selfSay('Você já fez esta quest.', cid)
end
else
selfSay('Vamos la me traga os peixes...', cid)
end
end


return true
end

npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())

 

Não sei mesmo se funciona, não testei nem revisei.

Editado Julho 17 por Demonbholder

otherealityO
16 de julho de 2011 às 18:56

Vlw Demonb. Funcionou direitinho... Só não entendi porque o meu n tava dando certo =(

Ah..

se alguem for usar o script só tem que adicionar:

 

 

doPlayerRemoveItem(cid, 2667, 5)

 

pro npc pegar os peixes. ;D

 

rep+

17 de julho de 2011 às 04:56

Ah é mesmo, esqueci de colocar pra retirar os peixes.

 

Tópico movido. Até.