英雄无敌Ⅲ之游戏修改器DIY

从接触英雄无敌Ⅲ至今也有好几年的时间了,差不多也算是这款游戏的铁杆粉丝了。

相信heroes3自带的pdf文档看过的人不多吧。
但是我相信存在必定有它存在的理由,所以我从头到尾看了一遍。

以下是我从中摘取的片断,感觉还是很有用的。

一. 兵种数量范围对照:

Few 1-4 几个
Several 5-9 一些
Pack 10-19 一群
Lots 20-49 许多
Horde 50-99 很多
Throng 100-249 大群
Swarm 250-499 大量
Zounds 500-999 大批
Legion 1000 无数

二.兵种速度对照:

Very Slow 3
Extra Slow 4
Slow 5
Swift 6
Very Swift 6
Extra Swift 7
Very Swift 8
Ultra Swift 9
Super Swift 10
Quick 11
Ultra Quick 11
Extra Quick 12
Very Quick 13
Ultra Quick 14
Super Quick 15
Fast 16
Extra Fast 17
Very Fast 18

三. 城镇地形对照:

Castle Grass
Rampart Grass
Tower Snow
Inferno Lava
Mecroplis Dirt
Dungeon Subterranean
Stronghold Rough
Fortress Swamp

四. 每轮作战造成的伤害计算公式:

设攻击方的攻击力为a1,防守方的防御力为d2
当a1-d2>0时
伤害为 damage×number×(1 5%~400% )
其中5%~400%表示a1-d2为1的时候为5%,以后每加一点增加5%,最大可增至400%
当a1-d2<0时
伤害为 damage×number×(1- 2%~30% )
其中2%~30%表示d2-a1为1的时候25%,以后每加一点增加2%,最大可增至30%
游戏修改器的基本工作原理
所谓游戏修改器,主要是通过修改游戏程序的内存数据或存盘文件来修改游戏中的相关数据,使之达到“无敌”等效果。
游戏修改器主要分为两类:单一游戏的修改器和通用游戏修改器。前者只能修改特定的游戏,我接下来要写的就是只针对英雄无敌Ⅲ这款游戏的;而后者则可以修改大多数的游戏,比较著名的有金山游侠、FPE等。

如何访问游戏程序的内存
当我们的修改器运行于Windows时,首先遇到的问题便是如何访问游戏的内存。

一. 首先,在访问游戏的内存前我们还必须获得游戏进程的句柄:
这可以通过ToolHelp函数获取系统中当前运行的所有进程的列表和各进程的ID,经由用户选择之后通过OpenProcess函数来获取游戏进程的句柄。
若您的修改器运行于后台,而前台是游戏的话,也可以使用GetForegroundWindow函数获取游戏窗口的HWND,再使用GetWindowThreadProcessId转换成游戏进程的ID,再使用OpenProcess函数获取游戏进程的句柄。
二. 修改游戏内存:
有了游戏进程的句柄之后,便可以使用Windows提供的ReadProcessMemory和WriteProcessMemory这两个API来读写游戏的内存了。
现在步入正题:

1.准备好FPE或金山游侠,UltraEdit(没有就算了)
2.为方便调试,在窗口模式中运行英雄无敌:
在windows的显示设置中将颜色改为16位色。打开英雄无敌,按F4将英雄无敌切换成窗口模式。


在金山游侠中输入英雄的经验值进行搜索,搜索到不止一条记录,这就对了。
切换回游戏,等英雄的经验值改变后再切换到金山游侠,输入新的经验值,接着搜索,直到只剩下一条记录为止。

查看内存地址,显示如下所示的数据

   CD CD CD CD CD CD 07 00 05 00 00 00 01 07 E8 05
   00 CD 62 00 00 00 01 CD CD CD 00 00 00 00 0A 00
   57 00 00 00 00 00 00 00 00 C9 AF BF CB CC D8 00
   00 00 00 00 00 00 0A 00 00 00 57 FF FF FF FF FF
   FF FF FF CD CD 00 00 CD CD CD FF FF FF 02 02 5E
   06 00 00 5E 06 00 00 13 04 00 00 02 00 00 00 00
   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

第六行正中间的 13 04就是该英雄的经验值

第一行
07 00 05 00 代表该英雄在地图上的坐标,接下来的 00 00 01 07 也是坐标值
第二行
结尾处的 0A 00 是英雄当前的可用魔法值
第三行
57代表该英雄的特长 C9 AF BF CB CC D8 00 00 00 00 00 00 是该英雄的名字,名字前面的 00 代表该英雄的颜色。
第四行
0A代表该英雄的类别 ,接下来的 57 是该英雄的头像
第五行
第一个 02 代表英雄朝向(00~07分别代表8个方向)
第六行
13 04 该英雄的经验值,接下来的 02 是该英雄的等级
继续~

在金山游侠中输入英雄的第一格生物的数量,进行第一次搜索,修改之后再进行第二次搜索,找到地址显示数据如下:

   FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
   FF FF FF 21 00 00 00 22 00 00 00 00 00 00 00 00
   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
   00 00 02 00 00 01 00 00 00 00 00 00 00 00 00 00
   00 00 00 00 00 00 00 00 00 00 00 00 00 00 02 00
   00 01 00 00 00 00 00 02 00 00 00 00 00 00 00 CD
   CD CD CD 00 FF FF FF FF FF FF FF FF FF FF FF FF
   00 00 00 CD CD CD CD 01 00 00 00 00 00 00 00 FF
   FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF

第二行的 21 00 00 00 为英雄的第一格生物数
每格生物占4个字节,7×4总共占28个字节。
试验发现生物数量的前面28个字节分别对应七格生物的种类

生物的种类是
00 00 00 00 代表"枪兵"
01 00 00 00 代表"戟兵"

依次类推,分别是:

"枪兵", "戟兵", "弓箭兵", "神射手", "狮鹫", "皇家狮鹫", "剑士",
"十字军", "僧侣", "祭司", "骑兵", "骑士", "天使", "大天使",
"半人马", "半人马首领", "矮人", "战斗矮人", "木精灵", "大精灵", "飞马",
"银飞马", "枯木卫士", "枯木战士", "独角兽", "独角神兽", "绿龙", "金龙",
"小妖精", "大妖精", "石像鬼", "石像怪", "石人", "铁人", "法师",
"大法师", "神怪", "神怪主", "蛇女", "蛇妖", "巨人", "泰坦巨人",
"小怪物", "怪物", "歌革", "玛各", "地狱猎犬", "三首猎犬", "恶鬼",
"长角恶鬼", "邪神", "邪神王", "火精灵", "烈火精灵", "恶魔", "大恶魔",
"骷髅兵", "骷髅勇士", "行尸", "僵尸", "幽灵", "阴魂", "吸血鬼",
"吸血鬼王", "尸巫", "尸巫王", "暗黑骑士", "恐怖骑士", "骨龙", "鬼龙",
"洞穴人", "地狱洞穴人", "鹰身女妖", "鹰身女巫", "斜眼", "毒眼", "美杜莎",
"美杜莎女王", "牛头怪", "牛头王", "蝎狮", "毒蝎狮", "赤龙", "黑龙",
"大耳怪", "大耳怪王", "恶狼骑士", "恶狼斗士", "半兽人", "半兽人首领", "食人魔",
"食人魔王", "大雕", "雷鸟", "独眼巨人", "独眼王", "比蒙", "比蒙巨兽",
"狼人", "大狼人", "蜥蜴人", "蜥蜴勇士", "毒蝇", "龙蝇", "蜥蜴",
"巨蜥", "野牛", "蛮牛", "飞龙", "飞龙王", "九头怪", "终极九头怪",
"气元素", "土元素", "火元素", "水元素", "金人", "钻石人", "小精灵",
"精灵", "精神元素", "魔法元素", "(无)", "冰元素", "(无)", "石元素",
"(无)", "雷元素", "(无)", "烈火元素", "火鸟", "凤凰",
"圣龙", "水晶龙", "紫龙", "毒龙", "魔幻法师",
"幻影射手", "投石矮人", "农民", "野猪", "木乃伊", "游牧民", "盗贼", "恶鬼",

生物接下来的28个字节就是英雄的技能等级,技能等级用 00 ~ 03 表示
01~03分别表示初级、中级、高级。

28项技能依次为:

"寻路术", "箭术", "后勤学", "侦察术",
"外交术", "航海术", "领导术", "智慧术",
"神秘术", "幸运术", "弹道术", "鹰眼术",
"招魂术", "理财术", "火系魔法", "气系魔法",
"水系魔法", "土系魔法", "学术", "战术",
"炮术", "学习能力", "进攻术", "防御术",
"智力", "魔力", "抵抗力", "急救术",

再接着的28个字节是英雄的技能,用00 ~ 08表示,最多只能显示8项,填多了显示会有问题。
01表示第一项技能,08表示第八项技能
如你想将"高级土系魔法"放在第一位, "中级气系魔法"放在第二位,
你就在表示"土系魔法"的第18个字节处添上 01,并在技能等级的第18个字节处添上 03
在表示 "气系魔法"的第16个字节处添上 02,并在技能等级的第16个字节处添上 02

技能接下来的 02 表示显示两项技能

最后一行第三个字节开始的 FF FF FF FF FF FF FF FF 是英雄的装备

详情请见下回分解。
上回讲到英雄的装备。

先说一说宝物吧,每个宝物占8个字节,前面4个字节表示是什么宝物,后面4个字节是宝物的属性
并不是每样宝物都有属性,相反,我就发现 魔法卷轴 用到了后面这4个字节,用来表示魔法卷轴上的魔法,其余宝物属性均为-1 即 FF FF FF FF。

00 00 00 00 FF FF FF FF 表示魔法书
01 00 00 00 13 00 00 00 表示 连锁闪电卷轴
02 00 00 00 FF FF FF FF 表示 神器

依次类推,分别为

"卷轴", "神器", "投石车", "弩车", "补给车",
"急救帐篷", "人马战斧", "黑魔剑", "狼人连枷", "恶魔之棒",
"火神剑", "泰坦之剑", "矮人王盾", "亡灵盾", "狼人王盾",
"狂魔盾", "邪盾", "守护神之盾", "神兽之冠", "骷髅冠",
"混沌之冠", "智慧之冠", "地狱王冠", "雷神之盔", "藤木甲",
"骨质胸甲", "大蛇神胸甲", "巨人战甲", "黄金甲", "泰坦战甲",
"神奇战甲", "圣靴", "天使项链", "狮王盾", "先知剑",
"神谕之冠", "龙眼戒", "赤龙剑", "龙盾", "龙甲",
"龙骨胫甲", "龙翼袍", "龙牙项链", "龙牙冠", "龙眼指环",
"幸运三叶草", "预言卡", "幸运鸟", "勇气胸章", "勇士胸章",
"勇士令", "窥镜", "望远镜", "亡灵护身符", "吸血鬼披风",
"死神靴", "抗魔链", "抗魔披风", "抗魔靴", "树精灵之弓",
"神兽之鬃", "天羽箭", "神目鸟", "火眼人", "真理徽章",
"政治家勋章", "礼仪之戒", "天使勋带", "旅行者之戒", "骑士手套",
"海神项链", "炽天之翼", "魔力护符", "魔法护符", "魔力球",
"魔力项圈", "魔戒", "魔法披风", "气灵球", "土灵球",
"火灵球", "水灵球", "禁魔披风", "禁锢之灵", "恶运沙漏",
"火系魔法书", "气系魔法书", "水系魔法书", "土系魔法书", "水神靴",
"黄金弓", "永恒之球", "毁灭之球", "活力之戒", "生命之戒",
"活力圣瓶", "极速项链", "神行靴", "极速披风", "冷静挂件",
"光明挂件", "神圣挂件", "生命挂件", "死神挂件", "自由挂件",
"电神挂件", "清醒挂件", "勇气挂件", "水晶披风", "宝石戒指",
"水银瓶", "矿石车", "硫磺指环", "木材车", "黄金囊",
"黄金袋", "黄金包", "天赐神足", "天赐神胯", "天赐神躯",
"天赐神臂", "天赐神首", "航海家之帽", "魔法师之帽", "战争枷锁",
"禁魔球", "龙之血瓶", "末日之刃", "天使联盟", "鬼王斗篷",
"神圣血瓶", "诅咒铠甲", "天赐神兵", "龙王神力", "泰坦之箭",
"海洋之帽", "幻影神弓", "魔力源泉", "法师之戒", "丰收之角",
"潘多拉之盒",


英雄身上的宝物分两种,装备在身上的(以下称装备)和放在行囊中的(以下称行囊)。

装备能增加英雄的属性(攻、防、力量、知识及其它辅助效果)
行囊在没有装备到英雄身上的时候是不会增加英雄的属性的。

英雄身上的装备总共为19格,每一格占8个字节表示所放置的宝物
依次为:

头盔 —— 披肩 —— 项链 —— 右手 —— 左手 ——
躯体 —— 右腕 —— 左腕 —— 脚 —— 杂物1——
杂物2 —— 杂物3 —— 杂物4 —— 弩车 —— 帐篷 ——
补给车 —— 投石车 —— 魔法书 —— 杂物5

要修改的话在相应的位置添上相应的宝物即可。


装备接下来的15个字节也是很有用的,
第一个字节不知道什么用处,后面14个字节分别表示英雄装备对应的位置能否放置宝物

依次表示:
头——披肩——项链——右手——左手——
躯体——手腕——脚——杂物——补给车——
弩车——帐篷——投石车——魔法书
如该位置为 00 表示可以放置宝物,如为 01 则表示不能放置宝物,装备对应的位置上会出现一把锁。

其中手腕和杂物比较特殊,
手腕由于有左手腕和右手腕,所以该位置可为 00 、01 、02三个值
杂物有五处,所以对应的位置可以是 00 、01 、02 、03 、04 、05六个值。

行囊就放到下回再说吧

忙了一天了,该好好休息休息了。
行囊跟装备是一样的,也是占8个字节。自然在内存中的地址也是紧挨着的,可以自己到内存中的对应位置去查看。看到一大串的 FF FF FF FF 就是了。

行囊是有个数限制的,英雄也是人嘛,东西多了背不动。
一个英雄的行囊中最多可以放置32样宝物,也就是说行囊总共占8×32=256个字节。
其后有一个字节用来保存行囊中宝物的个数,相当于一个校验位。

除了宝物,魔法自然是玩家最为关注的。
宝物每个占8个字节,魔法这么重要却只占1个字节,真是太不公平了。

不好意思跑题了,发表一下个人意见而已,管他占几个字节,继续继续。

来到行囊对应的地址,显示如下:

   FF FF FF FF FF FF FF FF FF FF 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 03 02 01 01

第一行的第一个 00 是行囊中的宝物个数
往后数92格也就是第七行的第七个字节开始就是英雄的魔法了。

魔法总共有70种,也就是总共占70个字节。

这70个字节依次对应的魔法分别是:

"召船术", "摧毁船只", "透视之眼", "透视大地", "伪装大法",
"透视大气", "飞行奇术", "凌波微步", "异次元之门", "时空之门",
"流沙陷阱", "埋设地雷", "大力神盾", "烈火魔墙", "地动山摇",
"魔法神箭", "霹雳寒冰", "霹雳闪电", "雷鸣炮弹", "连锁闪电",
"寒冰魔环", "连珠火球", "地狱烈焰", "流星火雨", "死亡波纹",
"亡灵杀手", "末日审判", "护体神盾", "大气神盾", "烈火神盾",
"御气奇术", "御火奇术", "御水奇术", "御土奇术", "抗魔大法",
"驱魔大法", "魔法神镜", "疗伤", "转世重生", "聚灵奇术",
"牺牲", "圣灵佑佐", "恶咒附身", "嗜血奇术", "百发百中",
"虚弱无力", "护体石肤", "毁灭之光", "祈祷", "欢欣鼓舞",
"悲痛欲绝", "幸运之神", "大难临头", "攻击加速", "迟缓大法",
"屠戮成性", "孤注一掷", "泰坦之箭", "反戈一击", "丧心病狂",
"蛊惑人心", "失忆大法", "双目失明", "瞬间移动", "驱除障碍",
"镜像大法", "召唤火元素", "召唤土元素", "召唤水元素", "召唤气元素",

要使英雄学会某种魔法只需在对应的字节处将值改成 01 就OK了。


最后一行的 03 02 01 01 相信不说也都猜到了。

对了,就是英雄的四项基本技能了,很奇怪,既然是基本技能为什么放到最后面呢,呵呵,管他呢。

一个英雄在内存中总共就占1170个字节,到此为止关键的数据我们都已经知道在什么位置了,剩下的数据不知道也罢,当然如有兴趣可以去研究一下,记得到时候别忘了跟我分享一下。


其实写程序相对于到内存中去分析数据要简单的多。
像这款游戏的数据都没经过加密的,找起来也不费力,用来练手还是不错的。

一个个字敲还真是挺累的~~~~~~~~
以上完整了

最主要的内存基址,我还没寻到

用死亡阴影来练手最好不过了

本来想用红色警报来练的

可是好像红色警报是动态内存地址……
哇厉害``不过妖哥玩英雄3不怎样 哈哈
刚写好了一个完整的英雄无敌外挂……

套装说明

套装很多的~~~~
天使联盟:它允许女巫、塔城、人类、野蛮人和训兽种族的兵种在混合部队时不受士气低落的影响,并且包括己方城里和关卡要塞的守兵;在战斗一开始就施展专家级的祈祷魔法,持续效果为10个 回合。组合: 黄金甲,圣鞋,天使挂件,狮王盾,先知剑,神狱之冠
泰坦之箭
可以使用5级的泰坦神雷魔法,伤害为600点,而且不消耗MP值。该魔法无法通过英雄法力来提高其杀伤力,但是能通过巫术 (Sorcery)(包括其特长)和空气魔球来增加其杀伤力;气元素、雷元素受到其伤害加倍;御气奇术能减少它的伤害。
魔法塔无法出现该魔法,5级魔法帽(演讲家之帽)也无法使用这个魔法;3.0以前的版本中金字塔能够出现,SOD3.2以前的版本中也能够通过元素城终极建筑北极光获得,但是在SOD3.2版中被修正了,北极光中将不再出现泰坦神雷魔法。
可以施放泰坦之雷魔法 组合:泰坦之剑,泰坦胸甲,守互者之盾,雷神头盔
龙王神力
龙王神力可以使英雄所有指数各增加6点。加上原来的宝物,这个宝物可以使英雄各项指数各增加16点,此外它还有另外一个很强大的功能,就是带上它后己方所有部队将不受1-4级魔法的影响。
当装备了龙王神力以后,无法对己方任何部队使用牺牲术(Sacrifice)组合:龙之径骨,龙眼戒,龙之指环,龙翼袍,红龙剑,龙王冠,龙盾,龙甲,龙挂件
诅咒铠甲
诅咒之铠可以使敌人所有部队受到缓行、诅咒、虚弱和大难临头(降低幸运)的状态50回合,这样的效果会大大降低敌人部队的整体战斗力。此外宝物还将增加英雄的攻击防御各3点,知识法力各2点。组合;黑魔剑,死灵盾,骨胸甲,骷髅冠
天赐神兵
己方所有城镇里(不包括友军)的生物每周增产50%,但野外巢穴不受影响
增加生物周产量的相同宝物效果不累加.但如果你两个英雄装备相同宝物而在同一个城的话,效果累加.合成宝物军团雕像(就是那个小人),如果有2 个,装备在2个英雄身上,,只有一个起作用!2个英雄都在城里,生物产量如下计算:原始产量+合成宝物效果(不累加,等于原始产量的一半(若有小数,采用 去尾法取整))+合成宝物组件效果(累加)... 组合:军团之跨,胸,手,头,足(都是石头的)
幻影神弓
使己方的远程部队在任何时候可以进行远程攻击,即使对手已经贴在远程部队身旁,而且在远程攻击时完全不受距离和障碍物的影响。老实说,这个宝物的威力太强了!
另外要注意的是三个组件宝物的效果是需要装备它的英雄拥有箭术才有加成效果的。组和:天羽箭,神兽绳,树精灵之弓
神圣血瓶
又名:不死神药
所有生命部队可以获得25%的额外生命点数,每回合开始时可以恢复50点HP。而且还包含了3个原宝物的功能,就是部队生命力最大值加4点。
此宝物组合效果对不死系部队(包括非生命部队)无效!但组件效果对不死系部队(包括非生命部队)有效 组合:神圣血瓶,健康戒,生命指环
不死国王斗篷
可以使战场上死亡30%的生物复生为骷髅兵,如果英雄本身就有亡灵技能,那么亡灵技能会叠加这30%。当然还有更让大家吃惊的,那就是复生的怪物会根据英 雄的亡灵等级来变化:基础亡灵技能复活低级僵尸(Walking Dead),高级复活低级鬼魂(Wight)、专家亡灵技能复活低级丧尸(Lich)。
由于组合要求较低,很多地图都容易合成,所以是非常BT无耻的宝物。吸血鬼斗蓬,死神靴.死神挂件
魔法源泉
使英雄在每天开始行动时恢复所有的魔法点数。不错的宝物,合成难度较低,特别是在野蛮人的地形上 组合:魔力护幅,魔力金斗,魔力球
法师之戒
可以使魔法延续50回合,比起其他组合宝物来说,这个宝物太不值得一提了组合:魔力斗蓬,魔力戒,魔力环
丰收之角
组合以后每天提供硫磺、水晶、宝石和水银各4个组合:汞瓶,宝石戒,水晶批风,琉黄戒
海洋之帽
自由上下船,在陆地和海洋上行动力不受影响。
这个宝物有个BUG,一个非常有趣的技巧.组合:海神挂件,航海家帽
o(∩_∩)o...哈哈~很多吧~~

 

修改器

修改物品截图

修改魔法截图

修改生物

英雄无敌Ⅲ之游戏修改器DIY_第1张图片

修改技能

 

英雄无敌Ⅲ之游戏修改器DIY_第2张图片

战斗修改

 

英雄无敌Ⅲ之游戏修改器DIY_第3张图片

你可能感兴趣的:(游戏,windows,理财,生物,金山,BT)