标题: 宝物特效效果值按等级提升的修改
性别:男-离线 godtype
(毅)

刘国公
广南东路经略使
枢密直学士
★★★★★★★★★★★★
★★★

Rank: 24Rank: 24Rank: 24
柱国(正二品) 轩辕春秋年度最佳(轩辕工作室)
组别 经略使
级别 卫将军
好贴 1
功绩 1314
帖子 6207
编号 111321
注册 2007-2-18
来自 我家
家族 轩辕学院


发表于 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 编辑 ]

本帖最近评分记录
yanguodong 2008-10-24 18:18 +100 好帖奖励


顶部
性别:男-离线 godtype
(毅)

刘国公
广南东路经略使
枢密直学士
★★★★★★★★★★★★
★★★

Rank: 24Rank: 24Rank: 24
柱国(正二品) 轩辕春秋年度最佳(轩辕工作室)
组别 经略使
级别 卫将军
好贴 1
功绩 1314
帖子 6207
编号 111321
注册 2007-2-18
来自 我家
家族 轩辕学院


发表于 2008-10-25 08:22 资料 个人空间 短消息 看全部作者
借用老严的这一句话:

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

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

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


顶部
性别:男-离线 godtype
(毅)

刘国公
广南东路经略使
枢密直学士
★★★★★★★★★★★★
★★★

Rank: 24Rank: 24Rank: 24
柱国(正二品) 轩辕春秋年度最佳(轩辕工作室)
组别 经略使
级别 卫将军
好贴 1
功绩 1314
帖子 6207
编号 111321
注册 2007-2-18
来自 我家
家族 轩辕学院


发表于 2008-10-25 08:38 资料 个人空间 短消息 看全部作者
回复 #6 飞龙在世 的帖子

如果是用STAR的引擎,在4D****这一段用Ctrl+B来查找N个00就可以了,有足够的00就可以。如果其他的引擎没有足够的空间,就用Stud_PE扩容吧。
顶部
性别:男-离线 godtype
(毅)

刘国公
广南东路经略使
枢密直学士
★★★★★★★★★★★★
★★★

Rank: 24Rank: 24Rank: 24
柱国(正二品) 轩辕春秋年度最佳(轩辕工作室)
组别 经略使
级别 卫将军
好贴 1
功绩 1314
帖子 6207
编号 111321
注册 2007-2-18
来自 我家
家族 轩辕学院


发表于 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
顶部
性别:男-离线 godtype
(毅)

刘国公
广南东路经略使
枢密直学士
★★★★★★★★★★★★
★★★

Rank: 24Rank: 24Rank: 24
柱国(正二品) 轩辕春秋年度最佳(轩辕工作室)
组别 经略使
级别 卫将军
好贴 1
功绩 1314
帖子 6207
编号 111321
注册 2007-2-18
来自 我家
家族 轩辕学院


发表于 2008-11-9 18:32 资料 个人空间 短消息 看全部作者
回复 #17 乱世枭雄 的帖子

我会尽量抽时间帮你改。
顶部
性别:男-离线 godtype
(毅)

刘国公
广南东路经略使
枢密直学士
★★★★★★★★★★★★
★★★

Rank: 24Rank: 24Rank: 24
柱国(正二品) 轩辕春秋年度最佳(轩辕工作室)
组别 经略使
级别 卫将军
好贴 1
功绩 1314
帖子 6207
编号 111321
注册 2007-2-18
来自 我家
家族 轩辕学院


发表于 2008-11-10 13:06 资料 个人空间 短消息 看全部作者
回复 #19 乱世枭雄 的帖子

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

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

[ 本帖最后由 godtype 于 2008-11-17 08:11 编辑 ]
顶部
性别:男-离线 godtype
(毅)

刘国公
广南东路经略使
枢密直学士
★★★★★★★★★★★★
★★★

Rank: 24Rank: 24Rank: 24
柱国(正二品) 轩辕春秋年度最佳(轩辕工作室)
组别 经略使
级别 卫将军
好贴 1
功绩 1314
帖子 6207
编号 111321
注册 2007-2-18
来自 我家
家族 轩辕学院


发表于 2008-11-10 21:12 资料 个人空间 短消息 看全部作者
重新下载,漏了一条指令。
顶部
性别:男-离线 godtype
(毅)

刘国公
广南东路经略使
枢密直学士
★★★★★★★★★★★★
★★★

Rank: 24Rank: 24Rank: 24
柱国(正二品) 轩辕春秋年度最佳(轩辕工作室)
组别 经略使
级别 卫将军
好贴 1
功绩 1314
帖子 6207
编号 111321
注册 2007-2-18
来自 我家
家族 轩辕学院


发表于 2008-11-11 14:33 资料 个人空间 短消息 看全部作者
回复 #24 乱世枭雄 的帖子

上传你的DATA,我自用的改得太多,不适合用在你的EXE中。
顶部
性别:男-离线 godtype
(毅)

刘国公
广南东路经略使
枢密直学士
★★★★★★★★★★★★
★★★

Rank: 24Rank: 24Rank: 24
柱国(正二品) 轩辕春秋年度最佳(轩辕工作室)
组别 经略使
级别 卫将军
好贴 1
功绩 1314
帖子 6207
编号 111321
注册 2007-2-18
来自 我家
家族 轩辕学院


发表于 2008-11-11 22:58 资料 个人空间 短消息 看全部作者
回复 #28 乱世枭雄 的帖子

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

顶楼也顺便更正了,有几个跳转用错了。
顶部
性别:男-离线 godtype
(毅)

刘国公
广南东路经略使
枢密直学士
★★★★★★★★★★★★
★★★

Rank: 24Rank: 24Rank: 24
柱国(正二品) 轩辕春秋年度最佳(轩辕工作室)
组别 经略使
级别 卫将军
好贴 1
功绩 1314
帖子 6207
编号 111321
注册 2007-2-18
来自 我家
家族 轩辕学院


发表于 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)
顶部

正在浏览此帖的会员 - 共 1 人在线




当前时区 GMT+8, 现在时间是 2025-8-17 23:05
京ICP备2023018092号 轩辕春秋 2003-2023 www.xycq.org.cn

Powered by Discuz! 5.0.0 2001-2006 Comsenz Inc.
Processed in 0.013143 second(s), 10 queries , Gzip enabled

清除 Cookies - 联系我们 - 轩辕春秋 - Archiver - WAP