佳丽云

英雄无敌3-WoG中文站

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

DL对话框简单入门教程

  [复制链接]
  • TA的每日心情
    郁闷
    2015-6-6 16:12
  • 签到天数: 52 天

    连续签到: 1 天

    [LV.5]女巫

    4913

    帖子

    2万

    金币

    30

    精华

    超级版主

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

    积分
    31333

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

    发表于 2013-6-17 10:41:55 | 显示全部楼层 |阅读模式
    接触过ERA(或359A)的玩家一定对新的界面对话框很有兴趣,比如英雄大头像之类。
    其实这些新建的对话框都属于DL对话框类型(DIALOGUE),是ERA的一大特色,用户可自定义对话框。
    下面就我对DL对话框的了解作一次入门式的讲解,然则我也只是入门者。
    希望有更多的玩家加入到MOD制作行列中,让H3继续闪光下去。


    先声明一点,涉及到素材制作(如PS或DEF制作)将略过,有兴趣的朋友请咨询界面美化大师KSWDIY。
    这里的营帐DEF只是粗糙的制作品,比如阴影没P掉。权作示例素材而已。
    本课程主要面向有一定ERM基础的玩家朋友。
    当然没有ERM基础,也可以以此了解ERA部分内部构成。


    这里通过一个小对话框例子,讲解对话框的主要构造及设计过程。
    先看看例子的最终效果画面:
    (右键点击"结束回合按钮"显示对话框,对话框中显示当前玩家已经访问过的首领营帐颜色类别)

    pic001.JPG
    pic002.JPG

    先把素材都提供给大家,大家可以跟步骤一步一步完成你的第一个DL对话框。

    素材在这里: 007KEYS素材.rar (34.69 KB, 下载次数: 63)

    评分

    3

    查看全部评分

    本帖被以下淘专辑推荐:

  • TA的每日心情
    郁闷
    2015-6-6 16:12
  • 签到天数: 52 天

    连续签到: 1 天

    [LV.5]女巫

    4913

    帖子

    2万

    金币

    30

    精华

    超级版主

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

    积分
    31333

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

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



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



    DLditor界面.JPG



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



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

    DE-PCX项目.JPG

    DE-DEF项目.JPG

    DE-按钮.JPG

    DE-文本框.JPG

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

    评分

    1

    查看全部评分

  • TA的每日心情
    郁闷
    2015-6-6 16:12
  • 签到天数: 52 天

    连续签到: 1 天

    [LV.5]女巫

    4913

    帖子

    2万

    金币

    30

    精华

    超级版主

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

    积分
    31333

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

     楼主| 发表于 2013-6-17 10:42:14 | 显示全部楼层
    回到我们开头的例子上。
    我们开始在DE软件上绘制项目,请参照下面图片(显示的属性)来绘制
    2个文本项目,1个PCX项目,1个按钮项目
    9个DEF项目(其中1个将用来显示玩家旗帜,8个显示首领营帐)


    应先按项目ID的顺序把项目图案绘制出来(不必理会位置和高宽大小等),
    然后再逐一设置各个项目的属性。
    记得在绘制过程中经常保存文件,文件类型是txt,我们这里先统一为007KEYS.txt(后面脚本调用)。


    DL900-属性.JPG

    DL900-标题.JPG

    DL900-加载PCX.JPG

    DL900-玩家旗帜.JPG

    DL900-首领帐篷.JPG

    DL900-按钮.JPG

    DL900-暗示文本框.JPG



    DEF/PCX/按钮等项目可以直接浏览资源档案文件(*.LOD或*.PAC)来定位相关文件。
    DL-查找资源文件.JPG



    注意:
    ① PCX/DEF/按钮等项目的高度和宽度,一般跟对应调配文件的属性一致。
         如myPIC.PCX图片为64X64,那么(12-PCX)项目的高度和宽度也应为64.
    ② 这个简单例子并没有涉及遮挡的问题,假如有图片遮挡其它图片,需考虑项目的位置问题。
         即在DE软件中的上下级关系(显示的前置和后置)。
    ③ PCX/DEF/按钮等项目要引用资源文件时,只要清楚资源文件的名字,直接填上就行了。
         但若文件不存在,将可能导致显示对话框失败甚至引起花屏和崩溃。


    不知道大家是否能依足步骤把整个项目给绘制出来,项目的位置需事前考虑才能更好地定位。
    文本框项目是可以直接在TEXT属性中写入文字,可用于项目文字无须更改的情况下。
    请尝试关闭软件,重新开启软件和打开刚才保存的007KEYS.txt配置文件。
    对话框的配置文件可直接存放于DATA目录下,也可打包并入到 *.PAC 资源档案文件中。

    至此,对话框配置文件完成,下一步将用ERM脚本来调用和配置对话框。


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

    评分

    1

    查看全部评分

  • TA的每日心情
    郁闷
    2015-6-6 16:12
  • 签到天数: 52 天

    连续签到: 1 天

    [LV.5]女巫

    4913

    帖子

    2万

    金币

    30

    精华

    超级版主

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

    积分
    31333

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

     楼主| 发表于 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查看。


    CREST58图片.JPG





    继续脚本编写

    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来调用,是不是很简单?
    DL900-更换PCX图片.JPG

    最后剩下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的朋友可自行调整)
    本教程到此结束!
    007keys(成品).rar (20.21 KB, 下载次数: 50)

    评分

    2

    查看全部评分

  • TA的每日心情
    慵懒
    2019-8-17 09:46
  • 签到天数: 1158 天

    连续签到: 2 天

    [LV.10]圣龙

    2万

    帖子

    91万

    金币

    7

    精华

    论坛嘉宾

    守望论坛的稻草人

    Rank: 9Rank: 9Rank: 9

    积分
    87470

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

    发表于 2013-6-17 10:58:16 | 显示全部楼层
    强帖啊,好复杂的说,要慢慢消化下。
  • TA的每日心情
    慵懒
    2014-2-14 23:07
  • 签到天数: 2 天

    连续签到: 1 天

    [LV.1]投石矮人

    3961

    帖子

    12万

    金币

    2

    精华

    论坛嘉宾

    Rank: 9Rank: 9Rank: 9

    积分
    4435

    退役版主魅力之星

    发表于 2013-6-17 11:24:00 | 显示全部楼层
    很好的教材,希望更多愿意自己动手的玩家能好好学习
  • TA的每日心情
    郁闷
    2015-6-6 16:12
  • 签到天数: 52 天

    连续签到: 1 天

    [LV.5]女巫

    4913

    帖子

    2万

    金币

    30

    精华

    超级版主

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

    积分
    31333

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

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

    连续签到: 1 天

    [LV.1]投石矮人

    3961

    帖子

    12万

    金币

    2

    精华

    论坛嘉宾

    Rank: 9Rank: 9Rank: 9

    积分
    4435

    退役版主魅力之星

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

    回复 7# 的帖子

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

    辛苦007了~
  • TA的每日心情
    奋斗
    2020-6-27 06:20
  • 签到天数: 6 天

    连续签到: 1 天

    [LV.2]野猪

    9913

    帖子

    63万

    金币

    19

    精华

    管理员

    风侠

    Rank: 12Rank: 12Rank: 12

    积分
    48318

    论坛元老魅力之星富甲天下

    发表于 2013-6-17 13:17:22 | 显示全部楼层
    此文一出, ERA江湖必将百花齐放.
  • TA的每日心情
    开心
    4 天前
  • 签到天数: 70 天

    连续签到: 1 天

    [LV.6]地狱战马

    167

    帖子

    6307

    金币

    0

    精华

    Lv4 Famous Hero

    Rank: 4

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

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

    谢谢楼主,有时间慢慢研究研究!
  • TA的每日心情

    2015-6-18 00:44
  • 签到天数: 55 天

    连续签到: 6 天

    [LV.5]女巫

    4874

    帖子

    3万

    金币

    5

    精华

    论坛嘉宾

    Rank: 9Rank: 9Rank: 9

    积分
    20610

    退役版主魅力之星

    QQ
    发表于 2013-6-17 14:53:26 | 显示全部楼层
    一看到ERM部分我就彻底的萎了。。。脚本盲伤不起。。。
    有时间一定要学习ERM基础!
  • TA的每日心情
    郁闷
    前天 18:51
  • 签到天数: 1207 天

    连续签到: 2 天

    [LV.10]圣龙

    1万

    帖子

    184万

    金币

    0

    精华

    版主

    Rank: 10Rank: 10Rank: 10

    积分
    63773

    魅力之星

    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

    查看全部评分

  • TA的每日心情
    奋斗
    2019-3-24 21:54
  • 签到天数: 205 天

    连续签到: 3 天

    [LV.7]血污怪

    1545

    帖子

    2万

    金币

    0

    精华

    论坛嘉宾

    Rank: 9Rank: 9Rank: 9

    积分
    6527

    退役版主

    发表于 2013-6-17 20:09:20 | 显示全部楼层
    辛苦了啊
    光打字都够呛了
  • TA的每日心情
    开心
    2019-1-31 14:25
  • 签到天数: 130 天

    连续签到: 1 天

    [LV.7]血污怪

    2857

    帖子

    2万

    金币

    14

    精华

    论坛嘉宾

    Rank: 9Rank: 9Rank: 9

    积分
    14801

    退役版主社区QQ达人魅力之星

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

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

    多谢贤知兄弟百忙之中抽空写此贴,完成了我的心愿。非常感谢。
  • TA的每日心情
    慵懒
    2016-5-10 09:35
  • 签到天数: 753 天

    连续签到: 3 天

    [LV.10]圣龙

    8888

    帖子

    1万

    金币

    17

    精华

    论坛嘉宾

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

    Rank: 9Rank: 9Rank: 9

    积分
    42425

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

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

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

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

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

    该用户从未签到

    29

    帖子

    7751

    金币

    0

    精华

    Lv1 Hired Hero

    Rank: 1

    积分
    215

    社区QQ达人

    发表于 2013-6-18 10:52:13 | 显示全部楼层
    这个不顶不行啊.........
  • TA的每日心情
    开心
    2019-1-31 14:25
  • 签到天数: 130 天

    连续签到: 1 天

    [LV.7]血污怪

    2857

    帖子

    2万

    金币

    14

    精华

    论坛嘉宾

    Rank: 9Rank: 9Rank: 9

    积分
    14801

    退役版主社区QQ达人魅力之星

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

    回复 16# 的帖子

    学业有成?恐怕还早着呢,现在比较忙,没什么业余时间啦。不过,话说回来,沧海兄,比我早半年拜师007,你这个师兄,确实有点不称职啊。
  • TA的每日心情
    慵懒
    2016-5-10 09:35
  • 签到天数: 753 天

    连续签到: 3 天

    [LV.10]圣龙

    8888

    帖子

    1万

    金币

    17

    精华

    论坛嘉宾

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

    Rank: 9Rank: 9Rank: 9

    积分
    42425

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

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

    晕,没半年吧,最多三天左右,我记得
    “你看见的,是追随诸神脚步前进的埃拉西亚!”
    封神2.2黄金版 - 决战神之巅,英雄无敌世界的终极幻想
  • TA的每日心情
    开心
    2019-1-31 14:25
  • 签到天数: 130 天

    连续签到: 1 天

    [LV.7]血污怪

    2857

    帖子

    2万

    金币

    14

    精华

    论坛嘉宾

    Rank: 9Rank: 9Rank: 9

    积分
    14801

    退役版主社区QQ达人魅力之星

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

    回复 19# 的帖子

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

    本版积分规则

    手机版|小黑屋|英雄无敌3-WoG中文站

    GMT+8, 2020-8-5 06:11 , Processed in 0.162698 second(s), 42 queries , Gzip On.

    Powered by Discuz! X3.4

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