Добавлен
для обращения к группе нужно написать ForGroup(Group, function TES) TES как пример
Да к вот, что нужно написать в этой функции TES, чтоб к группе можно было обратиться?
Мне нужно двигать юнитов каждые 0.03 сек постепенно к позиции таргета (чтобы даммики постепенно приближались к таргету) Как это сделать?

Принятый ответ

Для каждого юнита в группе будет вызвана функция TES.
GetEnumUnit() возвращает боевую единицу, для которой была вызвана функция, иначе говоря, сначала это первый юнит в группе, потом второй, потом третий и т.д.
xgm.guru/p/wc3/movingsystem советую почитать
`
ОЖИДАНИЕ РЕКЛАМЫ...
0
19
6 лет назад
0
Похожие вопросы:

ответ
Чтобы было норм читать, надо хотя бы выделять содержимое каждого блока (типа function/endfunction, if/endif, loop/endloop) табуляцией. Если блок внутри блока, то двойная табуляция, и т. д.
В vJASS и cJASS не стоит использовать одновременно C-подобный и Turing-подобный (стандартный JASS) синтаксис.
А если ты неправильно поставишь пробелы, запятые или кавычки, тебе об этом скажет парсер =)
ответ
Во-первых, что есть "локальный таймер" ? Это таймер записанный в локальную переменную?
Во-вторых, зачем тебе точка, если ты используешь XY ? Работай с ними
В-третьих, да. Использование в течении всей игры одной заранее созданной точки вызывает меньше нагрузки чем постоянно создание и удаление новых (кто-то там доказывал на примере и цифрами что от ремувнутых точке всё равно остаётся шлак в памяти...)
ответ
Skolz:
дайте мне уж чёткий ответ. То что я устанавливаю z1 = 0 каждые 0.03 сек это плохо или норм?
внизу идёт цикл z1 от 1 до z (по гуишному)
Ладно, ничего в этом страшного нет, если оно работает.
Так что всё в порядке, если тебя это успокоит.
ответ
расстояние до найденного ближайшего лучше не пересчитывать каждый раз, а хранить в переменной; еще можно обойтись без корня, а сравнивать сразу квадраты расстояний
возможно проблема в сравнении неинициализированной (например int i вместо int i = 1) переменной (unit FIRST == null)
вместо этого юзай boolean флаг или проверку на сохраненное расстояние до ближайшего, например что оно больше -1

0
7
6 лет назад
0
Для каждого юнита в группе будет вызвана функция TES.
GetEnumUnit() возвращает боевую единицу, для которой была вызвана функция, иначе говоря, сначала это первый юнит в группе, потом второй, потом третий и т.д.
xgm.guru/p/wc3/movingsystem советую почитать
Принятый ответ
2
13
6 лет назад
Отредактирован Пушистый
2
Функция TES - это callback для ForGroup. В варе в них аргументы передавать невозможно, поэтому значения кастера придется записать в глобальную переменную (на время), так как выполнение все равно происходит практически мгновенно.
Можно проще, да и лучше: создать таймер и вести запись в его handle id. Сохранить юнита и группу даммиков, которую будет перебирать таймер после своего старта (для этого удобно использовать хэш-таблицы). Можно и со струкутрами, но здесь выбор каждого (в случае структуры лучше использовать Timer Exploit, чтобы хранить число как ссылку на экземпляр структуры).Перебор юнитов в функции обработчике будет осуществляться циклом с помощью постепенного определения первого юнита в этой группе, на которую передавалась ссылка. Принцип такой: провести манипуляции над дамми-юнитом из группы, после чего - удалить его, но здесь нужно учесть то, что все происходит в периоде, поэтому создаем копию группы каждый раз и производим с ней действия по циклу (не забываем копию удалять). Основную группу удалить можно после завершения действия заклинания.
Функция для создания копии группы:
function CopyGroup takes group g returns group
    set bj_groupAddGroupDest = CreateGroup()
    call ForGroup(g, function GroupAddGroupEnum)
    return bj_groupAddGroupDest
endfunction
Чтобы оставить комментарий, пожалуйста, войдите на сайт.