[8.22] Guarda De Cidade

tibiaa4e
em NPCs, monsters e raids

tibiaa4e

Ex amante de Tibia
avatar
Conde
Conde

INFOS

Grupo: CondeRegistrado: 18/12/05Posts: 912Gênero: MasculinoChar no Tibia: Kohzete

Esse npc achei muito interressante e não é meu

 

Peguei no otfans

 

Ele mata pks,monstros que chegam perto dele

 

Ele é um npc guarda

Funciona apenas em TFS 0.20 +

 

 

Em npcs adicione xxx.xml

 

<?xml version="1.0" encoding="UTF-8"?>
<npc name="Defender Sauron" script="data/npc/scripts/defender.lua" walkinterval="2000" floorchange="0">
<health now="100" max="100"/>
<look type="130" head="114" body="114" legs="114" feet="114" addons="3"/>
<parameters>
	<parameter key="message_greet" value="Hello |PLAYERNAME|. I'm defender of Kni. I'm busy, don't waste my time!"/>
	<parameter key="message_walkaway" value="Good bye."/>
	<parameter key="HitInterval" value="1000" />
	<parameter key="ShootEffect"	  value="31" /> <!-- CONST_ANI_SUDDENDEATH -->
	<parameter key="HitEffect"	 value="17" /> <!-- CONST_ME_MORTAREAR -->
	<parameter key="TypeDmg" value="1024" /> <!-- COMBAT_HOLYDAMAGE -->
	<parameter key="minDamage" value="150" />
	<parameter key="maxDamage" value="700" />
	<parameter key="sayText" value="Exori Vis" />
	<parameter key="multiAttack" value="1" />
	<parameter key="hitSkulledPlayer" value="1" />
	<parameter key="minHeal" value="50" />
	<parameter key="maxHeal" value="150" />
	<parameter key="dmgRadiusX" value="7" />
	<parameter key="dmgRadiusY" value="5" />
	<parameter key="healRadiusX" value="3" />
	<parameter key="healRadiusY" value="3" />
</parameters>
</npc>

 

E npcs/scripts adicione defender.lua

NpcSystem.parseParameters(npcHandler)

local guard = defender:new()

guard:setHitInterval(getNpcParameter("HitInterval"))
guard:setShootEffect(getNpcParameter("ShootEffect"))
guard:setHitEffect(getNpcParameter("HitEffect"))
guard:setTypeDmg(getNpcParameter("TypeDmg"))
guard:setDamage(getNpcParameter("minDamage"),getNpcParameter("maxDamage"))
guard:setSayText(getNpcParameter("sayText"))
guard:setHeal(getNpcParameter("minHeal"),getNpcParameter("maxHeal"))
guard:setHitSkulledPlayer(getNpcParameter("hitSkulledPlayer"))
guard:setMultiAttack(getNpcParameter("multiAttack"))
guard:setDmgRadius(getNpcParameter("dmgRadiusX"),getNpcParameter("dmgRadiusY"))
guard:setHealRadius(getNpcParameter("healRadiusX"),getNpcParameter("healRadiusY"))

function onThink()
guard:onThink(getNpcCid())
npcHandler:onThink()
end

function onCreatureSay(cid, type, msg)	 npcHandler:onCreatureSay(cid, type, msg) end

npcHandler:addModule(FocusModule:new())

 

E em /data/npc/lib/npc.lua adicione na primeira linha :

dofile('data/npc/lib/creature.lua')

 

na mesma pasta crie creature.lua e adicione ;

 

-- @ Mehah and Gesior

function OTSYS_TIME()
	return os.clock()*1000
end

defender = {
	cid = 0,
	targetList = {},
	targetTime = OTSYS_TIME(),
	hitInterval = 1000,
	shootEffect = CONST_ANI_THROWINGSTAR,
	hitEffect = CONST_ME_HITAREA,
	typeDmg = COMBAT_PHYSICALDAMAGE,
	minDmg = 300, maxDmg = 1200,
	sayText = "",
	minHeal = 1, maxHeal = 10,
	hitSkulledPlayer = 1,
	multiAttack = 1,
	dmgRadiusX = 7,
	dmgRadiusY = 5,
	healRadiusX = 3,
	healRadiusY = 3,
}

function defender:new()
	local obj = {}
	setmetatable(obj, self)
	self.__index = self
	return obj
end

function defender:onThink(_cid)
	if self.cid == 0 then
		self.cid = _cid
		return
	end

	local _time = OTSYS_TIME()
	if (_time - self.targetTime) > self.hitInterval then
		self.targetTime = _time
		local position = getCreaturePosition(self.cid)
		local creature = {}
		local pos = {x = 0, y = 0, z = 0, stackpos = 0}
		if self.minDmg > 0 and self.maxDmg > 0 then
			self:clearTargetList()
			for x = -self.dmgRadiusX, self.dmgRadiusX do
				for y = -self.dmgRadiusY, self.dmgRadiusY do
					if not (x == 0 and y == 0) then
						pos = {x = position.x+x, y = position.y+y, z = position.z, stackpos = STACKPOS_TOP_CREATURE}
						creature = getTopCreature(pos)
						if (creature.type == 2) or (creature.type == 1 and self.hitSkulledPlayer == 1 and getPlayerSkullType(creature.uid) > 0) then
							if self.multiAttack ~= 1 and #self.targetList > 0 then
								break
							end
							self:addTarget(creature.uid)
							self:doSendDamage(creature.uid)
						end
					end
				end
			end
			if #self.targetList > 0 then
				if self.sayText ~= "" then
					doCreatureSay(self.cid, self.sayText, TALKTYPE_ORANGE_1)
				end
			end
		end

		if self.minHeal > 0 and self.maxHeal > 0 then
			self:clearTargetList()
			for x = -self.healRadiusX, self.healRadiusX do
				for y = -self.healRadiusY, self.healRadiusY do
					if not (x == 0 and y == 0) then
						pos = {x = position.x+x, y = position.y+y, z = position.z, stackpos = STACKPOS_TOP_CREATURE}
						creature = getTopCreature(pos)
						if (creature.type == 1) then
							self:doHeal(creature.uid)
						end
					end
				end
			end
		end
	end
end

function defender:doSendDamage(target)
	if isCreature(target) == TRUE then
		local hitDmg = math.random(self.minDmg, self.maxDmg)
		if getCreatureHealth(target) <= hitDmg then
			doSetCreatureDropLoot(target, 0)
		end
		doSendDistanceShoot(getCreaturePosition(self.cid), getCreaturePosition(target), self.shootEffect)
		doTargetCombatHealth(self.cid, target, self.typeDmg, -hitDmg, -hitDmg, self.hitEffect)
	end
end

function defender:doHeal(target)
	doTargetCombatHealth(self.cid, target, COMBAT_HEALING, self.maxHeal, self.minHeal, CONST_ME_MAGIC_BLUE)
end


function defender:addTarget(_target)
	table.insert(self.targetList,_target)
end

function defender:clearTargetList()
	self.targetList = {}
end

function defender:setHitInterval(hitInterval)
	self.hitInterval = tonumber(hitInterval)
end

function defender:setShootEffect(shootEffect)
	self.shootEffect = shootEffect
end

function defender:setHitEffect(hitEffect)
	self.hitEffect = hitEffect
end

function defender:setTypeDmg(typeDmg)
	self.typeDmg = typeDmg
end

function defender:setSayText(sayText)
	self.sayText = tostring(sayText)
end

function defender:setDamage(minDmg,maxDmg)
	self.minDmg = tonumber(minDmg)
	self.maxDmg = tonumber(maxDmg)
end

function defender:setHeal(minHeal,maxHeal)
	self.minHeal = tonumber(minHeal)
	self.maxHeal = tonumber(maxHeal)
end

function defender:setHitSkulledPlayer(hitSkulledPlayer)
	self.hitSkulledPlayer = tonumber(hitSkulledPlayer)
end

function defender:setMultiAttack(multiAttack)
	self.multiAttack = tonumber(multiAttack)
end

function defender:setDmgRadius(dmgRadiusX,dmgRadiusY)
	self.dmgRadiusX = tonumber(dmgRadiusX)
	self.dmgRadiusY = tonumber(dmgRadiusY)
end

function defender:setHealRadius(healRadiusX,healRadiusY)
	self.healRadiusX = tonumber(healRadiusX)
	self.healRadiusY = tonumber(healRadiusY)
end

 

 

Depois coloque-o no mapa

 

Quando ele mata um monstro

O monstro não dá loot

 

creditos : Gesior e Mehah

Aposentado de OTserver e Tibia

Meus melhores tutoriais
Enciclopédia Pasta Data
Tutorial de quest

Gofaia

Make your dreams alive!
avatar
Visconde
Visconde

INFOS

Grupo: ViscondeRegistrado: 15/03/08Posts: 295

Mwa ha ah ha... QUe massa, vou usar no meu ot...

 

 

 

BLoody kisses

Ps: Hoje é dia de aprender mais como aquele troço funciona...

Se o provavel nao for verdade, o improvavel deve ser.

>>> Aprenda a programar em 10 anos <<<

QUOTE
Leonardo: vc é bonita
Leonardo: sua placa mae deve ser que nem voce

Malzbier

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 18/01/08Posts: 51Char no Tibia: Sith Thonth

o cara q fez isso eh um genil parabens adorei esse npc testei aki no meu ot e funcionou


Fico empolgado em ver o grande exercito de meus inimigos crescendo, pois quem sabe no meio de tantos exista algum que possa me proporcionar uma batalha realmente desafiadora.

MonsterGame
World2: Aqui
World8:Aqui


//Malzbier

Gofaia

Make your dreams alive!
avatar
Visconde
Visconde

INFOS

Grupo: ViscondeRegistrado: 15/03/08Posts: 295

='(

 

Nao da pra usar no meu ot... Agora que eu vi que é pra 8.22...

 

 

Bloody kisses

Ps: Hoje é dia de aprender mais como aquele troço funciona...

Se o provavel nao for verdade, o improvavel deve ser.

>>> Aprenda a programar em 10 anos <<<

QUOTE
Leonardo: vc é bonita
Leonardo: sua placa mae deve ser que nem voce

DaNDaNrOxX

oi mosso
avatar
Marquês
Marquês

INFOS

Grupo: MarquêsRegistrado: 18/01/08Posts: 1455Char no Tibia: Saint Claire

Puts, um npc muito complexo, muito bom também :D

Bom de se usar em um lugar estratégico, tipo, fazer uma quest, com dois caminhos... se for pelo errado, da de cara com o npc, e o npc mata o cara... se for pelo caminho certo, continua normal :p

Se bem que só mata pk :)

Mas mesmo assim, da para fazer coisas daora com ele :p

Abraço

 

 

Entrada na equipe: 23/10/2008 Cargo: Estagiário

Promoção: 25/11/2008 Cargo: Moderador

Promoção: 21/10/2009 Cargo: Coordenador

Remoção: 09/05/2010 Motivo: Estudos

Retorno: 15/11/2010 Cargo: Moderador

Remoção: 20/12/2012.

 

 

Gofaia

Make your dreams alive!
avatar
Visconde
Visconde

INFOS

Grupo: ViscondeRegistrado: 15/03/08Posts: 295

Alguem consegue ele para 8.1???

Se nao conseguirem tudo bem, ai eu faço =D

 

 

 

 

Bloody kisses

Ps: Hoje é dia de aprender mais como aquele troço funciona...

Se o provavel nao for verdade, o improvavel deve ser.

>>> Aprenda a programar em 10 anos <<<

QUOTE
Leonardo: vc é bonita
Leonardo: sua placa mae deve ser que nem voce

gon007

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 12/09/08Posts: 2Char no Tibia: Enze Cyrus

:surprised: gostei brastante do npc mas

Cara e o seguinte eu nao sei como coloko os npc/monstros no mapa ensina aew blz cra

 

 

:smile_positivo: :smile_positivo:

post-184406-1225594552.gif

guilhermes26

avatar
Visconde
Visconde

INFOS

Grupo: ViscondeRegistrado: 25/05/08Posts: 1432Char no Tibia: Akhumura
surprised.gif gostei brastante do npc mas

Cara e o seguinte eu nao sei como coloko os npc/monstros no mapa ensina aew blz cra

 

 

smile_positivo.gif smile_positivo.gif

 

Você olhou de quando é o tópico?

tnte não postar em tópicos um pouco mais velhos.

xXxhalloweenxXx

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 04/11/08Posts: 71Char no Tibia: Damon Chas

:surprised: que rox muito maneiro.. funfo namoral.muito bom ;D

 

 

Damon%20Chas.png

 

metas..

[x]1post

[x]5 posts (SERVO)

[x]10 posts (CAMPONÊS)

[x]25 posts (CAÇADOR)

[x]50 posts (CAVALEIRO)

[ ]100 posts (BARONETE)

[ ]200 posts (BARÃO)

[ ]300 posts (VISCONDE)

[ ]400 posts (DUQUE)

[ ]600 posts (ARQUEDUQUE)

[ ]800 posts (ARISTOCRATA)

[ ]1000 posts (REGENTE)

[ ]1400 posts (SÁBIO)

[ ]1800 posts (SACERDOTE)

[ ]2500 posts (PRÍNCIPE)

 

post-208983-1227228891.gif

_ferrari_

avatar
Barão
Barão

INFOS

Grupo: BarãoRegistrado: 27/12/06Posts: 202

No 8.4 nao pegou.

Erro:

 

[21/12/2008 11:50:31] data/npc/lib/npcsystem/npcsystem.lua:68: attempt to index local 'npcHandler' (a nil value)

[21/12/2008 11:50:31] [Warning - NpcScript::NpcScript] Can not load script: data/npc/scripts/defender.lua

Objetivos:
50 posts [x]
100 posts[x]
200 posts[x]
500 posts[x]
"Um post em um fórum deve como uma saia. Longa o suficiente para cobrir o assunto, porém curta o suficiente para manter as coisas interessantes"
Gosta de mim? Foi com minha cara? Quer me matar? Use:

IcarooxDloll

GOD King
avatar
Artesão
Artesão

INFOS

Grupo: ArtesãoRegistrado: 04/01/09Posts: 133Char no Tibia: GOD King

8.1 pego =x

GOD King





kingtower.no-ip.biz

fireflames

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 22/01/09Posts: 14

Parece legal cara mais axo q nao vou usar,porque quando fazer invasão ele provavelmente irá matar, mais axei mto massa

satan666

Antichrist Superstar
avatar
Conde
Conde

INFOS

Grupo: CondeRegistrado: 07/05/08Posts: 612Char no Tibia: leviana luciferiana

vo verifica pra ve se funciona em outras versoes..

flw pela ajuda e por ter postado esse npc....

creationb.jpg

"Um Deus que usasse seu poder para criar seres humanos que de antemão sabia que seriam atormentados eternamente, e que os predestinasse a isso,



não poderia ser sábio, nem justo e tampouco amoroso.

Além de nos submeter a isso vim a nos julgar e condenar por nossos atos aos tormentos do inferno.

pra minha pessoa isso não é um Deus Pai amoroso e bondoso como o chaman, seu padrão seria muito mais inferior do que o de muitos homens."

amauri32ibate

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 01/04/08Posts: 1Char no Tibia: Odin servant

Eu dei uma adaptada pra ele rodar em 8.54, não verdade foi mais uma cortada XD

Lembrando que não testei ele em PK ainda, se alguem testar me responda.

<?xml version="1.0" encoding="UTF-8"?>
<npc name="Defender Sauron" script="data/npc/scripts/defender.lua" walkinterval="2000" floorchange="0">
<health now="100" max="100"/>
<look type="130" head="114" body="114" legs="114" feet="114" addons="3"/>
<parameters>
    <parameter key="HitInterval" value="3000" />
	<parameter key="ShootEffect"	  value="37" />
	<parameter key="HitEffect"	 value="39" />
	<parameter key="TypeDmg" value="1024" />
	<parameter key="minDamage" value="150" />
	<parameter key="maxDamage" value="700" />
	<parameter key="sayText" value="Exori San" />
	<parameter key="multiAttack" value="1" />
	<parameter key="hitSkulledPlayer" value="1" />
	<parameter key="minHeal" value="50" />
	<parameter key="maxHeal" value="150" />
	<parameter key="dmgRadiusX" value="7" />
	<parameter key="dmgRadiusY" value="5" />
	<parameter key="healRadiusX" value="3" />
	<parameter key="healRadiusY" value="3" />
</parameters>
</npc>

 

e no lua ficou sendo assim

NpcSystem.parseParameters(npcHandler)

local guard = defender:new()

guard:setHitInterval(getNpcParameter("HitInterval"))
guard:setShootEffect(getNpcParameter("ShootEffect"))
guard:setHitEffect(getNpcParameter("HitEffect"))
guard:setTypeDmg(getNpcParameter("TypeDmg"))
guard:setDamage(getNpcParameter("minDamage"),getNpcParameter("maxDamage"))
guard:setSayText(getNpcParameter("sayText"))
guard:setHeal(getNpcParameter("minHeal"),getNpcParameter("maxHeal"))
guard:setHitSkulledPlayer(getNpcParameter("hitSkulledPlayer"))
guard:setMultiAttack(getNpcParameter("multiAttack"))
guard:setDmgRadius(getNpcParameter("dmgRadiusX"),getNpcParameter("dmgRadiusY"))
guard:setHealRadius(getNpcParameter("healRadiusX"),getNpcParameter("healRadiusY"))

function onThink()
       guard:onThink(getNpcCid())

end

Infelismente ele não fala mais, porém é melhor que nada, pelo menos pra min esta sendo...

ESTE É MEU SEGUNDO POST. FAÇO SPELLS E OUTROS SCRIPT EM .LUA, VOU VER SE POST UMAS E PERDOE MEU PORTUGUÊS