Ir para conteúdo

Npc Quest Quase Funcionando!


othereality

Posts Recomendados

Então eu fiz um npc que te da uma quest de matar 8 rats,

Depois outra de matar 5 Cave rats e por ultimo matar um trainer.

 

Porem quando eu falo as keywords das quests 1 e 2 o NPC não faz nada, apenas a terceira funciona.

Eu tentei tirar a terceira quest para ver oque acontecia e ai a quest 2 funcionou mas a 1 ainda não.

Então eu coloquei a terceira de novo e a 2 voltou a não funcionar.

 

Conclusão por algum motivo só a ultima quest que eu ponho funciona.

A seguir o script do npc:

 

obs: tem também um script que muda o valor da storage quanto você mata os monstros pedidos.

 

 

 

local keywordHandler = KeywordHandler:new()

local npcHandler = NpcHandler:new(keywordHandler)

NpcSystem.parseParameters(npcHandler)

 

local talkState = {}

local quest = 90001

local reward = 90002

-- 90003 monstros

 

local quest2 = 90004

local reward2 = 90005

-- 90006 monstros

 

local quest3 = 90007

local reward3 = 90008

-- 90009 monstros

 

local quest4 = 90010

local reward4 = 90011

-- 90012 monstros

 

local quest5 = 90013

local reward5 = 90014

-- 90015 monstros

 

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

 

-- SUJA

 

function creatureSayCallback(cid, type, msg)

local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid

if(not npcHandler:isFocused(cid)) then

return false

 

elseif msgcontains(msg, "ok1") and talkState[talkUser] == 1 then

npcHandler:say("Boa sorte! (mate 8x Rat)(60xp)(diga:[{start1}] para aceitar a quest)", cid)

talkState[talkUser] = 2

 

elseif msgcontains(msg, "start1") and talkState[talkUser] == 2 then

npcHandler:say("(quest accepted)", cid)

setPlayerStorageValue(cid, quest, 2)

talkState[talkUser] = 0

 

elseif msgcontains(msg, "mission") then

local str = getPlayerStorageValue(cid, quest)

if(str < 2) then

 

npcHandler:say("Nosso bosque esta muito sujo ajude a eliminar essa sujeira.[{ok1}]", cid)

talkState[talkUser] = 1

return true

elseif(str == 2) then

npcHandler:say("Volte quando tiver acabado.", cid)

elseif(str == 3) then

npcHandler:say("([{sub}])", cid)

doPlayerAddExp(cid, 60)

doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Quest Complete!")

setPlayerStorageValue(cid, quest, 4)

elseif(str == 4) then

npcHandler:say("Voce ja vez isso, obrigado.", cid)

end

talkState[talkUser] = 0

end

return TRUE

end

 

-- SUB

 

function creatureSayCallback(cid, type, msg)

local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid

if(not npcHandler:isFocused(cid)) then

return false

 

elseif msgcontains(msg, "ok2") and talkState[talkUser] == 1 then

npcHandler:say("Boa sorte! (mate 5x Cave Rat)(50xp)(diga:[{start2}] para aceitar a quest)", cid)

talkState[talkUser] = 2

 

elseif msgcontains(msg, "start2") and talkState[talkUser] == 2 then

npcHandler:say("(quest accepted)", cid)

setPlayerStorageValue(cid, quest2, 2)

talkState[talkUser] = 0

 

elseif msgcontains(msg, "sub") then

local str = getPlayerStorageValue(cid, quest2)

if(str < 2) then

 

npcHandler:say("é no subsolo da floresta que eles se procriam.[{ok2}]", cid)

talkState[talkUser] = 1

return true

elseif(str == 2) then

npcHandler:say("Volte quando tiver acabado.", cid)

elseif(str == 3) then

npcHandler:say("([{primeira}])", cid)

doPlayerAddExp(cid, 60)

doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Quest Complete!")

setPlayerStorageValue(cid, quest2, 4)

elseif(str == 4) then

npcHandler:say("Voce ja vez isso, obrigado.", cid)

end

talkState[talkUser] = 0

end

return TRUE

end

 

-- PRIMEIRA

 

function creatureSayCallback(cid, type, msg)

local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid

if(not npcHandler:isFocused(cid)) then

return false

 

elseif msgcontains(msg, "ok3") and talkState[talkUser] == 1 then

npcHandler:say("Boa sorte! (aprenda uma magia e mate um trainer)(50xp)(diga:[{start3}] para aceitar a quest)", cid)

talkState[talkUser] = 2

 

elseif msgcontains(msg, "start3") and talkState[talkUser] == 2 then

npcHandler:say("(quest accepted)", cid)

setPlayerStorageValue(cid, quest2, 2)

talkState[talkUser] = 0

 

elseif msgcontains(msg, "primeira") then

local str = getPlayerStorageValue(cid, quest2)

if(str < 2) then

 

npcHandler:say("Encontre o mestre que procura e treine sua primeira abilidade, depois treine-a matando um trainer[{ok3}]", cid)

talkState[talkUser] = 1

return true

elseif(str == 2) then

npcHandler:say("Volte quando tiver acabado.", cid)

elseif(str == 3) then

npcHandler:say("", cid)

doPlayerAddExp(cid, 60)

doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Quest Complete!")

setPlayerStorageValue(cid, quest2, 4)

elseif(str == 4) then

npcHandler:say("Voce ja vez isso, obrigado.", cid)

end

talkState[talkUser] = 0

end

return TRUE

end

 

npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)

npcHandler:addModule(FocusModule:new())

 

 

AJUDEM-ME OBRIGADO!!!

Editado por OtheReality
Link para o comentário
Compartilhar em outros sites

Todas as task são no mesmo NPC?

se sim, você tem que trocar o valor de "talkState[talkUser]", por exemplo na primeira missao 1, na segunda 2, e na terceira 3.

Tente isso aqui a baixo, se não der me fale que vou olhar direitinho.

 

 

-- SUJA
function creatureSayCallback(cid, type, msg)
local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid
if(not npcHandler:isFocused(cid)) then
return false
elseif msgcontains(msg, "ok1") and talkState[talkUser] == 1 then
npcHandler:say("Boa sorte! (mate 8x Rat)(60xp)(diga:[{start1}] para aceitar a quest)", cid)
talkState[talkUser] = 2
elseif msgcontains(msg, "start1") and talkState[talkUser] == 2 then
npcHandler:say("(quest accepted)", cid)
setPlayerStorageValue(cid, quest, 2)
talkState[talkUser] = 0
elseif msgcontains(msg, "mission") then
local str = getPlayerStorageValue(cid, quest)
if(str < 2) then
npcHandler:say("Nosso bosque esta muito sujo ajude a eliminar essa sujeira.[{ok1}]", cid)
talkState[talkUser] = 1
return true
elseif(str == 2) then
npcHandler:say("Volte quando tiver acabado.", cid)
elseif(str == 3) then
npcHandler:say("([{sub}])", cid)
doPlayerAddExp(cid, 60)
doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Quest Complete!")
setPlayerStorageValue(cid, quest, 4)
elseif(str == 4) then
npcHandler:say("Voce ja vez isso, obrigado.", cid)
end
talkState[talkUser] = 0
end
return TRUE
end
-- SUB
function creatureSayCallback(cid, type, msg)
local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid
if(not npcHandler:isFocused(cid)) then
return false
elseif msgcontains(msg, "ok2") and talkState[talkUser] == 1 then
npcHandler:say("Boa sorte! (mate 5x Cave Rat)(50xp)(diga:[{start2}] para aceitar a quest)", cid)
talkState[talkUser] = 3
elseif msgcontains(msg, "start2") and talkState[talkUser] == 3 then
npcHandler:say("(quest accepted)", cid)
setPlayerStorageValue(cid, quest2, 2)
talkState[talkUser] = 0
elseif msgcontains(msg, "sub") then
local str = getPlayerStorageValue(cid, quest2)
if(str < 2) then
npcHandler:say("é no subsolo da floresta que eles se procriam.[{ok2}]", cid)
talkState[talkUser] = 1
return true
elseif(str == 2) then
npcHandler:say("Volte quando tiver acabado.", cid)
elseif(str == 3) then
npcHandler:say("([{primeira}])", cid)
doPlayerAddExp(cid, 60)
doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Quest Complete!")
setPlayerStorageValue(cid, quest2, 4)
elseif(str == 4) then
npcHandler:say("Voce ja vez isso, obrigado.", cid)
end
talkState[talkUser] = 0
end
return TRUE
end
-- PRIMEIRA
function creatureSayCallback(cid, type, msg)
local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid
if(not npcHandler:isFocused(cid)) then
return false
elseif msgcontains(msg, "ok3") and talkState[talkUser] == 1 then
npcHandler:say("Boa sorte! (aprenda uma magia e mate um trainer)(50xp)(diga:[{start3}] para aceitar a quest)", cid)
talkState[talkUser] = 4
elseif msgcontains(msg, "start3") and talkState[talkUser] == 4 then
npcHandler:say("(quest accepted)", cid)
setPlayerStorageValue(cid, quest2, 2)
talkState[talkUser] = 0
elseif msgcontains(msg, "primeira") then
local str = getPlayerStorageValue(cid, quest2)
if(str < 2) then
npcHandler:say("Encontre o mestre que procura e treine sua primeira abilidade, depois treine-a matando um trainer[{ok3}]", cid)
talkState[talkUser] = 1
return true
elseif(str == 2) then
npcHandler:say("Volte quando tiver acabado.", cid)
elseif(str == 3) then
npcHandler:say("", cid)
doPlayerAddExp(cid, 60)
doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Quest Complete!")
setPlayerStorageValue(cid, quest2, 4)
elseif(str == 4) then
npcHandler:say("Voce ja vez isso, obrigado.", cid)
end
talkState[talkUser] = 0
end
return TRUE
end
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())

Link para o comentário
Compartilhar em outros sites

Cara talkuser não tem nada a ver com isso...

Eu tentei tirar o talkuser e falar direto "ok1" "ok2" que são keywords das missões 1 e 2.

mas não deu em nada só a quest que eu ponho por ultimo funciona.

 

da uma olhada ai se você consegue me ajudar =S

Brigadão!

 

obs: eu tentei oque você mandou mas não deu em nada.

Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...