30

» WarCraft 3 / [Jass] - Буран

ну тут у тебя в спелле моментальный эффект удара
А маркировки точки удара тоже моментальная?
30

» WarCraft 3 / [Jass] - Буран

OVOgenez, ну я хз. Тригорные спелы конечно весело, но они сферические в вакууме. А хочется больше синергии и разных клёвых механик. А это в рамках одного спела не реализуешь,
30

» WarCraft 3 / [Jass] - Буран

просто иногда тебе важно чтобы это исполнилось в одном "потоке"
Просто иногда тебе лень спроэктировать систему, в которой это не важно. Ну или перейти на ас, где всё живет в своём инстансе и вообще до одного места на перезапись глобалок.
30

» WarCraft 3 / [Jass] - Буран

Только у меня модификаторы урона моментально срабатывают, а ивент на сам урон с задержкой.
Так это уже рюшечки. Главное базис сохранить - вызывать всё, что может стригерить событие с задержкой. Тогда можно во всю обмазаться универсальными глобалками и капитально сократить количество лишнего кода.
30

» WarCraft 3 / [Jass] - Буран

в целом лучше просто фор груп прям в конец переместить. Мб так лучше будет
Ты забыл что ForGroup наносит поочерёдно урон? На втором юните всё сломается. А вот урон с задержкой решит проблему в корне. И можно будет перемещать как угодно. Тригер уже отработает и на переменные будет глубоко.
30

» WarCraft 3 / [Jass] - Буран

LastUchiha, не, ну красота же. Можно публиковать следующую версию. Ну и в этом и следующем ресурсе лучше видео вместо скриншота делать.
30

» WarCraft 3 / [Jass] - Буран

KaneThaumaturge, можно вообще решить этот вопрос эллегантно - создать DamageDeal систему с 0.1 таймером. Которая будет отложенно наносить урон.
Но здесь уже мы ступаем в область архитектуры.
30

» WarCraft 3 / [Jass] - Буран

не я про то, что в этом коде коллизия может быть с глобалками потому что он исполняется после нанесения урона
Именно в этом не может. Потому что после урона нет работы с глобалками и тик таймера завершается. А следующий тик таймера перепишет глобалки заново.
Стопе, забыл. Чтоб точно не было коллизий нужно урон в самый низ отправить:
function SpellBlizzardCallback takes nothing returns nothing
	set Timer = GetExpiredTimer()
	set TimerId = GetHandleId(Timer)
    
	set Caster = LoadUnitHandle(HT, TimerId, 'cstr')

	if GetUnitCurrentOrder(Caster) != 0xd0079 then // blizzard
		call PauseTimer(Timer)
		call DestroyTimer(Timer)
		call FlushChildHashtable(HT, TimerId)
       return
	endif 

	set CasterX = LoadReal(HT, TimerId, 'cstX')
	set CasterY = LoadReal(HT, TimerId, 'cstY')

	call GroupEnumUnitsInRange(Group, CasterX, CasterY, SpellBlizzardRange, null)
	call ForGroup(Group, function SpellBlizzardEnum) 
	call GroupClear(Group)    
endfunction 
30

» WarCraft 3 / [Jass] - Буран

ну дак как сделать это нормально ?
Запускаешь таймер с минимальным периодом, например 0.1 и спавнишь чё надо. Заодно приказ проверяешь. Гемороя не сильно больше чем сейчас, но правда требует аккуратности.
30

» WarCraft 3 / [Jass] - Буран

не понял сарказм, а этот код шутка?
Это простая и эллегантная проверка на какст channel. Что не так то?
30

» WarCraft 3 / [Jass] - Буран

ну или например ты ту же глобалку с таймером используешь где-то ещё, и этот код может затриггерится при уроне или смерти.
Может. Но всегда же можно вручную переменные заприватить. Благо уже даже плагины для этого есть.
30

» WarCraft 3 / [Jass] - Буран

то можно таймер и кастера потерять после строки нанесения урона.
Посмотрел я после строки нанесения урона, как жаль, там столько использования этих переменных...
30

» WarCraft 3 / [Jass] - Буран

Плохая практика использовать комбинированый стиль именования.
Здесь нет грязножасса. При наличии триггера Blizzard игра вызовет такую нативку.
30

» WarCraft 3 / [WarCraft III] Jass identifier renamer

Хм, а почему просто не переименовать в редакторе?
Загруженные файлы
30

» WarCraft 3 / [Jass] - Буран

вполне себе строчный ключ
Напомни мне пожалуйста, когда в варкрафт завезли нормальную работу со строками? Ну а то что он каждый раз вычисляется тебя вообще не смущает?
30

» WarCraft 3 / [Jass] - Буран

попробуй напади!
Они падают скучно, одной пачкой. Сделал бы чтоб они вразнобой летели, как например здесь.
30

» WarCraft 3 / [Jass] - Буран

так а про итерацию, вынести к комментам в начале триггера?
Ну да. В блоке удаления это явно не к месту.
30

» WarCraft 3 / [Jass] - Буран

Как я понял, ты просто взял дефолт буран и добавил к нему урона. А будет версия с рандомными эффектами?
30

» WarCraft 3 / [Jass] - Буран

group Group = CreateGroup() //Создаём группу, которую будем использовать для моментальной выборки юнитов
30

» WarCraft 3 / [Jass] - Буран

LastUchiha, у приказове есть целлочисленный id, который и использует игра. А есть представление в виде строки, которое используется в РО и гуймуй чтоб кожанным мешкам было удобней.
//if GetUnitCurrentOrder( Caster ) != 0xd0079 then - этот вариант работает быстрее, так как использует ид приказа без лишней возни со строками
30

» WarCraft 3 / [Jass] - Буран

Итерация (повторение) - повторение таймера или цикла (тут таймер повторяется раз в 1 секунду, то есть раз в 1 секунду происходит итерация таймера)
Этот коммент вообще не в том месте находится.

Когда копипастил забыл вкомментариях изменить ключи:
call SaveReal( HT, TimerId, 'cstX', GetSpellTargetX() ) //Сохраняется точка применения способности X по дочернему ключу 'cstr'
call SaveReal( HT, TimerId, 'cstY', GetSpellTargetY() ) //Сохраняется точка применения способности Y по дочернему ключу 'cstr'

group Group = CreateGroup() //Создаёт темповая группа
Это не темповая (слово "временна" видать запретили), а глобальная группа, которая используется для всех одноразовых переборов GroupEnum*.
30

» WarCraft 3 / [Jass] - Буран

LastUchiha, годнота. Лайк. Только формулировка сбивает с толку:
это результат конвертации строки "blizzard" в целочисленное значение
Это не конвертация, это настоящий ид приказа. Строки сбоку присраны для гуймуйщмков.
30

» WarCraft 3 / [Jass] - Буран

LastUchiha,
  1. Вкусовщина
  2. Вкусовщина
  3. Вкусовщина
  4. Вкусовщина
  5. Здесь важно. Напиши ниже вариант с числом и закомментируй его.
  6. Вкусовщина. И в жассе мой способ не сильно повышает читаемость. Ибо строки плодит. Вот в ангеле и Зинке там была бы одна строка и Мега читаемость.