Postado Setembro 13, 2015 9 anos Galera, eu preciso de um NPC com várias missions e tipo, não pode fazer a próxima mission e não tiver feita a atual e claro, no final ganha um storage, NÃO GANHA RECOMPENSAS NENHUMA, só storage no final e como eu disse, não pode fazer a próxima, caso não tenha a atual.. séria assim as falas: NPC: Olá (playername) estou meio perdido com a correria, vc pode me ajudar com uma missao? player: missao NPC: Certo, vou precisar da sua ajuda, meus irmaos estao com alguns de meus pertences, vc poderia recolher eles de volta para mim? player: recolher NPC: Certo, meu primeiro irmao vive em uma cidade onde habitam todos os tipos de orcs, porem ele vive fora dessa cidade, em uma casa na beira da areia, busque meu pertence e eu lhe informo o proximo passo, mas cuidado, ele tem uma Hydra como animal de estimacao, nao tente enganar-lo. player: pertence NPC: Voce conseguiu recolher meu pertence? player: yes NPC: Certo, muito obrigado. O meu proximo pertence esta com meu irmao Phill, ele habita nos montes mais gelados desse mundo, perto dos barbaros, dizem que as vezes Ghazbaran aparece por la, pegue meu item e traga de volta, mas cuidado, ele tem um Frost Dragon como animal de estimacao, nao tente enganar-lo. player: item NPC: Voce recolheu meu item? player: yes NPC: Certo, muito obrigado. O meu pertence mais valioso esta com meu irmao Ryck, ele vive nas montanhas do deserto, que fica entre o deserto e a selva, vive em uma caverna, traga meu ultimo pertence e eu te dou acesso a quest mais valiosa desse mundo como recompensa, ele tem um Dragon como animal de estimacao, nao tente enganar-lo. player: quest NPC: Voce trouxe meu pertence mais valioso? player: Certo, pegue sua recompensa atras da porta, e entre na quest, a partir de agora e com voce, boa sorte. postei as falar apenas pra vcs verem o numero de missões que eu preciso nesse npc..
Postado Setembro 13, 2015 9 anos O tópico foi movido para a área correta, preste mais atenção da próxima vez!Leia as regras do fórum: http://tibiaking.com/forum/topic/1281-regras-gerais/?p=7680 Este tópico foi movido:De: "OTServ → Aprovação de Tópicos de Conteúdos"Para: "OTServ → Suporte OTServ → Suporte de Scripts" ➥ Regras | Seções OTServ | Seções BOT
Postado Setembro 15, 2015 9 anos Solução Em "Data/npc/scripts", nome_do_arquivo.lua: local t = { storage = 34341, -- Storage utilizada na quest, para dar acessos depois de completar esta missao, use esta storage. items = {2160, 2161, 2162} -- Pertence 1, pertence 2, pertence valioso. } 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 msg = msg:lower(); local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid if msgcontains(msg, 'missao') then if getPlayerStorageValue(cid, t.storage) <= 0 then selfSay('Certo, vou precisar da sua ajuda, meus irmaos estao com alguns de meus pertences, você poderia {recolher} eles de volta para mim?', cid) talkState[talkUser] = 1 elseif getPlayerStorageValue(cid, t.storage) == 1 then selfSay('Conseguiu recuperar o primeiro {pertence}? Se estiver com problemas na localização, diga {info}.', cid) talkState[talkUser] = 1 elseif getPlayerStorageValue(cid, t.storage) == 2 then selfSay('Você recolheu meu {item}? Se estiver com problemas na localização, diga {info}.', cid) talkState[talkUser] = 1 elseif getPlayerStorageValue(cid, t.storage) == 3 then selfSay('Você trouxe meu {pertence} mais valioso? Se estiver com problemas na localização, diga {info}.', cid) talkState[talkUser] = 3 elseif getPlayerStorageValue(cid, t.storage) == 4 then selfSay('Você já me ajudou e sou muito grato por isso.', cid) end elseif msgcontains(msg, 'yes') then if talkState[talkUser] == 1 or talkState[talkUser] == 3 then if getPlayerStorageValue(cid, t.storage) <= 0 then selfSay('Certo, meu primeiro irmao vive em uma cidade onde habitam todos os tipos de orcs, porem ele vive fora dessa cidade, em uma casa na beira da areia, busque meu pertence e eu lhe informo o proximo passo, mas cuidado, ele tem uma Hydra como animal de estimacao, nao tente enganar-lo.', cid) setPlayerStorageValue(cid, t.storage, 1) talkState[talkUser] = 0 elseif getPlayerStorageValue(cid, t.storage) == 1 then if doPlayerRemoveItem(cid, t.items[1], 1) then selfSay('Certo, muito obrigado. O meu proximo pertence esta com meu irmao Phill, ele habita nos montes mais gelados desse mundo, perto dos barbaros, dizem que as vezes Ghazbaran aparece por la, pegue meu item e traga de volta, mas cuidado, ele tem um Frost Dragon como animal de estimacao, nao tente enganar-lo.', cid) doSendMagicEffect(getPlayerPosition(cid), CONST_ME_MAGIC_BLUE) setPlayerStorageValue(cid, t.storage, 2) talkState[talkUser] = 0 else selfSay('Está tentando me enganar?', cid) talkState[talkUser] = 0 end elseif getPlayerStorageValue(cid, t.storage) == 2 then if doPlayerRemoveItem(cid, t.items[2], 1) then selfSay('Certo, muito obrigado. O meu pertence mais valioso esta com meu irmao Ryck, ele vive nas montanhas do deserto, que fica entre o deserto e a selva, vive em uma caverna, traga meu ultimo pertence e eu te dou acesso a quest mais valiosa desse mundo como recompensa, ele tem um Dragon como animal de estimacao, nao tente enganar-lo.', cid) doSendMagicEffect(getPlayerPosition(cid), CONST_ME_MAGIC_BLUE) setPlayerStorageValue(cid, t.storage, 3) talkState[talkUser] = 0 else selfSay('Onde está meu item?', cid) talkState[talkUser] = 0 end elseif getPlayerStorageValue(cid, t.storage) == 3 then if doPlayerRemoveItem(cid, t.items[3], 1) then selfSay('Certo, pegue sua recompensa atras da porta, e entre na quest, a partir de agora e com voce, boa sorte.', cid) doSendMagicEffect(getPlayerPosition(cid), CONST_ME_MAGIC_BLUE) setPlayerStorageValue(cid, t.storage, 4) talkState[talkUser] = 0 else selfSay('Você não está com meu item!', cid) talkState[talkUser] = 0 end end end elseif msgcontains(msg, 'recolher') then if talkState[talkUser] == 1 then if getPlayerStorageValue(cid, t.storage) == 0 then selfSay('Certo, meu primeiro irmao vive em uma cidade onde habitam todos os tipos de orcs, porem ele vive fora dessa cidade, em uma casa na beira da areia, busque meu pertence e eu lhe informo o proximo passo, mas cuidado, ele tem uma Hydra como animal de estimacao, nao tente enganar-lo.', cid) setPlayerStorageValue(cid, t.storage, 1) talkState[talkUser] = 0 end end elseif msgcontains(msg, 'pertence') then if talkState[talkUser] == 1 then if getPlayerStorageValue(cid, t.storage) == 1 then if doPlayerRemoveItem(cid, t.items[1], 1) then selfSay('Certo, muito obrigado. O meu proximo pertence esta com meu irmao Phill, ele habita nos montes mais gelados desse mundo, perto dos barbaros, dizem que as vezes Ghazbaran aparece por la, pegue meu item e traga de volta, mas cuidado, ele tem um Frost Dragon como animal de estimacao, nao tente enganar-lo.', cid) doSendMagicEffect(getPlayerPosition(cid), CONST_ME_MAGIC_BLUE) setPlayerStorageValue(cid, t.storage, 2) talkState[talkUser] = 0 else selfSay('Está tentando me enganar?', cid) talkState[talkUser] = 0 end end elseif talkState[talkUser] == 3 then if getPlayerStorageValue(cid, t.storage) == 3 then if doPlayerRemoveItem(cid, t.items[3], 1) then selfSay('Certo, pegue sua recompensa atras da porta, e entre na quest, a partir de agora e com voce, boa sorte.', cid) doSendMagicEffect(getPlayerPosition(cid), CONST_ME_MAGIC_BLUE) setPlayerStorageValue(cid, t.storage, 4) talkState[talkUser] = 0 else selfSay('Você não está com meu item!', cid) talkState[talkUser] = 0 end end end elseif msgcontains(msg, 'item') then if talkState[talkUser] == 1 then if getPlayerStorageValue(cid, t.storage) == 2 then if doPlayerRemoveItem(cid, t.items[2], 1) then selfSay('Certo, muito obrigado. O meu pertence mais valioso esta com meu irmao Ryck, ele vive nas montanhas do deserto, que fica entre o deserto e a selva, vive em uma caverna, traga meu ultimo pertence e eu te dou acesso a quest mais valiosa desse mundo como recompensa, ele tem um Dragon como animal de estimacao, nao tente enganar-lo.', cid) doSendMagicEffect(getPlayerPosition(cid), CONST_ME_MAGIC_BLUE) setPlayerStorageValue(cid, t.storage, 3) talkState[talkUser] = 0 else selfSay('Onde está meu item?', cid) talkState[talkUser] = 0 end end end elseif msgcontains(msg, 'info') then if getPlayerStorageValue(cid, t.storage) == 1 then selfSay('Meu primeiro irmão vive ao lado de uma cidade onde habitam todos os tipos de orcs, em uma casa na beira do mar.', cid) elseif getPlayerStorageValue(cid, t.storage) == 2 then selfSay('Meu irmão Phill habita nos montes mais gelados desse mundo, perto dos barbaros.', cid) elseif getPlayerStorageValue(cid, t.storage) == 3 then selfSay('Meu irmão Ryck vive em uma cabana nas montanhas do deserto, que fica entre o deserto e a selva.', cid) end end end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) Em "Data/npc", nome_do_npc.xml: <?xml version="1.0" encoding="UTF-8"?> <npc name="nome_do_npc" script="data/npc/scripts/nome_do_arquivo.lua" walkinterval="5000" floorchange="0"> <health now="100" max="100"/> <look type="128" head="100" body="100" legs="114" feet="114" addons="2"/> <parameters> <parameter key="message_greet" value="Ola |PLAYERNAME|!" /> </parameters> </npc> Adicionei também um "info", ele diz a posição de cada irmão apartir da storage do jogador, se estiver na missão 2, diz a posição do irmão 2, se estiver na 1, a do irmão 1... Se der algum problema me avise, espero que goste . ➥ Regras | Seções OTServ | Seções BOT
Postado Setembro 16, 2015 9 anos Autor Em "Data/npc/scripts", nome_do_arquivo.lua: local t = { storage = 34341, -- Storage utilizada na quest, para dar acessos depois de completar esta missao, use esta storage. items = {2160, 2161, 2162} -- Pertence 1, pertence 2, pertence valioso. } 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 msg = msg:lower(); local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid if msgcontains(msg, 'missao') then if getPlayerStorageValue(cid, t.storage) <= 0 then selfSay('Certo, vou precisar da sua ajuda, meus irmaos estao com alguns de meus pertences, você poderia {recolher} eles de volta para mim?', cid) talkState[talkUser] = 1 elseif getPlayerStorageValue(cid, t.storage) == 1 then selfSay('Conseguiu recuperar o primeiro {pertence}? Se estiver com problemas na localização, diga {info}.', cid) talkState[talkUser] = 1 elseif getPlayerStorageValue(cid, t.storage) == 2 then selfSay('Você recolheu meu {item}? Se estiver com problemas na localização, diga {info}.', cid) talkState[talkUser] = 1 elseif getPlayerStorageValue(cid, t.storage) == 3 then selfSay('Você trouxe meu {pertence} mais valioso? Se estiver com problemas na localização, diga {info}.', cid) talkState[talkUser] = 3 elseif getPlayerStorageValue(cid, t.storage) == 4 then selfSay('Você já me ajudou e sou muito grato por isso.', cid) end elseif msgcontains(msg, 'recolher') or msgcontains(msg, 'yes') then if talkState[talkUser] == 1 then if getPlayerStorageValue(cid, t.storage) == 0 then selfSay('Certo, meu primeiro irmao vive em uma cidade onde habitam todos os tipos de orcs, porem ele vive fora dessa cidade, em uma casa na beira da areia, busque meu pertence e eu lhe informo o proximo passo, mas cuidado, ele tem uma Hydra como animal de estimacao, nao tente enganar-lo.', cid) setPlayerStorageValue(cid, t.storage, 1) talkState[talkUser] = 0 end end elseif msgcontains(msg, 'pertence') then if talkState[talkUser] == 1 then if getPlayerStorageValue(cid, t.storage) == 1 then if doPlayerRemoveItem(cid, t.items[1], 1) then selfSay('Certo, muito obrigado. O meu proximo pertence esta com meu irmao Phill, ele habita nos montes mais gelados desse mundo, perto dos barbaros, dizem que as vezes Ghazbaran aparece por la, pegue meu item e traga de volta, mas cuidado, ele tem um Frost Dragon como animal de estimacao, nao tente enganar-lo.', cid) doSendMagicEffect(getPlayerPosition(cid), CONST_ME_MAGIC_BLUE) setPlayerStorageValue(cid, t.storage, 2) talkState[talkUser] = 0 else selfSay('Está tentando me enganar?', cid) talkState[talkUser] = 0 end end elseif talkState[talkUser] == 3 then if getPlayerStorageValue(cid, t.storage) == 3 then if doPlayerRemoveItem(cid, t.items[3], 1) then selfSay('Certo, pegue sua recompensa atras da porta, e entre na quest, a partir de agora e com voce, boa sorte.', cid) doSendMagicEffect(getPlayerPosition(cid), CONST_ME_MAGIC_BLUE) setPlayerStorageValue(cid, t.storage, 4) talkState[talkUser] = 0 else selfSay('Você não está com meu item!', cid) talkState[talkUser] = 0 end end end elseif msgcontains(msg, 'item') then if talkState[talkUser] == 1 then if getPlayerStorageValue(cid, t.storage) == 2 then if doPlayerRemoveItem(cid, t.items[2], 1) then selfSay('Certo, muito obrigado. O meu pertence mais valioso esta com meu irmao Ryck, ele vive nas montanhas do deserto, que fica entre o deserto e a selva, vive em uma caverna, traga meu ultimo pertence e eu te dou acesso a quest mais valiosa desse mundo como recompensa, ele tem um Dragon como animal de estimacao, nao tente enganar-lo.', cid) doSendMagicEffect(getPlayerPosition(cid), CONST_ME_MAGIC_BLUE) setPlayerStorageValue(cid, t.storage, 3) talkState[talkUser] = 0 else selfSay('Onde está meu item?', cid) talkState[talkUser] = 0 end end end elseif msgcontains(msg, 'info') then if getPlayerStorageValue(cid, t.storage) == 1 then selfSay('Meu primeiro irmão vive ao lado de uma cidade onde habitam todos os tipos de orcs, em uma casa na beira do mar.', cid) elseif getPlayerStorageValue(cid, t.storage) == 2 then selfSay('Meu irmão Phill habita nos montes mais gelados desse mundo, perto dos barbaros.', cid) elseif getPlayerStorageValue(cid, t.storage) == 3 then selfSay('Meu irmão Ryck vive em uma cabana nas montanhas do deserto, que fica entre o deserto e a selva.', cid) end end end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) Em "Data/npc", nome_do_npc.xml: <?xml version="1.0" encoding="UTF-8"?> <npc name="nome_do_npc" script="data/npc/scripts/nome_do_arquivo.lua" walkinterval="5000" floorchange="0"> <health now="100" max="100"/> <look type="128" head="100" body="100" legs="114" feet="114" addons="2"/> <parameters> <parameter key="message_greet" value="Ola |PLAYERNAME|!" /> </parameters> </npc> Adicionei também um "info", ele diz a posição de cada irmão apartir da storage do jogador, se estiver na missão 2, diz a posição do irmão 2, se estiver na 1, a do irmão 1... Se der algum problema me avise, espero que goste . maninho, depois que eu falo "recolher", ele não responde mais nada.
Postado Setembro 16, 2015 9 anos O diálogo segue pelas palavras escuras, mas, alterei o script acima para conseguir diálogar com apenas missao/yes. ➥ Regras | Seções OTServ | Seções BOT
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.