didogunner 2 Postado Janeiro 28, 2013 Share Postado Janeiro 28, 2013 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 More sharing options...
Slicer 1070 Postado Janeiro 28, 2013 Share Postado Janeiro 28, 2013 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 More sharing options...
didogunner 2 Postado Janeiro 28, 2013 Autor Share Postado Janeiro 28, 2013 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 " sem logica ( irrelevante ) mas só para ficar bonitinho ;o Link para o comentário Compartilhar em outros sites More sharing options...
Slicer 1070 Postado Janeiro 28, 2013 Share Postado Janeiro 28, 2013 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 More sharing options...
didogunner 2 Postado Janeiro 28, 2013 Autor Share Postado Janeiro 28, 2013 pra variar meu rep+ vlw mais uma vez man Link para o comentário Compartilhar em outros sites More sharing options...
Slicer 1070 Postado Janeiro 28, 2013 Share Postado Janeiro 28, 2013 sanado, movido Link para o comentário Compartilhar em outros sites More sharing options...
Stigal 584 Postado Abril 20, 2018 Share Postado Abril 20, 2018 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 More sharing options...
Posts Recomendados