MUTAN0 1 Postado Janeiro 15, 2009 Share Postado Janeiro 15, 2009 (editado) Ae, como vai? Eu fiz uma quest que usa 2 NPCs, porem eles não funcionaram como eu queria :neutral: Primeiro vou explicar como é para funcionar: O player Chega em uma velha bruxa... PLAYER: Hi BRUXA [npc]: Hmm...Hello PLAYER. I am the most powerful magician in the region. But I have no time for you, I'm busy. PLAYER:book of magic BRUXA [npc]:My book of magic? I lost it for the vampires of Venore. Plan a way to handle it these worms. *Adiciona o Storage 8569 no player. Então o PLAYER vai até os vampires, e fala com um NPC Vampire para pedir o 'livro de magias' da velha bruxa... PLAYER:Hi VAMPIRE [npc]: Hi PLAYER. It is best that has disturbed me for good reason ... Well I'm very thirst for blood. PLAYER:book of magic *O NPC vê se o player já conversou com a bruxa sobre o livro, olhando se ele tem o Storage 8569. (caso tenha o Storage 8569) VAMPIRE [npc]: The book that old witch? It may take, we can not understand a word that old. *Dá o item 6120 (livro) ao player. (caso não tenha o storage 8569) VAMPIRE [npc]: I do not know of any book, its useless. Get out of my home immediately. Depois de conseguir o livro com o Vampire, o PLAYER volta á velha bruxa, para devolver o livro; PLAYER:Hi BRUXA [npc]: Hmm...Hello PLAYER. I am the most powerful magician in the region. But I have no time for you, I'm busy. PLAYER:book of magic *A bruxa confere se o livro que o vampire deu, está com o player. BRUXA [npc]: I see you got my book of magic. Take this gift in exchange for their help. Thanks..Hmm..PLAYER that your name, right? *Remove o livro (6120) *Dá uma recompensa, que no caso é uma crown armor (2487) ------------------ Bom, agora os scripts: Bruxa; local keywordHandler = KeywordHandler:new()local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) 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 npcHandler:setMessage(MESSAGE_GREET, "Hmm...Hello |PLAYERNAME|. I am the most powerful magician in the region. But I have no time for you, I'm busy.") if msgcontains(msg, 'book of magic') then getPlayerItemCount(cid, 6120) selfSay('I see you got my book of magic. Take this gift in exchange for their help. Thanks..Hmm..|PLAYERNAME|, that your name, right?', cid) doPlayerRemoveItem(cid, 6120, 1) doPlayerAddItem(uid, 2487, 1) end else selfSay('My book of magic? I lost it for the vampires of Venore. Plan a way to handle it these worms.', cid) setPlayerStorageValue(cid,8569) end talkState[talkUser] = 0 npcHandler:addModule(FocusModule:new()) Vampire NPC; local keywordHandler = KeywordHandler:new()local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) 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 npcHandler:setMessage(MESSAGE_GREET, "Hi |PLAYERNAME|. It is best that has disturbed me for good reason ... Well I'm very thirst for blood.") if msgcontains(msg, 'book of magic') then getPlayerStorageValue(cid,8569) selfSay('The book that old witch? It may take, we can not understand a word that old.', cid) doPlayerAddItem(cid, 6120, 1) end else selfSay('I do not know of any book, its useless. Get out of my home immediately.', cid) end talkState[talkUser] = 0 npcHandler:addModule(FocusModule:new()) Pedido~ Uma coisa que eu queria, que se possivel quem concertar o NPC já fizesse pra mim, é que o Vampire [NPC] desse um outro storage ao player, para que ele não pegasse o livro mais de uma vez. Então se o player já tivesse pego o livro uma vez, ele diria: VAMPIRE [npc]: Darkness ... Are you crazy? I already gave you the damn book. Obrigado. Estarei voltando para ver as respostas. Espero sua ajuda. Cya~ Editado Janeiro 15, 2009 por MUTAN0 Link para o comentário https://xtibia.com/forum/topic/105100-npcs-de-quest-usando-storage/ Compartilhar em outros sites More sharing options...
brainless 0 Postado Janeiro 16, 2009 Share Postado Janeiro 16, 2009 (editado) Ae, como vai? Eu fiz uma quest que usa 2 NPCs, porem eles não funcionaram como eu queria :neutral: Primeiro vou explicar como é para funcionar: O player Chega em uma velha bruxa...PLAYER: HiBRUXA [npc]: Hmm...Hello PLAYER. I am the most powerful magician in the region. But I have no time for you, I'm busy.PLAYER:book of magicBRUXA [npc]:My book of magic? I lost it for the vampires of Venore. Plan a way to handle it these worms*Adiciona o Storage 8569 no player.Então o PLAYER vai até os vampires, e fala com um NPC Vampire para pedir o 'livro de magias' da velha bruxa...PLAYER:HiVAMPIRE [npc]: Hi PLAYER. It is best that has disturbed me for good reason ... Well I'm very thirst for blood.PLAYER:book of magic*O NPC vê se o player já conversou com a bruxa sobre o livro, olhando se ele tem o Storage 8569. (caso tenha o Storage 8569) VAMPIRE [npc]: The book that old witch? It may take, we can not understand a word that old.*Dá o item 6120 (livro) ao player.(caso não tenha o storage 8569) VAMPIRE [npc]: I do not know of any book, its useless. Get out of my home immediately.Depois de conseguir o livro com o Vampire, o PLAYER volta á velha bruxa, para devolver o livro;PLAYER:HiBRUXA [npc]: Hmm...Hello PLAYER. I am the most powerful magician in the region. But I have no time for you, I'm busy.PLAYER:book of magic*A bruxa confere se o livro que o vampire deu, está com o player.BRUXA [npc]: I see you got my book of magic. Take this gift in exchange for their help. Thanks..Hmm..PLAYER that your name, right?*Remove o livro (6120)*Dá uma recompensa, que no caso é uma crown armor (2487)------------------Bom, agora os scripts:Bruxa;Vampire NPC; Pedido~Uma coisa que eu queria, que se possivel quem concertar o NPC já fizesse pra mim, é que o Vampire [NPC] desse um outro storage ao player, para que ele não pegasse o livro mais de uma vez.Então se o player já tivesse pego o livro uma vez, ele diria:VAMPIRE [npc]: Darkness ... Are you crazy? I already gave you the damn book.Obrigado. Estarei voltando para ver as respostas.Espero sua ajuda.Cya~ Gostaria de pedir que os revisores de script dessem uma olhada no script do . Não consigo fazer uma resposta sem o texto inteiro sair como citação. Grato pela atençãoHmm quest bem boladíssima, parabéns. Posso dar uma sugestão antes de tudo? Faça as falas em português =). Você rala o ano inteiro pra passar de ano na escola aprendendo gramática, redação e literatura, pra depois fazer um OTServ com falas em inglês??agora vamos ao que interessa =)bruxalocal keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) 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 local msgs = { "Olá, |PLAYERNAME|! Eu sou a bruxa mais poderosa da região. Mas eu não tenho tempo para você, estou ocupada!", "Meu livro mágico? Os vampiros de venore me roubaram! Mas já estou planejando uma maneira de tomá-lo de volta daqueles vermes.", "Vejo que recuperou meu livro mágico! Tome este presente como gratificação. Obrigado, |PLAYERNAME|. Este é seu nome, certo?", "Muito obrigada por ter recuperado meu livro!", "Disse que recuperou meu livro, mas onde ele está? Está tentando me roubar? Saia da minha frente!!", "Parece que meu presente é muito pesado para você. Por favor, volte quando puder carregá-lo." } -- reuni todas as falas do npc em um só lugar, se vc insistir em utilizar em inglês, fica mais fácil trocar npcHandler:setMessage(MESSAGE_GREET, msgs[1]) if msgcontains(msg, 'book of magic') then if getPlayerStorageValue(cid, 8569) == -1 then -- nunca falou com a bruxa selfSay(msgs[2], cid) setPlayerStorageValue(cid,8569, 1) elseif getPlayerStorageValue(cid, 8569) == 3 then -- bruxa já entregou a recompensa selfSay(msgs[4],cid) elseif getPlayerStorageValue(cid, 8569) == 2 then -- falou com o vampiro if getPlayerItemCount(cid, 6120) then if getPlayerFreeCap + getItemWeight(6120, 1) >= getItemWheight(2487,1) then selfSay(msgs[3], cid) doPlayerRemoveItem(cid, 6120, 1) doPlayerAddItem(uid, 2487, 1) setPlayerStorageValue(cid, 8569, 3) else selfSay(msgs[6], cid) -- não aguenta a armor, não define a storage para poder buscar outra hr end else selfSay(msgs[5], cid) -- livro não está na mochila, mas já falou com o vampiro end end end talkState[talkUser] = 0 npcHandler:addModule(FocusModule:new()) vampiro: local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) 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 local msgs = { "Oi, |PLAYERNAME|. É melhor que tenha me perturbado por uma boa razão, pois estou sedento de sangue.", "O livro daquela bruxa velha? Pode levar, nós não conseguimos entender uma escrita tão antiga", "Não sei de que livro está falando. Saia da minha frente imediatamente!", "Você está louco??? Eu já te dei o maldito livro!" "Não posso lhe entregar algo que não aguenta carregar!" } -- reuni todas as falas do npc em um só lugar, se vc insistir em utilizar em inglês, fica mais fácil trocar npcHandler:setMessage(MESSAGE_GREET, msgs[1]) if msgcontains(msg, 'book of magic') then if getPlayerStorageValue(cid,8569) == 1 then -- storage1 a bruxa define quando se fala do livro if getPlayerFreeCap(cid) < getItemWeight(6120,1) then selfSay(msgs[5], cid) -- não entrega o livro, e não define a storage value else selfSay(msgs[2], cid) doPlayerAddItem(cid, 6120, 1) setPlayerStorageValue(cid, 8569, 2) -- proteção para evitar que se peguem vários livros end elseif getPlayerStorageValue(cid, 8569) >= 2 then -- o script q vc pediu para que ele não dê mais de um livro selfSay(msgs[4], cid) else SelfSay(msgs[3], cid) -- fala do vampiro se não tiver falado com a bruxa ainda end end talkState[talkUser] = 0 npcHandler:addModule(FocusModule:new()) como boa parte dos scripters fazem, desenvolvi o script no campo de resposta e não testei. qualquer erro ou dúvida estamos aqui Editado Janeiro 16, 2009 por brainless Link para o comentário https://xtibia.com/forum/topic/105100-npcs-de-quest-usando-storage/#findComment-676726 Compartilhar em outros sites More sharing options...
noobinhu 38 Postado Janeiro 16, 2009 Share Postado Janeiro 16, 2009 Existe a function tanto para retornar quanto o livro pesa, quanto para saber o cap do player. local playerCap = getPlayerFreeCap(cid) local item = 2393 --Giant Sword local itemweight = getItemWeight(item, 1) if playerCap >= itemweight then doPlayerSendTextMessage(cid,22,'You have found a giant sword.') doPlayerAddItem(cid,item,1) else doPlayerSendTextMessage(cid, 22, 'You have found a giant sword weighing ' ..itemweight.. ' oz it\'s too heavy.') end Retirado de docs/LUA_FUNCTIONS do distro TFS 0.2.14. Link para o comentário https://xtibia.com/forum/topic/105100-npcs-de-quest-usando-storage/#findComment-676753 Compartilhar em outros sites More sharing options...
brainless 0 Postado Janeiro 16, 2009 Share Postado Janeiro 16, 2009 Existe a function tanto para retornar quanto o livro pesa, quanto para saber o cap do player. Retirado de docs/LUA_FUNCTIONS do distro TFS 0.2.14. graannnde noobinhu =) coincidentemente eu acabei de achar o tutorial do tibiaa4e sobre functions ahuahuahuahuahuahu editei as linhas no código Link para o comentário https://xtibia.com/forum/topic/105100-npcs-de-quest-usando-storage/#findComment-676761 Compartilhar em outros sites More sharing options...
MUTAN0 1 Postado Janeiro 16, 2009 Autor Share Postado Janeiro 16, 2009 (editado) @Brainless: Ficou bom mesmo, e realmente eu optei a deixar meu ingles de lado e fazer em portugues. hehe Peguei os scripts que você deixou, vou testar e já volto pra dizer se funcionou ou não. Obrigado á todos. ----- Deu uns erros, sim. Mas eu não entendi o pq dos erros Imagem do erro: Obs.: A versão do meu Server é 8.31, TFS V0.3 - Alpha 4. Espero que você saiba o que deu Valeu. Editado Janeiro 16, 2009 por MUTAN0 Link para o comentário https://xtibia.com/forum/topic/105100-npcs-de-quest-usando-storage/#findComment-676827 Compartilhar em outros sites More sharing options...
brainless 0 Postado Janeiro 16, 2009 Share Postado Janeiro 16, 2009 (editado) @Brainless:Ficou bom mesmo, e realmente eu optei a deixar meu ingles de lado e fazer em portugues. hehePeguei os scripts que você deixou, vou testar e já volto pra dizer se funcionou ou não.Obrigado á todos.-----Deu uns erros, sim. Mas eu não entendi o pq dos erros Imagem do erro:Obs.: A versão do meu Server é 8.31, TFS V0.3 - Alpha 4.Espero que você saiba o que deu Valeu. nas falas, eu criei uma array... { }verifique se após a última fala dos dois npc's existe o caractere }"não posso lhe entregar, você não pode carregar" } no script, eu tinha colocado na linha debaixo, seguido do comentário -- se vc desejar trocar para ingles etcEDIT 14:12se a acentuação nos npc's não aparecer corretamente, salve os arquivos.lua como UNICODE como na imagem abaixo Editado Janeiro 16, 2009 por brainless Link para o comentário https://xtibia.com/forum/topic/105100-npcs-de-quest-usando-storage/#findComment-676870 Compartilhar em outros sites More sharing options...
MUTAN0 1 Postado Janeiro 16, 2009 Autor Share Postado Janeiro 16, 2009 (editado) @Brainless: Ta valendo muito a sua ajuda, mas apareceu outro erro que até tentei concertar sozinho, mas não achei o problema. Parece um simbolo inesperado, ou alguma coisa assim, ele acusa um sibolo assim --> ' ' Mas para você mesmo ver, ai está: Deve ser um ultimo erro, um erro bobo talvez., mas que não deixa os NPCs carregarem. Obs.: Após o concerto, postarei os NPCs aqui no forum, e estarei colocando seus créditos junto, e de quem ainda vir a ajudar no erro. Valeu... :smile_positivo: Editado Janeiro 16, 2009 por MUTAN0 Link para o comentário https://xtibia.com/forum/topic/105100-npcs-de-quest-usando-storage/#findComment-677264 Compartilhar em outros sites More sharing options...
Heitorzin 2 Postado Janeiro 19, 2009 Share Postado Janeiro 19, 2009 Tópico fechado, O autor do tópico pediu. Abraços. Link para o comentário https://xtibia.com/forum/topic/105100-npcs-de-quest-usando-storage/#findComment-678910 Compartilhar em outros sites More sharing options...
Posts Recomendados