找回密码
 点一下
查看: 1126|回复: 9

基础对战AI,攻击线程的一执行,魔兽就直接退出了

[复制链接]
发表于 2013-1-26 19:00:59 | 显示全部楼层 |阅读模式
本帖最后由 LANGRENBULE 于 2013-1-26 23:17 编辑

@lfglvstory @chyj4747
以下的代码,在英雄生产出来后,攻击线程就直接死掉了。魔兽无错误信息退出
  1. function attackAssignment takes nothing returns nothing
  2.     local unit target //攻击目标
  3.     call StaggerSleep( 0, 2 )  //睡眠功能
  4.     //攻击循环
  5.     loop
  6.         call Sleep(2.0)
  7.         call DisplayTextToPlayer(GetLocalPlayer(),0,0,"outter loop ing")
  8.         if GetUnitCountDone('Ofar')>0 then
  9.         call Sleep(2.0)
  10.         call printf("ready to attack!!!")
  11.         call InitAssaultGroup()  //进攻组的指令,初始化进攻组
  12.         call SetAssaultGroup(GetUnitCountDone('Ofar'),GetUnitCountDone('Ofar'), 'Ofar' )
  13.         //call SetAssaultGroup(GetUnitCountDone('Otch'),GetUnitCountDone('Otch'), 'Otch' )
  14.         //call SetAssaultGroup(GetUnitCountDone('Oshd'),GetUnitCountDone('Oshd'), 'Oshd' )
  15.         //call SetAssaultGroup(GetUnitCountDone('ogru'),GetUnitCountDone('ogru'), 'ogru' )
  16.         //call SetAssaultGroup(GetUnitCountDone('ohun'),GetUnitCountDone('ohun'), 'ohun' )
  17.        // call SetAssaultGroup(GetUnitCountDone('orai'),GetUnitCountDone('orai'), 'orai' )
  18.         //call SetAssaultGroup(GetUnitCountDone('okod'),GetUnitCountDone('okod'), 'okod' )
  19.        // call SetAssaultGroup(GetUnitCountDone('owyv'),GetUnitCountDone('owyv'), 'owyv' )
  20.        // call SetAssaultGroup(GetUnitCountDone('oshm'),GetUnitCountDone('oshm'), 'oshm' )
  21.        // call SetAssaultGroup(GetUnitCountDone('ospw'),GetUnitCountDone('ospw'), 'ospw' )
  22.        // call SetAssaultGroup(GetUnitCountDone('otau'),GetUnitCountDone('otau'), 'otau' )
  23.         set target = GetEnemyBase() //敌人基地
  24.         if target == null then
  25.             call StartGetEnemyBase() //寻找主基地
  26.         loop
  27.             call DisplayTextToPlayer(GetLocalPlayer(),0,0,"inner loop ing")
  28.             exitwhen (not WaitGetEnemyBase())  //找不到主基地
  29.             call SuicideSleep(5)  //睡眠功能  
  30.         endloop  
  31.             call DisplayTextToPlayer(GetLocalPlayer(),0,0,"can not found enemy")
  32.         else
  33.             call DisplayTextToPlayer(GetLocalPlayer(),0,0,"========start========")
  34.             call FormGroup( 5, false)  //集结队伍,5是时间秒数,false指英雄是否准备好
  35.             call AttackMoveKill(target)  //攻击组攻击单位,直到target被杀死
  36.             call SleepUntilAtGoal()  //等待直至攻击组抵达目的地
  37.             call SleepInCombat()  //等待直至攻击组结束战斗
  38.             call Sleep(1.0)     
  39.             call DisplayTextToPlayer(GetLocalPlayer(),0,0,"========end==========")
  40.         endif
  41.    
  42.         endif
  43.     endloop
  44. endfunction
复制代码
不过这样的攻击线程也太落后了。给个更好的思路?当然,先帮我看看为什么会死掉

lovemoon.rar

2.88 KB, 下载次数: 24

基础对战AI文件

 楼主| 发表于 2013-1-26 20:35:49 | 显示全部楼层
求关注
回复

使用道具 举报

 楼主| 发表于 2013-1-26 20:39:15 | 显示全部楼层
把攻击线程注释掉还是正常滴,嘿嘿[s:215]
回复

使用道具 举报

 楼主| 发表于 2013-1-26 21:24:32 | 显示全部楼层
在线等了好几个小时了,求关注呀
回复

使用道具 举报

发表于 2013-1-26 21:53:40 | 显示全部楼层
貌似3连了哦!初步一看确实看不出哪里会导致奔溃的地方。只能一步步的注释来测试了。

点评

什么情况?没听明白  详情 回复 发表于 2013-1-26 22:24
回复

使用道具 举报

 楼主| 发表于 2013-1-26 22:24:45 | 显示全部楼层
lfglvstory 发表于 2013-1-26 21:53
貌似3连了哦!初步一看确实看不出哪里会导致奔溃的地方。只能一步步的注释来测试了。

什么情况?没听明白
回复

使用道具 举报

 楼主| 发表于 2013-1-26 22:37:12 | 显示全部楼层
我知道什么是3连了,我不是故意的!
回复

使用道具 举报

 楼主| 发表于 2013-1-26 23:16:03 | 显示全部楼层
我已经知道问题的所在了,因为我在main中少调用了call CreateCaptains() //创建攻击组,谢谢lfglvstory

点评

哈哈·· 恭喜恭喜!期待你搞出强力AI哈!  详情 回复 发表于 2013-1-29 11:23
回复

使用道具 举报

 楼主| 发表于 2013-1-26 23:16:47 | 显示全部楼层
另外大家有需要用这个破AI的,尽量拿去改
回复

使用道具 举报

发表于 2013-1-29 11:23:53 | 显示全部楼层

回帖奖励 +1 GA币

LANGRENBULE 发表于 2013-1-26 23:16
我已经知道问题的所在了,因为我在main中少调用了call CreateCaptains() //创建攻击组,谢谢lfglvst ...

哈哈·· 恭喜恭喜!期待你搞出强力AI哈!
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-23 06:52 , Processed in 0.040800 second(s), 26 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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