30

» Администрация XGM / Миниатюры в кратких описаниях ресурсов сдвигаются со скроллом

но хз если мешает надо убирать
Чем оно может мешать, кроме того, что непривычно? Блок заполняет пустое место и при скролле оно не выглядит тупо бесполезным.
30

» Администрация XGM / Миниатюры в кратких описаниях ресурсов сдвигаются со скроллом

Может быть, но очень контринтуитивно и не припомню где так ещё.
В любом мессенджере с аватарками пользователей.
30

» WarCraft 3 / Игровые зоны.

Так можно добавить все Rect в Region и использовать IsPointInRegion().
30

» WarCraft 3 / Jass возрождение курьера! Хелпаните друзья!

Стоит курьеру сдохнуть над непроходимым местом (именно рельефом, а не деструктаблами, склон или еще чего ).
А если ему перерождение выдать?
30

» WarCraft 3 / Jass возрождение курьера! Хелпаните друзья!

Где???
Здесь я помню делал разложение в ноль, чтоб сразу исчезали. А так да, проще сохранить предметы и количество зарядов в таблицу и тупо пересоздавать.

Или можно проще, сразу создавать нового курьера, передавать ему вещи и хайдить.
30

» WarCraft 3 / Jass возрождение курьера! Хелпаните друзья!

Bergi_Bear, Так установить время разложения летуна в 100500 и ручками удалять.

Код там правильный
Зато мой вариант читабельней)
30

» WarCraft 3 / Jass возрождение курьера! Хелпаните друзья!

Итак попросил одного грамотного человека в Jass
Что то я сомневаюсь в его грамотности, скорее всего это гуишник. Грамотный человек бы использовал zinc.
//! zinc
library Courier {
    function onInit() {
        udg_GAME_BASE_RECT = gg_rct_Baza;
        udg_GAME_RECT_BACKCOUR = gg_rct_KURA;
        udg_GAME_COURIER_UP_COST[1] = 100;
        udg_GAME_COURIER_UP_COST[2] = 500;
        udg_GAME_BUYER_TYPE = 'H017';
    
        udg_GAME_COURIER_TYPE[1] = 'u000';
        udg_GAME_COURIER_TYPE[2] = 'u00J';
        udg_GAME_COURIER_TYPE[3] = 'u00A';
    
        udg_GAME_COURIER_SPELLS[1] = 'A0EA';
        udg_GAME_COURIER_SPELLS[2] = 'A0E9';
        udg_GAME_COURIER_SPELLS[3] = 'S001';
        udg_GAME_COURIER_SPELLS[4] = 'S002';

        trigger t = CreateTrigger();

        for (0 <= i < bj_MAX_PLAYER_SLOTS){
            TriggerRegisterPlayerUnitEvent(t, Player(i), EVENT_PLAYER_UNIT_DEATH, null);
        }

        TriggerAddCondition(t, Filter(function() -> boolean {
            return GetUnitTypeId(GetDyingUnit()) == udg_GAME_COURIER_TYPE[1] 
                    || 
                    GetUnitTypeId(GetDyingUnit()) == udg_GAME_COURIER_TYPE[2] 
                    || 
                    GetUnitTypeId(GetDyingUnit()) == udg_GAME_COURIER_TYPE[3];
        }));

        TriggerAddAction( t, function() {
            unit d = GetDyingUnit();
            player p = GetOwningPlayer(d);
            item ITEM[];
            timer t = CreateTimer();
            timerdialog td = CreateTimerDialog(t);
            integer i, HNDL = GetHandleId(t);
            for (0 <= i < 6){
                ITEM[i] = UnitItemInSlot(d, i);
            }
            TimerStart(t, 30.00, false, null);
            TimerDialogSetTitle(td, "Курьер: ");
            if (GetLocalPlayer() == p){
                TimerDialogDisplay(td, true)
            }
            TriggerSleepAction( 30.00 );
            
            unit cu = CreateUnit(p, GetUnitTypeId(d), GetRectCenterX(udg_GAME_RECT_BACKCOUR), GetRectCenterY(udg_GAME_RECT_BACKCOUR), 270.00);
            DestroyEffect(AddSpecialEffect("Abilities\\Spells\\Human\\ReviveHuman\\ReviveHuman.mdl", GetRectCenterX(udg_GAME_RECT_BACKCOUR), GetRectCenterY(udg_GAME_RECT_BACKCOUR)));
            
            for (0 <= i < 6){
                UnitAddItemByIdSwapped( GetItemTypeId(ITEM[i]), cu);
            }
            cu = null;
            d = null;
            DestroyTimer(t);
            t = null;
            DestroyTimerDialog(td);
            td = null;
        });

        t = null;    
    }
}
//! endzinc
TriggerSleepAction это вобще зло и нужно нормально на таймерах/хэштаблицах делать.
30

» WarCraft 3 / Проверка типа переменной

с typescript не знаком, но выглядит интересно.
Там основная идея отлавливать ошибки в compile-time, а не гадать, что же лежит в переменной.
30

» WarCraft 3 / Проверка типа переменной

Nelloy, зачем в рантайме проверки типа переменной делать? Если хочется строгих проверок типов, то typescript в помощь. Там и ООП есть)