3DMGAME 3DM首页 新闻中心 前瞻 | 评测 游戏库 热门 | 最新 攻略中心 攻略 | 秘籍 下载中心 游戏 | 汉化 购买正版 论坛

注册 登录

QQ登录

只需一步,快速开始

查看: 3571|回复: 9
打印 上一主题 下一主题

[推荐] 超时空加速代码,做AI的看

[复制链接]

26

主题

2816

帖子

4085

积分

游戏精英

Rank: 8Rank: 8

贡献度
496
金元
21012
积分
4085
精华
0
注册时间
2008-9-8
跳转到指定楼层
主题
发表于 2010-3-8 22:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
Protoss0文件最前面加入

static bool ChronoBoost(int player, int CTown, string aliasUnitType, string type) {
    unitgroup scanGroup;
    int scanCount;
    aifilter filter;   
    unit u = AIGrabUnit(player, c_PB_Nexus, c_prioScriptControlled, AIGetTownLocation (player, CTown));
    order o;
    order ord;

    if (u) {
        o = AICreateOrder(player, "TimeWarp", 0);
          ord = AICreateOrder(player, "TimeWarp", 0);

        if (!UnitOrderIsValid(u, ord)) {
                return false;
              }
          scanGroup = AIFindUnits(player, aliasUnitType, UnitGetPosition(u),
                        AIUnitFixed(player, c_PB_Nexus, c_fieldRadius)
                        + AIAbilityFixed(player, "TimeWarp", c_fieldRange0),
                        c_noMaxCount
             );

             filter = AIFilter(player);
             AISetFilterBits(filter, UnitFilterStr(AIAbilityStr(player, "TimeWarp", c_fieldTargetFilters)));
             AISetFilterBehaviorCount(filter, c_noBehaviorMin, c_noBehaviorMax, type);

             scanGroup = AIGetFilterGroup (filter, scanGroup);
             o = AIUnitGroupGetValidOrder(scanGroup, ord, u, c_backwards);

        //OrderSetTargetUnit(o, u);
         
        if (UnitOrderIsValid(u, o)) {
            //DebugOutput("TimeWarp", false);           
            AICast(u, o, c_noMarker, c_castHold);
                return true;
        }
    }
    return false;
}


然后在每段建造代码前后加入下面代码即可(可以可以做一些if判断什么的)

    ChronoBoost(player, 1, c_PB_Nexus ,"TimeWarpProduction");

c_PB_Nexus 是建筑物函数,自己参照换。1,是个指定函数,可改可不改

最然不是智能型的,但总比没有强。这是我在iai上扣下来的。iai作者也说这是别人给他写的

再举个如果判断的例子吧


        if (AITechCount(player, c_PU_Probe, c_techCountQueuedOnly ) > 0)
        {
                ChronoBoost(player, 1, c_PB_Nexus, "TimeWarpProduction");
        }

意思就是如果probe探测机 大于0,那么对星核实施超时空加速。

再说下player, 1这个1的意思就是第二个建筑,比如你有2个兵营 0就是第一个兵营,1就是第二个
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|3DMGAME ( 京ICP备14006952号-1  沪公网安备 31011202006753号

GMT+8, 2026-4-6 03:29 , Processed in 0.026197 second(s), 17 queries , Memcached On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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