32

» WarCraft 3 / Функция сложения или вычитания шансов по Формуле убывающей полезности из Dota 2

Tredor46, как нето перечислены источники уклонения и ведется сложение, после 1 абилке 20 лвл выдается уровень, таким образом в доте 6.83 фрога слкадываются пассивные уклонения,
32

» WarCraft 3 / Как начать писать свой код ИИ?

Svintus, AI нативки работают по большей части в потоке AI скрипта, скрипт пишется на языке JASS, советую изучить для начала, после посмотреть список AI нативок и стандартные melee ai скрипты.
Скрипт AI можно запустить только для игрока бота, если слотом управляет человек - всё AI не стартанет, убираешь все стандартные триггеры сражения и создаешь запуск твоего ии для конкретного игрока если им управляет компьютер.
32

» WarCraft 3 / Как сделать полоску хп у юнита/здания невидимой?

Ну вручаем, удаляем москиты.
Либо мемхаком, флаг юниту особый ставим -
// For SetUnitFlags0x20 (0x20)
	constant integer UNIT_HIDDEN 				= 0x1
	constant integer UNIT_LOCUST_NONSELECTABLE = 0x2 
	constant integer UNIT_NONSELECTABLE = 0x4
	constant integer UNIT_INVULNERABLE 			= 0x8
	constant integer UNIT_VISIBLED_TO_ALL 		= 0x10
	constant integer UNIT_AUTOATTACK_DISABLED=0x10000000
	
	
	// For SetUnitFlags0x5C (0x5C)
	//flag 0x4 causes fatal if any damage received
	//flag 0x40 stands for red flash, but doesn't directly calls it
	constant integer UNIT_DEAD = 0x100
	//like dead hero, provides no vision, cant be selected, enemies doesn't flee when attacked by this flag
	constant integer UNIT_MINIMAP_ICON_HIDE		= 0x80000
	constant integer UNIT_MINIMAP_ICON_TAVERN	= 0x40000
	constant integer UNIT_MINIMAP_ICON_GOLD		= 0x20000
	constant integer UNIT_MINIMAP_SHAREVISIBLE	= 0x10000
	constant integer UNIT_STUNNED= 0x100000
	constant integer UNIT_INVISIBLED 			= 0x1000000
	constant integer UNIT_HIDDEN_PANEL=0x4000000//same as 0x2000000, differences are unknown
	constant integer UNIT_HAS_FLYING_VISION= 0x20000000
	constant integer UNIT_ILLUSION=0x40000000
32

» WarCraft 3 / В какие моменты имя функции конвертируется в число?

Функция это тип code, это хенд, ссылка на код, подробнее о jass писал в своихистатьях isefog.
32

» WarCraft 3 / Пассивные способности через сферы

Потому что ты не понимаешь как работает сфера, ты пытаешься скрыть блин иконку самой сферы, у которой иконки нету в природе... Ты видишь иконку способности которую ты запихал в сферу, и она вручается именно движком игры юниту и подвергается сайленсу чтобы не работала сама по себе, абилка сферы же делает принудительный каст (его и руны используют).
В целом очень хреновый кастыль, что мешает дамми каст или каст руной сделать?
32

» WarCraft 3 / Возможно ли получить область триггера? - [Jass]

Ну ты же всегда можешь получить координаты юнита, просто проверить принадлежат ли они региону или нет.
32

» WarCraft 3 / Почему не работает локальный триггер?

Потому что нет инита триггера, в целом нефиг юзает стандартные триггеры если ты их переделывать собрался.
32

» WarCraft 3 / Как грамотно отредактировать ИИ скрипт, чтобы он выбирал кастомного героя, который не всегда может быть доступен

WilliamBz, ну так это писание своего мили ии, так или иначе. К слову всё микро, применение спеллов раелизованно в движке игры, поэтому с кастом героями поосторожнее.
К слову можно ИИ написать и в обычном редакторе триггеров, но это муторно да и самому микро реализовать не так уж и просто.
32

» WarCraft 3 / Как грамотно отредактировать ИИ скрипт, чтобы он выбирал кастомного героя, который не всегда может быть доступен

В скрипте четко прописано какого героя брать и как его качать, поэтому подмена в процессе игры всё ломает. Стандартный ии разыгрывает только заранее заготовленные шаблоны, которые определяются рандомом при старте и в процессе игры не меняются.
Придется писать ИИ ручками с нуля.
32

» WarCraft 3 / Помогите снять защиту с карты!

А нахрена её открывать, если ланд можно так выдрать мпк редактором и закинуть в пустую карту? Ну код и текст аналогично.
32

» WarCraft 3 / помогите с war3map.shd

Frescon, потому что нужно в коде карты проверять координаты. Есть карта где я это всё исправил.
32

» WarCraft 3 / Независимый художник показывает свой вариант HD-ремастера классических моделей

А мне кажется или у знахаря за спиной стазисная ловушка висела, и когда он её ставил у него анимация вытаскивания её из за спины.
32

» WarCraft 3 / помогите с war3map.shd

Баг с ксиином это не исправит, а так же есть ещё баг с дарк сиром, тоже можно фатальнуть.
32

» WarCraft 3 / Чем является Widget в варкрафте?

Разрушаемый обьект - то что имеет хп и может быть разрушено, является родителем для всех остальных типов с хп.
К этому типу обьектов относятся деревья, ворота, юниты, предметы.
32

» WarCraft 3 / Почему программа отказывается принимать существование этого типа юнитов?

Просто 'h003' пиши, ибо у него ID - 'h003', ро код юнита это на самом деле целое число, и всегда из 4х символов ASC2, через двоеточие указана основа, её писать ненужно.
GetUnitOfTypeIdAll('h003')
32

» WarCraft 3 / Лидерборд

Будет, это игровой обьект, для каждого игрока по лейболборду создаем, потом показываем каждому игроку свой, а для других скрываем.
32

» WarCraft 3 / SLK оптимизация при помощи w3x2lni

Давно замечал, пропажу абилок. Оно так же падает если у вас описание чуть длинее, или какие то символы непонравятся.
Карту из слк в обж оно не всегда корректно преобразует, поэтому не надейтесь на софт, всё тщательно проверяйте. К слову багами грешат все слк оптимизаторы\деоптимизаторы...
32

» WarCraft 3 / Анимация юнита при нажатии способности

Канал, время подготовки 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