Luga03 333 Postado Maio 15, 2016 Share Postado Maio 15, 2016 (editado) Olá! Eu estava ajudando um cara com um task system , ele disse que pegou na net, mas as alterações que ele queria eu tive que refazer algumas partes do sistemas! Testei e funcionou perfeitamente! Funciona com Poketibia e Tibia! Vamos deixar de enrolação e adicionar o sistema! Lembrando também que funciona com tfs 0.3.6 e tfs 0.4! Não testei com tfs 1.x mas acho que não funciona. Vá em creaturescripts.xml e adicione isso: <event type="kill" name="KillTask" event="script" value="task.lua"/> No login.lua adiciona isso com os demais: registerCreatureEvent(cid, "KillTask") Agora crie um arquivo chamado task.lua e adicione isso: local tasksss = { [1] = {name = "Blastoise", sto = 10212, count = 3, time_sto = 5457, time = 1*24*60*60, sto_count = 14129, money = 100, rewardid = 7621, rewardcount = 100, rewardexp = 10000, text = "Congratulations! You finished this task. In 24h, you will be able to do it again."}, [2] = {name = "Charizard", sto = 10213, count = 5, time_sto = 5458, time = 1*24*60*60, sto_count = 14130, money = 100, rewardid = 7621, rewardcount = 100, rewardexp = 10000, text = "Congratulations! You finished this task. In 24h, you will be able to do it again."},}function onKill(cid, target) for _, t in ipairs(tasksss) do local total_count = t.count local m_sto = t.sto local count_sto = t.sto_count if getPlayerStorageValue(cid, m_sto) ~= -1 then if getCreatureName(target) == t.name then if (total_count - getPlayerStorageValue(cid, count_sto)) == 1 then setPlayerStorageValue(cid, count_sto, getPlayerStorageValue(cid, count_sto) + 1) doPlayerSendTextMessage(cid, 20, "You are killed ".. getPlayerStorageValue(cid, count_sto) .." " .. t.name .. " and finished the task!") return true elseif (total_count - getPlayerStorageValue(cid, count_sto)) >= 1 then setPlayerStorageValue(cid, count_sto, getPlayerStorageValue(cid, count_sto) + 1) doPlayerSendTextMessage(cid, 20, "You are killed ".. getPlayerStorageValue(cid, count_sto) .." of ".. total_count .." " .. t.name .. " kills to finish the task.") return true end end end end return trueend Agora vá em npc/scripts e crie um arquivo chamado task.lua e adicione isso: local tasksss = { [1] = {name = "Blastoise", sto = 10212, count = 3, time_sto = 5457, time = 1*24*60*60, sto_count = 14129, money = 100, rewardid = 7621, rewardcount = 100, rewardexp = 10000, text = "Congratulations! You finished this task. In 24h, you will be able to do it again."}, [2] = {name = "Charizard", sto = 10213, count = 5, time_sto = 5458, time = 1*24*60*60, sto_count = 14130, money = 100, rewardid = 7621, rewardcount = 100, rewardexp = 10000, text = "Congratulations! You finished this task. In 24h, you will be able to do it again."},}local keywordHandler = KeywordHandler:new()local npcHandler = NpcHandler:new(keywordHandler)NpcSystem.parseParameters(npcHandler)local talkState = {}function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) endfunction onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) endfunction onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) endfunction onThink() npcHandler:onThink() endfunction creatureSayCallback(cid, type, msg) if(not npcHandler:isFocused(cid)) then return false end local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid value = -1 for i = 1, #tasksss do if msgcontains(msg, tasksss[i].name) and not value ~= -1 then value = i end end if value == -1 then selfSay('I don\'t have a this task!', cid) talkState[talkUser] = 0 return true end local configss = tasksss[value] local name = configss.name local m_sto = configss.sto local time_sto = configss.time_sto local count_sto = configss.sto_count local total_count = configss.count local rest = total_count - getPlayerStorageValue(cid, count_sto) if getPlayerStorageValue(cid, time_sto) < os.time() then -- verifica se o player ainda está no prazo if getPlayerStorageValue(cid, m_sto) <= 0 then -- verifica se o player não pegou está task selfSay('Ready! Now you need kill a '.. total_count .. ' '.. name .. '!', cid) setPlayerStorageValue(cid, m_sto, 1) setPlayerStorageValue(cid, total_count, 0) talkState[talkUser] = 0 else if rest <= 0 then -- Verifica se o player matou todos os monstros nescessários doPlayerAddItem(cid, configss.rewardid, configss.rewardcount) setPlayerStorageValue(cid, count_sto, 0) setPlayerStorageValue(cid, m_sto, -1) setPlayerStorageValue(cid, time_sto, os.time() + configss.time) doPlayerAddExperience(cid, configss.rewardexp) doSendAnimatedText(getCreaturePosition(cid), configss.rewardexp, 215) selfSay(configss.text, cid) talkState[talkUser] = 0 else selfSay('You need to kill '..rest..' '..name..' to gain a reward.', cid) talkState[talkUser] = 0 end end else selfSay('You already did this task, player. Wait '..math.ceil((getPlayerStorageValue(cid, time_sto) - os.time())/(60*60))..' hours to do it again.', cid) talkState[talkUser] = 0 endendnpcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)npcHandler:addModule(FocusModule:new()) Pronto, agora volte para a pasta npc e crie um novo arquivo .xml chamado de Task e adicione isso lá: <?xml version="1.0" encoding="UTF-8"?><npc name="Npc Nome" script="task.lua" walkinterval="350000" floorchange="0" speed="0"> <health now="150" max="150"/> <look type="369" head="91" body="102" legs="83" feet="0"/> <parameters> <parameter key="message_greet" value="You want gain a task of {Blastoise}?"/> </parameters></npc> Pronto, agora o sistema de task está funcionando, e para adicionar um novo monstro pra fazer a task? Basta editar a tabela, mas não esqueça que tem que atualizar a tabela nos 2 scripts .lua !! local tasksss = { [1] = {name = "Blastoise", sto = 10212, count = 3, time_sto = 5457, time = 1*24*60*60, sto_count = 14129, money = 100, rewardid = 7621, rewardcount = 100, rewardexp = 10000, text = "Congratulations! You finished this task. In 24h, you will be able to do it again."}, [2] = {name = "Charizard", sto = 10213, count = 5, time_sto = 5458, time = 1*24*60*60, sto_count = 14130, money = 100, rewardid = 7621, rewardcount = 100, rewardexp = 10000, text = "Congratulations! You finished this task. In 24h, you will be able to do it again."},} Para configurar siga as seguintes instruções: Spoiler Name = Nome da criatura da task sto = Coloque um valor a mais do valor anterior configurado count = quantidade de monstros a ser morto time_sto = Coloque um valor a mais do anterior time = tempo que poderá fazer a task novamente sto_count = Um valor a mais do valor anterior money = Quantidade de dinheiro que o player irá receber, caso coloque 0, não ira receber nada rewardid = itemid do item que player irá ganhar rewardcount = quantidade do item adicionado anteriormente rewardexp = quantidade de exp que player irá ganhar text = Texto que irá aparecer quando player terminar a task Modificações da versão 2.0: Corrigido bug de apenas o primeiro monstro configurado funcionava, agora todos configurados funcionam! Quando player fala qual quer coisa que não seja o nome do monstro, diz que não tem aquela task! Modificado modo de contagem de kill, agora monstra quantos você matou e o total que precisa matar, quando mata o ultimo monstro, aparece a mensagem que terminou a task! Créditos: Criador @miguel223 Drazyn1291 -- Editei e reformulei muita coisa! Adicionei coisas como a contagem que falta ao matar os monstros, editei pra fazer a task apenas se o player falar com o NPC e outras coisas! Editado Maio 18, 2016 por Drazyn1291 crazdraco reagiu a isso 1 Link para o comentário https://xtibia.com/forum/topic/240771-task-system-2016/ Compartilhar em outros sites More sharing options...
Luga03 333 Postado Maio 16, 2016 Autor Share Postado Maio 16, 2016 Tópico atualizado! Scripts refeitos na versão 2.0 com tudo funcionando! Link para o comentário https://xtibia.com/forum/topic/240771-task-system-2016/#findComment-1693419 Compartilhar em outros sites More sharing options...
Drakopoulos 219 Postado Maio 16, 2016 Share Postado Maio 16, 2016 Mt bom Link para o comentário https://xtibia.com/forum/topic/240771-task-system-2016/#findComment-1693421 Compartilhar em outros sites More sharing options...
Josegvb 87 Postado Maio 16, 2016 Share Postado Maio 16, 2016 20 horas atrás, Drazyn1291 disse: Olá! Eu estava ajudando um cara com um task system , ele disse que pegou na net, mas as alterações que ele queria eu tive que refazer algumas partes do sistemas! Testei e funcionou perfeitamente! Funciona com Poketibia e Tibia! Vamos deixar de enrolação e adicionar o sistema! Lembrando também que funciona com tfs 0.3.6 e tfs 0.4! Não testei com tfs 1.x mas acho que não funciona. Vá em creaturescripts.xml e adicione isso: <event type="kill" name="KillTask" event="script" value="task.lua"/> No login.lua adiciona isso com os demais: registerCreatureEvent(cid, "KillTask") Agora crie um arquivo chamado task.lua e adicione isso: local tasksss = { [1] = {name = "Blastoise", sto = 10212, count = 3, time_sto = 5457, time = 1*24*60*60, sto_count = 14129, money = 100, rewardid = 7621, rewardcount = 100, rewardexp = 10000, text = "Congratulations! You finished this task. In 24h, you will be able to do it again."}, [2] = {name = "Charizard", sto = 10213, count = 5, time_sto = 5458, time = 1*24*60*60, sto_count = 14130, money = 100, rewardid = 7621, rewardcount = 100, rewardexp = 10000, text = "Congratulations! You finished this task. In 24h, you will be able to do it again."},}function onKill(cid, target) for _, t in ipairs(tasksss) do local total_count = t.count local m_sto = t.sto local count_sto = t.sto_count if getPlayerStorageValue(cid, m_sto) ~= -1 then if getCreatureName(target) == t.name then if (total_count - getPlayerStorageValue(cid, count_sto)) == 1 then setPlayerStorageValue(cid, count_sto, getPlayerStorageValue(cid, count_sto) + 1) doPlayerSendTextMessage(cid, 20, "You are killed ".. getPlayerStorageValue(cid, count_sto) .." " .. t.name .. " and finished the task!") return true elseif (total_count - getPlayerStorageValue(cid, count_sto)) >= 1 then setPlayerStorageValue(cid, count_sto, getPlayerStorageValue(cid, count_sto) + 1) doPlayerSendTextMessage(cid, 20, "You are killed ".. getPlayerStorageValue(cid, count_sto) .." of ".. total_count .." " .. t.name .. " kills to finish the task.") return true end end end end return trueend Agora vá em npc/scripts e crie um arquivo chamado task.lua e adicione isso: local tasksss = { [1] = {name = "Blastoise", sto = 10212, count = 3, time_sto = 5457, time = 1*24*60*60, sto_count = 14129, money = 100, rewardid = 7621, rewardcount = 100, rewardexp = 10000, text = "Congratulations! You finished this task. In 24h, you will be able to do it again."}, [2] = {name = "Charizard", sto = 10213, count = 5, time_sto = 5458, time = 1*24*60*60, sto_count = 14130, money = 100, rewardid = 7621, rewardcount = 100, rewardexp = 10000, text = "Congratulations! You finished this task. In 24h, you will be able to do it again."},}local keywordHandler = KeywordHandler:new()local npcHandler = NpcHandler:new(keywordHandler)NpcSystem.parseParameters(npcHandler)local talkState = {}function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) endfunction onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) endfunction onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) endfunction onThink() npcHandler:onThink() endfunction creatureSayCallback(cid, type, msg) if(not npcHandler:isFocused(cid)) then return false end local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid value = -1 for i = 1, #tasksss do if msgcontains(msg, tasksss[i].name) and not value ~= -1 then value = i end end if value == -1 then selfSay('I don\'t have a this task!', cid) talkState[talkUser] = 0 return true end local configss = tasksss[value] local name = configss.name local m_sto = configss.sto local time_sto = configss.time_sto local count_sto = configss.sto_count local total_count = configss.count local rest = total_count - getPlayerStorageValue(cid, count_sto) if getPlayerStorageValue(cid, time_sto) < os.time() then -- verifica se o player ainda está no prazo if getPlayerStorageValue(cid, m_sto) <= 0 then -- verifica se o player não pegou está task selfSay('Ready! Now you need kill a '.. total_count .. ' '.. name .. '!', cid) setPlayerStorageValue(cid, m_sto, 1) setPlayerStorageValue(cid, total_count, 0) talkState[talkUser] = 0 else if rest <= 0 then -- Verifica se o player matou todos os monstros nescessários doPlayerAddItem(cid, configss.rewardid, configss.rewardcount) setPlayerStorageValue(cid, count_sto, 0) setPlayerStorageValue(cid, m_sto, -1) setPlayerStorageValue(cid, time_sto, os.time() + configss.time) doPlayerAddExperience(cid, configss.rewardexp) doSendAnimatedText(getCreaturePosition(cid), configss.rewardexp, 215) selfSay(configss.text, cid) talkState[talkUser] = 0 else selfSay('You need to kill '..rest..' '..name..' to gain a reward.', cid) talkState[talkUser] = 0 end end else selfSay('You already did this task, player. Wait '..math.ceil((getPlayerStorageValue(cid, time_sto) - os.time())/(60*60))..' hours to do it again.', cid) talkState[talkUser] = 0 endendnpcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)npcHandler:addModule(FocusModule:new()) Pronto, agora volte para a pasta npc e crie um novo arquivo .xml chamado de Task e adicione isso lá: <?xml version="1.0" encoding="UTF-8"?><npc name="Npc Nome" script="task.lua" walkinterval="350000" floorchange="0" speed="0"> <health now="150" max="150"/> <look type="369" head="91" body="102" legs="83" feet="0"/> <parameters> <parameter key="message_greet" value="You want gain a task of {Blastoise}?"/> </parameters></npc> Pronto, agora o sistema de task está funcionando, e para adicionar um novo monstro pra fazer a task? Basta editar a tabela, mas não esqueça que tem que atualizar a tabela nos 2 scripts .lua !! local tasksss = { [1] = {name = "Blastoise", sto = 10212, count = 3, time_sto = 5457, time = 1*24*60*60, sto_count = 14129, money = 100, rewardid = 7621, rewardcount = 100, rewardexp = 10000, text = "Congratulations! You finished this task. In 24h, you will be able to do it again."}, [2] = {name = "Charizard", sto = 10213, count = 5, time_sto = 5458, time = 1*24*60*60, sto_count = 14130, money = 100, rewardid = 7621, rewardcount = 100, rewardexp = 10000, text = "Congratulations! You finished this task. In 24h, you will be able to do it again."},} Para configurar siga as seguintes instruções: Ocultar conteúdo Name = Nome da criatura da task sto = Coloque um valor a mais do valor anterior configurado count = quantidade de monstros a ser morto time_sto = Coloque um valor a mais do anterior time = tempo que poderá fazer a task novamente sto_count = Um valor a mais do valor anterior money = Quantidade de dinheiro que o player irá receber, caso coloque 0, não ira receber nada rewardid = itemid do item que player irá ganhar rewardcount = quantidade do item adicionado anteriormente rewardexp = quantidade de exp que player irá ganhar text = Texto que irá aparecer quando player terminar a task Modificações da versão 2.0: Corrigido bug de apenas o primeiro monstro configurado funcionava, agora todos configurados funcionam! Quando player fala qual quer coisa que não seja o nome do monstro, diz que não tem aquela task! Modificado modo de contagem de kill, agora monstra quantos você matou e o total que precisa matar, quando mata o ultimo monstro, aparece a mensagem que terminou a task! Créditos: Quem criou o script base n sei quem foi Drazyn1291 -- Eeditei e reformulei muita coisa! Adicionei coisas como a contagem que falta ao matar os monstros, editei pra fazer a task apenas se o player falar com o NPC e outras coisas! valeu ^^ quem fez o script pra min foi o @miguel223 ficou dahora com suas modificaçoes Link para o comentário https://xtibia.com/forum/topic/240771-task-system-2016/#findComment-1693425 Compartilhar em outros sites More sharing options...
Administrador Administrador 1439 Postado Maio 16, 2016 Administrador Share Postado Maio 16, 2016 Seria bom adaptar pra tfs mais recentes, embora voltado às duas categorias. De qualquer forma o sistema parece estar impecável. Parabéns pela contribuição @Drazyn1291 Link para o comentário https://xtibia.com/forum/topic/240771-task-system-2016/#findComment-1693427 Compartilhar em outros sites More sharing options...
Luga03 333 Postado Maio 18, 2016 Autor Share Postado Maio 18, 2016 Em 16/05/2016 at 12:33, Daniel disse: Seria bom adaptar pra tfs mais recentes, embora voltado às duas categorias. De qualquer forma o sistema parece estar impecável. Parabéns pela contribuição @Drazyn1291 Caso alguém esteja disposto a fazer está atualização pode fazer! Eu não sei as functions de tfs 1.x kkk Link para o comentário https://xtibia.com/forum/topic/240771-task-system-2016/#findComment-1693561 Compartilhar em outros sites More sharing options...
kttallan 319 Postado Maio 18, 2016 Share Postado Maio 18, 2016 Parabéns parcerio e obrigado por essa colaboração ao forum. REP+ Link para o comentário https://xtibia.com/forum/topic/240771-task-system-2016/#findComment-1693562 Compartilhar em outros sites More sharing options...
Taiger 287 Postado Maio 19, 2016 Share Postado Maio 19, 2016 Funciona no PDA? Link para o comentário https://xtibia.com/forum/topic/240771-task-system-2016/#findComment-1693659 Compartilhar em outros sites More sharing options...
Luga03 333 Postado Maio 19, 2016 Autor Share Postado Maio 19, 2016 43 minutos atrás, Taiger disse: Funciona no PDA? Funciona em qual quer um! Link para o comentário https://xtibia.com/forum/topic/240771-task-system-2016/#findComment-1693661 Compartilhar em outros sites More sharing options...
Taiger 287 Postado Maio 31, 2016 Share Postado Maio 31, 2016 (editado) Edit: Ja tem kk, eu que nao vi que tinha a barrinha de rolagem. Obrigado. Ah teria como adicionar mais npcs, tipow deixar igual pxg com 4 npcs com dificuldades diferentes? Teria como adicionar recompensa de xp tb? No caso o player ganharia o iten e tb uma quantidade de xp. Editado Maio 31, 2016 por Taiger Link para o comentário https://xtibia.com/forum/topic/240771-task-system-2016/#findComment-1694429 Compartilhar em outros sites More sharing options...
Luga03 333 Postado Maio 31, 2016 Autor Share Postado Maio 31, 2016 1 hora atrás, Taiger disse: Edit: Ja tem kk, eu que nao vi que tinha a barrinha de rolagem. Obrigado. Ah teria como adicionar mais npcs, tipow deixar igual pxg com 4 npcs com dificuldades diferentes? Teria como adicionar recompensa de xp tb? No caso o player ganharia o iten e tb uma quantidade de xp. Ele já tem isso de ganhar XP '-' Só configurar na tabela, e isso de 4 NPC's é só criar um novo NPC.xml e um novo .lua e modificar as tabelas ai funfa normal, mas na parte do creaturescripts coloca uma tabela com todos, TODOS os monstros configurados! Link para o comentário https://xtibia.com/forum/topic/240771-task-system-2016/#findComment-1694434 Compartilhar em outros sites More sharing options...
Taiger 287 Postado Maio 31, 2016 Share Postado Maio 31, 2016 Entendi valeu Link para o comentário https://xtibia.com/forum/topic/240771-task-system-2016/#findComment-1694437 Compartilhar em outros sites More sharing options...
Hdk 0 Postado Junho 9, 2016 Share Postado Junho 9, 2016 Obrigado por compartilhar, estava precisando exatamente desse sistema. É possível eu configurar a recompensa para "pontos", cada task da 1 ponto e com uma certa quantia de pontos a pessoa troca por uma recompensa no npc ? Link para o comentário https://xtibia.com/forum/topic/240771-task-system-2016/#findComment-1695303 Compartilhar em outros sites More sharing options...
Caronte 446 Postado Junho 9, 2016 Share Postado Junho 9, 2016 Em 16/05/2016 at 12:33, Daniel disse: Seria bom adaptar pra tfs mais recentes, embora voltado às duas categorias. De qualquer forma o sistema parece estar impecável. Parabéns pela contribuição @Drazyn1291 Acredito que o sistema foi feito pensando em poketibia mesmo, já que a maioria dos poketibias são de tfs versão antiga... Link para o comentário https://xtibia.com/forum/topic/240771-task-system-2016/#findComment-1695321 Compartilhar em outros sites More sharing options...
Luga03 333 Postado Junho 9, 2016 Autor Share Postado Junho 9, 2016 4 horas atrás, Caronte disse: Acredito que o sistema foi feito pensando em poketibia mesmo, já que a maioria dos poketibias são de tfs versão antiga... Eu fiz ele pensando no poketibia, mas pode sim, ser usado em tibia normal, só mudar as mensagens e monstros configurados '-' Até por que existem vários 8.60 q não são tfs 1.x '-' Link para o comentário https://xtibia.com/forum/topic/240771-task-system-2016/#findComment-1695382 Compartilhar em outros sites More sharing options...
Posts Recomendados