DA

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

Por Danihcv, 05 de abr. de 2016 em NPCs, monsters e raids

npc
informações
conta
histórias
tfs
0.3.x
0.4
7
4.7k
DanihcvD
05 de abril de 2016 às 23:52

   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!

Editado Junho 1 por Danihcv

DeadpoolD
06 de abril de 2016 às 00:07

"Por hoje é tudo pessoal" que nostalgia da wanerbros Kkkk

Muito bom o NPC z já até tive umas idéias pra melhorar ele haha

AdministradorA
06 de abril de 2016 às 00:09

Haha, curti @danihcv

Isso é bem funcional e útil.

DanihcvD
06 de abril de 2016 às 00:11
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

SkullsS
06 de abril de 2016 às 00:13

comenta no meu topico por favor, ele disse

Legal esse NPC @danihcv, belo trabalho!

Da pra usar em várias situações!

Abraços,

DanihcvD
06 de abril de 2016 às 00:14

X9 morre cedo, dizem...
 

hahaha, vlww @Skulls

3 meses depois...
gabriel28G
09 de julho de 2016 às 00:28

Lembro que deu muito trabalho de fazer na época. kkkkk