28

» WarCraft 3 / Внимание вопрос

JIEGEND, тебе по факту влепили предупреждение, тебе нужно сравнение чисел совокупности юнитов в областях, а не "внимание вопрос"
28

» WarCraft 3 / Внимание вопрос

а в чём проблема, вражеский юнит входит в область, выбрать всех юнитов в этой области и записать их суммарное значение, потом выбрать всех союзных в этой области и тоже записать суммарное значение, в конце просто сравниваешь эти числа
28

» WarCraft 3 / Руны

в принципе кроссворд прошёл успешно
Загруженные файлы
28

» WarCraft 3 / Совмещение TextTag и GetlocalPlayer. Десинхронизация.

PT153, в чём не уверен? у него кастом гуи это факт, смотри скрины

если ты про создание текстагов локально, то это тоже факт, оно работает, я уже делал систему другому челу
28

» WarCraft 3 / Совмещение TextTag и GetlocalPlayer. Десинхронизация.

Чекай, как пруф, что работает и кстати если заметил Гуи у меня по минимуму, все почти custom script
и кастом гуи в добавок
28

» WarCraft 3 / Таймер

Dnepr333, тебе уже сказали выше, делать 2 таймера и использовать смещение в 30 секунд
28

» WarCraft 3 / Мясные монстры

Bergi, мне кликабельность неважна, у меня квиккасты же)
проблема в том что я вряд ли возьмусь за собственную карту
28

» WarCraft 3 / Мясные монстры

Bergi, я бы и сам взял их себе если честно, но увы)
хорошая работа
28

» WarCraft 3 / Таймер

а ты вообще дебажил что показывает "истекшее время таймера"? может там вообще другое число
но в принципе, суть в том, что триггер срабатывает при инициализации и изначально он выключен, как оно должно работать?
28

» WarCraft 3 / Мясные монстры

вау конечно, жаль что попасть мышкой трудно (что виднеется даже на видео)
28

» WarCraft 3 / Прыжок сларка на гуи

берём нужную формулу параболы отсюда xgm.guru/p/wc3/parabolicmovement
и делаем прыжок, ничего сложного
28

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

Заклинание готово!

Заказчик: MaxIKor
Способность: Отточенная стрельба
Выполнено: Да

инструкция по импорту
скопируй папку к себе в карту, на основе яда создай абилку для героя (можешь просто скопировать из карты), в триггере DamageEventGUI указываешь эту абилку и в коде триггера DamageEvent заклинания от этого яда, так же в коде есть время, через которое нужно удалять стаки с юнита (там стоит 3 сек), в принципе там больше нечего изменять
не уверен есть ли какие-то баги и в принципе если будут трудности с импортом, можешь написать, я попробую исправить/помочь
код
делал на вджассе
library DamageEventLib
globals
    private constant hashtable H     = InitHashtable( )
    private constant timer TempTimer = CreateTimer( )
    private constant group TempGroup = CreateGroup( )
endglobals

private struct UnitStruct
    integer attacker
    integer damaged
    integer count
    timer t
endstruct

private function RemoveStacks takes nothing returns nothing
    local timer t = GetExpiredTimer( )
    local UnitStruct A = LoadInteger( H, GetHandleId( t ), 0 )
    
    call RemoveSavedInteger( H, A.attacker, A.damaged )
    call FlushChildHashtable( H, GetHandleId( t ) )
    call DestroyTimer( t )
    
    set A.t = null
    set A.count    = 0
    set A.attacker = 0
    set A.damaged  = 0
    call A.destroy( )
    
    set t = null
endfunction

private function DamageEvent_Actions takes nothing returns nothing
    local UnitStruct A
    
    set udg_damaged = GetTriggerUnit( )
    
    if GetUnitAbilityLevel( udg_damaged, 'Bssd' ) > 0 then // заклинания яда
        call UnitRemoveAbility( udg_damaged, 'Bssd' )
        
        set udg_damage = GetEventDamage( )
        set udg_attacker = GetEventDamageSource( )
        set A = LoadInteger( H, GetHandleId( udg_attacker ), GetHandleId( udg_damaged ) )
        
        if A == 0 then
            set A = UnitStruct.create( )
            set A.t = CreateTimer( )
            set A.attacker = GetHandleId( udg_attacker )
            set A.damaged = GetHandleId( udg_damaged )
            
            call SaveInteger( H, A.attacker, A.damaged, A )
            call SaveInteger( H, GetHandleId( A.t ), 0, A )
        endif
            
        call TimerStart( A.t, 3.00, false, function RemoveStacks ) // через какое время удалить стаки ( 3.00 сек )
        
        set A.count = A.count + 1
        set udg_count = A.count
        
        call TriggerExecute( gg_trg_DamageEventGUI )
        
        set A.count = udg_count
    endif
endfunction

//===========================================================================
private function Regist_2 takes nothing returns boolean
    call TriggerRegisterUnitEvent( gg_trg_DamageEvent, GetTriggerUnit( ), EVENT_UNIT_DAMAGED )
    
    return false
endfunction

private function Regist_1 takes nothing returns boolean
    call TriggerRegisterUnitEvent( gg_trg_DamageEvent, GetFilterUnit( ), EVENT_UNIT_DAMAGED )
    
    return false
endfunction

private function Regist takes nothing returns nothing
    if gg_trg_DamageEvent != null then
        call DestroyTrigger( gg_trg_DamageEvent )
    endif
    
    set gg_trg_DamageEvent = CreateTrigger(  )
    
    call GroupEnumUnitsInRect( TempGroup, bj_mapInitialPlayableArea, Condition( function Regist_1 ) )
    call TriggerAddAction( gg_trg_DamageEvent, function DamageEvent_Actions )
    
    call TimerStart( TempTimer, 600.00, false, function Regist )
endfunction

function InitTrig_DamageEvent takes nothing returns nothing
    local region rectRegion = CreateRegion( )
    local trigger trg = CreateTrigger( )
    
    call RegionAddRect( rectRegion, bj_mapInitialPlayableArea )
    call TriggerRegisterEnterRegion( trg, rectRegion, null )
    call TriggerAddCondition( trg, Condition( function Regist_2 ) )
    call TimerStart( TempTimer, 0.00, false, function Regist )
    
    set trg = null
    set rectRegion = null
endfunction
endlibrary
Загруженные файлы
28

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

Заказ принят

Заказчик: MaxIKor
Способность: Отточенная стрельба
Спелл будет завершен к: возможно сегодня
28

» WarCraft 3 / Триггер смены владельца здания.

могу в принципе потом отдельной картой скинуть, если не разберёшься
28

» WarCraft 3 / Триггер смены владельца здания.

rite, если в области находится любой юнит, которого можно выбрать, действия никогда не сработают, здания тоже юниты


MainUnit это твоё здание

а, и ещё одну проверку перед выбором в группу, что соответствующий юнит жив, забыл об этом
Загруженные файлы
28

» WarCraft 3 / Триггер смены владельца здания.

rite, сравнение целочисленного - кол-во юнитов в области при условии - юниты принадлежат игроку владельцу юнита триггера и юнит не равен зданию
28

» WarCraft 3 / Триггер смены владельца здания.

2 события
  • юнит входит в область
  • здание принадлежит нейтралу
  • поменять владельца здания на владельца юнита триггера

  • юнит вышел из области
  • владелец юнита триггера равен владельцу здания + в области больше нет юнитов этого игрока (исключая здание)
  • сменить владельца здания на нейтрала
28

» WarCraft 3 / Хэш-таблица 1.26a

возможно обрыв потока происходил, а через TriggerSleepAction( 0.00 ) ты его обновлял