//----------------------- Создание дамми-юнита с необходимым умением --------------------------------------
// Функция создает дамми-юнита с необходимой способностью
// Входные параметры: Игрок; код типа юнита; координаты точки создания; код способности.
//---------------------------------------------------------------------------------------------------------
function TeoCreateDummyUnit takes player id, integer unitid, real x, real y, integer abilityid returns unit
set bj_lastCreatedUnit = CreateUnit(id, unitid, x, y, 0)
call UnitApplyTimedLife( bj_lastCreatedUnit, 'BTLF', 0.3 )
if (abilityid != 0) then
call UnitAddAbility( bj_lastCreatedUnit, abilityid )
endif
return bj_lastCreatedUnit
endfunction
function TeoWave takes player p, unit hero returns nothing
// дальность выстрела
local real distance = 600
local real x = GetUnitX(hero)
local real y = GetUnitY(hero)
local real hero_angle= GetUnitFacing(hero)
local real angle = hero_angle
local unit dummy_cast //= TeoCreateDummyUnit( p, 'n008', x, y )
local unit dummy_unit1// = TeoCreateDummyUnit( p, 'n008', x, y )
local unit dummy_unit2// = TeoCreateDummyUnit( p, 'n008', x, y )
local unit dummy_unit3// = TeoCreateDummyUnit( p, 'n008', x, y )
local unit dummy_unit4// = TeoCreateDummyUnit( p, 'n008', x, y )
local unit dummy_unit5// = TeoCreateDummyUnit( p, 'n008', x, y )
local unit dummy_unit6// = TeoCreateDummyUnit( p, 'n008', x, y )
local unit dummy_unit7// = TeoCreateDummyUnit( p, 'n008', x, y )
local location loc = GetUnitLoc(hero)
// создаем волну, наносящцю урон
call IssuePointOrderLocBJ( dummy_cast, "carrionswarm", PolarProjectionBJ(loc, 100, hero_angle) )
// создаем анимацию выстрелов
call IssuePointOrder( dummy_unit1, "attackground", (x + distance* Cos(angle*0.0174)), (y + distance* Sin(angle*0.0174)) )
set angle = hero_angle - 7
call IssuePointOrder( dummy_unit2, "attackground", (x + distance* Cos(angle*0.0174)), (y + distance* Sin(angle*0.0174)) )
set angle = hero_angle + 7
call IssuePointOrder( dummy_unit3, "attackground", (x + distance* Cos(angle*0.0174)), (y + distance* Sin(angle*0.0174)) )
set angle = hero_angle - 14
call IssuePointOrder( dummy_unit4, "attackground", (x + distance* Cos(angle*0.0174)), (y + distance* Sin(angle*0.0174)) )
set angle = hero_angle + 14
call IssuePointOrder( dummy_unit5, "attackground", (x + distance* Cos(angle*0.0174)), (y + distance* Sin(angle*0.0174)) )
set angle = hero_angle - 20
call IssuePointOrder( dummy_unit6, "attackground", (x + distance* Cos(angle*0.0174)), (y + distance* Sin(angle*0.0174)) )
set angle = hero_angle + 20
call IssuePointOrder( dummy_unit7, "attackground", (x + distance* Cos(angle*0.0174)), (y + distance* Sin(angle*0.0174)) )
// обнуление переменных
call RemoveLocation(loc)
set loc = null
set dummy_cast = null
set dummy_unit1 = null
set dummy_unit2 = null
set dummy_unit3 = null
set dummy_unit4 = null
set dummy_unit5 = null
set dummy_unit6 = null
set dummy_unit7 = null
endfunction
//------------------------------------------------------------------------------------------------
function TeoCreateUnit takes player id, integer unitid, real x, real y, real face returns unit
set bj_lastCreatedUnit = CreateUnit(id, unitid, x, y, face)
return bj_lastCreatedUnit
endfunction
//------------------------------------------------------------------------------------------------
function TeoIndicator takes real x, real y, unit u , real r, real g, real b returns nothing
local unit temp_unit = u
local integer period = 0
call PingMinimapForForceEx( GetPlayersAll(), x, y, 1.60, bj_MINIMAPPINGSTYLE_SIMPLE, r, g, b )
call TriggerSleepAction( 2.0 )
set period = period + 2
if ((IsUnitAliveBJ(temp_unit) == true) and (period <= 20)) then
call TeoIndicator (x,y,temp_unit, r, g, b)
endif
set temp_unit = null
endfunction
//------------------------------------------------------------------------------------------------
function TeoAngleBetweenPoints takes real aX, real aY, real bX, real bY returns real
return Rad2Deg(Rad2Deg(0.0174 * Atan2(bY - aY, bX - aX)))
endfunction
//------------------------------------------------------------------------------------------------
function TeoDistanceBetweenPoints takes real aX, real aY, real bX, real bY returns real
local real dx = bX - aX
local real dy = bY - aY
return SquareRoot(dx * dx + dy * dy)
endfunction
//------------------------------------------------------------------------------------------------
function TeoDummyMove takes nothing returns nothing
call SetUnitPosition( udg_TEST_Dummy_Unit[udg_TEST_array_num], GetUnitX(udg_Main_hero), GetUnitY(udg_Main_hero) )
endfunction
//------------------------------------------------------------------------------------------------
function TeoSetUnitPositionSmooth takes unit u, real x, real y returns nothing
local real last_x = GetUnitX(u)
local real last_y = GetUnitY(u)
local real bx
local real by
call SetUnitPosition( u, x, y )
if (RAbsBJ(GetUnitX(u) - x) > 0.5) or (RAbsBJ(GetUnitY(u) - y) > 0.5) then
call SetUnitPosition(u, x, last_y)
set bx = RAbsBJ(GetUnitX(u) - x)
call SetUnitPosition(u, last_x, y)
set by = RAbsBJ(GetUnitY(u) - y)
if bx <= 0.5 then
call SetUnitPosition(u, x, last_y)
else
if by <= 0.5 then
call SetUnitPosition(u, last_x, y)
else
call SetUnitPosition(u, last_x, last_y)
endif
endif
endif
endfunction
//---------------------------------------- ПРОВЕРКА НА УТЕЧКИ ------------------------------------
function HandleCounter_Update takes nothing returns nothing
local integer i = 0
local integer id
local location array P
local real result=0
loop
exitwhen i >= 50
set i = i + 1
set P[i] = Location(0,0)
set id = GetHandleId(P[i])
set result = result + (id-0x100000)
endloop
set result = result/i-i/2
loop
call RemoveLocation(P[i])
set P[i] = null
exitwhen i <= 1
set i = i - 1
endloop
call LeaderboardSetItemValue(udg_HandleBoard,0,R2I(result))
endfunction
function HandleCounter_Actions takes nothing returns nothing
set udg_HandleBoard = CreateLeaderboard()
call LeaderboardSetLabel(udg_HandleBoard, "Handle Counter")
call PlayerSetLeaderboard(GetLocalPlayer(),udg_HandleBoard)
call LeaderboardDisplay(udg_HandleBoard,true)
call LeaderboardAddItem(udg_HandleBoard,"Handles",0,Player(0))
call LeaderboardSetSizeByItemCount(udg_HandleBoard,1)
call HandleCounter_Update()
call TimerStart(GetExpiredTimer(),0.05,true,function HandleCounter_Update)
endfunction
Name | Type | is_array | initial_value |
angle | real | No | |
AnticheatUnit | unit | No | |
BoostHP | real | No | |
Cheat | boolean | No | |
Cinematic_skipped | boolean | No | false |
Cinematic_Timer | timer | No | |
Damage_counter | real | No | |
Direction | real | No | |
Drop_Chance | integer | No | |
Effect_God_Armor | effect | No | |
Final_Wave | group | No | |
Frozen_group | group | No | |
Frozen_group_Effect | group | No | |
God_Armor_count | integer | No | |
HandleBoard | leaderboard | No | |
Hit_counter | integer | No | |
HP_counter | integer | No | |
InitialSpawnFrequence | integer | Yes | |
Item_counter | integer | No | |
Key_down | boolean | No | |
Key_left | boolean | No | |
Key_right | boolean | No | |
Key_up | boolean | No | |
Kill_counter | integer | No | |
Main_hero | unit | No | |
MaxMonsters | integer | Yes | |
MonsterGroups | group | Yes | |
MonsterTypes | unitcode | Yes | |
Mother | unit | No | |
Move_Step | integer | No | |
Moving_Timer | timer | No | |
Multiboard | multiboard | No | |
NumMonsters | integer | No | |
Period | real | No | |
Player | player | Yes | |
Regions | rect | Yes | |
Reload | timer | No | |
Reload_bool | boolean | No | |
Skill_Regeneration | integer | No | |
SpawnAngle | real | No | |
SpawnFrequence | integer | Yes | |
SpawnZone | integer | No | |
Support | unitcode | Yes | |
Support_num | integer | No | |
Target_point_X | real | No | |
Target_point_Y | real | No | |
Target_unit | unit | No | |
TempPoint | location | No | |
TEST_array_num | integer | No | |
TEST_Dummy_Trigger | trigger | Yes | |
TEST_Dummy_Unit | unit | Yes | |
Time | integer | No | |
Time_H | string | No | |
Time_M | string | No | |
Time_S | string | No | |
Timer_Acceleration | timer | No | |
Timer_Freezing | timer | No | |
Timer_God_Armor | timer | No | |
Total_Regions | integer | No | |
Tree_counter | integer | No | |
Trigger_for_cheat | trigger | No | |
Weapon_cooldown | real | Yes | |
Weapon_current | item | No | |
Weapon_Item | itemcode | Yes | |
Weapon_Item_active | itemcode | Yes | |
Weapon_num | integer | No | |
WEAPON_TYPE | integer | No | |
Weapon_unit | unitcode | Yes | |
Win_Acceleration | timerdialog | No | |
Win_God_Armor | timerdialog | No |