Ir para conteúdo

Spells Area Attacker - Atacar monstros usando spells específicos de acordo com as circunstancias

Featured Replies

Postado
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 = {
--  {min x, max x, min y, max y, z}
 }
 
 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", "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
 
Créditos: windbotbr

Participe da conversa

Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.

Visitante
Responder

Quem Está Navegando 0

  • Nenhum usuário registrado visualizando esta página.

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 519.7k

Informação Importante

Confirmação de Termo