标题: 在武将资料对话框中增加显示项
性别:男-离线 godtype
(毅)

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

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


发表于 2010-10-14 10:11 资料 个人空间 短消息 看全部作者
在武将资料对话框中增加显示项

本文使用的参考引擎为我的最终版,方法相对较简单,复杂的请自行学习或参考其他引擎修改。
注:在解释部分非代码的带有“H”在后面的数字,则表示该数字为16进制,否则为10进制。地址类全部在前面加上“00”。

首先用Resource Hacker在武将情报对话框(编号166)中如下图添加红色的两行:

可以通过复制其他相同类型的到最下面再修改,注意不要搞错。
其中“特效”字样是会在游戏中显示出来的,而“AAA”字样在游戏会显示出对应武将的特技名称,当然需要改代码。
AAA后面的ID:1100是随意选择的,只要跟本对话框中其他的ID不同就可以了。
其他的长宽高位置等自行调整到合适的,然后编译脚本,保存,退出。

接着修改代码。
原代码:
00478837  |> 8B4D 90           MOV ECX,DWORD PTR SS:[EBP-70]
0047883A  |. 33D2              XOR EDX,EDX

新代码:
00478837   >^E9 EC09F9FF       JMP 00409228

00409228   > FF75 90           PUSH DWORD PTR SS:[EBP-70]
0040922B   . E8 4D2C0000       CALL 0040BE7D
00409230   . 83C4 04           ADD ESP,4
00409233   . D1E0              SHL EAX,1
00409235   . 33D2              XOR EDX,EDX
00409237   . 8A90 00E05000     MOV DL,BYTE PTR DS:[EAX+50E000]
0040923D   . 8B0C95 00504E00   MOV ECX,DWORD PTR DS:[EDX*4+4E5000]
00409244   . 51                PUSH ECX
00409245   . 68 4C040000       PUSH 44C
0040924A   . FF75 08           PUSH DWORD PTR SS:[EBP+8]
0040924D   . FF15 DC624800     CALL DWORD PTR DS:[<&USER32.GetDlgItem>]   == call dword ptr ds:[4862dc]
00409253   . 50                PUSH EAX
00409254   . FF15 60634800     CALL DWORD PTR DS:[<&USER32.SetWindowTextA>] == call dword ptr ds:[486360]
0040925A   . 8B4D 90           MOV ECX,DWORD PTR SS:[EBP-70]
0040925D   . 33D2              XOR EDX,EDX
0040925F   . E9 D8F50600       JMP 0047883C

1、00409228开始的位置要自选空白位置。
2、[EBP-70]是武将的DATA内存地址,CALL 0040BE7D是从武将的DATA内存地址中输出武将编号到EAX中,而
  PUSH DWORD PTR SS:[EBP-70]
  CALL 0040BE7D
  ADD ESP,4
这3行可以直接用
  MOV ECX, DWORD PTR SS:[EBP-70]
  CALL 00409500
来代替,同样输出武将编号到EAX中。
3、0050E000是全武将的特技按编号顺序存放的内存起点,因为每个武将的特技占用两个字节,所以在前面加上SHL EAX,1来乘以2。
4、写特技名称。004E5000是全特技名称的指向开始,在这个地方开始要自行加上每一个特技的名称的跳转,每个占用4字节,然后根据每个跳转,在对应的位置添加名称,例如004E5000开始的代码是 00 54 4E 00 / 10 54 4E 00 / 20 54 4E 00 / 30 54 4E 00,那第0个特技名称就在004E5400的位置写,第1个特技名称就在004E5410的位置写……注意004E5000到004E5400之间的大小要由你的全部名称的多少来决定,当然我这里是预留多一点的,我的特技上限为255。
5、PUSH 44C就是前面所说的“AAA”的ID号。
6、注意CALL DWORD PTR DS:[***]不能照复制,要用后面红色部分。


举例:
11号武将的特技编号是16,那么系统的计算步骤为:
1、计算0BH*2+50E000H=50E016H
2、从0050E016这个地址中读出单字节数值10H
3、计算10H*4+4E5000H=4E5040H
4、从004E5040这个地址中读出四字节数值00 4E 55 00
5、跳到004E5500这个地址,将这里所显示的文字显示出来

以上内容仅供参考,不同的引擎请自行研究。

[ 本帖最后由 godtype 于 2011-4-17 09:43 编辑 ]


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

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

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


发表于 2010-10-14 12:39 资料 个人空间 短消息 看全部作者
是指显示出来的名称长度?我在引擎的设置是16个字节,即最多七个半汉字。


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

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

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


发表于 2010-10-15 07:40 资料 个人空间 短消息 看全部作者
回复 #9 狂煞∑小星 的帖子

你还是好好去看一下UE地址和OB地址的转换再来改吧。
顶部
性别:男-离线 godtype
(毅)

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

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


发表于 2010-10-15 11:11 资料 个人空间 短消息 看全部作者
回复 #11 513633522 的帖子

自己查找一下在哪些地方调用过就知道了。
顶部
性别:男-离线 godtype
(毅)

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

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


发表于 2010-10-15 18:52 资料 个人空间 短消息 看全部作者
回复 #14 狂煞∑小星 的帖子

会看代码会看注解的都会知道。
顶部
性别:男-离线 godtype
(毅)

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

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


发表于 2010-10-15 22:38 资料 个人空间 短消息 看全部作者
所有的名称都要手动打上去或者用粘贴并覆盖,直接粘贴会增大EXE而出错,而且S引擎要自己找位置改,不能照搬我的。
顶部
性别:男-离线 godtype
(毅)

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

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


发表于 2010-10-16 08:56 资料 个人空间 短消息 看全部作者
回复 #22 狂煞∑小星 的帖子

用了CALL 409500,下面的ADD ESP,4就不需要了。而且S引擎有很多地方是不能够乱用的,所以你要么自己研究,要么找STAR帮你改。
顶部
性别:男-离线 godtype
(毅)

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

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


发表于 2010-10-27 21:24 资料 个人空间 短消息 看全部作者
00409293   > \C1E0 02         SHL EAX,2
你的这行删去,直接接后面的代码,然后
004092B8   >  D1E0            SHL EAX,1
这行的前面添上
CALL 409500

还有下面写完文字之后的4093DC要改为"00"
顶部
性别:男-离线 godtype
(毅)

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

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


发表于 2011-4-17 09:44 资料 个人空间 短消息 看全部作者
回复 #31 513633522 的帖子

是,要去掉。
顶部

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




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

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

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