【入门教程】幽城修改超粗糙教程(第三版)
幽城幻剑录吧
全部回复
仅看楼主
level 9
doublecat 楼主
[一楼喂熊][囧][一楼喂熊][囧]
胡乱打几个字,免得被误作表情党
2009年08月01日 13点08分 1
level 9
doublecat 楼主
先不要插楼,多谢多谢。
其实,要插楼也是可以的,但是要有被删的觉悟。[大笑]
2009年08月01日 13点08分 2
level 9
doublecat 楼主
想想还是不要插楼的好,免得我以后回来看这贴时,会怀疑那些缺失楼层是被摆渡河蟹掉的正文。
2009年08月01日 13点08分 3
level 9
doublecat 楼主
打了好几层地基了,应该够安全了…………
2009年08月01日 13点08分 4
level 9
doublecat 楼主
务必记得将前几楼祭献百度
本教程可能语焉不详,甚至有表述错误。不一定需要马上看懂全部内容,可以跳着看,先找自己能看懂的来看……
即使这些代码的释义一时记不住、并因而导致后面许多文字看不明白,也不要气馁,因为这是完全正常的,除非你是绝对的天才。在修改实践的时候一点一点有选择性地去翻查、去重记即可。
学修改,最重要的是要敢于尝试(备份好原文件,然后使劲改)。
2009年08月01日 13点08分 5
level 9
doublecat 楼主
第零章 16进制
0.1 了解16进制
首先,要知道16进制是怎么一回事,以及游戏是怎样储存数据的。这方面的知识在网上随便一搜就有好多,也很简单,在此就不细说了。推荐个网页:
http://www.myst.cn/article/3350_3.html
http://www.myst.cn/article/3350_4.html
无需细读(10分钟足够),只要了解个大概就好,尤其不需要学会16进制和10进制之间如何换算,这些琐碎的活,就交给电脑去做吧。  
16进制数,前面往往会有0x为标记(下文中,在不致引起混淆的情况下,有时会省略此标记)
实际需要16进制和10进制互换时,可以用windows自带的计算器来完成,注意,要把计算器调成科学计算器模式,它还可以进行16进制的加减乘除运算。
0.2 修改工具
我们的修改工具是16进制编辑器。
推荐winhex forensics(单纯的winhex对中文支持不好,所以要用winhex forensics)或者UltraEdit,后者简称为ue,在网上都有共享版或免费版。
由于幽城的游戏文字是繁体字,在简体系统中会显示成乱码,所以强烈建议再下载一个繁体显示工具applocale。装上applocale后,用applocale来启动winhex forensics或者ue。
设置的时候注意把“应用程序的语言”那一栏设为“繁体中文”,如图所示:
然后,为方便日后直接用applocale打开winhex forensics,勾选“创建快捷方式”,如图所示:
以后就在开始->应用程序->microsoft applocale里打开winhex。
【注意1】为简明起见,以下将winhex forensics简称为winhex。
【注意2】初次用winhex,可能会出现数据移位的诡异现象,这时候,将options->character set里的选项勾选为ansi ascii之外的其它选项,然后再重新勾选为ansi ascii,即可。
2009年08月01日 13点08分 7
level 9
doublecat 楼主
第一章 修改存档
寰神和幽城的数据文件结构是几乎一模一样的,以下单举幽城为例。
幽城的游戏存档文件所在目录:*\castle\multimedia\save
以winhex为例展示具体操作(用ue其实也差不多)。
现在用applocale启动winhex,然后用winhex打开一个存档,比如任一个葛云衣尚未加入前的存档(原版存档)。这个存档容易获得,而且其中每个人的葛MM数据都是一样的,所以可以跟着我进行操作。
offset所对应下来的是一系列16进制代码,在其上左击一次,即变为10进制代码,再左击一次,又恢复为16进制。为方便我们以后的讨论,把他们设为16进制形式。这些代码标明数据的行位置。“offset”右边的0 1 2 3 4 ... D E F标明数据的列位置。
这是16进制的offset值,如图:
这是10进制的offset值,如图:
当我们说某个数据在offset=0x0000D004(“0x”表明该数值是16进制,在不致引起混淆的前提下,也可能省去此标识)这个位置时,其实就是0x0000D000这一行对过来、“4”那一列(也就是第五列)对下来的的位置。如附图,它就是90 9A 0C 00。
注意,游戏里的数值一般都要占用4个位置(即4个字节),而16进制数 C9A90 在文件中会显示成90 9A 0C 00。
那么,90 9A 0C 00这个16进制代码,换算为10进制后到底是多少呢?把光标停在“90”这个字节上,然后看winhex底部的状态栏,有显示,下图中用椭圆线圈起来的就是:=826000。
有个问题,可能你那里不是显示成826000,而是-25968或者-112或者别的,等等。这时你需要点击我用椭圆线圈起来的那个位置(在我这里是“=826000”所在位置),然后会弹出个对话框,点选“32bit,signed”(“32位,有符号”)就行了。以后一直保留这种设定。

2009年08月01日 13点08分 8
level 9
doublecat 楼主
1.2 移植数据块的办法
从0000D330开始是霍雍的代码。霍雍属性数据结构和葛云衣的完全一样,其他角色亦是如此,而且8名我方角色的数据都在这附近。
(结构一样,内容不同)
我们先前说过,葛MM的代码是06,现在补充上所有我方队员的代码:  
夏侯仪:01  
冰璃:02  
封铃笙:03  
慕容璇玑:04  
古伦德:05  
葛云衣:06  
霍雍:07  
冰璃(千年前):08  
敌人的代码在存档里不出现,包含在public文件夹的api.enc这个文件里(需要先把api.enc解码成api.dat格式才能直接用winhex查看)。  
如果在此把葛MM属性数据块的所有代码替换为其他随便一个角色的相应代码(可以把该角色代码整个板块原样复制过来),则游戏中葛MM将表现出另外那名角色的形象和属性(不过角色代码还得是葛云衣的,亦即06)。
但要注意:普攻动作代码是在firttech.enc这个文件里,firttech.enc里有所有绝学资料,而普攻作为一种特殊的绝学,自然也包含于其中,也就是说存档里改不了普攻动作,所以,即便将慕容璇玑或者别的谁谁谁的数据复制到属于葛MM的数据位置上,普攻的一刹那还是会出现葛MM的形象。
这里说一下复制大片数据区域的办法(winhex里的情况)。
先让光标停留在源区域(想要复制的区域)的起始位置,按一下组合键alt+1,然后把光标转到结尾位置并按alt+2,即可选定这片区域,接着自然是ctrl+C复制,再下来,把光标移动到在目标区域(想要粘贴覆盖的区域)的起始位置,按一下ctrl+B,则实现覆盖(如果按ctrl+V,则会在该位置插入源区域的代码,ctrl+B才是覆盖)。
2009年08月01日 13点08分 10
level 9
doublecat 楼主
1.3 用winhex修改数值
下面简要地说一下在winhex里如何修改数值。  
比如我们把葛MM的灵力从400修改到350,则须先按住左键把0000D024~0000D027这四个位置选中(切记,要选中4个位置,不能单点中0000D024,并随即在该位置进行操作),然后按组合快捷键Ctrl+T,这时会弹出个小窗口。先点击我用椭圆圈起来的按钮,点选32bit,signed(32位,有符号),确定(以后都保留这个设定)。最后在输入栏输入十进制的“-50”,确定,就能将10进制的400改成10进制350了(存档里是:16进制的90 01变成16进制的5E 01)。  
或者也可以先把0000D024~0000D027这四个位置上的16进制代码先直接手动改为00 00 00 00,然后再在弹出对话框的输入栏输入350。  
改完后要退出winhex前别忘了按Ctrl+S保存。不过,即使按了保存,再按Ctrl+Z,也能够恢复先前的数据,所以可以尽情地按Ctrl+S来随时保存,但是关闭winhex后重新再打开存档,就不能通过Ctrl+Z恢复到关闭前的状态了。
1.4 修改阵容
以上知识对我们以后修改敌人属性有很大借鉴作用,因为敌人的属性数据格式跟我方队员的格式完全一样,只不过存档里并不包含敌人数据。至于修改敌人数据的问题,我们在以后的章节里会继续介绍。  
补充一下如何修改上场队员阵容。
0000DD70:上场队员数量,不妨记为n。原版里,n不能大于5。    
0000DD20开始:上场队员的代码,排在前n位的队员代码才有效,才能上场。
0000DD48开始:上场队员的站位代码,排在前n位的队员站位才有效。
战斗时,我方地盘的8格分别以0~7表示:  
3 2 1 0……前排  
7 6 5 4……后排  
【例】  
若0000DD20~0000DD30的代码分别是03 01 04 06 07,0000DD48~0000DD58的代码分别是06 02 05 07 04,而0000DD70位置的代码为04,那么队员阵型为:  
- 夏 - -  
葛 封 慕 -  
1.5 修改包裹
当然,修改存档还包括修改道具。鉴于目前幽城存档修改工具较多,而且这个问题对我们接下来的讨论并没有太大关联,我们就不再深究了。需要修改道具的朋友还是直接下载一个修改器来得方便些。  
1.6 修改剧情完成度
需要牵涉到对map文件夹内的剧情文件(eve格式)的分析,比较复杂繁琐。略。
2009年08月01日 13点08分 11
level 8
沙发围观猫大
2009年08月01日 13点08分 12
level 9
doublecat 楼主
第二章 public文件介绍及解码
public文件夹内的enc文件以及商店售物清单shopitem.dat,是我们主要修改的目标。但须先用解码器解码成相应的*.dat文件才能直接编辑,编辑完后,再用解码器编码一次(实际上跟解码操作完全一样),并换回原来的名字及enc后缀,然后放到public文件夹。
关于解码器的下载和运用,可参见此贴:
https://tieba.baidu.com/f?kz=344632717
现简要介绍一下public文件夹的enc文件包含了那些信息:  
api 我方角色初始属性和敌方角色属性  
ail2 所有物品属性(我方和敌方的装备属性、用器属性、杂类道具属性)  
firttech 绝学信息(包括普攻信息,普攻属于特殊的绝学)  
enemy_ai 敌人ai(其实就是攻、防、技三项战斗指令的运用百分比)  
layoutteam 所有敌组的内部信息(包括敌人阵容和战利品奖励)  
layoutgr 迷宫地图和剧情战斗的敌群列表  
levelup 升级经验表  
magiccon 敌人发动各绝学的条件和概率  
magictb 五魂化蕴(我方习得绝学的蕴魂要求和级别要求)  
refinek 炼化系统的类别规则表(比如,女饰+符器=索带)(本教程略)  
refinet 自定义炼化公式表(人为添加的、不需要满足正常炼化规则的炼化公式,如终极装备炼化公式)  
shopitem 商店售物清单(此文件未经编码,直接可编辑)  
miscinfo 兽魂石相关的音频图像引用地址、训练兽魂石所用绝学、战斗音乐等
battlegb 战斗场景地图索引
2009年08月01日 13点08分 13
level 9
doublecat 楼主
第三章 绝学数据结构分析(firttech.enc)
先说比较多人关心的绝学信息  
打开firttech.dat(firttech.enc的解码文件)  
会看到每门绝学的数据结构都是一样的
所以,我们把这结构解析成附图1那样的示意图,然后分别说明一下每个位置的含义。附图2是实例分析。
附图1,数据结构
附图2,实例分析
3.1 绝学类型
若为1,表明该绝学为绝技
若为2,咒法
若为4,阵法
若为0,普攻(普攻也是一门特殊绝学)
若为5,蛰伏类绝学(期间你不能动,敌人也不能攻击你,完后回复一定命气)
若为6,绝对防御类绝学(期间不能动,敌人对你攻击为0伤害,完后不回复命气)。
3.2 作用场合
若为0:平时才能使用(如移形化法)
若为1:战斗时(如泼风枪)
若为2:平时和战斗时皆可使用(如神气流转)
3.3 作用对象  
代码为0:对方阵营,如攻击性绝学、施于敌方的辅助性绝学;  
代码为1:己方阵营,如恢复性绝学、施于己方的辅助性绝学;  
代码为2:双方阵营,如反咒禁制;  
代码为3:死者,如御召魂返、幽冥返召;  
代码为4:自体,如尸魔召唤、呼叫增援、混元气聚、钢皮铁罩。
3.4 作用范围  
代码为0:单体;  
代码为1:直列;  
代码为2:横排;  
代码为3:全体。
3.5 前后排限定
代码为0:该绝学只能作用于对方前排角色(如云横华山);  
代码为1:该绝学对前后排角色都能作用到(如气愈之术);  
不存在只能作用于后排的代码。  
若“作用对象”代码为1,“作用范围”代码为2,此处代码为0,这三个代码联合起来意味着该绝学作用于己方前排一横排的角色。  
若“作用范围”的代码为3,亦即全体作用,此处代码为0或1都没有影响。
  
3.6 绝技类型  
代码为1:伤害值=基本伤害+咒术伤害;  
代码为2:伤害值=基本伤害+命极×伤害指数/10;  
代码为3:伤害值=基本伤害+自身所缺血量×伤害指数/10;  
代码为4:伤害值=攻击力×伤害指数/10-目标防御力;  
代码为5:伤害值=攻击力-伤害指数;  
代码为6:伤害值=基本伤害×伤害指数/10;  
代码为0:上述6种类型以外的其他一切绝学,包括咒术。  
其中,基本伤害=攻击方物理攻击力-目标防御力。  
【注意】原版里除了代码为0或1的绝技类型,其他都不能附带咒术伤害;300块3.0版里其他绝技类型也可附带咒术伤害。
“伤害指数”在“绝技类型”下面一行刚好对下来的位置。
3.7 消耗体力值  
如,发动“摄魂鬼爪”需要消耗体力40,则此处为40的16进制值,即0x28。
3.8 消耗术力值  
如,发动“七光御阵”需要消耗术力100,则此处为100的16进制值,即0x64。  
3.9 咒术相性(或称“附加作用量相性”)   
1:火系;  
2:冰系;  
3:雷系;  
4:光系;  
5:暗系;  
A:恢复系;  
B:辅助系。
原版里仅当绝学类型为0或1时,前五种相性有意义,也就是说,仅当该绝学附带有咒术效果时才有意义(300块里所有类型的绝技都可以附带咒术伤害)。
恢复相性和辅助相性可以附加到所有非阵法类绝学上,这两种相性下,特效实际命中概率固定为100%。  
3.10 绝学指数  
其形式视绝技类型和咒术相性而定。  
只有攻击性绝技和回复绝学此处代码才不为0。
若为攻击性绝技(绝技类型为1~6),则意指伤害指数;
若为回复绝学(咒术相性为A),则意指回复的主作用量,其形式为命极或气极百分数。伤害/回复的是命还是气,并不由此处决定,而是由“命作用百分数”和“气作用百分数”决定。  
绝技的伤害指数上面提到过了。绝技类型为1的绝技,也就是伤害=基本伤害+咒术伤害的绝学,此处代码无关紧要,一般是填为1(填其他数值似乎也没关系)。  
现在谈回复绝学。比如,神护之阵此处16进制代码为0x50(十进制值为80),这表明,它的主作用量为:恢复命极或气极×80%的体力值或元气值。

2009年08月01日 14点08分 14
level 9
doublecat 楼主
3.11 附加作用量类型和附加作用量  
“附加作用量类型”决定“附加作用量”数值的计算方式。  
1)附加作用量类型代码为0  
这决定,附加作用量为伤害点数的形式。
若为伤害性咒术(咒术相性代码为1~5),必定受灵力、伤害缩减指数等因素的影响,火法、冰法、雷法和光法都属于这种类型。
2)附加作用量类型代码为1  
这决定,附加作用量的形式为命极百分数,如暗法。
如果把火系咒术(咒术相性代码为1的绝学)此处改为1(原本为0),则其伤害也会按照命极来扣血。  
3)附加作用量类型代码为3  
这决定,附加作用量为回复的点数(此时咒术相性一般为A,咒术相性为B则无法添加伤害或回复点数),不过这跟代码为0的情况有个关键区别:该点数不受灵力等因素的影响,固定等于附加作用量的设定值,而且附加特效实际命中概率固定为100%。  
如,把七光御阵的附加作用量类型改为3,附加作用量维持原版幽城设定值不变(即为1000),则七光御阵的威力值固定为1000(当然,实际伤害还要受目标抗性修正)。  
  
所有的状态法术、玄经法术和阵法都是这种附加类型(玄经法术和阵法随便改什么类型都无所谓,因为它们的功能一般由rpg.exe决定——特指原版)。  
4)附加作用量类型代码为2  
恢复性绝学里将出现这种代码,但经实验,对附加作用量的影响基本同3,唯一区别在于附加作用类型为2时,可用于平时治疗,为3则治疗无效。  
3.12 附加作用命中率  
仅对包含有咒术伤害的绝学才起作用(绝技的物理伤害部分的实际命中率都为100%)。注意,这个命中率受敌我双方机运差的修正,实际命中率=基本命中率+机运差/8。  
比如,幽剑鬼狱(绝技类型为1),此处代码为0x64(10进制值为100),这意味着,敌我双方机运差为0时,附加暗系伤害的命中率为100%,若施展方机运低,实际命中率将要低于这个100%。  
比如,千栗鬼噬(绝技类型为0,咒术相性为5),此处代码为32(10进制值为50),这意味着,敌我双方机运差为0时,暗系伤害的命中率为50%,若我方机运高于敌方,实际命中率将高于此概率,反之则低于此概率。
3.13 伤害缩减指数r
它是决定法术伤害级别的最重要因素。  
比如,光系4门攻击咒术的伤害缩减指数依次为:  
群星聚华160,神威天光120,辉日圣烨80,七光御阵40。  
r越小,该绝学附带的咒术伤害越高。
3.14 命作用百分数  
若为攻击绝学,则为损命百分数;若为恢复绝学,则为回命百分数。  
绝学输出量还要乘以命作用百分比才是体力值的最终伤害/回复量。  
比如,原版游戏里,幽神罗睺的绝技灭朔死焰,此处代码为0x32(十进制值为50),绝技类型为1,咒术相性为1,附加作用类型0,附加作用量为0x64(十进制值100),这意味着它的伤害输出公式为:(基本伤害+100点火系伤害)×50%。  
又比如,摄魂鬼爪此处代码为0,这意味着,这门绝学并不对敌人造成体力上的伤害(众所周知,此招只减少敌人的元气量)。  
我们要调整绝学威力,也可以通过修改命作用百分数来实现。  
原版游戏里,其他绝学的此处代码一般都是0x64(十进制值为100),这意味着,最终输出量为100%,没有经过放缩。
3.15 气作用百分数
作用方式跟命作用百分数类似。
比如,摄魂鬼爪此处代码为0x64(十进制值为100),这就是说,它对敌人造成的元气伤害不为零。摄魂鬼爪的绝技类型为4,绝学指数为12(十进制),气作用百分数为100(十进制),因此它能减少敌人的元气量=(攻×1.2-防)×100%。

2009年08月01日 14点08分 15
level 9
doublecat 楼主
(往下拉)
0000c25e~0000c269:300块3.0版新增功能,详见附图1、2解说。
0000c304:可装备者代码1
0000c308:可装备者代码2
0000c30c:可装备者代码3
0000c310:可装备者代码4
0000c314:可装备者代码5
0000c318:可装备者代码6
0000c31c:可装备者代码7
0000c320:可装备者代码8
如果0000c304位置上的值为0,那么这件装备可为所有队员装备。
0000c328:物品的炼化类型代码。珑华千纱此处代码为3,说明它的炼化类型为索带。炼化类型和前面提到的物品类型不一样。这里罗列一下物品的炼化类型代码:
01:匕首
02:长剑
03:长枪
04:索带
05:宿玉
06:法袍
07:轻甲(如硬皮胸甲、蚀魄幽铠、冰月皇衣)
08:重甲(如紫金战铠、铜钉皮铠、龙神天铠,至于到底属于轻甲还是重甲,可大概地根据装备的防御性能自由定义,无绝对标准之说)
09:男饰(仅限猛男装备的饰物,如九龙玉佩、幽都王玺)
0a:女饰(仅限MM装备的饰物,如水灵珠花、七色璎珞)
0b:通饰(男女都能装备的通用饰物,比如护命神符、朱焰妖瞳)
0c:符器(如血妖皿、披甲符、玄鸩骨末)
0e:回复药物(如铸命封石、化袅凝晶、金疮药)
0f:属性药物(如玄机道卷、熊王金胆、冰荷仙实)
10:状态药物(如冰蟾沙、迦叶神药、厉魄鬼酿)
11:奇石(如两仪玄石、辟邪紫金、神乌金翎)
00:杂类(如紫霜云芝、玄魄幽壤、刻盘碎片)
0000c32c:合体相性。珑华千纱此处代码为7,意即它的合体相性为析魂
00:一般
01:焚火
02:冰凛
03:雷荧
04:烨光
05:魔厉
06:化相
07:析魂
08:外法
合体相性可自由定义,只对炼化有影响。关于合体相性的介绍,详见《幽城通关笔记》第三版的最后一章“严格炼化法则”。
敌人装备的数据结构完全相同,只不过数据内容相对简单,而且敌人只有武器,没有防具和饰物。在敌人属性数据区块里,指定有该敌人采用的装备。
0000c350:可装备级别(300块3.0新增)
4.2 用器分析
以下为用器信息注释
以物品名称为基址,偏移0xAC处起,才是用器的使用相关信息。事实上,如果在这部分数据区域填上适当代码,装备也可以当做道具来使用(300块3.0版里投掷武器便出于此理)。
原版里,装备作为道具来使用的性能数据块为空。
以下主要针对附图1、2里的概念作注释
作用时机
不可用0,战斗1,平时2,皆可3。
未知代码1
妖梦魅石、神炎金灯0,其余几乎全是1。疑似作废代码。
作用对象
敌方0,己方1,双方2,死者3,自体4。
作用范围
单体0,直列1,横排2,全体3。
前后排限制
前后排皆可1,前排0。  
主作用量
可为物理伤害点数或恢复百分数,视“相性”和“附加作用类型”而定。 若相性为A(恢复),则主作用量表示恢复百分数;其余则表示物理伤害点数。
附加作用类型
与绝学信息里的“附加作用量类型”一致。
点数0,命极百分数1,恢复点数2或3.
命中率
原版里,此“命中率”指附加咒术伤害的命中率(主作用量一定会命中)
300块3.0版里,此“命中率”指道具的命中率
附加作用量
可为附加咒术伤害量、附加恢复点数或属性增加点数。
附加作用量相性
无0,火1,冰2,雷3,光4,暗5,恢复A,辅助B。
命作用百分数
经测试,(主作用量+附加作用量)×命作用百分数=实际回/损命量。属性增量与此无关。
气作用百分数
(主作用量+附加作用量)×气作用百分数=实际回/损气量。属性增量与此无关。
吸命百分数和吸气百分数
八络和冰荷,此处值不为0,但改为0后效果不变。对于道具来说,这两处不重要。  
其余请参看各附图,或类比绝学部分分析来加以理解。
2009年08月01日 14点08分 18
level 9
doublecat 楼主
第三章 绝学数据结构分析(firttech.enc)
先说比较多人关心的绝学信息  
打开firttech.dat(firttech.enc的解码文件)  
会看到每门绝学的数据结构都是一样的
所以,我们把这结构解析成附图1那样的示意图,然后分别说明一下每个位置的含义。附图2是实例分析。
附图1,数据结构
附图2,实例分析
3.1 绝学类型
若为1,表明该绝学为绝技
若为2,咒法
若为4,阵法
若为0,普攻(普攻也是一门特殊绝学)
若为5,蛰伏类绝学(期间你不能动,敌人也不能攻击你,完后回复一定命气)
若为6,绝对防御类绝学(期间不能动,敌人对你攻击为0伤害,完后不回复命气)。
3.2 作用场合
若为0:平时才能使用(如移形化法)
若为1:战斗时(如泼风枪)
若为2:平时和战斗时皆可使用(如神气流转)
3.3 作用对象  
代码为0:对方阵营,如攻击性绝学、施于敌方的辅助性绝学;  
代码为1:己方阵营,如恢复性绝学、施于己方的辅助性绝学;  
代码为2:双方阵营,如反咒禁制;  
代码为3:死者,如御召魂返、幽冥返召;  
代码为4:自体,如尸魔召唤、呼叫增援、混元气聚、钢皮铁罩。
3.4 作用范围  
代码为0:单体;  
代码为1:直列;  
代码为2:横排;  
代码为3:全体。
3.5 前后排限定
代码为0:该绝学只能作用于对方前排角色(如云横华山);  
代码为1:该绝学对前后排角色都能作用到(如气愈之术);  
不存在只能作用于后排的代码。  
若“作用对象”代码为1,“作用范围”代码为2,此处代码为0,这三个代码联合起来意味着该绝学作用于己方前排一横排的角色。  
若“作用范围”的代码为3,亦即全体作用,此处代码为0或1都没有影响。
  
3.6 绝技类型  
代码为1:伤害值=基本伤害+咒术伤害;  
代码为2:伤害值=基本伤害+命极×伤害指数/10;  
代码为3:伤害值=基本伤害+自身所缺血量×伤害指数/10;  
代码为4:伤害值=攻击力×伤害指数/10-目标防御力;  
代码为5:伤害值=攻击力-伤害指数;  
代码为6:伤害值=基本伤害×伤害指数/10;  
代码为0:上述6种类型以外的其他一切绝学,包括咒术。  
其中,基本伤害=攻击方物理攻击力-目标防御力。  
【注意】原版里除了代码为0或1的绝技类型,其他都不能附带咒术伤害;300块3.0版里其他绝技类型也可附带咒术伤害。
“伤害指数”在“绝技类型”下面一行刚好对下来的位置。
3.7 消耗体力值  
如,发动“摄魂鬼爪”需要消耗体力40,则此处为40的16进制值,即0x28。
3.8 消耗术力值  
如,发动“七光御阵”需要消耗术力100,则此处为100的16进制值,即0x64。  
3.9 咒术相性(或称“附加作用量相性”)   
1:火系;  
2:冰系;  
3:雷系;  
4:光系;  
5:暗系;  
A:恢复系;  

2009年08月01日 14点08分 19
level 9
doublecat 楼主
B:辅助系。
原版里仅当绝学类型为0或1时,前五种相性有意义,也就是说,仅当该绝学附带有咒术效果时才有意义(300块里所有类型的绝技都可以附带咒术伤害)。
恢复相性和辅助相性可以附加到所有非阵法类绝学上,这两种相性下,特效实际命中概率固定为100%。  
3.10 绝学指数  
其形式视绝技类型和咒术相性而定。  
只有攻击性绝技和回复绝学此处代码才不为0。
若为攻击性绝技(绝技类型为1~6),则意指伤害指数;
若为回复绝学(咒术相性为A),则意指回复的主作用量,其形式为命极或气极百分数。伤害/回复的是命还是气,并不由此处决定,而是由“命作用百分数”和“气作用百分数”决定。  
绝技的伤害指数上面提到过了。绝技类型为1的绝技,也就是伤害=基本伤害+咒术伤害的绝学,此处代码无关紧要,一般是填为1(填其他数值似乎也没关系)。  
现在谈回复绝学。比如,神护之阵此处16进制代码为0x50(十进制值为80),这表明,它的主作用量为:恢复命极或气极×80%的体力值或元气值
3.11 附加作用量类型和附加作用量  
“附加作用量类型”决定“附加作用量”数值的计算方式。  
1)附加作用量类型代码为0  
这决定,附加作用量为伤害点数的形式。
若为伤害性咒术(咒术相性代码为1~5),必定受灵力、伤害缩减指数等因素的影响,火法、冰法、雷法和光法都属于这种类型。
2)附加作用量类型代码为1  
这决定,附加作用量的形式为命极百分数,如暗法。
如果把火系咒术(咒术相性代码为1的绝学)此处改为1(原本为0),则其伤害也会按照命极来扣血。  
3)附加作用量类型代码为3  
这决定,附加作用量为回复的点数(此时咒术相性一般为A,咒术相性为B则无法添加伤害或回复点数),不过这跟代码为0的情况有个关键区别:该点数不受灵力等因素的影响,固定等于附加作用量的设定值,而且附加特效实际命中概率固定为100%。  
如,把七光御阵的附加作用量类型改为3,附加作用量维持原版幽城设定值不变(即为1000),则七光御阵的威力值固定为1000(当然,实际伤害还要受目标抗性修正)。  
  
所有的状态法术、玄经法术和阵法都是这种附加类型(玄经法术和阵法随便改什么类型都无所谓,因为它们的功能一般由rpg.exe决定——特指原版)。  
4)附加作用量类型代码为2  
恢复性绝学里将出现这种代码,但经实验,对附加作用量的影响基本同3,唯一区别在于附加作用类型为2时,可用于平时治疗,为3则治疗无效。  
3.12 附加作用命中率  
仅对包含有咒术伤害的绝学才起作用(绝技的物理伤害部分的实际命中率都为100%)。注意,这个命中率受敌我双方机运差的修正,实际命中率=基本命中率+机运差/8。  
比如,幽剑鬼狱(绝技类型为1),此处代码为0x64(10进制值为100),这意味着,敌我双方机运差为0时,附加暗系伤害的命中率为100%,若施展方机运低,实际命中率将要低于这个100%。  
比如,千栗鬼噬(绝技类型为0,咒术相性为5),此处代码为32(10进制值为50),这意味着,敌我双方机运差为0时,暗系伤害的命中率为50%,若我方机运高于敌方,实际命中率将高于此概率,反之则低于此概率。
3.13 伤害缩减指数r
它是决定法术伤害级别的最重要因素。  
比如,光系4门攻击咒术的伤害缩减指数依次为:  
群星聚华160,神威天光120,辉日圣烨80,七光御阵40。  

2009年08月01日 14点08分 20
level 9
doublecat 楼主
(往下拉)
0000c25e~0000c269:300块3.0版新增功能,详见附图1、2解说。
0000c304:可装备者代码1
0000c308:可装备者代码2
0000c30c:可装备者代码3
0000c310:可装备者代码4
0000c314:可装备者代码5
0000c318:可装备者代码6
0000c31c:可装备者代码7
0000c320:可装备者代码8
如果0000c304位置上的值为0,那么这件装备可为所有队员装备。
0000c328:物品的炼化类型代码。珑华千纱此处代码为3,说明它的炼化类型为索带。炼化类型和前面提到的物品类型不一样。这里罗列一下物品的炼化类型代码:
01:匕首
02:长剑
03:长枪
04:索带
05:宿玉
06:法袍
07:轻甲(如硬皮胸甲、蚀魄幽铠、冰月皇衣)
08:重甲(如紫金战铠、铜钉皮铠、龙神天铠,至于到底属于轻甲还是重甲,可大概地根据装备的防御性能自由定义,无绝对标准之说)
09:男饰(仅限猛男装备的饰物,如九龙玉佩、幽都王玺)
0a:女饰(仅限MM装备的饰物,如水灵珠花、七色璎珞)
0b:通饰(男女都能装备的通用饰物,比如护命神符、朱焰妖瞳)
0c:符器(如血妖皿、披甲符、玄鸩骨末)
0e:回复药物(如铸命封石、化袅凝晶、金疮药)
0f:属性药物(如玄机道卷、熊王金胆、冰荷仙实)
10:状态药物(如冰蟾沙、迦叶神药、厉魄鬼酿)
11:奇石(如两仪玄石、辟邪紫金、神乌金翎)
00:杂类(如紫霜云芝、玄魄幽壤、刻盘碎片)
0000c32c:合体相性。珑华千纱此处代码为7,意即它的合体相性为析魂
00:一般
01:焚火
02:冰凛
03:雷荧
04:烨光
05:魔厉
06:化相
07:析魂
08:外法
合体相性由制作者自由定义,只对炼化有影响。关于合体相性的介绍,详见《幽城通关笔记》第三版的最后一章“严格炼化法则”。
敌人装备的数据结构完全相同,只不过数据内容相对简单,而且敌人只有武器,没有防具和饰物。在敌人属性数据区块里,指定有该敌人采用的装备。
0000c350:可装备级别(300块3.0新增)
4.2 用器分析
以下为用器信息注释
以物品名称为基址,偏移0xAC处起,才是用器的使用相关信息。事实上,如果在这部分数据区域填上适当代码,装备也可以当做道具来使用(300块3.0版里投掷武器便出于此理)。
原版里,装备作为道具来使用的性能数据块为空。
以下主要针对附图1、2里的概念作注释
作用时机
不可用0,战斗1,平时2,皆可3。
未知代码1
妖梦魅石、神炎金灯0,其余几乎全是1。疑似作废代码。
作用对象
敌方0,己方1,双方2,死者3,自体4。
作用范围
单体0,直列1,横排2,全体3。
前后排限制
前后排皆可1,前排0。  
主作用量
可为物理伤害点数或恢复百分数,视“相性”和“附加作用类型”而定。 若相性为A(恢复),则主作用量表示恢复百分数;其余则表示物理伤害点数。
附加作用类型
与绝学信息里的“附加作用量类型”一致。
点数0,命极百分数1,恢复点数2或3.
命中率
原版里,此“命中率”指附加咒术伤害的命中率(主作用量一定会命中)
300块3.0版里,此“命中率”指道具的命中率
附加作用量
可为附加咒术伤害量、附加恢复点数或属性增加点数。
附加作用量相性
无0,火1,冰2,雷3,光4,暗5,恢复A,辅助B。
命作用百分数
经测试,(主作用量+附加作用量)×命作用百分数=实际回/损命量。属性增量与此无关。
气作用百分数
(主作用量+附加作用量)×气作用百分数=实际回/损气量。属性增量与此无关。
吸命百分数和吸气百分数
八络和冰荷,此处值不为0,但改为0后效果不变。对于道具来说,这两处不重要。  
其余请参看各附图,或类比绝学部分分析来加以理解。
2009年08月01日 14点08分 24
level 9
doublecat 楼主
(往下拉)
0000c25e~0000c269:300块3.0版新增功能,详见附图1、2解说。
0000c304:可装备者代码1
0000c308:可装备者代码2
0000c30c:可装备者代码3
0000c310:可装备者代码4
0000c314:可装备者代码5
0000c318:可装备者代码6
0000c31c:可装备者代码7
0000c320:可装备者代码8
如果0000c304位置上的值为0,那么这件装备可为所有队员装备。
0000c328:物品的炼化类型代码。珑华千纱此处代码为3,说明它的炼化类型为索带。炼化类型和前面提到的物品类型不一样。这里罗列一下物品的炼化类型代码:
01:匕首
02:长剑
03:长枪
04:索带
05:宿玉
06:法袍
07:轻甲(如硬皮胸甲、蚀魄幽铠、冰月皇衣)
08:重甲(如紫金战铠、铜钉皮铠、龙神天铠,至于到底属于轻甲还是重甲,由制作者大概地根据装备的防御性能自由定义,无绝对标准之说)
09:男饰(仅限猛男装备的饰物,如九龙玉佩、幽都王玺)
0a:女饰(仅限MM装备的饰物,如水灵珠花、七色璎珞)
0b:通饰(男女都能装备的通用饰物,比如护命神符、朱焰妖瞳)
0c:符器(如血妖皿、披甲符、玄鸩骨末)
0e:回复药物(如铸命封石、化袅凝晶、金疮药)
0f:属性药物(如玄机道卷、熊王金胆、冰荷仙实)
10:状态药物(如冰蟾沙、迦叶神药、厉魄鬼酿)
11:奇石(如两仪玄石、辟邪紫金、神乌金翎)
00:杂类(如紫霜云芝、玄魄幽壤、刻盘碎片)
0000c32c:合体相性。珑华千纱此处代码为7,意即它的合体相性为析魂
00:一般
01:焚火
02:冰凛
03:雷荧
04:烨光
05:魔厉
06:化相
07:析魂
08:外法
合体相性由制作者自由定义,只对炼化有影响。关于合体相性的介绍,详见《幽城通关笔记》第三版的最后一章“严格炼化法则”。
敌人装备的数据结构完全相同,只不过数据内容相对简单,而且敌人只有武器,没有防具和饰物。在敌人属性数据区块里,指定有该敌人采用的装备。
0000c350:可装备级别(300块3.0新增)
2009年08月01日 14点08分 25
level 9
doublecat 楼主
第八章 迷宫和剧情战斗的遇敌群(layoutgr.enc)
很多迷宫内都会遇到随机一组敌人并与之交战,每一组那样的敌人,我们称之为一个遇敌组,它们有特定的阵容,如第八章所说的那样。而一个迷宫内,会碰到好几种特定的遇敌组,这些遇敌组的集合,我们称之为该迷宫的遇敌群。
(遇敌群和遇敌组两个概念不要搞混了,以前的教程可能没说清楚,但自此之后,要把它们的含义区分并固定下来。遇敌群可能简称为敌群,遇敌组有时则简称为敌组。)
剧情战也对应有一个遇敌群,不过,往往只包含一个遇敌组,所以剧情战里我们碰到的遇敌组都是固定不变的,不像迷宫战斗那样,会随机出现各种不同组合的敌人。
遇敌群的信息包含在layoutgr.enc文件里。打开layoutgr.dat,拉到offset=0x00001FC0那附近。
附图:
每个遇敌群数据块大小是0x1fc(跟遇敌组一样)
如附图,从注释栏可以大概知道,这是冰窟某些/个地图内的遇敌群。
这个遇敌群的数据,从offset=0x00001fc0开始,直到offset=0x000021bb,大小正是0x1fc
同样,这也没有标明该敌群的代码,实际计算方法也是算之前有多少个大小为0x1fc的数据块,跟遇敌组代码计算方法一样。比如这个遇敌群,它的数据起始地址是0x00001fc0(辨认方法之一:0x18个字节后便是敌组数存储地址),那么这意味着之前的数据块总大小为0x1fc0,根据0x1fc0/0x1fc=0x10(用计算器或程序去算),可知,它的代码就是0x10。不过这个代码在初阶修改行为中一般不会用到,只在更改剧情文件时会用到。
以0x00001fc0为基址,偏移0x18处(即0x00001fd8),就是该敌群内所包含的敌组数,附图内为0x0a,亦即有10个敌组。这个位置上的代码不能超过0x0a,亦即最多只有10组。如果把这里的0x0A改为7,那么这表明随后的前7个遇敌组代码才是有效的,又如果,此处为1,那说明到时候只会碰到一个固定的遇敌群组(多见于剧情战)。
以0x00001fc0为基址,偏移0x1C~0x40(即0x00001fdc~0x00002000),为10个指定的遇敌组代码,届时,这些敌组会在战斗时等概率随机出现。相同遇敌组代码可以重复出现——如果要加大某些敌组的出现概率,就采取这个办法。
以0x00001fc0为基址,偏移0x44(即0x00002004),为该敌群描述。
偏移0x6c处(即0x0000202c),为该敌群所可能采用的战斗背景地图总数。
原版里此处一般为1,意即进入战斗时只会出现一个固定的战斗背景地图,偏移0x70的代码便是地图代码。
如果为2,那将会在两个地图中随机选择一个作为战斗背景地图,而这种情况下,偏移0x70和偏移0x74的两个代码即是两个可选地图的代码。
又如果偏移0x6c处代码为3,那将会有3个可选地图及相应代码,分别在偏移0x70、偏移0x74和偏移0x78处。以此类推。最多不能超过6个可选地图。
战斗背景地图代码所对应地图名称,包含在battlegb.enc文件里。请自行打开battlegb.dat加以查看,数据结构很简单,就是先地图代码,然后是地图名称(可以用rpgviewer根据名称找相应图片来查看),后面再跟着无关紧要的文字注释。如此反复。
偏移0x88处(即0x00002048),为该敌群的战斗所采用的背景音乐。
此处为0,则系统会采用castle\multimedia\fight\audio\mp3里的music0030.mp3作为战斗音乐,原版里即为战阵
此处为1,则系统会采用castle\multimedia\fight\audio\mp3里的music0031.mp3作为战斗音乐,原版里即为破暗
此处为2,则系统会采用castle\multimedia\fight\audio\mp3里的music0032.mp3作为战斗音乐,原版里即为神威
为3,即采用music0033.MP3,幽煌
为4,即采用music0034.MP3(原版没有,民间mod里可能会有,需同时改动miscinfo.enc文件)
……
如果采用原版的rpg.exe,则新增战斗音乐不要超过music038.mp3。
偏移0x9c处(即0x0000205c),为该敌群的逃跑概率。剧情战一般为0,意即不可逃跑。这个概率是单人单次逃跑概率。在300块3.0里,只要此处值高于0,就能100%成功逃跑。
若采用原版rpg.exe,本部分内容介绍到此为止,以下为300块3.0新增功能。
偏移0xa0处(即0x00002060),为该敌群是否为限时战的判断代码。为0,不限时;为1,限时。这个是300块3.0版的新增功能,原版不起作用。
偏移0xa4处(即0x00002064),关系该敌群战斗时限的数值。具体时限=该数值/10×(100%~150%),也就是说,时限下限值为该数值/10,上限值为该数值/10×1.5,有50%的随机涨幅。例,此处若为0x1F4(10进制的500),则实际战斗时间为50~75秒。
偏移0xD8处(即0x00002098),附加敌组数。原版里一个敌群至多包含10个敌组,为丰富迷宫战斗的敌组数,新增了附加敌组设定功能。此处值即为附加敌组的总数。接下来的代码分别是各敌组的代码。
第九章 五魂化蕴表(magictb.enc)
这部分信息包含在magictb.enc里。
用winhex打开magictb.dat查看。
每个技能习得信息对应大小为0x24的数据块。
比如offset=00000000~00000020这9个位置就是夏侯仪习得冰霜雪舞的级别条件和五内要求。
00000000:01 夏侯仪代码
00000004:03 最低级别(习得冰霜雪舞的最低级别)
00000008:08 最高级别
0000000b:迅
00000010:烈 10
00000014:神
00000018:魔 5
0000001c:魂
00000020:9d 01(冰霜雪舞代码)
其他技能习得的格式完全类似。
附图

2009年08月01日 14点08分 26
level 9
doublecat 楼主
第八章 迷宫和剧情战斗的遇敌群(layoutgr.enc)
很多迷宫内都会遇到随机一组敌人并与之交战,每一组那样的敌人,我们称之为一个遇敌组,它们有特定的阵容,如第八章所说的那样。而一个迷宫内,会碰到好几种特定的遇敌组,这些遇敌组的集he,我们称之为该迷宫的遇敌群。
(遇敌群和遇敌组两个概念不要搞混了,以前的教程可能没说清楚,但自此之后,要把它们的含义区分并固定下来。遇敌群可能简称为敌群,遇敌组有时则简称为敌组。)
剧情战也对应有一个遇敌群,不过,往往只包含一个遇敌组,所以剧情战里我们碰到的遇敌组都是固定不变的,不像迷宫战斗那样,会随机出现各种不同组合的敌人。
遇敌群的信息包含在layoutgr.enc文件里。打开layoutgr.dat,拉到offset=0x00001FC0那附近。
附图:
每个遇敌群数据块大小是0x1fc(跟遇敌组一样)
如附图,从注释栏可以大概知道,这是冰窟某些/个地图内的遇敌群。
这个遇敌群的数据,从offset=0x00001fc0开始,直到offset=0x000021bb,大小正是0x1fc
同样,这也没有标明该敌群的代码,实际计算方法也是算之前有多少个大小为0x1fc的数据块,跟遇敌组代码计算方法一样。比如这个遇敌群,它的数据起始地址是0x00001fc0(辨认方法之一:0x18个字节后便是敌组数存储地址),那么这意味着之前的数据块总大小为0x1fc0,根据0x1fc0/0x1fc=0x10(用计算器或程序去算),可知,它的代码就是0x10。不过这个代码在初阶修改行为中一般不会用到,只在更改剧情文件时会用到。
以0x00001fc0为基址,偏移0x18处(即0x00001fd8),就是该敌群内所包含的敌组数,附图内为0x0a,亦即有10个敌组。这个位置上的代码不能超过0x0a,亦即最多只有10组。如果把这里的0x0A改为7,那么这表明随后的前7个遇敌组代码才是有效的,又如果,此处为1,那说明到时候只会碰到一个固定的遇敌群组(多见于剧情战)。
以0x00001fc0为基址,偏移0x1C~0x40(即0x00001fdc~0x00002000),为10个指定的遇敌组代码,届时,这些敌组会在战斗时等概率随机出现。相同遇敌组代码可以重复出现——如果要加大某些敌组的出现概率,就采取这个办法。
以0x00001fc0为基址,偏移0x44(即0x00002004),为该敌群描述。
偏移0x6c处(即0x0000202c),为该敌群所可能采用的战斗背景地图总数。
原版里此处一般为1,意即进入战斗时只会出现一个固定的战斗背景地图,偏移0x70的代码便是地图代码。
如果为2,那将会在两个地图中随机选择一个作为战斗背景地图,而这种情况下,偏移0x70和偏移0x74的两个代码即是两个可选地图的代码。
又如果偏移0x6c处代码为3,那将会有3个可选地图及相应代码,分别在偏移0x70、偏移0x74和偏移0x78处。以此类推。最多不能超过6个可选地图。
战斗背景地图代码所对应地图名称,包含在battlegb.enc文件里。请自行打开battlegb.dat加以查看,数据结构很简单,就是先地图代码,然后是地图名称(可以用rpgviewer根据名称找相应图片来查看),后面再跟着无关紧要的文字注释。如此反复。
偏移0x88处(即0x00002048),为该敌群的战斗所采用的背景音乐。
此处为0,则系统会采用castle\multimedia\fight\audio\mp3里的music0030.mp3作为战斗音乐,原版里即为战阵
此处为1,则系统会采用castle\multimedia\fight\audio\mp3里的music0031.mp3作为战斗音乐,原版里即为破暗
此处为2,则系统会采用castle\multimedia\fight\audio\mp3里的music0032.mp3作为战斗音乐,原版里即为神威
为3,即采用music0033.MP3,幽煌
为4,即采用music0034.MP3(原版没有,民间mod里可能会有,需同时改动miscinfo.enc文件)
……
如果采用原版的rpg.exe,则新增战斗音乐不要超过music038.mp3。
偏移0x9c处(即0x0000205c),为该敌群的逃跑概率。剧情战一般为0,意即不可逃跑。这个概率是单人单次逃跑概率。在300块3.0里,只要此处值高于0,就能100%成功逃跑。
若采用原版rpg.exe,本部分内容介绍到此为止,以下为300块3.0新增功能。
偏移0xa0处(即0x00002060),为该敌群是否为限时战的判断代码。为0,不限时;为1,限时。这个是300块3.0版的新增功能,原版不起作用。
偏移0xa4处(即0x00002064),关系该敌群战斗时限的数值。具体时限=该数值/10×(100%~150%),也就是说,时限下限值为该数值/10,上限值为该数值/10×1.5,有50%的随机涨幅。例,此处若为0x1F4(10进制的500),则实际战斗时间为50~75秒。
偏移0xD8处(即0x00002098),附加敌组数。原版里一个敌群至多包含10个敌组,为丰富迷宫战斗的敌组数,新增了附加敌组设定功能。此处值即为附加敌组的总数。接下来的代码分别是各敌组的代码。
第九章 五魂化蕴表(magictb.enc)
这部分信息包含在magictb.enc里。
用winhex打开magictb.dat查看。
每个技能习得信息对应大小为0x24的数据块。
比如offset=00000000~00000020这9个位置就是夏侯仪习得冰霜雪舞的级别条件和五内要求。
00000000:01 夏侯仪代码
00000004:03 最低级别(习得冰霜雪舞的最低级别)
00000008:08 最高级别
0000000b:迅
00000010:烈 10
00000014:神
00000018:魔 5
0000001c:魂
00000020:9d 01(冰霜雪舞代码)
其他技能习得的格式完全类似。
附图

2009年08月01日 14点08分 27
1 2 3 尾页