level 1
maxpaynebupt
楼主
还有一个老兵系统的,用到了BonusMod,其实就是用unituserdata来存储小兵的经验,然后每次得到经验就给小兵加一点bonus,并把小兵体积变大一点。
backattack用到了GUI Friendly Damage Detection,就是发生伤害的时候计算攻击者跟被攻击者的face角度来附加额外伤害。
function Trig_Backattack_______uConditions takes nothing returns boolean
return ((IsUnitType(udg_GDD_DamagedUnit, UNIT_TYPE_STRUCTURE) == false))
endfunction
function Trig_Backattack_______uActions takes nothing returns nothing
if ((IsUnitType(udg_GDD_DamageSource, UNIT_TYPE_STRUCTURE) == true)) then
set udg_attackfactor=1.5*udg_GDD_Damage*(1-RAbsBJ(GetUnitFacing(udg_GDD_DamagedUnit)-AngleBetweenPoints(GetUnitLoc(udg_GDD_DamageSource), GetUnitLoc(udg_GDD_DamagedUnit)))/180)
else
set udg_attackfactor=1.5*udg_GDD_Damage*(1-RAbsBJ(GetUnitFacing(udg_GDD_DamagedUnit)-GetUnitFacing(udg_GDD_DamageSource))/180)
endif
call DisableTrigger( GetTriggeringTrigger() )
call UnitDamageTargetBJ( GetTriggerUnit(), udg_GDD_DamagedUnit, udg_attackfactor, ATTACK_TYPE_MELEE, DAMAGE_TYPE_NORMAL )
call EnableTrigger( GetTriggeringTrigger() )
if ((udg_attackfactor >= 1.00)) then
call CreateTextTagUnitBJ( I2S(R2I(udg_attackfactor)), udg_GDD_DamageSource, 0, 10, 100, 0.00, 0.00, 0 )
call SetTextTagVelocityBJ( GetLastCreatedTextTag(), 64, 90 )
call SetTextTagPermanent( GetLastCreatedTextTag(), false )
call SetTextTagLifespan( GetLastCreatedTextTag(), 1.00 )
call SetTextTagFadepoint( GetLastCreatedTextTag(), 0.40 )
else
endif
endfunction
//===========================================================================
function InitTrig_Backattack_______u takes nothing returns nothing
set gg_trg_Backattack_______u = CreateTrigger()
#ifdef DEBUG
call YDWESaveTriggerName(gg_trg_Backattack_______u, "Backattack 复制")
#endif
call TriggerRegisterVariableEvent( gg_trg_Backattack_______u, "udg_GDD_Event", EQUAL, 0 )
call TriggerAddCondition(gg_trg_Backattack_______u, Condition(function Trig_Backattack_______uConditions))
call TriggerAddAction(gg_trg_Backattack_______u, function Trig_Backattack_______uActions)
endfunction
2014年04月23日 05点04分
1
backattack用到了GUI Friendly Damage Detection,就是发生伤害的时候计算攻击者跟被攻击者的face角度来附加额外伤害。
function Trig_Backattack_______uConditions takes nothing returns boolean
return ((IsUnitType(udg_GDD_DamagedUnit, UNIT_TYPE_STRUCTURE) == false))
endfunction
function Trig_Backattack_______uActions takes nothing returns nothing
if ((IsUnitType(udg_GDD_DamageSource, UNIT_TYPE_STRUCTURE) == true)) then
set udg_attackfactor=1.5*udg_GDD_Damage*(1-RAbsBJ(GetUnitFacing(udg_GDD_DamagedUnit)-AngleBetweenPoints(GetUnitLoc(udg_GDD_DamageSource), GetUnitLoc(udg_GDD_DamagedUnit)))/180)
else
set udg_attackfactor=1.5*udg_GDD_Damage*(1-RAbsBJ(GetUnitFacing(udg_GDD_DamagedUnit)-GetUnitFacing(udg_GDD_DamageSource))/180)
endif
call DisableTrigger( GetTriggeringTrigger() )
call UnitDamageTargetBJ( GetTriggerUnit(), udg_GDD_DamagedUnit, udg_attackfactor, ATTACK_TYPE_MELEE, DAMAGE_TYPE_NORMAL )
call EnableTrigger( GetTriggeringTrigger() )
if ((udg_attackfactor >= 1.00)) then
call CreateTextTagUnitBJ( I2S(R2I(udg_attackfactor)), udg_GDD_DamageSource, 0, 10, 100, 0.00, 0.00, 0 )
call SetTextTagVelocityBJ( GetLastCreatedTextTag(), 64, 90 )
call SetTextTagPermanent( GetLastCreatedTextTag(), false )
call SetTextTagLifespan( GetLastCreatedTextTag(), 1.00 )
call SetTextTagFadepoint( GetLastCreatedTextTag(), 0.40 )
else
endif
endfunction
//===========================================================================
function InitTrig_Backattack_______u takes nothing returns nothing
set gg_trg_Backattack_______u = CreateTrigger()
#ifdef DEBUG
call YDWESaveTriggerName(gg_trg_Backattack_______u, "Backattack 复制")
#endif
call TriggerRegisterVariableEvent( gg_trg_Backattack_______u, "udg_GDD_Event", EQUAL, 0 )
call TriggerAddCondition(gg_trg_Backattack_______u, Condition(function Trig_Backattack_______uConditions))
call TriggerAddAction(gg_trg_Backattack_______u, function Trig_Backattack_______uActions)
endfunction