星际的修改高手来看看
原来在yaoyuan上发过,这次修改了下,重新在这里帖出来
主要是用来改写星际电脑的ai
赫赫,实在忍受不了原来那个弱智电脑了
如果能大家切磋,最好不过
我只是提供写的方法,本人也曾经写过一个,不过由于缺乏想象力,基本没有什么杀伤力,有兴趣的朋友可以到这里去下载一外国人写的星际ai,(适用于1。 11a版)
这个电脑很强,尤其在PvT上,简直可以说是Terran杀手,一般人应该无法用terran 对抗这样的两家Protoss
我开始讲了
需要用到的软件有:
星际争霸(废话)
sceditIII
下载地址:点击附件
MPQ2K
下载地址:点击...全部
原来在yaoyuan上发过,这次修改了下,重新在这里帖出来
主要是用来改写星际电脑的ai
赫赫,实在忍受不了原来那个弱智电脑了
如果能大家切磋,最好不过
我只是提供写的方法,本人也曾经写过一个,不过由于缺乏想象力,基本没有什么杀伤力,有兴趣的朋友可以到这里去下载一外国人写的星际ai,(适用于1。
11a版)
这个电脑很强,尤其在PvT上,简直可以说是Terran杀手,一般人应该无法用terran 对抗这样的两家Protoss
我开始讲了
需要用到的软件有:
星际争霸(废话)
sceditIII
下载地址:点击附件
MPQ2K
下载地址:点击附件
修改之前,请注意备份patch_ q文件
这个是我们要下刀的地方。
嘿嘿
我说得这种修改,无论是108,109,110都可以
以后想要炫耀你写的AI,只要把patch_ q更新给大家就可以
注意,mpq2k的压缩包里含有storm。dll和staredit。
exe,所以千万不要解压到自己的星际目录了,随便放个其他目录就可以。
为了将来说起来方便,我们默认mpq2k的解压地址是
d:\mpq2k
现在,把patch_ q, q拷过来
放心, q我们只是利用,不改(一定要解出来,否则scedit可能会出错)
运行以下语句
mpq2k。
exe e q scripts\ n
mpq2k。exe e patch_ q scripts\ n
这些语句都在控制台下执行
winmpq也可以完成类似功能,但是没找到下载地址。
把你的 n和bwscript拷到sceditIII的default目录下
以上就是准备工作。
然后我们就进入编辑阶段。
SCEDIT的使用
运行sceditIII主程序,进入软件。
这个软件的界面,写得超级简单,简单到我都不知道该怎么使用
磕磕碰碰,总算给研究了出来
步骤如下:
1 选择FILE---HDD NAVIGATOR
2 选到刚才弄出来的那个(从default目录下选) n
3 出现了一个电脑ai列表
这里是暴雪写得全部ai,很多是不会在地图编辑器里出现的,因为他们其实意义不大,有的甚至只是简单的造个农民就算了的
由于我们改动的是patch_ q,这实际是个补丁文件,所以有些ai还没有给出,他们都在 q,不过那些对我们没有什么实际意义
现在,我们打开Expansion Protoss Campaign Insane开始我们的研究把
关于Expansion Protoss Campaign Insane
研究这个AI
是因为它的代码比较少
而且他的AI很单纯,属于一根筋走到底的类型。
我一段段代码分析给大家看。
第一段
; ASC3 File generated by ScAIEdit III
;
; Script name : Expansion Protoss Campaign Insane
这个上面,都是注释,没有什么实际用途
script_name Expansion Protoss Campaign Insane
script_id PSUx
这个script_name和id,最好不要改,否则可能会出问题
start_campaign
wait 1
start_town 开始建设
defaultbuild_off
把默认的建设关掉,如果不写这句,电脑会自作主张造东西,那就麻烦了
default_min 0
wait 1
等0。
1秒钟,不知道是啥用,不用管它
transports_off
不知道啥意思……
define_max 30 probe
define_max 4 arbiter
define_max 12 high_templar
这里表示,同一时间内,一个基地最多拥有30个农民,4个仲裁,12个电兵
这里要说明一下,电脑开分基地,就是要再执行一次starttown,所以如果电脑有两个基地,就可以最多拥有60个农民,8个仲裁,24个电兵,以此类推
multirun block1
这句话,是指多线程调用block1这段代码
block1就像编程语言中函数名或者过程名,我还没贴出来,里面其实就一句话
give_money,我研究了一下,意思是给电脑2000钱和2000气
赫赫,谁说电脑不作弊来着
多线程的意思是,在执行block1这段语句的时候,
不影响主程序继续往下跑
build 1 nexus 150
造一个主基地,如果有了,就直接执行下一句
build 7 probe 80造7个农民
上面的150和80,我没有研究出来是什么
但是总的来说,建筑一般是用80,
升级用30
另外,如果这样写两句
build 7 probe 80
build 7 probe 80
其实还是只有7个农民,因为7代表的是“造到”
wait_build 7 probe等待7个农民造完
这句话其实很重要,假设你有250元钱,一下子点了5个农民,
算起来,电脑已经算是执行完build 5 probe80这句话了,他会直接往下执行
为了完全按我们的意愿走,还是加上这句。
multirun block2
这和block1意思差不多,这个block2函数里(我没贴出来),写得是造到24个农民
今后无论电脑如何发展,这个都会并行运行,一直到24个为止
build 1 gateway 80第一个兵营
defensebuild_gg 1 zealot
defenseuse_gg 1 zealot
这两句的意思是,如果电脑被攻击,造1个狂热来防守
train 3 zealot造到3个狂热
build 2 gateway 80
train 6 zealot
build 3 gateway 80
train 12 zealot
这上面的语句,其实就是电脑的第一波兵
一共是3个兵营,12个叉叉
下面这段,就是电脑组织的进攻
attack_add 12 zealot
加12个叉叉到进攻队伍里
attack_prepare
这两句以后,其实电脑往你家走了
wait 500
等50秒
attack_do
攻击
attack_clear
清除攻击数据
这是为了下次再组织进攻的时候,attack_add用的
这么一段语句,就包括了电脑从开始发展到最好进攻的全过程
还有些高级技巧,下次再说啦
手都酸掉了
有兴趣的,可以先改改暴雪的代码
我下面先说一下,改了以后,怎么用
编辑窗口上有个小勾得标志,点一下
窗口下方会显示你这段代码是否合乎语法
不对的地方编辑器会给你指出来,直到0 error message为止
然后点小勾右边的那个按钮
你的编辑就存到 n里面了,关掉当前编辑窗口(注意,是当前编辑窗口,别把整个scedit关掉,那样你就全白做了),回到上级窗口(就是那个很多AI列表的那个)点一下3个齿轮为图标的那个冬冬,它会提示script compliation done!,如果没有提示,那就麻烦了,这我估计是软件的一个bug,你得把原来的那些咚咚全部恢复一下,重新改。
算是完成了,现在,把 n从default目录下拷出来,放到刚才那个
d:\mpq2k的目录里
执行:
mpq2k a patch_ q n scripts\ n
运行这句话的时候,确认你得把星际关掉,也别开星际地图编辑器
最后,把弄好的patch_ q弄到星际目录下就算结束了
看起来很方便,其实经常因为某些奇怪的原因(如代码写错,版本问题等等,导致无法使用,那我们只好安心用外国人的产品)
最近有朋友给我提供过一个叫mpqworkshop的工具,我用过之后感觉非常不错,完全可以替代掉mpq2k,而且没有烦人的版本问题,只是我找不到下载地址了,哪个好心的网友提供一下,我把它一起贴上来
最近的研究成果
我上面写的都是修改Expansion Protoss Campaign Insane为名称的ai
这样需要特地编写一个地图,然后设置电脑的ai为这种(如何设置请自行查找介绍地图编辑器的文章),打得时候还要选use map setting
而如果修改的是Protoss Expansion Custom Level那个ai,则你根本不必修改地图,每一幅地图甚至只要选melee 或者top vs bottom,电脑都按照你写的代码来执行。
有的朋友问到建筑位置的问题,重申一下,无法决定电脑修建筑的位置,如果你想彻底的防守,就多造吧:)
Script是顺序执行的机制
所以,当你写出
train 12 zealot
train 4 dragoon这样的代码
除非电脑已经造好12个狂热,否则龙骑一个都不会造,(兵营里正在建造的狂热也被计算在内)。
所以,如果你的电脑发展很慢,你就要考虑是不是你写了错误的代码(有朋友在没有升级一攻的情况下,直接写升级2攻的代码,结果当然电脑在发呆,不知道如何是好)
用好defenduse_ag(好像是这么写的)或同类型的语句,否则电脑的建筑挨打的时候会发呆
开分基地用的是expand命令,如果你在expand后面加入建造其他建筑的代码,然后才修基地。
就会出现基地位置不对的情形(因为其他建筑占据了基地的位置)
攻防的升级要切实注意,前面说过的,代码是顺序执行,不过,攻防一旦开始升级,代码就可以继续往下走。如果你把升级1攻,2攻,3攻的代码写到一起,则电脑就会在开始升级一攻的时候代码继续前行,碰到升级2攻的代码,然后开始等待,因为现在不能升级2攻,如此类推。
scedit的帮助一定奥仔细看看。那里面介绍的很全面
空投是一种特殊的事件,不是你造出运输机,就可以空投,是一个特殊代码,我现在记不清楚了,看看暴雪的原代码就会有发现。
最重要的一个语句是give_Money
运行后电脑有2000钱,2000气
我基本就是这么改写电脑,然后和电脑比暴兵
电脑暴兵相当凶残的,而且比人暴兵来的恶心的多。
总觉得他们的兵耐打
星际自带任务关的ai也是可以编辑的,只是老出错,这个我不太清楚为什么,所以大家没事还是不要写任务关的代码
推荐将ai编写和rpg地图结合起来,这样练习战略战术很有好处
有朋友让我写速出Lurker什么的代码,不是我不想写,实在没有时间和精力
大家仔细研究,我可以帮助你们回答问题,应该不是很难的
SCEditIII有的时候会出现无法编译的情况,一般是代码里有错误,如果都检查过没有问题。
这时候关掉它,重新用原来的 n和 n覆盖你修改的,然后再打开一次,就可以了
转载 也许大家都看过(对你可能有帮助)。收起