Good uplaod!
Printable View
Good uplaod!
i think line 90
elseif Spell.Hppc and $attacked.hppc <= Spell.Hppc and table.find(Spell.Monsters, $attacked.name:lower()) and $attacked.isshootable and cancastspell(Spell.object, $attacked) then
and HPPC put to 25, i think it should works
thx managed it myself
Hey Leonardo did you checked what is wrong with code? ;>
Regards
Dworak say true i had same problam, anyway its great =]
Did you guys have problem with monsters that are summoned by other thing ? I mean, swarmers are summoned by those pore stuffs. This monster can be considered in a different way by the bot so I need to know to start a fix.
no i had it with all monsters, even if i posted utito tempo 1 kolos or utito tempo 4 insectoid it shoot utito tempo on 1 insectoid too i can't put 2x utito tempo for other monsters idk why
waiting for the update of the action \o\
How can I modificate this to cast "Exevo mas san"?
I tried this but it's not working at all
init start
local Monsters = {"Dragon Hatchling", "Dragon"}
local Players = {
Consider = false,
Distance = 10,
FloorDifference = 1,
SafeList = {"Moha"},
}
local Spells = {
{Name = "exevo mas san", Amount = 2},
{Name = "exori", Amount = 1000},
{Name = "exori min", Amount = 1000},
{Name = "utito tempo", Amount = 1000},
}
local SpecialAreas = {
--{min x, max x, min y, max y, z}
}
-- DO NOT CHANGE ANYTHING BELOW THIS LINE
local i, LastFloor, Exhaust, SpellDurations = 1, $posz, $timems, {["invisible"] = 200, ["blood rage"] = 10, ["train party"] = 120, ["swift foot"] = 10, ["protector"] = 10, ["great light"] = 695, ["creature illusion"] = 180, ["protect party"] = 120, ["light"] = 370, ["magic shield"] = 200, ["strong haste"] = 22, ["haste"] = 33, ["ultimate light"] = 1980, ["sharpshooter"] = 10, ["intense recovery"] = 60, ["recovery"] = 60, ["enchant party"] = 120, ["heal party"] = 120, ["charge"] = 5}
while Spells[i] do
local info = spellinfo(Spells[i].Name)
if #info.words == 0 then
table.remove(Spells, i)
else
Spells[i].NeedDirection = table.find({"WaveSmall", "WaveVerySmall", "WaveBig", "BeamSmall", "BeamBig", "Front", "Strike"}, info.castarea) ~= nil
Spells[i].Monsters = Spells[i].Monsters or Monsters
table.lower(Spells[i].Monsters)
Spells[i].Duration = (SpellDurations[info.name:lower()] or 1) * 1000
Spells[i].Exhaust = $timems
Spells[i].Attack = info.castmode:match("Target") ~= nil
Spells[i].object = info
i = i + 1
end
end
init end
auto(200, 400)
if $posz ~= LastFloor then
LastFloor, Exhaust = $posz, $timems + 2000
return
else
for _, area in ipairs(SpecialAreas) do
local a,b,c,d,e = unpack(area)
if $posx <= b and $posx >= a and $posy <= d and $posy >= c and $posz == e then
return
end
end
end
if $timems >= Exhaust then
for i, Spell in ipairs(Spells) do
if $timems >= Spell.Exhaust and cancastspell(Spell.object) 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 = Spell.Attack and maroundspell(Spell.Name, BestDir, unpack(Spell.Monsters)) or maround(1, false, unpack(Spell.Monsters))
end
if BestAmount >= Spell.Amount then
while $self.dir ~= BestDir do
turn(BestDir)
waitping()
end
cast(Spell.Name) waitping()
Spell.Exhaust = $timems + Spell.Duration
end
elseif Spell.Hppc and $attacked.hppc >= Spell.Hppc and table.find(Spell.Monsters, $attacked.name:lower()) and $attacked.isshootable and cancastspell(Spell.object, $attacked) then
cast(Spell.Name) waitping()
Spell.Exhaust = $timems + Spell.Duration
end
end
end
end
EDIT: I think everything is working perfect except parameter "Distance". How to change that to Exevo mas san Area?
It already check if they are inside the area, but this script is bugged atm, I need to do some changes. And you can delete the other spells you don't want to cast.
The best option is to put those attacks at the targeting engine, now you can set any target setting with setsettings function so this script became useless.
Hey @Leonardo!
Everything is working smooth, but I dont know how to cast "Divine Caldera" just when there are 2 or more monsters into the area! Could you help me? :D
Just go targeting -> monsters -> monster name -> Count: 2+
You can switch bettween counts etc in targeting using actions setsettings
Your welcome =]
Script updated again:
Fixed bugs with maroundspell
Checks the special areas all the time
Performs cancast with a cache of spell duration (to avoid spamming support spells if they are in the duration period)
Added UseTargetState, set it to true to use only if the targeting engine is on, false will use the script everytime.
Script will adjust Amount to 1 if you set it to 0, to avoid spelling when no monsters around.
You can use user options on the Amount for example:
{Name = "exori", Amount = tonumber(getuseroption("AmountExori"))},
If it's 0 it'll not cast spell, if it's higher or equal than 1 it'll cast.
Thanks a lot , gonna check it !! :D
so we can use Script and when you update Library all will be ok without changing script ye?
Ok, Great Thanks !
@Leonardo
There is still problem with spamming utito tempo when 1 less swarmer or lady bug?
Regards
@Leonardo
this is my code
--Area Attack
auto(100)
init start
filteruseroptions(true) -- don't disable this
local Monsters = {"Insectoid Worker", "Waspoid", "Crawler", "Spitter"}
local Players = {
Consider = getuseroption("SafeExori"),
Distance = 10,
FloorDifference = 1,
SafeList = {"Bubble", "Eternal Oblivion"},
}
local Spells = {
{Name = "exori gran", Amount = 3},
{Name = "exori", Amount = 2},
{Name = "exori min", Amount = 2},
{Name = "exori ico", Hppc = 5},
{Name = "exori hur", Hppc = 5},
{Name = "utito tempo", Amount = 5},
}
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", "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
i checked and its problem with this utito tempo but only utito rest is great
Because you are fucking my code, don't add another auto(100), if you want to to use useroptions, just remove "init start" and "init end". It should work fine, but don't add stuff on the code if you don't know how it works. I'm 100% sure my final script on the first post will work.
@Leonardo
I checked it and the problem is with that
filteruseroptions(true) -- don't disable this
local Monsters = {"Kollos", "Spidris","Spitter","Crawler","Waspoid","Insectoid Worker"}
local Players = {
Consider = getuseroption("SafeExori"),
Distance = 10,
FloorDifference = 1,
SafeList = {"Bubble", "Eternal Oblivion"},
}
local Spells = {
{Name = "exori gran", Amount = 3},
{Name = "exori", Amount = 2},
{Name = "exori gran", Amount = 2, Monsters = {"Kollos","Spidris"}},
{Name = "exori", Amount = 1, Monsters = {"Kollos","Spidris"}},
{Name = "exori min", Amount = 2},
{Name = "exori ico", Hppc = 5},
{Name = "exori hur", Hppc = 5},
{Name = "utito tempo", Amount = 5},
}
this is ok but when i do like this
filteruseroptions(true) -- don't disable this
local Monsters = {"Kollos", "Spidris","Spitter","Crawler","Waspoid","Insectoid Worker"}
local Players = {
Consider = getuseroption("SafeExori"),
Distance = 10,
FloorDifference = 1,
SafeList = {"Bubble", "Eternal Oblivion"},
}
local Spells = {
{Name = "exori gran", Amount = 3},
{Name = "exori", Amount = 2},
{Name = "exori gran", Amount = 2, Monsters = {"Kollos","Spidris"}},
{Name = "exori", Amount = 1, Monsters = {"Kollos","Spidris"}},
{Name = "exori min", Amount = 2},
{Name = "exori ico", Hppc = 5},
{Name = "exori hur", Hppc = 5},
{Name = "utito tempo", Amount = 5},
{Name = "utito tempo", Amount = 2, , Monsters = {"Kollos","Spidris"}},
}
then it don't recognize monsters and shoot utito tempo even if 2 crawlers
Look into it again:
{Name = "utito tempo", Amount = 2, , Monsters = {"Kollos","Spidris"}},
That line is being ignored, while this one is not:
{Name = "utito tempo", Amount = 5},
This one is considering the primary list, in other words: "Kollos", "Spidris","Spitter","Crawler","Waspoid","Insectoid Worker".
That's why it casts at any monster.
@Leonardo check this now
local Monsters = {"Kollos", "Spidris","Spitter","Crawler","Waspoid","Insectoid Worker"}
he cast utito tempo when 5 mosnters around him and any of them isn't on the list, only Crawler
http://i.imgur.com/wU2lKLv.jpg
i would like to use it like this
local Spells = {
{Name = "exori gran", Amount = 3, Monsters = {"Spitter","Crawler","Waspoid","Insectoid Worker"}},
{Name = "exori", Amount = 2, Monsters = {"Spitter","Crawler","Waspoid","Insectoid Worker"}},
{Name = "exori gran", Amount = 2, Monsters = {"Kollos","Spidris"}},
{Name = "exori", Amount = 1, Monsters = {"Kollos","Spidris"}},
{Name = "exori min", Amount = 2, Monsters = {"Kollos", "Spidris","Spitter","Crawler","Waspoid","Insectoid Worker"}},
{Name = "exori ico", Hppc = 5},
{Name = "exori hur", Hppc = 5},
{Name = "utito tempo", Amount = 5, Monsters = {"Kollos", "Spidris","Spitter","Crawler","Waspoid","Insectoid Worker"}},
{Name = "utito tempo", Amount = 2, Monsters = {"Kollos","Spidris"}},
}
@Dworak you got the script to cast utito tempo on 5 monsters and it got 5 monsters around, makes sense why it's using? @Leonardo if you use maround(1, false, "Rat") it will consider all monsters on screen and not just Rat, learned that from own experience and Lucas confirmed, since maround() doesn't have a multifloor consideration.
Now the issue is solved, I hope.
Yes but its reading the names of monsters from the Local Monsters so it should check it ?
there is to cheecck the monsters
BestAmount = not Spell.AttackSupport and maroundspell(Spell.Name, BestDir, unpack(Spell.Monsters)) or maround(1, false, unpack(Spell.Monsters))