soh lembrando q esse metodo soh vai funcionar se o npc q vai da o 'give up' for o npc q pediu a task! ou seja, n tente usar isso no npc master dos clans..
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 task = {
["Paul"] = {{"Rattata", 90}, {"Zubat", 45}},
}
local stoFinal = 9659448
local tFinal = getPlayerStorageValue(cid, stoFinal) ~= -1 and string.explode(getPlayerStorageValue(cid, stoFinal), ",") or {}
local msg = msg:lower()
if msgcontains(msg, 'tarefa') or msgcontains(msg, 'Tarefa') and (not talkState[talkUser] or talkState[talkUser] == 0) then
if getPlayerStorageValue(cid, stoFinal) ~= -1 and isInArray(tFinal, getNpcName()) then
selfSay("Voce ja completou a minha missao!", cid)
talkState[talkUser] = 0
return true
elseif isMyTaskComplete(cid, getNpcCid()) then
selfSay("Uau, voce ja completou a minha tarefa! Ok, entao, tome aqui a sua recompensa! 7,312 de experiencia. Boa sorte em sua jornada!", cid)
doPlayerAddExperience(cid,7312) --premio
local sto = getMyTaskSto(cid, getNpcCid())
setPlayerStorageValue(cid, sto, -1)
local SF = getPlayerStorageValue(cid, stoFinal)
setPlayerStorageValue(cid, stoFinal, SF == -1 and getNpcName().."," or SF.. getNpcName()..",")
talkState[talkUser] = 0
return true
elseif getMyTaskSto(cid, getNpcCid()) ~= -1 then
selfSay("Voce ja esta fazendo a minha tarefa! va terminar!", cid)
talkState[talkUser] = 0
return true
else
selfSay("Entao, e uma tarefa simples, eu preciso que voce mate {90 Rattatas e 45 Zubats}, voce acha que seria capaz?", cid)
talkState[talkUser] = 2
end
elseif msgcontains(msg, 'yes') and talkState[talkUser] == 2 then
if getMyTaskSto(cid, getNpcCid()) ~= -1 then
selfSay("Voce ja esta fazendo a minha tarefa! va terminar!", cid)
talkState[talkUser] = 0
return true
end
local sto = getFreeTaskStorage(cid)
if sto == -1 then
selfSay("Voce nao pode pegar mais tarefas! Voce ja esta com o maximo de "..(maxTasks).." tarefas!", cid)
talkState[talkUser] = 0
return true
end
selfSay("OK, entao ... Va matar seus alvos!", cid)
setStorageArray(cid, sto, task)
setPlayerStorageValue(cid, Agatha.stoIni, 75)
talkState[talkUser] = 0
elseif msgcontains(msg, 'give up') or msgcontains(msg, 'desistir') and (not talkState[talkUser] or talkState[talkUser] == 0) then
selfSay("Você tem certeza que quer desistir da minha tarefa?", cid)
talkState[talkUser] = 3
elseif msgcontains(msg, 'yes') and talkState[talkUser] == 3 then
selfSay("Ok, boa sorte em sua jornada!", cid)
local sto = getMyTaskSto(cid, getNpcCid())
setPlayerStorageValue(cid, sto, -1)
talkState[talkUser] = 0
return true
end
return true
end
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())






info
Grupo: Artesão
Registrado: 27/04/11
Posts: 112
Reputação: +2
Gostaria de que na hora que o player quisesse, ele pudesse cancelar a task...
segue o NPC
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 task = {
["Paul"] = {{"Rattata", 90}, {"Zubat", 45}},
}
local stoFinal = 9659448
local tFinal = getPlayerStorageValue(cid, stoFinal) ~= -1 and string.explode(getPlayerStorageValue(cid, stoFinal), ",") or {}
local msg = msg:lower()
if msgcontains(msg, 'tarefa') or msgcontains(msg, 'Tarefa') and (not talkState[talkUser] or talkState[talkUser] == 0) then
if getPlayerStorageValue(cid, stoFinal) ~= -1 and isInArray(tFinal, getNpcName()) then
selfSay("Voce ja completou a minha missao!", cid)
talkState[talkUser] = 0
return true
elseif isMyTaskComplete(cid, getNpcCid()) then
selfSay("Uau, voce ja completou a minha tarefa! Ok, entao, tome aqui a sua recompensa! 7,312 de experiencia. Boa sorte em sua jornada!", cid)
doPlayerAddExperience(cid,7312) --premio
local sto = getMyTaskSto(cid, getNpcCid())
setPlayerStorageValue(cid, sto, -1)
local SF = getPlayerStorageValue(cid, stoFinal)
setPlayerStorageValue(cid, stoFinal, SF == -1 and getNpcName().."," or SF.. getNpcName()..",")
talkState[talkUser] = 0
return true
elseif getMyTaskSto(cid, getNpcCid()) ~= -1 then
selfSay("Voce ja esta fazendo a minha tarefa! va terminar!", cid)
talkState[talkUser] = 0
return true
else
selfSay("Entao, e uma tarefa simples, eu preciso que voce mate {90 Rattatas e 45 Zubats}, voce acha que seria capaz?", cid)
talkState[talkUser] = 2
end
elseif msgcontains(msg, 'yes') and talkState[talkUser] == 2 then
if getMyTaskSto(cid, getNpcCid()) ~= -1 then
selfSay("Voce ja esta fazendo a minha tarefa! va terminar!", cid)
talkState[talkUser] = 0
return true
end
local sto = getFreeTaskStorage(cid)
if sto == -1 then
selfSay("Voce nao pode pegar mais tarefas! Voce ja esta com o maximo de "..(maxTasks).." tarefas!", cid)
talkState[talkUser] = 0
return true
end
selfSay("OK, entao ... Va matar seus alvos!", cid)
setStorageArray(cid, sto, task)
setPlayerStorageValue(cid, Agatha.stoIni, 75)
talkState[talkUser] = 0
return true
end
return true
end
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())