从游戏硬编码到erm分析英雄特长的来源
本帖最后由 khdfkj 于 2016-3-2 21:55 编辑今天跟大家全面讨论一下死亡阴影、WOG及封神MOD的所有关于特长的问题,包括硬编码、erm、特长文字描述,特长图标。
我相信英雄无敌3里每一位英雄都是有各自特色的,而特长是每位英雄的重要组成部分,亦是灵魂。
什么是英雄无敌3的特长呢?
特长由三个部分组成:
[*]英雄特长效应产生的程序代码。(特长的灵魂)
[*]特长的图标。(特长的外表)
[*]特长的文字描述。(自我介绍)
一、英雄特长效应产生的程序代码。
有2种方法可以对特长的实际效应进行设定。
1、硬编码对特长进行初次设定。
我在之前的帖子里介绍过使用硬编码修改英雄第一特的问题。我引用过来:
用软件WinHex打开游戏主目录下“h3era.exe”,第00278420h行,从此行开始,每40个字节,也就是两行半记录一个英雄的特长,英雄排列顺序、技能编号,英雄编号,魔法编号,生物编号等的数据请使用“EasyERM脚本简易编写 V1.0.1”特长编辑选项卡内查看,后面数据记录特长的具体信息。
种类有(1) 00 00 00 00 ------ 第二技能特长,接下来四个字节就是技能的序号了如欧灵同学是 00 00 00 00 01 00 00 00 技能中排行老二的是箭术,所以就是箭术特长如果改为 00 00 00 00 02 00 00 00 就是后勤特长了,当然你得带有后勤技能或者是升级后升出了后勤技能才是有用的如果改为 00 00 00 00 16 00 00 00 就是进攻特长了,16换算成十进制就是22寻路术 00 箭术 01 后勤术 02侦察术03 外交术04 航海术05
领导术06 智慧术07 神秘术08
幸运术09 弹道术0a 鹰眼术0b
招魂术0c 理财术0D 火系魔法0E
气系魔法0F 水系魔法10 土系魔法11
学术12 战术13 炮术14
学习能力15 进攻术16 防御术17
智力18 魔力19 抵抗力1A 急救术1B(2) 01 00 00 00 -------- 一般生物特长,接下来的四个字节就是生物的序号如威尔斯凯 是 01 00 00 00 02 00 00 00 特长射手,改成 01 00 00 00 0C 00 00 00 就是特长天使了(3) 02 00 00 00 06 00 00 00-------- 资源特长(黄金)。(4) 03 00 00 00 ---------魔法特长,后面接下来四个字节是魔法序号如阿德拉mm是 03 00 00 00 29 00 00 00 特长41号魔法祝福,改成03 00 00 00 30 00 00 00 (5) 04 00 00 00 ---------特殊生物特长,就是猛兵特长,一级就给生物加一大堆攻防的那种,数据结构如下04 00 00 00 XX 00 00 00AA 00 00 00 BB 00 00 00 CC 00 00 00 00 00 00 0000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00XX是生物序号,AA加攻指数,BB加防指数,CC加伤害指数如果嫌塔丽丝mm不够猛,那就把她改成04 00 00 00 0A 00 00 00FF 00 00 00 FF 00 00 00 FF 00 00 00 00 00 00 0000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00于是一个在一级时就给骑士加255攻,255防,255伤害的骑神诞生了.......(5) 05 00 00 00 ----------速度特长,姆拉克同学是05 00 00 00 02 00 00 00 (6) 06 00 00 00 ---------升级特长,原来gelu同学的特长现在滥用了,数据结构如下:06 00 00 00 XX 00 00 0000 00 00 00 00 00 00 00 00 00 00 00 YY 00 00 00ZZ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00XX是第一种生物,YY是第二种生物,ZZ是升级后的生物。觉得天使太少么,那就改成06 00 00 00 00 00 00 0000 00 00 00 00 00 00 00 00 00 00 00 02 00 00 000D 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 如果你有足够的资源,就可以使劲的往枪兵和射手背上插翅膀了,有话说得好:会飞的不一定是天使,也有可能是鸟人。(7)07 00 00 00 ---------- 龙特长,对所有龙都有效。数据结构如下:07 00 00 00 00 00 00 00AA 00 00 00 BB 00 00 00 CC 00 00 00 00 00 00 0000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
2、erm脚本对特长进行二次设定。使用erm编辑器 封神文件夹下date文件夹下s文件夹下“41 wog - rebalanced factions” 英雄的第一特长进行了二次设定,当然还有对特长的图标、英雄初始技能及初始魔法的再平衡 在这我把所有156位英雄的特长补充完毕。原因我后边会解释一下。 关于第二特长的问题,参与第二特的erm文件,包括:28 wog - enhanced mons ters.erm;39 wog - hero specialization boost.erm;41 wog - rebalanced factions;98 wog - Hawaiing007_Hooker.erm
比较复杂,后面我会举例说一下。二、特长的图标
在游戏里,有2处涉及特长图标。一.在选择初始英雄界面,右键点击英雄图标,会弹出该英雄的特长图标及简短描述。请使用MMArchive、def制作工具。 这时出现的图标读取的文件是:封神文件夹下date文件夹下Nabi_sprite.pac文件内UN44.def文件。文件内图片顺序对应英雄顺序排列。封神MOD下,很多英雄这个图标都是错误的。索萨、塔里斯、库斯伯特等等。为了解决这个问题,我把UN44.def文件里的图片进行了修正,让所有图标都跟英雄特长对应起来。而对UN44.def文件的修改会对进入游戏,英雄界面特长图标的显示产生影响。所以我对“41 wog - rebalanced factions.erm”156位英雄的特长补充。以纠正这个问题。二.在进入游戏,英雄界面里会看到。1、在关闭所有erm的情况下,用软件WinHex对“h3era.exe”第一特长进行设定后,游戏程序会根据“硬代码”自动读取相应的特长图标。2、在开启41 wog - rebalanced factions.erm的情况下,对英雄第一特长的进行二次设定后,程序会根据erm文本代码,自动读取相应的特长图标。三、特长的文字描述。一.在选择初始英雄界面,右键点击英雄图标,会弹出该英雄的特长简短描述。请使用MMArchive这简短描述读取的文件是“ERA中文界面”文件夹下“date”文件夹下“Language And Skin For Chinese.pac”文件内“HeroSpec.txt”。这个部分我也修改了,根据封神的特长对文本内容进行了修改,是描述与实际特长相对应。二.在进入游戏,英雄界面里会看到。使用erm编辑器这里特长描述的内容读取,封神文件夹下date文件夹下s文件夹下“39 wog - hero specialization boost.ert”文本内容
在这里反映一下封神mod里关于特长的几个问题:
1、在选择初始英雄界面,右键点击英雄图标,会弹出该英雄的特长图标及简短描述。这里很多英雄都是错误的。索萨、塔里斯、库斯伯特等等。
2、孟菲拉4个特长。顺便给大家分享一下英雄第二特长的来源。
塔里斯的战术特长被孟菲拉抢走了。来自“41 wog - rebalanced factions.erm”
孟菲拉的防御术+箭术特长。来自“39 wog - hero specialization boost.erm”
孟菲拉的隐藏特长——活力圣瓶。来自“98 wog - Hawaiing007_Hooker.erm”
3、艾德里德的特长我没有找到如文本描述的“霹雳寒冰”证据。我认为还是“寒冰魔环”。这个问题还有待于与各位大神交流一下。
文件下载地址http://pan.baidu.com/s/1jGSjm2U
文件下载后覆盖原文件,可部分修正上述问题。
经过修正后,封神MOD的特长部分基本完美了。有问题欢迎积极反映一下。
楼主的硬编码知识还是很扎实的.
话说现在<EasyERM脚本简易编写 V1.0.1>只能当图案索引参照了;sl;
在ERA的框架下,修改硬编码可以直接用ERM的UN:C命令,只要在游戏初始化(!?PI)和读档(!?GM0)中设置修改内存数据就OK了.
!!UN:C地址/字节位/数据; 本帖最后由 khdfkj 于 2016-1-31 11:30 编辑
贤知有您 发表于 2016-1-31 09:20
楼主的硬编码知识还是很扎实的.
话说现在只能当图案索引参照了
各位mod作者都在抱怨要用最小的内存写出最多的功能。内存就30MB,41 wog - rebalanced factions.erm也不是一个内存也不占,erm脚本也不是可以无限制写下去的,写的越多内存占用的越多。硬编码修改H3era.exe可一个内存都不多占用。可以用省出来的内存写别的脚本实现更多功能。
封神mod的41 wog - rebalanced factions.erm的编写也不是一点问题没有。孟菲特特长图标是“战术”就是最直观的反映。
修改UN44后英雄特长图标排列错乱的问题也是源于erm脚本。包括官方的erm脚本。
EasyERM脚本简易编写 V1.0.1我只是用来找编号用的,是否正确都需要在游戏进行验证。
受教了,谢谢分享;exp; 硬编码再么发现要改动的内容?比如我要把开始游戏时,指定ai都选随机宝物,怎么实现? 楼主不妨分享一下兵种技能和攻击防御的硬编码修改吧;kl;
页:
[1]