Postado Dezembro 16, 2017 7 anos Autor 5 minutes ago, Dwarfer said: Fiz de uma forma simplificada para vocês. Em npcs/scripts crie um arquivo.lua: Hide contents 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 local npcOrder = 1 -- edite a ordem do npc local t = { [1] = {keyword = "kazordoon", text = "Bela cidade construída pelos seres mais fortes, os dwarfs."}, -- palavra-chave, texto [2] = {keyword = "mushroom", text = "Comida típica dos dwarfs. A propósito, você não teria algum para mim?"} } function creatureSayCallback(cid, type, msg) local talkUser, msg = NPCHANDLER_CONVbehavior == CONVERSATION_DEFAULT and 0 or cid, string.lower(msg) if(not npcHandler:isFocused(cid)) then if isInArray({"hi", "hello"}, msg) then if (getPlayerStorageValue(cid, 96772) == -1 and npcOrder == 1) or getPlayerStorageValue(cid, 96772) == npcOrder then npcHandler:addFocus(cid) npcHandler:say("Olá, "..getPlayerName(cid).."! Você tem algo a me dizer?", cid) talkState[talkUser] = 1 else npcHandler:addFocus(cid) npcHandler:say("Olá, "..getPlayerName(cid).."! Talvez possamos conversar outra hora...", cid) talkState[talkUser] = 0 npcHandler:releaseFocus(cid) end else return false end elseif t[talkState[talkUser]] and msgcontains(msg, t[talkState[talkUser]].keyword) then npcHandler:say(t[talkState[talkUser]].text, cid) if talkState[talkUser] == #t then setPlayerStorageValue(cid, 96772, npcOrder + 1) talkState[talkUser] = 0 else talkState[talkUser] = talkState[talkUser] + 1 end elseif msgcontains(msg, "bye") then npcHandler:say("Bye.", cid) talkState[talkUser] = 0 npcHandler:releaseFocus(cid) else npcHandler:say("WHAT?", cid) talkState[talkUser] = 0 end return true end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) Como arquivo.xml base você pode utilizar esse, faça as mudanças que desejar. <?xml version="1.0" encoding="UTF-8"?> <npc name="Dwarfer" script="NOMEDOSEUARQUIVO.lua" walkinterval="2000" floorchange="0"> <health now="100" max="100"/> <look type="66"/> </npc> Para os outros npcs é só copiar a mesma coisa, mudar a ordem do npc em npcOrder para (2, 3, 4...), além das palavras-chave e dos textos enviados ao player. se alguem falar a palavra incorreta , o npc fala bye ou algo parecido , correto ?: Editado Dezembro 16, 2017 7 anos por Fernandooww (veja o histórico de edições)
Postado Dezembro 16, 2017 7 anos Agora, Fernandooww disse: se alguem falar a palavra incorreta , o npc nao diz nada correto ? Teste antes de perguntar, cara. pqp também einh.. Contato: Email: [email protected] Discord: Dwarfer#2715
Postado Dezembro 16, 2017 7 anos Autor 1 hour ago, Dwarfer said: Teste antes de perguntar, cara. pqp também einh.. Ficou show vlw. Mas agora , como eu faço o segundo npc ? quero dizer ... dps que vc fala com esse voce pode ir falar com o segundo npc mas como montro esse 2 npc ? obs: se puder fazer com q o npc me teleporte para o lugar X Y Z dps de falar a keyword certa , seria perfeito.
Postado Dezembro 16, 2017 7 anos @Fernandooww Mano em npc order coloca um numero a mais do que o npc anterior e em posquest coloca o lugar onde sera teleportado no 4 npc 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 local npcOrder = 1 -- edite a ordem do npc local posquest = {x = 1127, y = 1048, z = 10} --pos para ser teleportado local npctelep = 4 -- quando o npcorder for 4 o player sera teleportado local t = { [1] = {keyword = "kazordoon", text = "Bela cidade construída pelos seres mais fortes, os dwarfs."}, -- palavra-chave, texto [2] = {keyword = "mushroom", text = "Comida típica dos dwarfs. A propósito, você não teria algum para mim?"} } function creatureSayCallback(cid, type, msg) local talkUser, msg = NPCHANDLER_CONVbehavior == CONVERSATION_DEFAULT and 0 or cid, string.lower(msg) if(not npcHandler:isFocused(cid)) then if isInArray({"hi", "hello"}, msg) then if (getPlayerStorageValue(cid, 96772) == -1 and npcOrder == 1) or getPlayerStorageValue(cid, 96772) == npcOrder then npcHandler:addFocus(cid) npcHandler:say("Olá, "..getPlayerName(cid).."! Você tem algo a me dizer?", cid) talkState[talkUser] = 1 else npcHandler:addFocus(cid) npcHandler:say("Olá, "..getPlayerName(cid).."! Talvez possamos conversar outra hora...", cid) talkState[talkUser] = 0 npcHandler:releaseFocus(cid) end else return false end elseif t[talkState[talkUser]] and msgcontains(msg, t[talkState[talkUser]].keyword) then npcHandler:say(t[talkState[talkUser]].text, cid) if talkState[talkUser] == #t then setPlayerStorageValue(cid, 96772, npcOrder + 1) talkState[talkUser] = 0 if getPlayerStorageValue(cid, 96772) == npctelep then doTeleportThing(cid, posquest) end else talkState[talkUser] = talkState[talkUser] + 1 end elseif msgcontains(msg, "bye") then npcHandler:say("Bye.", cid) talkState[talkUser] = 0 npcHandler:releaseFocus(cid) else npcHandler:say("WHAT?", cid) talkState[talkUser] = 0 end return true end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) Ajudei? REP+ Meus Servers: PokeUnwind Em Breve Rust Tibia Fechado Tópicos: [Tutorial] Adicionando Pokemons com icon system [Solução] ElfBot não abre corpos Projetos: DigiTibia Fechado Rust Tibia Fechado(temporariamente!)
Postado Dezembro 16, 2017 7 anos 7 horas atrás, Fernandooww disse: Ficou show vlw. Mas agora , como eu faço o segundo npc ? quero dizer ... dps que vc fala com esse voce pode ir falar com o segundo npc mas como montro esse 2 npc ? 8 horas atrás, Dwarfer disse: Para os outros npcs é só copiar a mesma coisa, mudar a ordem do npc em npcOrder para (2, 3, 4...), além das palavras-chave e dos textos enviados ao player. Contato: Email: [email protected] Discord: Dwarfer#2715
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.