Добавлен  Sparrow 
                            
                            
                            
                            
                            
                            
                        
                        
                    Как сделать так,что бы локальный юнит ссылался из одного триггера в другой?
И попутный вопрос: Допустим у меня есть функция которая берет неизвестный юнит(takes unit u), то как ее вызвать так,что бы неизвестный юнит задавался локальным из триггера?
P.S. Я это спрашиваю потому что для того что мне нужно,надо что бы из 1-го триггера локальный юнит ссылался на 2-ой,а из 2-го в функцию.
И попутный вопрос: Допустим у меня есть функция которая берет неизвестный юнит(takes unit u), то как ее вызвать так,что бы неизвестный юнит задавался локальным из триггера?
P.S. Я это спрашиваю потому что для того что мне нужно,надо что бы из 1-го триггера локальный юнит ссылался на 2-ой,а из 2-го в функцию.
Принятый ответ
 silence_AZ, 
Вот вам пример, идите разбирайте его и читайте все статьи, что есть.
Вот вам пример, идите разбирайте его и читайте все статьи, что есть.
function UnitAddEffect takes unit u, real x, real y returns nothing
    call DestroyEffect(AddSpecialEffect("Abilities\\Spells\\Undead\\AnimateDead\\AnimateDeadTarget.mdl", x, y))
    call DestroyEffect(AddSpecialEffect("Abilities\\Spells\\Human\\ThunderClap\\ThunderClapCaster.mdl", GetUnitX(u), GetUnitY(u)))
endfunction
function Action takes nothing returns nothing
    local unit u = GetOrderedUnit()
    local real x = GetOrderPointX()
    local real y = GetOrderPointY()
    call UnitAddEffect(u, x, y)
endfunction
function InitTrig_Effect takes nothing returns nothing
    local trigger t = CreateTrigger()
    local integer i = 0
    loop
        call TriggerRegisterPlayerUnitEvent(t, Player(i), EVENT_PLAYER_UNIT_ISSUED_POINT_ORDER, null)
        set i = i + 1
        exitwhen i == 16
    endloop
    call TriggerAddAction( t, function Action )
endfunction
Создайте триггер "Effect", конвертируйте в текст, удалите все что там есть, копирните и вставьте мое, запускайте карту и побегайте юнитами.
То что я написал можно и нужно оптимизировать, но так как вам нужен пример создания пользовательский функций, то я сделал именно так.
Вот на всякий случай оптимизированный вариант.
То что я написал можно и нужно оптимизировать, но так как вам нужен пример создания пользовательский функций, то я сделал именно так.
Вот на всякий случай оптимизированный вариант.
cJass
    define{
        func = function
        void = nothing
        GetX(u) = GetUnitX(u)
        GetY(u) = GetUnitY(u)
        //Constants
        Effect_OnUnit = "Abilities\\Spells\\Human\\ThunderClap\\ThunderClapCaster.mdl"
        Effect_OnXY = "Abilities\\Spells\\Undead\\AnimateDead\\AnimateDeadTarget.mdl"
    }
    void Action(){
        unit u = GetOrderedUnit();
        DestroyEffect(AddSpecialEffect(Effect_OnXY, GetOrderPointX(), GetOrderPointY()));
        DestroyEffect(AddSpecialEffect(Effect_OnUnit, GetX(u), GetY(u)));
    }
    void InitTrig_Effect(){
        trigger t = CreateTrigger()
        integer i = 0
        loop{
            TriggerRegisterPlayerUnitEvent(t, Player(i), EVENT_PLAYER_UNIT_ISSUED_POINT_ORDER, null);
            i++;
            exitwhen i == 16;
        }
        TriggerAddAction( t, func Action );
    }
этот вариант будет оптимальнее в туче кода, хоть такая фигня и не нужна никому, но тем не менее..
    
        
            
                `
            
            
                
        
    
    ОЖИДАНИЕ РЕКЛАМЫ...
            
                    
                        Чтобы оставить комментарий, пожалуйста, войдите на сайт.
                    
                
            
                                WC3
                            



Ред. Buulichkaa
Ред. Sparrow
Проще говоря систему показа нанесенного урона в виде плавающего текста(свою).
Если есть желание то вы объясните мне как это сделать.
Ред. Buulichkaa
Так же следует задать событие триггеру
это
Ред. Sparrow
ФУНКЦИЯ
function SDMS_Actions takes unit n returns nothing
call CreateTextTagUnitBJ( I2S(R2I(GetEventDamage())), n, 0, 10, 100, 100, 100, 0 )
call SetTextTagPermanentBJ( GetLastCreatedTextTag(), false )
call SetTextTagVelocityBJ( GetLastCreatedTextTag(), 64, 90 )
call SetTextTagLifespanBJ( GetLastCreatedTextTag(), 1.00 )
call SetTextTagFadepointBJ( GetLastCreatedTextTag(), 0.50 )
endfunction
function Trig_sdmsss_Actions takes nothing returns nothing
set udg_unit = GetAttackedUnitBJ ()
call DestroyTrigger(udg_SDMS)
set udg_SDMS = CreateTrigger( )
call TriggerRegisterUnitEvent( udg_SDMS, udg_unit, EVENT_UNIT_DAMAGED )
call TriggerAddAction( udg_SDMS, function SDMS_d )
endfunction
function InitTrig_sdmsss takes nothing returns nothing
set gg_trg_sdmsss = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_sdmsss, EVENT_PLAYER_UNIT_ATTACKED )
call TriggerAddAction( gg_trg_sdmsss, function Trig_sdmsss_Actions )
endfunction
ибо ты полный бред написал
https://www.xgm.guru/p/blog-nvc123/103148
бж
утечки
Ред. Buulichkaa
Вот вам пример, идите разбирайте его и читайте все статьи, что есть.
То что я написал можно и нужно оптимизировать, но так как вам нужен пример создания пользовательский функций, то я сделал именно так.
Вот на всякий случай оптимизированный вариант.
Ред. Sparrow
Вторая отдает координаты в первую
Прошу прощения но объясните нубу что значит exitwhen i == 16
exitwhen i == 16
это перебор в БЖ функции для задания события, я бж открыл чтобы не создавать новые процедуры