性别:未知-离线 漫漫苦短

Rank: 1
组别 百姓
级别 在野武将
功绩 0
帖子 42
编号 545816
注册 2023-12-25


发表于 2025-2-12 19:39 资料 短消息 只看该作者
回复 #58 神雕小侠 的帖子

2.3.剧情部分把张合改成张郃用UE编辑器改SNRxM.R3就行,搜BIG5码B1 69 A6 58(张合),改为B1 69 AD A8(张郃)。非剧情对话在IPPAN0M.R3,搜C3 BF AE 63(藩宮)就能找到这句话。这两个文件应该都是没用LS11压缩的,如果是压缩的我就没办法了。

1.这个图在HEXZCHR.R3里,目前只有人物代码只有0000(劉備)0004(呂布)和0008(曹操)有特殊形象,其他都是按照兵种来的,我想到的解决方法:曹操小号骑赤兔(曹奉先,让呂布骑狗去)!

seg002:7455 56                             push    si
seg002:7456 9A 6C 93 F2 2C                 call    sub_3628C            ;获取部队兵种代码
seg002:745B 88 46 FF                       mov     [bp+var_1], al       ;兵种代码保存在var_1
...
seg002:7467 6A 02                          push    2
seg002:7469 56                             push    si
seg002:746A 9A BC 40 F2 2C                 call    sub_30FDC            ;混乱返回1
seg002:746F 0B C0                          or      ax, ax               ;判断部队是否混乱
seg002:7471 75 3A                          jnz     short loc_343CD
seg002:7473 39 04                          cmp     [si], ax             ;判断是不是0000劉備
seg002:7475 75 0A                          jnz     short loc_343A1
seg002:7477 56                             push    si
seg002:7478 9A 6C 93 F2 2C                 call    sub_3628C            ;又取了一次兵种代码,不是保存在var_1了吗?
seg002:747D 04 26                          add     al, 26h              ;劉備使用26(短兵)27(长兵)28(战车)
seg002:747F EB 3B                          jmp     short loc_343DC
seg002:7481                loc_343A1:                              ; CODE XREF: sub_3436C+29↑j
seg002:7481 83 3C 04                       cmp     word ptr [si], 4     ;判断是不是0004呂布
seg002:7484 75 06                          jnz     short loc_343AC
seg002:7486 C6 46 FB 2D                    mov     [bp+var_5], 2Dh      ;呂布使用2D
seg002:748A EB 33                          jmp     short loc_343DF
seg002:748C                loc_343AC:                              ; CODE XREF: sub_3436C+38↑j
seg002:748C 83 3C 08                       cmp     word ptr [si], 8     ;判断是不是0008曹操
seg002:748F 75 06                          jnz     short loc_343B7
seg002:7491 C6 46 FB 2E                    mov     [bp+var_5], 2Eh      ;曹操使用2E
seg002:7495 EB 28                          jmp     short loc_343DF
seg002:7497                loc_343B7:                              ; CODE XREF: sub_3436C+43↑j
seg002:7497 56                             push    si
seg002:7498 9A F6 40 F2 2C                 call    sub_31016
seg002:749D 3D 01 00                       cmp     ax, 1
seg002:74A0 1A C0                          sbb     al, al
seg002:74A2 F6 D8                          neg     al
seg002:74A4 8A 4E FF                       mov     cl, [bp+var_1]
seg002:74A7 02 C9                          add     cl, cl
seg002:74A9 02 C1                          add     al, cl
seg002:74AB EB 0F                          jmp     short loc_343DC      ;普通部队使用0-25
seg002:74AD                loc_343CD:                              ; CODE XREF: sub_3436C+25↑j
seg002:74AD 56                             push    si
seg002:74AE 9A F6 40 F2 2C                 call    sub_31016
seg002:74B3 3D 01 00                       cmp     ax, 1
seg002:74B6 1A C0                          sbb     al, al
seg002:74B8 24 01                          and     al, 1
seg002:74BA 04 2B                          add     al, 2Bh              ;混乱部队使用2B, 2C
seg002:74BC                loc_343DC:                              ; CODE XREF: sub_3436C+33↑j sub_3436C+5F↑j
seg002:74BC 88 46 FB                       mov     [bp+var_5], al
seg002:74BF 68 1C 09                       push    offset aBHexzchrR3   ; "B:HEXZCHR.R3"
seg002:74C2 8D 86 72 FE                    lea     ax, [bp+var_18E]
seg002:74C6 50                             push    ax
seg002:74C7 9A D6 1F F6 1C                 call    sub_1EF36            ;打开HEXZCHR.R3文件

另外把刘备兵种变非步兵系程序会出错(强行变不是用道具)应该不是形象的问题,我用likelove的dosbox内存修改工具把seg002:747E改成了29h,可以正常显示放火(29)放水(2A)和混乱,并且可以正常移动,因为那就是一张贴图。


顶部
性别:男-离线 神雕小侠

Rank: 3Rank: 3Rank: 3
组别 士兵
级别 忠义校尉
功绩 2
帖子 240
编号 44352
注册 2005-7-27


发表于 2025-2-12 21:07 资料 短消息 只看该作者
回复 #59 likelove 的帖子

非常感谢兄台的解答,我大概能看懂,不过工作量还是蛮大的,看来还是能有个编辑器更好呀


顶部
性别:男-离线 神雕小侠

Rank: 3Rank: 3Rank: 3
组别 士兵
级别 忠义校尉
功绩 2
帖子 240
编号 44352
注册 2005-7-27


发表于 2025-2-12 21:10 资料 短消息 只看该作者


QUOTE:
原帖由 翡翠衾寒 于 2025-2-12 14:18 发表
加油加油!!

十二年前我尝试用龙吟大大的编辑器改了一点点剧本,没想到今天突然想上论坛来看一眼,竟然有志同道合的人

想请教下LZ用的是龙吟在2012年3月发布的那个编辑器嘛?后来龙吟有发布更新的编辑器嘛?

三个问题确实都 ...

是的我就是用的这个版本的编辑器,测试出来有一些bug,不过结合UltraEdit也可以解决大多数的问题,至于编辑器后来有没有更新就不清楚了
顶部
性别:未知-离线 likelove

Rank: 2Rank: 2
组别 百姓
级别 破贼校尉
功绩 1
帖子 52
编号 56074
注册 2005-12-27


发表于 2025-2-12 22:07 资料 短消息 只看该作者
解压的部分R3文件


附件: r3unpack.zip (2025-2-12 22:07, 533.84 K)
该附件被下载次数 29
顶部
性别:男-离线 神雕小侠

Rank: 3Rank: 3Rank: 3
组别 士兵
级别 忠义校尉
功绩 2
帖子 240
编号 44352
注册 2005-7-27


发表于 2025-2-12 23:24 资料 短消息 只看该作者


QUOTE:
原帖由 漫漫苦短 于 2025-2-12 19:39 发表
2.3.剧情部分把张合改成张郃用UE编辑器改SNRxM.R3就行,搜BIG5码B1 69 A6 58(张合),改为B1 69 AD A8(张郃)。非剧情对话在IPPAN0M.R3,搜C3 BF AE 63(藩宮)就能找到这句话。这两个文件应该都是没用LS11压缩的,如果是压缩的 ...

感谢兄台指点,经过测试已经修正张郃的bug;

对于特殊形象的问题我是这样考虑的,原版游戏中吕布的关卡并不太多,也不太难,因此我打算参照原著增加有吕布的关卡数量和难度,他的特殊形象还是有保留价值;

对于曹操小号的问题,我曾经设想只用曹操的大号,一开始仅装备青釭剑和吴子兵法,后期通过相关指令再给他配备上玉玺、倚天剑和孟德新书,但未能成功,貌似游戏中获得道具的指令都仅限于刘备本人,张飞的三尖刀和赵云的青釭剑也只能通过单挑得到,好像再无其他途径了,不知道有没有更好的办法解决

用小号只能显示普通的骑兵形象,这个问题倒也不是不能接受,主要是我太追求完美(chui mao qiu ci)了
顶部
性别:男-离线 翡翠衾寒

Rank: 1
组别 百姓
级别 在野武将
功绩 0
帖子 14
编号 476498
注册 2013-1-20


发表于 2025-2-13 01:32 资料 短消息 只看该作者
IPPAN0M.R3应该是没有编辑器的,如果直接修改对话是不是可能会产生偏移问题?
顶部
性别:男-离线 神雕小侠

Rank: 3Rank: 3Rank: 3
组别 士兵
级别 忠义校尉
功绩 2
帖子 240
编号 44352
注册 2005-7-27


发表于 2025-2-13 20:20 资料 短消息 只看该作者


QUOTE:
原帖由 翡翠衾寒 于 2025-2-13 01:32 发表
IPPAN0M.R3应该是没有编辑器的,如果直接修改对话是不是可能会产生偏移问题?

昨晚用UltraEdit测试了一下,直接修改big5码就可以解决的,偏移倒不是啥问题,只要修改之后的字数不增加就没有影响

[ 本帖最后由 神雕小侠 于 2025-2-13 21:11 编辑 ]
顶部
性别:男-离线 神雕小侠

Rank: 3Rank: 3Rank: 3
组别 士兵
级别 忠义校尉
功绩 2
帖子 240
编号 44352
注册 2005-7-27


发表于 2025-2-13 21:19 资料 短消息 只看该作者
借热度继续请问:

我想修改道具屋的对白,还有我方武将撤退时的“遗言”(如图),但文字好像并不保存在IPPAN0M里面,请问应该如何修改?

[ 本帖最后由 神雕小侠 于 2025-2-13 21:20 编辑 ]


图片附件: 商人.png (2025-2-13 21:19, 88.53 K)



图片附件: 撤退.png (2025-2-13 21:19, 98.74 K)

顶部
性别:未知-离线 likelove

Rank: 2Rank: 2
组别 百姓
级别 破贼校尉
功绩 1
帖子 52
编号 56074
注册 2005-12-27


发表于 2025-2-14 22:15 资料 短消息 只看该作者
道具屋的对话要改exe

我方战场撤退对话在hexgrp中,由sub_23B4E调用。

“全軍,撤退!
兄長,我對不起您…….
大哥,對不起,沒想到會被……”
顶部
性别:男-离线 神雕小侠

Rank: 3Rank: 3Rank: 3
组别 士兵
级别 忠义校尉
功绩 2
帖子 240
编号 44352
注册 2005-7-27


发表于 2025-2-15 23:40 资料 短消息 只看该作者


QUOTE:
原帖由 likelove 于 2025-2-14 22:15 发表
道具屋的对话要改exe

我方战场撤退对话在hexgrp中,由sub_23B4E调用。

“全軍,撤退!
兄長,我對不起您…….
大哥,對不起,沒想到會被……”

感谢,道具屋的对话我已经在exe中找到并成功修改,但撤退对话在hexgrp中一个都没有查到
顶部
性别:未知-离线 likelove

Rank: 2Rank: 2
组别 百姓
级别 破贼校尉
功绩 1
帖子 52
编号 56074
注册 2005-12-27


发表于 2025-2-20 23:56 资料 短消息 只看该作者


QUOTE:
原帖由 神雕小侠 于 2025-2-15 23:40 发表



感谢,道具屋的对话我已经在exe中找到并成功修改,但撤退对话在hexgrp中一个都没有查到

上面有解压版R3文件
顶部
性别:未知-离线 漫漫苦短

Rank: 1
组别 百姓
级别 在野武将
功绩 0
帖子 42
编号 545816
注册 2023-12-25


发表于 2025-2-22 20:20 资料 短消息 只看该作者
回复 #71 likelove 的帖子

可以修改解压版R3文件,但是还要再压缩回去才能适配main.exe,不然main.exe读取不了修改后的数据,我现在没有找到这种LS11解压缩工具,设计与修改中的都是其他游戏的,而且也不知道在main.exe或那些com文件中有没有压缩成LS11文件的代码,你是用什么工具进行修改的
顶部
性别:未知-离线 likelove

Rank: 2Rank: 2
组别 百姓
级别 破贼校尉
功绩 1
帖子 52
编号 56074
注册 2005-12-27


发表于 2025-2-22 23:32 资料 短消息 只看该作者
ls的解压本坛有工具,但压缩的没有。github上也能搜到解压的代码

又看了一下主程序代码和他人的文档,可以使用解压后的文件,需要对r3文件作拼接和修改。

读取资源、解压缩在这里

seg001:2080                ; 从文件读资源
seg001:2080                ; Attributes: bp-based frame
seg001:2080
seg001:2080                ; int __stdcall __far s_ReadFileByIndex(int handle, int buff, int seg, int index)
seg001:2080                s_ReadFileByIndex proc far              ; CODE XREF: sub_10F74+30P
seg001:2080                                                        ; sub_111D8+44P ...

ls文件由10字节(以下均为16进制)文件头,100字节压缩字典,压缩节表C * N,分节的压缩数据构成

压缩节表在110这个位置,每个节由C字节构成,最后以2字节00收尾

每节表的信息:

seg001:20B8 8D 86 F8 FB                    lea     ax, [bp+var_408] ; 之前猜测有误,这个是压缩的节表
seg001:20B8                                                        ; 每节信息是数组变量,长度C,存读出来的数据
seg001:20B8                                                        ; 前4个为压缩后长度,如0000 20e4表示压缩后长度20e4
seg001:20B8                                                        ; 中4个为压缩前长度,如0000 3900,表示压缩前长度3900
seg001:20B8                                                        ; 后4个为资源偏移,如0000 0138表示从文件0138处解压
seg001:20BC 16                             push    ss              ; seg
seg001:20BD 50                             push    ax              ; buff
seg001:20BE 6A 0C                          push    0Ch             ; bytestoRead
seg001:20C0 FF 76 06                       push    [bp+handle]     ; handle
seg001:20C3 9A D4 4F F6 0C                 call    s_ReadFile_1

主程序是写死的,默认就是ls文件,所以解压后的他不认

seg001:219A 8B 46 FC                       mov     ax, [bp+var_4_beforpacked]
seg001:219D 8B 56 FE                       mov     dx, [bp+var_2]
seg001:21A0 39 46 F8                       cmp     [bp+var_8_afterpacked], ax
seg001:21A3 75 16                          jnz     short l_F11B_need_unpack
seg001:21A5 39 56 FA                       cmp     [bp+var_6], dx
seg001:21A8 75 11                          jnz     short l_F11B_need_unpack
seg001:21AA FF 76 0A                       push    [bp+seg]        ; seg
seg001:21AD FF 76 08                       push    [bp+buff]       ; buff
seg001:21B0 50                             push    ax              ; bytestoRead
seg001:21B1 FF 76 06                       push    [bp+handle]     ; handle
seg001:21B4 9A D4 4F F6 0C                 call    s_ReadFile_1
seg001:21B9 EB 0F                          jmp     short loc_F12A
seg001:21BB                ; ---------------------------------------------------------------------------
seg001:21BB
seg001:21BB                l_F11B_need_unpack:                     ; CODE XREF: s_ReadFileByIndex+123j
seg001:21BB                                                        ; s_ReadFileByIndex+128j
seg001:21BB FF 76 0A                       push    [bp+seg]
seg001:21BE FF 76 08                       push    [bp+buff]
seg001:21C1 50                             push    ax              ; length
seg001:21C2 FF 76 06                       push    [bp+handle]
seg001:21C5 9A 08 20 F6 0C                 call    s_EF68_unpack?

21A0处有比较,看节表中压缩后、压缩前数据是否相等,不等则去解压,相等则直接读。

既然是写死的,只能拼接文件了
R3文件解压缩后,原始R3文件节表之后的数据全部删除(最后一项0000之后),然后把解压后的数据拼过来。这时要改几个数据,把每一项节表的压缩后数据都改为压缩前,使21A0处比较相等,再把偏移改成解压后的
比如hexgrp原始节表

before                after                off

20e4                3900                0138
02a5                032f                221c
027d                04d2                24c1

改成

before                after                off

3900                3900                0138
032f                032f                3a38
04d2                04d2                3d67

附上修改后的hexgrp,测试是可用的。


附件: HEXGRP.unpacked.zip (2025-2-22 23:32, 7.98 K)
该附件被下载次数 24
顶部
性别:未知-离线 likelove

Rank: 2Rank: 2
组别 百姓
级别 破贼校尉
功绩 1
帖子 52
编号 56074
注册 2005-12-27


发表于 2025-2-23 00:01 资料 短消息 只看该作者
end1grp等不能解压的原因也找到了,节表的数据存储方式变了

main读取节表信息是比较古老的,高位的word放在前,低位word放在后,是大端模式,所以可以看到逐字节拼出来

可能是end1grp等换了程序员,是正常的小端,低地址在前。
顶部
性别:未知-离线 likelove

Rank: 2Rank: 2
组别 百姓
级别 破贼校尉
功绩 1
帖子 52
编号 56074
注册 2005-12-27


发表于 2025-2-27 22:07 资料 短消息 只看该作者
部分解压过的R3文件可用了。可直接替换原始文件。


附件: unpacked.r3.zip (2025-2-27 22:07, 407.71 K)
该附件被下载次数 12
顶部
性别:男-离线 神雕小侠

Rank: 3Rank: 3Rank: 3
组别 士兵
级别 忠义校尉
功绩 2
帖子 240
编号 44352
注册 2005-7-27


发表于 2025-3-21 23:42 资料 短消息 只看该作者


QUOTE:
原帖由 likelove 于 2025-2-27 22:07 发表
部分解压过的R3文件可用了。可直接替换原始文件。

感谢兄弟提供的文件,经过测试效果不错!
顶部
性别:男-离线 神雕小侠

Rank: 3Rank: 3Rank: 3
组别 士兵
级别 忠义校尉
功绩 2
帖子 240
编号 44352
注册 2005-7-27


发表于 2025-3-23 01:29 资料 短消息 只看该作者
第一章界桥之战更新完成

对敌我双方阵容做了一些修订,每个城市里的NPC对话也做了大量修改,感谢大家支持!
顶部
性别:男-离线 神雕小侠

Rank: 3Rank: 3Rank: 3
组别 士兵
级别 忠义校尉
功绩 2
帖子 240
编号 44352
注册 2005-7-27


发表于 2025-3-24 12:06 资料 短消息 只看该作者
这里还有一个小小的遗憾,张郃字“儁乂”,但不论在GB2312码还是BIG5码中都没有“儁”字,因此这里只得用“俊乂”,如果哪位兄弟有更好的解决办法还请多多指教!
顶部
性别:男-离线 翡翠衾寒

Rank: 1
组别 百姓
级别 在野武将
功绩 0
帖子 14
编号 476498
注册 2013-1-20


发表于 2025-4-1 14:13 资料 短消息 只看该作者
请问楼主 荥阳之战是怎么用现有的这些编辑工具增加进去的?

这是一张用其他地图改出来的战场图,还是一张全新的图?
顶部
性别:男-离线 神雕小侠

Rank: 3Rank: 3Rank: 3
组别 士兵
级别 忠义校尉
功绩 2
帖子 240
编号 44352
注册 2005-7-27


发表于 2025-4-1 17:21 资料 短消息 只看该作者
回复 #79 翡翠衾寒 的帖子

我用的是龙吟的编辑器,地图是修改的,暂时尚未找到新增地图的办法
顶部

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




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

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

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