Ir para conteúdo
  • 0

Npc Guard nao reseta


surfnament

Pergunta

Alguem poderia me ajudar? Estou criando um sistema e preciso que o npc guard ataque players com a skull 1... Estou com um script que ataca , mas ele nao perde o target ate mata-lo....se perde a range da tela ele fica parado... porém se ele mata ele reseta sua posição e ai sim ele vai atras de outro target....

lib

 

 

Guard = {

config = {

attackspeed = 1000,

},

combat = {type = COMBAT_PHYSICALDAMAGE, min = 100, max = 200}

}


function Guard:new()

local ret = {}

setmetatable({}, {__index = self.combat})

setmetatable(ret, {__index = self})

return ret

end


function Guard:reset()

self.config = Guard.config

self.target = 0

selfFollow(0)

doTeleportThing(self.id, self.position)

end



function Guard:updateTarget()

if self.target ~= 0 then

return

end


local creatures = getSpectators(getThingPosition(self.id), self.range, self.range, false)

for i = 1, #creatures do

local target = creatures

if isCreature(target) and not isNpc(target) and getCreatureSkull(target) == 1 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


function Guard:attack()

if self.target == 0 then

self:reset()

return

end


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

 

 

 

 

npc

 

 

local Guard = Guard:new()


function onCreatureAppear(cid)

if cid == getNpcId() then

Guard.id = getNpcId()

Guard.target = 0

Guard.position = getNpcPos()

end

end


function onCreatureDisappear(cid)

if cid == Guard.target then

Guard:reset()

end

end


function onCreatureSay(cid, type, msg)

return false

end


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

 

 

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

0 respostass a esta questão

Posts Recomendados

Até agora não há respostas para essa pergunta

×
×
  • Criar Novo...