赞 | 342 |
VIP | 10 |
好人卡 | 8 |
积分 | 258 |
经验 | 235776 |
最后登录 | 2025-2-11 |
在线时间 | 2354 小时 |
Lv5.捕梦者 (版主) 遠航の猫咪
- 梦石
- 3
- 星屑
- 22764
- 在线时间
- 2354 小时
- 注册时间
- 2005-10-15
- 帖子
- 1161

|
加入我们,或者,欢迎回来。
您需要 登录 才可以下载或查看,没有帐号?注册会员
x
难度极低却很有用的东西
最近在重新捡起好几年前的游戏,其中某个系统,需要个别设定几个NPC的各项参数
直接写到RGSS里显然不合适,而用宏观变量处理起来又很麻烦
于是想到了独立开关,但是RMXP的独立开关只能返回true和false值
基于ruby的语言特性——凡是false和nil会被解释成false,其余的一切值都会被解释成true——
只需要一行脚本,就可以将独立开关变成我所需要的独立变量:
Game_SelfSwitches第20行:
原文: return @data[key] == true ? true : false
改为: return @data[key] == nil ? false : @data[key]
即可。
之后可以用事件脚本的方式操作独立变量:
$game_self_switches[[$game_map.map_id, @event_id, "E"]]=4
$game_self_switches[[$game_map.map_id, @event_id, "E"]]+=5
条件分岐:脚本:$game_self_switches[[$game_map.map_id, @event_id, "E"]]==9
blabla
分歧结束
几点说明:
1. 在将开关当变量操作运算(包括作为条件分歧中的比较)前,需要先进行变量赋值,否则会有FalseClass的NoMethodError
2. 但如果是直接当开关操作则不用,比如
$game_self_switches[[$game_map.map_id, @event_id, "E"]]=!$game_self_switches[[$game_map.map_id, @event_id, "E"]]
3. 原来的独立开关逻辑仍然保留,不受任何影响,不过还是建议用到独立变量时,编号从E开始设置比较好
4. 注意引用下标的写法,双层方括号,不要写漏了。
5. 引用其他事件的独立开关:$game_self_switches[[$game_map.map_id, 那个事件的ID, 开关编号]] |
|