Can you guys test it for me ? I'm not home now but I did this:
Remember to have rune item binded on your Tibia hotkeys.
init start
local Monsters = {"Swampling", "Marsh Stalker", "Water Buffalo", "Salamander", "Emerald Damselfly"}
local Players = {
Consider = true,
Distance = 10,
FloorDifference = 1,
SafeList = {"Bubble", "Eternal Oblivion"},
}
local Runes = {
{Name = "great fireball rune", Amount = 3},
}
local SpecialAreas = {
--{min x, max x, min y, max y, z}
}
local UseTargetState = false
-- DO NOT CHANGE BELOW --
local i, LastFloor, Exhaust = 1, $posz, $timems
while Runes[i] ~= nil do
Runes[i].Info = runeinfo(Runes[i].Name)
if Runes[i].Info.itemid == 0 or Runes[i].Info.castarea == 'None' or not Runes[i].Info.group:find('Attack') then
table.remove(Runes, i)
else
Runes[i].Monsters = Runes[i].Monsters or Monsters
table.lower(Runes[i].Monsters) i = i + 1
end
end
init end
auto(200, 400)
if $posz ~= LastFloor then
LastFloor, Exhaust = $posz, $timems + 2000
return
end
if $timems >= Exhaust and ($targeting or not UseTargetState) then
for _, Rune in ipairs(Runes) do
if cancast(Rune.Info) and not isinsidearea(SpecialAreas) and clientitemhotkey(Rune.Name, 'crosshair') ~= 'not found' then
if not Players.Consider or paroundfloorignore(Players.Distance, Players.FloorDifference, unpack(Players.SafeList)) == 0 then
local area = {x = 0, y = 0, z = 0, amount = 0}
for a = 0, 7 do
local i, j = -a, -a
while j <= a do
i = -a
while i <= a do
if (math.abs(j) == a or math.abs(i) == a) and (tilehasinfo($posx + i, $posy + j, $posz)) then
local posx, posy = $posx + i, $posy + j
if tileshootable(posx,posy, $posz) then
local count = 0
foreach creature c 'mfx' do
if isonspellarea(c, '3x3', false, i, j) and (#Rune.Monsters == 0 or table.find(Rune.Monsters, c.name:lower())) then
count = count + 1
end
end
if count > area.amount then
area.x, area.y, area.z, area.amount = posx, posy, $posz, count
end
end
end
if math.abs(j) ~= a then
i = i + 2 * a
else
i = i + 1
end
end
j = j+1
end
end
if area.amount >= Rune.Amount then
pausewalking(5000)
useitemon(Rune.Name, 0, ground(area.x, area.y, area.z)) waitping(1.2, 1.4)
pausewalking(0)
end
end
end
end
end