16

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

Вышла новая версия!
Прокрутить к ресурсу
  1. Исправил опечатки
  2. Поменял врагов для теста на пехотинцев (урон также уменьшил под них)
  3. Сделал ресурс красивее :)
16

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

ты зачем HaveSaved на Load поменял?
если бы не поменял оно бы и не заработало.
16

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

Во что получилось!
function Blizzard_Timer takes nothing returns nothing
	local integer last
	local integer xk
	local integer yk
    
	set Timer = GetExpiredTimer()
	set TimerId = GetHandleId( Timer )
	set Caster = LoadUnitHandle( HT, TimerId, 'cstr' )
	set CastX = LoadReal( HT, TimerId, 'cstX' )
	set CastY = LoadReal( HT, TimerId, 'cstY' )

	set Tick = LoadInteger( HT, TimerId, 'tick' )
	call SaveInteger( HT, TimerId, 'tick', Tick + 1 )
    set last = LoadInteger( HT, TimerId, 'last' )

	if not LoadBoolean( HT, TimerId, 'ends' ) then
		set CastX = CastX + Blizzard_Range * GetRandomReal( -1, 1 )
		set CastY = CastY + Blizzard_Range * GetRandomReal( -1, 1 )

		set last = Tick + 8
		call SaveInteger( HT, TimerId, 'last', last )

		set xk = last * 2
		set yk = xk + 1

		call SaveReal( HT, TimerId, xk, CastX )
		call SaveReal( HT, TimerId, yk, CastY )

        if GetRandomInt( 0, 1 ) == 0 then
            call DestroyEffect( AddSpecialEffect( "Rain of Fire.mdx", CastX, CastY ) )
        else
            call DestroyEffect( AddSpecialEffect( "Rain of Fire Fel.mdx", CastX, CastY ) )
        endif
	endif

	set xk = Tick * 2
	set yk = xk + 1

	if HaveSavedReal( HT, TimerId, xk ) then 
		set CastX = LoadReal( HT, TimerId, xk )
		set CastY = LoadReal( HT, TimerId, yk )
        
        call GroupEnumUnitsInRange( Group, CastX, CastY, Blizzard_Range, null )
        call ForGroup( Group, function Blizzard_Group )
        call GroupClear( Group )
	endif

	if GetUnitCurrentOrder( Caster ) != 0xd0079 then
		call SaveBoolean( HT, TimerId, 'ends', true )
	endif

	if LoadBoolean( HT, TimerId, 'ends' ) and Tick >= last then 
		call PauseTimer( Timer )
		call DestroyTimer( Timer )
		call FlushChildHashtable( HT, TimerId )
	endif
endfunction
16

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

nazarpunk, это я уже понял, тут и не только это
set last = last + 8
А надо
set last = Tick + 8
16

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

	set CastX = GetRandomReal( CastX - Blizzard_Range, CastX + Blizzard_Range )
    set CastY = GetRandomReal( CastY - Blizzard_Range, CastY + Blizzard_Range )

    if Tick >= 8 then
        if Tick >= 16 then
            call SaveReal( HT, TimerId, Tick * 2, CastX )
            call SaveReal( HT, TimerId, Tick * 2 + 1, CastY )
        endif
        
        if Tick >= 16 and not Bool then 
            call GroupEnumUnitsInRange( Group, LoadReal( HT, TimerId, Tick * 2 ), LoadReal( HT, TimerId, Tick * 2 + 1 ), Blizzard_Range, null )
        elseif Tick < 16 then
            call GroupEnumUnitsInRange( Group, LoadReal( HT, TimerId, Tick * 2 ), LoadReal( HT, TimerId, Tick * 2 + 1 ), Blizzard_Range, null )
        endif
        
        call ForGroup( Group, function Blizzard_Group )
        call GroupClear( Group )
    else
        call SaveReal( HT, TimerId, Tick * 2 + 8, CastX )
        call SaveReal( HT, TimerId, Tick * 2 + 8 + 1, CastY )
    endif
16

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

LastUchiha, что-бы этого добиться мне пришлось какую то ересь в коде написать...
xk = i * 2
yk = i * 2 + 1
Вот это не захотело работать!
Вместо этого не умножаю на два, а просто вместо единицы прибавляю 100 для уверенности.
Также если перестать кастовать буран после 16 тика, урона не будет. Тут я не могу догадаться как сделать.
16

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

nazarpunk, этот момент пока что отпустим так сказать.
Ну или вообще заморочиться с тем, чтоб каждая плямба наносила урон.
16

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

Ну так нужно дать таймеру ещё потикать
А вот если дать ему ещё потикать, то полетит не 1 выстрел, а чуть больше половины от всего спелла.
16

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

nazarpunk, визуально я попал бураном по цели, а до стадии урона не дошло дело.
16

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

nazarpunk, это всё конечно хорошо, но вот это... Надо бы да фиксить!
Загруженные файлы
16

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

nazarpunk, это я уже давно умею, я сонный просто и не мог догадаться до столь простого решения