BrunoMaciel 3 Postado Janeiro 21, 2020 Share Postado Janeiro 21, 2020 Alguem tem a script de npc de task?? 1 - de item 2 - de matar x pokemon Um script basica simples pra PDA!! um npc de task de pegar item(loot) e outro de matar X pokemon. quem puder posta aqui a script ^^ Link para o comentário Compartilhar em outros sites More sharing options...
0 Yan Oliveira 211 Postado Janeiro 27, 2020 Share Postado Janeiro 27, 2020 - Começando pelo NPC de Task de item Vai em Data/NPC e crie o arquivo Breno.xml e adicione o código dentro: <?xml version="1.0" encoding="UTF-8"?> <npc name="Breno" script="Breno.lua" walkinterval="0" floorchange="0" access="5" level="1" maglevel="1"> <health now="150" max="150"/> <look type="1421" head="114" body="119" legs="114" feet="114" corpse="2212"/> <parameters> <parameter key="message_greet" value="Olá |PLAYERNAME|, em que posso ajudar? Diga {help}, {ajuda} ou {task} para mais informações."/> </parameters> </npc> Agora em Data/NPC/Scripts crie o arquivo Breno.lua (com codificação ANSI) e adicione 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 storage = 150000 local storage_start = 150001 local id_item = 12163 -- ID DO ITEM QUE O NPC PEDE local quantidade_item = 100 -- QUANTIDADE DE ITENS QUE O NPC PEDE local id_item_recebido = 16563 -- ID DO ITEM QUE RECEBE AO COMPLETAR A TASK local quantidade_item_recebido = 1 -- QUANTIDADE DE ITENS QUE RECEBE AO COMPLETAR A TASK ----------------------------------- [ DIALOGO COM NPC] --------------------------------- if msgcontains(msg, 'help') or msgcontains(msg, 'ajuda') or msgcontains(msg, 'task') then if getPlayerStorageValue(cid, storage) == 1 then selfSay("Você já completou minha task.", cid) talkState[talkUser] = 0 return true else selfSay("Preciso que você me traga " ..quantidade_item.. " " ..getItemNameById(id_item).. " Você trouxe?", cid) talkState[talkUser] = 1 return true end elseif (msgcontains(msg, 'yes') or msgcontains(msg, 'sim')) and talkState[talkUser] == 1 then if getPlayerStorageValue(cid, storage_start) < 1 then setPlayerStorageValue(cid, storage_start, 1) return true end if getPlayerItemCount(cid, id_item) >= quantidade_item then doPlayerRemoveItem(cid, id_item, quantidade_item) selfSay("Parabéns! Você trouxe " ..quantidade_item.. " " ..getItemNameById(id_item).. " que eu precisava. Receba sua recompensa.", cid) doPlayerAddItem(cid, id_item_recebido, quantidade_item_recebido) doSendMagicEffect(getPlayerPosition(cid), 29) setPlayerStorageValue(cid, storage, 1) talkState[talkUser] = 0 return true else selfSay("Você ainda não trouxe " ..quantidade_item.. " " ..getItemNameById(id_item).. " que eu preciso.", cid) talkState[talkUser] = 0 return true end return true elseif (msgcontains(msg, 'no') or msgcontains(msg, 'não')) and talkState[talkUser] == 1 then if getPlayerStorageValue(cid, storage_start) < 1 then selfSay("Ok, fale comigo novamente caso queira fazer minha task.") talkState[talkUser] = 0 return true else selfSay("Então vá buscar os itens que eu pedi.") talkState[talkUser] = 0 return true end return true end end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) - Agora é o NPC da Task que derrota Pokémon Vá em Data/NPC e crie o arquivo Brime.xml e adicione o código dentro: <?xml version="1.0" encoding="UTF-8"?> <npc name="Brime" script="Brime.lua" walkinterval="0" floorchange="0" access="5" level="1" maglevel="1"> <health now="150" max="150"/> <look type="1421" head="114" body="119" legs="114" feet="114" corpse="2212"/> <parameters> <parameter key="message_greet" value="Olá |PLAYERNAME|, eu recompenso jogadores que aceitam meus desafios. Diga {help}, {ajuda} ou {task} para mais informações."/> </parameters> </npc> Agora em Data/NPC/Scripts crie o arquivo Brime.lua (com codificação ANSI) e adicione 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 nome_poke_task = "Scyther" local quantidade_pokemon = 50 local storage_npc = 120000 local storage_task = 110000 local storage_start = 121000 -- RECOMPENSAS -- local id_item = 12545 local quantidade_item = 1 local exp = 500000 ----------------------------------- [ DIALOGO COM NPC] --------------------------------- if msgcontains(msg, 'help') or msgcontains(msg, 'ajuda') or msgcontains(msg, 'task') then if getPlayerStorageValue(cid, storage_task) == 1 then -- VERIFICA SE TERMINOU A TASK selfSay("Você já completou minha missão.", cid) talkState[talkUser] = 0 return true else selfSay("Preciso que você derrote alguns {"..nome_poke_task.."} para mim. Você aceita este desafio?", cid) talkState[talkUser] = 1 return true end elseif (msgcontains(msg, 'yes') or msgcontains(msg, 'sim') or (msgcontains(msg, 'ok'))) and talkState[talkUser] == 1 then if getPlayerStorageValue(cid, storage_start) < 1 then setPlayerStorageValue(cid, storage_start, 1) return true end if getPlayerStorageValue(cid, storage_npc) == 1 then selfSay("Parabéns! Você completou minha tarefa. Receba sua recompensa.", cid) doPlayerAddExp(cid, exp) doPlayerAddItem(cid, id_item, quantidade_item) doSendAnimatedText(getThingPos(cid), exp, 27) doSendMagicEffect(getPlayerPosition(cid), 29) setPlayerStorageValue(cid, storage_task, 1) talkState[talkUser] = 0 return true else if getPlayerStorageValue(cid, storage_npc) < 0 then selfSay("Vá derrotar todos os " ..quantidade_pokemon.. " " ..nome_poke_task.. " para mim.") setPlayerStorageValue(cid, storage_npc, 0) talkState[talkUser] = 0 return true elseif getPlayerStorageValue(cid, storage_npc) == 0 then selfSay("Você ainda não derrotou todos os " ..quantidade_pokemon.. " " ..nome_poke_task.. ". Vá derrotar os " ..nome_poke_task.. " restante antes de falar comigo.") talkState[talkUser] = 0 return true end return true end return true elseif (msgcontains(msg, 'no') or msgcontains(msg, 'não')) and talkState[talkUser] == 1 then if getPlayerStorageValue(cid, storage_start) < 1 then selfSay("Ok, fale comigo novamente caso queira fazer minha task.", cid) talkState[talkUser] = 0 return true else selfSay("Então vá completar sua tarefa.") talkState[talkUser] = 0 return true end return true end end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) Agora em Data/Creaturescripts/scripts crie o arquivo task_npc.lua (com a codificação ANSI do arquivo pelo fato de ter acentuação no português) e adicione o código dentro: local storage_npc = 120000 local storage_contador = 120001 local pokemon = { [1] = {name = "Scyther", count = 50}, } local restante local nome = pokemon[1].name function onKill(cid, target) for _, t in ipairs(pokemon) do local quantidade = t.count if getCreatureName(target) == nome then if getPlayerStorageValue(cid, storage_npc) == 0 then if getPlayerStorageValue(cid, storage_contador) == quantidade then doPlayerSendTextMessage(cid, 27, "Não há mais " ..nome.. " para derrotar.") setPlayerStorageValue(cid, storage_contador, getPlayerStorageValue(cid, storage_contador) + 1) setPlayerStorageValue(cid, storage_npc, 1) return true elseif getPlayerStorageValue(cid, storage_contador) < quantidade then -- AS STORAGES COMEÇAM COM -1, ENTÃO NESSA PARTE EU APENAS DEFINO COMO 0 PARA NA LINHA SEGUINTE JÁ IR PARA 1. NÃO COLOQUE RETURN NESSE LAÇO PORQUE VAI ENCERRAR O ESCOPO E NÃO VAI CONTAR CORRETAMENTE -- if getPlayerStorageValue(cid, storage_contador) < 0 then setPlayerStorageValue(cid, storage_contador, 0) end setPlayerStorageValue(cid, storage_contador, getPlayerStorageValue(cid, storage_contador) + 1) restante = quantidade - getPlayerStorageValue(cid, storage_contador) doPlayerSendTextMessage(cid, 27, "Faltam " ..restante.. " " ..nome.. " para derrotar.") return true end elseif (getPlayerStorageValue(cid, storage_npc) < 0) or (getPlayerStorageValue(cid, storage_npc) > 0) then return true end return true end return true end end Agora em Data/Creaturescripts abra o creaturescripts.xml e adiciona a tag: <event type="kill" name="task_npc" script="task_npc.lua"/> E por último em Data/Creaturescripts/Scripts abra o Login.lua e adicione a tag na parte de eventos: registerCreatureEvent(cid, "task_npc") BrunoMaciel reagiu a isso 1 Link para o comentário Compartilhar em outros sites More sharing options...
0 BrunoMaciel 3 Postado Janeiro 27, 2020 Autor Share Postado Janeiro 27, 2020 Ja ja vou testa ^^ So uma duvida antes caso eu queira ter mais npcs de task de matar pokemon vou usa este npc como base claro porem estas scripts de task tipo do >> Data/Creaturescripts/Scripts Vo precisa adiciona sempre algo a mais ou agora e so ir adicionando os npcs de task de mata pokemon normal ou vo te que sempre adiciona umas tag dessa ?? Link para o comentário Compartilhar em outros sites More sharing options...
0 Yan Oliveira 211 Postado Janeiro 27, 2020 Share Postado Janeiro 27, 2020 2 minutos atrás, BrunoMaciel disse: Ja ja vou testa ^^ So uma duvida antes caso eu queira ter mais npcs de task de matar pokemon vou usa este npc como base claro porem estas scripts de task tipo do >> Data/Creaturescripts/Scripts Vo precisa adiciona sempre algo a mais ou agora e so ir adicionando os npcs de task de mata pokemon normal ou vo te que sempre adiciona umas tag dessa ?? Você fala a tag do OnKill do creaturescripts.xml? Link para o comentário Compartilhar em outros sites More sharing options...
0 BrunoMaciel 3 Postado Janeiro 27, 2020 Autor Share Postado Janeiro 27, 2020 Agora, Yan18 disse: Você fala a tag do OnKill do creaturescripts.xml? sim ou se agora e so eu ir adicionando os npcs tipo cria eles normal Link para o comentário Compartilhar em outros sites More sharing options...
0 Yan Oliveira 211 Postado Janeiro 27, 2020 Share Postado Janeiro 27, 2020 Agora, BrunoMaciel disse: sim ou se agora e so eu ir adicionando os npcs tipo cria eles normal Não, para criar outros NPC de task de derrotar pokémon vai ter que repetir o mesmo processo. Pois naquele script eu apenas defini que vai derrotar o pokémon Scyther pois na tabela eu pego a primeira posição da tabela (só para amostra) e defini a storage do onKill do creaturescripts como verificação para o NPC. Então para criar outro é necessário criar outro npc (xml e lua) criar o script de verificação no arquivo lua e em creaturescripts que você faz o script da task. Link para o comentário Compartilhar em outros sites More sharing options...
0 BrunoMaciel 3 Postado Janeiro 27, 2020 Autor Share Postado Janeiro 27, 2020 (editado) 2 minutos atrás, Yan18 disse: Não, para criar outros NPC de task de derrotar pokémon vai ter que repetir o mesmo processo. Pois naquele script eu apenas defini que vai derrotar o pokémon Scyther pois na tabela eu pego a primeira posição da tabela (só para amostra) e defini a storage do onKill do creaturescripts como verificação para o NPC. Então para criar outro é necessário criar outro npc (xml e lua) criar o script de verificação no arquivo lua e em creaturescripts que você faz o script da task. ata entendi ^^ vou testa os npc entao ^^ Editado Janeiro 27, 2020 por BrunoMaciel Link para o comentário Compartilhar em outros sites More sharing options...
0 Yan Oliveira 211 Postado Janeiro 27, 2020 Share Postado Janeiro 27, 2020 Agora, BrunoMaciel disse: ata entendi ^^ vou testa os npc entao ^^ Testa ai, eu testei aqui e funcinou. Mas qualquer problema me fale. E só fazendo um adendo, se você usa a base DXP provavelmente não vai funcionar porque o onKill dela está bugado e as task que fiz nessa base não funcionaram. Link para o comentário Compartilhar em outros sites More sharing options...
0 BrunoMaciel 3 Postado Janeiro 27, 2020 Autor Share Postado Janeiro 27, 2020 2 minutos atrás, Yan18 disse: Testa ai, eu testei aqui e funcinou. Mas qualquer problema me fale. E só fazendo um adendo, se você usa a base DXP provavelmente não vai funcionar porque o onKill dela está bugado e as task que fiz nessa base não funcionaram. a base e PDA Link para o comentário Compartilhar em outros sites More sharing options...
0 Yan Oliveira 211 Postado Janeiro 27, 2020 Share Postado Janeiro 27, 2020 Agora, BrunoMaciel disse: a base e PDA Então vai funcionar tranquilamente ^^, a menos que algum função do script não exista na sua base ou esteja bugada. Link para o comentário Compartilhar em outros sites More sharing options...
0 BrunoMaciel 3 Postado Janeiro 27, 2020 Autor Share Postado Janeiro 27, 2020 1 minuto atrás, Yan18 disse: Então vai funcionar tranquilamente ^^, a menos que algum função do script não exista na sua base ou esteja bugada. vo testa so ultima duvida na parte do NPC o level 1 eo level da task caso eu mude sei la pra 10 nego abaixo nao pode fazer certo ? Link para o comentário Compartilhar em outros sites More sharing options...
0 Yan Oliveira 211 Postado Janeiro 27, 2020 Share Postado Janeiro 27, 2020 Agora, BrunoMaciel disse: vo testa so ultima duvida na parte do NPC o level 1 eo level da task caso eu mude sei la pra 10 nego abaixo nao pode fazer certo ? Level do NPC que você fala é o atributo do xml ? Link para o comentário Compartilhar em outros sites More sharing options...
0 BrunoMaciel 3 Postado Janeiro 27, 2020 Autor Share Postado Janeiro 27, 2020 1 minuto atrás, Yan18 disse: Level do NPC que você fala é o atributo do xml ? sim <npc name="Breno" script="Breno.lua" walkinterval="0" floorchange="0" access="5" level="1" maglevel="1"> level="1" isso se e caso eu coloquei sei la 10 ai so char level 10+ pode fazer a task com ele so pra min saber se isso ou nao Link para o comentário Compartilhar em outros sites More sharing options...
0 Yan Oliveira 211 Postado Janeiro 27, 2020 Share Postado Janeiro 27, 2020 (editado) 3 minutos atrás, BrunoMaciel disse: sim <npc name="Breno" script="Breno.lua" walkinterval="0" floorchange="0" access="5" level="1" maglevel="1"> level="1" isso se e caso eu coloquei sei la 10 ai so char level 10+ pode fazer a task com ele so pra min saber se isso ou nao Esse atributo não é para o player fazer a missão em si do NPC, mas o nível mínimo que os players terão que ter para falar com o NPC. Eu não curto muito e nem ideal verificar nível por ali, até porque se tiver verificação de nível no script da ruim kkk. Acho bem melhor verificar o nível no script do npc, e não pelo XML. Até porque se o player não tiver nível, pelo menos na mensagem da verificação o player vai saber. Se quiser faço uma verificação de nível para você nos 2 npc. Editado Janeiro 27, 2020 por Yan18 Link para o comentário Compartilhar em outros sites More sharing options...
0 BrunoMaciel 3 Postado Janeiro 27, 2020 Autor Share Postado Janeiro 27, 2020 (editado) 17 minutos atrás, Yan18 disse: Esse atributo não é para o player fazer a missão em si do NPC, mas o nível mínimo que os players terão que ter para falar com o NPC. Eu não curto muito e nem ideal verificar nível por ali, até porque se tiver verificação de nível no script da ruim kkk. Acho bem melhor verificar o nível no script do npc, e não pelo XML. Até porque se o player não tiver nível, pelo menos na mensagem da verificação o player vai saber. Se quiser faço uma verificação de nível para você nos 2 npc. a entao so queria por nivel na de itens 17 minutos atrás, Yan18 disse: Esse atributo não é para o player fazer a missão em si do NPC, mas o nível mínimo que os players terão que ter para falar com o NPC. Eu não curto muito e nem ideal verificar nível por ali, até porque se tiver verificação de nível no script da ruim kkk. Acho bem melhor verificar o nível no script do npc, e não pelo XML. Até porque se o player não tiver nível, pelo menos na mensagem da verificação o player vai saber. Se quiser faço uma verificação de nível para você nos 2 npc. Editado Janeiro 27, 2020 por BrunoMaciel Link para o comentário Compartilhar em outros sites More sharing options...
0 Yan Oliveira 211 Postado Janeiro 27, 2020 Share Postado Janeiro 27, 2020 7 minutos atrás, BrunoMaciel disse: a entao so queria por nivel na de itens Abra o script do NPC Breno e troque o código por esse: 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 storage = 150000 local storage_start = 150001 local id_item = 12163 -- ID DO ITEM QUE O NPC PEDE local quantidade_item = 100 -- QUANTIDADE DE ITENS QUE O NPC PEDE local id_item_recebido = 16563 -- ID DO ITEM QUE RECEBE AO COMPLETAR A TASK local quantidade_item_recebido = 1 -- QUANTIDADE DE ITENS QUE RECEBE AO COMPLETAR A TASK local level = 10 -- NÍVEL NECESSÁRIO PARA FAZER A TASK DO NPC ----------------------------------- [ DIALOGO COM NPC] --------------------------------- if msgcontains(msg, 'help') or msgcontains(msg, 'ajuda') or msgcontains(msg, 'task') then if getPlayerLevel(cid) < level then selfSay("Para fazer minha missão é necessário ter nível " ..level.. " ou mais para fazer. Fale novamente comigo quando você atingir o nível necessário.") talkState[talkUser] = 0 return true else if getPlayerStorageValue(cid, storage) == 1 then selfSay("Você já completou minha task.", cid) talkState[talkUser] = 0 return true else selfSay("Preciso que você me traga " ..quantidade_item.. " " ..getItemNameById(id_item).. " Você trouxe?", cid) talkState[talkUser] = 1 return true end return true end elseif (msgcontains(msg, 'yes') or msgcontains(msg, 'sim')) and talkState[talkUser] == 1 then if getPlayerStorageValue(cid, storage_start) < 1 then setPlayerStorageValue(cid, storage_start, 1) return true end if getPlayerItemCount(cid, id_item) >= quantidade_item then doPlayerRemoveItem(cid, id_item, quantidade_item) selfSay("Parabéns! Você trouxe " ..quantidade_item.. " " ..getItemNameById(id_item).. " que eu precisava. Receba sua recompensa.", cid) doPlayerAddItem(cid, id_item_recebido, quantidade_item_recebido) doSendMagicEffect(getPlayerPosition(cid), 29) setPlayerStorageValue(cid, storage, 1) talkState[talkUser] = 0 return true else selfSay("Você ainda não trouxe " ..quantidade_item.. " " ..getItemNameById(id_item).. " que eu preciso.", cid) talkState[talkUser] = 0 return true end return true elseif (msgcontains(msg, 'no') or msgcontains(msg, 'não')) and talkState[talkUser] == 1 then if getPlayerStorageValue(cid, storage_start) < 1 then selfSay("Ok, fale comigo novamente caso queira fazer minha task.") talkState[talkUser] = 0 return true else selfSay("Então vá buscar os itens que eu pedi.") talkState[talkUser] = 0 return true end return true end end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) Deixei o nível mínimo como 10, caso queira trocar, só alterar na variável level. Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
BrunoMaciel 3
Alguem tem a script de npc de task??
1 - de item
2 - de matar x pokemon
Um script basica simples pra PDA!!
um npc de task de pegar item(loot) e outro de matar X pokemon.
quem puder posta aqui a script ^^
Link para o comentário
Compartilhar em outros sites
19 respostass a esta questão
Posts Recomendados