Добавлен
Можно ли через эту функцию вводить аргументы для используемой функции?
function Example takes integer i returns nothing
...
endfunction
call ForGroup(g, function Example(11))
Я пытаюсь использовать что-то вроде этого, но выдает ошибку, действительно ли нельзя вводить аргументы через ForGroup?Если нет, то я бы хотел альтернативу ForGroup, чтобы я также использовал ее для определенной группы юнитов, но уже с аргументами

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

нельзя, используй глобальные переменные для передачи аргументов

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
0
19
7 лет назад
0
Похожие вопросы:

ответ
Zeuz, в доте нету такого количества таймеров
во многих нормальных картах сделано так как в статьях
Zeuz:
покажи пример в обычном jass
скопируй в карту а потом вытащи из неё j файл или напиши в коде букву на отдельной строке (тогда тебе выдаст ошибку и будет показан исходный код)
но на обычном джассе этот код больше и писать/читать его неудобно так что держи
ответ
Это я сделал в первую очередь, интереса ради. Разницы ноль, увы.
Разве, что запускает две функции одновременно, делая всего лишнюю операцию.
И так:
  1. Нужен массив для хранение TypeId
  2. Лучше глобальную группу использовать, а то локальная у тебя только на инициализации выполнилась.
  3. Используем loop endloop для большей эффективности
  4. Проверять лучше всё таки стеком,
Насчет дестроя группы. Она же создается один раз, если я ее уничтожу - триггер вообще выполнятся не станет, разве не так?
Это не так, она уже использовалась и стала локальной, и да. Лучше глобальную используй.
Лучше внутри таймера проверять ограниченным кол-во крипов через стек. т.е. о 0 до N ограничения, которые не повлияет на производительность. при этом проверяя на наличие их безжизненности, потом просто воссоздавая их по данным сохранённым внутри данных по юниту.
  1. Если мобы были ранее на карте, то и ранее должны были быть зарегестрированы в массив данных, где храниться их TypeId, PosX\Y и п.р.
ответ
во первых где дебаг
во вторых не фиг вешать на хэндл таймера всякую фигню
юзай список и пробегай по нему таймером
и будет тебе счастье
в третьих если говоришь что где то ошибка ты должен указать :
  1. строку с ошибкой
  2. доказательства того что она произошла (скрин + лог)
  3. собственные попытки её исправить
в четвёртых предоставить карту
короче либо предоставь всю информацию либо перепиши код по нормальному
как правильно переписать ты сможешь прочесть в статьях
либо увидеть в любом более менее нормальном движке (тот же движок вара)
ответ
Рев? - тогда приказ без цели
native IssueImmediateOrderById takes unit whichUnit, integer order returns boolean
Создай юнитов по 1 на каждого игрока и прикажи им
call IssueImmediateOrderById(<твой юнит>, 852164)
приказ можно менять только Каналу и книге заклинаний, у остальных способностей нет смысла
ответ
Всё, разобрался, вопрос снимаю)

0
20
7 лет назад
0
нельзя, используй глобальные переменные для передачи аргументов
Принятый ответ
0
21
7 лет назад
0
Функция, которую ты вызываешь в ForGroup должна быть void (Не принимать и не возвращать аргументов). Иначе выдаст ошибку.
function sOmefunc takes nothing returns nothing
endfunction
Вообще, ForGroup рассчитан для произведения мгновенных манипуляций.
0
22
7 лет назад
0
Лучше используй цикл для обработки группы юнитов.
2
32
7 лет назад
2
Bornikkeny:
Лучше используй цикл для обработки группы юнитов.
Не лучше, лимит операций в который врезалесь не раз такие картоделы, так что лучше не надо, если вы не будите 100% уверены что в групу не попадет слишком много юнитов, да и действия будут примитивными (нанести 100 урона).
Насколько помню мемхак позволяет прередавать аргументы в каллбеки, но это походу не быстро да и не обязательно (используется в основном для работы с памятью) в спеллах, тупо передаем аргументы глобалками, или функциями типа GetTriggerUnit(), GetExpiredTimer() (forgroup наследует параметры потока, т.е кто был GetTriggerUnit() и прчее, но не должно быть вейтов) и так далее.
0
22
7 лет назад
0
quq_CCCP, ну это уже в тонкости углубляешься.
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.