True, it uses utito tempo if there is other monsters even if the monsters listed is not even close from screen
Printable View
Not running for me.
Any advice?
error in Persistent script NewPersistentScript:
["local Players = {"]:NewPersistentScript:5: '}' expected (to close '{' at line 3) near 'local'
Is it possible to somehow add party to safelist, instead of names? As me and a friend is botting in a party, I don't want to get skull if someone would get kicked and the party disbanded.
Thanks! That's what I needed.
init start
local Monsters = {"Hero", "Vicious Squire", "Renegade Knight", "Vile Grandmaster", "Giant Spider", "Brimstone Bug", "Wailling Widow"}
local Players = {
Consider = true,
Distance = 10,
FloorDifference = 1,
SafeList = {"Bubble", "Eternal Oblivion"},
}
local Spells = {
{Name = "exori gran", Amount = 3},
{Name = "exori", Amount = 2},
{Name = "exori min", Amount = 3},
{Name = "exori ico", Hppc = 10},
{Name = "exori hur", Hppc = 10},
{Name = "utito tempo", Amount = 20},
}
local SpecialAreas = {
-- {min x, max x, min y, max y, z}
}
local UseTargetState = true
-- DO NOT CHANGE ANYTHING BELOW THIS LINE
local i, LastFloor, Exhaust = 1, $posz, $timems
while Spells[i] ~= nil do
Spells[i].Info = spellinfo(Spells[i].Name)
if Spells[i].Info.words == 0 then
table.remove(Spells, i)
else
Spells[i].Monsters = Spells[i].Monsters or Monsters
Spells[i].NeedDirection = table.find({"WaveSmall", "WaveMedium", "WaveVerySmall", "WaveBig", "BeamSmall", "BeamBig", "Front", "Strike"}, Spells[i].Info.castarea) ~= nil
Spells[i].AttackSupport = Spells[i].Info.group:match("Support") ~= nil
table.lower(Spells[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 _, Spell in ipairs(Spells) do
if cancast(Spell.Info) and not isinsidearea(SpecialAreas) then
if Spell.Amount and (not Players.Consider or paroundfloorignore(Players.Distance, Players.FloorDifference, unpack(Players.SafeList)) == 0) then
local BestAmount, BestDir = 0, $self.dir
if Spell.NeedDirection then
for Dir, Amount in pairs({n = 0, e = 0, s = 0, w = 0}) do
Amount = maroundspell(Spell.Name, Dir, unpack(Spell.Monsters))
if Amount > BestAmount or (Amount >= BestAmount and Dir == $self.dir) then
BestAmount, BestDir = Amount, Dir
end
end
else
BestAmount = not Spell.AttackSupport and maroundspell(Spell.Name, BestDir, unpack(Spell.Monsters)) or maround(1, false, unpack(Spell.Monsters))
end
if BestAmount >= math.max(Spell.Amount, 1) then
while $self.dir ~= BestDir do
turn(BestDir) waitping()
end
cast(Spell.Name) waitping()
end
elseif Spell.Hppc and $attacked.hppc >= math.max(Spell.Hppc, 1) and table.find(Spell.Monsters, $attacked.name:lower()) and cancast(Spell.Info, $attacked) then
cast(Spell.Name) waitping()
end
end
end
end
don't work what is wrong olny use exori hur/ico
@Leonardo would you be able to explain me how can I add special area to the script? I am hunting hive and I dont want it to shoot round stairs but I havnt got a clue how to do it, cheers!
where i must put this scripts? on scripter/persistent?
could someone help me with the special areas please? idk how to config that
Hello,
to add a Special area in which you wouldn't want to cast a spell, you would first check for the Position data of the area.
if you dont want to cast it 1 sqm around a stair which is located on:
posx: 32123
posy: 32223
posz: 7
and for 2 sqm around a stair which is located on:
posx: 33145
posy: 31248
posz: 6
then you would edit the script like this:
init start
local Monsters = {"Swampling", "Snake", "Marsh Stalker", "Water Buffalo", "Salamander", "Emerald Damselfly"}
local Players = {
Consider = true,
Distance = 10,
FloorDifference = 1,
SafeList = {"Bubble", "Eternal Oblivion"},
}
local Spells = {
{Name = "exori gran", Amount = 4},
{Name = "exori", Amount = 3},
{Name = "exori min", Amount = 2},
{Name = "exori ico", Hppc = 10},
{Name = "exori hur", Hppc = 10},
{Name = "utito tempo", Amount = 5},
}
local SpecialAreas = {
{32122, 32124, 32222, 32224, 7},
{33143, 33147, 31246, 31250, 6}
}
local UseTargetState = false
-- DO NOT CHANGE ANYTHING BELOW THIS LINE
local i, LastFloor, Exhaust = 1, $posz, $timems
while Spells[i] ~= nil do
Spells[i].Info = spellinfo(Spells[i].Name)
if Spells[i].Info.words == 0 then
table.remove(Spells, i)
else
Spells[i].Monsters = Spells[i].Monsters or Monsters
Spells[i].NeedDirection = table.find({"WaveSmall", "WaveMedium", "WaveVerySmall", "WaveBig", "BeamSmall", "BeamBig", "Front", "Strike"}, Spells[i].Info.castarea) ~= nil
Spells[i].AttackSupport = Spells[i].Info.group:match("Support") ~= nil
table.lower(Spells[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 _, Spell in ipairs(Spells) do
if cancast(Spell.Info) and not isinsidearea(SpecialAreas) then
if Spell.Amount and (not Players.Consider or paroundfloorignore(Players.Distance, Players.FloorDifference, unpack(Players.SafeList)) == 0) then
local BestAmount, BestDir = 0, $self.dir
if Spell.NeedDirection then
for Dir, Amount in pairs({n = 0, e = 0, s = 0, w = 0}) do
Amount = maroundspell(Spell.Name, Dir, unpack(Spell.Monsters))
if Amount > BestAmount or (Amount >= BestAmount and Dir == $self.dir) then
BestAmount, BestDir = Amount, Dir
end
end
else
BestAmount = not Spell.AttackSupport and maroundspell(Spell.Name, BestDir, unpack(Spell.Monsters)) or maround(1, false, unpack(Spell.Monsters))
end
if BestAmount >= math.max(Spell.Amount, 1) then
while $self.dir ~= BestDir do
turn(BestDir) waitping()
end
cast(Spell.Name) waitping()
end
elseif Spell.Hppc and $attacked.hppc >= math.max(Spell.Hppc, 1) and table.find(Spell.Monsters, $attacked.name:lower()) and cancast(Spell.Info, $attacked) then
cast(Spell.Name) waitping()
end
end
end
end