RoyalFlare 发表于 2017-1-24 03:43:33

冲锋技能没有任何伤害 求帮忙排错 谢谢!

globals
hashtable Ae=null
trigger gg_trg_Whirl_Wind=null
endglobals

function Trig_Whirl_Wind_Conditions takes nothing returns boolean
    return GetSpellAbilityId()=='A005'
endfunction
function WhirlWind takes nothing returns nothing
    local timer t=GetExpiredTimer()
    local unit caster=LoadUnitHandle(Ae,(StringHash(I2S(GetHandleId((t))))),StringHash("caster"))
    local real angle=LoadReal(Ae,(StringHash(I2S(GetHandleId((t))))),StringHash("Angle"))
    local real cx=LoadReal(Ae,(StringHash(I2S(GetHandleId((t))))),StringHash("cx"))
    local real cy=LoadReal(Ae,(StringHash(I2S(GetHandleId((t))))),StringHash("cy"))
    local group OldTargets=LoadGroupHandle(Ae,(StringHash(I2S(GetHandleId((t))))),StringHash("OldTargets"))
    local group NewTargets=LoadGroupHandle(Ae,(StringHash(I2S(GetHandleId((t))))),StringHash("NewTargets"))
    local unit group_unit=null
    local player p=null
    local integer damage=0

    if( GetUnitCurrentOrder(caster)==String2OrderIdBJ("Cyclone"))then
      set p=GetOwningPlayer(caster)
      call GroupEnumUnitsInRange(NewTargets,cx,cy,600.00,null)
      set damage=100*GetUnitAbilityLevel(caster,'A005')
      call GroupRemoveGroup(OldTargets,NewTargets)
      call GroupAddGroup(NewTargets,OldTargets)
      loop
            set group_unit=FirstOfGroup(NewTargets)
            exitwhen group_unit==null
            if( GetWidgetLife(group_unit)>0.405 and IsUnitEnemy(group_unit,p) and IsUnitType(group_unit, UNIT_TYPE_STRUCTURE)==false) then
                call DestroyEffect(AddSpecialEffect("Abilities\\Spells\\Other\\Stampede\\StampedeMissileDeath.mdl",GetUnitX(group_unit),GetUnitY(group_unit)))
                call UnitDamageTarget(caster,group_unit,(I2R(GetHeroAgi(caster,true))*(30.00*I2R(GetUnitAbilityLevel(caster,'A005')))),true,false,ATTACK_TYPE_HERO,DAMAGE_TYPE_ENHANCED,WEAPON_TYPE_WHOKNOWS)
            endif
            call GroupRemoveUnit(NewTargets,group_unit)
      endloop
      set angle =LoadReal(Ae,(StringHash(I2S(GetHandleId((t))))),StringHash("angle"))
      set cx = cx + 25 * Cos( angle )
      set cy = cy + 25 * Sin( angle )
      if(IsTerrainPathable(cx,cy,PATHING_TYPE_WALKABILITY)==false) and (IsTerrainPathable(cx,cy,PATHING_TYPE_FLYABILITY)==false) then
            call SetUnitX(caster,cx)
            call SetUnitY(caster,cy)
            call DestroyEffect(AddSpecialEffect("Abilities\\Spells\\Other\\Doom\\DoomDeath.mdl",cx,cy))
      endif
    else
      call DestroyGroup(OldTargets)
      call DestroyGroup(NewTargets)
      set OldTargets=null
      set NewTargets=null
      call SetUnitTimeScale(caster,1.00)
      call PauseTimer(t)
      call DestroyTimer(t)
      call FlushChildHashtable(Ae,GetHandleId(t))
    endif
      set t=null
      set caster=null
      set OldTargets=null
      set NewTargets=null
endfunction
function Trig_Whirl_Wind_Actions takes nothing returns nothing
    local unit caster = GetTriggerUnit()
    local location tp = GetSpellTargetLoc()
    local real cx = GetUnitX(caster)
    local real cy = GetUnitY(caster)
    local real tx = GetLocationX(tp)
    local real ty = GetLocationY(tp)
    local real angle =Atan2(ty-cy,tx-cx)
    local group NewTarget = CreateGroup()
    local group OldTarget = CreateGroup()
    local timer t
    call SetUnitTimeScale(caster,2.00)
    set t=CreateTimer()
    call SaveUnitHandle(Ae,(StringHash(I2S(GetHandleId((t))))),StringHash("caster"),caster)
    call SaveReal(Ae,(StringHash(I2S(GetHandleId((t))))),StringHash("angle"),angle)
    call SaveReal(Ae,(StringHash(I2S(GetHandleId((t))))),StringHash("cx"),cx)
    call SaveReal(Ae,(StringHash(I2S(GetHandleId((t))))),StringHash("cy"),cy)
    call SaveGroupHandle(Ae,(StringHash(I2S(GetHandleId((caster))))),StringHash("NewTargets"),NewTarget)
    call SaveGroupHandle(Ae,(StringHash(I2S(GetHandleId((caster))))),StringHash("OldTargets"),OldTarget)
    call TimerStart(t,0.03,true,function WhirlWind)
    call RemoveLocation(tp)
    set t=null
    set tp=null
endfunction
function InitTrig_Whirl_Wind takes nothing returns nothing
    set gg_trg_Whirl_Wind=CreateTrigger()
    call TriggerRegisterAnyUnitEventBJ(gg_trg_Whirl_Wind,EVENT_PLAYER_UNIT_SPELL_EFFECT)
    call TriggerAddCondition(gg_trg_Whirl_Wind,Condition(function Trig_Whirl_Wind_Conditions))
    call TriggerAddAction(gg_trg_Whirl_Wind, function Trig_Whirl_Wind_Actions)
endfunction@希瓦 @chyj4747
英雄正确移动到技能释放点的位置 但是没有对途经的单位造成任何伤害 无论伤害公式设置为多少都没有任何效果 感觉应该是单位被移除出OldTargets 但是没有加入到NewTargets 我选取的单位组是NewTargets...不会Debug 这个单位组选取到的单位数量是否为0呢?请各位大佬帮忙看看下 谢谢!

RoyalFlare 发表于 2017-1-24 03:45:36

如果看不懂的话 我可以上传测试用地图.QAQ

Loren915566383 发表于 2017-2-1 23:51:11

没有用过JASS,用T可以吗?

RoyalFlare 发表于 2017-2-5 20:54:27

只有你1个人回复...
可以啊 我主要是想知道哪里写错了.
页: [1]
查看完整版本: 冲锋技能没有任何伤害 求帮忙排错 谢谢!