![Board logo](images/default/logo_bg.jpg)
标题: 宝物特效效果值按等级提升的修改 [打印本页]
作者:
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
原帖由 godtype 于 2008-10-24 17:13 发表
目前大多数MOD的引擎中,武器和防具类宝物在一定的等级时,其宝物特效的效果值会增加。尤其是STAR175的引擎,7级后大部分效果将变成原来(DATA值)的150%(个别特效除外),而到了10级的效果值则会变成一个固定 ...
这些最早用于岳飞传,STAR175的引擎是一样的,岳飞传中的辅助精神力和破甲攻击在武器中也可以按等级变化提升
作者:
乱世枭雄 时间: 2008-10-24 18:27
一下子还看不懂,慢慢研究下,谢谢楼主!辛苦了!
作者:
leo003 时间: 2008-10-24 19:39
刘兄是不是玩编程的,好强啊![](images/smilies/em08.gif)
作者:
飞龙在世 时间: 2008-10-24 19:52
话说寻找空地址对来我说是最麻烦的。
请问LZ是怎么找的
作者:
冰麒麟 时间: 2008-10-25 01:03
好复杂,如果想睇得明,真要恶补编程才行~~放弃~~
作者:
godtype 时间: 2008-10-25 08:22
借用老严的这一句话:
原帖由 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,不知道是我设置错了还是怎么的?![](images/smilies/doubt.gif)
作者:
godtype 时间: 2008-11-10 21:12
重新下载,漏了一条指令。
作者:
乱世枭雄 时间: 2008-11-11 00:50
原帖由 godtype 于 2008-11-10 21:12 发表
重新下载,漏了一条指令。
新的我已经下载并测试过了,有一个问题。就是前面列出来的那几种效果没有用,比如说蛇矛,不管是几级的都是传三个,方天不管几级都是奋战。。。只有升级后的效果,没有前面的效果,不属于那几大类里面的其他效果都可以按照设置随等级变化。可以再帮我看看吗?谢谢!![](images/smilies/em05.gif)
作者:
434902652 时间: 2008-11-11 11:06
这个引擎在哪里下
作者:
大明英烈 时间: 2008-11-11 14:17
原帖由 godtype 于 2008-10-25 08:22 发表
借用老严的这一句话:
其实我是不会任何编程的,我只能够是看人家写好的教程,再慢慢自己研究。比如要我写一个新的武器特效我也不会,太深了,简单的修改还可以。
这两句话给我等小白无限动力。
作者:
godtype 时间: 2008-11-11 14:33 标题: 回复 #24 乱世枭雄 的帖子
上传你的DATA,我自用的改得太多,不适合用在你的EXE中。
作者:
乱世枭雄 时间: 2008-11-11 18:15
原帖由 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 |