Postado Outubro 24, 2020 4 anos .Qual servidor ou website você utiliza como base? TFS 0.4 8.6 Qual o motivo deste tópico? Olá boa noite, tenho um script de NPC de Task funciona porem esta com alguns erro, e precisa fazer algumas modificações. Está surgindo algum erro? Se sim coloque-o aqui. Citar n ta contando a task e tem outra coisa quando vai fazer a task so ta dando pra pegar 1 task por semana era pra poder pegar todas elas exemplo se eu quiser pegar todas as task dragon,dragon,lord etc eu poderia porem dps de terminha exemplo a de dragon so dps de 1 semana que eu posso fazer a de dragons denovo más se eu não tive feito a de dragon guardian eu posso fazer ou seja cada task teria o seu devido prazo pra fazer separadamente. edit pra pode pegar todas as task se quiser acho que voce vai ter que colocar pra cada task ter uma storage propria exemplo o dragon ter a sua storage e a do dragon lord outra e pah dai não haveria problema se o player quise-se fazer varias task Você tem o código disponível? Se tiver publique-o aqui: 1* creaturescripts/scripts/DragonsTask.lua Ocultar conteúdo local function isSummon(cid) if getCreatureMaster(cid) ~= cid then return true end return false end function onDeath(cid, corpse, deathList) local stoTime = 96588 local stoKill = 96589 local stoName = 96590 local task = { ["dragon"] = {kill = "Dragon", qnt = 1500, exp = 1000000}, ["dragon lord"] = {kill = "Dragon Lord", qnt = 1000, exp = 800000}, ["hydra"] = {kill = "Hydra", qnt = 800, exp = 700000}, ["frost dragon"] = {kill = "Frost Dragon", qnt = 600, exp = 500000}, ["dragon guardian"] = {kill = "Dragon Guardian", qnt = 500, exp = 400000}, ["thunder dragon"] = {kill = "Thunder Dragon", qnt = 400, exp = 300000}, ["demodras"] = {kill = "Demodras", qnt = 300, exp = 200000}, } for a = 1, #deathList do local pk = deathList[a] local myTask = task[string.lower(getPlayerStorageValue(pk, stoName))] local left = math.ceil((getPlayerStorageValue(pk, stoTime) - os.time())/(24 * 60 * 60)) if myTask and getCreatureName(cid) == getPlayerStorageValue(pk, stoName) and not isSummon(cid) then if left > 0 and getPlayerStorageValue(pk, stoKill) > 0 then setPlayerStorageValue(pk, stoKill, getPlayerStorageValue(pk, stoKill) - 1) local sto = getPlayerStorageValue(pk, stoKill) local jaMatou = math.abs(getPlayerStorageValue(pk, stoKill)-myTask.qnt) if sto == 0 then doPlayerSendTextMessage(pk, 20, "["..myTask.kill.." Task Finalizada] ("..myTask.qnt.."/"..myTask.qnt..")") else doPlayerSendTextMessage(pk, 20, "["..myTask.kill.." Task] ("..jaMatou.."/"..myTask.qnt..")") end end end end return true end creaturescripts/scripts/login.lua registerCreatureEvent(cid, "DragonsTask") creaturescripts/creaturescripts.xml <event type="death" name="DragonsTask" event="script" value="DragonsTask.lua"/> monster/ em todos os dragoes da quest... <script> <event name="DragonsTask"/> </script> npc/scripts/NpcDragonsTask.lua Ocultar conteúdo 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 stoTime = 96588 local stoKill = 96589 local stoName = 96590 ---- local msg = string.lower(msg) local left = math.ceil((getPlayerStorageValue(cid, stoTime) - os.time())/(24 * 60 * 60)) --nao mexe! local task = { ["dragon"] = {kill = "Dragon", qnt = 1500, exp = 1000000}, ["dragon lord"] = {kill = "Dragon Lord", qnt = 1000, exp = 800000}, ["hydra"] = {kill = "Hydra", qnt = 800, exp = 700000}, ["frost dragon"] = {kill = "Frost Dragon", qnt = 600, exp = 500000}, ["dragon guardian"] = {kill = "Dragon Guardian", qnt = 500, exp = 400000}, ["thunder dragon"] = {kill = "Thunder Dragon", qnt = 400, exp = 300000}, ["demodras"] = {kill = "Demodras", qnt = 300, exp = 200000}, } local myTask = task[string.lower(getPlayerStorageValue(cid, stoName))] or {} if (msgcontains(msg, 'dragoes') or msgcontains(msg, 'missao')) then if getPlayerStorageValue(cid, stoTime) ~= -1 and left > 0 and getPlayerStorageValue(cid, stoKill) > 0 then local faltaMatar = getPlayerStorageValue(cid, stoKill) local jaMatou = math.abs(getPlayerStorageValue(cid, stoKill)-myTask.qnt) local prazo = os.date("%d/%m/%y %X", getPlayerStorageValue(cid, stoTime)) selfSay("Você ainda não matou os "..myTask.qnt.." "..myTask.kill..", atualmente você matou ".. (jaMatou)..", resta "..faltaMatar..". Seu prazo é de até "..prazo..".", cid) talkState[talkUser] = 0 return true elseif getPlayerStorageValue(cid, stoTime) ~= -1 and left <= 0 and getPlayerStorageValue(cid, stoKill) ~= -1 then selfSay("Infelismente você não matou os "..myTask.qnt.." "..myTask.kill.." a tempo. Se você quiser, você pode tentar fazer denovo a missao.", cid) setPlayerStorageValue(cid, stoTime, -1) setPlayerStorageValue(cid, stoKill, -1) setPlayerStorageValue(cid, stoName, -1) talkState[talkUser] = 0 return true elseif getPlayerStorageValue(cid, stoTime) ~= -1 and left > 0 and getPlayerStorageValue(cid, stoKill) == -1 then local prazo = os.date("%d/%m/%y %X", getPlayerStorageValue(cid, stoTime)) selfSay("Você tem que esperar pelo menos 1 semana para poder pegar essa tarefa denovo. O prazo acaba dia ".. prazo..".", cid) talkState[talkUser] = 0 return true elseif getPlayerStorageValue(cid, stoTime) ~= -1 and left > 0 and getPlayerStorageValue(cid, stoKill) == 0 then selfSay("Obrigado! você matou os "..myTask.qnt.." "..myTask.kill.." em menos de 1 semana. Aqui esta sua recompensa! Lembre-se que você pode fazer esta task quantas vezes quiser,desde que tenha concluído 1 semana contado a partir do dia de inicio.", cid) doPlayerAddExp(cid, myTask.exp) --premio setPlayerStorageValue(cid, stoKill, -1) setPlayerStorageValue(cid, stoName, -1) talkState[talkUser] = 0 return true else if getPlayerStorageValue(cid, stoTime) ~= -1 and getPlayerStorageValue(cid, stoKill) == -1 then setPlayerStorageValue(cid, stoTime, -1) --soh pra evitar problemas... end selfSay("Eu caço vários tipos, como dragon, dragon lord, hydra, frost dragon, dragon guardian, thunder dragon e demodras. Você quer me ajudar a caçar um deles? Qual?", cid) talkState[talkUser] = 1 end elseif task[msg] and talkState[talkUser] == 1 then setPlayerStorageValue(cid, stoName, task[msg].kill) myTask = task[string.lower(getPlayerStorageValue(cid, stoName))] selfSay("Ótimo! Você precisa matar pelo menos "..myTask.qnt.." "..myTask.kill.." em um prazo de 1 semana para te dar recompensa. Aceita?", cid) talkState[talkUser] = 2 elseif (msgcontains(msg, 'no') or msgcontains(msg, 'nao')) and talkState[talkUser] == 2 then selfSay("Ok então, fale comigo denovo quando você quiser me ajudar a matar esses malditos dragões!", cid) talkState[talkUser] = 0 elseif (msgcontains(msg, 'yes') or msgcontains(msg, 'sim')) and talkState[talkUser] == 2 then local semana = 7 * 24 * 60 * 60 setPlayerStorageValue(cid, stoTime, os.time()+semana) setPlayerStorageValue(cid, stoKill, myTask.qnt) setPlayerStorageValue(cid, stoName, myTask.kill) local sto = getPlayerStorageValue(cid, stoTime) selfSay("Você já pode começar a matar os ".. (myTask.kill) ..", mas cuidado! É uma criatura muito forte. Volte aqui quando matar ".. (myTask.qnt) .." ".. (myTask.kill) .." para ser recompensado. O prazo é até ".. os.date("%d/%m/%y %X", sto) ..".", cid) end return true end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) npc/Arthas.xml Ocultar conteúdo <?xml version="1.0" encoding="UTF-8"?> <npc name="Arthas" script="NpcDragonsTask.lua" walkinterval="350000" floorchange="0" speed="0" lookdir="2"> <health now="150" max="150"/> <look type="640" head="91" body="114" legs="86" feet="0"/> <parameters> <parameter key="message_greet" value="Ola |PLAYERNAME|. Meu nome é Arthas, sou caçador de {dragoes}."/> </parameters> </npc> Você tem alguma imagem que possa auxiliar no problema? Se sim, coloque-a aqui. Editado Outubro 29, 2020 4 anos por Vitorelias (veja o histórico de edições)
Postado Novembro 26, 2020 4 anos Eu recomendo você usar o sistema de task do Vodkart, eu testei em tfs 0.4 e foi perfeitamente funcional. O sistema conta com uma janela pop-up para as tasks, você acompanha em tempo real no seu default o andamento da task atual, há um rank de players das tasks falando !task rank e ainda há um prêmio para o player que completar todas as tasks (tudo configurável). Sinceramente, não consigo imaginar um sistema de task melhor que este. Caso queira dar uma olhada, clique aqui.
Postado Novembro 26, 2020 4 anos Autor 2 horas atrás, Rogex Joyz disse: Eu recomendo você usar o sistema de task do Vodkart, eu testei em tfs 0.4 e foi perfeitamente funcional. O sistema conta com uma janela pop-up para as tasks, você acompanha em tempo real no seu default o andamento da task atual, há um rank de players das tasks falando !task rank e ainda há um prêmio para o player que completar todas as tasks (tudo configurável). Sinceramente, não consigo imaginar um sistema de task melhor que este. Caso queira dar uma olhada, clique aqui. Podem fechar o topico, já foi resolvido Vodkart já me ajudo.
Postado Novembro 27, 2020 4 anos 1 hora atrás, Vitorelias disse: Podem fechar o topico, já foi resolvido Vodkart já me ajudo. Se possível, posta a solução e marque ela como melhor resposta para que os outros possam achar e ver caso tenham o mesmo problema.
Participe da conversa
Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.