红色警戒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个值:

hs

    凡是总有但是,我仍然不知道如何确定一个单位具体编号,是兵营,发电厂还是间谍卫星。。。

(九十九)结束,却不知——何处是起点,何时能出发

    前后慢慢分析加写博文大概有近两周的时间,完结了自己想能自己修改明白红色警戒这款游戏的愿望。

    然而本系列只能算作个冰山一角。没有比较完善的类图,也不了解这个游戏的框架(只知道一个主循环),解析封包是不是能解决作弊联网不同步……当足够了解的时候,就可以用内存修改的方法实现MOD而不用改配置文件,动态的增删地图的触发器,甚至修改地图,彻底玩坏猛击。在没有源码的情况下,或许上述想法都太奢侈,没有价值去分析一个不会再更新的游戏。或许有机会我会简单分析一下游戏触发器的流程,前几天刚找到一个大概位置。

    如果有人能在笔者基础上,做出一个通杀各版本的史上最强大的内存修改器,一定要给我发一份可好

相关资源:

主要是两个CT表和文章中的代码,点此下载

 

    本百科,或许是目前中文版的最全RA2修改器百科,到此就结束了,感谢你的耐心及对笔者拙劣写作的忍耐。

The End.

署名许可转载请注明来源,http://www.cnblogs.com/viewll/p/4779465.html

posted @ 2015-09-02 21:20  vIewll  阅读(2179)  评论(5编辑  收藏  举报