Ir para conteúdo
  • 0

Fazer NPC parar de falar com um player


Mazynho

Pergunta

Galera como que faço para um NPC parar de falar com um player quando o player falar uma palavra X.

 

Ex:

Player: HI

NPC: Ola Player o que deseja?

Player: Nada

NPC: para de falar com player.

 

Quando falamos bye para um npc instantaneamente ele para de falar com o player, o que quero é a mesma coisa, porém com outra palavra.

Link para o comentário
Compartilhar em outros sites

15 respostass a esta questão

Posts Recomendados

  • 0
if msgcontains(msg, "tchau") then
        selfSay("Ateh a proxima.", cid)
        talkState[talkUser] = nil
        npcHandler:releaseFocus(cid)

É só usar o método npcHandler:releaseFocus que o NPC para de falar com o jogador.

Link para o comentário
Compartilhar em outros sites

  • 0

Tipo eu não entendo muito de script, mas procura no script do npc a palavra Bye(Use CTRL+F para encontrar)

Depois troque por outra. Ex: Tchau (ou no seu caso Nada)

Editado por trituration
Link para o comentário
Compartilhar em outros sites

  • 0

Galera como que faço para um NPC parar de falar com um player quando o player falar uma palavra X.

 

Ex:

Player: HI

NPC: Ola Player o que deseja?

Player: Nada

NPC: para de falar com player.

 

Quando falamos bye para um npc instantaneamente ele para de falar com o player, o que quero é a mesma coisa, porém com outra palavra.

Boa noite,

Poste aqui o script do NPC que você quer que isso ocorra.

Vou adaptar para você.

Abraço, aguardando.

Link para o comentário
Compartilhar em outros sites

  • 0

Boa noite,

Poste aqui o script do NPC que você quer que isso ocorra.

Vou adaptar para você.

Abraço, aguardando.

 

Ainda não tenho o script do npc, que estou querendo, estou elaborando as ideias que irei implementar, mas fiquei presso à esse impasse. O Dalvorsn min falou para usar selfFocus() então fui testar em um npc qualquer, mas não funcionou.

Link para o comentário
Compartilhar em outros sites

  • 0

 

Ainda não tenho o script do npc, que estou querendo, estou elaborando as ideias que irei implementar, mas fiquei presso à esse impasse. O Dalvorsn min falou para usar selfFocus() então fui testar em um npc qualquer, mas não funcionou.

Exatamente, eu tava testando aqui também, e consegui colocar pro Focus do NPC ser 0, ou seja, ninguém, ai ele não falou mais comigo, porem eu queria ver como você tinha declarado a função do selFocus() pra poder passar o código com a variável que você usou, quando começar a fazer o npc e declarar a variável que vai receber o focus do npc, tenta setar ela pra 0 quando você falar: "nada" pra ele, talvez funcione. Abraços.

Link para o comentário
Compartilhar em outros sites

  • 0

Exatamente, eu tava testando aqui também, e consegui colocar pro Focus do NPC ser 0, ou seja, ninguém, ai ele não falou mais comigo, porem eu queria ver como você tinha declarado a função do selFocus() pra poder passar o código com a variável que você usou, quando começar a fazer o npc e declarar a variável que vai receber o focus do npc, tenta setar ela pra 0 quando você falar: "nada" pra ele, talvez funcione. Abraços.

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)
	if(not npcHandler:isFocused(cid)) then
		return false
	end

	local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid

	if(msgcontains(msg, 'repair')) then
		selfSay('I can repair your Soft Boots by 15000 gold coins. Want me to do the repair in your boots?', cid)
		talkState[talkUser] = 1
	elseif(msgcontains(msg, 'yes') and talkState[talkUser] == 1) then
		if(getPlayerItemCount(cid, 10021) >= 1) then
			if(doPlayerRemoveMoney(cid, 15000) == TRUE) then
				doPlayerRemoveItem(cid, 10021, 1)
				doPlayerAddItem(cid, 2640)
				selfSay('Here you are.', cid)
			else
				selfSay('Sorry, but I can not repair your boots for free. Come back when you achieve enough money.', cid)
			end
		else
			selfSay('Sorry, but you must bring your boots so that I can repair.', cid)
		end
		talkState[talkUser] = 0
	elseif(msgcontains(msg, 'no') and isInArray({1}, talkState[talkUser]) == TRUE) then
		talkState[talkUser] = 0
		selfSay('Ok then.', cid) --Parar após essa frase.
	end

	return true
end

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

Por exemplo nesse npc, que recarega a soft como que faço para que após o player falar "no" ele para de falar com o npc.

Link para o comentário
Compartilhar em outros sites

  • 0
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)
	if(not npcHandler:isFocused(cid)) then
		return false
	end

	local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid

	if(msgcontains(msg, 'repair')) then
		selfSay('I can repair your Soft Boots by 15000 gold coins. Want me to do the repair in your boots?', cid)
		talkState[talkUser] = 1
	elseif(msgcontains(msg, 'yes') and talkState[talkUser] == 1) then
		if(getPlayerItemCount(cid, 10021) >= 1) then
			if(doPlayerRemoveMoney(cid, 15000) == TRUE) then
				doPlayerRemoveItem(cid, 10021, 1)
				doPlayerAddItem(cid, 2640)
				selfSay('Here you are.', cid)
			else
				selfSay('Sorry, but I can not repair your boots for free. Come back when you achieve enough money.', cid)
			end
		else
			selfSay('Sorry, but you must bring your boots so that I can repair.', cid)
		end
		talkState[talkUser] = 0
	elseif(msgcontains(msg, 'no') and isInArray({1}, talkState[talkUser]) == TRUE) then
		talkState[talkUser] = 0
		selfSay('Ok then.', cid) --Parar após essa frase.
	end

	return true
end

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

Por exemplo nesse npc, que recarega a soft como que faço para que após o player falar "no" ele para de falar com o npc.

 

Mano, tenta adicionar um return true logo abaixo da linha onde você comentou, e ve se ele para, não manjo muito de NPC :\

Boa sorte.

Link para o comentário
Compartilhar em outros sites

  • 0

Mano na seu npc.xml la vai ter o que você quer Que ele Fale

 

no caso aki da so pra traduzilo

 

 

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)
if(not npcHandler:isFocused(cid)) then
return false
end
local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid
if(msgcontains(msg, 'reparar')) then
selfSay('I can repair your Soft Boots by 15000 gold coins. Want me to do the repair in your boots?', cid)
talkState[talkUser] = 1
elseif(msgcontains(msg, 'yes') and talkState[talkUser] == 1) then
if(getPlayerItemCount(cid, 10021) >= 1) then
if(doPlayerRemoveMoney(cid, 15000) == TRUE) then
doPlayerRemoveItem(cid, 10021, 1)
doPlayerAddItem(cid, 2640)
selfSay('Here you are.', cid)
else
selfSay('Sorry, but I can not repair your boots for free. Come back when you achieve enough money.', cid)
end
else
selfSay('Sorry, but you must bring your boots so that I can repair.', cid)
end
talkState[talkUser] = 0
elseif(msgcontains(msg, 'nao') and isInArray({1}, talkState[talkUser]) == TRUE) then
talkState[talkUser] = 0
selfSay('sim then.', cid) --Parar após essa frase.
end
return true
end
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)

npcHandler:addModule(FocusModule:new())

 

Link para o comentário
Compartilhar em outros sites

  • 0

Mano na seu npc.xml la vai ter o que você quer Que ele Fale

 

no caso aki da so pra traduzilo

 

 

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)
if(not npcHandler:isFocused(cid)) then
return false
end
local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid
if(msgcontains(msg, 'reparar')) then
selfSay('I can repair your Soft Boots by 15000 gold coins. Want me to do the repair in your boots?', cid)
talkState[talkUser] = 1
elseif(msgcontains(msg, 'yes') and talkState[talkUser] == 1) then
if(getPlayerItemCount(cid, 10021) >= 1) then
if(doPlayerRemoveMoney(cid, 15000) == TRUE) then
doPlayerRemoveItem(cid, 10021, 1)
doPlayerAddItem(cid, 2640)
selfSay('Here you are.', cid)
else
selfSay('Sorry, but I can not repair your boots for free. Come back when you achieve enough money.', cid)
end
else
selfSay('Sorry, but you must bring your boots so that I can repair.', cid)
end
talkState[talkUser] = 0
elseif(msgcontains(msg, 'nao') and isInArray({1}, talkState[talkUser]) == TRUE) then
talkState[talkUser] = 0
selfSay('sim then.', cid) --Parar após essa frase.
end
return true
end
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)

npcHandler:addModule(FocusModule:new())

 

 

O que você fez? Traduziu a frase do npc?

Link para o comentário
Compartilhar em outros sites

  • 0

if(msgcontains(msg, 'repair')) then

if(msgcontains(msg, 'reparar')) then

 

elseif(msgcontains(msg, 'no') and isInArray({1}, talkState[talkUser]) == TRUE) then

elseif(msgcontains(msg, 'nao') and isInArray({1}, talkState[talkUser]) == TRUE) then

 

selfSay('oky then.', cid) --Parar após essa frase.

selfSay('sim then.', cid) --Parar após essa frase.

 

Se vocÊ quiser Tipo de vez de falar Hi E so muda no ex pair of soft.xml em npc la tem como e que ele vai falar tipo hi repair so muda como vocÊ deseja

Link para o comentário
Compartilhar em outros sites

  • 0

if(msgcontains(msg, 'repair')) then

if(msgcontains(msg, 'reparar')) then

 

elseif(msgcontains(msg, 'no') and isInArray({1}, talkState[talkUser]) == TRUE) then

elseif(msgcontains(msg, 'nao') and isInArray({1}, talkState[talkUser]) == TRUE) then

 

selfSay('oky then.', cid) --Parar após essa frase.

selfSay('sim then.', cid) --Parar após essa frase.

 

Se vocÊ quiser Tipo de vez de falar Hi E so muda no ex pair of soft.xml em npc la tem como e que ele vai falar tipo hi repair so muda como vocÊ deseja

 

Não estou querendo isso, quero que quando um player falar uma certa palavra, que irei definir, o npc pare de falar com o player, continue andando para um lado e para outro, como se ninguém tivesse falado com ele.

Link para o comentário
Compartilhar em outros sites

  • 0
if msgcontains(msg, "tchau") then
        selfSay("Ateh a proxima.", cid)
        talkState[talkUser] = nil
        npcHandler:releaseFocus(cid)

É só usar o método npcHandler:releaseFocus que o NPC para de falar com o jogador.

 

 

Valeu Omega! Muito obrigado.

Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...