Как это работает?
Копался в одной карте, нашёл довольно странный код, при этом в игре всё работает на ура.
В карте только скрипт +изменённый в непонятную сторону common.j , blizzard.j судя по всему используется стандартный.
раскрыть
//mF, MF - глобалки
function GetDamageSource takes nothing returns unit
    return mF
endfunction

function GetAttackedUnit takes nothing returns unit
    return MF
endfunction

function y5v takes nothing returns boolean
    call UnitDamageTargetBY((((mF))),(((MF))),(((($5DC)*1.))*1.),false,(false),false,false,(ATTACK_TYPE_NORMAL),(DAMAGE_TYPE_MAGIC),.0,"")
    call dxv((MF),true)
    return false
endfunction

//т.е. это получается то же самое, что и 
    call UnitDamageTargetBY(GetDamageSource()),(GetAttackedUnit()),(((($5DC)*1.))*1.),false,(false),false,false,(ATTACK_TYPE_NORMAL),(DAMAGE_TYPE_MAGIC),.0,"")
Пример со скрином:
function i1e takes nothing returns boolean
    local integer id
    local integer i
    if GetWidgetLife((MF))>1.5 then
        set KF[HF]=PF+1000000.
        call SetWidgetLife((MF),GetWidgetLife((MF))-1)
    else
        set i=GetRandomInt(1,5)
        if i==1 then
            call NewTextTagInTarget_B((mF),"SIGHT",$C,$9B,$9B,$9B)
            call Auxiliary_ImmediateOrder(('AOfs'),GetOwningPlayer((mF)),1,$D009A,GetUnitX((mF)),GetUnitY((mF)))
        elseif i==2 then
            set id=(pF_v)
            if nK[id]==null then
                set nK[id]=NewTimer(id)
                call UnitAddAbilityBY((mF),'A0J7')
                call ModifyUnitMagicDamage((id),50)
                call Unit_App_Counter(71,id)
            endif
            call NewTextTagInTarget_B((mF),"DAMAGE",$C,$FF,$9B,$9B)
            call TimerStart(nK[id],5,false,function i0e)
        elseif i==3 then
            call UnitCure_Drain((mF),$F423F,.3*GetUnitState((mF),UNIT_STATE_MAX_LIFE))
            call tUv((mF),.5*GetUnitState((mF),UNIT_STATE_MAX_MANA))
            call NewTextTagInTarget_B((mF),"HEAL",$C,$9B,$FF,$FF)
        elseif i==4 then
            set id=(GetUnitUserData(MV[GetPlayerId(GetOwningPlayer(Je[((pF_v))]))]))
            set i=2
            loop
                call UnitResetCooldownById((Je[(id)]),LoadInteger(BYHT,Hero_Skills_table[(id)],i))
                exitwhen i==6
                set i=i+1
            endloop
            call NewTextTagInTarget_B((mF),"REFRESH",$C,105,$9B,$FF)
        elseif i==5 then
            call Auxiliary_TargetOrder(('A0J8'),null,1,$D0085,(mF))
            call NewTextTagInTarget_B((mF),"SPEED",$C,$FF,$FF,$80)  // <--
        endif
        call DestroyEffect(AddSpecialEffectTarget("Abilities\\Spells\\Human\\HolyBolt\\HolyBoltSpecialArt.mdl",(mF),"origin"))
    endif
    return false
endfunction
Воспроизвести подобное в тестовой карте не получилось...
function GetAttackedUnit takes nothing returns unit
    return udg_A
endfunction

function Trig_t2_Actions takes nothing returns nothing
    call BJDebugMsg(GetUnitName((udg_A)))
endfunction

//===========================================================================
function InitTrig_t2 takes nothing returns nothing
    set gg_trg_t2 = CreateTrigger(  )
    call TriggerRegisterUnitEvent( gg_trg_t2, gg_unit_hkni_0001, EVENT_UNIT_DAMAGED )
    //call TriggerRegisterUnitEvent( gg_trg_t2, gg_unit_hkni_0001, EVENT_UNIT_ATTACKED ) также давал ровно (null)
    call TriggerAddAction( gg_trg_t2, function Trig_t2_Actions )
endfunction

ниче не понял
ну есть глобалки, в них сам автор и записывает значение, когда надо
set mF=GetEventDamageSource()
смысл действия не ясен, но никакой магии тут нет, самый обычный vjass
`
ОЖИДАНИЕ РЕКЛАМЫ...
30
Есть мнение, что используется какой-то препроцессор
32
Скорее всего китайский мемхак где все это дело в ддлке, а дллку запускает мемхак из потока ИИ, хз почему так и как у них на всех патчах робит а не на 1.26 и 1.27 хз.
16
ниче не понял
ну есть глобалки, в них сам автор и записывает значение, когда надо
set mF=GetEventDamageSource()
смысл действия не ясен, но никакой магии тут нет, самый обычный vjass
Принятый ответ
32
Ну посмотрел код, следов мх не видно, нет ни stand ни StartAI...
Чтобы оставить комментарий, пожалуйста, войдите на сайт.