请选择 进入手机版 | 继续访问电脑版

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

来请教JASS来了 范围选取单位

[复制链接]
发表于 2012-9-29 16:59:38 | 显示全部楼层 |阅读模式
  1. function EMLRQGroup takes nothing returns nothing
  2.     local unit addbuff
  3.     if IsUnitEnemy(GetFilterUnit(),udg_tempplayer) then
  4.         call BJDebugMsg( GetUnitName(GetFilterUnit()) )
  5.         set addbuff = CreateUnit( Player(PLAYER_NEUTRAL_PASSIVE), 'h008', GetUnitX(udg_tempunit), GetUnitY(udg_tempunit), 0 )
  6.         call UnitAddAbility( addbuff, 'A013' )
  7.         call IssueTargetOrder( addbuff, "attackonce", GetFilterUnit() )
  8.         call UnitDamageTarget( udg_tempunit, GetFilterUnit(), 90.00, true, false, ATTACK_TYPE_NORMAL, DAMAGE_TYPE_MAGIC, WEAPON_TYPE_WHOKNOWS )
  9.     endif
  10. endfunction

  11. function EMLRQtimer takes nothing returns nothing
  12.     local unit caster = LoadUnitHandle( udg_HT, GetHandleId(GetExpiredTimer()), StringHash("caster") )
  13.     local unit u = LoadUnitHandle( udg_HT, GetHandleId(GetExpiredTimer()), StringHash("u") )
  14.     local real angle = LoadReal( udg_HT, GetHandleId(GetExpiredTimer()), StringHash("angle") )
  15.     local real n = LoadReal( udg_HT, GetHandleId(GetExpiredTimer()), StringHash("n") )
  16.     local location p1 =GetUnitLoc(u)
  17.     set udg_tempunit = caster
  18.     set udg_tempplayer = GetOwningPlayer(u)
  19.   if ( n > 1 ) then
  20.     set n = n - 1
  21.     call SaveReal( udg_HT, GetHandleId(GetExpiredTimer()), StringHash("n"), n )
  22.     call SetUnitX( u,( GetUnitX(u)+( 30 * CosBJ(angle) ) ) )
  23.     call SetUnitY( u,( GetUnitY(u)+( 30 * SinBJ(angle) ) ) )
  24.   else
  25.     call GroupEnumUnitsInRange(udg_group,GetUnitX(u),GetUnitX(u),200,Condition(function EMLRQGroup))
  26.     call KillUnit(u)
  27.     call FlushChildHashtable( udg_HT, GetHandleId(GetExpiredTimer()) )
  28.     call DestroyTimer(GetExpiredTimer())
  29.   endif
  30.     set udg_tempplayer = null
  31.     set udg_tempunit = null
  32.     //call GroupClear( udg_group )
  33.     call RemoveLocation(p1)
  34. endfunction

  35. function Trig_EMLR_QConditions takes nothing returns boolean
  36.     return ((GetSpellAbilityId() == 'A011'))
  37. endfunction

  38. function Trig_EMLR_QActions takes nothing returns nothing
  39.     local unit caster = GetTriggerUnit()
  40.     local location p1 = GetUnitLoc(caster)
  41.     local real angle = AngleBetweenPoints(p1,GetSpellTargetLoc())
  42.     local real n = DistanceBetweenPoints(p1,GetSpellTargetLoc())/30
  43.     local unit u = CreateUnit( GetOwningPlayer(caster), 'e005', GetLocationX(p1), GetLocationY(p1), GetUnitFacing(caster) )
  44.     set bj_lastStartedTimer = CreateTimer()
  45.     call SaveUnitHandle( udg_HT, GetHandleId(bj_lastStartedTimer), StringHash("caster"), caster )
  46.     call SaveUnitHandle( udg_HT, GetHandleId(bj_lastStartedTimer), StringHash("u"), u )
  47.     call SaveReal( udg_HT, GetHandleId(bj_lastStartedTimer), StringHash("angle"), angle )
  48.     call SaveReal( udg_HT, GetHandleId(bj_lastStartedTimer), StringHash("n"), n )
  49.     call TimerStart(bj_lastStartedTimer,0.02,true,function EMLRQtimer)
  50.     call RemoveLocation(p1)
  51. endfunction

  52. //===========================================================================
  53. function InitTrig_EMLR_Q takes nothing returns nothing
  54.     set gg_trg_EMLR_Q = CreateTrigger()
  55. #ifdef DEBUG
  56.     call YDWESaveTriggerName(gg_trg_EMLR_Q, "EMLR_Q")
  57. #endif
  58.     call TriggerRegisterAnyUnitEventBJ( gg_trg_EMLR_Q, EVENT_PLAYER_UNIT_SPELL_EFFECT )
  59.     call TriggerAddCondition(gg_trg_EMLR_Q, Condition(function Trig_EMLR_QConditions))
  60.     call TriggerAddAction(gg_trg_EMLR_Q, function Trig_EMLR_QActions)
  61. endfunction
复制代码
代码如上

但是貌似没法选取单位并伤害
求帮忙   万分感谢
发表于 2012-9-30 02:57:17 | 显示全部楼层
LZ不考虑汇报下测试结果吗~

投射物飞到目标点后敌方单位的名字有没有出现?
没有的话在local unit addbuff后面加个debug测下单位组动作有没有启动
其它可能出问题的地方也可以这样测

话说好多变量泄漏和点泄漏……
回复

使用道具 举报

发表于 2016-6-4 17:16:24 | 显示全部楼层
这个并不能看懂
回复

使用道具 举报

发表于 2016-6-10 13:25:22 | 显示全部楼层
哇塞,看不懂。。。最好参照地图保存时的代码报告
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-3-29 20:10 , Processed in 0.124055 second(s), 19 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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