GA
pedido

NPC que só fala com certa vocation.

Por gabriel28, 25 de jan. de 2016 em Scripts

resolvido
script
26
3.1k
gabriel28G
25 de janeiro de 2016 às 19:49

Gostaria de um NPC que só falasse com certa vocation (que pudesse ser configurado para eu poder adaptar pra outras). O NPC seria um de conversa. Quando o player não tivesse a vocação certa pra falar com ele, ele diria, ex: "Não falo com Sorcerers". Se desse pra colocar uma verificação de vocação pra essa fala condizer com a vocação do player, ficando: "Não falo com Druids"; "Não falo com Paladins"; etc..., agradeceria. A conversa podem por qualquer coisa que eu mudo depois. Uso TFS 0.4 rev 3884.

Agradeço desde já.

Editado Janeiro 25 por gabrielvs

DanihcvD
25 de janeiro de 2016 às 20:05

A parte para o npc dizer que não fala com determinada vocação eu entendi. Mas poderia explicar mais detalhadamente como ocorreria um diálogo do npc com um player com vocação aceitavel?

Tipo, demonstre um diálogo com pelo menos mais de 2 respostas que o npc daria à 2 falas-gatilho do player, etc.

gabriel28G
26 de janeiro de 2016 às 11:32

A parte para o npc dizer que não fala com determinada vocação eu entendi. Mas poderia explicar mais detalhadamente como ocorreria um diálogo do npc com um player com vocação aceitavel?

 

Tipo, demonstre um diálogo com pelo menos mais de 2 respostas que o npc daria à 2 falas-gatilho do player, etc.

 

Você poderia por qualquer coisa que eu alteraria depois. hahaha

Mas sendo assim:

Player: Hi

NPC: Olá, |PLAYER NAME|. Sobre o que você quer saber? Sobre a {mysterious island} ou sobre a {second promotion}?

Player: mysterious island

NPC: É uma ilha que antigos diziam ficar ao sudoeste de Carlin. Há um teleport que dizem aparecer nos pântanos de Venore, talvez, ele leve a essa ilha.

Player: second promotion

NPC: Há um NPC que vem de muito longe e fica a caminhas pelos campos de Thais, dizem que ele pode dar a segunda vocação para os aventureiros.

up

DanihcvD
26 de janeiro de 2016 às 18:09

Vá em data\npc e crie um arquivo chamado npctalk.xml e coloque isso dentro:

*é nesse script q vc coloca a mensagem de saudação:

<?xml version="1.0"?>
<npc name="NpcX" script="data/npc/scripts/npctalk.lua" walkinterval="0">
	<health now="100" max="100"/>
	<look typeex="1448"/>
	<parameter key="message_greet" value="Olá, |PLAYER NAME|. Sobre o que você quer saber? Sobre a {mysterious island} ou sobre a {second promotion}?"/>
</npc>

Agora vá em data\npc\scripts e crie um arquivo chamado npctalk.lua e coloque isso dentro:

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

--------------------------
----PARTE CONFIGURAVEL----
--------------------------
local msgs = {
["mysterious island"] = "É uma ilha que antigos diziam ficar ao sudoeste de Carlin. Há um teleport que dizem aparecer nos pântanos de Venore, talvez, ele leve a essa ilha.",
["second promotion"] = "Há um NPC que vem de muito longe e fica a caminhas pelos campos de Thais, dizem que ele pode dar a segunda vocação para os aventureiros.",
}
-----------------------------
--FIM DA PARTE CONFIGURAVEL--
-----------------------------

function creatureSayCallback(cid, type, msg)
for k, v in pairs(msgs) do
	if msgcontains(msg, v) then
	npcHandler:say(msg[v], cid)
	end
end
return true
end

npcHandler:setCallback(CALLBACK_GREET, greetCallback)
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())

É nessa parte do script q vc configura o [gatilho] e a mensagem de resposta do npc:

 

local msgs = {
["mysterious island"] = "É uma ilha que antigos diziam ficar ao sudoeste de Carlin. Há um teleport que dizem aparecer nos pântanos de Venore, talvez, ele leve a essa ilha.",
["second promotion"] = "Há um NPC que vem de muito longe e fica a caminhas pelos campos de Thais, dizem que ele pode dar a segunda vocação para os aventureiros.",
}

 

gabriel28G
26 de janeiro de 2016 às 22:35

Vá em data\npc e crie um arquivo chamado npctalk.xml e coloque isso dentro:

*é nesse script q vc coloca a mensagem de saudação:

<?xml version="1.0"?>
<npc name="NpcX" script="data/npc/scripts/npctalk.lua" walkinterval="0">
	<health now="100" max="100"/>
	<look typeex="1448"/>
	<parameter key="message_greet" value="Olá, |PLAYER NAME|. Sobre o que você quer saber? Sobre a {mysterious island} ou sobre a {second promotion}?"/>
</npc>

Agora vá em data\npc\scripts e crie um arquivo chamado npctalk.lua e coloque isso dentro:

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

--------------------------
----PARTE CONFIGURAVEL----
--------------------------
local msgs = {
["mysterious island"] = "É uma ilha que antigos diziam ficar ao sudoeste de Carlin. Há um teleport que dizem aparecer nos pântanos de Venore, talvez, ele leve a essa ilha.",
["second promotion"] = "Há um NPC que vem de muito longe e fica a caminhas pelos campos de Thais, dizem que ele pode dar a segunda vocação para os aventureiros.",
}
-----------------------------
--FIM DA PARTE CONFIGURAVEL--
-----------------------------

function creatureSayCallback(cid, type, msg)
for k, v in pairs(msgs) do
	if msgcontains(msg, v) then
	npcHandler:say(msg[v], cid)
	end
end
return true
end

npcHandler:setCallback(CALLBACK_GREET, greetCallback)
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())

É nessa parte do script q vc configura o [gatilho] e a mensagem de resposta do npc:

 

 

Não entendo de script, mas não to vendo a parte que fica o bloqueio de vocações.

26 de janeiro de 2016 às 23:35
Fazer um complementozinho aqui no script do Dani... É que ele não fez a checagem que você queria, de não falar pro player de tal voc.


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
 
--------------------------
----PARTE CONFIGURAVEL----
--------------------------
local msgs = {
["mysterious island"] = "É uma ilha que antigos diziam ficar ao sudoeste de Carlin. Há um teleport que dizem aparecer nos pântanos de Venore, talvez, ele leve a essa ilha.",
["second promotion"] = "Há um NPC que vem de muito longe e fica a caminhas pelos campos de Thais, dizem que ele pode dar a segunda vocação para os aventureiros.",
}
local voc = 3 -- Voc que ele irá falar.
-----------------------------
--FIM DA PARTE CONFIGURAVEL--
-----------------------------
 
function creatureSayCallback(cid, type, msg)
 
if getPlayerVocation(cid) == voc then
for k, v in pairs(msgs) do
    if msgcontains(msg, v) then
    npcHandler:say(msg[v], cid)
    end
end
else
return npcHandler:say("Não falo com "..getPlayerVocationName(cid).."s.", cid)
end 
return true
end
 
npcHandler:setCallback(CALLBACK_GREET, greetCallback)
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())


Editado Janeiro 26 por christopher17288

DanihcvD
27 de janeiro de 2016 às 00:01

@, putz, vdd. tinha esquecido que vc queria isso... shauhusa

 

Caso o do amigo acima ñ funcione, põe assim:

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

--------------------------
----PARTE CONFIGURAVEL----
--------------------------
local msgs = {
["mysterious island"] = "É uma ilha que antigos diziam ficar ao sudoeste de Carlin. Há um teleport que dizem aparecer nos pântanos de Venore, talvez, ele leve a essa ilha.",
["second promotion"] = "Há um NPC que vem de muito longe e fica a caminhas pelos campos de Thais, dizem que ele pode dar a segunda vocação para os aventureiros.",
}

local voc = 3
-----------------------------
--FIM DA PARTE CONFIGURAVEL--
-----------------------------

function creatureSayCallback(cid, type, msg)
if getPlayerVocation(cid) == voc then
	for k, v in pairs(msgs) do
		if msgcontains(msg, v) then
		npcHandler:say(msg[v], cid)
		end
	end
else
npcHandler:say('Eu não falo com '..getVocationInfo(getPlayerVocation(cid)).name..'s.', cid)
return true
end

npcHandler:setCallback(CALLBACK_GREET, greetCallback)
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())
gabriel28G
27 de janeiro de 2016 às 01:56

Nemhum dos dois está funcionando corretamente. Eu gostaria que a checagem fosse feita quando falasse 'Hi', mas só faz depois que o player faz alguma pergunta. Na checagem, ta indo bem. Quando é uma voc que não está liberada no script, ele diz direitinho que não fala com gente daquela vocação, mas quando é um da vocação configurada pra ele falar, ele não ignora mas também não reaponde as perguntas. Não da nenhum erro no console.

DanihcvD
27 de janeiro de 2016 às 02:15

Erro meu... Chamei a table errada. Agora deve estar como vc deseja:

npctalk.lua:

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

--------------------------
----PARTE CONFIGURAVEL----
--------------------------
local msgs = {
["mysterious island"] = "É uma ilha que antigos diziam ficar ao sudoeste de Carlin. Há um teleport que dizem aparecer nos pântanos de Venore, talvez, ele leve a essa ilha.",
["second promotion"] = "Há um NPC que vem de muito longe e fica a caminhas pelos campos de Thais, dizem que ele pode dar a segunda vocação para os aventureiros.",
}
local msgAccept = "Olá, |PLAYER NAME|. Sobre o que você quer saber? Sobre a {mysterious island} ou sobre a {second promotion}?"
local msgDenied = "Eu não falo com "..getVocationInfo(getPlayerVocation(cid)).name.."s."
local voc = 3
-----------------------------
--FIM DA PARTE CONFIGURAVEL--
-----------------------------

function greetCallback(cid)
	if getPlayerVocation(cid) == voc then
	npcHandler:say(msgAccept, cid)
	else
	npcHandler:say(msgDenied, cid)
	end
end

function creatureSayCallback(cid, type, msg)
	for k, v in pairs(msgs) do
		if msgcontains(msg, v) then
		npcHandler:say(msgs[v], cid)
		end
	end
return true
end

npcHandler:setCallback(CALLBACK_GREET, greetCallback)
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())

npctalk.xml:

<?xml version="1.0"?>
<npc name="NpcX" script="data/npc/scripts/NpcX.lua" walkinterval="0">
	<health now="100" max="100"/>
	<look typeex="1448"/>
</npc>

#OBS: amigo, se o meu script anterior não deu nenhum erro e vc não o alterou antes de testar, pf, garanta de que está fznd a instalação de forma correta, pois eu identifiquei um erro no meu script anterior: estava faltando um END. Não sei se vc havia percebido e então corrigiu, então.. Atenção aí. ^^

Editado Janeiro 27 por Danihcv

gabriel28G
27 de janeiro de 2016 às 02:41

Eu tinha percebido a falta do 'end' dai testei o seu mesclado com o outro. Kkkk

Agora tem três problemas:

Dando erro bo console;<internationalGetPlayerInfo> Player not found when requeating player info #6

 

Quando uma voc bloqueada fala 'Hi', ele não responde mais o nome da vocação, ele diz "Não falo com Nones", pra qualquer vocação que tentar.

 

Quando é a voc permitida, ele manda o Olá, |PLAYER NAME|; sem dizer o nome do player. Além disso, ele só manda a msg e continua caminhando, como se a conversa tivesse acabado.

Editado Janeiro 27 por gabrielvs

DanihcvD
27 de janeiro de 2016 às 16:31


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

 

--------------------------

----PARTE CONFIGURAVEL----

--------------------------

local msgs = {

["mysterious island"] = "É uma ilha que antigos diziam ficar ao sudoeste de Carlin. Há um teleport que dizem aparecer nos pântanos de Venore, talvez, ele leve a essa ilha.",

["second promotion"] = "Há um NPC que vem de muito longe e fica a caminhas pelos campos de Thais, dizem que ele pode dar a segunda vocação para os aventureiros.",

}

local msgAccept = 'Olá, '..getCreatureName(cid)..'. Sobre o que você quer saber? Sobre a {mysterious island} ou sobre a {second promotion}?'

local msgDenied = 'Eu não falo com '..getVocationInfo(getPlayerVocation(cid)).name..'s.'

local voc = 3

-----------------------------

--FIM DA PARTE CONFIGURAVEL--

-----------------------------

 

local function greetCallback(cid)

if getPlayerVocation(cid) == voc then

npcHandler:say(msgAccept, cid)

npcHandler:addFocus(cid)

else

npcHandler:say(msgDenied, cid)

npcHandler:releaseFocus(cid)

return true

end

return false

end

 

function creatureSayCallback(cid, type, msg)

if string.lower(msg) == 'bye' then

npcHandler:resetNpc(cid)

return false

end

 

for k, v in pairs(msgs) do

if msgcontains(msg, v) then

npcHandler:say(msgs[v], cid)

end

end

return true

end

 

npcHandler:setCallback(CALLBACK_GREET, greetCallback)

npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)

npcHandler:addModule(FocusModule:new())

 

gabriel28G
27 de janeiro de 2016 às 17:16
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

--------------------------
----PARTE CONFIGURAVEL----
--------------------------
local msgs = {
["mysterious island"] = "É uma ilha que antigos diziam ficar ao sudoeste de Carlin. Há um teleport que dizem aparecer nos pântanos de Venore, talvez, ele leve a essa ilha.",
["second promotion"] = "Há um NPC que vem de muito longe e fica a caminhas pelos campos de Thais, dizem que ele pode dar a segunda vocação para os aventureiros.",
}
local msgAccept = 'Olá, '..getCreatureName(cid)..'. Sobre o que você quer saber? Sobre a {mysterious island} ou sobre a {second promotion}?'
local msgDenied = 'Eu não falo com '..getVocationInfo(getPlayerVocation(cid)).name..'s.'
local voc = 3
-----------------------------
--FIM DA PARTE CONFIGURAVEL--
-----------------------------

local function greetCallback(cid)
	if getPlayerVocation(cid) == voc then
		npcHandler:say(msgAccept, cid)
		npcHandler:addFocus(cid)
	else
		npcHandler:say(msgDenied, cid)
		npcHandler:releaseFocus(cid)
	return true
	end
return false
end

function creatureSayCallback(cid, type, msg)
	if string.lower(msg) == 'bye' then
	npcHandler:resetNpc(cid)
	return false
	end

	for k, v in pairs(msgs) do
		if msgcontains(msg, v) then
		npcHandler:say(msgs[v], cid)
		end
	end
return true
end

npcHandler:setCallback(CALLBACK_GREET, greetCallback)
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())

 

Quando tento sumonar ele, da esse erro> lua:17: attempt to concatenate a boolean value

DanihcvD
27 de janeiro de 2016 às 17:43


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

 

--------------------------

----PARTE CONFIGURAVEL----

--------------------------

local msgs = {

["mysterious island"] = "É uma ilha que antigos diziam ficar ao sudoeste de Carlin. Há um teleport que dizem aparecer nos pântanos de Venore, talvez, ele leve a essa ilha.",

["second promotion"] = "Há um NPC que vem de muito longe e fica a caminhas pelos campos de Thais, dizem que ele pode dar a segunda vocação para os aventureiros.",

}

local voc = 3

-----------------------------

--FIM DA PARTE CONFIGURAVEL--

-----------------------------

 

local function greetCallback(cid)

if getPlayerVocation(cid) == voc then

npcHandler:say('Olá, '..getCreatureName(cid)..'. Sobre o que você quer saber? Sobre a {mysterious island} ou sobre a {second promotion}?', cid)

npcHandler:addFocus(cid)

else

npcHandler:say('Eu não falo com '..getVocationInfo(getPlayerVocation(cid)).name..'s.', cid)

npcHandler:releaseFocus(cid)

return true

end

return false

end

 

function creatureSayCallback(cid, type, msg)

if string.lower(msg) == 'bye' then

npcHandler:resetNpc(cid)

return false

end

 

for k, v in pairs(msgs) do

if msgcontains(msg, v) then

npcHandler:say(msgs[v], cid)

end

end

return true

end

 

npcHandler:setCallback(CALLBACK_GREET, greetCallback)

npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)

npcHandler:addModule(FocusModule:new())

 

gabriel28G
27 de janeiro de 2016 às 18:01

 

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

--------------------------
----PARTE CONFIGURAVEL----
--------------------------
local msgs = {
["mysterious island"] = "É uma ilha que antigos diziam ficar ao sudoeste de Carlin. Há um teleport que dizem aparecer nos pântanos de Venore, talvez, ele leve a essa ilha.",
["second promotion"] = "Há um NPC que vem de muito longe e fica a caminhas pelos campos de Thais, dizem que ele pode dar a segunda vocação para os aventureiros.",
}
local voc = 3
-----------------------------
--FIM DA PARTE CONFIGURAVEL--
-----------------------------

local function greetCallback(cid)
	if getPlayerVocation(cid) == voc then
		npcHandler:say('Olá, '..getCreatureName(cid)..'. Sobre o que você quer saber? Sobre a {mysterious island} ou sobre a {second promotion}?', cid)
		npcHandler:addFocus(cid)
	else
		npcHandler:say('Eu não falo com '..getVocationInfo(getPlayerVocation(cid)).name..'s.', cid)
		npcHandler:releaseFocus(cid)
	return true
	end
return false
end

function creatureSayCallback(cid, type, msg)
	if string.lower(msg) == 'bye' then
	npcHandler:resetNpc(cid)
	return false
	end

	for k, v in pairs(msgs) do
		if msgcontains(msg, v) then
		npcHandler:say(msgs[v], cid)
		end
	end
return true
end

npcHandler:setCallback(CALLBACK_GREET, greetCallback)
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())

Creio que eateja quase lá.

Quando não é a voc permitida, ele diz que não fala com ela, mas mesmo assim, ele abre o chat e diz também a frase default (Welcome, Teste! I have been expecting you.); e fica esperando o player falar algo, mas não responde nengum gatilho (mysterious island; second promotion), mas responde quando dar bye.

 

Quando é a voc permitida, ele da as saudaçoes normal, mas não responde nenhum gatilho.

DanihcvD
27 de janeiro de 2016 às 18:14

Qual o sript.xml que vc tá usando no npc?

 

De qqr forma, tenta assim o .lua:

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

--------------------------
----PARTE CONFIGURAVEL----
--------------------------
local msgs = {
["mysterious island"] = "É uma ilha que antigos diziam ficar ao sudoeste de Carlin. Há um teleport que dizem aparecer nos pântanos de Venore, talvez, ele leve a essa ilha.",
["second promotion"] = "Há um NPC que vem de muito longe e fica a caminhas pelos campos de Thais, dizem que ele pode dar a segunda vocação para os aventureiros.",
}
local voc = 3
-----------------------------
--FIM DA PARTE CONFIGURAVEL--
-----------------------------

local function greetCallback(cid)
	if getPlayerVocation(cid) == voc then
		npcHandler:say('Olá, '..getCreatureName(cid)..'. Sobre o que você quer saber? Sobre a {mysterious island} ou sobre a {second promotion}?', cid)
		npcHandler:addFocus(cid)
	else
		npcHandler:say('Eu não falo com '..getVocationInfo(getPlayerVocation(cid)).name..'s.', cid)
		npcHandler:releaseFocus(cid)
	return true
	end
return false
end

function creatureSayCallback(cid, type, msg)
	for k, v in pairs(msgs) do
		if string.lower(msg) == 'bye' then
		npcHandler:resetNpc(cid)
		elseif msgcontains(msg, v) then
		npcHandler:say(msgs[v], cid)
		end
	end
return true
end

npcHandler:setCallback(CALLBACK_GREET, greetCallback)
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())