NPC que só fala com certa vocation.

gabriel28
em Scripts
  • 1
  • 2

gabriel28

avatar
Visconde
Visconde

INFOS

Grupo: ViscondeRegistrado: 26/08/10Posts: 429Gênero: MasculinoChar no Tibia: Gabriel Rookgaardian

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á.

Danihcv

I'm Coordenador, Bitch!
avatar
Conde
Conde

INFOS

Grupo: CondeRegistrado: 08/04/15Posts: 926Gênero: Masculino

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.

Te ajudei?? REP+ e ficamos quites... happyy.png

Atenciosamente,
                    Danihcv.
                           Abraços!

gabriel28

avatar
Visconde
Visconde

INFOS

Grupo: ViscondeRegistrado: 26/08/10Posts: 429Gênero: MasculinoChar no Tibia: Gabriel Rookgaardian

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

Danihcv

I'm Coordenador, Bitch!
avatar
Conde
Conde

INFOS

Grupo: CondeRegistrado: 08/04/15Posts: 926Gênero: Masculino

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.",
}

 

Te ajudei?? REP+ e ficamos quites... happyy.png

Atenciosamente,
                    Danihcv.
                           Abraços!

gabriel28

avatar
Visconde
Visconde

INFOS

Grupo: ViscondeRegistrado: 26/08/10Posts: 429Gênero: MasculinoChar no Tibia: Gabriel Rookgaardian

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.

christopher17288

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 18/06/13Posts: 39Gênero: Masculino
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())


Danihcv

I'm Coordenador, Bitch!
avatar
Conde
Conde

INFOS

Grupo: CondeRegistrado: 08/04/15Posts: 926Gênero: Masculino

@, 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())

Te ajudei?? REP+ e ficamos quites... happyy.png

Atenciosamente,
                    Danihcv.
                           Abraços!

gabriel28

avatar
Visconde
Visconde

INFOS

Grupo: ViscondeRegistrado: 26/08/10Posts: 429Gênero: MasculinoChar no Tibia: Gabriel Rookgaardian

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.

Danihcv

I'm Coordenador, Bitch!
avatar
Conde
Conde

INFOS

Grupo: CondeRegistrado: 08/04/15Posts: 926Gênero: Masculino

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í. ^^

Te ajudei?? REP+ e ficamos quites... happyy.png

Atenciosamente,
                    Danihcv.
                           Abraços!

gabriel28

avatar
Visconde
Visconde

INFOS

Grupo: ViscondeRegistrado: 26/08/10Posts: 429Gênero: MasculinoChar no Tibia: Gabriel Rookgaardian

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.

Danihcv

I'm Coordenador, Bitch!
avatar
Conde
Conde

INFOS

Grupo: CondeRegistrado: 08/04/15Posts: 926Gênero: Masculino


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())

 

Te ajudei?? REP+ e ficamos quites... happyy.png

Atenciosamente,
                    Danihcv.
                           Abraços!

gabriel28

avatar
Visconde
Visconde

INFOS

Grupo: ViscondeRegistrado: 26/08/10Posts: 429Gênero: MasculinoChar no Tibia: Gabriel Rookgaardian
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

Danihcv

I'm Coordenador, Bitch!
avatar
Conde
Conde

INFOS

Grupo: CondeRegistrado: 08/04/15Posts: 926Gênero: Masculino


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())

 

Te ajudei?? REP+ e ficamos quites... happyy.png

Atenciosamente,
                    Danihcv.
                           Abraços!

gabriel28

avatar
Visconde
Visconde

INFOS

Grupo: ViscondeRegistrado: 26/08/10Posts: 429Gênero: MasculinoChar no Tibia: Gabriel Rookgaardian

 

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.

Danihcv

I'm Coordenador, Bitch!
avatar
Conde
Conde

INFOS

Grupo: CondeRegistrado: 08/04/15Posts: 926Gênero: Masculino

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())

Te ajudei?? REP+ e ficamos quites... happyy.png

Atenciosamente,
                    Danihcv.
                           Abraços!

  • 1
  • 2