30

» WarCraft 3 / [JASS] - Цветной Буран

изначально будет false, так как ничего в хэш-таблицу под данным дочерним ключем записано не было
Изначально будет false ибо при чтении отсутствующего значения всегда возвращается 0 который в случае boolean интерпретируется как false.
30

» WarCraft 3 / [JASS] - Цветной Буран

set CastX = CastX + Blizzard_Range * GetRandomReal( -1, 1 ) //Спавн эффекта в случайной точке в радиусе 300
set CastY = CastY + Blizzard_Range * GetRandomReal( -1, 1 ) //Спавн эффекта в случайной точке в радиусе 300
Это не радиус, это квадрат. Радиус выглядит следующим образом.
set theta = GetRandomReal(0, 2 * bj_PI)
set rho = r * SquareRoot(GetRandomReal(0, 1)) // r это радиус

set x = cx + rho * Cos(theta)
set y = cy + rho * Sin(theta)
30

» WarCraft 3 / [JASS] - Цветной Буран

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

» WarCraft 3 / [JASS] - Цветной Буран

Зачем ты здесь объявляешь одноимённую локалку Tick?
function InitTrig_Blizzard takes nothing returns nothing //Функция инициализации триггера (из функции main вызывается InitCustomTriggers() которая вызывает инициализацию всех триггеров на карте)
	local trigger t = CreateTrigger() //Создание триггера
	local integer Tick = 0 //Объявление целочисленной переменной
Притом со странным для этого контекста именем? Чем тебе стандартная i не угодила?

Убери меня из помощи, у новичков это вызовет недоверие. У нас одно сообщество и помогать в порядке вещей. Если писать каждого, то это будет ужас. Да и человеку со стороны эта информация никакой пользы не приносит. А если он заинтересуется, то всё есть в комментах.

ИМХО необходимо снижать градус комментирования.
loop //Начало цикла
Лучше в шапке написать, что для понимания сути происходящего ознакомьтесь с предыдущим ресурсом. А здесь убрать комментарии открытия и закрытия блоков. Оно замыливает глаза и отвлекает от происходящего. А у новичков на данном этапе скила чтения кода ещё нет, так что ты им медвежью услугу оказываешь.
30

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

LastUchiha, но и насколько я помню, кастом код карты вставляется после объявления функций. Соответственно в дефолт эдиторе у тебя не получится объявить глобалки и UnitAlive. Соответственно в требованиях необходимо указать JNGP или альтернативный способ пробросить глобалки и UnitAlive.
30

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

LastUchiha, ну и Спелл сделан без кастомных функций. режет глаза. Ибо твои функции по определению кастомные. Да и требуемые моды в обязательном порядке указываются. Так что если у тебя ничего не указано, то автоматически подразумевается запуск на ваниле.
30

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

я о видео моего бурана.
У него тоже нет проблем с воспроизведением. Может у тебя интернет глючит?
Загруженные файлы
30

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

LastUchiha, ну блин, красота же. Только вот описание на фоне такой красоты смотрится просто ужасно.
Язык исполнения принято ставить перед названием. Да и JASS это аббревиатура, посему лучшим выбором будет [JASS] - Буран.
Ну и само описание тоже сделано ужасно. Можно же было нечто подобное сделать:
Простое заклинание для новичков. Добавляет к стандартному Буран дополнительный AOE урон раз в секунду. Код намеренно упрощён из-за обучающего характера материала. Более продвинутую версию можете посмотреть по следущей >ссылке<.
Ну и абзацем ниже телега про ошибки.
30

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

LastUchiha, чел, не знаю что у тебя за картошка, но это видео у меня мобилка воспроизводит.
Загруженные файлы
30

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

LastUchiha, не нужно делать Франкенштейна из ресурса. Изначальный Буран был прекрасен своей простотой. Оставь его как есть, убери скриншоты и запиши короткое видео с прокастом. Притом желательно для целей юзать всяких футманов и прочую тир1 шушпару.
Картинку для предосмотра лучше вставляй только в предосмотр. Для это в коротком описании ресурса первой строкой сделай так:
<- картинка
А продвинутый буран опубликуй следующим ресурсом. Для примера глянь на количество вариаций AOE Благодати.
30

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

странно оно всё конечно работает
Что именно то странного?
И я кстати протупил и за был not здесь:
if not HaveSavedBoolean(HT, TimerId, 'ends') and GetRandomInt(1, 100) <= 30 then
30

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

LastUchiha, вот, смотри, набросал на коленку:
function SpellBlizzardCallback1 takes nothing returns nothing
	local integer i // Номер тика
	local integer last // Номер последнего тика
	local integer xk // Ключ для x
	local integer yk // Ключ для y
	local real x // Координата x
	local real y // Координата y
	
	set Timer = GetExpiredTimer()
	set TimerId = GetHandleId(Timer)
    
	set Caster = LoadUnitHandle(HT, TimerId, 'cstr')
	set CasterX = LoadReal(HT, TimerId, 'cstX')
	set CasterY = LoadReal(HT, TimerId, 'cstY')

	set i = LoadInteger(HT, TimerId, 'tick') // Получаем номер тика
	call SaveInteger(HT, TimerId, 'tick', i + 1) // Увеличиваем тик на единицу

	set last = LoadInteger(HT, TimerId, 'last') // Получаем номер последнего тика

	// Проверяем флаг и рандомим плямбу
	if HaveSavedBoolean(HT, TimerId, 'ends') and GetRandomInt(1, 100) <= 30 then
		// Рандомим координаты плямбы.
		set x = CasterX + SpellBlizzardRange * GetRandomReal(-1, 1)
		set y = CasterY + SpellBlizzardRange * GetRandomReal(-1, 1)

		set last = last + 8 // Откладываем на восемь тиков
		call SaveInteger(HT, TimerId, 'last', last) // Сохраняем тик последнего урона

		// Расчитываем ключ для сохранения
		set xk = last * 2
		set yk = xk + 1

		// Сохраняем координаты
		call SaveReal(HT, TimerId, xk, x)
		call SaveReal(HT, TimerId, yk, y)

		// Спавним эффект
		// DestroyEffect ... лень писать
	endif

	// Проверяем плямбу на текущем тике
	set xk = i * 2
	set yk = xk + 1

	// Для проверки тупо проверяем, сохранено ли что либо на ячейке
	if HaveSavedReal(HT, TimerId, xk) then 
		set x = LoadReal(HT, TimerId, xk)
		set y = LoadReal(HT, TimerId, yk)

		// Наносим урон в координанах
	endif

	// Проверяем приказ и пишем флаг
	if GetUnitCurrentOrder(Caster) != 0xd0079 then // blizzard
		call SaveBoolean(HT, TimerId, 'ends', true)
	endif

	// Останавливаем каст если выполнены условия
	if HaveSavedBoolean(HT, TimerId, 'ends') and i >= last then 
		call PauseTimer(Timer)
		call DestroyTimer(Timer)
		call FlushChildHashtable(HT, TimerId)
	endif
endfunction 
30

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

Вместо этого не умножаю на два, а просто вместо единицы прибавляю 100 для уверенности.
Не нужно писать числа наугад. Перечитай коммент. Тут же всё просто:
set i = 14 // Номер тика, integer
set xk = i * 2 // Ключ x, integer
set yk = xk + 1 // Ключ y, integer
set x = GetReal(xk) // Значение x, real
set y = GetReal(yk) // Значение y, real
30

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

А вот автору удобнее работать со своим кодом.
Среднестатистическому автору удобей работать со своим кодом_Копировать_Копировать_Копировать_Копировать_Копировать_Копировать_Копировать_Копировать_Копировать_002
30

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

у каждого свои 100500 систем
Видел я эти системы. Лучше бы импортировали скилы.
30

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

nazarpunk, что-то понял но 80% не понял :D
Ну смотри, что нам нужно? Через 8 тиков нанести урон по точке. Для этого нужно сохранить точку на номер тика. В хэштаблице нам доступно миллион индексов, поэтому не паримся что индексы закончатся. Так как мы упаковываем двумерные массивы [x,y] в одномерный, то индексов у нас становится в два раза меньше, но полмиллиона нам точно хватит.
Назовём ключи [xk, yk], а номер тика i. Тогда номер ключа будет находиться таким образом:
xk = i * 2
yk = i * 2 + 1
Когда с упаковкой точек разобрались, разберёмся с тиками. Допустим мы хотим плодить плямбы со случайными промежутками. Единственное ограничение, мы не сможем сделать две плямбы в один тик. Разберём тики тупо по порядку:
1
2
3 - Рандом сработал, через 8 тиков на нужно нанести урон. Значит i = 8 + 3 = 11. Сохраняем на 11 тик координаты.
4
5 - Рандом сработал, через 8 тиков на нужно нанести урон. Значит i = 8 + 5 = 13. Сохраняем на 13 тик координаты.
6
7 - Кастер прервал заклинание, но i=13, а 7 < 13, пишем флаг, что плодить плямбы больше не нужно и продолжаем тикать
8
9
10
11 - В этой ячейке есть координаты, наносим урон
12
13 - В этой ячейке есть координаты, наносим урон, заодно прерываем заклинание ибо есть флаг и 13 >= 13
30

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

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