1

» WarCraft 3 / Система нападения

lioloisigisi,
В том то и дело. Я не имею доступа к карте "30 min" но там очень удобная система волн. Потому думал мне смогут помочь те кто играли и шарят за эту систему.

TechnoViking, Количество юнитов нападающего просто не должно переваливать за предел(определённое число). У меня просто лаги в карте появляются и чтобы избавиться от них, хотелось бы уменьшить количество юнитов нападающего на карте в данный момент времени, но при этом оставить постоянный натиск.
1

» WarCraft 3 / Способность фуры из Доты

function Delete_Destructable takes nothing returns nothing
    local timer t = GetExpiredTimer()                  //Наш таймер - истёкший
    local integer h = GetHandleId(t)                   //Узнаём id таймера
    local destructable tree  //Достаём цель из значения 2
    local integer i = 1
   
   loop
        exitwhen i > 10
        set tree = LoadDestructableHandle(hash,h,i)
        call KillDestructable(tree)
        set i = i + 1
    endloop
    call DestroyTimer(t) //Уничтожаем таймер
    //Очищаем хеш-таблицу, чтобы избежать утечек и наложений
    call FlushChildHashtable(hash,h) //Очищаем ключ по id
    
    //Не забываем устранять утечки
    set tree = null
    set t = null
endfunction
 
function Hashtable_Actions takes nothing returns nothing
    local unit Caster = GetSpellAbilityUnit()
    local destructable Tree
    local location Target = GetSpellTargetLoc()
    local timer t = CreateTimer()
    local integer h = GetHandleId(t)
    
    //Сохраняем объекты с ключом - id таймера

    //Создаём деревья 
    local integer i = 1
    loop
        exitwhen i > 10
        call CreateDestructableLoc( 'LTlt', PolarProjectionBJ(GetSpellTargetLoc(), 200.00, ( I2R(i) * 36.00 )), GetRandomDirectionDeg(), 1.00, GetRandomInt(1, 10) )
        call SaveDestructableHandle(hash,h,bj_forLoopAIndex,GetLastCreatedDestructable()) 
        call SetDestructableAnimationBJ( GetLastCreatedDestructable(), "birth" )
        call SetDestructableLife( GetLastCreatedDestructable(), I2R(GetHeroStatBJ(bj_HEROSTAT_INT, GetTriggerUnit(), true)) )
        set i = i + 1
    endloop
    
//    call TimerStart(t,10,true,function Delete_Destructable)
endfunction

function Hashtable_Cond takes nothing returns boolean
    return GetSpellAbilityId() == 'A014'
endfunction

//===========================================================================
function InitTrig_Hashtable takes nothing returns nothing
    local trigger ForestKeeperTrees = CreateTrigger()
    local integer index
    set index = 0
    loop
        call TriggerRegisterPlayerUnitEvent(ForestKeeperTrees,Player(index),EVENT_PLAYER_UNIT_SPELL_CAST,null)
        index = index + 1
        exitwhen index >= 16
    endloop
    call TriggerAddCondition( ForestKeeperTrees, Condition(function Hashtable_Cond) )
    call TriggerAddAction( ForestKeeperTrees, function Hashtable_Actions )
endfunction

Borodach, nazarpunk, Если вам не трудно, можете пожалуйста проверить код. С хэш-таблицами работаю впервые, потому не знаю в чём ошибка. Деревья через 10 сек не разрушаются.
1

» WarCraft 3 / Щит аббадона или же пассивка воина свет из ЖНА

Borodach,
А как тогда считывать момент, когда нужно добавить некоторое кол-во хп юниту? Сейчас попробовал с условием хп юнита больше или равно максимальное хп юнита - полученный урон. Не сработало... Я просто тот ещё хлебушек в отлове урона.
1

» WarCraft 3 / IssueImmediateOrderById

Всё заработало, большое спасибо, ниже частичка кода.

Код в студию, приказ способности можно узнать банальным дебагом, просто триггер с событием юнит отдал приказ, и дебаг сообщением с номером приказа, берем юзаем свиток защиты ручками и смотрим.
Я кстати пытался это сделать, но мне за все действия писало 0
Загруженные файлы
1

» WarCraft 3 / Как заблокировать кнопку в меню

Вроде как нельзя, но я в этом не уверен. (по крайней мере сам пытался найти)