Ir para conteúdo

NPC de TelePort com itens(configuráveis)


Lumus

Posts Recomendados

Olá galera do XT, estou trazendo aqui, meu primeiro NPC, um NPC que teleporta se tiver o item X, tudo configurável!

Vá em data/npcs/scripts e copia e cola um arquivo.lua renomeia ele para tp.lua e cola o seguinte código:

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
------------#Configurações#----------------
local config = {
	tp1 = {x=100, y=100, z=7}, -- coordenadas pra onde ele irá ao falar aonde está "ir".
	tp2 = {x=100, y=100, z=7}, -- coordenadas pra onde ele irá ao falar aonde está "ir2".
	tp3 = {x=100, y=100, z=7},  -- coordenadas pra onde ele irá ao falar aonde está "ir3".
	item1 = 2160,  -- id do item 1
	item2 = 2148, -- id do item 2
	item3 = 2158, -- id do item 3
	qtd1 = 2, -- quantidade a ser removida do item 1
	qtd2 = 5, -- quantidade a ser removida do item 2
	qtd3 = 7, -- quantidade a ser removida do item 3
}
----------#Fim das configurações#----------

------------#*#Início do NPC#*#--------------
if msgcontains(msg, 'ir1') then -- o que ele tem que falar.
	if doPlayerRemoveItem(cid, config.item1, config.qtd1) then 
		doTeleportThing(cid, config.tp1) -- não mexa.
	else
		selfSay("Você não tem "..config.qtd1.." {"..getItemNameById(config.item1).."s}.", cid) -- msg que retorna caso ele não tenha o item.
	end
	elseif msgcontains(msg, 'ir2') then -- o que ele tem que falar.
		if doPlayerRemoveItem(cid, config.item2, config.qtd2) then 
			doTeleportThing(cid, config.tp2) -- não mexa.
		else
			selfSay("Você não tem "..config.qtd2.." {"..getItemNameById(config.item2).."s}.", cid) -- msg que retorna caso ele não tenha o item.
		end
	elseif msgcontains(msg, 'ir3') then -- o que ele tem que falar.
		if doPlayerRemoveItem(cid, config.item3, config.qtd3) then 
			doTeleportThing(cid, config.tp3) -- não mexa.
		else
			selfSay("Você não tem "..config.qtd3.." {"..getItemNameById(config.item3).."s}.", cid) -- msg que retorna caso ele não tenha o item.
		end
end
------------#*#Fim do NPC#*#--------------
return true
end


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

Feito isso, vá em data/npcs copia um arquivo.xml e renomeia ele para Teleport. Abra com o bloco de notas ou outro editor, e cole este arquivo:

<?xml version="1.0" encoding="ISO-8859-1"?>
<npc name="Gerson" script="data/npc/scripts/tp.lua" walkinterval="3000" floorchange="0">
	<health now="100" max="100"/>
	<look type="367" head="0" body="38" legs="114" feet="94" addons="0"/>
	<parameters>
		<parameter key="message_greet" value="Eu posso levar você para {ir1}, {ir2}, {ir3}."/>
		<parameter key="message_farewell" value="Adeus!"/>
		<parameter key="message_walkaway" value="Que bons ventos o levem!"/>
	</parameters>
</npc> 

Configurando o arquivo do npc:

Tudo é feito aqui:

------------#Configurações#----------------
local config = {
	tp1 = {x=100, y=100, z=7}, -- coordenadas pra onde ele irá ao falar aonde está "ir".
	tp2 = {x=100, y=100, z=7}, -- coordenadas pra onde ele irá ao falar aonde está "ir2".
	tp3 = {x=100, y=100, z=7},  -- coordenadas pra onde ele irá ao falar aonde está "ir3".
	item1 = 2160,  -- id do item 1
	item2 = 2148, -- id do item 2
	item3 = 2158, -- id do item 3
	qtd1 = 2, -- quantidade a ser removida do item 1
	qtd2 = 5, -- quantidade a ser removida do item 2
	qtd3 = 7, -- quantidade a ser removida do item 3
}
----------#Fim das configurações#---------- 

Em tp1, tp2, tp3 coloque a posição de cada lugar que ele será mandado.
Em item1, item2, item3 coloque o ID do item que você quer que seja removido para teleportar o jogador.
Em qtd1, qtd2, qtd3 coloque apenas a quantidade a ser removida.

Bom galera, este é meu primeiro script espero que gostem!!

@Edit
Hoje dei uma editada no NPC e removi 10 linhas. Gostaria que me dessem ideias de como melhorar este NPC, ou criar outros.

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

  • 6 years later...
  • 3 months later...
Em 12/10/2013 em 07:57, Lumus disse:

Olá galera do XT, estou trazendo aqui, meu primeiro NPC, um NPC que teleporta se tiver o item X, tudo configurável!

Vá em data/npcs/scripts e copia e cola um arquivo.lua renomeia ele para tp.lua e cola o seguinte código:


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
------------#Configurações#----------------
local config = {
	tp1 = {x=100, y=100, z=7}, -- coordenadas pra onde ele irá ao falar aonde está "ir".
	tp2 = {x=100, y=100, z=7}, -- coordenadas pra onde ele irá ao falar aonde está "ir2".
	tp3 = {x=100, y=100, z=7},  -- coordenadas pra onde ele irá ao falar aonde está "ir3".
	item1 = 2160,  -- id do item 1
	item2 = 2148, -- id do item 2
	item3 = 2158, -- id do item 3
	qtd1 = 2, -- quantidade a ser removida do item 1
	qtd2 = 5, -- quantidade a ser removida do item 2
	qtd3 = 7, -- quantidade a ser removida do item 3
}
----------#Fim das configurações#----------

------------#*#Início do NPC#*#--------------
if msgcontains(msg, 'ir1') then -- o que ele tem que falar.
	if doPlayerRemoveItem(cid, config.item1, config.qtd1) then 
		doTeleportThing(cid, config.tp1) -- não mexa.
	else
		selfSay("Você não tem "..config.qtd1.." {"..getItemNameById(config.item1).."s}.", cid) -- msg que retorna caso ele não tenha o item.
	end
	elseif msgcontains(msg, 'ir2') then -- o que ele tem que falar.
		if doPlayerRemoveItem(cid, config.item2, config.qtd2) then 
			doTeleportThing(cid, config.tp2) -- não mexa.
		else
			selfSay("Você não tem "..config.qtd2.." {"..getItemNameById(config.item2).."s}.", cid) -- msg que retorna caso ele não tenha o item.
		end
	elseif msgcontains(msg, 'ir3') then -- o que ele tem que falar.
		if doPlayerRemoveItem(cid, config.item3, config.qtd3) then 
			doTeleportThing(cid, config.tp3) -- não mexa.
		else
			selfSay("Você não tem "..config.qtd3.." {"..getItemNameById(config.item3).."s}.", cid) -- msg que retorna caso ele não tenha o item.
		end
end
------------#*#Fim do NPC#*#--------------
return true
end


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

Feito isso, vá em data/npcs copia um arquivo.xml e renomeia ele para Teleport. Abra com o bloco de notas ou outro editor, e cole este arquivo:


<?xml version="1.0" encoding="ISO-8859-1"?>
<npc name="Gerson" script="data/npc/scripts/tp.lua" walkinterval="3000" floorchange="0">
	<health now="100" max="100"/>
	<look type="367" head="0" body="38" legs="114" feet="94" addons="0"/>
	<parameters>
		<parameter key="message_greet" value="Eu posso levar você para {ir1}, {ir2}, {ir3}."/>
		<parameter key="message_farewell" value="Adeus!"/>
		<parameter key="message_walkaway" value="Que bons ventos o levem!"/>
	</parameters>
</npc> 

Configurando o arquivo do npc:

Tudo é feito aqui:


------------#Configurações#----------------
local config = {
	tp1 = {x=100, y=100, z=7}, -- coordenadas pra onde ele irá ao falar aonde está "ir".
	tp2 = {x=100, y=100, z=7}, -- coordenadas pra onde ele irá ao falar aonde está "ir2".
	tp3 = {x=100, y=100, z=7},  -- coordenadas pra onde ele irá ao falar aonde está "ir3".
	item1 = 2160,  -- id do item 1
	item2 = 2148, -- id do item 2
	item3 = 2158, -- id do item 3
	qtd1 = 2, -- quantidade a ser removida do item 1
	qtd2 = 5, -- quantidade a ser removida do item 2
	qtd3 = 7, -- quantidade a ser removida do item 3
}
----------#Fim das configurações#---------- 

Em tp1, tp2, tp3 coloque a posição de cada lugar que ele será mandado.
Em item1, item2, item3 coloque o ID do item que você quer que seja removido para teleportar o jogador.
Em qtd1, qtd2, qtd3 coloque apenas a quantidade a ser removida.

Bom galera, este é meu primeiro script espero que gostem!!

@Edit
Hoje dei uma editada no NPC e removi 10 linhas. Gostaria que me dessem ideias de como melhorar este NPC, ou criar outros.

 

nao tira tp e nao remove item

 

Link para o comentário
Compartilhar em outros sites

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