标题: 在武将资料对话框中增加显示项
性别:男-离线 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 编辑 ]


顶部
性别:未知-离线 司徒苍月
(kagami☆sama)

越国公
荆南节度使
枢密直学士

Rank: 22Rank: 22Rank: 22Rank: 22
柱国(正二品)
组别 节度使
级别 大将军
好贴 7
功绩 2823
帖子 28883
编号 52341
注册 2005-11-2
来自 创界山
家族 司徒实业


发表于 2010-10-14 12:33 资料 主页 个人空间 短消息 只看该作者
这段文本的长度限制是?


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

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

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


发表于 2010-10-14 12:39 资料 个人空间 短消息 只看该作者
是指显示出来的名称长度?我在引擎的设置是16个字节,即最多七个半汉字。
顶部
性别:男-离线 513633522
(小越)

Rank: 7Rank: 7Rank: 7Rank: 7
组别 校尉
级别 右将军
功绩 12
帖子 1179
编号 349592
注册 2009-12-6
家族 轩辕狼党


发表于 2010-10-14 15:55 资料 文集 短消息 只看该作者
终于又有教程了
占位再看
顶部
性别:男-离线 513633522
(小越)

Rank: 7Rank: 7Rank: 7Rank: 7
组别 校尉
级别 右将军
功绩 12
帖子 1179
编号 349592
注册 2009-12-6
家族 轩辕狼党


发表于 2010-10-14 16:00 资料 文集 短消息 只看该作者
哇哇哇,这可是好东西啊!!我自己弄了很久没弄出来,胡乱改了很多……都不起作用……

保存慢慢看


图片附件: 11.png (2010-10-14 16:00, 23.14 K)

顶部
性别:男-离线 狂煞∑小星
(Myth阿杨)

Rank: 5Rank: 5
组别 士兵
级别 破虏将军
功绩 7
帖子 720
编号 308223
注册 2009-1-29
家族 轩辕学院


发表于 2010-10-14 20:32 资料 个人空间 短消息 只看该作者 QQ
毅大,太感动了,一直以来苦恼我的问题终于解决了,顶一个!能再请毅大解答下如何扩充更多兵种吗?
顶部
性别:男-离线 513633522
(小越)

Rank: 7Rank: 7Rank: 7Rank: 7
组别 校尉
级别 右将军
功绩 12
帖子 1179
编号 349592
注册 2009-12-6
家族 轩辕狼党


发表于 2010-10-14 20:40 资料 文集 短消息 只看该作者
回复 #6 狂煞∑小星 的帖子

兵种……我也等着看看
顶部
性别:男-离线 狂煞∑小星
(Myth阿杨)

Rank: 5Rank: 5
组别 士兵
级别 破虏将军
功绩 7
帖子 720
编号 308223
注册 2009-1-29
家族 轩辕学院


发表于 2010-10-14 22:12 资料 个人空间 短消息 只看该作者 QQ
求毅大教下star175的5.6引擎改在哪里加上特效名称(UE)。
顶部
性别:男-离线 狂煞∑小星
(Myth阿杨)

Rank: 5Rank: 5
组别 士兵
级别 破虏将军
功绩 7
帖子 720
编号 308223
注册 2009-1-29
家族 轩辕学院


发表于 2010-10-14 22:23 资料 个人空间 短消息 只看该作者 QQ
按照您的最终版EXE的UE地址把特性复制上去了,但是游戏里显示不出来。
顶部
性别:男-离线 godtype
(毅)

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

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


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

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

Rank: 7Rank: 7Rank: 7Rank: 7
组别 校尉
级别 右将军
功绩 12
帖子 1179
编号 349592
注册 2009-12-6
家族 轩辕狼党


发表于 2010-10-15 10:45 资料 文集 短消息 只看该作者


QUOTE:
3、0050E000是全武将的特技按编号顺序存放的内存起点,因为每个武将的特技占用两个字节,所以在前面加上SHL EAX,1来乘以2。

其他的都看懂了 ,就这个不懂,0050E000 这个位置上的内容具体是什么,应该还有其他地方使用到吧,能告诉我其他位置的使用吗?

好作为参考
顶部
性别:男-离线 godtype
(毅)

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

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


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

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

Rank: 7Rank: 7Rank: 7Rank: 7
组别 校尉
级别 右将军
功绩 12
帖子 1179
编号 349592
注册 2009-12-6
家族 轩辕狼党


发表于 2010-10-15 16:57 资料 文集 短消息 只看该作者
回复 #12 godtype 的帖子

我自己找了……就找到一处……

00407016  |.  05 00E05000     ADD EAX,Ekd5.0050E000   
顶部
性别:男-离线 狂煞∑小星
(Myth阿杨)

Rank: 5Rank: 5
组别 士兵
级别 破虏将军
功绩 7
帖子 720
编号 308223
注册 2009-1-29
家族 轩辕学院


发表于 2010-10-15 18:31 资料 个人空间 短消息 只看该作者 QQ
这个可以扩充到显示1024人的特技吗?
顶部
性别:男-离线 godtype
(毅)

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

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


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

会看代码会看注解的都会知道。
顶部
性别:男-离线 狂煞∑小星
(Myth阿杨)

Rank: 5Rank: 5
组别 士兵
级别 破虏将军
功绩 7
帖子 720
编号 308223
注册 2009-1-29
家族 轩辕学院


发表于 2010-10-15 19:52 资料 个人空间 短消息 只看该作者 QQ
可俺毕竟只是一个96年的小同学,现在初三学习紧,学习编程和OD的详细知识是不行了,只好请求毅大的帮助。
顶部
性别:男-离线 狂煞∑小星
(Myth阿杨)

Rank: 5Rank: 5
组别 士兵
级别 破虏将军
功绩 7
帖子 720
编号 308223
注册 2009-1-29
家族 轩辕学院


发表于 2010-10-15 19:58 资料 个人空间 短消息 只看该作者 QQ
此外还想再问下毅大,您说的UE和地址互相转换,什么地方有帖子啊,我搞不懂。
顶部
性别:男-离线 狂煞∑小星
(Myth阿杨)

Rank: 5Rank: 5
组别 士兵
级别 破虏将军
功绩 7
帖子 720
编号 308223
注册 2009-1-29
家族 轩辕学院


发表于 2010-10-15 22:05 资料 个人空间 短消息 只看该作者 QQ
毅大啊,为什么我在UE对照了OD的地址添加了特技名称后,EXE的大小加大了2K,而且还运行不了了...汗,175的5.6版引擎。
顶部
性别:男-离线 godtype
(毅)

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

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


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

Rank: 5Rank: 5
组别 士兵
级别 破虏将军
功绩 7
帖子 720
编号 308223
注册 2009-1-29
家族 轩辕学院


发表于 2010-10-15 23:08 资料 个人空间 短消息 只看该作者 QQ
哦,谢谢毅大哈。还是想烧饼地问下,如何扩充到1024的特技,我想把star175大大的5.6引擎的兵种必杀通过您的教程方式给表现出来。

[ 本帖最后由 狂煞∑小星 于 2010-10-15 23:23 编辑 ]
顶部
性别:男-离线 狂煞∑小星
(Myth阿杨)

Rank: 5Rank: 5
组别 士兵
级别 破虏将军
功绩 7
帖子 720
编号 308223
注册 2009-1-29
家族 轩辕学院


发表于 2010-10-15 23:49 资料 个人空间 短消息 只看该作者 QQ
那如果像蛇夫座的那个自创武将的话,职业一变更,必杀就变了,该怎么弄?才能显示一致?
顶部
性别:男-离线 狂煞∑小星
(Myth阿杨)

Rank: 5Rank: 5
组别 士兵
级别 破虏将军
功绩 7
帖子 720
编号 308223
注册 2009-1-29
家族 轩辕学院


发表于 2010-10-16 00:28 资料 个人空间 短消息 只看该作者 QQ
汗,还是不行啊,用Stud_PE查找了UE的OD地址,将特性代码填入了4E5400极其后面的位置,可还是无法显示,不知道是不是代码出了问题,发上来,请毅大看下,175的引擎怎么就这么难搞捏?
00419A5B   > 8B4D 90       MOV ECX,DWORD PTR SS:[EBP-70]           
00419A5E   . E8 9DFAFEFF   CALL 00409500            
           
00419A63   . 83C4 04       ADD ESP,4
00419A66   . D1E0          SHL EAX,1
00419A68   . 33D2          XOR EDX,EDX
00419A6A   . 8A90 00E05000 MOV DL,BYTE PTR DS:[EAX+50E000]
00419A70   . 3E:8B0C95 005>MOV ECX,DWORD PTR DS:[EDX*4+4E5000]
00419A78   . 51            PUSH ECX                                 
00419A79   . 68 4C040000   PUSH 44C                                 
00419A7E   . FF75 08       PUSH DWORD PTR SS:[EBP+8]               
00419A81   . FF15 DC624800 CALL DWORD PTR DS:[<&USER32.GetDlgItem>]
00419A87   . 50            PUSH EAX                                 
00419A88   . FF15 60634800 CALL DWORD PTR DS:[<&USER32.SetWindowTextA>]
00419A8E   . 8B4D 90       MOV ECX,DWORD PTR SS:[EBP-70]
00419A91   . 33D2          XOR EDX,EDX
00419A93   . E9 A4ED0500   JMP 0047883C

  上面那两段红色代码是引用了您的:
“这3行可以直接用
  MOV ECX, PUSH DWORD PTR SS:[EBP-70]
   CALL 00409500
来代替,同样输出武将编号到EAX中。”
顶部
性别:男-离线 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帮你改。
顶部
性别:男-离线 狂煞∑小星
(Myth阿杨)

Rank: 5Rank: 5
组别 士兵
级别 破虏将军
功绩 7
帖子 720
编号 308223
注册 2009-1-29
家族 轩辕学院


发表于 2010-10-16 18:43 资料 个人空间 短消息 只看该作者 QQ
明白了,那么毅大,在您的刘毅传中的自由转职系统又是如何弄得?
顶部
性别:男-离线 狂煞∑小星
(Myth阿杨)

Rank: 5Rank: 5
组别 士兵
级别 破虏将军
功绩 7
帖子 720
编号 308223
注册 2009-1-29
家族 轩辕学院


发表于 2010-10-16 18:48 资料 个人空间 短消息 只看该作者 QQ
顺便再问下,S引擎和您的引擎都是从004E5400开始写特效名称吗?
顶部
性别:未知-离线 夏侯操

Rank: 2Rank: 2
组别 百姓
级别 破贼校尉
功绩 1
帖子 66
编号 380568
注册 2010-6-7


发表于 2010-10-17 12:19 资料 短消息 只看该作者
像请教毅大两个问题
一个是宝物特效的代码,在攻击前自动霸气应该怎么做?
还有一个是剧本指令,我想和孔明传一样可以去各个场所,但我不知道如何进行场景的切换,能否通过现有指令进行,或者制作新的指令?
我用的是最终5.0引擎
顶部
性别:未知-离线 《苍狼白鹿传》

Rank: 4
组别 士兵
级别 牙门将军
功绩 6
帖子 571
编号 321756
注册 2009-5-10


发表于 2010-10-18 17:37 资料 短消息 只看该作者 QQ


QUOTE:
原帖由 夏侯操 于 2010-10-17 12:19 发表
像请教毅大两个问题
一个是宝物特效的代码,在攻击前自动霸气应该怎么做?
还有一个是剧本指令,我想和孔明传一样可以去各个场所,但我不知道如何进行场景的切换,能否通过现有指令进行,或者制作新的指令?
...

这个是剧本的事吧,关引擎鸟事
顶部
性别:男-离线 513633522
(小越)

Rank: 7Rank: 7Rank: 7Rank: 7
组别 校尉
级别 右将军
功绩 12
帖子 1179
编号 349592
注册 2009-12-6
家族 轩辕狼党


发表于 2010-10-27 18:18 资料 文集 短消息 只看该作者
1、在原曹操传引擎中怎么改啊!!  比如我加入了无限引导的兵种  加入兵种特效的对话框显示项!!让有兵种特效的显示无限引导!!
2、可不可以直接指定某个武将显示 特有的内容,比如让 夏侯惇和夏侯渊的组合技显示框(增加显示框)中显示 兄弟同宗  
(组合技我用剧本弄出来)

[ 本帖最后由 513633522 于 2010-10-27 19:40 编辑 ]
顶部
性别:男-离线 513633522
(小越)

Rank: 7Rank: 7Rank: 7Rank: 7
组别 校尉
级别 右将军
功绩 12
帖子 1179
编号 349592
注册 2009-12-6
家族 轩辕狼党


发表于 2010-10-27 20:32 资料 文集 短消息 只看该作者
我在毅大的4.0的基础上改了组合技(组合技我打算用剧本写),没成功,改动的位置有



00409233   . /EB 5E           JMP SHORT Ekd511.00409293



00409293   > \C1E0 02         SHL EAX,2
00409296   .  83F8 00         CMP EAX,0   (我是想判断是不是0号武将,这个我不会,求方法!!
00409299   .  75 1D           JNZ SHORT Ekd511.004092B8
0040929B   .  68 D4934000     PUSH Ekd511.004093D4                           ; /Text = "兄弟同宗悙悙悙悙悙悙悙悙悙怳嬱冹塎鴭E鴭M??婨兝塃婱鴭U?圓婱兞塎荅?
显示太多了……(怎样设置显示的字节数!!求方法
004092A0   .  68 40060000     PUSH 640                                       ; |/ControlID = 640 (1600.)
004092A5   .  FF75 08         PUSH DWORD PTR SS:[EBP+8]                      ; ||hWnd
004092A8   .  FF15 DC624800   CALL DWORD PTR DS:[<&USER32.GetDlgItem>]       ; |\GetDlgItem
004092AE   .  50              PUSH EAX                                       ; |hWnd
004092AF   .  FF15 60634800   CALL DWORD PTR DS:[<&USER32.SetWindowTextA>]   ; \SetWindowTextA
004092B5   .  8B4D 90         MOV ECX,DWORD PTR SS:[EBP-70]
004092B8   >  D1E0            SHL EAX,1
004092BA   .^ E9 76FFFFFF     JMP Ekd511.00409235

下面一段时:“兄弟同宗”四个字
004093D4      D0              DB D0
004093D5      D6              DB D6
004093D6      B5              DB B5
004093D7      DC              DB DC
004093D8      CD              DB CD
004093D9      AC              DB AC
004093DA      D7              DB D7
004093DB      DA              DB DA



不仅显示太多了,每个武将都显示同样的内容

[ 本帖最后由 513633522 于 2010-10-27 20:35 编辑 ]


图片附件: 1.png (2010-10-27 20:33, 2.25 K)

顶部
性别:男-离线 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"


顶部

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




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

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

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