Добавлен N1ghtSiren
Как это работает?
Копался в одной карте, нашёл довольно странный код, при этом в игре всё работает на ура.
В карте только скрипт +изменённый в непонятную сторону common.j , blizzard.j судя по всему используется стандартный.
Копался в одной карте, нашёл довольно странный код, при этом в игре всё работает на ура.
В карте только скрипт +изменённый в непонятную сторону 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
ну есть глобалки, в них сам автор и записывает значение, когда надо
set mF=GetEventDamageSource()
смысл действия не ясен, но никакой магии тут нет, самый обычный vjass
`
ОЖИДАНИЕ РЕКЛАМЫ...
Чтобы оставить комментарий, пожалуйста, войдите на сайт.
ну есть глобалки, в них сам автор и записывает значение, когда надо
set mF=GetEventDamageSource()
смысл действия не ясен, но никакой магии тут нет, самый обычный vjass