- 积分
- 4827
- 威望
- 6
- 魅力
- 6
- 经验
- 283
- 热心度
- 5
- 注册时间
- 2009-6-21
- 最后登录
- 2023-10-26
- 主题
- 200
- 回帖
- 2623
- 精华
- 21
- 阅读权限
- 90
TA的每日心情 | 开心 2021-2-18 14:28 |
---|
签到天数: 2 天 连续签到: 1 天 [LV.1]投石矮人
论坛嘉宾
请叫我黑椒哥哥
- 积分
- 4827
|
楼主 |
发表于 2009-8-3 18:49:02
|
显示全部楼层
第八课:!?和!!的基本知识(二)
内容会越来越难,大家做好心理准备。
在一个触接动作中,触发器是一个非常重要的部分。
无疑,没有触发器,也许ERM的大部分功能将无法实现。
今天简单讲讲触发器,首先写出几个常用的触发器:
!?BA0 战斗前触发
!?BA1 战斗后触发
!?BF 战场生成后触发 (最常用)
!?BG0 动作前触发
!?BG1 动作后触发
!?BR 每回合触发
!?HE 英雄遇到另一个英雄时触发
!?LE 踩中某事件触发
!?OB 访问某建筑触发
这些触发器是怎么用呢?一般来说直接使用不增加任何语句,就是对全地图中的该情况都触发。(这句话不好理解)
当我们增加标识符的时候,就是属于只针对一个坐标或一个对象的该类型的触发器(比如!?LE10/52/0;)。
这些触发器是一定要记住的,当然不是死记,多实践自然就记住了。
——————————————————————————————
接下来就是ERM帮助文档的触发器列表,随便看看:(在ERM帮助中选取,整理和修改后的)
触发器列表: 语法 触发器
!?AE0; /!?AE1; ——装备/卸下宝物时触发。
!?AE0;——脱下一个宝物时触发。
!?AE1;——放置一个宝物时触发。
!?BA#;——在所有战斗发生时触发。(前面讲过的)
# = 0 在战斗开始时触发。
# = 1 在战斗结束时触发。
要设置战斗,则使用 接收器BA。(以后再讲)
!?BF;——当战场生成完成,调用此触发器(讲过的)
在战斗开始之前,与 接收器 BF对战场做出触接动作。
建议:不要 把!!BU:R 命令放在!?BF的触接动作中或之前. (不明白就跳过)
!?BG; 在战斗时当任意生物动作(攻击、防御或魔法)或英雄动作(施放魔法,逃跑或投降)时触发此触发器(讲过)
!?BG0 在动作发生前触发. (同 !?BG)
!?BG1 在动作发生后触发。
—————————————————————————————————————
关于!?CM#;(从这里开始不明白跳过)
!?CM#; 在大地图上当右键点击任意地点时触发(用于获得地面物体的名称)
用于内置的ERM 结构,与 触发器CM(CM Receiver) 结合用于获取当前点击区域的信息并屏蔽标准函数
注意事项:
这种结构中,数据将不会被存储。表明你可以在此触发器的接收器段使用(???译者)
现在仅有一个触发器CM - !?CM0; (!?CM;).
在以后将会有更多的触发器用于另外的屏幕中诸如城内场景或战斗场景。他们可能是!?CM1, !?CM2, 等等
!?CM0; 在大地图上鼠标点击触发
等同于 !?CM;
当你点击鼠标右键时触发
!?CM1; 在城内场景中鼠标点击触发
当点击鼠标右键时触发
可以在接收器 !!CM 后使用以下名令: TSIFAR 而不能使用命令 P.
触发器在以下情况下触发:鼠标左键按下(子类型=12), 鼠标左键抬起(子类型=13) ,鼠标右键按下(子类型e=14 an同时有一个对应的标志位).
使用右键单击显示消息使用与Sorcery 脚本相同的方法。.
!?CM2; 在英雄信息场景中鼠标点击触发
当点击鼠标右键时触发
适用于当前英雄 !!HE-1:...
!?CM3; 在两个英雄相遇时鼠标点击触发
当点击鼠标右键时触发
!?CM4; 在战斗场景中鼠标点击触发
当点击鼠标右键时触发
获得在战场上的位置(以及英雄的图像)
————————————————————————————————————
!?CO#; 关于指挥官的触发器
!?CO0; 打开指挥官对话框之前调用
!?CO1; 关闭指挥官对话框之后调用
!?CO2; 在城中雇佣一个指挥官之后调用
!?CO3; 在城里复活一个指挥官之后调用
对于一个人类玩家,标志位1000设置为1.
标志位999通常用于表示该回合是否由人类玩家行动.
可以使用 !!HE-1:... 来获得当前英雄信息,也可以使用!!CO-1:...来获得当前指挥官信息.
变量 v998,v999,v1000 通常用于表示当前英雄在地图上的位置
!?FU#; 在一段ERM代码中通过接收器FU调用编号为 # (1到30000的整数)的函数,并且在其后面跟随着函数代码部分
!?GE#; 表示时一个编号为#的“全局事件”. #是指事件消息文本的开始部分(不包括标题)
只要使用在触发器中,编号不会在稍后的消息文本中显示.
举例:
文本 "1230There you are!" 会变成 "There you are!" 1230成为编号.
要改变一个全局事件,使用接收器GE
—————————————————————————————————————
这里认真看:
!?HE#; 当一个英雄攻击一个敌方英雄(编号为#)或与一个联盟英雄(编号为#)进行访问/交易时触发。
要改变一个英雄的性质,使用 接收器 HE(HE Receiver).
!?HL#; 当一个英雄升级时触发
#=英雄编号(-1 = 所有的英雄)
举例来说,如果有 !?HL-1 和!?HL5,那么会先改变所有英雄的属性,然后才改变第5号英雄的特别属性。
要想改变升级时英雄所能够获得的基本技能和第二技能,使用 接收器HL。
—————————————————————————————————————
以下随便看:
!?HM#; 控制英雄的每一步. 在英雄每走一步之前(不是之后)进行触发。
如果你检查变量v998, v999, v1000, 可以获得一个英雄将要到达的坐标点。移动是不可取消的。
#=英雄编号 (-1 =所有的英雄)
在触发时可以发现:
HE-1 表示一个移动的英雄(???译者)
v998,v999,v1000 = x,y 和等级,表示目的点的坐标。同时,标志flag1000 设1时表示是人类玩家,0是 AI 。
举例来说:如有!?HM-1 和 !?HM5 ,首先将对所有的英雄(HM-1) 执行接收器,然后是一个特定的英雄(HM5)。
—————————————————————————————————————
最后:如果你们不知道到底触发器什么时候触发,那么可以自己验证,方法举例:
例如不知道战场生成后触发是什么意思,那么请在RD地图上编辑以下ERM:
!?BF;
!!IF:M^战场生成后触发^;
慢慢消化,还是那句话,多实践。
(资料来源:ERM帮助文档,云斯的ERM菜鸟教程兼学习交流贴。) |
|