Привет народ. на всех сборках перестало определять мобцов рядом по условию "количество панелей существ в радиусе"
Всё остальное работает исправно( Подскажите куда копать? в сборках ничего не менялось. Новые создавал для проверки- не помогло.
Определение количесва врагов в радиусе
Определение количесва врагов в радиусе
- Вложения
-
- Снимок экрана 2023-11-25 003749.png (17.03 КБ) 4880 просмотров
Re: Определение количесва врагов в радиусе
Привет. Это приколюха от близов, итемы в бою теперь не возвращают дистанцию.
Можно конечно сделать проверку через какой нибудь из своих спеллов до неймплейтов, но у вара такого спелла вроде нету. Если тебя устроит, то могу предложить сделать наоборот, проверить сколько неймплейтов в бою не попадают в радиус твоего спелла ("Героический бросок" 8-30м). Получается условие будет срабатывать когда мобы находятся возле тебя до 8 метров или если дальше 30. Не думаю что сильно часто будет ситуация встречаться когда второй моб на такой большой дистанции будет стоять.
UPD
если к этому добавить второе условие с проверкой дистанции до неймплейтов спелла ("Провокация" 0-30м) тогда будет всё нормально работать в любой ситуации.
Можно конечно сделать проверку через какой нибудь из своих спеллов до неймплейтов, но у вара такого спелла вроде нету. Если тебя устроит, то могу предложить сделать наоборот, проверить сколько неймплейтов в бою не попадают в радиус твоего спелла ("Героический бросок" 8-30м). Получается условие будет срабатывать когда мобы находятся возле тебя до 8 метров или если дальше 30. Не думаю что сильно часто будет ситуация встречаться когда второй моб на такой большой дистанции будет стоять.
Код: Выделить всё
function CheckUnitsIsNotInRange(spellid)
local UnitsInRange = 0
for i = 1,40 do
if UnitExists("nameplate"..i) then
if MyIsSpellInRange(spellid, "nameplate"..i) == 0 and UnitAffectingCombat("nameplate"..i) then
UnitsInRange = UnitsInRange + 1
end
end
end
return UnitsInRange
end
если к этому добавить второе условие с проверкой дистанции до неймплейтов спелла ("Провокация" 0-30м) тогда будет всё нормально работать в любой ситуации.
Код: Выделить всё
function CheckUnitsInSpellRange(spellid)
local UnitsInRange = 0
for i = 1,40 do
if UnitExists("nameplate"..i) then
if MyIsSpellInRange(spellid, "nameplate"..i) == 1 and UnitAffectingCombat("nameplate"..i) then
UnitsInRange = UnitsInRange + 1
end
end
end
return UnitsInRange
end
Re: Определение количесва врагов в радиусе
Код: Выделить всё
function CountNearbyMobs(radius)
local count = 0
local units = {"target", "focus", "mouseover"} -- Базовые цели для проверки
local playerX, playerY, playerZ = UnitPosition("player")
for i = 1, GetNumGroupMembers() do
local unit = "party" .. i
if UnitExists(unit) and not UnitIsDead(unit) and not UnitIsPlayer(unit) then
local unitX, unitY, unitZ = UnitPosition(unit)
local distance = math.sqrt((unitX - playerX)^2 + (unitY - playerY)^2 + (unitZ - playerZ)^2)
if distance <= radius then
count = count + 1
end
end
end
for _, unit in ipairs(units) do
if UnitExists(unit) and not UnitIsDead(unit) and not UnitIsPlayer(unit) then
local unitX, unitY, unitZ = UnitPosition(unit)
local distance = math.sqrt((unitX - playerX)^2 + (unitY - playerY)^2 + (unitZ - playerZ)^2)
if distance <= radius then
count = count + 1
end
end
end
print("Количество существ в радиусе " .. radius .. ": " .. count)
return count
end
Чтобы не выводить лишнюю информацию
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость