DL对话框简单入门教程
接触过ERA(或359A)的玩家一定对新的界面对话框很有兴趣,比如英雄大头像之类。其实这些新建的对话框都属于DL对话框类型(DIALOGUE),是ERA的一大特色,用户可自定义对话框。
下面就我对DL对话框的了解作一次入门式的讲解,然则我也只是入门者。
希望有更多的玩家加入到MOD制作行列中,让H3继续闪光下去。
先声明一点,涉及到素材制作(如PS或DEF制作)将略过,有兴趣的朋友请咨询界面美化大师KSWDIY。
这里的营帐DEF只是粗糙的制作品,比如阴影没P掉。权作示例素材而已。
本课程主要面向有一定ERM基础的玩家朋友。
当然没有ERM基础,也可以以此了解ERA部分内部构成。
这里通过一个小对话框例子,讲解对话框的主要构造及设计过程。
先看看例子的最终效果画面:
(右键点击"结束回合按钮"显示对话框,对话框中显示当前玩家已经访问过的首领营帐颜色类别)
先把素材都提供给大家,大家可以跟步骤一步一步完成你的第一个DL对话框。
素材在这里:
一些基本概念:
① ERA的MOD素材一般都打包在*.pac中,同样H3的主体素材在*.LOD文件中,可使用mmarchive软件打开浏览和导入导出。
② 这里素材包括3文件:myPIC.pcx myPIC2.pcx 和 007KEYS.def
③ def文件可以看成是图片的集合,可使用defpreview软件打开浏览或导出。
def文件里面的每张图片都有其特定索引号,索引号均从0开始。
如007KEYS.def有9张图片,其中第一张纯色(H3中显示为透明色,索引号为0),其余为各营帐颜色(索引号依次为1-8)。
④ 自定义对话框ID从1-999都可用,游戏显示对话框就是通过其ID来调用的。
[ 本帖最后由 贤知有您 于 2013-6-17 11:35 编辑 ] 很多玩家并不明白,对话框上的内容是怎么“画”出来的。
先介绍一下对话框的构成元素。
我们称呼对话框上类似按钮/图片/文字等为对“话框项目”。
看看我们的最终效果图,上面一个按钮就是一个项目,007图片也是,标题文字亦同。
游戏显示对话框内容,实际就是显示这些项目(的值)。
按钮有对应的按钮DEF文件,图片有对应的图片PCX文件,文字框可以存放文字。
比较特殊的一种项目是DEF项目,它有对应的DEF文件,在显示上,它能显示该DEF文件中某个索引对应的图片。
说到这里不明白不打紧,只是灌输一些概念,我们来看实践。
每个对话框必须有其对应的配置文件(txt)文件,这个配置文件将记录对话框里所有项目的信息。
制作对话框配置文件有一利器:Dialogs Editor
我们打开这个软件,先了解下界面
进入Dialogs Editor(简称DE)界面,最先要设定的是对话框的全局属性。
首先对<话框ID>是需要更改的,并且保证唯一性,不能和其它对话框ID冲突。
调整对话框项目顺序(DE里面项目上下顺序)的意义是:
越往下的项目,在实际显示上越靠前,也就是说,靠下的项目会覆盖靠上的项目。
下面介绍最常用的 PCX/DEF/按钮/文本框/项目。
请尝试点击软件项目绘制按钮,在绘图区画出对应的项目。
将逐一介绍各项目的属性。
[ 本帖最后由 贤知有您 于 2013-6-17 11:20 编辑 ] 回到我们开头的例子上。
我们开始在DE软件上绘制项目,请参照下面图片(显示的属性)来绘制
2个文本项目,1个PCX项目,1个按钮项目
9个DEF项目(其中1个将用来显示玩家旗帜,8个显示首领营帐)
应先按项目ID的顺序把项目图案绘制出来(不必理会位置和高宽大小等),
然后再逐一设置各个项目的属性。
记得在绘制过程中经常保存文件,文件类型是txt,我们这里先统一为007KEYS.txt(后面脚本调用)。
DEF/PCX/按钮等项目可以直接浏览资源档案文件(*.LOD或*.PAC)来定位相关文件。
注意:
① PCX/DEF/按钮等项目的高度和宽度,一般跟对应调配文件的属性一致。
如myPIC.PCX图片为64X64,那么(12-PCX)项目的高度和宽度也应为64.
② 这个简单例子并没有涉及遮挡的问题,假如有图片遮挡其它图片,需考虑项目的位置问题。
即在DE软件中的上下级关系(显示的前置和后置)。
③ PCX/DEF/按钮等项目要引用资源文件时,只要清楚资源文件的名字,直接填上就行了。
但若文件不存在,将可能导致显示对话框失败甚至引起花屏和崩溃。
不知道大家是否能依足步骤把整个项目给绘制出来,项目的位置需事前考虑才能更好地定位。
文本框项目是可以直接在TEXT属性中写入文字,可用于项目文字无须更改的情况下。
请尝试关闭软件,重新开启软件和打开刚才保存的007KEYS.txt配置文件。
对话框的配置文件可直接存放于DATA目录下,也可打包并入到 *.PAC 资源档案文件中。
至此,对话框配置文件完成,下一步将用ERM脚本来调用和配置对话框。
[ 本帖最后由 贤知有您 于 2013-6-17 11:23 编辑 ] 关于ERM在DL对话框的语法,可参考ERM手册中的DL触发器和接收器页面。
这里重点介绍几个常用调用和配置对话框的命令。
在任意一个触发器中触发显示DL对话框,比如我们这里使用右键点击"结束回合按钮"触发对话框。!?CM0&1000; [大地图中右键点击]
!!CM:I?y-1 F?y-2 S?y-3;
!!FU|y-1<>12:E; [需要右键点中 结束回合按钮]
!!CM:R0;
显示对话框之前,需使用 DL:N 分析对话框配置文件。
!!DL900:N^007KEYS.TXT^; [分析对话框模板]900是对话框ID,后面接配置文件名
分析配置文件后,后面可接一些ERM配置对话框的语句(先省略)
分析和配置完毕后,用DL:S1 语句来把对话框显示出来。!!DL900:S1; [显示对话框]
假设对话框能正确显示出来,那么要怎么关闭呢。
最常见的是点击按钮关闭,现在我们已经有按钮项目13,需要调用DL对话框的触发器来完成。
先给出点击13项目关闭对话框的脚本
!?DL&v998=900/v999=13/v1000=13; [左键点确定]
!!DL:C1; [关闭当前对话框]
关闭对话框的DL:C1语句很简单。这里主要说说触发器。
当对话框显示后,用鼠标对对话框上项目产生点击操作时,将触发DL触发器。
此时 v998变量记录对话框ID,v999变量记录点击的项目ID,v1000记录点击动作。
触发器条件成立后,系统就会继续执行对应的(关闭对话框)语句。
v1000的动作包括:12 – 鼠标左键按下;13 – 鼠标左键抬起;14 – 鼠标右键按下
由于我们调用对话框时,并不是显示一个单一画面的对话框,也就需要在对话框分析配置文件之后,对话框显示之前,配置所需的对话框信息。
DL:A语句可更改项目的属性,只支持"文本框/DEF/PCX"项目。
看ERM帮助语法:
DLxxx:A#1/#2/$改变会话项目特征.
#1 - 项目ID
#2项目类型和对应的值$
3 文本 (字符串): 项目的新文本
4 Def (数值): Def的新索引
11Pcx (字符串): 新图片
我们结合实例来了解这些语法。假设在对话框显示前调用FU99999函数配置对话框信息。
大家先用mmarchive打开H3sprite.lod,并找到CREST58.def文件,导出后用defpreview查看。
继续脚本编写
!!OW:C?y1; [当前玩家颜色]
!!DL900:A2/4/y1/1; [显示对话框中 玩家旗帜]
这里A2中的2是项目ID(要显示玩家旗帜)
4代表该项目的类型(DEF)
y1是玩家的颜色(0-7),现在是该DEF的新索引值
最后的1,可以省略。
我们需要在标题上显示当前玩家颜色文字。
可使用一个z变量配置文本框。
!!VRz2&y1=0:S^红色^;
!!VRz2&y1=1:S^蓝色^;
!!VRz2&y1=2:S^褐色^;
!!VRz2&y1=3:S^绿色^;
!!VRz2&y1=4:S^橙色^;
!!VRz2&y1=5:S^紫色^;
!!VRz2&y1=6:S^青色^;
!!VRz2&y1=7:S^粉红色^;
!!VRz22:S^当前%Z2玩家已访问的首领营帐^;
!!DL900:A1/3/z22/1;[设置标题文字]
这里A1中的1是项目ID(标题文本框)
3代表该项目的类系(文本)
用z22的值作为文本框的内容。
再说说更换PCX项目图片。
假设在对话框上点击“贤知有您”图片后显示另外一张PCX图片(myPIC2.pcx)
!?DL&v998=900/v999=12/v1000=13; [点击自定义的图片(项目ID=12)]
!!VRz40:S^myPIC2.PCX^;
!!DL900:A12/11/z40/1; [更换PCX图片]
需使用DL触发器,让系统响应鼠标点击触发。v999=12就是该项目ID。
用一个z变量存储新PCX图片名字,再由DL:A来调用,是不是很简单?
最后剩下8个玩家可能访问过的首领营帐,我们先不考虑使用循环语法。(使用简单语法能更直观)
检测当前玩家访问的营帐信息
!!OW:K-1/0/?y10; [是否访问过0号天蓝色帐篷,y10=1已访问,=0未访问]
!!VRz30:S^^; [这里z30作为暗示文本]
!!VRy3:S3; [第一个显示营帐的ID项目编号]假设玩家已经访问过天蓝色营帐:!!VRz30&y10=1:S^天蓝色 首领营帐^;
!!DL900&y10=1:Hy3/z30;
!!DL900&y10=1:Ay3/4/1/1; [第一个1是DEF的索引,后面的1可忽略]
!!VRy3&y10=1:+1; [下一个ID]
暗示文本的ERM设置语法为:DL:H 项目ID / z变量
这里我们把项目3(y3的值)的暗示文本设置为z30的值
也就是说,当鼠标指向项目3时,将显示z30的内容为暗示文本。
值得一提的是,暗示文本用到的z变量,最好是与项目一一对应,一旦显示对话框后,z变量索引将被锁定为该项目的暗示文本。
此时要改变暗示文本,直接通过改变z变量的值来实现,但不能重新定义一个z变量用作暗示文本。
在007KEYS.def中,天蓝色营帐图片的索引是1。所以更改项目3的DEF索引语句为:
!!DL900&y10=1:Ay3/4/1/1;
!!VRy3&y10=1:+1; [下一个ID]
此语句是为了方便调用下一个项目ID。
其它访问过的营帐的脚本基本与这个类似了。
至此,大功告成!!
不妨把此MOD放入ERA的MODS目录下加载,在游戏中看看效果。
-----------------------------------------------------------------------------------------------------------
如果你对ERM的语法还不熟悉,请继续学习ERM。这里已假设你对理解这些脚本没有任何阻力。
如果你能够完全理解和模拟出一模一样的效果,那么恭喜你入门DL对话框了。
只要理解了本例程,你应该能制作出简单的DL对话框了。课程到此结束,谢谢大家!
(PS:一直都想写个DL对话框教程,感觉不知道从何说起,因为DL对话框涉及到很多内容。
大家之所以觉得DL对话框无从学起,只是缺少对ERA内部结构的了解而已。
如今课程也只是亮出了其冰山一角,如果感兴趣,期待你迈进ERA的MOD制作队伍中!)
下面贴出所有脚本和成品MOD,欢迎提出意见和建议。
(脚本可以用循环语法简化,懂ERM的朋友可自行调整)
本教程到此结束!
[ 本帖最后由 贤知有您 于 2013-6-17 11:34 编辑 ] 强帖啊,好复杂的说,要慢慢消化下。 很好的教材,希望更多愿意自己动手的玩家能好好学习 写DL对话框教程是长久心愿啊。
抱歉拖了这么久才“始出来”。
话说写个教程真累人啊,组织语言能力不足还请各位海涵。
像那个什么话:小学语文是音乐老师教的。
;oweojs; ;go;
回复 7# 的帖子
写教程不像写小说,教程越是简单明了通俗易懂越好。再搭配插图,图文并茂。
辛苦007了~ 此文一出, ERA江湖必将百花齐放.
回复 鼓励多发帖 1# 的帖子
谢谢楼主,有时间慢慢研究研究! 一看到ERM部分我就彻底的萎了。。。脚本盲伤不起。。。有时间一定要学习ERM基础!;angr; 007不亏是技术流
求邦德女郎 是不是对话框的ID都是唯一的,像V变量一样;yowe; 如果是这样的话搞通用脚本还得考虑冲突问题;ym; 辛苦了啊
光打字都够呛了
回复 鼓励多发帖 1# 的帖子
多谢贤知兄弟百忙之中抽空写此贴,完成了我的心愿。非常感谢。;orz; 原帖由 fly123 于 2013-6-17 22:02 发表 http://www.h3wog.com/images/common/back.gif多谢贤知兄弟百忙之中抽空写此贴,完成了我的心愿。非常感谢。;orz;
F大你这是什么心愿啊?学业有成记得多给大家分享分享成果——对这个,我应该也算是比你早几天的半个师兄,是完全不称职的师兄,哈哈;oweojs;
[ 本帖最后由 沧海一粟 于 2013-6-18 10:44 编辑 ] 这个不顶不行啊.........
回复 16# 的帖子
学业有成?恐怕还早着呢,现在比较忙,没什么业余时间啦。不过,话说回来,沧海兄,比我早半年拜师007,你这个师兄,确实有点不称职啊。;orz; 原帖由 fly123 于 2013-6-18 15:33 发表 http://www.h3wog.com/images/common/back.gif学业有成?恐怕还早着呢,现在比较忙,没什么业余时间啦。不过,话说回来,沧海兄,比我早半年拜师007,你这个师兄,确实有点不称职啊。;orz;
晕,没半年吧,最多三天左右,我记得;ekow;