红色警戒2修改器原理百科(十)
(二十一)转换阵营——很炫酷却很简单
这个功能,貌似当初很火很轰动,感觉很强大——联网对战中控制对手单位,卖掉对手建筑!右边的建造选项也是对手的,你可以替对手建造单位。可是这个原理很简单,游戏中一个很重要的指针CurrentPlayer(即game.exe+635DB4这个基址)指向本地玩家的数据,你所有的操作依据最终都来源于此。如果你把这个指针指向某对手的数据,游戏就认为你原本就是该玩家,从而正常把操作同步给其他玩家,加之游戏并没有对来源进行检查的设计缺陷,导致这种现象的发生。
但是只在联网对战中有效。单机时也有一定作用,能看到电脑的科技是全开的……当然除了超级武器是受游戏开始前选项控制的。
(二十二)遭遇战参数修改
在遭遇战界面,使用最基本的CE查找数值就可以了。不过对于搜索初始金钱的时候,要减去5000,因为这个值是从5000开始的。不要问我为什么,这是个msctls_trackbar32控件,所以基址也找不到。或许可以尝试发送MESSAGE消息修改,没测试。这功能意义不大,因为你和对手仍在一条起跑线上。
(二十三)心灵探测
=========
占位符
我一点也不想尝试!!
能实现不用造心灵探测器,即可不限范围探测——联网对战时判断对手行动,对单机的我没吸引力。
欢迎分享。
=========
(九十八)最后的补充
笔者一直认为游戏中对单位的分类有点乱。
游戏中有4个建造选项卡,分别是建筑选项卡、武器选项卡、步兵选项卡和车辆选项卡。
单位种类细分为:建筑(对应建筑选项卡);武器(对应武器选项卡);步兵(对应步兵选项卡);飞机、战车和战船(这三个对应车辆选项卡)。
建造选项类别:编号0x03(对应飞机,归属车辆选项卡。其实送伞兵的飞机、V3发射的导弹和航母的飞机本质也是一个建造选项)、编号0x07(对应建筑和武器,分别归属建筑和武器选项卡。这个可以理解都是建筑物)、编号0x10(对应步兵,归属步兵选项卡)、编号0x28(对应战车和战船,归属车辆选项卡。为什么飞机在这里被抛弃了?)。编号0x1F(对应超级武器和伞兵,归属武器选项卡,这个尚未找到对应的ConstructionDescriptor对象数组,可能不是用此类描述的)。
有建造能力的建筑:基地(可加速建造建筑和武器)、兵营(加速步兵)、战车工厂(加速战车)、空指部(加速飞机)、船坞(加速战船)。
我发现单位的第一个虚函数表的+2C偏移的函数,很可能是返回对象类型的一个虚函数:战车和战船=0x01、飞机=0x02、建筑=0x06、步兵=0x0F。在一个被很多地方调用,不知什么作用的地方,确定就只有这4个值:
凡是总有但是,我仍然不知道如何确定一个单位具体编号,是兵营,发电厂还是间谍卫星。。。
(九十九)结束,却不知——何处是起点,何时能出发
前后慢慢分析加写博文大概有近两周的时间,完结了自己想能自己修改明白红色警戒这款游戏的愿望。
然而本系列只能算作个冰山一角。没有比较完善的类图,也不了解这个游戏的框架(只知道一个主循环),解析封包是不是能解决作弊联网不同步……当足够了解的时候,就可以用内存修改的方法实现MOD而不用改配置文件,动态的增删地图的触发器,甚至修改地图,彻底玩坏。在没有源码的情况下,或许上述想法都太奢侈,没有价值去分析一个不会再更新的游戏。或许有机会我会简单分析一下游戏触发器的流程,前几天刚找到一个大概位置。
如果有人能在笔者基础上,做出一个通杀各版本的史上最强大的内存修改器,一定要给我发一份可好?
相关资源:
主要是两个CT表和文章中的代码,点此下载。
本百科,或许是目前中文版的最全RA2修改器百科,到此就结束了,感谢你的耐心及对笔者拙劣写作的忍耐。
The End.
转载请注明来源,http://www.cnblogs.com/viewll/p/4779465.html