- 积分
- 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-9-7 18:57:34
|
显示全部楼层
第三课:标志
说到标志,也许对于新手来说是最难的了,你去看ERM帮助的话,呵呵,自己想想后果。
里面写住什么真啊假啊,设置啊,未设置啊,至少我以前看标志这个部分的时候很头晕!
以上都是废话啊,下面讲正题。
标志,又称标志位、条件标志、标志条件等等,在ERM帮助文档中,它的真实名字是:标志(FLAG)!
1、什么是标志?
标志是一种类似变量的东西,但是他们有一点和变量不一样:他们只能被设置2个值:0和1。
也就是说,它们是二进制,并且只有一位。
标志有1000个,使用方法和变量V一样,是可多次变换,并永久储存的,所以使用标志一样要和使用变量一样小心,一样会导致标志冲突。
我们可以把标志看作开关,它们只有两种状态(打开或关闭),并且永久储存。
在游戏开始的时候,读取!#命令之前,所有标志都是0,也就是关闭的。
我们可以用命令来使他们打开,变成1。
因为所有标志在游戏开始前都是0,所以使用标志前,我们也没有必要去专门把标志置0(也就是把开关关上)
但是我一般会在使用某标志前将它置0,为什么这样做呢?说出来你们很难理解,反正就是一句命令而已。
————————————————————————————————————————
2、标志的表示
我们都知道变量用字母加数字(或者单字母)来表示,那么标志呢?它们直接用它们的编号来表示。
比如说5,就是标志5。300,就是标志300。
那么我们怎么将它们和普通数字区别开来呢?
不用区别,因为标志只有在特定情况下使用,也就是说:
能使用标志的地方,一定不能使用变量和普通数字
能使用变量和普通数字的地方,一定不能使用标志!
————————————————————————————————————————
3、标志的作用
标志的作用主要是用来做条件(也就是&和:之间的部分)
我们都知道可以用&变量名(比较符号>,<,=)普通数字,来表示一个条件,比如说:
!!IF&v1<>0:M^v1不等于0。^;
我们可以同样用标志来表示一个条件,怎么用呢?
难道是标志名=(0或者1)?
当然不是,如果你将一句话写成这样的话,你看上去都会发笑:
!!IF&50=1:M^标志50为1^;
50=1是不可能发生的事情,所以会出现语法错误,但是我们如何表示一个标志当前的值呢?
一般来说,当标志为0的时候,我们一般用标志索引的负数(比如-50)来表示条件;
如果标志为1的时候,我们一般用标志索引的正数(比如50)来表示条件。
所以上面这句话就可以是:
!!IF&50:M^标志50为1^;
!!IF&-50:M^标志50为0^;
这个明白吗?
——————————————————————————————————
4、关于设置、获取标志的命令
这个命令还是比较多的,这里我只讲1个最最最最最主要的命令:
!!IF:V#/$;
这个能看懂吗?
#是表示一个只能被设置不能被获取的数字,$是表示一个能被设置与获取的数字。
在这条命令中,#用来表示一个标志的索引,而$用来表示标志的值(0或1)。
比如说:
!!IF:V50/1;
那么标志50就被设置为1了。
比如说:
!!IF:V50/?y1;
那么y1就获取了V50的值。
(IF这个命令是一个很复杂的命令,而M、V这两个命令还算是简单的。)
我没有试过用这个命令将标志设置为非1和0的值,但是如果你这样做的话,肯定是会出错或无效的。
——————————————————————————
5、为了以后我打字方便,我以后就将标志n简写为Fn(形如F50),但是在ERM命令中是不支持这样写的。
——————————————————————————
6、一段例子:
在做剧情地图或脚本的时候,我们经常用到变量,比如说这样:
ZVSE
!#IF:V50/0;
!?OB16/24/0;一间小屋子
!!IF&-50:M^孩子,我要水,水,水。。。。^;
!!IF&50:M^太好了,水~咕咚咕咚咕咚咕咚^;
!?OB45/33/0;魔井
!!IF:V50/1;
!!IF:M^你取了一点水放进包袱里,希望那个老人还没有渴死。^;
如果你看懂了这段ERM说明你已经学懂了!
[ 本帖最后由 da3338280 于 2009-9-13 16:59 编辑 ] |
|