找回密码
 点一下
查看: 1483|回复: 3

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

[复制链接]
发表于 2017-1-24 03:43:33 | 显示全部楼层 |阅读模式
  1. globals
  2. hashtable Ae=null
  3. trigger gg_trg_Whirl_Wind=null
  4. endglobals

  5. function Trig_Whirl_Wind_Conditions takes nothing returns boolean
  6.     return GetSpellAbilityId()=='A005'
  7. endfunction
  8. function WhirlWind takes nothing returns nothing
  9.     local timer t=GetExpiredTimer()
  10.     local unit caster=LoadUnitHandle(Ae,(StringHash(I2S(GetHandleId((t))))),StringHash("caster"))
  11.     local real angle=LoadReal(Ae,(StringHash(I2S(GetHandleId((t))))),StringHash("Angle"))
  12.     local real cx=LoadReal(Ae,(StringHash(I2S(GetHandleId((t))))),StringHash("cx"))
  13.     local real cy=LoadReal(Ae,(StringHash(I2S(GetHandleId((t))))),StringHash("cy"))
  14.     local group OldTargets=LoadGroupHandle(Ae,(StringHash(I2S(GetHandleId((t))))),StringHash("OldTargets"))
  15.     local group NewTargets=LoadGroupHandle(Ae,(StringHash(I2S(GetHandleId((t))))),StringHash("NewTargets"))
  16.     local unit group_unit=null
  17.     local player p=null
  18.     local integer damage=0

  19.     if( GetUnitCurrentOrder(caster)==String2OrderIdBJ("Cyclone"))then
  20.         set p=GetOwningPlayer(caster)
  21.         call GroupEnumUnitsInRange(NewTargets,cx,cy,600.00,null)
  22.         set damage=100*GetUnitAbilityLevel(caster,'A005')
  23.         call GroupRemoveGroup(OldTargets,NewTargets)
  24.         call GroupAddGroup(NewTargets,OldTargets)
  25.         loop
  26.             set group_unit=FirstOfGroup(NewTargets)
  27.             exitwhen group_unit==null
  28.             if( GetWidgetLife(group_unit)>0.405 and IsUnitEnemy(group_unit,p) and IsUnitType(group_unit, UNIT_TYPE_STRUCTURE)==false) then
  29.                 call DestroyEffect(AddSpecialEffect("Abilities\\Spells\\Other\\Stampede\\StampedeMissileDeath.mdl",GetUnitX(group_unit),GetUnitY(group_unit)))
  30.                 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)
  31.             endif
  32.             call GroupRemoveUnit(NewTargets,group_unit)
  33.         endloop
  34.         set angle =LoadReal(Ae,(StringHash(I2S(GetHandleId((t))))),StringHash("angle"))
  35.         set cx = cx + 25 * Cos( angle )
  36.         set cy = cy + 25 * Sin( angle )
  37.         if(IsTerrainPathable(cx,cy,PATHING_TYPE_WALKABILITY)==false) and (IsTerrainPathable(cx,cy,PATHING_TYPE_FLYABILITY)==false) then
  38.             call SetUnitX(caster,cx)
  39.             call SetUnitY(caster,cy)
  40.             call DestroyEffect(AddSpecialEffect("Abilities\\Spells\\Other\\Doom\\DoomDeath.mdl",cx,cy))
  41.         endif
  42.     else
  43.         call DestroyGroup(OldTargets)
  44.         call DestroyGroup(NewTargets)
  45.         set OldTargets=null
  46.         set NewTargets=null
  47.         call SetUnitTimeScale(caster,1.00)
  48.         call PauseTimer(t)
  49.         call DestroyTimer(t)
  50.         call FlushChildHashtable(Ae,GetHandleId(t))
  51.     endif
  52.         set t=null
  53.         set caster=null
  54.         set OldTargets=null
  55.         set NewTargets=null
  56. endfunction
  57. function Trig_Whirl_Wind_Actions takes nothing returns nothing
  58.     local unit caster = GetTriggerUnit()
  59.     local location tp = GetSpellTargetLoc()
  60.     local real cx = GetUnitX(caster)
  61.     local real cy = GetUnitY(caster)
  62.     local real tx = GetLocationX(tp)
  63.     local real ty = GetLocationY(tp)
  64.     local real angle =Atan2(ty-cy,tx-cx)
  65.     local group NewTarget = CreateGroup()
  66.     local group OldTarget = CreateGroup()
  67.     local timer t
  68.     call SetUnitTimeScale(caster,2.00)
  69.     set t=CreateTimer()
  70.     call SaveUnitHandle(Ae,(StringHash(I2S(GetHandleId((t))))),StringHash("caster"),caster)
  71.     call SaveReal(Ae,(StringHash(I2S(GetHandleId((t))))),StringHash("angle"),angle)
  72.     call SaveReal(Ae,(StringHash(I2S(GetHandleId((t))))),StringHash("cx"),cx)
  73.     call SaveReal(Ae,(StringHash(I2S(GetHandleId((t))))),StringHash("cy"),cy)
  74.     call SaveGroupHandle(Ae,(StringHash(I2S(GetHandleId((caster))))),StringHash("NewTargets"),NewTarget)
  75.     call SaveGroupHandle(Ae,(StringHash(I2S(GetHandleId((caster))))),StringHash("OldTargets"),OldTarget)
  76.     call TimerStart(t,0.03,true,function WhirlWind)
  77.     call RemoveLocation(tp)
  78.     set t=null
  79.     set tp=null
  80. endfunction
  81. function InitTrig_Whirl_Wind takes nothing returns nothing
  82.     set gg_trg_Whirl_Wind=CreateTrigger()
  83.     call TriggerRegisterAnyUnitEventBJ(gg_trg_Whirl_Wind,EVENT_PLAYER_UNIT_SPELL_EFFECT)
  84.     call TriggerAddCondition(gg_trg_Whirl_Wind,Condition(function Trig_Whirl_Wind_Conditions))
  85.     call TriggerAddAction(gg_trg_Whirl_Wind, function Trig_Whirl_Wind_Actions)
  86. endfunction
复制代码
@希瓦 @chyj4747
英雄正确移动到技能释放点的位置 但是没有对途经的单位造成任何伤害 无论伤害公式设置为多少都没有任何效果 感觉应该是单位被移除出OldTargets 但是没有加入到NewTargets 我选取的单位组是NewTargets...不会Debug 这个单位组选取到的单位数量是否为0呢?请各位大佬帮忙看看下 谢谢!
 楼主| 发表于 2017-1-24 03:45:36 | 显示全部楼层
如果看不懂的话 我可以上传测试用地图.QAQ
回复

使用道具 举报

发表于 2017-2-1 23:51:11 | 显示全部楼层
没有用过JASS,用T可以吗?
回复

使用道具 举报

 楼主| 发表于 2017-2-5 20:54:27 | 显示全部楼层
只有你1个人回复...
可以啊 我主要是想知道哪里写错了.
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 点一下

本版积分规则

Archiver|移动端|小黑屋|地精研究院

GMT+8, 2024-4-27 05:40 , Processed in 0.158902 second(s), 22 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表