Ir para conteúdo

[Encerrado] [Pokemon] Cancelar a Task


didogunner

Posts Recomendados

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())

 

Link para o comentário
Compartilhar em outros sites

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())

 

Link para o comentário
Compartilhar em outros sites

slicer, ta "bugado" o npc ;(

1° - eu pego a task ele já entrega "Uau, voce ja completou a minha tarefa! Ok, entao, tome aqui a sua recompensa! 7,312 de experiencia. Boa sorte em sua jornada!"

 

2° você pode desistir mesmo depois de terminar o.O" sem logica ( irrelevante ) mas só para ficar bonitinho ;o

Link para o comentário
Compartilhar em outros sites

tenta assim..

 

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
  if getMyTaskSto(cid, getNpcCid()) == -1 then
  return true
  end
  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())

 

 

sobre ele ja entregar direto, tenta testar com outro char... talvez tivese 2 storages do ms npc, por algum motivo...

Link para o comentário
Compartilhar em outros sites

  • 5 years later...
A questão neste tópico de suporte foi encerrada por falta de respostas. Este tópico está fechado e foi movido para Suporte - Tópicos Sem Resposta.

+ Caso a dúvida não tenha sido resolvida você poderá criar outro tópico solicitando ajuda.
* Lembre-se que é permitido dar UP no tópico a cada 24 horas para assim o destacar e manter movimentado.
Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.
  • Quem Está Navegando   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.
×
×
  • Criar Novo...