22

» WarCraft 3 / Загрузка по хэндлу в функцию

в чем смысл функции в ОП? тип попытка написать свой собственный PolledWait?
абилки делайте через таймеры
на таймер как раз можно и сохранять данные в хеш, а не на какого то TriggeringUnit
22

» WarCraft 3 / Получение координат каждого юнита в группе

DopaMine, поэтому я и добавил что
перед запуском перебора даем ей очень большое значение типа 99999.
чтобы было с чем сравнивать
нифига тред полетел
Только тогда надо модуль разницы сравнивать.
не, этого не достаточно. см код PT153 для функций расстояния
22

» WarCraft 3 / Получение координат каждого юнита в группе

DopaMine, эти глобалки будут использоваться только во время перебора. Варкрафт не выполняет сразу несколько функций одновременно если в них нету wait'ов, так что никаких пересечений не должно быть. Для перебора юнитов достаточно глобалок.
Как хранить данные в хеше для спеллов которые длятся какое-то время уже другой вопрос.
Чтобы найти ближайшего юнита, нужно еще сохранить в переменные целевую точку от которой считать расстояние.
PT153, хз можно убрать если ошибку выдает, не помню как там без jngp мб нужно мб нет
22

» WarCraft 3 / Получение координат каждого юнита в группе

DopaMine, хеш не обязательно, такие вещи можно делать через глобальные переменные, например для координаты x делаем в редакторе переменных minx, в коде она будет называться udg_minx.
перед запуском перебора даем ей очень большое значение типа 99999.
затем внутри перебора сравниваем с X юнита:
local real x = GetUnitX(GetEnumUnit())
if x < udg_minx then
	udg_minx = x
	udg_minunit = GetEnumUnit()
else
endif
но тут вопрос в том зачем вообще искать наименьшую координату? мб тебе нужно найти ближайшего юнита к кастеру или тип того?
22

» WarCraft 3 / Получение координат каждого юнита в группе

DopaMine, не, не последующий код.
Код для выбранных юнитов пишется в отдельной функции.
То что в гуях там все в одном триггере это для вида, на самом деле там создается редактором отдельная функция и поэтому при переборе групп на гуях не действуют локалки из вне перебора.
code
function ДляКаждогоЮнита takes nothing returns nothing
	set X = GetUnitX(GetEnumUnit())
endfunction

function ТвояПерваяФункцияЗапускающаяПеребор ...
	...
	ForGroup(ТвояГруппа, function ДляКаждогоЮнита)
	...
endfunction
22

» WarCraft 3 / Получение координат каждого юнита в группе

в ГУИ картинках есть категория Отряд, там есть "Pick every unit in ..."
а на джассе ForGroup(g, function f) перебирает отряд g и запускает для каждого юнита по очереди функцию f
22

» WarCraft 3 / Получение координат каждого юнита в группе

можно, а в чем сложность? сделать две глобалки для X и Y, через перебор группы сравнивать координаты
22

» WarCraft 3 / Что за ошибка?

А разве я не устраняю утечки таким образом?((
Если нужно вернуть значение из переменной без утечек, она должна быть либо глобалкой либо аргументом функции. Локалку просто не получится обнулить тк после возврата выполнение переходит обратно в точку вызова функции, а вот аргументы функции обнулять не нужно.
22

» WarCraft 3 / Fighting for Azeroth: 3D

Версия 1.06
  • деревья и дома теперь становятся прозрачными чтобы не загораживать обзор
  • все герои теперь имеют несколько атак с воздуха, на все кнопки WASD
  • фикс багов, изменения приемов, новый лоадскрин, уменьшена скорость бега вперед
22

» WarCraft 3 / Подсчёт объектов

если кто-то вставляет чит непосредственно в .j файл карты, то никакие дефайны не помогут тк они же отслеживаются при сохранении карты с джассхелпером
22

» WarCraft 3 / Подсчёт объектов

я думаю автору нужен счетчик утечек киньте ссылку кто-нить
либо он хочет удостовериться что удаление/добавление объекта выполнено во время игры, и для этого ему нужен счетчик
22

» WarCraft 3 / Вопрос "Wait until" (наверное ;D)

MoreDoPass, для этого и нужны массивы, чтобы было MUI
  1. первый триггер сохраняет все нужные данные на один общий индекс, например PlantmineCount, и увеличивает этот индекс на один.
  2. второй триггер каждые 0,0Х секунд пробегается по массиву от нуля до PlantmineCount, проверяет расстояние и если оно подходит, делает нужные действия. После этого, чтобы тот же элемент не обрабатывался заново, нужно заменить его во всех массивах на последний и уменьшить PlantmineCount на 1. И счетчик цикла тоже уменьшить на 1, иначе этот последний элемент будет пропущен тк индекс по циклу уйдет дальше.
22

» WarCraft 3 / Вопрос "Wait until" (наверное ;D)

Бред какой-то сделал. Зачем в качестве индекса массивов используется массив plantmineX[plantminey]?
С массивами можно нормально сделать и без локалок, но надо понимать что и куда идет, а тут просто как попало наложены массивы. Области какие-то создаются. Используйте Distance between points.
ну и утечки тут еще докучи, надо удалять location'ы, но сперва конечно надо саму логику починить. для начала переделать все. Использовать отдельный триггер с таймером который будет пробегаться по массиву циклом и проверять что снаряд долетел до цели.
22

» WarCraft 3 / Вопрос "Wait until" (наверное ;D)

скинь скриншоты своих триггеров чтобы было видно где ты накосячил с переменными
22

» WarCraft 3 / Предел счётчика разрушаемых декораций в регионе(Чо?)

хз почему там предел всего в 64, неужто регистрация события такая тяжелая
bj_MAX_DEST_IN_REGION_EVENTS=64
но можно заносить декорации в массив а потом таймером добавлять события в триггер, раз уж нельзя сразу зарегистрировать все декорации
карта-пример: в инициализации сражения запускается моя функция
RegisterDestructableDeathInRect(rect r, trigger t)
которая добавляет все декорации в области в массив, а таймер затем по нему пробегается и порциями регистрирует события на указанный триггер
триггер test изначально не имеет событий, они добавляются таймером. триггер создает пехотинцев на месте убитых декораций.
на клетки на севере карты триггер не действует тк они вне области.
Загруженные файлы
22

» WarCraft 3 / Нужно ли очищать группу "разрушаемых"?

TeX13, в жнгп есть Function list
BJ функции должны лежать в blizzard.j откуда и идет сокращение BJ
22

» WarCraft 3 / Нужно ли очищать группу "разрушаемых"?

никакой группы там нет, но создается рект (прямоугольник/область) и не обнуляется в конце, надо переписать функцию с обнулением set r = null в конце и использовать вместо стандартной
такая ерунда внутри каждой второй BJ функции
Загруженные файлы
22

» WarCraft 3 / Событие - приводит способность в действие - изменить тип урона

в смысле, изменить тип (Обычная, Магическая, Герой) у урона способности и сделать чтобы там Огненный столб наносил физический урон?
делайте способность на триггерах и наносите какой хотите