zllcapiroto 0 Postado Abril 5, 2020 Share Postado Abril 5, 2020 Alguém poderia me ajudar com um NPC de Task? Se possivel, deixar identificado, onde coloco o monster/ a quantidade, e a recompensa, p/ eu poder add mais mobs, etc.. Valeu família ^^ Link para o comentário Compartilhar em outros sites More sharing options...
2 Yan Oliveira 211 Postado Abril 8, 2020 Share Postado Abril 8, 2020 Eu criei um NPC de Task aqui, porém eu fiz em uma base Poketibia TFS 0.3.6, pois não tenho outra base com versão de TFS diferente. Porém olhei as funções do TFS 1.0 (que é a que você descreveu) e as funções que utilizei nos scripts tem no TFS 1.0. Vai em Data/NPC e cria um arquivo xml chamado Billie.xml e adicione o código dentro: <?xml version="1.0" encoding="UTF-8"?> <npc name="Billie" script="Billie.lua" walkinterval="10000" floorchange="0" speed="100"> <health now="150" max="150"/> <look type="1421" head="114" body="119" legs="114" feet="114" corpse="2212"/> <parameters> <parameter key="message_greet" value="Hello |PLAYERNAME|, I need a service... Say {help} or {task} to more informations."/> </parameters> </npc> Agora em Data/NPC/Scripts crie um arquivo chamado Billie.lua e insira o código dentro: 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 -- VARIÁVEIS -- local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid msg = string.lower(msg) local id_item = 2160 -- ITEM QUE VAI GANHAR AO CONCLUIR A TASK local quantidade_item = 1 -- QUANTIDADE DE ITENS QUE VAI GANHAR local exp = 500000 -- EXPERIÊNCIA QUE VAI GANHAR local monstro = "Magmar" -- NOME DO MONSTRO local quantidade_monstro = 50 -- QUANTIDADE DE MONSTROS local storage = 32500 -- STORAGE DO NPC local storage_npc = 34900 -- STORAGE QUE O NPC DA PARA O PLAYER PARA COMEÇAR A TASK local storage_quantidade = 32510 -- STORAGE QUE CONTÉM A QUANTIDADE DE MONSTROS DERROTADOS PELO PLAYER local storage_task = 32600 -- STORAGE DE CONCLUSÃO DA TASK local storage_mensagem = 32505 -- STORAGE PARA DEIXAR O DIALOGO MAIS BONITO local restante = (quantidade_monstro - getPlayerStorageValue(cid, storage_quantidade)) + 1 ----------------------------------- [ DIALOGO COM NPC] ----------------------------------- if msgcontains(msg, 'task') then if getPlayerStorageValue(cid, storage) == 1 then selfSay("You have already done my task.", cid) talkState[talkUser] = 0 return true else if getPlayerStorageValue(cid, storage_npc) < 1 then selfSay("I need you kill " ..quantidade_monstro.. " " ..monstro.. ". Do you accept my task?", cid) else selfSay("Have you already finished my task?", cid) end talkState[talkUser] = 1 return true end elseif (msgcontains(msg, 'yes') or msgcontains(msg, 'sim')) and talkState[talkUser] == 1 then if getPlayerStorageValue(cid, storage_mensagem) < 1 and getPlayerStorageValue(cid, storage_npc) < 1 then selfSay("Ok, go to complete my task.", cid) talkState[talkUser] = 0 setPlayerStorageValue(cid, storage_mensagem, 1) setPlayerStorageValue(cid, storage_npc, 1) setPlayerStorageValue(cid, storage_quantidade, 1) return true end if getPlayerStorageValue(cid, storage_task) < 1 then selfSay("You don't finish my task yet. You need to kill " ..restante.. " " ..monstro.. " yet." , cid) talkState[talkUser] = 0 return true else selfSay("Congratulations! You finished my task! Receive your reward.", cid) doSendMagicEffect(getThingPos(cid), 27) doPlayerAddExp(cid, exp) doPlayerAddItem(cid, id_item, quantidade_item) setPlayerStorageValue(cid, storage, 1) talkState[talkUser] = 0 return true end end end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) Agora vai em Data/Creaturescripts/Scripts e crie um arquivo chamado task_billie e adicione o código dentro: local monstro = "Magmar" -- NOME DO MONSTRO local quantidade = 50 -- QUANTIDADE DO MONSTRO local storage_npc = 34900 -- NÃO MEXE local storage_quantidade = 32510 -- NÃO MEXE local storage_task = 32600 -- NÃO MEXE function onKill(cid, target, lasthit) if getPlayerStorageValue(cid, storage_npc) > 0 then if getPlayerStorageValue(cid, storage_task) < 1 then if getPlayerStorageValue(cid, storage_quantidade) < quantidade then if isPlayer(cid) and getCreatureName(target) == monstro then local restantes = quantidade - getPlayerStorageValue(cid, storage_quantidade) doPlayerSendTextMessage(cid, 27, "Billie: " ..restantes.. " " ..monstro.. " restantes para derrotar." ) setPlayerStorageValue(cid, storage_quantidade, getPlayerStorageValue(cid, storage_quantidade) + 1) return true end elseif getPlayerStorageValue(cid, storage_quantidade) == quantidade then doPlayerSendTextMessage(cid, 27, "Billie: You don't have more " ..monstro.. " to defeat. Come back to get your reward.") setPlayerStorageValue(cid, storage_quantidade, -1) setPlayerStorageValue(cid, storage_task, 1) return true end else return true end else return true end end Ainda em Data/Creaturescripts/Scripts abra o arquivo login.lua e vá procure pela parte onde fica os registros de eventos no código, e adicione a seguinte linha embaixo do último evento: registerCreatureEvent(cid, "task_billie") E por último, em Data/Creaturescripts abra o creaturescripts.xml e adicione a tag: <event type="kill" name="task_billie" script="task_billie.lua"/> Explicação: Deixei comentado as variáveis e cada parte, no arquivo Billie.lua coloque o nome do monstro na variável monstro e a quantidade na variável quantidade_monstro, e o coloque o id e quantidade do item que o player vai ganhar nas variáveis conforme deixei comentado, está bem simples de ver. No arquivo task_billie a mesma coisa, só que lá só vai precisar colocar nome do monstro e quantidade. O player irá ganhar o item conforme o id que está na variável, a quantidade e experiência definida no Billie.lua, só alterar lá as recompensas. O resto não precisa mexer. Eu testei aqui e funcionou normal, mas teste e me fale se der algum problema. Oloster Games e zllcapiroto reagiu a isso 2 Link para o comentário Compartilhar em outros sites More sharing options...
0 zllcapiroto 0 Postado Abril 15, 2020 Autor Share Postado Abril 15, 2020 Fala mano, tranquilo? Fiz os procedimentos, mas não alterei o ID ainda, porém, quando vou sumonar o npc, /s billie, tá dando debug, sabe oq pode ser? logo vou alterar os ids e testar.. Mas, o debug será por esse motivo? Irmão, alterei os ids, o mob e tal, porém, ainda dá debug quando vou /s billie, sabe oque pode ser? Link para o comentário Compartilhar em outros sites More sharing options...
0 Yan Oliveira 211 Postado Abril 15, 2020 Share Postado Abril 15, 2020 1 hora atrás, zllcapiroto disse: Fala mano, tranquilo? Fiz os procedimentos, mas não alterei o ID ainda, porém, quando vou sumonar o npc, /s billie, tá dando debug, sabe oq pode ser? logo vou alterar os ids e testar.. Mas, o debug será por esse motivo? Irmão, alterei os ids, o mob e tal, porém, ainda dá debug quando vou /s billie, sabe oque pode ser? E ai mano beleza? Então, npc é comando /n, o comando /s é para summon, por isso está dando debug. Link para o comentário Compartilhar em outros sites More sharing options...
0 zllcapiroto 0 Postado Abril 15, 2020 Autor Share Postado Abril 15, 2020 No meu servidor é /m p/ monster e pra npc é /s brosito kk Link para o comentário Compartilhar em outros sites More sharing options...
0 Yan Oliveira 211 Postado Abril 16, 2020 Share Postado Abril 16, 2020 1 hora atrás, zllcapiroto disse: No meu servidor é /m p/ monster e pra npc é /s brosito kk Já descobri o problema, é que o looktype que coloquei nele, não tem no seu servidor. Vai na pasta de NPC e copia a tag do looktype de algum e troca no script do Billie.xml. Troque esta parte: <look type="1421" head="114" body="119" legs="114" feet="114" corpse="2212"/> Pelo looktype de outro npc do seu servidor que vai funcionar. Link para o comentário Compartilhar em outros sites More sharing options...
0 zllcapiroto 0 Postado Abril 16, 2020 Autor Share Postado Abril 16, 2020 Brosito, troquei o look type, e deu certo, testando o npc lá Coloquei de 20 mob, só p/ testes Eu matei os 20 mobs 21:36 Billie: You don't finish my task yet. You need to kill 0 Dragon yet. 21:36 Tefinha Ownss [464]: yes 21:36 Billie: Hello Tefinha Ownss, I need a service... Say help or task to more informations. 21:36 Tefinha Ownss [464]: task 21:36 Billie: Have you already finished my task? 21:36 Tefinha Ownss [464]: yes 21:36 Billie: You don't finish my task yet. You need to kill -1 Dragon yet. 21:36 Tefinha Ownss [464]: yes Ele não tá entregando a recompensa, e nem tá falando em algum local chat, o tanto de mobs que fala, oque faço? tem whats? se tiver, me add ai, 032 988244977 Acho que já sei oque é, alterei a quantidade, dps que tinha pego a task, sepa é isso.. Mas como faço p/ fazer a task com mais de 1 mob, tem como? Tipo, 1 task p/ dragon, outra p/ dragon lord, 1 pra demon, por exemplo.. Ou tem que fazer outro npc? Irmão, nem sei como agradecer, TMJ! Link para o comentário Compartilhar em outros sites More sharing options...
0 Yan Oliveira 211 Postado Abril 16, 2020 Share Postado Abril 16, 2020 1 hora atrás, zllcapiroto disse: Brosito, troquei o look type, e deu certo, testando o npc lá Coloquei de 20 mob, só p/ testes Eu matei os 20 mobs 21:36 Billie: You don't finish my task yet. You need to kill 0 Dragon yet. 21:36 Tefinha Ownss [464]: yes 21:36 Billie: Hello Tefinha Ownss, I need a service... Say help or task to more informations. 21:36 Tefinha Ownss [464]: task 21:36 Billie: Have you already finished my task? 21:36 Tefinha Ownss [464]: yes 21:36 Billie: You don't finish my task yet. You need to kill -1 Dragon yet. 21:36 Tefinha Ownss [464]: yes Ele não tá entregando a recompensa, e nem tá falando em algum local chat, o tanto de mobs que fala, oque faço? tem whats? se tiver, me add ai, 032 988244977 Acho que já sei oque é, alterei a quantidade, dps que tinha pego a task, sepa é isso.. Mas como faço p/ fazer a task com mais de 1 mob, tem como? Tipo, 1 task p/ dragon, outra p/ dragon lord, 1 pra demon, por exemplo.. Ou tem que fazer outro npc? Sim, não pode alterar o valor da task depois que já começou a fazer, porque ele contabiliza a quantidade de monstro incrementando o valor da storage, então se você muda ai quebra a verificação no script kk. Bom está trabalhando com um npc só e um arquivo só, se quiser fazer mais tasks com mesmo npc ou diferentes tasks com outros npc, vai ter que mudar o valor da storage no arquivo.lua do npc e do arquivo .lua da pasta creaturescripts, ou criar outros arquivos baseado naquele mudando as storage e os textos. zllcapiroto reagiu a isso 1 Link para o comentário Compartilhar em outros sites More sharing options...
0 zllcapiroto 0 Postado Abril 16, 2020 Autor Share Postado Abril 16, 2020 Vou tentar aqui, obrigado mano ^^ Link para o comentário Compartilhar em outros sites More sharing options...
0 Yan Oliveira 211 Postado Abril 16, 2020 Share Postado Abril 16, 2020 1 hora atrás, zllcapiroto disse: Vou tentar aqui, obrigado mano ^^ De nada, se tiver alguma dúvida sobre criar outras tasks, só falar que te ajudo. Link para o comentário Compartilhar em outros sites More sharing options...
0 zllcapiroto 0 Postado Abril 16, 2020 Autor Share Postado Abril 16, 2020 Valeu mano, por acaso tem algum script de alavanca? Ou que a pessoa clica, e é teleportada pra tal lugar Ou clica e nasce mobs.. Tô precisando desses scripts, vlw Link para o comentário Compartilhar em outros sites More sharing options...
0 Yan Oliveira 211 Postado Abril 16, 2020 Share Postado Abril 16, 2020 11 horas atrás, zllcapiroto disse: Valeu mano, por acaso tem algum script de alavanca? Ou que a pessoa clica, e é teleportada pra tal lugar Ou clica e nasce mobs.. Tô precisando desses scripts, vlw Por nada! Consigo sim, mas você vai precisar criar um novo tópico para isso porque esse pedido já não tem nada haver mais com o que fez aqui de task. Caso o script que fiz para você resolveu seu problema, marque como melhor resposta. Sobre alavanca, pode criar um novo tópico ou me mandar mensagem, já que existem vários pedidos assim no fórum, então não teria problema resolver via pm. É bem tranquilo de fazer. Link para o comentário Compartilhar em outros sites More sharing options...
0 zllcapiroto 0 Postado Abril 16, 2020 Autor Share Postado Abril 16, 2020 Demoro irmão, vou mandar PM, obg pela forca, tmj Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
zllcapiroto 0
Alguém poderia me ajudar com um NPC de Task? Se possivel, deixar identificado, onde coloco o monster/ a quantidade, e a recompensa, p/ eu poder add mais mobs, etc..
Valeu família ^^
Link para o comentário
Compartilhar em outros sites
12 respostass a esta questão
Posts Recomendados