Не знаю как на русский перевели Picked, но именно этот вариант нужен для работы с юнитами в группе с помощью "Выбрать каждого юнита ... несколько действий". Скорее всего "выбранный юнит".
В бж for group нет утечек, туда лишь добавили условие по уничтожению группы если bj_wantDestroyGroup равна true. Но следующие функции вызывают утечку, например, выбрать всех юнитов на карте, там создаётся локальная группа которая никуда не девается
Изначально было как обычно, через множество групп с нужной выборкой и их очистку. Но было падение фпса, спустя определенное время игры. С помощью счетчика хендлов выяснили что "Pick every unit in" вызывает утечки. Был предложен такой вот метод выбора всех юнитов через локалку и с помощью ifthenelse отсеивать нужных. В принципе помогло с фпсом. Он стабильный. Но вот видимо все эти переборы вызывают микрофризы.
А утечки точно из-за самого выбора? Насколько знаю, нативные функции утечек не вызывают, а BJ реализация ForGroup вроде без утечек...
Мб дело в обработке группы было?
И на счёт групп - пробовали выделить заранее штук сто-двести глобальных групп и использовать по необходимости? Без создания новых.
Кстати, GetUnitsInRangeOfLocMatching() вроде вызывает утечку. Это получение группы юнитов, находящихся внутри окружности с радиусом и подходящих по условию. Утечка в том, что возвращается локальная переменная. Лечится как раз использованием глобальной переменной. (Глобальной переменной присваивается значение локальной, локальная обнуляется, глобальная возвращается) Venommm:
Если такой способ действительно эффективней, можно пожалуйста самый элементарный пример, хотябы в виде скрина.
Вам ну гуи, да? По моему, на гуи так не получится. Насколько помню, GroupEnumUnitsInRange() и ForGroup() нет в действиях, а аналоги утечны. Но я могу и ошибаться, сужу по коду в Blizzard.j, а не по тестам.
Просто целое число, привязанное к юниту. Использовать можно соответствующе - хранить там какое-то значение.
Но так как это число одно для каждой единицы, это не всегда удобно.
Можно сделать массив и перебирать юнитов порциями штук по 50 за раз вместо 500 за раз, распределив работу.
Типа каждые 0.01 сек отсчитал 50 юнитов, все, дальше в следующую долю секунды следующие 50 юнитов, и этот счетчик обнулять раз в секунду, возвращаясь в начало круга, чтобы каждый юнит обрабатывался один раз в секунду. Рисовать в гуи я это все конечно не буду.
Зачем? Имхо, лучше при получении ауры сохранять владельца, а потом проверять окружающих и раздавать баффы/дебаффы.
В общем я могу предположить, что это какой-то циклический триггер, а конкретных причин может быть бесконечно много, без карты что-либо сказать невозможно.
В таких случаях вар зачастую просто вылетает. Хотя мб и не всегда.
>Возможна какая-та мелочь, из-за которой просто-напросто отваливается варик по какой-либо причине, Но я её найти не могу в этом-то и проблема. Если вы захочете мне помочь в данной проблеме то могу скинуть исходник.
А это когда началось? Посмотрите что меняли в карте в тот момент.
map_maiker, склоны = "искривление" + модель склона. Для летающих делаешь триггер корректирующий высоту полета. Воду из катомных моделей собирать надо будет.
Я такие советы и читал и слышал. Речь же не про имитацию, а вопрос вообще не про это.
Вообще мне кажется, что мемхаком как-то можно менять рельеф, всё же работа с памятью... Хз правда как найти где в памяти это хранится... Но здесь и не про это речь.
Ну если написано "фиксировать", то да. Но справедливости ради - я не проверял это, просто знаю что такая возможность есть, заблокировать сам интерфейс передачи ресов и контроля.
local integer i = 0
loop
exitwhen i == 10
if GetHeroInt(Pets[Player(i)]) >= GetNeedInt() then
call GivePrize2Player(Player(i))
else
call GiveFine2Player(Player(i))
i = i + 1
endloop
Сразу оговорюсь, если молот - дамми юнит, то при повороте (смене направления) он не будет лететь, как оригинальный молот бурь, ибо оригинальный сворачивает по кругу(как пангольер в доте 2), юнит же будет разворачиваться быстро.
По идее ничего не мешает придумать подходящий алгоритм полёта. rsfghd:
допустим, переменную целочисленной на 1, и если юнит получил урон и эта переменная равна 1, то урон был от абилки
Если речь про глобальные переменные, то звучит как не очень идея. Если мультииспользование подразумевается.
А в чём проблема-то? В константах есть длительность суток, в триггерах можно выставить время суток. Питомцев хранишь в массиве, в триггере обращаешься к ячейкам массива (индекс - номер игрока) и чекаешь инту петов.
Да всё то же, думаю как можно динамически менять рельеф. Ну то есть уровни рельефа, а не искривления и тайлы. quq_CCCP:
зачем тебе что то вкладывать в карту?, вовсе одна идея тупее другой, все что надо должно быть в карте, нет никакой надобности туда потом чето загружать, это тупость.
Я не про это. Я про то, что в саму карту положить скрипт/прогу, а потом запустить.
quq_CCCP, ясно. Просто идея была в том, чтобы использовать только то, что можно вложить в карту.
Кстати, а порядок файлов в архиве можно менять? Например, чтобы дописать в конец нужное.
» WarCraft 3 / Спавн юнитов из области в другую область
» WarCraft 3 / Воскрешение в форме друида
Ред. map_maiker
» WarCraft 3 / есть ли что то похожее на BlzGetMouseFocusUnit()
» WarCraft 3 / Группа из N-ых юнитов считаеться как 1-н.
И связываешь всех в отряде эмпатией.
Ред. map_maiker
» WarCraft 3 / Лагает из-за большой группы
rsfghd:
» WarCraft 3 / Группа из N-ых юнитов считаеться как 1-н.
Гляньте эту ссылку: xgm.guru/p/wc3/detachsys
Там система отрядов DoW заявлена, но мб подойдёт.
» WarCraft 3 / Лагает из-за большой группы
Мб дело в обработке группы было?
Venommm:
» WarCraft 3 / пользовательский параметр боевой единицы
Но так как это число одно для каждой единицы, это не всегда удобно.
» WarCraft 3 / Лагает из-за большой группы
» WarCraft 3 / Группа из N-ых юнитов считаеться как 1-н.
» WarCraft 3 / Лагает из-за большой группы
» WarCraft 3 / Лагает из-за большой группы
» WarCraft 3 / Перенос имени на другую карту
» WarCraft 3 / Карта может зависнуть на некоторых ПК после 12 минуты
А это когда началось? Посмотрите что меняли в карте в тот момент.
» WarCraft 3 / Самый сложный вопрос на XGM :D
» WarCraft 3 / Сломался редактор
» WarCraft 3 / Отследить удар рукой
» WarCraft 3 / Запуск .exe из архива карты
Вообще мне кажется, что мемхаком как-то можно менять рельеф, всё же работа с памятью... Хз правда как найти где в памяти это хранится... Но здесь и не про это речь.
» WarCraft 3 / Запрет изменения общих войск
» WarCraft 3 / Самый сложный вопрос на XGM :D
loop
exitwhen i == 10
if GetHeroInt(Pets[Player(i)]) >= GetNeedInt() then
call GivePrize2Player(Player(i))
else
call GiveFine2Player(Player(i))
i = i + 1
endloop
» WarCraft 3 / Отследить удар рукой
rsfghd:
» WarCraft 3 / Самый сложный вопрос на XGM :D
» WarCraft 3 / Запрет изменения общих войск
» WarCraft 3 / Запуск .exe из архива карты
quq_CCCP:
» WarCraft 3 / Запуск .exe из архива карты
Кстати, а порядок файлов в архиве можно менять? Например, чтобы дописать в конец нужное.