WoG英雄无敌III 中文论坛

 找回密码
 英雄注册|Register
查看: 9747|回复: 61

DL对话框简单入门教程

  [复制链接]

签到天数: 52 天

连续签到: 1 天

[LV.5]祭司

4770

帖子

2万

金币

29

精华

超级版主

Rank: 11Rank: 11Rank: 11Rank: 11

积分
29672

论坛守望者论坛元老杰出贡献

发表于 2013-6-17 10:41:55 | 显示全部楼层 |阅读模式
接触过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 编辑 ]

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?英雄注册|Register

x

评分

参与人数 3威望 +5 魅力 +5 经验 +2 金币 +2 热心度 +2 收起 理由
Castle + 2 + 2 精品帖
ashero4 + 2 + 2 + 2 第一部ERA图形化教材。
玄子 + 3 + 3 精品文章

查看全部评分

本帖被以下淘专辑推荐:

签到天数: 52 天

连续签到: 1 天

[LV.5]祭司

4770

帖子

2万

金币

29

精华

超级版主

Rank: 11Rank: 11Rank: 11Rank: 11

积分
29672

论坛守望者论坛元老杰出贡献

 楼主| 发表于 2013-6-17 10:42:05 | 显示全部楼层
很多玩家并不明白,对话框上的内容是怎么“画”出来的。
先介绍一下对话框的构成元素。
我们称呼对话框上类似按钮/图片/文字等为对“话框项目”。
看看我们的最终效果图,上面一个按钮就是一个项目,007图片也是,标题文字亦同。
游戏显示对话框内容,实际就是显示这些项目(的值)。
按钮有对应的按钮DEF文件,图片有对应的图片PCX文件,文字框可以存放文字。
比较特殊的一种项目是DEF项目,它有对应的DEF文件,在显示上,它能显示该DEF文件中某个索引对应的图片。
说到这里不明白不打紧,只是灌输一些概念,我们来看实践。



每个对话框必须有其对应的配置文件(txt)文件,这个配置文件将记录对话框里所有项目的信息。
制作对话框配置文件有一利器:Dialogs Editor
我们打开这个软件,先了解下界面







进入Dialogs Editor(简称DE)界面,最先要设定的是对话框的全局属性。
首先对<话框ID>是需要更改的,并且保证唯一性,不能和其它对话框ID冲突。
调整对话框项目顺序(DE里面项目上下顺序)的意义是:
越往下的项目,在实际显示上越靠前,也就是说,靠下的项目会覆盖靠上的项目。



下面介绍最常用的 PCX/DEF/按钮/文本框/项目
请尝试点击软件项目绘制按钮,在绘图区画出对应的项目。
将逐一介绍各项目的属性。









[ 本帖最后由 贤知有您 于 2013-6-17 11:20 编辑 ]

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?英雄注册|Register

x

评分

参与人数 1威望 +3 热心度 +2 收起 理由
双子 + 3 + 2 辛苦了!

查看全部评分

签到天数: 52 天

连续签到: 1 天

[LV.5]祭司

4770

帖子

2万

金币

29

精华

超级版主

Rank: 11Rank: 11Rank: 11Rank: 11

积分
29672

论坛守望者论坛元老杰出贡献

 楼主| 发表于 2013-6-17 10:42:14 | 显示全部楼层
回到我们开头的例子上。
我们开始在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 编辑 ]

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?英雄注册|Register

x

评分

参与人数 1威望 +3 魅力 +3 经验 +29 金币 +49 热心度 +2 收起 理由
fly123 + 3 + 3 + 29 + 49 + 2 谢谢贤知老弟的大礼。

查看全部评分

签到天数: 52 天

连续签到: 1 天

[LV.5]祭司

4770

帖子

2万

金币

29

精华

超级版主

Rank: 11Rank: 11Rank: 11Rank: 11

积分
29672

论坛守望者论坛元老杰出贡献

 楼主| 发表于 2013-6-17 10:43:42 | 显示全部楼层
关于ERM在DL对话框的语法,可参考ERM手册中的DL触发器接收器页面。
这里重点介绍几个常用调用和配置对话框的命令。


在任意一个触发器中触发显示DL对话框,比如我们这里使用右键点击"结束回合按钮"触发对话框。
  1. !?CM0&1000; [大地图中右键点击]
  2. !!CM:I?y-1 F?y-2 S?y-3;
  3. !!FU|y-1<>12:E;                  [需要右键点中 结束回合按钮]
  4. !!CM:R0;
复制代码



显示对话框之前,需使用 DL:N 分析对话框配置文件。
  1. !!DL900:N^007KEYS.TXT^;          [分析对话框模板]900是对话框ID,后面接配置文件名
复制代码



分析配置文件后,后面可接一些ERM配置对话框的语句(先省略)
分析和配置完毕后,用DL:S1 语句来把对话框显示出来。
  1. !!DL900:S1;                      [显示对话框]
复制代码

假设对话框能正确显示出来,那么要怎么关闭呢。
最常见的是点击按钮关闭,现在我们已经有按钮项目13,需要调用DL对话框的触发器来完成。


先给出点击13项目关闭对话框的脚本

  1. !?DL&v998=900/v999=13/v1000=13; [左键点确定]
  2. !!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的新索引
11  Pcx    (字符串): 新图片



我们结合实例来了解这些语法。假设在对话框显示前调用FU99999函数配置对话框信息。
大家先用mmarchive打开H3sprite.lod,并找到CREST58.def文件,导出后用defpreview查看。








继续脚本编写

  1. !!OW:C?y1;         [当前玩家颜色]
  2. !!DL900:A2/4/y1/1; [显示对话框中 玩家旗帜]
复制代码

这里A2中的2是项目ID(要显示玩家旗帜)
4代表该项目的类型(DEF)
y1是玩家的颜色(0-7),现在是该DEF的新索引值
最后的1,可以省略。


我们需要在标题上显示当前玩家颜色文字。
可使用一个z变量配置文本框。

  1. !!VRz2&y1=0:S^红色^;
  2. !!VRz2&y1=1:S^蓝色^;
  3. !!VRz2&y1=2:S^褐色^;
  4. !!VRz2&y1=3:S^绿色^;
  5. !!VRz2&y1=4:S^橙色^;
  6. !!VRz2&y1=5:S^紫色^;
  7. !!VRz2&y1=6:S^青色^;
  8. !!VRz2&y1=7:S^粉红色^;
  9. !!VRz22:S^当前%Z2玩家已访问的首领营帐^;
  10. !!DL900:A1/3/z22/1;  [设置标题文字]
复制代码



这里A1中的1是项目ID(标题文本框)
3代表该项目的类系(文本)
用z22的值作为文本框的内容。


再说说更换PCX项目图片。
假设在对话框上点击“贤知有您”图片后显示另外一张PCX图片(myPIC2.pcx)

  1. !?DL&v998=900/v999=12/v1000=13; [点击自定义的图片(项目ID=12)]
  2. !!VRz40:S^myPIC2.PCX^;
  3. !!DL900:A12/11/z40/1; [更换PCX图片]
复制代码

需使用DL触发器,让系统响应鼠标点击触发。v999=12就是该项目ID。
用一个z变量存储新PCX图片名字,再由DL:A来调用,是不是很简单?


最后剩下8个玩家可能访问过的首领营帐,我们先不考虑使用循环语法。(使用简单语法能更直观)
检测当前玩家访问的营帐信息

  1. !!OW:K-1/0/?y10;   [是否访问过0号天蓝色帐篷,y10=1已访问,=0未访问]
  2. !!VRz30:S^^;       [这里z30作为暗示文本]
  3. !!VRy3:S3;         [第一个显示营帐的ID项目编号]
复制代码
假设玩家已经访问过天蓝色营帐:
  1. !!VRz30&y10=1:S^天蓝色 首领营帐^;
  2. !!DL900&y10=1:Hy3/z30;
  3. !!DL900&y10=1:Ay3/4/1/1; [第一个1是DEF的索引,后面的1可忽略]
  4. !!VRy3&y10=1:+1;         [下一个ID]
复制代码

暗示文本的ERM设置语法为:DL:H 项目ID / z变量
这里我们把项目3(y3的值)的暗示文本设置为z30的值
也就是说,当鼠标指向项目3时,将显示z30的内容为暗示文本。
值得一提的是,暗示文本用到的z变量,最好是与项目一一对应,一旦显示对话框后,z变量索引将被锁定为该项目的暗示文本。
此时要改变暗示文本,直接通过改变z变量的值来实现,但不能重新定义一个z变量用作暗示文本。


在007KEYS.def中,天蓝色营帐图片的索引是1。所以更改项目3的DEF索引语句为:

  1. !!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 编辑 ]

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?英雄注册|Register

x

评分

参与人数 2威望 +3 魅力 +3 经验 +8 热心度 +4 收起 理由
沧海一粟 + 3 + 3 + 3 踩着49继续膜拜下
无心云 + 8 + 1 膜拜技术帝

查看全部评分

签到天数: 1158 天

连续签到: 2 天

[LV.10]圣龙

2万

帖子

91万

金币

7

精华

管理员

守望论坛的稻草人

Rank: 12Rank: 12Rank: 12

积分
87360

社区QQ达人论坛守望者金牌裁判杰出贡献魅力之星TE联赛冠军

发表于 2013-6-17 10:58:16 | 显示全部楼层
强帖啊,好复杂的说,要慢慢消化下。

签到天数: 2 天

连续签到: 1 天

[LV.1]枪兵

3961

帖子

12万

金币

2

精华

论坛嘉宾

Rank: 9Rank: 9Rank: 9

积分
4435

论坛嘉宾退役版主魅力之星

发表于 2013-6-17 11:24:00 | 显示全部楼层
很好的教材,希望更多愿意自己动手的玩家能好好学习

签到天数: 52 天

连续签到: 1 天

[LV.5]祭司

4770

帖子

2万

金币

29

精华

超级版主

Rank: 11Rank: 11Rank: 11Rank: 11

积分
29672

论坛守望者论坛元老杰出贡献

 楼主| 发表于 2013-6-17 11:43:05 | 显示全部楼层
写DL对话框教程是长久心愿啊。
抱歉拖了这么久才“始出来”。
话说写个教程真累人啊,组织语言能力不足还请各位海涵。
像那个什么话:小学语文是音乐老师教的。

签到天数: 2 天

连续签到: 1 天

[LV.1]枪兵

3961

帖子

12万

金币

2

精华

论坛嘉宾

Rank: 9Rank: 9Rank: 9

积分
4435

论坛嘉宾退役版主魅力之星

发表于 2013-6-17 11:53:30 | 显示全部楼层

回复 7# 的帖子

写教程不像写小说,教程越是简单明了通俗易懂越好。
再搭配插图,图文并茂。

辛苦007了~

签到天数: 5 天

连续签到: 1 天

[LV.2]射手

9624

帖子

73万

金币

17

精华

管理员

风侠

Rank: 12Rank: 12Rank: 12

积分
45968

论坛元老魅力之星

发表于 2013-6-17 13:17:22 | 显示全部楼层
此文一出, ERA江湖必将百花齐放.

签到天数: 18 天

连续签到: 5 天

[LV.4]剑士

127

帖子

109

金币

0

精华

Lv4 Famous Hero

Rank: 4

积分
1017
发表于 2013-6-17 13:54:03 | 显示全部楼层

回复 鼓励多发帖 1# 的帖子

谢谢楼主,有时间慢慢研究研究!

签到天数: 55 天

连续签到: 6 天

[LV.5]祭司

4874

帖子

3万

金币

5

精华

论坛嘉宾

Rank: 9Rank: 9Rank: 9

积分
20447

论坛嘉宾退役版主魅力之星

QQ
发表于 2013-6-17 14:53:26 | 显示全部楼层
一看到ERM部分我就彻底的萎了。。。脚本盲伤不起。。。
有时间一定要学习ERM基础!

签到天数: 1060 天

连续签到: 1 天

[LV.10]圣龙

1万

帖子

205万

金币

0

精华

版主

Rank: 10Rank: 10Rank: 10

积分
62242

魅力之星

QQ
发表于 2013-6-17 18:45:44 | 显示全部楼层
007不亏是技术流

求邦德女郎
该会员没有填写今日想说内容.

该用户从未签到

4958

帖子

3万

金币

7

精华

论坛嘉宾

Rank: 9Rank: 9Rank: 9

积分
6121

论坛嘉宾退役版主魅力之星

发表于 2013-6-17 19:10:25 | 显示全部楼层
是不是对话框的ID都是唯一的,像V变量一样 如果是这样的话搞通用脚本还得考虑冲突问题

评分

参与人数 1金币 +1 收起 理由
贤知有您 + 1 是的,对话框ID是唯一的.

查看全部评分

签到天数: 205 天

连续签到: 3 天

[LV.7]天使

1545

帖子

1万

金币

0

精华

论坛嘉宾

Rank: 9Rank: 9Rank: 9

积分
6527

论坛嘉宾退役版主

发表于 2013-6-17 20:09:20 | 显示全部楼层
辛苦了啊
光打字都够呛了

签到天数: 130 天

连续签到: 1 天

[LV.7]天使

2857

帖子

1万

金币

14

精华

论坛嘉宾

Rank: 9Rank: 9Rank: 9

积分
14801

论坛嘉宾退役版主社区QQ达人魅力之星

发表于 2013-6-17 22:02:04 | 显示全部楼层

回复 鼓励多发帖 1# 的帖子

多谢贤知兄弟百忙之中抽空写此贴,完成了我的心愿。非常感谢。

签到天数: 753 天

连续签到: 3 天

[LV.10]圣龙

8888

帖子

6682

金币

16

精华

论坛嘉宾

寄蜉蝣于天地,渺沧海之一粟。

Rank: 9Rank: 9Rank: 9

积分
42293

论坛嘉宾退役版主社区QQ达人论坛守望者脚本测试狂论坛元老杰出贡献魅力之星

发表于 2013-6-18 10:43:39 | 显示全部楼层
原帖由
fly123
于 2013-6-17 22:02 发表

多谢贤知兄弟百忙之中抽空写此贴,完成了我的心愿。非常感谢。

F大你这是什么心愿啊?学业有成记得多给大家分享分享成果——对这个,我应该也算是比你早几天的半个师兄,是完全不称职的师兄,哈哈

[ 本帖最后由 沧海一粟 于 2013-6-18 10:44 编辑 ]
“你看见的,是追随诸神脚步前进的埃拉西亚!”
封神2.2黄金版 - 决战神之巅,英雄无敌世界的终极幻想

该用户从未签到

29

帖子

3251

金币

0

精华

Lv1 Hired Hero

Rank: 1

积分
215

社区QQ达人

发表于 2013-6-18 10:52:13 | 显示全部楼层
这个不顶不行啊.........

签到天数: 130 天

连续签到: 1 天

[LV.7]天使

2857

帖子

1万

金币

14

精华

论坛嘉宾

Rank: 9Rank: 9Rank: 9

积分
14801

论坛嘉宾退役版主社区QQ达人魅力之星

发表于 2013-6-18 15:33:26 | 显示全部楼层

回复 16# 的帖子

学业有成?恐怕还早着呢,现在比较忙,没什么业余时间啦。不过,话说回来,沧海兄,比我早半年拜师007,你这个师兄,确实有点不称职啊。

签到天数: 753 天

连续签到: 3 天

[LV.10]圣龙

8888

帖子

6682

金币

16

精华

论坛嘉宾

寄蜉蝣于天地,渺沧海之一粟。

Rank: 9Rank: 9Rank: 9

积分
42293

论坛嘉宾退役版主社区QQ达人论坛守望者脚本测试狂论坛元老杰出贡献魅力之星

发表于 2013-6-18 15:45:37 | 显示全部楼层
原帖由 fly123 于 2013-6-18 15:33 发表
学业有成?恐怕还早着呢,现在比较忙,没什么业余时间啦。不过,话说回来,沧海兄,比我早半年拜师007,你这个师兄,确实有点不称职啊。

晕,没半年吧,最多三天左右,我记得
“你看见的,是追随诸神脚步前进的埃拉西亚!”
封神2.2黄金版 - 决战神之巅,英雄无敌世界的终极幻想

签到天数: 130 天

连续签到: 1 天

[LV.7]天使

2857

帖子

1万

金币

14

精华

论坛嘉宾

Rank: 9Rank: 9Rank: 9

积分
14801

论坛嘉宾退役版主社区QQ达人魅力之星

发表于 2013-6-18 15:48:13 | 显示全部楼层

回复 19# 的帖子

才三天,不会吧。我还以为是年初的时候。呵呵呵,那看咱师兄弟,什么时候有得意的作品面世。
您需要登录后才可以回帖 登录 | 英雄注册|Register

本版积分规则

手机版|小黑屋|WoG英雄无敌中文站 ( 京ICP备11045332 )    

GMT+8, 2019-12-6 21:28 , Processed in 0.068306 second(s), 52 queries , Gzip On.

Powered by Discuz! X3.3

快速回复 返回顶部 返回列表