Ir para conteúdo

Featured Replies

Postado
  • Autor
50 minutos atrás, edusorcer disse:

E ai cara, tudo certo?

 

Lendo o seu código, percebo que talvez você esteja cometendo um pequeno erro de lógica, e alguns erros de semântica.

1- erros de semântica

não há necessidade de colocar a sua variável em um objeto.

 

como você está apenas declarando a variável nome, ela pode ser acessada diretamente, ou seja, essas linhas poderiam se resumir em:


local nome = getCreatureName(cid)

 

nesse contexto, a variável nome não existe, pois você criou ela dentro do objeto config, então ficaria config.nome

 

2- erro de lógica

por que você está comparando a variável nome com o nome da criatura? Você já declarou a variável nome com o nome da criatura nas linhas anteriores

dessa forma, acredito que esse if é desnecessário, e você pode remover.

 

 

quando remover o if anterior, altere essa linha removendo o elseif e colocando um if no lugar, dessa forma:


if msgcontains(msg, "blz") or msgcontains(msg, "blzz") and talkState[talkUser] == 1 then

 

aqui você remove o config.nome e deixa apenas nome

 

@edusorcer
Muito obrigo!

 

Fui editando e anotando pelo que entendi, veja se seria assim:
 

Spoiler

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



function creatureSayCallback(cid, type, msg)
local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid
--[[local config = {
	  nome = getCreatureName(cid),
	}]]-- Removido
local nome = getCreatureName(cid) -- Adicionado

if getCreatureName(cid)  then --Removido o 'Nome'

	if msgcontains(msg, "blz") or msgcontains(msg, "blzz") and talkState[talkUser] == 1 then
		selfSay("Olá, como está ".. nome ..", faz tempo que não aparece por aqui... Em que posso lhe ajudar?",cid)
		talkState[talkUser] = 1
		return true
		end
	  end
end


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

 


Se estiver tudo certo, entendi o que quis dizer hehe
Caso tenha algo errado por favor me avise!
(Obs: Teste a script e esta funcionando) 

38 minutos atrás, Skydrowz disse:

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



function creatureSayCallback(cid, type, msg)
local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid
local nome = "nome"

if nome == getCreatureName(cid)  then
	if (msgcontains(msg, "blz") or msgcontains(msg, "blzz")) and (talkState[talkUser]) == 1 then -- Você vai precisar dos () para separar o 'or' do 'and', caso contrário sua condição ia bugar.
		selfSay("Olá, como está ".. nome ..", faz tempo que não aparece por aqui... Em que posso lhe ajudar?",cid)
		talkState[talkUser] = 1 -- Altere aqui, pois a talkState já está 1, de acordo com sua condição.
		end
  	 end
  return true
end


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


 

 

@Skydrowz
Quando digo "Blz" ou "Blzz" o Npc Não responde...

  • Respostas 13
  • Visualizações 1.2k
  • Created
  • Última resposta

Top Posters In This Topic

Most Popular Posts

  • A função retorna uma string, ou seja, um texto. Para fazer essa comparação corretamente, o nome a ser comparado também tem que ser uma string. local keywordHandler = KeywordHandler:new() local npc

  • local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) local talkState = {} function onCreatureAppear(cid) npcHandler:onCre

  • @peterson18 está quase, faltou remover o if desnecessário   acredito que a versão correta do script seria assim:   local keywordHandler = KeywordHandler:new() local npcHandler = Npc

Postado

@peterson18 está quase, faltou remover o if desnecessário

 

acredito que a versão correta do script seria assim:

 

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



function creatureSayCallback(cid, type, msg)
	local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid

	local nome = getCreatureName(cid)

	if msgcontains(msg, "blz") or msgcontains(msg, "blzz") and talkState[talkUser] == 1 then
		selfSay("Olá, como está ".. nome ..", faz tempo que não aparece por aqui... Em que posso lhe ajudar?",cid)
		return true
	end
end


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

veja se deu certo ?

Postado
  • Autor
3 minutos atrás, edusorcer disse:

@peterson18 está quase, faltou remover o if desnecessário

 

acredito que a versão correta do script seria assim:

 


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



function creatureSayCallback(cid, type, msg)
	local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid

	local nome = getCreatureName(cid)

	if msgcontains(msg, "blz") or msgcontains(msg, "blzz") and talkState[talkUser] == 1 then
		selfSay("Olá, como está ".. nome ..", faz tempo que não aparece por aqui... Em que posso lhe ajudar?",cid)
		return true
	end
end


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

veja se deu certo ?


Exato, esta funcionando! E entendi a logica para essa situação. 
O getCreatureName é uma função global ou seja quando eu chamo ela não preciso defini-la como 'Nome" para depois chama-la de novo... Ou seja eu estava falando a mesma coisa umas 3 vez kkk.

Muito obrigado!

 

Postado
  • Autor
1 minuto atrás, Skydrowz disse:

O nome da creature é "nome"?

No caso eu estava tentando que o NPC disse o nome do player

Ele teria que buscar o nome

Exemplo: 

Olá, como está Skydrows, faz tempo que não aparece por aqui... Em que posso lhe ajudar?

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.

Conteúdo Similar

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 519.6k

Informação Importante

Confirmação de Termo