赞 | 40 |
VIP | 559 |
好人卡 | 234 |
积分 | 47 |
经验 | 251834 |
最后登录 | 2024-10-11 |
在线时间 | 5240 小时 |
Lv3.寻梦者 (版主) 八宝粥的基叔
- 梦石
- 0
- 星屑
- 4679
- 在线时间
- 5240 小时
- 注册时间
- 2009-4-29
- 帖子
- 14318
|
这个命令就是控制本事件的独立开关。独立开关一共用4个,分别表示为A、B、C、D。每个事件都有这4个独立开关!
独立开关与开关的区别:开关是相对于整个游戏工程而言的,而独立开关是针对于某张地图的某一个事件而言的。一个独立开关只负责管一个事件!我举一个例子,你就可以明白了。
默认宝箱事件的设定是这样的,当你打开它以后,我们获得宝箱里的物品之后,就立刻打开该事件一个独立开关比如独立开关A,如果这个事件的独立开关A为打开状态,那么宝箱不再第二次给你物品。如果你不设置这个独立开关,那么每次在宝箱面前点确定,宝箱都会给你这个物品,显然这是不合理的。
也许你会问,我用开关不是也可以办到吗?的确开关也可以办到,但是假如我设定开关1为打开状态么宝箱不再第二次给你物品,那么整个游戏中其它的宝箱都不能使用开关1作为条件了,否则其他宝箱一都会被判断为【已经被打开过】。
总结:独立开关是每个事件都有的独立的开关,某个事件对自己的独立开关进行操作不会影响其它事件的独立开关状态。有多少个事件,就有多少个独立开关A、B、C、D与之对应,独立开关与独立开关之间没有丝毫联系!而开关不同,只要在任何一个事件任何地方被操作过,都会影响到整个游戏中这个开关所涉及的地方。开关的数量与事件的数量毫无关系。
进阶部分:
独立开关的实质
独立开关虽然是与事件一一对应,但是它并不是事件的属性,也就是说,事件没有类似$game_map.events[1].instance_variable_get(:@self_switche)这样的属性!那么怎么获取一个事件的独立开关呢?比方我想获取地图2的事件5中的独立开关B的情况,应该这样写脚本:- p $game_self_switches[[2,5,"B"]]
复制代码 独立开关的实质其实是一个哈希表(Hash)。
比如地图2的事件5中的独立开关B是打开状态,那么这个哈希表中一定存在这样的一个元素独立开关不是通过事件属性的办法来记录数据,而是使用外部的一个哈希表来记录的,因此在写入和读取存档时也必须有- Marshal.dump($game_self_switches, file)
复制代码 和- $game_self_switches = Marshal.load(file)
复制代码 的语句。
独立开关的脚本用法
假如我们想在地图1操作地图2中5号事件的独立开关B,而使用纯事件是无法办到的,因为事件法只能控制本事件的独立开关状态,这时我们就要使用- $game_self_switches[[2,5,"B"]] = true #打开独立开关B,注意不是ON
复制代码 或- $game_self_switches[[2,5,"B"]] = false #关闭独立开关B,注意不是OFF
复制代码 但是,如果想在本地图中的一个事件中操作另一个事件的独立开关,必须这样写,第二句脚本千万不要漏掉:- $game_self_switches[[2,5,"B"]] = true #打开独立开关B
- $game_map.need_refresh = true #强制地图画面刷新
复制代码 如果不写第二句,虽然独立开关已经被操作,但是地图图像没有任何变化,具体表现为:宝箱虽然已经被打开,但是从画面上看,宝箱依旧是关闭着的。 |
评分
-
查看全部评分
|