la función M5D no toma nada y devuelve booleano
devuelve GetSpellAbilityId()=='A0OK' o GetSpellAbilityId()=='A1VW'
función final
la función M2D no toma nada y no devuelve nada
unidad local TT7=GetEnumUnit()
unidad local M_D=GetTriggerUnit()
entero local N4D=GetHeroInt( M_D, verdadero)-GetHeroInt(TT7, verdadero)
matriz de enteros local N7D
entero local Y17=GetUnitAbilityLevel(M_D, 'A0OK')
entero local N8D=7 1*Y17
si Y17==0 entonces
establezca Y17=GetUnitAbilityLevel(M_D,'A1VW')
establezca N8D=7 1* Y17 1
endif
establecer N7D[1]=10
establecer N7D[2]=30
establecer N7D[3] =50
si(N4Dgt; 0)entonces
llame a UnitDamageTarget(M_D, TT7, N4D*N8D, verdadero, falso, ATTACK_TYPE_NORMAL, DAMAGE_TYPE_MAGIC, WEAPON_TYPE_WHOKNOWS)
llamar a VX7(I2S(R2I(N4D*N8D)), 3, TT7, 0.023, 216, 30, 30, 216)
si(N4Dlt;N7D[Y17])entonces
llamar a DestroyEffect(AddSpecialEffectTarget("Abilities\\Spells\\Human\\Feedback\\SpellBreakerAttack.mdl", TT7, "overhead"))
llamar a SetUnitState(TT7, UNIT_STATE_MANA, GetUnitState(TT7, UNIT_STATE_MANA)*.25)
endif
endif
establecer TT7=null
establecer M_D=null
función final
la función N9D no toma nada y devuelve booleano
if(IsUnitType(GetFilterUnit(), UNIT_TYPE_HERO)==true)entonces
if(IsUnitEnemy(GetFilterUnit( ), GetOwningPlayer(GetTriggerUnit())))luego
devuelve verdadero
endif
endif
devuelve falso
endfu
nction
función NDD no toma nada y no devuelve nada
unidad local O49=GetTriggerUnit()
entero local RL9=GetUnitAbilityLevel(O49,'A0OK')
local real x=GetLocationX(GetSpellTargetLoc())
local real y=GetLocationY(GetSpellTargetLoc())
grupo local RS9=TN7()
entero local K09=0
unidad local NED=(MG7(GetHandleId(O49), "748"))
si RL9==0 entonces
set RL9=GetUnitAbilityLevel(O49,'A1VW')
endif
llamar a DestroyEffect(AddSpecialEffect("Habilidades\\Spells\\Human\\MarkOfChaos\\MarkOfChaosTarget.mdl", x, y))
bucle
salir cuando K09gt;=360
llamar a DestroyEffect(AddSpecialEffect("Habilidades\\Spells\\Human\\MarkOfChaos\\ MarkOfChaosTarget.mdl", x (200 RL9*50)*Cos(K09*bj_DEGTORAD), y (200 RL9*50)*Sin(K09*bj_DEGTORAD)))
set K09=K09 45 p>
endloop
llamar a GroupEnumUnitsInRange(RS9, x, y, 300 RL9*100, Condition(function N9D))
si NED!=null y IY7(x, y, GetUnitX(NED), GetUnitY(NED))lt; (300 RL9*100)luego
llame a SetUnitInvulnerable(NED, false)
llame a GroupAddUnit(RS9, NED)
endif
llamar a ForGroup(RS9, función M2D)
si NED!=null y UF7(NED)==false entonces
llamar a SetUnitInvulnerable(NED, true)
endif
llamar a TM7(RS9)
establecer O49=null
establecer RS9=null
función final
función GP8 no toma nada y no devuelve nada
disparador local t=CreateTrigger()
llamada TriggerRegisterAnyUnitEventBJ(t, EVENT_PLAYER
_UNIT_SPELL_EFFECT)
llamar a TriggerAddCondition(t, Condición(función M5D))
llamar a TriggerAddAction(t, función NDD)
establecer t=null
función final
Espero que puedas entender que A0OK es el movimiento definitivo Eclipse of Sanity, A1VW es el ID de habilidad detrás de la cuenta A, y puedes estudiar el resto lentamente por tu cuenta de acuerdo con la descripción de la habilidad. la mayoría de las frases son todos clichés, y la segunda mitad es para efectos especiales. Solo hay unas pocas frases útiles: seleccione una unidad dentro de un rango de 300 RL9*100, emita un juicio sobre la unidad seleccionada, lance un hechizo. el chaleco y la unidad daña al objetivo
UnitDamageTarget( M_D, TT7, N4D*N8D, true, false, ATTACK_TYPE_NORMAL, DAMAGE_TYPE_MAGIC, WEAPON_TYPE_WHOKNOWS)
Si quieres aprender las habilidades En dota, abra el archivo J del mapa de dota y eche un vistazo. No es fácil escribir el código, pero aún así es muy fácil de leer.
¡Espero adoptarlo!