SA

Começar Conversa Com Npc Diferente

Por sabrina9292, 20 de jan. de 2012 em Archived

11
1.1k
sabrina9292S
20 de janeiro de 2012 às 17:28

Bom pessoal...

Como mudar a palavra de inicializaçao de dialago de um npc?

Gostaria que ao invez de dizer hi, dizer "hauchi", mas queria que fosse apenas em um unico npc

 

Brigada

TryllerT
20 de janeiro de 2012 às 17:32

data/npc/lib/main.lua (no crystal)

em outro npc nao melembro qual aruivo... mas deve conter isto

 

FOCUS_GREETWORDS = {'hi', 'hello', 'hey'}

FOCUS_FAREWELLWORDS = {'bye', 'farewell', 'cya'}

bepokemonB
20 de janeiro de 2012 às 19:28

Você deve colocar dentro do script do NPC algo assim:

FOCUS_GREETWORDS = {'hauchi', 'hauchi'}

 

Se não me engano tenho um NPC Blind Orc perfeito aqui, vou procurar para você.

Editado Janeiro 20 por Byerne

sabrina9292S
21 de janeiro de 2012 às 02:15

Levou meu rep+

Vou aguardar anciosa pelo script do blind orc, ele sera otimo para mim treinar, existem muito poucos tutoriais de npc...

bepokemonB
21 de janeiro de 2012 às 13:10

Levou meu rep+

Vou aguardar anciosa pelo script do blind orc, ele sera otimo para mim treinar, existem muito poucos tutoriais de npc...

 

Mas você conseguiu fazer da forma que te falei? Não estou achando o Blind Orc neste computador.

sabrina9292S
22 de janeiro de 2012 às 00:35

Levou meu rep+

Vou aguardar anciosa pelo script do blind orc, ele sera otimo para mim treinar, existem muito poucos tutoriais de npc...

 

Mas você conseguiu fazer da forma que te falei? Não estou achando o Blind Orc neste computador.

 

Bom, depois que você ja havia respondido que fui perceber que minha duvida nao e bem isso...

Eu estou tentando criar um npc oracle igual o do global, so que sempre que falava hi com ele, ele dizia uma frase configurada na lib que nao tinha nada a ver, mesmo se fosse um level menor que 8... Mas depois que muito quebrar a cabeça e ver varios exemplos... Saiu isto:

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 msg = string.lower(msg)
  if msg == 'hi' and (not npcHandler:isFocused(cid)) or msg == 'hello' and (not npcHandler:isFocused(cid)) then
  if getPlayerLevel(cid) >= 8 then
	 npcHandler:addFocus(cid)		   
	 selfSay(getCreatureName(cid).. ', você está preparado para encarar o seu destino?', cid)
	 talkState[talkUser] = 1
  else		   
	 selfSay('Criança! Volte quando você crescer!', cid)
  end
  elseif msg ~= 'yes' then
  if npcHandler:isFocused(cid) then 
	 selfSay('Volte quando você estiver preparado para encarar o seu destino!', cid)  
	 npcHandler:releaseFocus(cid)
  end	 
  end

  if msg == "yes" and talkState[talkUser] == 1 then
  selfSay('Eu posso levá-lo para a Ilha Do Destino... Entretanto você não será capaz de retornar. Está certo que deseja ir?', cid)
  talkState[talkUser] = 2  
  elseif msg == "yes" and talkState[talkUser] == 2 then
  doPlayerSetTown(cid, 11)
  doTeleportThing(cid,{x=1251, y=519, z=7})
  doSendMagicEffect(getCreaturePosition(cid), CONST_ME_TELEPORT)
  selfSay('QUE ASSIM SEJA!', cid)
  npcHandler:releaseFocus(cid)
  end

  return true
end
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:setMessage(MESSAGE_WALKAWAY, false)

 

Só que ele ta com um probleminha... O npc so encerra o dialago com vc se vc falar qualquer coisa diferente de yes, voce pode falar hi, dar uma volta na cidade e quando voltar, ele estara converando com vc como se vc nao tivesse saido de perto dele.. =/

 

E alem do mais, sinto que ele esta ENORME... Sei la, acho que estou usando muitos comandos que sao desnecessarios...

 

Alguem que entende sobre npc e sabe uma maneira mais curta de fazer o que eu quero, pode me dizer onde coloquei coisas desnecessarias?

 

Desde já...

Muito obrigada

TryllerT
22 de janeiro de 2012 às 00:40

Levou meu rep+

Vou aguardar anciosa pelo script do blind orc, ele sera otimo para mim treinar, existem muito poucos tutoriais de npc...

 

Mas você conseguiu fazer da forma que te falei? Não estou achando o Blind Orc neste computador.

 

Bom, depois que você ja havia respondido que fui perceber que minha duvida nao e bem isso...

Eu estou tentando criar um npc oracle igual o do global, so que sempre que falava hi com ele, ele dizia uma frase configurada na lib que nao tinha nada a ver, mesmo se fosse um level menor que 8... Mas depois que muito quebrar a cabeça e ver varios exemplos... Saiu isto:

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 msg = string.lower(msg)
  if msg == 'hi' and (not npcHandler:isFocused(cid)) or msg == 'hello' and (not npcHandler:isFocused(cid)) then
  if getPlayerLevel(cid) >= 8 then
	 npcHandler:addFocus(cid)		  
	 selfSay(getCreatureName(cid).. ', você está preparado para encarar o seu destino?', cid)
	 talkState[talkUser] = 1
  else		  
	 selfSay('Criança! Volte quando você crescer!', cid)
  end
  elseif msg ~= 'yes' then
  if npcHandler:isFocused(cid) then
	 selfSay('Volte quando você estiver preparado para encarar o seu destino!', cid)  
	 npcHandler:releaseFocus(cid)
  end	
  end

  if msg == "yes" and talkState[talkUser] == 1 then
  selfSay('Eu posso levá-lo para a Ilha Do Destino... Entretanto você não será capaz de retornar. Está certo que deseja ir?', cid)
  talkState[talkUser] = 2  
  elseif msg == "yes" and talkState[talkUser] == 2 then
  doPlayerSetTown(cid, 11)
  doTeleportThing(cid,{x=1251, y=519, z=7})
  doSendMagicEffect(getCreaturePosition(cid), CONST_ME_TELEPORT)
  selfSay('QUE ASSIM SEJA!', cid)
  npcHandler:releaseFocus(cid)
  end

  return true
end
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:setMessage(MESSAGE_WALKAWAY, false)

 

Só que ele ta com um probleminha... O npc so encerra o dialago com vc se vc falar qualquer coisa diferente de yes, voce pode falar hi, dar uma volta na cidade e quando voltar, ele estara converando com vc como se vc nao tivesse saido de perto dele.. =/

 

E alem do mais, sinto que ele esta ENORME... Sei la, acho que estou usando muitos comandos que sao desnecessarios...

 

Alguem que entende sobre npc e sabe uma maneira mais curta de fazer o que eu quero, pode me dizer onde coloquei coisas desnecessarias?

 

Desde já...

Muito obrigada

 

 

Isto de dar voltinha e ão fexar conversa é problema no distro

Maioria dos oT's 8.6 ate 9.30 possuem isto

Editado Janeiro 22 por Tryller

sabrina9292S
22 de janeiro de 2012 às 01:13

@Tryller

 

Mas acredito que este não seja o caso... Pois todos os npcs do meu ot, com excessao deste, que pos coinsidencia foi eu que fiz ¬¬, funcionam "perfeitamente", quando se afastam deles, eles encerram a conversa, sendo necessario dizer hi novamente

bepokemonB
22 de janeiro de 2012 às 15:44

@Tryller

 

Mas acredito que este não seja o caso... Pois todos os npcs do meu ot, com excessao deste, que pos coinsidencia foi eu que fiz ¬¬, funcionam "perfeitamente", quando se afastam deles, eles encerram a conversa, sendo necessario dizer hi novamente

 

Em vez de usar msg == '' use msgcontains(msg, ''). Isto serve para maiusculo, minúsculo e se escrever 'Yes I do.' ele também vai.

Editado Janeiro 22 por Byerne

TryllerT
22 de janeiro de 2012 às 18:11

use onCreatureDisapper()

sabrina9292S
22 de janeiro de 2012 às 19:26

use onCreatureDisapper()

 

Se importa de me explicar como uso esta funçao?