Quando o zombie event inicia e aparece da uns erros na distro esse aki:
[22/10/2013 05:42:32] [Error - CreatureScript Interface] [22/10/2013 05:42:32] data/creaturescripts/scripts/zombie.lua:onStatsChange [22/10/2013 05:42:32] Description: [22/10/2013 05:42:33] data/lib/032-position.lua:2: attempt to index global 'position' (a nil value) [22/10/2013 05:42:33] stack traceback: [22/10/2013 05:42:33] data/lib/032-position.lua:2: in function 'isInArea' [22/10/2013 05:42:33] data/creaturescripts/scripts/zombie.lua:17: in function <data/creaturescripts/scripts/zombie.lua:15>
e tambem os players pode atacar os zombies sendo que ja colocquei no-pvp e no-logout la na area e os zombies atacam os players e eles nao vao pro templo.
Eu tentei arrumar isso ai so que so deu em merda.
Aki o zombie.lua
function isInRange(pos, fromPosition, toPosition)
return (position.x >= fromPosition.x and position.y >= fromPosition.y and position.z >= fromPosition.z and position.x <= toPosition.x and position.y <= toPosition.y and position.z <= toPosition.z)
end
function getDistanceBetween(firstPosition, secondPosition)
local x, y = math.abs(firstPosition.x - secondPosition.x), math.abs(firstPosition.y - secondPosition.y)
local diff = math.max(x, y)
if(firstPosition.z ~= secondPosition.z) then
diff = diff + 9 + 6
end
return diff
end
function getDirectionTo(pos1, pos2)
local dir = NORTH
if(pos1.x > pos2.x) then
dir = WEST
if(pos1.y > pos2.y) then
dir = NORTHWEST
elseif(pos1.y < pos2.y) then
dir = SOUTHWEST
end
elseif(pos1.x < pos2.x) then
dir = EAST
if(pos1.y > pos2.y) then
dir = NORTHEAST
elseif(pos1.y < pos2.y) then
dir = SOUTHEAST
end
else
if(pos1.y > pos2.y) then
dir = NORTH
elseif(pos1.y < pos2.y) then
dir = SOUTH
end
end
return dir
end
function getCreatureLookPosition(cid)
return getPosByDir(getThingPos(cid), getCreatureLookDirection(cid))
end
function getPosByDir(fromPosition, direction, size)
local n = size or 1
local pos = fromPosition
if(direction == NORTH) then
pos.y = pos.y - n
elseif(direction == SOUTH) then
pos.y = pos.y + n
elseif(direction == WEST) then
pos.x = pos.x - n
elseif(direction == EAST) then
pos.x = pos.x + n
elseif(direction == NORTHWEST) then
pos.y = pos.y - n
pos.x = pos.x - n
elseif(direction == NORTHEAST) then
pos.y = pos.y - n
pos.x = pos.x + n
elseif(direction == SOUTHWEST) then
pos.y = pos.y + n
pos.x = pos.x - n
elseif(direction == SOUTHEAST) then
pos.y = pos.y + n
pos.x = pos.x + n
end
return pos
end
function doComparePositions(pos, posEx)
return pos.x == posEx.x and pos.y == posEx.y and pos.z == posEx.z
end
function getArea(pos, rangeX, rangeY)
local t = {}
for i = (pos.x - rangeX), (pos.x + rangeX) do
for j = (pos.y - rangeY), (pos.y + rangeY) do
table.insert(t, {x = i, y = j, z = pos.z})
end
end
return t
end
@------------------------------------Resolvido------------------------------------------
Ja resolvi esse meu problema esta aqui embaixo a soluçao caso alguem esteja com o mesmo problema(e meio improvavel).
data/creaturescripts/scripts/onthink.lua
function onThink(cid) local target = getCreatureTarget(cid) if(target ~= 0 and not isPlayer(target)) then doRemoveCreature(target) end return true end
data/creaturescripts/scripts/ondeath.lua
function onDeath(cid) setZombiesToSpawnCount(getZombiesToSpawnCount() + 2) doCreatureSay(cid, "I'll be back!", 19) return true end
tags:
<event type="think" name="ZombieThink" event="script" value="zombie/onthink.lua"/> <event type="death" name="ZombieDeath" event="script" value="zombie/ondeath.lua"/>
e adicione isso no monster zombie event:
<script> <event name="ZombieThink"/> <event name="ZombieDeath"/> </script>
Acho que e so eu mesmo que tinha esse problema mesmo so muito burro.