Em data/npc/lib, crie um arquivo chamado guard.lua e adicione o conteúdo abaixo:
Guard = {
config = {
attackspeed = 1000,
},
combat = {type = COMBAT_PHYSICALDAMAGE, min = 100, max = 200}
}[/font][/size]
[size=3][font=verdana, geneva, sans-serif]function Guard:new()
local ret = {}
setmetatable({}, {__index = self.combat})
setmetatable(ret, {__index = self})
return ret
end[/font][/size]
[size=3][font=verdana, geneva, sans-serif]function Guard:reset()
self.config = Guard.config
self.target = 0
selfFollow(0)
doTeleportThing(self.id, self.position)
end[/font][/size]
[size=3][font=verdana, geneva, sans-serif]function Guard:updateTarget()
if self.target ~= 0 then
return
end[/font][/size]
[size=3][font=verdana, geneva, sans-serif] local creatures = getSpectators(getThingPosition(self.id), self.range, self.range, false)
for i = 1, #creatures do
local target = creatures[i]
if isCreature(target) and not isNpc(target) and getCreatureSkull(target) >= 3 then
if not getTilePzInfo(getThingPosition(target)) then
if selfFollow(target) then
selfSay("I don't tolerate people like you, ".. getCreatureName(target))
self.target = target
self:attack()
break
end
end
else
self:reset()
end
end
end[/font][/size]
[size=3][font=verdana, geneva, sans-serif]function Guard:attack()
if self.target == 0 then
self:reset()
return
end[/font][/size]
[size=3][font=verdana, geneva, sans-serif] self.time = self.time or os.clock()
if self.time < os.clock() then
if getDistanceBetween(getThingPosition(self.id), getThingPosition(self.target)) == 1 then
doTargetCombatHealth(self.id, self.target, self.combat.type, -self.combat.min, -self.combat.max, CONST_ME_DRAWBLOOD)
end
self.time = self.time + (self.config.attackspeed/1000)
end
end
Agora em data/npc/scripts, crie um arquivo chamado guard.lua e adicione o conteúdo abaixo:
local guard = Guard:new()[/size][/font] [font=verdana, geneva, sans-serif][size=3]function onCreatureAppear(cid) if cid == getNpcId() then guard.id = getNpcId() guard.target = 0 guard.position = getNpcPos() end end[/size][/font] [font=verdana, geneva, sans-serif][size=3]function onCreatureDisappear(cid) if cid == guard.target then guard:reset() end end[/size][/font] [font=verdana, geneva, sans-serif][size=3]function onCreatureSay(cid, type, msg) return false end[/size][/font] [font=verdana, geneva, sans-serif][size=3]function onThink() guard:updateTarget() if guard.target ~= 0 then if isCreature(guard.target) then guard:attack() else guard:reset() end else guard:reset() end end
E em data/npc/ crie um arquivo chamado guard.xml e adicione o conteúdo abaixo:
<?xml version="1.0" encoding="UTF-8"?> <npc name="Guard" script="guard.lua" walkinterval="0" speed="200" floorchange="0"> <health now="100" max="100"/> <look type="134" head="57" body="59" legs="40" feet="76" addons="0"/> <parameters/> </npc>
Creditos: OneShot
Creio que nao é tudo que você quer mas é um guarda que ataca players com skull ai é so mudar o outfit nessa linha:
<look type="134" head="57" body="59" legs="40" feet="76" addons="0"/>
o numero do outfit se muda em looktype
Abraços







info
Grupo: Campones
Registrado: 21/10/12
Posts: 32
Reputação: 0
Char no Tibia: HellCommander
Galera, estou aqui para ver se é possível, vocês me ajudarem neste assunto.
Bom, estou á procura de um SCRIPT, onde, o npc ataca qualquer player á vista. com um outifit de ' Guarda de castelo '.
Me desculpe se eu estar postando no lugar errado, sou novo aqui!
OBS: se possível, explica bem aonde eu coloco tal scripT ( ESTE NPC, PODE SER MORTO COM OS PLAYERS ATACANDO. )
á.. e aproveitando o embalo, se possível, fazer outro NPC que ataque somente PLAYERS SKULL'S ! de outifit direfente do guarda /\. e também pode ser morto com os players atacando. e que dê xp ( configuravel ) se possível. ( este vai ser guarde de cidade )
REP +, pra quem ajudar. Obrigado pela atenção.
Se não for possível isto, me avisem. REP ++ pelo script.
Editado Outubro 22 por HellCommander