找回密码
 点一下
查看: 1451|回复: 6

关于AI中一些原函数的问题讨论

[复制链接]
发表于 2013-1-8 12:00:19 | 显示全部楼层 |阅读模式
问题如下面脚本注释,不清楚这个让主线程休眠的方法或函数是什么。虽然AI的函数我自己全部重写了,按照自己的思路来实现进攻等操作但是还是想弄清楚这个东东。

  1. //===========================================================================
  2. // 这个是发动攻击的函数,执行到此函数后,循环进攻的函数将会休眠,直到进攻结束
  3. //===========================================================================
  4. function AttackTarget takes unit target, boolean addAlliance returns nothing
  5.     if (target == null) then
  6.         return
  7.     endif
  8.     if (addAlliance) then
  9.         call SetAllianceTarget( target )
  10.     endif
  11.     call FormGroup( 3, false )
  12.     call AttackMoveKillA( target )
  13.     if (not addAlliance) then
  14.         call SetAllianceTarget( null )
  15.     endif
  16. endfunction
复制代码
贴出我怀疑的调用的两个函数

  1. //===========================================================================
  2. //  一个是FormGroup函数
  3. //===========================================================================
  4. function FormGroup takes integer seconds,boolean testReady returns nothing
  5.     local integer index
  6.     local integer count
  7.     local integer unitid
  8.     local integer desire
  9.     local integer readyPercent
  10.     if testReady == true then
  11.         set readyPercent = 50
  12.         call Trace("forming group, requiring healthy guys\n") //xxx
  13.     else
  14.         set readyPercent = 0
  15.         call Trace("forming group, unit health not important\n") //xxx
  16.     endif
  17.     call Trace("trying to gather forces\n") //xxx
  18.     loop
  19.         call SuicideSleep(seconds)
  20.         call InitAssault()
  21.         set index = 0
  22.         loop
  23.             exitwhen index == harass_length
  24.             set unitid = harass_units[index]
  25.             set desire = harass_max[index]
  26.             set count  = TownCountDone(unitid)
  27.             call Conversions(desire,unitid)
  28.             if count >= desire then
  29.                 call AddAssault(desire,unitid)
  30.             else
  31.                 set desire = harass_qty[index]
  32.                 if count < desire then
  33.                     call AddAssault(desire,unitid)
  34.                 else
  35.                     call AddAssault(count,unitid)
  36.                 endif
  37.             endif
  38.             set index = index + 1
  39.         endloop
  40.         if form_group_timeouts and (sleep_seconds < -60) then
  41.             call Trace("exit form group -- timeout\n")
  42.         elseif CaptainInCombat(true) then
  43.             call Trace("exit form group -- can't form while already in combat\n")
  44.         elseif CaptainIsFull() and CaptainReadiness() >= readyPercent then
  45.             call Trace("exit form group -- ready\n")
  46.         endif
  47.         exitwhen form_group_timeouts and (sleep_seconds < -60)
  48.         exitwhen CaptainInCombat(true)
  49.         exitwhen CaptainIsFull() and CaptainReadiness() >= readyPercent
  50.     endloop
  51. endfunction
  52. //===========================================================================
  53. //  另一个是AttackMoveKillA函数
  54. //===========================================================================
  55. function AttackMoveKillA takes unit target returns nothing
  56.     if target == null then
  57.         call SuicideSleep(3)
  58.         return
  59.     endif
  60.     debug call Trace("AttackMoveKillA\n")
  61.     call AttackMoveKill(target)
  62.     call ReformUntilTargetDead(target)
  63.     call SleepInCombat()
  64. endfunction
复制代码
有兴趣的朋友一起讨论一下,顺便交流写AI的心得,虽然我对AI研究还不深,望高手请教。呵呵··

发表于 2013-1-8 17:54:21 | 显示全部楼层
call SleepInCombat()

点评

3Q麦大,还想问一下玻璃渣的这个FormGroup函数具体是干嘛用的呢?  详情 回复 发表于 2013-1-9 09:56
回复

使用道具 举报

 楼主| 发表于 2013-1-9 09:56:59 | 显示全部楼层
麦德三世 发表于 2013-1-8 17:54
call SleepInCombat()

3Q麦大,还想问一下玻璃渣的这个FormGroup函数具体是干嘛用的呢?

点评

集结队伍用的  详情 回复 发表于 2013-1-9 12:50
回复

使用道具 举报

发表于 2013-1-9 12:50:41 | 显示全部楼层
lfglvstory 发表于 2013-1-9 09:56
3Q麦大,还想问一下玻璃渣的这个FormGroup函数具体是干嘛用的呢?

集结队伍用的
回复

使用道具 举报

发表于 2013-1-9 12:52:05 | 显示全部楼层
jass区好冷清呀!在那边提了个真三如何用jass选英雄的问题,两天了,才有人回复下!悲催ING

点评

可以用这个: call IssueNeutralImmediateOrderById( ai_player, gg_unit_nmer_0000,hero_id ) // gg_unit_nmer_0000 这个参数用地图中酒馆的常量就行了  详情 回复 发表于 2013-1-10 09:27
回复

使用道具 举报

 楼主| 发表于 2013-1-10 09:27:18 | 显示全部楼层
LANGRENBULE 发表于 2013-1-9 12:52
jass区好冷清呀!在那边提了个真三如何用jass选英雄的问题,两天了,才有人回复下!悲催ING

可以用这个:
call IssueNeutralImmediateOrderById( ai_player, gg_unit_nmer_0000,hero_id )
// gg_unit_nmer_0000 这个参数用地图中酒馆的常量就行了

点评

ok,thankyou!  详情 回复 发表于 2013-1-10 12:48
回复

使用道具 举报

发表于 2013-1-10 12:48:23 | 显示全部楼层
lfglvstory 发表于 2013-1-10 09:27
可以用这个:
call IssueNeutralImmediateOrderById( ai_player, gg_unit_nmer_0000,hero_id )
// gg_u ...

ok,thankyou!
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-28 10:37 , Processed in 0.167531 second(s), 24 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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