Untitled
unknown
plain_text
10 months ago
3.5 kB
4
Indexable
-- 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)
Editor is loading...
Leave a Comment