Board logo

标题: 宝物特效效果值按等级提升的修改 [打印本页]

作者: godtype    时间: 2008-10-24 17:13     标题: 宝物特效效果值按等级提升的修改

目前大多数MOD的引擎中,武器和防具类宝物在一定的等级时,其宝物特效的效果值会增加。尤其是STAR175的引擎,7级后大部分效果将变成原来(DATA值)的150%(个别特效除外),而到了10级的效果值则会变成一个固定值。但这样会有一点不合理,假如某剑和某枪用相同的特效,而DATA设值不同,但到了10级就变得效果一样了,这样不就不公平了吗?所以我尝试将这一条函数进行了一下修改。
(由于我也是用STAR175的引擎,所以以下的修改法是以STAR175的引擎(最新的加强版2号补丁同样适用)为基准,其他类似的引擎可以从中参考。)

0042011D  $ 55               PUSH EBP
0042011E  . 8BEC             MOV EBP,ESP
00420120  . 83EC 04          SUB ESP,4        ——这一句原函数没有,要加插进去的。

00420123  . 81E2 FF000000    AND EDX,0FF
00420129  . 33C9             XOR ECX,ECX
0042012B  . 8A08             MOV CL,BYTE PTR DS:[EAX]                ——CL存放特效的DATA设值
0042012D  . 8A40 FE          MOV AL,BYTE PTR DS:[EAX-2]        ——AL存放了特效编号

00420130  . 3C 17            CMP AL,17        ——破甲攻击的编号(为什么STAR在发布帖中提示不要改破甲攻击的特效号的原因就在这里)
00420132  . 75 06            JNZ SHORT 0042013A
00420134  . 42               INC EDX                ——EDX存放了宝物的等级
00420135  . 0FAFCA           IMUL ECX,EDX                ——上一句和这句就是破甲攻击的效果成长公式(DATA值*(等级+1))
00420138  . EB 47            JMP SHORT 00420181
0042013A  > 25 FF000000      AND EAX,0FF                ——从上面到这句都是原有的,只是向下移动了。

0042013F  . 3C 2A            CMP AL,2A                ——远距攻击的编号
00420141  . 75 11            JNZ SHORT 00420154
00420143  . 3815 AE5D4000    CMP BYTE PTR DS:[405CAE],DL        ——405CAE中的数值决定了远距攻击的效果在哪一级的时候变化
00420149  . 7F 36            JG SHORT 00420181
0042014B  . 80F9 06          CMP CL,6        ——没羽箭范围
0042014E  . 75 31            JNZ SHORT 00420181
00420150  . B1 0C            MOV CL,0C        ——大没羽箭范围
00420152  . EB 2D            JMP SHORT 00420181
以上8行的综合例子说明:比如405CAE中设了06,那么某设置了没羽箭范围的远距攻击的装备,在6级以及6级之后变成大没羽箭范围。

00420154  > 3C 2B            CMP AL,2B                ——穿透攻击的编号
00420156  . 75 11            JNZ SHORT 00420169
00420158  . 3815 AF5D4000    CMP BYTE PTR DS:[405CAF],DL        ——405CAF中的数值决定了穿透攻击的效果在哪一级的时候变化
0042015E  . 7F 21            JG SHORT 00420181
00420160  . 80F9 04          CMP CL,4        ——直线二格
00420163  . 75 1C            JNZ SHORT 00420181
00420165  . B1 07            MOV CL,7        ——直线三格
00420167  . EB 18            JMP SHORT 00420181
以上8行的综合例子说明:比如405CAF中设了07,那么某设置了穿透直线二格的装备,在7级以及7级之后变成穿透直线三格。

00420169  > 3C 2E            CMP AL,2E                ——(无限)引导攻击的编号
0042016B  . 75 0A            JNZ SHORT 00420177
0042016D  . 3815 B25C4000    CMP BYTE PTR DS:[405CB2],DL        ——405CB2中的数值决定了(无限)引导攻击的效果在哪一级的时候变化
00420173  . 7F 0C            JG SHORT 00420181
00420175  . EB 05            JMP SHORT 0042017C
00420177  >^E9 41FFFFFF      JMP 004200BD(跳转到空白位置,千万不能按我写的跳转)
0042017C  > 41               INC ECX        ——效果值加1
以上的说明:比如405CB2中设了08,则(无限)引导攻击在8级后变成奋战攻击。

0042017D  . 90               NOP
0042017E  . 90               NOP
0042017F  . 90               NOP
00420180  . 90               NOP
00420181  > 8BC1             MOV EAX,ECX
00420183  > 8BE5             MOV ESP,EBP
00420185  . 5D               POP EBP
00420186  \. C3               RETN

以下在空白位置写:
004200BD  /> 3C 3A            CMP AL,3A                ——主动攻击必双击的编号
004200BF  . 75 0A            JNZ SHORT 004200CB
004200C1  . 3815 BE5C4000    CMP BYTE PTR DS:[405CBE],DL        ——405CBE中的数值决定了主动攻击必双击的效果在哪一级的时候变化
004200C7  . 7F 0F            JG SHORT 004200D8
004200C9  . EB 0C            JMP SHORT 004200D7
004200CB  > 3C 3E            CMP AL,3E                ——自动使用的编号
004200CD  . 75 0E            JNZ SHORT 004200DD
004200CF  . 3815 C25C4000    CMP BYTE PTR DS:[405CC2],DL        ——405CC2中的数值决定了自动使用效果在哪一级的时候变化
004200D5  . 7F 01            JG SHORT 004200D8
004200D7  > 41               INC ECX        ——效果值加1(这句其实可以不要,但不要这句就必须这里和上面的4200C9中用两个长跳转)
004200D8  > E9 A4000000      JMP 00420181
以上的说明:
比如405CBE中设了06,则主动攻击必双击在6级后变成绝对双击;
比如405CC2中设了07,则自动使用(假设在DATA中设值87(豆))在7级后变成自动使用88(米)。


004200DD  > 83E8 12          SUB EAX,12
004200E0  . 8A80 965C4000    MOV AL,BYTE PTR DS:[EAX+405C96]
004200E6  . 3C 00            CMP AL,0
004200E8  . 0F84 93000000    JE 00420181
004200EE  . 4A               DEC EDX
004200EF  . 0FAFC2           IMUL EAX,EDX
004200F2  . 0FAFC1           IMUL EAX,ECX
004200F5  . 33D2             XOR EDX,EDX
004200F7  . 884D FC          MOV BYTE PTR SS:[EBP-4],CL
004200FA  . B1 64            MOV CL,64
004200FC  . F7F1             DIV ECX
004200FE  . 25 FF000000      AND EAX,0FF
00420103  . 8A4D FC          MOV CL,BYTE PTR SS:[EBP-4]
00420106  . 03C1             ADD EAX,ECX
00420108  . EB 79            JMP SHORT 00420183
最后这几行的综合说明。不属于之前的几种特殊的特效之外的特效,就按这个公式进行计算:
DATA值 + DATA值 * X值 / 100 * (等级-1)
其中X值在405C96开始进行设置,从编号12-3E,也就是原来的10级效果值的位置,如果不想进行提升效果值,则设值为0,这些位置中包括了前面提到的五种特殊效果,其对应位置的设值也就相当于该特效在哪一级进行能力变换。

一个修改特例:假设某每回合回复MP的装备,在DATA中设置了2,在X值中设置了50(32h),则1级时回复2,2级开始每级+1。

以上的修改,有需要者可以对照使用并加以修改,公式方面其实是可以有所改进的。

——————
004200EE  . 4A               DEC EDX
这里也可以改成
004200EE  |. D1EA           SHR EDX,1
公式就变成:DATA值 + DATA值 * X值 / 100 * (等级 / 2)

最后再提醒新手,跳转到空白位置的这部分绝不能按我所写的跳转,因为我将该位置原有的函数整条搬到其他位置上,所以这个位置才空了出来,未经修改照我所写照搬必出事。

[ 本帖最后由 godtype 于 2008-11-11 22:53 编辑 ]
作者: paro    时间: 2008-10-24 18:14

godtype,这个应该要支持了!
10级及以上的宝物的特效应该要自己来决定的好!
作者: yanguodong    时间: 2008-10-24 18:23



QUOTE:
原帖由 godtype 于 2008-10-24 17:13 发表
目前大多数MOD的引擎中,武器和防具类宝物在一定的等级时,其宝物特效的效果值会增加。尤其是STAR175的引擎,7级后大部分效果将变成原来(DATA值)的150%(个别特效除外),而到了10级的效果值则会变成一个固定 ...

这些最早用于岳飞传,STAR175的引擎是一样的,岳飞传中的辅助精神力和破甲攻击在武器中也可以按等级变化提升
作者: 乱世枭雄    时间: 2008-10-24 18:27

一下子还看不懂,慢慢研究下,谢谢楼主!辛苦了!
作者: leo003    时间: 2008-10-24 19:39

刘兄是不是玩编程的,好强啊
作者: 飞龙在世    时间: 2008-10-24 19:52

话说寻找空地址对来我说是最麻烦的。

请问LZ是怎么找的
作者: 冰麒麟    时间: 2008-10-25 01:03

好复杂,如果想睇得明,真要恶补编程才行~~放弃~~
作者: godtype    时间: 2008-10-25 08:22

借用老严的这一句话:

QUOTE:
原帖由 yanguodong 于 2007-9-11 19:41 发表

几个月以前我也看不懂,慢慢研究就会了

其实我是不会任何编程的,我只能够是看人家写好的教程,再慢慢自己研究。比如要我写一个新的武器特效我也不会,太深了,简单的修改还可以。
作者: godtype    时间: 2008-10-25 08:38     标题: 回复 #6 飞龙在世 的帖子

如果是用STAR的引擎,在4D****这一段用Ctrl+B来查找N个00就可以了,有足够的00就可以。如果其他的引擎没有足够的空间,就用Stud_PE扩容吧。
作者: 乱世枭雄    时间: 2008-10-25 10:26

楼主能告诉我怎么修改一号补丁的EXE人物升级经验和宝物升级经验吗?问了好多人,发帖也没有人回,请帮忙告诉我吧,感激不尽!
作者: 冰麒麟    时间: 2008-10-25 10:57     标题: 回复 #10 乱世枭雄 的帖子

一号补丁?是37610716的新引擎曹操传吧?
看这贴吧
http://www.xycq.net/forum/viewth ... highlight=%2Bwwflkk
作者: 乱世枭雄    时间: 2008-10-25 12:43     标题: 回复 #11 冰麒麟 的帖子

谢谢冰麒麟,37610716的新引擎曹操传的EXE是第四版的,我照着帖子改可以,但是现在EXE第四版的一号补丁地址好像变了,我想知道新的EXE要怎么改,谢谢!

刚刚看了一下,似乎是一号补丁:7D7Bh  7d82h 其余的一样。 不知道是不是这样,进入游戏目前没有发现出错~

[ 本帖最后由 乱世枭雄 于 2008-10-25 14:34 编辑 ]
作者: godtype    时间: 2008-10-25 14:47     标题: 回复 #10 乱世枭雄 的帖子

因为不属于本帖主题内容,所以只帖位置,不作解释,请自行尝试修改。
00408978  |> 816D 08 96000000    /SUB DWORD PTR SS:[EBP+8],96

0040897F  |> 817D 08 96000000     CMP DWORD PTR SS:[EBP+8],96

00450144   . 81F9 96000000          CMP ECX,96

00450159   . BA 96000000            MOV EDX,96

00450B5E  |. 68 96000000           PUSH 96                                  ; /Arg3 = 00000096

00450B77  |> 68 96000000           PUSH 96                                  ; /Arg4 = 00000096

00450C10  |> C745 F8 96000000      MOV DWORD PTR SS:[EBP-8],96

00450C1E  |. C745 10 96000000      MOV DWORD PTR SS:[EBP+10],96

00479527  |. C745 EC 96000000      MOV DWORD PTR SS:[EBP-14],96
--------------
004201A7   . 83E0 64              AND EAX,64
004201AA   . 83C0 64              ADD EAX,64

00420214   . 83CA 64              OR EDX,64
00420217   > 83C2 64              ADD EDX,64

00420241   . 83C9 64              OR ECX,64
00420244   > 83C1 64              ADD ECX,64

00420266   . 83C9 64              OR ECX,64
00420269   > 83C1 64              ADD ECX,64

0045019F   . 83CA 64                OR EDX,64
004501A2   > 83C2 64                ADD EDX,64

004501F2   . 83CA 64                OR EDX,64
004501F5   > 83C2 64                ADD EDX,64
作者: 乱世枭雄    时间: 2008-10-25 15:24     标题: 回复 #13 godtype 的帖子

谢谢godtype 兄,我按照你给的方法已经修改好了,再次感谢你的热心解答!支持你!
作者: 飘渺的风    时间: 2008-10-28 02:25

没怎么看懂,- -!!
作者: 夕染血残    时间: 2008-11-4 22:54

学习了
作者: 乱世枭雄    时间: 2008-11-9 15:13

godtype 兄,我刚刚自己试改了下,但是好像不成功,不指点哪里没有弄好,这个是我改前备份的EXE,你能帮我改下吗,谢谢!

附件: Ekd5.rar (2008-11-9 15:13, 222.84 K) / 该附件被下载次数 136
http://xycq.org.cn/forum/attachment.php?aid=67546
作者: godtype    时间: 2008-11-9 18:32     标题: 回复 #17 乱世枭雄 的帖子

我会尽量抽时间帮你改。
作者: 乱世枭雄    时间: 2008-11-9 21:43     标题: 回复 #18 godtype 的帖子

非常感谢godtype 兄!麻烦你了。祝愿你的家人身体早日康复!

[ 本帖最后由 乱世枭雄 于 2008-11-9 21:51 编辑 ]
作者: godtype    时间: 2008-11-10 13:06     标题: 回复 #19 乱世枭雄 的帖子

收货了,测试一下,名字改了,自已改回去吧。

我将42011D函数整条搬到4D111D。

[ 本帖最后由 godtype 于 2008-11-17 08:11 编辑 ]
作者: 乱世枭雄    时间: 2008-11-10 18:38     标题: 回复 #20 godtype 的帖子

谢谢godtype 兄,我慢慢测试看看~千言万语说不尽,谢谢!
作者: 乱世枭雄    时间: 2008-11-10 19:55

DATA值 + DATA值 * X值 / 100 * (等级-1)
其中X值在405C96开始进行设置,从编号12-3E

godtype 兄,我设置了下好像没有效果,比如我想设置双股剑为辅助攻击力,初始值是20,data里也设置了20,然后在
00405C9C      FFC8          DEC EAX这个位置设置数值50,但是升级以后效果还是只加攻击力20,不知道是我设置错了还是怎么的?
作者: godtype    时间: 2008-11-10 21:12

重新下载,漏了一条指令。
作者: 乱世枭雄    时间: 2008-11-11 00:50



QUOTE:
原帖由 godtype 于 2008-11-10 21:12 发表
重新下载,漏了一条指令。

新的我已经下载并测试过了,有一个问题。就是前面列出来的那几种效果没有用,比如说蛇矛,不管是几级的都是传三个,方天不管几级都是奋战。。。只有升级后的效果,没有前面的效果,不属于那几大类里面的其他效果都可以按照设置随等级变化。可以再帮我看看吗?谢谢!
作者: 434902652    时间: 2008-11-11 11:06

这个引擎在哪里下
作者: 大明英烈    时间: 2008-11-11 14:17



QUOTE:
原帖由 godtype 于 2008-10-25 08:22 发表
借用老严的这一句话:

其实我是不会任何编程的,我只能够是看人家写好的教程,再慢慢自己研究。比如要我写一个新的武器特效我也不会,太深了,简单的修改还可以。

这两句话给我等小白无限动力。
作者: godtype    时间: 2008-11-11 14:33     标题: 回复 #24 乱世枭雄 的帖子

上传你的DATA,我自用的改得太多,不适合用在你的EXE中。
作者: 乱世枭雄    时间: 2008-11-11 18:15



QUOTE:
原帖由 godtype 于 2008-11-11 14:33 发表
上传你的DATA,我自用的改得太多,不适合用在你的EXE中。

好的,马上传~

附件: Data.rar (2008-11-11 18:15, 12.19 K) / 该附件被下载次数 122
http://xycq.org.cn/forum/attachment.php?aid=67607
作者: godtype    时间: 2008-11-11 22:58     标题: 回复 #28 乱世枭雄 的帖子

已经修好了,20楼重新下载吧。

顶楼也顺便更正了,有几个跳转用错了。
作者: godtype    时间: 2008-11-11 23:05

这是完整的42011D函数改成4D111D函数

004D111D   55               PUSH EBP
004D111E   8BEC             MOV EBP,ESP
004D1120   83EC 04          SUB ESP,4
004D1123   81E2 FF000000    AND EDX,0FF
004D1129   33C9             XOR ECX,ECX
004D112B   8A08             MOV CL,BYTE PTR DS:[EAX]
004D112D   8A40 FE          MOV AL,BYTE PTR DS:[EAX-2]
004D1130   3C 17            CMP AL,17
004D1132   75 06            JNZ SHORT 004D113A
004D1134   42               INC EDX
004D1135   0FAFCA           IMUL ECX,EDX
004D1138   EB 18            JMP SHORT 004D1152
004D113A   25 FF000000      AND EAX,0FF
004D113F   3C 2A            CMP AL,2A
004D1141   75 11            JNZ SHORT 004D1154
004D1143   3815 AE5C4000    CMP BYTE PTR DS:[405CAE],DL
004D1149   7F 72            JG SHORT 004D11BD
004D114B   80F9 06          CMP CL,6
004D114E   75 6D            JNZ SHORT 004D11BD
004D1150   B1 0C            MOV CL,0C
004D1152   EB 69            JMP SHORT 004D11BD
004D1154   3C 2B            CMP AL,2B
004D1156   75 11            JNZ SHORT 004D1169
004D1158   3815 AF5C4000    CMP BYTE PTR DS:[405CAF],DL
004D115E   7F 5D            JG SHORT 004D11BD
004D1160   80F9 04          CMP CL,4
004D1163   75 58            JNZ SHORT 004D11BD
004D1165   B1 07            MOV CL,7
004D1167   EB 54            JMP SHORT 004D11BD
004D1169   3C 2E            CMP AL,2E
004D116B   75 0A            JNZ SHORT 004D1177
004D116D   3815 B25C4000    CMP BYTE PTR DS:[405CB2],DL
004D1173   7F 48            JG SHORT 004D11BD
004D1175   EB 1A            JMP SHORT 004D1191
004D1177   3C 3A            CMP AL,3A
004D1179   75 0A            JNZ SHORT 004D1185
004D117B   3815 BE5C4000    CMP BYTE PTR DS:[405CBE],DL
004D1181   7F 3A            JG SHORT 004D11BD
004D1183   EB 0C            JMP SHORT 004D1191
004D1185   3C 3E            CMP AL,3E
004D1187   75 0B            JNZ SHORT 004D1194
004D1189   3815 C25C4000    CMP BYTE PTR DS:[405CC2],DL
004D118F   7F 2C            JG SHORT 004D11BD
004D1191   41               INC ECX
004D1192   EB 29            JMP SHORT 004D11BD
004D1194   83E8 12          SUB EAX,12
004D1197   8A80 965C4000    MOV AL,BYTE PTR DS:[EAX+405C96]
004D119D   3C 00            CMP AL,0
004D119F   74 1C            JE SHORT 004D11BD
004D11A1   4A               DEC EDX
004D11A2   0FAFC2           IMUL EAX,EDX
004D11A5   0FAFC1           IMUL EAX,ECX
004D11A8   33D2             XOR EDX,EDX
004D11AA   884D FC          MOV BYTE PTR SS:[EBP-4],CL
004D11AD   B1 64            MOV CL,64
004D11AF   F7F1             DIV ECX
004D11B1   25 FF000000      AND EAX,0FF
004D11B6   8A4D FC          MOV CL,BYTE PTR SS:[EBP-4]
004D11B9   03C1             ADD EAX,ECX
004D11BB   EB 02            JMP SHORT 004D11BF
004D11BD   8BC1             MOV EAX,ECX
004D11BF   8BE5             MOV ESP,EBP
004D11C1   5D               POP EBP
004D11C2   C3               RETN

另外以下四个地方也要改成这样:
00407B65  |. E8 B3950C00    |CALL 004D111D

00407CD3  |. E8 45940C00    |CALL 004D111D

00461EDD  |. E8 3BF20600    CALL 004D111D

00462193  |. E8 85EF0600    CALL 004D111D
(上面四个地方原来都是 CALL 0042011D)
作者: 乱世枭雄    时间: 2008-11-12 11:28     标题: 回复 #30 godtype 的帖子

再次谢谢godtype 兄,你辛苦了!我再去测试看看


PS:刚刚进游戏里测试了下,目前没有发现异常~没有你的热心帮助,我不可能设置出那么多属性,再次谢谢你!

[ 本帖最后由 乱世枭雄 于 2008-11-12 17:20 编辑 ]
作者: hacky1980    时间: 2008-11-18 15:15

这个修改了很有用




欢迎光临 轩辕春秋文化论坛 (http://xycq.org.cn/forum/) Powered by Discuz! 5.0.0