Tredor46, как нето перечислены источники уклонения и ведется сложение, после 1 абилке 20 лвл выдается уровень, таким образом в доте 6.83 фрога слкадываются пассивные уклонения,
Svintus, AI нативки работают по большей части в потоке AI скрипта, скрипт пишется на языке JASS, советую изучить для начала, после посмотреть список AI нативок и стандартные melee ai скрипты.
Скрипт AI можно запустить только для игрока бота, если слотом управляет человек - всё AI не стартанет, убираешь все стандартные триггеры сражения и создаешь запуск твоего ии для конкретного игрока если им управляет компьютер.
Потому что ты не понимаешь как работает сфера, ты пытаешься скрыть блин иконку самой сферы, у которой иконки нету в природе... Ты видишь иконку способности которую ты запихал в сферу, и она вручается именно движком игры юниту и подвергается сайленсу чтобы не работала сама по себе, абилка сферы же делает принудительный каст (его и руны используют).
В целом очень хреновый кастыль, что мешает дамми каст или каст руной сделать?
WilliamBz, ну так это писание своего мили ии, так или иначе. К слову всё микро, применение спеллов раелизованно в движке игры, поэтому с кастом героями поосторожнее.
К слову можно ИИ написать и в обычном редакторе триггеров, но это муторно да и самому микро реализовать не так уж и просто.
В скрипте четко прописано какого героя брать и как его качать, поэтому подмена в процессе игры всё ломает. Стандартный ии разыгрывает только заранее заготовленные шаблоны, которые определяются рандомом при старте и в процессе игры не меняются.
Придется писать ИИ ручками с нуля.
Разрушаемый обьект - то что имеет хп и может быть разрушено, является родителем для всех остальных типов с хп.
К этому типу обьектов относятся деревья, ворота, юниты, предметы.
Просто 'h003' пиши, ибо у него ID - 'h003', ро код юнита это на самом деле целое число, и всегда из 4х символов ASC2, через двоеточие указана основа, её писать ненужно.
GetUnitOfTypeIdAll('h003')
Давно замечал, пропажу абилок. Оно так же падает если у вас описание чуть длинее, или какие то символы непонравятся.
Карту из слк в обж оно не всегда корректно преобразует, поэтому не надейтесь на софт, всё тщательно проверяйте. К слову багами грешат все слк оптимизаторы\деоптимизаторы...
Канал, время подготовки 1 сек, если каст закончен создает N х число дамми юнитов и вручает им стаю повелителя ужаса и приказывает кинуть, в точку в радиусе, вычесленную по формуле 360 деленное на число душ, т.е по кругу, Так же ищет всех юнитов в радиусе 1000 и кидает на низ увечье некроманта, как дебафф замедления.
function RequiemFilter takes nothing returns boolean
set bj_lastFilterUnit = GetFilterUnit( )
return IsUnitEnemy( bj_lastFilterUnit, bj_groupEnumOwningPlayer )and not( IsUnitDead( bj_lastFilterUnit )or IsUnitType( bj_lastFilterUnit, UNIT_TYPE_STRUCTURE )or IsUnitWard( bj_lastFilterUnit )or IsUnitInGroup( bj_lastFilterUnit, LoadGroupHandle( HashData, GetHandleId( GetExpiredTimer( ) ), 0 ) )or GetUnitAbilityLevel( bj_lastFilterUnit, 'A04R' ) > 0 )
endfunction
function Timer_SoulCrippile_Expires takes nothing returns nothing
local timer t = GetExpiredTimer( )
local integer id = GetHandleId( t )
local group grp = LoadGroupHandle( HashData, id, 0 )
local player pl = LoadPlayerHandle( HashData, id, 1 )
local real cx = LoadReal( HashData, id, 2 )
local real cy = LoadReal( HashData, id, 3 )
local real rad = LoadReal( HashData, id, 4 )
local integer level = LoadInteger( HashData, id, 5 )
local unit enemy
if rad > 1024.00 then
call ReleaseTimer( t )
call FlushChildHashtable( HashData, id )
call NSI( grp )
call DestroyTimer( t )
else
set rad = rad + 32.00
set bj_groupEnumOwningPlayer = pl
call GroupClear( bj_TempGroup )
call GroupEnumUnitsInRange( bj_TempGroup, cx, cy, rad, Condition( function RequiemFilter ) )
call GroupAddGroup( bj_TempGroup, grp )
loop
set enemy = FirstOfGroup( bj_TempGroup )
exitwhen( enemy == null )
call GroupRemoveUnit( bj_TempGroup, enemy )
set bj_lastCreatedUnit = CreateUnit( GetOwningPlayer( enemy ), DUMMY, GetUnitX( enemy ), GetUnitY( enemy ), GetUnitFacing( enemy ) )
call SetUnitPathing( bj_lastCreatedUnit, false )
call UnitApplyTimedLife( bj_lastCreatedUnit, 'BTLF', 3.00 )
call SetUnitX( bj_lastCreatedUnit, GetUnitX( enemy ) )
call SetUnitY( bj_lastCreatedUnit, GetUnitY( enemy ) )
call UnitAddAbility( bj_lastCreatedUnit, 'A0HH' )
call SetUnitAbilityLevel( bj_lastCreatedUnit, 'A0HH', level )
call UnitShareVision( enemy, pl, true )
call IssueTargetOrder( bj_lastCreatedUnit, "cripple", enemy )
call UnitShareVision( enemy, pl, false )
endloop
set enemy = null
call SaveReal( HashData, id, 4, rad )
endif
set grp = null
set t = null
endfunction
function DarkSouls takes unit fiend, integer soulcount returns boolean
local real cx = GetUnitX( fiend )
local real cy = GetUnitY( fiend )
local player pl = GetOwningPlayer( fiend )
local real facing
local real dx
local real dy
local integer lines = 0
local integer nIndex = 1
local integer level = GetUnitAbilityLevel( fiend, 'A29J' )
local timer t
if soulcount < 1 or level == 0 then
return false
endif
set lines = IMaxBJ( R2I( soulcount / 2 ), 1 )
loop
exitwhen nIndex > lines
set facing = ( I2R( nIndex ) * ( 360.00 / lines ) )
set bj_lastCreatedUnit = CreateUnit( pl, DUMMY, cx, cy, facing )
set facing = facing * bj_DEGTORAD
set dx = cx + 64.00 * Cos( facing )
set dy = cy + 64.00 * Sin( facing )
call SetUnitPathing( bj_lastCreatedUnit, false )
call SetUnitX( bj_lastCreatedUnit, cx )
call SetUnitY( bj_lastCreatedUnit, cy )
call UnitApplyTimedLife( bj_lastCreatedUnit, 'BTLF', 2.00 )
call UnitAddAbility( bj_lastCreatedUnit, 'A0HG' )
call SetUnitAbilityLevel( bj_lastCreatedUnit, 'A0HG', level )
if not IssuePointOrder( bj_lastCreatedUnit, "carrionswarm", dx, dy ) then
call IssuePointOrder( bj_lastCreatedUnit, "carrionswarm", cx + 256.00 * Cos( facing ), cy + 256.00 * Sin( facing ) )
endif
set nIndex = nIndex + 1
endloop
set t = NewTimer( )
set nIndex = GetHandleId( t )
call SaveGroupHandle( HashData, nIndex, 0, NTI( ) )
call SavePlayerHandle( HashData, nIndex, 1, pl )
call SaveReal( HashData, nIndex, 2, cx )
call SaveReal( HashData, nIndex, 3, cy )
call SaveReal( HashData, nIndex, 4, 64.00 )
call SaveInteger( HashData, nIndex, 5, level )
call TimerStart( t, 0.03125, true, function Timer_SoulCrippile_Expires )
set t = null
return true
endfunction
» WarCraft 3 / Функция сложения или вычитания шансов по Формуле убывающей полезности из Dota 2
» WarCraft 3 / Как начать писать свой код ИИ?
Скрипт AI можно запустить только для игрока бота, если слотом управляет человек - всё AI не стартанет, убираешь все стандартные триггеры сражения и создаешь запуск твоего ии для конкретного игрока если им управляет компьютер.
» WarCraft 3 / Как сделать полоску хп у юнита/здания невидимой?
Либо мемхаком, флаг юниту особый ставим -
» WarCraft 3 / В какие моменты имя функции конвертируется в число?
» WarCraft 3 / Пассивные способности через сферы
В целом очень хреновый кастыль, что мешает дамми каст или каст руной сделать?
» WarCraft 3 / Возможно ли получить область триггера? - [Jass]
» WarCraft 3 / Возможно ли получить область триггера? - [Jass]
» WarCraft 3 / Способность "сторожевая сова"
» WarCraft 3 / Почему не работает локальный триггер?
Ред. quq_CCCP
» WarCraft 3 / Как грамотно отредактировать ИИ скрипт, чтобы он выбирал кастомного героя, который не всегда может быть доступен
К слову можно ИИ написать и в обычном редакторе триггеров, но это муторно да и самому микро реализовать не так уж и просто.
» WarCraft 3 / Как грамотно отредактировать ИИ скрипт, чтобы он выбирал кастомного героя, который не всегда может быть доступен
Придется писать ИИ ручками с нуля.
» WarCraft 3 / Респавн мобов
» WarCraft 3 / Помогите снять защиту с карты!
» WarCraft 3 / помогите с war3map.shd
» WarCraft 3 / Независимый художник показывает свой вариант HD-ремастера классических моделей
» WarCraft 3 / помогите с war3map.shd
» WarCraft 3 / Функция RemoveItem() не удаляет предмет
» WarCraft 3 / Чем является Widget в варкрафте?
К этому типу обьектов относятся деревья, ворота, юниты, предметы.
» WarCraft 3 / Нормальная ли система применения способностей? - [Jass]
» WarCraft 3 / Почему программа отказывается принимать существование этого типа юнитов?
GetUnitOfTypeIdAll('h003')
» WarCraft 3 / Как сделать MUI через глобалки? - [Jass]
» WarCraft 3 / World editor
» WarCraft 3 / Лидерборд
» WarCraft 3 / SLK оптимизация при помощи w3x2lni
Карту из слк в обж оно не всегда корректно преобразует, поэтому не надейтесь на софт, всё тщательно проверяйте. К слову багами грешат все слк оптимизаторы\деоптимизаторы...
» WarCraft 3 / Анимация юнита при нажатии способности