Ir para conteúdo

Npc que dá informações/conta histórias


Danihcv

Posts Recomendados

   Opa, xTibianos. hoje venho lhes trazer um npc simples que eu havia feito um tempo atrás pra um membro aqui do fórum. Só fiz dar uma completada nele hoje... E adicionar 2 tipos de restrições (opicionais): restringir para apenas X vocações poderem falar com o npc; ou apenas para jogadores com X level conseguirem falar com ele.

 

   Este npc funciona da seguinte maneira: o player fala uma palavra(s)-gatilho que fará(ão) com que o npc dê uma resposta à essa(s) palavra(s). No próprio título deste tópico eu citei 2 exemplos que servem para esse npc: dar informações sobre certo item, certa localidade, etc; ou mesmo contar histórias: numa frase do npc ele pode citar um macaco dourado (palavra-gatilho), aí quando o player falar "macaco dourado" o npc descreverá o que está por trás deste macaco dourado, podendo até mesmo citar uma localidade onde ele foi visto pela última vez, e quando o player falar essa localidade o npc pode descrever a rota para se chegar nela, etc.

   Bom, vai da imaginação de cada um. sahusahusasah

 

  •    Agora seguiremos para a instalação:

Vá até a pasta data\npc e crie um arquivo chamado informante.xml e coloque isso dentro:

<?xml version="1.0" encoding="UTF-8"?><npc name="Informante" script="data/npc/scripts/informante.lua" walkinterval="1500" speed="100" walkradius="2" floorchange="0"><health max="100" now="100"/><look type="130" head="19" body="47" legs="132" feet="114" addons="0" mount="0"/><parameters>	<parameter key="message_farewell" value="Até a próxima, |PLAYERNAME|."/></parameters></npc>

 

Agora vá até a pasta data\npc\scripts e crie um arquivo chamado informante.lua e coloque isso dentro:

----------------------------------------------------------NPC feito por: Danihcv  ;  para: xTibia.com----------------------------------------------------------local keywordHandler = KeywordHandler:new()local npcHandler = NpcHandler:new(keywordHandler)NpcSystem.parseParameters(npcHandler)function onCreatureAppear(cid)				npcHandler:onCreatureAppear(cid) endfunction onCreatureDisappear(cid) 			npcHandler:onCreatureDisappear(cid) endfunction onCreatureSay(cid, type, msg)		npcHandler:onCreatureSay(cid, type, msg) endfunction onThink() 							npcHandler:onThink() end------------------------------PARTE CONFIGURAVEL------------------------------local msgs = { --["AQUI VOCÊ PÕE AS PALAVRAS-GATILHO QUE FARÃO O NPC DAR UMA RESPOSTA"] = "AQUI VOCÊ PÕE A FRASE À PALAVRA-GATILHO"["informacoes"] = "Sobre o que você quer saber? Sobre a {mysterious island} ou sobre a {second promotion}?",["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 vocs = {} --vocações que podem falar com o npc. Caso vc queira deixar sem restrição de vocação, deixe vaziolocal levelMin = 0 --caso vc queira definir um nivel minimo para falar com o npc coloque o nivel, caso não, deixe em 0-------------------------------FIM DA PARTE CONFIGURAVEL-------------------------------function greetCallback(cid)--------------------------------PARTE 2 CONFIGURAVEL--------------------------------local msgGreet = 'Olá, '..getCreatureName(cid)..'. O que você procura? {Informacoes}?' --mensagem de boas-vindaslocal msgBye = 'Até a próxima, '..getCreatureName(cid)..'.' --mensagem de despedida---------------------------------FIM DA PARTE 2 CONFIGURAVEL---------------------------------	if #vocs > 0 then		if not isInArray(vocs, getPlayerVocation(cid)) then			npcHandler:say('Eu não falo com '..getVocationInfo(getPlayerVocation(cid)).name..'s.', cid)			npcHandler:releaseFocus(cid)			npcHandler:resetNpc(cid)			return false		end	end	if getPlayerLevel(cid) < levelMin then		npcHandler:say('Eu não falo com jogadores com nivel menor que '..levelMin..'.', cid)		npcHandler:releaseFocus(cid)		npcHandler:resetNpc(cid)		return false	end	npcHandler:say(msgGreet, cid)	npcHandler:addFocus(cid)	return falseendfunction creatureSayCallback(cid, type, msg)	if #vocs > 0 then		if not isInArray(vocs, getPlayerVocation(cid)) then			npcHandler:say('Eu ja disse que não falo com '..getVocationInfo(getPlayerVocation(cid)).name..'s.', cid)			npcHandler:releaseFocus(cid)			npcHandler:resetNpc(cid)			return false		end	end	if getPlayerLevel(cid) < levelMin then		npcHandler:say('Eu já disse que não falo com jogadores com nivel menor que '..levelMin..'.', cid)		npcHandler:releaseFocus(cid)		npcHandler:resetNpc(cid)		return false	end	for k, v in pairs(msgs) do		if msgcontains(msg, k) then			npcHandler:say(msgs[k], cid)		elseif msgcontains(msg, 'bye') or msgcontains(msg, 'goodbye') or msgcontains(msg, 'xau') or msgcontains(msg, 'tchau') then			npcHandler:say(msgBye, cid)			npcHandler:releaseFocus(cid)			npcHandler:resetNpc(cid)			return false		end	end	return trueendnpcHandler:setCallback(CALLBACK_GREET, greetCallback)npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)npcHandler:addModule(FocusModule:new())

***ATENÇÃO NESSE SCRIPT /\ Pois ele possui 2 partes para configurar. Uma logo abaixo da outra.

Por hoje é tudo, pessoal!
Espero que gostem e façam bom uso.
Abraços, Danihcv!

Link para o comentário
Compartilhar em outros sites

2 minutos atrás, masterover disse:

que nostalgia

Essa é a intenção sahusahusahu

 

2 minutos atrás, masterover disse:

já até tive umas idéias pra melhorar ele

Sinta-se a vontade. ^^

 

 

1 minuto atrás, Daniel disse:

Haha, curti

Vlww man

Link para o comentário
Compartilhar em outros sites

  • 1 month later...
×
×
  • Criar Novo...