幻世录2物品代码(幻世录1物品代码怎么用)万万没想到
介绍场景资源文件的修改方法。
场景是幻世录中一个很重要的概念,我们在游戏中看到的所有元素都是以场景为基础建立的比如游戏开头的主菜单、大地图,还有每个战场,甚至game over界面,这些都是场景我们游戏的过程其实就是场景不断切换的过程,我们读取回忆录就是从主菜单场景切换到大地图场景,移动到某个剧情点就是从大地图场景切换到战斗场景,战斗失败就是从战斗场景切换到game over场景,胜利则是切换回大地图场景。
场景切换流程每个场景又由4~5个数据文件构成(战斗场景多一个winfail),包括:资源文件(.obs)、二进制文件(.bin)、地形文件(.wrd)、剧情文件(story)和战场事件文件(winfial)。
注意上图中的战场并不是1个场景,而是每个战场都是一个独立的场景,所有场景都有自己的编号(文章最后会给出编号列表),同一场景的不同文件都会用这个编号命名,它们组合起来实现了场景的所有功能对于程序来说,场景的最大作用其实是内存控制。
游戏在同一时间只会加载一个场景(大地图场景比较特殊,有可能会一直存在内存中,我没有源码,无法判断),比如玩家开始新游戏时,会清除主菜单场景占用的内存,再加载“弃卒”场景到内存中内存中的数据包括但不限于:所有出场角色的资源(各种动画)、场景装饰物的图片、所有在场单位的数据(例如携带物品、装备、气力等)、地形文件,还有战场事件(脚本)。
资源文件:后缀为obs,但文件内容其实和txt是一样的,阅读和修改方式与入门篇完全相同该文件主要用于加载图片资源,同时也附带一些其它数据(后面会做详细介绍),是加载场景时最先读取的数据命名格式为“OBJ-场景编号.OBS
”二进制文件:后缀为bin,无法用文本编辑器打开,需要特定工具才能修改作用是描述初始单位(就是一进场景便存在的单位)的信息,例如携带物品、地图坐标等,在资源文件之后加载命名格式为“level场景编号.BIN。
”地形文件:后缀为wrd,无法用文本编辑器打开,需要特定工具才能修改作用是描述地形,比如哪里能走、哪里不能走,或者哪里会中毒,在资源文件之后加载命名格式为“level场景编号.wrd”剧情文件:后缀为txt,里面保存的是
逻辑数据,格式和动画相同作用是描述在场景中发生的各种剧情,相当于脚本,比如谁移动到哪里、说了什么话之类的,在二进制文件之后加载命名格式为“STORY场景编号.TXT”战场事件:战斗场景特有,可缺省后缀为txt,格式和。
剧情文件相同作用和剧情类似,使用的逻辑数据也是共通的,只是战场事件可以检测胜负情况,以及触发一些特殊事件,可以看成是剧情在功能上的扩展,在二进制文件之后加载命名格式为“winfail场景编号.txt”本文先从
资源文件(OBS)讲起。obs文件的数据也是由一个个模块组成的,标签名为Object。下图是“双头的死神”场景的资源文件:
资源文件中的数据都是静态的,就是说只要文件内容确定了,场景加载后一定是既定的结果(就好比是人的基因),而不像动态数据那样,逻辑是实时运算的,随机性很大(双胞胎长大后也不一定很像,后天环境会有影响)所以上图中的每个模块都可以看成是一个模板(比如一个兵种、一间房屋),它们在场景中并不一定是唯一的,有可能根据自身数据派生出很多单位(类似代码中的“类”,在动态运行时可以实例化出很多“。
对象”)如果这里你不明白也没关系,我们先往下看……*图中的乱码是中文,因为编码的关系无法正常显示,可参见进阶篇(一)先介绍一下Object模块的属性:obj_code:数值型,模板的唯一标识obj_name。
:字符串,模板名称,无实际作用,只是便于区分obj_Shape_Name:字符串,地图动画第1帧的图片名称obj_Shape_Number:数值型,地图动画的帧数obj_Process_Code:数值型,模板的类型,比如我方角色、敌人、装饰物,宏声明在PROCESS.DEF文件中。
obj_Mode:数值型,表示图像混合方式,共有9种(可共存),宏声明在PROCESS.DEF文件中(见注解1)obj_Data5:数值型,不同的模板类型中作用也不相同,当模板为敌人时表示兵种的显示称号,会覆盖。
角色模块的数据,若没有该属性则使用角色模块的obj_Data6:数值型,不同的模板类型中作用也不相同,当模板为敌人时表示兵种的ID,但该值只影响兵种的地图动画和事件中的ID,不影响能力obj_Data7。
:数值型,不同的模板类型中作用也不相同,当模板为敌人时表示兵种的角色编号,但该值只用来初始化角色的数值和技能,不影响其地图动画和事件IDobj_Data8:数值型,不同的模板类型中作用也不相同,当模板为敌人时表示兵种的遗言,。
会覆盖角色模块的数据,若没有该属性则使用角色模块的obj_Data9:不同的模板类型中作用也不相同,当模板为敌人时为布尔型,会反转阵营和面向方向,将我方变成敌方、敌方变成我方;模板为我方角色时表示角色ID。
obj_X1:数值型,模板类型为敌人时有效,表示兵种的阵营,会覆盖角色模块的数据,若没有该属性则使用角色模块的obj_HitPoint:数值型,模板类型为敌人时有效,表示兵种的额外最大生命值,初始化时会和兵种的原始最大生命值相加,和为最终HP上限。
这些模板有很多是约定俗成的,就是说在不同场景中,某些编号相同的模板意义是一样的,当然你硬要改变这个规律也是可以的,但是不建议这样做,因为不利于记忆一般编号为0的模板都是大地图背景;编号1是光标所在区域显示的方框;编号2是光标动画;编号4是胜负条件的背景面板;编号5是对话框背景。
编号6~14是9个主角的模板;编号15开始是场景装饰物的模板;编号99往前倒序是敌人的模板编号180~188是主角的特殊模板,它和普通模板的区别是会先判断角色是否在队伍中,如果不在则不会创建角色,用于随机战场景;编号199是战斗背景图;编号798是隐藏宝箱。
其它编号大于100的模板都是通用资源,每个场景都会用,且属性也没太大差异另外除了编号15~99的模板外,其它模板大部分都是以单例(即在一个场景中,一个模板只有一个由它派生出的单位)的形式存在于场景中在进入场景之前,游戏会先根据模板的
obj_Shape_Name和obj_Shape_Number属性,将它们用到的图片加载到内存中,这样就随时可以绘制场景中的各个单位了注意这里的图片和地图动画中的属性所描述的图片并不完全是一回事,资源文件。
中的数据是告诉游戏要加载哪些图片,而地图动画中的属性是告诉游戏要绘制哪些图片程序正常绘制图片的前提是内存中已经加载了该图片,所以如果某个角色模板中的图片和他动画数据中的图片名称不对应,那么在绘制的时候就会报错(一进战斗就崩溃),因为要绘制的图片在内存中找不到,因此在实际应用中这两者是永远一致的(帧数也要注意,资源加载不完全同样会报错)。
除了图片以外,内存中也会保留模板中的其它数据,如称号、额外生命值等当游戏创建场景单位(比如敌人)时,会从对应的模板中取数据,一个模板可以创建多个单位,这些单位的数据是相同的(当然敌人的能力会有小范围的随机,这是另一个层面的问题,在这里暂且忽略)。
由此可见,模板数据是构成场景的最基础的数据,一定是最先加载,之后再通过其它数据创建场景中的单位以及脚本,否则连画都画不出来场景编号:000 - 主菜单001 - 双头的死神002 - 遭遇003 - 巢窟。
005 - 猛狞006 - 宣战007 - 寂寥 010 - 哀怨012 - 怒涛013 - 辉煌015 - 异种017 - 援救018 - 突围019 - 真理021 - 魔骑士022 - 猎杀024 - 狂砂(打败克罗蒂)
026 - 破浪028 - 遗产 029 - 信念030 - 离散031 - 奔逃032 - 阻碍033 - 解明034 - 虚实036 - 变节037 - 未知038 - 深邃之暗039 - 崩陷040 - 决胜
041 - 恶魔之翼043 - 绝壁044 - 残光045 - 突进049 - 大地图051 - 弃卒052 - 恶梦的终曲053 - 决意054 - 希里乌斯(原版未使用)059 - 劫数075 - 自觉与宿命
076 - 最终的序曲077 - 破灭的命运078 - 接触079 - 终焉080 - 禁忌之魂900 - 失落901 - 狙兵902 - 寻903 - 狂砂(雷逃跑)904 - 真理998 - 通关场景
999 - game over501~578 - 随机战场景50~100之间没有列出但实际存在的都是剧情场景,没有战斗只有情节注解:(1) obj_Mode的类型共有9种,我目前知道作用的有6种,分别是:。
engGLASS:影子engMIX:隐形engFLASH:变暗engZOOM:缩放engADDCOLOR:半透明engSUBCOLOR:特殊幻世录Ⅰ静态修改—进阶篇(四)
- 标签:
- 编辑:李松一
- 相关文章
-
cf黄金尼泊尔(cf最早时期的尼泊尔)怎么可以错过
本期盘点一下寒武纪以后的黄铁矿化化石
-
树妖王(树妖王召唤戒)这都可以?
《烈火浇愁》讲述的就是重生后心得圆满的故事。
- 树妖王(树妖王召唤戒)速看
- 上古卷轴5幻术(上古卷轴5幻术等级上限)深度揭秘
- cf新兵(cf新兵礼包在哪里)全程干货
- 上古世纪幽影刺客(上古世纪幽影刺客竞技场)这都可以
- 泰拉遗迹(泰拉丛林地下遗迹)原创