Добавлен ClotPh,
не публикуется
Оптимальность кода и т. д. - другой вопрос.
Мне главное, что он достаточно производительный и действующий.
Меня интересует конкретно вот что: почему юниты взлетают в воздух, только когда стреляешь в них из базуки рядом с собой, а если издали - то просто расталкиваются, а в воздух не взлетают? Даже еще раз на всякий случай ворона добавление-удаление вставлено - ничего не поменялось.
В остальном спелл действует, вкрай и так сойдет, но...
Мне главное, что он достаточно производительный и действующий.
Меня интересует конкретно вот что: почему юниты взлетают в воздух, только когда стреляешь в них из базуки рядом с собой, а если издали - то просто расталкиваются, а в воздух не взлетают? Даже еще раз на всякий случай ворона добавление-удаление вставлено - ничего не поменялось.
В остальном спелл действует, вкрай и так сойдет, но...
function FearsomeBazooka3 takes nothing returns nothing
//ВНИМАНИЕ!!! ОБНУЛЯЕМЫЕ ПЕРЕМЕННЫЕ ЗДЕСЬ СПИСКОМ - НОВЫЙ ШАБЛОН СОВЕРШЕНСТВА, ВСЕ ТЕСТКАРТЫ БЕЗ ОНОГО БУДУТ УДАЛЕНЫ: t, u5, u7, p, p2, p3, fearsomebazookaunits1, fearsomebazookaunits2, fearsomebazookaunits3
local timer t = GetExpiredTimer()
local unit u5=LoadUnitHandle(udg_Hash,GetHandleId(t),2)
local unit u7
local location p=LoadLocationHandle(udg_Hash,GetHandleId(t),5)
local location p2
local location p3
local group fearsomebazookaunits1 = CreateGroup()
local group fearsomebazookaunits2 = LoadGroupHandle(udg_Hash,GetHandleId(t),10)
local group fearsomebazookaunits3 = CreateGroup()
//ВНИМАНИЕ!!! ОБНУЛЯЕМЫЕ ПЕРЕМЕННЫЕ ЗДЕСЬ СПИСКОМ - НОВЫЙ ШАБЛОН СОВЕРШЕНСТВА, ВСЕ ТЕСТКАРТЫ БЕЗ ОНОГО БУДУТ УДАЛЕНЫ - ЗАКРЫТО
local integer i = LoadInteger(udg_Hash,GetHandleId(t),3)
set i = i + 1
call SaveInteger(udg_Hash,GetHandleId(t),3,i)
set fearsomebazookaunits1 = GetUnitsInRangeOfLocAll(840.00, p)
//ИЗ ЗАПИСАННОЙ ГРУППЫ U7 В ДРУГУЮ ЛОКАЛЬНУЮ
loop
set u7=FirstOfGroup(fearsomebazookaunits1)
exitwhen u7==null
call GroupRemoveUnit(fearsomebazookaunits1,u7)
if ( IsUnitInGroup(u7, fearsomebazookaunits2) == true ) then
//ДОБАВКА-УБАВКА ВОРОНА U7 ДЛЯ ПОЛЁТА
call UnitAddAbilityBJ( 'Arav', u7 )
call UnitRemoveAbilityBJ( 'Arav', u7 )
//ДОБАВКА-УБАВКА ВОРОНА U7 ДЛЯ ПОЛЁТА - ЗАКРЫТО.
call GroupAddUnit(fearsomebazookaunits3,u7)
endif
endloop
//ИЗ ЗАПИСАННОЙ ГРУППЫ U7 В ДРУГУЮ ЛОКАЛЬНУЮ - ЗАКРЫТО.
//РАСТАЛКИВАНИЕ U7 ОТ ТОЧКИ P
loop
set u7=FirstOfGroup(fearsomebazookaunits3)
exitwhen u7==null
set p2 = GetUnitLoc (u7)
set p3 = PolarProjectionBJ(p2, ( 15.00 ), AngleBetweenPoints(p, p2) )
call SetUnitPositionLoc (u7, p3)
if (i<20) then
call SetUnitFlyHeightBJ( u7, ( GetUnitFlyHeight(u7) + 33.00 ), 10000.00 )
else
call SetUnitFlyHeightBJ( u7, ( GetUnitFlyHeight(u7) - 33.00 ), 10000.00 )
endif
call GroupRemoveUnit(fearsomebazookaunits3,u7)
endloop
//РАСТАЛКИВАНИЕ U7 ОТ ТОЧКИ P - ЗАКРЫТО.
if (i>100) then
loop
set u7=FirstOfGroup(fearsomebazookaunits2)
exitwhen u7==null
call GroupRemoveUnit(fearsomebazookaunits2,u7)
call SetUnitFlyHeightBJ( u7, GetUnitDefaultFlyHeight(u7), 10000.00 )
endloop
call RemoveLocation (p)
call DestroyGroup (fearsomebazookaunits2)
call PauseTimer(t)
call DestroyTimer(t)
call FlushChildHashtable(udg_Hash,GetHandleId(t))
else
endif
call DestroyGroup (fearsomebazookaunits1)
call DestroyGroup (fearsomebazookaunits3)
call RemoveLocation (p2)
call RemoveLocation (p3)
//ВНИМАНИЕ!!! ОБНУЛЯЕМЫЕ ПЕРЕМЕННЫЕ ЗДЕСЬ СПИСКОМ - НОВЫЙ ШАБЛОН СОВЕРШЕНСТВА, ВСЕ ТЕСТКАРТЫ БЕЗ ОНОГО БУДУТ УДАЛЕНЫ: t, u5, u7, p, p2, p3, fearsomebazookaunits1, fearsomebazookaunits2, fearsomebazookaunits3
set t = null
set u5 = null
set u7 = null
set p = null
set p2 = null
set p3 = null
set fearsomebazookaunits1 = null
set fearsomebazookaunits2 = null
set fearsomebazookaunits3 = null
//ВНИМАНИЕ!!! ОБНУЛЯЕМЫЕ ПЕРЕМЕННЫЕ ЗДЕСЬ СПИСКОМ - НОВЫЙ ШАБЛОН СОВЕРШЕНСТВА, ВСЕ ТЕСТКАРТЫ БЕЗ ОНОГО БУДУТ УДАЛЕНЫ - ЗАКРЫТО
endfunction
function FearsomeBazooka2 takes nothing returns nothing
//ВНИМАНИЕ!!! ОБНУЛЯЕМЫЕ ПЕРЕМЕННЫЕ ЗДЕСЬ СПИСКОМ - НОВЫЙ ШАБЛОН СОВЕРШЕНСТВА, ВСЕ ТЕСТКАРТЫ БЕЗ ОНОГО БУДУТ УДАЛЕНЫ: t, t2, u5, u6, u7, p, p2, fearsomebazookaunits1, fearsomebazookaunits2
local timer t = GetExpiredTimer()
local timer t2 = CreateTimer()
local unit u5=LoadUnitHandle(udg_Hash,GetHandleId(t),2)
local unit u6=LoadUnitHandle(udg_Hash,GetHandleId(t),1)
local unit u7
local location p=LoadLocationHandle(udg_Hash,GetHandleId(t),4)
local location p2=LoadLocationHandle(udg_Hash,GetHandleId(t),5)
local group fearsomebazookaunits1 = CreateGroup()
local group fearsomebazookaunits2 = CreateGroup()
//ВНИМАНИЕ!!! ОБНУЛЯЕМЫЕ ПЕРЕМЕННЫЕ ЗДЕСЬ СПИСКОМ - НОВЫЙ ШАБЛОН СОВЕРШЕНСТВА, ВСЕ ТЕСТКАРТЫ БЕЗ ОНОГО БУДУТ УДАЛЕНЫ - ЗАКРЫТО
local integer i = LoadInteger(udg_Hash,GetHandleId(t),3)
local real distance = LoadReal(udg_Hash,GetHandleId(t),5)
local real damage = 100 + 50 * I2R(GetUnitAbilityLevelSwapped('A31Q', u5))
call SaveReal(udg_Hash,GetHandleId(u5),StringHash("fearsomebazooka"),0)
set i = i + 1
call SaveInteger(udg_Hash,GetHandleId(t),3,i)
if (i<distance*0.1) then
//ПОЛЁТ СНАРЯДА КУДА ПОВЁРНУТ, 10/0.01 СЕК.
call RemoveLocation(p2)
set p2=PolarProjectionBJ(p, ( 10.00 * i ), GetUnitFacing(u6))
call SetUnitPositionLoc(u6, p2)
call RemoveLocation (p2)
//ПОЛЁТ СНАРЯДА КУДА ПОВЁРНУТ - ЗАКРЫТО.
else
set p2 = GetUnitLoc(u6)
set fearsomebazookaunits1 = GetUnitsInRangeOfLocAll(240.00, p2)
call KillUnit(u6)
loop
set u7=FirstOfGroup(fearsomebazookaunits1)
exitwhen u7==null
call GroupRemoveUnit(fearsomebazookaunits1,u7)
if ( ( IsUnitType((u7), UNIT_TYPE_ANCIENT) != true ) and ( GetUnitAbilityLevelSwapped('Avul', u7) != 1 ) and ( IsDead(u7) == false )) then
//ДОБАВКА-УБАВКА ВОРОНА U7 ДЛЯ ПОЛЁТА
call UnitAddAbilityBJ( 'Arav', u7 )
call UnitRemoveAbilityBJ( 'Arav', u7 )
//ДОБАВКА-УБАВКА ВОРОНА U7 ДЛЯ ПОЛЁТА - ЗАКРЫТО.
call UnitDamageTargetBJ( u5, u7, damage, ATTACK_TYPE_NORMAL, DAMAGE_TYPE_MAGIC )
call GroupAddUnit(fearsomebazookaunits2,u7)
else
endif
endloop
call SaveUnitHandle(udg_Hash,GetHandleId(t2),2,u5)
call SaveLocationHandle(udg_Hash,GetHandleId(t2),5,p2)
call SaveGroupHandle(udg_Hash,GetHandleId(t2),10,fearsomebazookaunits2)
call SaveInteger (udg_Hash,GetHandleId(t2),3,i)
call TimerStart (t2, 0.01, true, function FearsomeBazooka3)
call DestroyGroup (fearsomebazookaunits1)
call PauseTimer(t)
call DestroyTimer(t)
call FlushChildHashtable(udg_Hash,GetHandleId(t))
call RemoveLocation (p)
endif
//ВНИМАНИЕ!!! ОБНУЛЯЕМЫЕ ПЕРЕМЕННЫЕ ЗДЕСЬ СПИСКОМ - НОВЫЙ ШАБЛОН СОВЕРШЕНСТВА, ВСЕ ТЕСТКАРТЫ БЕЗ ОНОГО БУДУТ УДАЛЕНЫ: t, t2, u5, u6, u7, p, p2, fearsomebazookaunits1, fearsomebazookaunits2
set t = null
set t2 = null
set u5 = null
set u6 = null
set u7 = null
set p = null
set p2 = null
set fearsomebazookaunits1 = null
set fearsomebazookaunits2 = null
//ВНИМАНИЕ!!! ОБНУЛЯЕМЫЕ ПЕРЕМЕННЫЕ ЗДЕСЬ СПИСКОМ - НОВЫЙ ШАБЛОН СОВЕРШЕНСТВА, ВСЕ ТЕСТКАРТЫ БЕЗ ОНОГО БУДУТ УДАЛЕНЫ - ЗАКРЫТО
endfunction
function FearsomeBazooka takes nothing returns nothing
//ВНИМАНИЕ!!! ОБНУЛЯЕМЫЕ ПЕРЕМЕННЫЕ ЗДЕСЬ СПИСКОМ - НОВЫЙ ШАБЛОН СОВЕРШЕНСТВА, ВСЕ ТЕСТКАРТЫ БЕЗ ОНОГО БУДУТ УДАЛЕНЫ: t, u5, u6, p, p2
local timer t= CreateTimer()
local unit u5= GetTriggerUnit()
local unit u6
local location p= GetUnitLoc(u5)
local location p2= GetSpellTargetLoc()
//ВНИМАНИЕ!!! ОБНУЛЯЕМЫЕ ПЕРЕМЕННЫЕ ЗДЕСЬ СПИСКОМ - НОВЫЙ ШАБЛОН СОВЕРШЕНСТВА, ВСЕ ТЕСТКАРТЫ БЕЗ ОНОГО БУДУТ УДАЛЕНЫ - ЗАКРЫТО
local integer i= 0
local real fearsomebazooka = 0
local real distance = DistanceBetweenPoints(p,p2)
set fearsomebazooka = LoadReal(udg_Hash,GetHandleId(u5),StringHash("fearsomebazooka"))
if ( GetSpellAbilityId() == 'A31Q' ) and fearsomebazooka == 0 then
call SaveReal(udg_Hash,GetHandleId(u5),StringHash("fearsomebazooka"),1)
//СОЗДАЁМ И ЗАПУСКАЕМ ДАММИКА
call CreateNUnitsAtLocFacingLocBJ(1, 'n398', GetOwningPlayer(u5), p, p2)
set u6=GetLastCreatedUnit()
call SaveUnitHandle(udg_Hash, GetHandleId(t), 2, u5)
call SaveUnitHandle(udg_Hash, GetHandleId(t), 1, u6)
call SaveLocationHandle(udg_Hash, GetHandleId(t), 4, p)
call SaveLocationHandle(udg_Hash, GetHandleId(t), 5, p2)
call SaveReal(udg_Hash, GetHandleId(t), 5, distance)
call SaveInteger(udg_Hash, GetHandleId(t), 3, i)
call TimerStart(t, 0.01, true, function FearsomeBazooka2)
else
call RemoveLocation(p)
call RemoveLocation(p2)
call PauseTimer(t)
call DestroyTimer(t)
call FlushChildHashtable(udg_Hash, GetHandleId(t))
endif
//СОЗДАЁМ И ЗАПУСКАЕМ ДАММИКА - ЗАКРЫТО.
//ВНИМАНИЕ!!! ОБНУЛЯЕМЫЕ ПЕРЕМЕННЫЕ ЗДЕСЬ СПИСКОМ - НОВЫЙ ШАБЛОН СОВЕРШЕНСТВА, ВСЕ ТЕСТКАРТЫ БЕЗ ОНОГО БУДУТ УДАЛЕНЫ: t, u5, u6, p, p2
set t=null
set u5=null
set u6=null
set p=null
set p2=null
//ВНИМАНИЕ!!! ОБНУЛЯЕМЫЕ ПЕРЕМЕННЫЕ ЗДЕСЬ СПИСКОМ - НОВЫЙ ШАБЛОН СОВЕРШЕНСТВА, ВСЕ ТЕСТКАРТЫ БЕЗ ОНОГО БУДУТ УДАЛЕНЫ - ЗАКРЫТО
endfunction
Принятый ответ
А, всё. Уже самостоятельно понятно )))
Догадавшимся мб поставлю лайк.
Догадавшимся мб поставлю лайк.
`
ОЖИДАНИЕ РЕКЛАМЫ...
Чтобы оставить комментарий, пожалуйста, войдите на сайт.
Догадавшимся мб поставлю лайк.