Ir para conteúdo

Começar Conversa Com Npc Diferente


sabrina9292

Posts Recomendados

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'}

Link para o comentário
Compartilhar em outros sites

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.

Link para o comentário
Compartilhar em outros sites

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

Link para o comentário
Compartilhar em outros sites

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 por Tryller
Link para o comentário
Compartilhar em outros sites

@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

Link para o comentário
Compartilhar em outros sites

@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 por Byerne
Link para o comentário
Compartilhar em outros sites

  • Quem Está Navegando   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.
×
×
  • Criar Novo...