32

» WarCraft 3 / Как реализовать перебор группы в площади треугольника ? - [Jass]

Если это абилка по типу волны, просто строем биссектрису и движем по ней перебор в радиусе, радиус увеличиваем с каждым шагом.
32

» WarCraft 3 / Звуки и музыка через триггеры в синематеках WarCraft III

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

» WarCraft 3 / Альтернатива москитам

А чем стандартный AFRZ ледяных змеев не подходит, если настроить то работает и на юнитов, не только здания.
32

» WarCraft 3 / Слияние двух war3map.j в один

Вопрос зачем? Это скрипт, их априори сливать нелья, тебе не смущает наличие обьектов в каждой карте и их связь со скриптом. Не говоря про то что, а как будет работать спавн юнитов, работа триггерных заклинаний если они на 1 и тоже ID будут срабатывать?
32

» WarCraft 3 / Превышение лимита скорости

Не так не получится, + ты забываешь про обзор, туман войны обновляется раз в 0.4 сек, у тебя юнит убежит и в темноте потеряется, прежде чем вокруг него появится обзор.
Не говоря про просчеты пути. Так что никак, только как инвалид - подталкивать юнита по понемногу .
32

» WarCraft 3 / рестарт карты

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

» WarCraft 3 / Небольшой вопрос касательно хэш-таблиц

nazarpunk, Оптимизаторы вроде давно умеют StringHash заменять на уникальный ключ, при оптимизации карты. Не вижу проблемы.
32

» WarCraft 3 / Ищу карту

Случаем не в виде буквы Х были лайны, помню такую карту...
32

» WarCraft 3 / Насколько быстро выполняется if ? - [Jass]

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

» WarCraft 3 / Про перенос warhammer 40000: Horus heresy в warcraft III

Эх были раньше норм такие карты с импортом, с кодом, прям огонь по вахе, щяс не найдешь уже, очень бы было неплохо оттуда взяь наработки.
32

» WarCraft 3 / Способности и алгоритмы на заказ

Chongoyuto, блин тебе мб из доты дать код, он примитивный, весь эффект дает soulburn файрлорда, а урон отдельный триггер, просто себе скопировал и можно не вникать.
32

» WarCraft 3 / Проседает фпс. Как лечить?

Ну просадки фпс будут на любом патче если ты вдруг увидишь кучу обьектов которых до этого не видел, т.к движок начнет подгружать их в память, т.к игра однопоток - побоку скока там у вас ядер и прочего дерьма, для игры всегда есть 1 ядро и 512мб озу, и точка. Реальный рост фпс будет зависить лишь от частоты ядра, больше - быстрее. Разумеется карты сделанные кривыми руками подлагивают, иногда так конкретно, если вспомнить всякие гринт тд или тот же легион тд. Ну и в целом игра заточена под виндовс и директ их, на котором она вышла. Близарды так и не переписали рендер движка по нормальному, и поэтому в рефаунде даже усугубилось всё.
Все стандартные стомп способности вызывают просадку фпс, причем чем больше карта - тем сильнее, это баг - т.к один из кодеров решил что шибко долго искать все декрации в радиусе, лучше целиком в цикле перебрать весь их класс чтобы пересчитать им высоту над рельефом, когда деформируется земля - пересчитываются высоты всех стоящих на ней обьектов - чтобы они не висели в воздухе. Подобное было и в сравнительно современных играх.
32

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

// Evasion
// Blur
// Drunken Brawler
// Butterfly
// Halberd
// Talisman
// Smoke screen -
// Whirling Axes - 60%
// Crippling Fear - 50%
// Drunken Haze - 45, 55, 65, 75

function GT1 takes unit SFI returns nothing // evasion up
    local real GR1 = 1
    local integer GP1 = UnitInventorySize( SFI )
    local integer x = 0
    local item i
    local integer SUI = GetUnitAbilityLevel( SFI, 'A03P' ) // blur
    
    if SUI > 0 then
        if SUI == 1 then
            set GR1 = GR1 * 0.8
        elseif SUI == 2 then
            set GR1 = GR1 * 0.7
        elseif SUI == 3 then
            set GR1 = GR1 * 0.6
        elseif SUI == 4 then
            set GR1 = GR1 * 0.5
        endif
    endif
    
    set SUI = GetUnitAbilityLevel( SFI, 'A0MX' )
    if SUI > 0 then
        set GR1 = GR1 * ( 1 - ( 0.05 + 0.05 * SUI ) )
    endif
    
    loop
        exitwhen x > GP1
        set i = UnitItemInSlot( SFI, x )
        if F01( i ) == ButterflyActiveId then
            set GR1 = GR1 * 0.65
        elseif F01( i ) == HN0 or F01( i ) == HeavensHalbertId then
            set GR1 = GR1 * 0.75
        endif
        set x = x + 1
    endloop
    set SUI = R2I( ( 1 - GR1 ) / 0.05 )* 1
    if SUI > 0 then
        call AddPermanentAbility( SFI, 'A2V3' )
        call SetUnitAbilityLevel( SFI, 'A2V3', SUI )
        set x = GetUnitAbility( SFI, 'A2V3' )
        if x < 1 then
            call BJDebugMsg("ability not added!")
        else
            call SaveInteger( HashData, ExEvasionData, GetHandleId( SFI ), x )
            if IsUnitIllusion( SFI ) then
                if RMem( x + 0x3C ) > 0 then
                    call WMem( x + 0x3C, 0 )
                endif
            endif
        endif
    else
        call UnitRemoveAbility( SFI, 'A2V3' )
        call RemoveSavedInteger( HashData, ExEvasionData, GetHandleId( SFI ))
    endif
    set i = null
endfunction
Вот функция сложения шансов промахов из доты, автор IceFrog.

GR -это вероятность попасть по юниту, перечисляются всё источники, после идёт округление до 5, т.у у пассивки шаг промахов 5%, добивать до 1% смысла нет.
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