в чем смысл функции в ОП? тип попытка написать свой собственный PolledWait?
абилки делайте через таймеры
на таймер как раз можно и сохранять данные в хеш, а не на какого то TriggeringUnit
DopaMine, эти глобалки будут использоваться только во время перебора. Варкрафт не выполняет сразу несколько функций одновременно если в них нету wait'ов, так что никаких пересечений не должно быть. Для перебора юнитов достаточно глобалок.
Как хранить данные в хеше для спеллов которые длятся какое-то время уже другой вопрос.
Чтобы найти ближайшего юнита, нужно еще сохранить в переменные целевую точку от которой считать расстояние.
PT153, хз можно убрать если ошибку выдает, не помню как там без jngp мб нужно мб нет
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
но тут вопрос в том зачем вообще искать наименьшую координату? мб тебе нужно найти ближайшего юнита к кастеру или тип того?
DopaMine, не, не последующий код.
Код для выбранных юнитов пишется в отдельной функции.
То что в гуях там все в одном триггере это для вида, на самом деле там создается редактором отдельная функция и поэтому при переборе групп на гуях не действуют локалки из вне перебора.
code
function ДляКаждогоЮнита takes nothing returns nothing
set X = GetUnitX(GetEnumUnit())
endfunction
function ТвояПерваяФункцияЗапускающаяПеребор ...
...
ForGroup(ТвояГруппа, function ДляКаждогоЮнита)
...
endfunction
в ГУИ картинках есть категория Отряд, там есть "Pick every unit in ..."
а на джассе ForGroup(g, function f) перебирает отряд g и запускает для каждого юнита по очереди функцию f
Если нужно вернуть значение из переменной без утечек, она должна быть либо глобалкой либо аргументом функции. Локалку просто не получится обнулить тк после возврата выполнение переходит обратно в точку вызова функции, а вот аргументы функции обнулять не нужно.
я думаю автору нужен счетчик утечек киньте ссылку кто-нить
либо он хочет удостовериться что удаление/добавление объекта выполнено во время игры, и для этого ему нужен счетчик
MoreDoPass, для этого и нужны массивы, чтобы было MUI
первый триггер сохраняет все нужные данные на один общий индекс, например PlantmineCount, и увеличивает этот индекс на один.
второй триггер каждые 0,0Х секунд пробегается по массиву от нуля до PlantmineCount, проверяет расстояние и если оно подходит, делает нужные действия. После этого, чтобы тот же элемент не обрабатывался заново, нужно заменить его во всех массивах на последний и уменьшить PlantmineCount на 1. И счетчик цикла тоже уменьшить на 1, иначе этот последний элемент будет пропущен тк индекс по циклу уйдет дальше.
Бред какой-то сделал. Зачем в качестве индекса массивов используется массив plantmineX[plantminey]?
С массивами можно нормально сделать и без локалок, но надо понимать что и куда идет, а тут просто как попало наложены массивы. Области какие-то создаются. Используйте Distance between points.
ну и утечки тут еще докучи, надо удалять location'ы, но сперва конечно надо саму логику починить. для начала переделать все. Использовать отдельный триггер с таймером который будет пробегаться по массиву циклом и проверять что снаряд долетел до цели.
которая добавляет все декорации в области в массив, а таймер затем по нему пробегается и порциями регистрирует события на указанный триггер
триггер test изначально не имеет событий, они добавляются таймером. триггер создает пехотинцев на месте убитых декораций.
на клетки на севере карты триггер не действует тк они вне области.
никакой группы там нет, но создается рект (прямоугольник/область) и не обнуляется в конце, надо переписать функцию с обнулением set r = null в конце и использовать вместо стандартной
такая ерунда внутри каждой второй BJ функции
в смысле, изменить тип (Обычная, Магическая, Герой) у урона способности и сделать чтобы там Огненный столб наносил физический урон?
делайте способность на триггерах и наносите какой хотите
Ред. biridius
» WarCraft 3 / Загрузка по хэндлу в функцию
абилки делайте через таймеры
на таймер как раз можно и сохранять данные в хеш, а не на какого то TriggeringUnit
Ред. biridius
» WarCraft 3 / Получение координат каждого юнита в группе
нифига тред полетел не, этого не достаточно. см код PT153 для функций расстояния
Ред. biridius
» WarCraft 3 / Получение координат каждого юнита в группе
Как хранить данные в хеше для спеллов которые длятся какое-то время уже другой вопрос.
Ред. biridius
» WarCraft 3 / Получение координат каждого юнита в группе
перед запуском перебора даем ей очень большое значение типа 99999.
затем внутри перебора сравниваем с X юнита:
Ред. biridius
» WarCraft 3 / Получение координат каждого юнита в группе
Код для выбранных юнитов пишется в отдельной функции.
То что в гуях там все в одном триггере это для вида, на самом деле там создается редактором отдельная функция и поэтому при переборе групп на гуях не действуют локалки из вне перебора.
Ред. biridius
» WarCraft 3 / Получение координат каждого юнита в группе
а на джассе ForGroup(g, function f) перебирает отряд g и запускает для каждого юнита по очереди функцию f
Ред. biridius
» WarCraft 3 / Получение координат каждого юнита в группе
» WarCraft 3 / Получение координат каждого юнита в группе
Ред. biridius
» WarCraft 3 / Что за ошибка?
» WarCraft 3 / Нужна модель? - Вам сюда!
» WarCraft 3 / Fighting for Azeroth: 3D
» WarCraft 3 / Подсчёт объектов
» WarCraft 3 / Подсчёт объектов
либо он хочет удостовериться что удаление/добавление объекта выполнено во время игры, и для этого ему нужен счетчик
Ред. biridius
» WarCraft 3 / Вопрос "Wait until" (наверное ;D)
Ред. biridius
» WarCraft 3 / Вопрос "Wait until" (наверное ;D)
» WarCraft 3 / Вопрос "Wait until" (наверное ;D)
Ред. biridius
» WarCraft 3 / Предел счётчика разрушаемых декораций в регионе(Чо?)
на клетки на севере карты триггер не действует тк они вне области.
» WarCraft 3 / Нужно ли очищать группу "разрушаемых"?
BJ функции должны лежать в blizzard.j откуда и идет сокращение BJ
» WarCraft 3 / Нужно ли очищать группу "разрушаемых"?
Ред. biridius
» WarCraft 3 / Нужно ли очищать группу "разрушаемых"?
такая ерунда внутри каждой второй BJ функции
Ред. biridius
» WarCraft 3 / Событие - приводит способность в действие - изменить тип урона
» Прочее / Серотонин и Холода
Ред. biridius
» WarCraft 3 / Событие - приводит способность в действие - изменить тип урона
делайте способность на триггерах и наносите какой хотите
Ред. biridius
» WarCraft 3 / Как сделать чтобы модель появилась?
» WarCraft 3 / Как сделать чтобы модель появилась?