2012-2-14 14:08
砖家叫兽
STAR进来看看
之前尝试过 导入纵坐标超过40的地图 没有弹出
但是小地图显示不正常,超过40部分空白
研究一下发现 问题出在SMLMAP这个小地图文件
因而构思 让小地图与大地图自动匹配,即不再借助文件 而缩放生成
测试文件 地址
[url]http://115.com/file/e7sqsr6x#[/url]
测试(1).rar
[attach]119013[/attach]
[attach]119009[/attach]
覆盖新引擎游戏后即可测试
[color=Silver][[i] 本帖最后由 砖家叫兽 于 2012-2-19 03:35 编辑 [/i]][/color]
2012-2-14 14:11
砖家叫兽
地图已经改BMP 格式 可以直接在相应地图中涂画
4DD400 地图支持BMP格式处理
4DD640 小地图与大地图匹配处理
调用了相同函数
用OD 搜索 CALL 4DDXXX 即可找到切入点
所调用函数都在区间内 在移植的时候进行整段的二进制复制即可
现 ,欠缺调色板的计算,否则可以直接从BMP图像获取调色板
欠缺HEXMAP文件字符化处理,否则不再需要地形编辑器来进行导入,可以直接在TXT里头写
另 本人正尝试对攻击范围图像进行处理。
由于范围的算法改变,有255种组合结果,因此不可能再利用现成图片导入
因此本人找到相应地址,希望通过 “计算” 的方式 呈现出攻击范围图像
[color=Silver][[i] 本帖最后由 砖家叫兽 于 2012-2-14 14:25 编辑 [/i]][/color]
2012-2-14 14:43
砖家叫兽
另外 关于扩充人物信息一事
CCZ一直以来有个地址的计算
IMUL ECX,48
ADD ECX,XX
最初的48 的确是有局限性的
首先是五围扩充 从单字节变双字节,占用了姓名的位置
然后 SP S形象 的添加 都利用了额外的地址
甚至 到本人所制作 一关结束后我方人物 血量 内力要保存到下一关 又额外占用了很多空间
以及很早之前有人提到经验扩充的问题 比方 升一级 经验= (等级+1)*50
即1级100 2级150 3级200 ……
都因为单字节限制而……
所以 能不能 干脆 变成 IMUL ECX,60 IMUL ECX,70
或者 变回 512 DATA 而 IMUL ECX,90
人数不是问题,修改了存档后,姓名也可以保存 512其实可以反复使用
比方这一个R场景叫 练武场 下一个叫 宫殿 通过剧本更名
(实际上 更名也有实用性,比方 铁木真 在一定时候改名 成吉思汗)
因为出战只有115人 因此在可以自由修改信息的前提下 1024与512 并无太大区别 相反 扩充后 名字段 能力值 都可以突破很多限制
甚至 必杀 隐藏属性……等的空间都出来了
[color=Silver][[i] 本帖最后由 砖家叫兽 于 2012-2-14 14:46 编辑 [/i]][/color]
2012-2-14 16:19
砖家叫兽
[size=5][color=Purple]首楼更新引擎[/color][/size]
覆盖测试补丁中
修改段
0044D834 |. 90 NOP
0044D835 |. 90 NOP
0044D836 |. 90 NOP
0044D837 |. 90 NOP
0044D838 |. 90 NOP
0044D839 |. E8 C2FB0800 CALL Ekd5.004DD400
0044D83E |. 90 NOP
0044D83F |. 90 NOP
0044D300 |. E8 FB000900 CALL Ekd5.004DD400
0044D305 |. 90 NOP
0044D306 |. 90 NOP
0044D307 |. 90 NOP
0044D308 |. 90 NOP
0044D309 |. /EB 06 JMP SHORT Ekd5.0044D311
0044D30B |> |FF85 D8FEFFFF /INC DWORD PTR SS:[EBP-128]
0044D34B |>^\EB BE \JMP SHORT Ekd5.0044D30B
0044ABC5 |> \90 NOP
0044ABC6 |. 90 NOP
……
0044ABD3 |. 90 NOP
0044ABD4 |. 90 NOP
0044ABD5 |. 6A 04 PUSH 4 ; /Arg3 = 00000004
0044ABD7 |. 6A 00 PUSH 0 ; |Arg2 = 00000000
0044ABD9 |. 6A 00 PUSH 0 ; |Arg1 = 00000000
0044ABDB |. B9 10074B00 MOV ECX,Ekd5.004B0710 ; |
0044ABE0 |. E8 5B4E0300 CALL Ekd5.0047FA40 ; \Ekd5.0047FA40
0044ABE5 |. 50 PUSH EAX
0044ABE6 |. B9 58754B00 MOV ECX,Ekd5.004B7558
0044ABEB |. 8B41 20 MOV EAX,DWORD PTR DS:[ECX+20]
0044ABEE |. 50 PUSH EAX
0044ABEF |. E8 4C2A0900 CALL Ekd5.004DD640
0044ABF4 |. 90 NOP
0044ABF5 |. 90 NOP
0044ABF6 |. 90 NOP
……
0044AC17 |. 90 NOP
0044AC18 |. 90 NOP
添加段
004DD400 60 PUSHAD
004DD401 B9 58754B00 MOV ECX,Ekd5.004B7558
004DD406 8B41 20 MOV EAX,DWORD PTR DS:[ECX+20]
……
004DD6C8 61 POPAD
004DD6C9 8BE5 MOV ESP,EBP
004DD6CB 5D POP EBP
004DD6CC C3 RETN
二进制复制
60 B9 58 75 4B 00 8B 41 20 BA 36 04 00 00 80 3C 10 00 74 08 8A 0C 10 88 08 40 EB F2 8B 1D 2C 42
4B 00 0F B6 FB 6B FF 30 80 38 00 74 06 C6 00 00 40 EB F5 B9 58 75 4B 00 E8 13 00 00 00 61 C3 CC
CC CC CC CC CC CC CC CC CC CC CC CC CC CC CC CC 55 8B EC 81 EC 00 20 00 00 51 56 57 53 8B 71 20
8D 7C 24 10 33 D2 8B 1C 24 6A 30 E8 50 00 00 00 3A 54 24 01 73 18 68 00 09 00 00 E8 20 00 00 00
6A 30 53 50 8B CF E8 75 00 00 00 42 EB D8 5B 5F 5E 59 8B E5 5D C3 CC CC CC CC CC CC CC CC CC CC
55 8B EC 6A 00 60 0F B6 C2 0F B6 D3 0F AF C2 0F AF 45 08 03 C6 89 45 FC 61 58 8B E5 5D C2 04 00
55 8B EC 60 55 8B 6D 08 0F B6 D3 33 DB 3B DA 73 1E 8B CF 33 F6 3B F5 73 11 8B C3 0F AF C5 03 C6
66 89 01 03 CA 03 CA 46 EB EB 47 47 43 EB DE 5D 61 8B E5 5D C2 04 00 CC CC CC CC CC CC CC CC CC
55 8B EC 51 60 0F B6 5D 0C 8B 45 10 0F AF D8 33 FF 3B FB 73 1F 8B F7 46 3B F3 73 15 8B 45 10 50
8B 45 08 50 56 57 8B 4D FC E8 12 00 00 00 46 EB E7 47 EB DD 61 8B E5 5D C2 0C 00 CC CC CC CC CC
55 8B EC 51 53 56 57 8B 5D 14 8B 75 10 8B F9 8B 55 0C 8B 4D 08 8B 04 4F 66 3B 04 57 72 29 8B 04
4F C1 E0 10 66 8B 04 57 66 89 04 4F C1 E8 10 66 89 04 57 0F AF CB 0F AF D3 8D 0C 31 8D 14 32 51
52 53 E8 09 00 00 00 5F 5E 5B 8B E5 5D C2 10 00 55 8B EC 53 8B 4D 10 8B 55 0C 33 DB 3B 5D 08 73
0F 8A 24 19 8A 04 1A 88 24 1A 88 04 19 43 EB EC 5B 8B E5 5D C2 0C 00 CC CC CC CC CC CC CC CC CC
55 8B EC 8B C1 80 38 0A 76 03 40 EB F8 C7 00 2E 42 4D 50 C6 40 04 00 51 68 64 92 4D 00 6A 1C E8
7C 61 FF FF 8B E5 5D C3 CC CC CC CC CC CC CC CC 55 8B EC 60 54 8B CC 8B 45 10 50 E8 BB BA F3 FF
85 C0 74 1C 8B 45 0C 50 8B 45 08 50 8D 4C 24 08 E8 ED BA F3 FF 85 C0 74 07 8B CC E8 A5 BC F3 FF
58 61 8B E5 5D C3 CC CC CC CC CC CC CC CC CC CC CC CC CC CC CC CC CC CC CC CC CC CC CC CC CC CC
55 8B EC 56 8B 4D 0C 8B 55 08 33 F6 83 FE 06 73 10 80 3A 00 74 13 8A 02 88 01 83 C2 08 41 46 EB
EB 81 C2 50 01 00 00 EB E1 8B 75 0C E8 0F 00 00 00 5E 8B E5 5D C2 08 00 CC CC CC CC CC CC CC CC
55 8B EC A1 2C 42 4B 00 50 81 EC 00 20 00 00 60 8D 7C 24 20 33 D2 0F B6 45 FC 50 B3 06 E8 1E FE
FF FF 3A 55 FD 73 21 0F B6 45 FC 6B C0 06 50 E8 EC FD FF FF 6A 06 8B 0D 2C 42 4B 00 51 50 8B CF
E8 3B FE FF FF 42 EB CE 61 8B E5 5D C3
对于上述三个改动处没有进行过修改的引擎均适用
[color=Silver][[i] 本帖最后由 砖家叫兽 于 2012-2-14 16:35 编辑 [/i]][/color]
2012-2-14 22:10
WHITESHIP
相当复杂,至少以我的思维不会用到上述功能,不过仍然认同你的革新,毕竟都是一种学习。
PS:4L的NOP会不会太多了……
2012-2-14 23:23
star175
使用超过40的地图会有问题,即便是40*40的地图,一旦鼠标移到地图的下部边缘就会退出,这个bug其实原版就有了.
现在的小地图是在生成大地图时同时生成并以文件的形式保存,你的方法则是在加载大地图时通过计算即时生成,个人觉得不是很有必要
扩充人物信息
这个的确是可以改进的地方,但是现在来做这个工作,难度不小,因为一开始就没有规划好,以前改exe通常都是想到什么就改了,其实现在回过头来看,一些新增的人物数据都被零散的放在各处,如果要归拢到一起,工作量实在太大.几乎等于重新来过
2012-2-15 20:32
砖家叫兽
整个思路的关键在于统一
攻击范围 有图片对应
战场地图 有小地图对应
这种人工对应的方式如果能够交给引擎自动匹配,有些不必要的文件可以省去
同样的比方策略,策略的种类(杀HP 杀MP 增减能力)以及释放条件(地形 天气等)都有各自的分支 其实是可以考虑如何来统一的
40*40大地图,大小是3.6M,因为空间只有390000H ,约3.7M,基本上是到了极限。如果能扩充这个空间的话,至少能够容纳下更大的地图,不至于空间装不下。
小地图与大地图匹配,算法其实与编辑器是一样的,只不过移到了引擎里头,不再需要小地图的文件。
现在我开始尝试利用计算涂色的方法来构造攻击范围小图片,希望攻击范围能够统一,而不再依赖于图片
[color=Silver][[i] 本帖最后由 砖家叫兽 于 2012-2-15 20:49 编辑 [/i]][/color]
2012-2-15 20:34
砖家叫兽
[quote]原帖由 [i]WHITESHIP[/i] 于 2012-2-14 22:10 发表
相当复杂,至少以我的思维不会用到上述功能,不过仍然认同你的革新,毕竟都是一种学习。
PS:4L的NOP会不会太多了…… [/quote]
主要是废掉了延时,因此我的引擎在测试的时候基本上显示关卡名就是一闪而过,地图计算造成的延时反而更明显
然后更关键一点 ,废掉了读取文件 SMLMAP 段落,因为CCZ有个特点,少了文件直接报错弹出。所以索性废掉相应段落,不再需要这个文件。
[color=Silver][[i] 本帖最后由 砖家叫兽 于 2012-2-15 20:42 编辑 [/i]][/color]
页:
[1]
Powered by Discuz! Archiver 5.0.0
© 2001-2006 Comsenz Inc.