Untitled
-- Skrypt combo do Xenobot: Używanie czarów w sekwencji z uwzględnieniem odległości od potwora -- Konfiguracja local manaPotionID = 268 -- ID mana potiona local spells = { {name = "utito tempo", mana = 50, cooldown = 20000, range = 7}, -- Buff czar, rzucany rzadziej, range 7 {name = "exori gran", mana = 90, cooldown = 1000, range = 5}, -- Range 5 dla exori gran {name = "exori", mana = 80, cooldown = 1000, range = 1}, -- Range 1 dla exori {name = "exori amp kor", mana = 120, cooldown = 1000, range = 4}, -- Range 4 dla exori amp kor {name = "exori min", mana = 50, cooldown = 1000, range = 1} -- Range 1 dla exori min } -- Zmienna przechowująca czas ostatniego rzucenia dla każdego czaru local lastCasts = {} for _, spell in ipairs(spells) do lastCasts[spell.name] = 0 end -- Funkcja do obliczenia odległości local function CalculateDistance(pos1, pos2) return math.sqrt((pos1.x - pos2.x)^2 + (pos1.y - pos2.y)^2 + (pos1.z - pos2.z)^2) end -- Funkcja główna Module.New("Cast Spell Combo", function(module) -- Uzyskaj pozycję gracza local playerPos = Self.Position() -- Uzyskaj listę potworów w pobliżu w zadanym zasięgu (przykład zasięgu 10) local monsters = Creature.GetMonsters(10) -- Sprawdź, czy otrzymaliśmy listę potworów if not monsters or #monsters == 0 then return -- Brak potworów w zasięgu, zakończ wykonanie tej iteracji end -- Weź najbliższego potwora (pierwszy w liście) local target = monsters[1] local targetPos = target.Position -- Oblicz odległość do celu local targetDistance = CalculateDistance(playerPos, targetPos) -- Logowanie informacji o odległości print("Odległość do celu: " .. targetDistance) -- Iteruj przez listę czarów for _, spell in ipairs(spells) do local currentTime = os.clock() * 1000 -- Sprawdź, czy mamy wystarczającą manę i spełniony cooldown if Self.Mana() >= spell.mana and (currentTime - lastCasts[spell.name]) >= spell.cooldown then -- Sprawdź, czy cel znajduje się w odpowiedniej odległości if targetDistance <= spell.range then -- Obróć się w stronę celu Self.TurnToTarget(target.ID) print("Rzucam czar: " .. spell.name) -- Logowanie, który czar będzie rzucony -- Rzuć czar Self.Say(spell.name) lastCasts[spell.name] = currentTime -- Użyj mana potiona po rzuceniu "exori gran" if spell.name == "exori gran" then print("Używam mana potiona") -- Logowanie użycia mana potiona Self.UseItemWithMe(manaPotionID) end break -- Rzuć tylko jeden czar na iterację else print("Cel jest za daleko dla czaru: " .. spell.name) -- Logowanie, jeśli cel jest za daleko end else -- Logowanie, jeśli czar nie jest możliwy do rzucenia if Self.Mana() < spell.mana then print("Za mało many do rzucenia czaru: " .. spell.name) end if (currentTime - lastCasts[spell.name]) < spell.cooldown then print("Czary muszą poczekać na cooldown: " .. spell.name) end end end end)
Leave a Comment