Consegui arrumar uma solução!!
Depois de muito tempo fazendo testes cheguei a esse resultado:
local combat = Combat()
combat:setArea(createCombatArea(AREA_CIRCLE5X5))
function getRandomPositions(cid)
local player = Player(cid)
local playerPos = player:getPosition()
local areaCircle5x5 = {} -- cria uma nova AREA_CIRCLE5X5 com base na posição do meu personagem
for i = -5, 5 do
for j = -5, 5 do
local dist = math.sqrt(i^2 + j^2)
if dist <= 5 then
table.insert(areaCircle5x5, {x=playerPos.x+i, y=playerPos.y+j, z=playerPos.z})
end
end
end
local randomPosition = {}
for i = 1, 1 do
local index = math.random(1, #areaCircle5x5)
table.insert(randomPosition, areaCircle5x5[index])
end
return randomPosition
end
function spellCallback(cid, position, count, maxCount)
if Creature(cid) and count < maxCount then
if count == 0 and math.random(0, 1) == 1 or math.random(0, 15) == 1 then
position:sendMagicEffect(CONST_ME_MORTAREA)
doAreaCombat(cid, COMBAT_DEATHDAMAGE, position, 0, -100, -100, CONST_ME_EXPLOSIONHIT)
end
count = count + 1
local area = getRandomPositions(cid) -- pega uma nova posição aleatoria com base na posição do meu personagem
local positionAreaCircle = {x= area[1].x, y= area[1].y, z= area[1].z}
local position1 = Position(positionAreaCircle)
if count > 1 and count < 81 or count > 81 and count < 145 then
addEvent(spellCallback,50, cid, position1, count, maxCount)
else
addEvent(spellCallback,math.random(1000, 2000) , cid, position1, count, maxCount)
end
if count > 141 then
addEvent(spellCallback,math.random(600, 3000) , cid, position1, count, maxCount)
end
end
end
function onTargetTile(creature, position)
local maxCount = 145 -- quantidade de execuções
spellCallback(creature:getId(), position, 0, maxCount)
end
combat:setCallback(CALLBACK_PARAM_TARGETTILE, "onTargetTile")
function onCastSpell(creature, variant, isHotkey)
return combat:execute(creature, variant)
end
Dentro do game:
@FeeTads de qualquer forma obrigado pela ajuda!