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