2005-6-8 22:33
周瑜
曹操传exe修改器
所谓的曹操传exe修改器其实只有十五个功能。
2005-6-16 20:47
周瑜
一、破浪履
修改的不是破浪履这个宝物本身,而是恶路移动这个特殊效果。把破浪履的特殊效果指定为恶路移动,是在data中完成的;而恶路移动有什么特点,才是在exe文件中进行说明的。
新增功能:
1.除大河、浅滩、沼泽,其余不利地形照样多消耗机动力。
2.大河加成120%,浅滩110%,沼泽100%
3.在大河上不坐船
4.宝物说明“恶路移动”改为“凌波微步”
2005-6-16 20:48
周瑜
二、战场人物形象
改动一览:
1.所有兵种的普通形象都指向不同的图片。
2.缩减了三转个数,对于一转个数不封顶,但图片总数不得超过255。
3.特殊形象06根据兵种来判断,群雄至西凉骑兵是155,骑马策士至铁锤骑兵是156。
4.普通形象由1E改为00。
5.前174个人物的形象指定地址在5F16~5FC3。
空闲区域:5FC4~6186,共1C3字节。
普通形象、特殊形象与图片的具体对应关系在此:
[url=http://www.xycq.net/forum/index.php?showtopic=57588&view=findpost&p=832263]My Webpage[/url]
2005-6-16 22:33
世说新语
为什么我用了战场人物形象补丁后就不能进入战场了?
一旦进入就说错误……
能不能给个使用说明什么的?
2005-6-16 23:44
周瑜
曹操传的图片只有151个,而我这个补丁里面用了很多151以后的图片,都是需要自己往三个战场文件里面添加才能用的。否则形象不足,自然会报错了。
2005-6-17 00:18
世说新语
[quote]原帖由[i]周瑜[/i]于2005-06-16, 23:44:42发表
曹操传的图片只有151个,而我这个补丁里面用了很多151以后的图片,都是需要自己往三个战场文件里面添加才能用的。否则形象不足,自然会报错了。 [/quote]
那么,如周郎所说,现在需要174个战场形象才能进入游戏的话……
怎么往三个战场文件里面添加战场人物形象呢?
这个实在是不知道……
所以问一下,应该不算灌水吧……
2005-6-17 08:38
peacockwang
去幽人兄的网络硬盘下载图片添加工具
2005-6-18 10:21
周瑜
三、兵种改动
改动一览:
1.拐子马对除步兵和拐子马以外所有兵种伤害加成为125%。
2.弓兵、弓骑、炮车对拐子马的伤害加成为60%。
3.步兵对拐子马的伤害加成为150%。
4.金锤骑兵和铜锤骑兵的30%策略附加伤害取消,西凉骑兵、驯熊师、驯虎师不变。
空闲区域:3B27C~3B297,共1C字节。
2005-6-18 15:42
周瑜
四、装备辅助道具:
改动一览:
1.骑马策士单向接受所有贼兵可装备的辅助道具,避免牛皋变更兵种时发生装备不匹配现象。
2.四锤骑兵均可装备特殊效果为“致命一击攻击”的辅助道具。
空闲区域:6DAE~6DC2,共15字节。
2005-6-18 23:24
周瑜
五、穿云箭
说明:运行本补丁之前,必须先运行第四项——装备辅助道具。
改动一览:
1.所有具有“辅助风类策略”特殊效果的宝物,同时具有远距攻击的效果。攻击范围为原没羽箭范围,特殊效果值仍然控制风系策略加强的百分比。
2.将策略效果说明“辅助风类策略”改为“掌控风的力量”。
空闲区域:利用了第四项中6DAE~6DC0的空闲区域,剩余60C1~60C2,共02字节忽略不计。
2005-6-18 23:28
冰火蝴蝶
被捉来顶帖子
upup
2005-6-19 10:49
周瑜
To 蝴蝶mm:即使是灌水,也照样献花一朵 以后可要多来支持哟。
To 幽人:只需要比较使用补丁前后的应用程序,找到不同之处在反汇编代码中的对应位置,就可以看见我写的全部代码,所以没有必要贴上来。每一功能大约修改了100字节左右,贴上来的话会比较多,如果再逐条解说,可能会比写代码本身的时间还长。
六、可装备的部队
说明:本补丁借用eXeScope对资源的修改,增大了原exe文件512字节。使用时请注意只能对同一个应用程序使用一次,否则将不可恢复的损坏此应用程序。
改动一览:
1.把我军出现的所有兵种显示在“可装备的部队”列表中。
2.四个锤骑兵由于武器、防具、辅助均相同,合并起来以节省地方。
3.与曹操传类似,把防具为铠甲和衣服的职业分别集中在上下。
2005-6-19 13:23
BT土偶
[quote]原帖由[i]周瑜[/i]于2005-06-08, 22:33:42发表
所谓的曹操传exe修改器其实只有六个功能。 [/quote]
请问我能否用这修改器修改《说岳》以外的MOD並發表?
2005-6-19 14:53
周瑜
To BT土偶:我的修改器是在众人研究的基础之上制作出来的,并非不传之密,当然大家都可以使用。不过由于其功能是为说岳定制的,在其他MOD中可能不适用,使用时还请斟酌。
七、百分数
说明:运行本补丁之前,必须先运行第三项——兵种改动。
改动一览:
1.道具特殊效果“每回合恢复HP”和“节省MP”原为分数,改为百分数。其中“节省MP”指的是节省的MP占应该消耗MP的百分比。
2.“辅助获得Exp”原为十分数,改为百分数,指的的增加的经验而不是总经验占应得经验的百分比。
3.修改许多策略效果说明的数据表示,不一一列举。
空闲区域:利用了第三项中3B27C~3B294的空闲区域,剩余3B295~3B297,共03字节忽略不计。产生66DC-66FB的空闲区域,共20字节。
2005-6-19 17:08
世说新语
啊……
不能适用啊……
2005-6-20 14:40
周瑜
八、气合
说明:运行本补丁之前,必须先运行第二项——战场人物形象。
改动一览:
1.[quote]3F450 气合加攻击还是精神 00-02
      依次是策士、风水、道、马策、舞、西凉、黄巾、海盗、熊、虎、都督、咒术、仙人
      00和01表示加精神(不明白为什么要分成两个) 02表示加武力[/quote]
改为:3F421起1B字节,控制所有职业气合时加攻击还是精神,00表示都加,01表示加精神,02表示加攻击
2.设置铁滑车等加攻击力,骑马策士和仙人同时加攻击力和精神力。
注:霸气、奋起、鼓舞、霉气、压迫、威吓与气合所加减相同。
空闲区域:利用了第二项中5FC4~5FE0的空闲区域,剩余5FE1~6186,共1A6字节。
2005-6-21 10:20
周瑜
九、自动使用道具
说明:运行本补丁之前,必须先运行第二项——战场人物形象,第三项——兵种改动,第七项——百分数。
改动一览:
1.使得道具特殊效果“自动使用豆”的特殊效果值有效,指定被攻击或者策略损失HP后使用的道具代码。57为豆,与原效果相同。
2.改动策略效果说明“自动使用豆”为“自动使用”+道具名。
空闲区域:利用了第二项中5FE1~5FEF的空闲区域,剩余5FF0~6186,共197字节。利用第七项66DC-66F2的空闲区域,剩余66F3~66FB,共9字节忽略不计。
data修改建议:把道具“恢复用豆”,改为“豆”;把道具“恢复用米”,改为“米”;把道具“恢复用桃”,改为“桃”。
2005-6-23 13:55
周瑜
十、突破能力限制
改动一览:
1.无论是我方武将通过吃果子和升级增加得到的,还是敌方、友方武将根据出场等级计算得出的,无道具状态下的攻防精暴士能力值,都可以突破255。
2.无道具、有道具、战场上暂时上升三种情况下的攻防精暴士的最大值都为9999,HP最大值为65535,MP最大值为255。
3.存档文件Svxxd.e5s的格式改变,每个武将分别在其五项基本能力值的后面增加一个字节作为高位,总计512个武将增加2560字节。
4.出兵选人时、显示人物状态时的能力管满管代表数值。基本能力(含道具、浮动)满管为1200,HP满管为1000,MP满管为255。
5.武将姓名限制为4个汉字(8个字节)以内。
空闲区域:8502~87EE,共2ED字节
附上旧存档转变为新存档的工具
2005-6-26 21:49
周瑜
十一、升级特殊效果
说明:运行本补丁之前,必须先运行第二项——战场人物形象,第十项——突破能力限制。
改动一览:
1.特殊武器和防具7~9级的特殊效果值变为原来的1.5倍,例外情况:“穿透攻击”的特殊效果值不变,“远距攻击”的特殊效果值加倍,“自动使用道具”的特殊效果值增1;“辅助精神力”的武器的特殊效果值为(等级-1)×data值。
2.部分特殊效果在10级时有明显加强,具体请看此帖:
[url=http://dx.xycq.net/forum/index.php?showtopic=57254]http://dx.xycq.net/forum/index.php?showtopic=57254[/url]
3.突破全身道具对单项能力叠加不超过255的限制。
空闲区域:利用了第二项中5FF0~604C,616D~6186的空闲区域,剩余604D~616C,共120字节。
data修改建议:
按照宝物帖1~4级的参数设定特殊效果值,“自动使用道具”的特殊效果值设定为0x57。
2005-6-27 15:37
周瑜
十二、大杂烩
说明:运行本补丁之前,必须先运行第二项——战场人物形象,第十项——突破能力限制。
改动一览:
1.剧本中可设置的武器防具最高等级变为10级。注:原本满级状态下经验自动变为MAX,现改为满级与9级时经验均变为MAX。
2.部队的攻防精暴士减少时,由减少为70%改至减少为80%。
3.转职等级改为20、40。
4.取消木人中毒、土偶混乱的部队特性。
5.重设战前选择部队出场时的兵种排列顺序。
6.道具等级由武将升4级道具升1级改为武将升6级道具升1级。已测试通过的有:敌军携带宝物、普通装备,我军武将加入携带普通装备,战场外获得宝物。
7.设定等级加成与果子理论。
8.进一步完善了van的我方武将加入等级公式。
9.全部49条撤退台词均可使用。
空闲区域:利用了第二项中604D~6084空闲区域,剩余6085~616C,共E8字节。
2005-6-27 15:58
刘德华
希望周瑜大人可以开发一个大众版本的.exe修改器啊,感激不尽啊`````
2005-6-28 21:43
周瑜
十三、仙人
说明:运行本补丁之前,必须先运行第二项——战场人物形象。
改动一览:
1.取消土偶攻击后的混乱效果。
2.增加仙人攻击后100%的混乱麻痹封咒中毒效果。
3.设置仙人的攻击穿透效果为6,即最远端距离攻击中心为3的菱形。
4.选择攻击目标时,显示穿透效果6的范围。
空闲区域:利用了第二项中6085~612F空闲区域,剩余6130~616C,共3D字节。
2005-6-29 12:42
周瑜
十四、平均等级
改动一览:
敌军出场武将和小兵是根据我方出战武将的平均等级来加成计算的。我方的平均等级,是去掉高四分之一和低四分之一后的武将等级的平均。
现更改为:取我方出战武将等级最高的n人的平均等级。n的设置位置在17C97,现设为1。
2005-6-30 11:24
周瑜
十五、不匹配装备
改动一览:
剧本中给武将设定道具、改变兵种的时候,合适位置上的不匹配装备仍然会在游戏中保留。
在“个人装备设定”里,可以更自由的给敌人武将装备各种道具,尤其是10级道具。
10级宝物特殊效果的属性设置地址在6F77~6FA3,共2D字节,分别表示特殊效果12~3E在10级的时候的特殊效果值,可自行设定,FF表示无变化。
六沉枪:九宫格攻击,归顺我方的陆文龙就拿着这杆超级六沉枪。
龙泉剑:辅助攻击防御100%,完全物理攻击免疫,强魔法部队使用。
梅花亮银锤:减轻策略伤害100%,攻击类策略免疫,强近战部队使用。
碧玉梨花袍:减轻策略损伤100%,攻击类策略免疫,强近战部队使用。与上一个重复,改为辅助策略防御可能更好,如此特殊效果值应相应下调,与龙泉剑相同为佳。
六方青铜锤:全屏攻击,隐藏在我方无法攻击的某个角落的炮车或者连弩使用,地图上有两个就可以禁止我方出军师。
飞焰扇:辅助火类策略200%。
八卦仙衣:辅助精神力200,以上两项配合使用有极恐怖的效果。
玉砌连环铠:自动使用桃,一夫当关,万夫莫开。用于阻挡我方多路进攻部队中的一路,一定回合后自动解除装备。
雪狸袍:100%,主将可酌情使用,一旦被围攻,效果也就不大。
太乙道袍:每回合恢复MP 200
湛卢剑:辅助士气200
昊天剑:节约MP100%
以上根据剧情安排使用,可以在对话中加以介绍。
翡翠甲:辅助HP 200
柳叶甲:减轻远距损伤100%
碧云斗篷:辅助MP200
轰天雷:辅助攻击命中100%
七星剑:辅助策略命中100%
以上效果不大,可以给小将使用。
全部补丁如上,以后不再更新,若有BUG请自行解决。
更新的补丁很多,除了增加文件大小的那个,其余全部依次运行一次即可。
2005-6-30 12:36
幽人独往来
[quote]幽人曾提出在剧本中让武将来回转换兵种以达到解除装备的目的,故保留转换兵种时取消不匹配装备的设置。[/quote]
已经发现了更好的方法,就是加入武将装备设定,把需要卸掉的装备处设为“卸掉”,其他设为“默认”,原先以为“默认”就是“初始装备”,现在发现原来是“现有装备”。
所以这一块周瑜GG也可以改成自动保留了
2005-7-8 12:33
ccj1985
[quote]原帖由[i]周瑜[/i]于2005-06-16, 20:47:33发表
一、破浪履
修改的不是破浪履这个宝物本身,而是恶路移动这个特殊效果。把破浪履的特殊效果指定为恶路移动,是在data中完成的;而恶路移动有什么特点,才是在exe文件中进行说明的。
新增功能:
1.除大河、浅滩、沼泽,其余不利地形照样多消耗机动力。
2.大河加成120%,浅滩110%,沼泽100%
3.在大河上不坐船
4.宝物说明“恶路移动”改为“凌波微步” [/quote]
这点还挺有点创新的,感觉非常不错!!~~
2005-7-11 16:23
周瑜
大规模修改exe的步骤:
1.反汇编整个exe程序。
2.定位需要修改的位置,通常是一个函数。
需要此前大规模阅读源代码,并详细记录各个函数的输入输出。输入通常包括ecx,以及调用函数前入栈的参数,即函数体中的ebp+08,ebp+0C等,输出通常为eax或者al。
注:函数执行后,寄存器ecx、edx通常会被破坏。即使没有被破坏,函数体后直接使用寄存器值也是极其危险的做法,不推荐。
3.将整个函数或者是函数中的某一段,替换成自己的代码。
替换前必须完全理解被替换代码的功能,最好能完全理解每一语句和每一子函数的作用。
替换代码不得超过被替换代码的长度,如确实超过长度,可以利用空闲区域,主要有三种利用方法。
1)使用jmp(包括条件跳转)跳转到空闲区域,执行完后使用jmp返回。可以把任意数量、无论本身是否成为一个独立功能块的代码,放在空闲区域,但不可复用。
2)使用call调用一个位于空闲区域的新函数,执行完后使用ret返回。函数体必然是一个独立功能块,需要预先定义输入输出参数,可以复用。
3)隐式跳转,把跳转表的某一项指向空闲区域,执行后用jmp返回。不可复用同1。另外注意这种情况下,反汇编器W32dsm不知道这段代码是从哪里跳转来的,需要自己作详细记录。
4.将汇编代码转变为机器码。
可以在反汇编得到的代码中查找相同的汇编语句,拷贝其机器码。如果没有,则可以查找参数不同的语句,然后修改其参数即可。
对于jmp(包括条件跳转)和call语句,应该预留写跳转长度的字节,长短跳转需要判明。call指令长度5个字节,短跳转2个字节,无条件长跳转5个字节,条件长跳转6个字节。此后给每一句新写的汇编标上地址号,再计算出jmp和call的距离。
5.将机器码写入exe文件,并再次使用反汇编程序,检查反汇编结果与所写语句是否相同。
注:如果修改了原有函数的输入输出参数的个数、类型、含义等,则每一个调用此函数的地方都必须作相应修改。
推荐使用的工具一览:
1.反汇编:W32dsm
2.阅读反汇编代码:VC
3.修改exe文件:WinHex
2005-7-11 22:39
小行者
请问周大:做这样的事情 需要多深厚的 编译原理 基础知识?请告知,谢谢。
2005-7-12 10:53
周瑜
[font=宋体]To 小行者:很遗憾,我没有学过编译原理,只学过汇编语言。推荐参考书目:《IBM PC汇编语言程序设计》沈美明 温冬婵 编著,清华大学出版社,1991年6月第一版。
最近我发的帖子基本由浅到深,总结了上个月做修改器的经验与方法。如果能看懂博雅张生关于增加策略伤害系数种类的帖子,便可以跟着学习下去。
另外,一句话中加上太多空格,会让人看的很吃力。
exe修改举例——破浪履补丁
将使用补丁前后的exe文件加以比较,可以看出该补丁更改了8个地方,分别是:
自0x3EBCF起0xEF字节
自0x375DD起0x0A字节
自0x398FE起0x1C字节
自0x3B09C起0x13字节
自0x40213起0x0A字节
自0x50926起0x0F字节
自0x50B51起0x0F字节
自0x8AA98起0x08字节
下面分别加以介绍:
曹操传中关于地形的两个函数,原本功能分别为:
函数名 ecx ebp+08 返回值
:0043F7CF 武将战场属性地址 地形编号 al,武将在该地形上消耗行动力(考虑宝物效果)
:0043F84D 武将战场属性地址 al,武将在当前地形上的攻防加成
该补丁将这两个函数合并为一个函数,其功能为:
函数名 ecx ebp+08 返回值
:0043F7CF 武将战场属性地址 地形编号 al,武将在该地形上消耗行动力(考虑宝物效果)
dl,武将在当前地形上的攻防加成(考虑宝物效果)
具体介绍新函数的代码:
:0043F7CF 55 push ebp
:0043F7D0 8BEC mov ebp, esp //函数头,保存ebp和esp值
:0043F7D2 83EC14 sub esp, 00000014 //函数中可用内存为5个dword,地址ebp-04,ebp-08,...,ebp-14
:0043F7D5 894DEC mov dword ptr [ebp-14], ecx//保存武将战场属性地址
:0043F7D8 E893BCFFFF call 0043B470 //获取武将职业于al
:0043F7DD 25FF000000 and eax, 000000FF
:0043F7E2 8945FC mov dword ptr [ebp-04], eax//保存武将职业
:0043F7E5 83F81B cmp eax, 0000001B //检测武将职业是否超过最大职业数
:0043F7E8 7C0A jl 0043F7F4 //未超过,继续执行
:0043F7EA 0CFF or al, FF
:0043F7EC 80E200 and dl, 00
:0043F7EF E98C000000 jmp 0043F880 //超过,此职业无效,设定行动消耗为FF,攻防加成为0,结束函数。
* Referenced by a (U)nconditional or ©onditional Jump at Address:
|:0043F7E8©
|
:0043F7F4 8B4DEC mov ecx, dword ptr [ebp-14]//读取武将战场属性地址
:0043F7F7 E8643BFCFF call 00403360
:0043F7FC 50 push eax
:0043F7FD E88F61FFFF call 00435991 //获得武将当前所在地形编号
:0043F802 83C404 add esp, 00000004 //压栈参数出栈
:0043F805 25FF000000 and eax, 000000FF
:0043F80A 8945F0 mov dword ptr [ebp-10], eax//保存武将当前所在地形编号
:0043F80D 50 push eax
:0043F80E 8B4DFC mov ecx, dword ptr [ebp-04]//读取武将职业
:0043F811 6BC93C imul ecx, 0000003C
:0043F814 81C1E0E44A00 add ecx, 004AE4E0
:0043F81A E871380000 call 00443090 //获得该职业该地形的攻防加成
:0043F81F 8845F4 mov byte ptr [ebp-0C], al //保存攻防加成
:0043F822 8B4508 mov eax, dword ptr [ebp+08]//读取参数,地形编号
:0043F825 25FF000000 and eax, 000000FF
:0043F82A 50 push eax
:0043F82B E840380000 call 00443070 //获得该职业该地形的行动力消耗
:0043F830 8845F8 mov byte ptr [ebp-08], al //保存行动力消耗
:0043F833 6A22 push 00000022 //恶路移动(凌波微步)的特殊效果编号
:0043F835 8B55EC mov edx, dword ptr [ebp-14]
:0043F838 8B0A mov ecx, dword ptr [edx] //获得该武将data编号
:0043F83A 6BC948 imul ecx, 00000048
:0043F83D 81C1681B4A00 add ecx, 004A1B68 //计算武将基本属性地址
:0043F843 E8C181FCFF call 00407A09 //检测武将是否装备特殊效果编号为0x22的道具(返回值于eax,1是0否)
:0043F848 85C0 test eax, eax
:0043F84A 742E je 0043F87A //没有装备,则结束函数
:0043F84C 8B4508 mov eax, dword ptr [ebp+08]//读取参数,地形编号
:0043F84F 3C09 cmp al, 09 //浅滩
:0043F851 7408 je 0043F85B
:0043F853 3C0A cmp al, 0A //沼泽
:0043F855 7404 je 0043F85B
:0043F857 3C0D cmp al, 0D //大河
:0043F859 7505 jne 0043F860
* Referenced by a (U)nconditional or ©onditional Jump at Addresses:
|:0043F851©, :0043F855©
|
:0043F85B B001 mov al, 01 //行动力消耗为1
:0043F85D 8945F8 mov dword ptr [ebp-08], eax//保存行动力消耗
* Referenced by a (U)nconditional or ©onditional Jump at Address:
|:0043F859©
|
:0043F860 8B45F0 mov eax, dword ptr [ebp-10]//读取当前所在地形编号
:0043F863 3C09 cmp al, 09 //浅滩
:0043F865 7504 jne 0043F86B
:0043F867 B00B mov al, 0B
:0043F869 EB0C jmp 0043F877
* Referenced by a (U)nconditional or ©onditional Jump at Address:
|:0043F865©
|
:0043F86B 3C0A cmp al, 0A //沼泽
:0043F86D 7502 jne 0043F871
:0043F86F EB06 jmp 0043F877
* Referenced by a (U)nconditional or ©onditional Jump at Address:
|:0043F86D©
|
:0043F871 3C0D cmp al, 0D //大河
:0043F873 7505 jne 0043F87A
:0043F875 B00C mov al, 0C
* Referenced by a (U)nconditional or ©onditional Jump at Addresses:
|:0043F869(U), :0043F86F(U)
|
:0043F877 8945F4 mov dword ptr [ebp-0C], eax//保存攻防加成
* Referenced by a (U)nconditional or ©onditional Jump at Addresses:
|:0043F84A©, :0043F873©
|
:0043F87A 8B45F8 mov eax, dword ptr [ebp-08]//将移动力消耗放在eax,只有低8位有效
:0043F87D 8B55F4 mov edx, dword ptr [ebp-0C]//将攻防加成放在edx,只有低8位有效
* Referenced by a (U)nconditional or ©onditional Jump at Address:
|:0043F7EF(U)
|
:0043F880 8BE5 mov esp, ebp //函数结束,恢复入口的ebp和esp值
:0043F882 5D pop ebp
:0043F883 C20400 ret 0004 //返回并使参数出栈
因为此函数的合并,调用部分也需要做相应修改。
原本调用:0043F7CF的地方,由于入口、出口均未发生变化,故无需修改。
原本调用:0043F84D的地方,调用函数地址、返回值发生变化,需要修改。这种情况共六处:
:004381DD , :0043A4FE , :0043A510 , :0043BC9C , :0043BCA7 , :00440E13
原调用方法:
:004381DD E86B760000 call 0043F84D
:004381E2 25FF000000 and eax, 000000FF
更改为:
:004381DD E8ED750000 call 0043F7CF
:004381E2 33C0 xor eax, eax
:004381E4 0AC2 or al, dl
:004381E6 90 nop
在有限的空间内辗转腾挪,不但把edx的数据传入eax,还把eax的高三字节清零。:0043A4FE,:0043A510,:00440E13的修改方法类似。
原调用方法:
:0043BC9C E8AC3B0000 call 0043F84D
:0043BCA1 8845F4 mov byte ptr [ebp-0C], al
更改为:
:0043BC9C E82E3B0000 call 0043F7CF
:0043BCA1 8855F4 mov byte ptr [ebp-0C], dl
这个更改一目了然,不需解释。:0043BCA7的修改方法与之类似。
这样便实现了破浪履的移动力和攻防加成功能,下面来看看绘图功能。
去腿部分:
:00451523 8B4D18 mov ecx, dword ptr [ebp+18]//读取武将战场属性编号
:00451526 81E1FF000000 and ecx, 000000FF
:0045152C 6BC924 imul ecx, 00000024
:0045152F 81C1502C4B00 add ecx, 004B2C50 //计算武将战场属性地址
:00451535 E8E6CDFEFF call 0043E320 //获得武将的朝向
更改为:
:00451523 8B4D18 mov ecx, dword ptr [ebp+18]//读取武将战场属性编号
:00451526 E85BE3FEFF call 0043F886 //自定义函数
:0045152B 85C0 test eax, eax //检测是否装备破浪履
:0045152D 0F85E8010000 jne 0045171B //如装备则不执行去腿操作
:00451533 90 nop
:00451534 90 nop
:00451535 E8E6CDFEFF call 0043E320 //获得武将的朝向
绘船部分与之类似:
:0045174E 8B4D18 mov ecx, dword ptr [ebp+18]//读取武将战场属性编号
:00451751 81E1FF000000 and ecx, 000000FF
:00451757 6BC924 imul ecx, 00000024
:0045175A 81C1502C4B00 add ecx, 004B2C50 //计算武将战场属性地址
:00451760 E8BBCBFEFF call 0043E320 //获得武将的朝向
更改为:
:0045174E 8B4D18 mov ecx, dword ptr [ebp+18]//读取武将战场属性编号
:00451751 E830E1FEFF call 0043F886 //自定义函数
:00451756 85C0 test eax, eax //检测是否装备破浪履
:00451758 0F8590010000 jne 004518EE //如装备则不执行绘船操作
:0045175E 90 nop
:0045175F 90 nop
:00451760 E8BBCBFEFF call 0043E320 //获得武将的朝向
由这两处调用,可以定义出函数:0043F886的输入输出如下:
函数名 ecx 返回值
:0043F886 武将战场属性编号 eax,是否装备破浪履(1是0否)
ecx,武将战场属性地址(提供下面获得朝向的函数0043E320使用)
实现如下:
:0043F886 55 push ebp
:0043F887 8BEC mov ebp, esp
:0043F889 51 push ecx //等效于sub esp, 00000004 表示函数中可用内存为1个dword,地址ebp-04
:0043F88A 81E1FF000000 and ecx, 000000FF
:0043F890 6BC924 imul ecx, 00000024
:0043F893 81C1502C4B00 add ecx, 004B2C50 //计算武将战场属性地址
:0043F899 8BD1 mov edx, ecx
:0043F89B 894DFC mov dword ptr [ebp-04], ecx//保存武将战场属性地址
:0043F89E 6A22 push 00000022 //恶路移动(凌波微步)的特殊效果编号
:0043F8A0 8B0A mov ecx, dword ptr [edx] //获得武将data编号
:0043F8A2 6BC948 imul ecx, 00000048
:0043F8A5 81C1681B4A00 add ecx, 004A1B68 //计算武将基本属性地址
:0043F8AB E85981FCFF call 00407A09 //检测武将是否装备特殊效果编号为0x22的道具(返回值于eax,1是0否)
:0043F8B0 8B4DFC mov ecx, dword ptr [ebp-04]//将武将战场属性地址放于ecx
:0043F8B3 8BE5 mov esp, ebp
:0043F8B5 5D pop ebp
:0043F8B6 C3 ret
最后,修改0x8AA98处的宝物效果说明,将“恶路移动”改为“凌波微步”。[/font]
2005-7-12 11:11
小行者
好,谢谢周大,我已经修改了我的帖子,并将您的帖子收藏。
2005-7-12 11:15
van
改动反汇编代码时的机器码-〉asm转换可以借助DeDe。
另外像修改曹操传这种小程序,IDAPro的反汇编速度也是可以接收的,这个的功能比w32asm强多了
2005-7-19 22:59
东方无翼
我用Ollydbg,感觉不错。既可以调试,又能实时汇编。
2005-8-31 22:02
博雅张生
[quote]原帖由[i]周瑜[/i]于2005-06-20, 14:40:04发表
八、气合
说明:运行本补丁之前,必须先运行第二项——战场人物形象。
改动一览:
1.[quote]3F450 气合加攻击还是精神 00-02
       依次是策士、风水、道、马策、舞、西凉、黄巾、海盗、熊、虎、都督、咒术、仙人
       00和01表示加精神(不明白为什么要分成两个) 02表示加武力[/quote]
改为:3F421起1B字节,控制所有职业气合时加攻击还是精神,00表示都加,01表示加精神,02表示加攻击
2.设置铁滑车等加攻击力,骑马策士和仙人同时加攻击力和精神力。
注:霸气、奋起、鼓舞、霉气、压迫、威吓与气合所加减相同。
空闲区域:利用了第二项中5FC4~5FE0的空闲区域,剩余5FE1~6186,共1A6字节。 [/quote]
实验表明,如果一个兵种的气合改为都加(00),那么这个兵种行动的AI更像是个军师,即优先使用策略,一般不攻击。
2005-10-10 12:12
薇雨杨枫
[quote]博雅张生 发帖时间 2005-08-31, 22:02:59
引用 (周瑜 @ 2005-06-20, 14:40:04)
八、气合
说明:运行本补丁之前,必须先运行第二项——战场人物形象。
改动一览:
1.
引用
3F450 气合加攻击还是精神 00-02
       依次是策士、风水、道、马策、舞、西凉、黄巾、海盗、熊、虎、都督、咒术、仙人
       00和01表示加精神(不明白为什么要分成两个) 02表示加武力
改为:3F421起1B字节,控制所有职业气合时加攻击还是精神,00表示都加,01表示加精神,02表示加攻击
2.设置铁滑车等加攻击力,骑马策士和仙人同时加攻击力和精神力。
注:霸气、奋起、鼓舞、霉气、压迫、威吓与气合所加减相同。
空闲区域:利用了第二项中5FC4~5FE0的空闲区域,剩余5FE1~6186,共1A6字节。
实验表明,如果一个兵种的气合改为都加(00),那么这个兵种行动的AI更像是个军师,即优先使用策略,一般不攻击。
[/quote]
是吗??
页:
[1]
Powered by Discuz! Archiver 5.0.0
© 2001-2006 Comsenz Inc.