Ir para conteúdo

Featured Replies

Postado
  • 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 por Fernandooww (veja o histórico de edições)

  • Respostas 10
  • Visualizações 1.8k
  • Created
  • Última resposta

Top Posters In This Topic

Most Popular Posts

  • Fiz de uma forma simplificada para vocês. Em npcs/scripts crie um arquivo.lua:     Como arquivo.xml base você pode utilizar esse, faça as mudanças que desejar.   <?xml ver

Postado
  • 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

@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
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:

 

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.

Visitante
Responder

Quem Está Navegando 0

  • Nenhum usuário registrado visualizando esta página.

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 519.6k

Informação Importante

Confirmação de Termo