Страница 1 из 1
Определение количесва врагов в радиусе
Добавлено: 24 ноя 2023, 21:42
kio57
Привет народ. на всех сборках перестало определять мобцов рядом по условию "количество панелей существ в радиусе"
Всё остальное работает исправно( Подскажите куда копать? в сборках ничего не менялось. Новые создавал для проверки- не помогло.
Re: Определение количесва врагов в радиусе
Добавлено: 26 ноя 2023, 18:52
noname123
Привет. Это приколюха от близов, итемы в бою теперь не возвращают дистанцию.
Можно конечно сделать проверку через какой нибудь из своих спеллов до неймплейтов, но у вара такого спелла вроде нету. Если тебя устроит, то могу предложить сделать наоборот, проверить сколько неймплейтов в бою не попадают в радиус твоего спелла ("Героический бросок" 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
UPD
если к этому добавить второе условие с проверкой дистанции до неймплейтов спелла ("Провокация" 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: Определение количесва врагов в радиусе
Добавлено: 28 авг 2024, 13:51
eminsk
kio57 писал(а): ↑24 ноя 2023, 21:42
Привет народ. на всех сборках перестало определять мобцов рядом по условию "количество панелей существ в радиусе"
Всё остальное работает исправно( Подскажите куда копать? в сборках ничего не менялось. Новые создавал для проверки- не помогло.
Код: Выделить всё
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
Команду print потом можно убрать это как отладочная информация после того как отладишь все.
Чтобы не выводить лишнюю информацию