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

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



Просмотров: 220

» Лучшие комментарии


XGM Bot #1 - 3 месяца назад 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)
приказ можно менять только Каналу и книге заклинаний, у остальных способностей нет смысла
» ответ
Всё, разобрался, вопрос снимаю)

biridius #2 - 3 месяца назад 0

нельзя, используй глобальные переменные для передачи аргументов
GF RaiseD #3 - 3 месяца назад 0
Функция, которую ты вызываешь в ForGroup должна быть void (Не принимать и не возвращать аргументов). Иначе выдаст ошибку.
function sOmefunc takes nothing returns nothing
endfunction
Вообще, ForGroup рассчитан для произведения мгновенных манипуляций.
Bornikkeny #4 - 3 месяца назад 0
Лучше используй цикл для обработки группы юнитов.
quq_CCCP #5 - 3 месяца назад 2
Bornikkeny:
Лучше используй цикл для обработки группы юнитов.
Не лучше, лимит операций в который врезалесь не раз такие картоделы, так что лучше не надо, если вы не будите 100% уверены что в групу не попадет слишком много юнитов, да и действия будут примитивными (нанести 100 урона).
Насколько помню мемхак позволяет прередавать аргументы в каллбеки, но это походу не быстро да и не обязательно (используется в основном для работы с памятью) в спеллах, тупо передаем аргументы глобалками, или функциями типа GetTriggerUnit(), GetExpiredTimer() (forgroup наследует параметры потока, т.е кто был GetTriggerUnit() и прчее, но не должно быть вейтов) и так далее.
Bornikkeny #6 - 3 месяца назад 0
quq_CCCP, ну это уже в тонкости углубляешься.
Doc #7 - 3 месяца назад 4
Можно цикл, можно и глобалки. В сжассе foreach циклом обрабатывает, все ок. Передавая через глобалки ничего плохого не случится, действия все равно в одном потоке.