Project1
标题:
一行脚本,独立开关变独立变量
[打印本页]
作者:
SailCat
时间:
2010-12-13 15:18
标题:
一行脚本,独立开关变独立变量
难度极低却很有用的东西
最近在重新捡起好几年前的游戏,其中某个系统,需要个别设定几个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, 开关编号]]
作者:
enghao_lim
时间:
2010-12-14 10:16
这个供新人参考还是很不错的(^^)。
以前我也用变量一个个记录的说,所以还是很重要以下。
作者:
orochi2k
时间:
2010-12-14 20:53
本帖最后由 orochi2k 于 2010-12-14 20:54 编辑
class Game_Party #丢这里只是某种神奇的向下兼容存档方式
attr_accessor :miao
def miaomiao
unless miao
miao = {}
end
return miao
end
end
def miaomiaomiao
return $game_party.miaomiao
end
然后大家可以随便miaomiaomiao["地图1,事件1,那啥开关A"] = “那个啥"
呃……这个貌似是独立字符串 ~\(≧▽≦)/~(大雾)
作者:
姬文翔
时间:
2010-12-21 02:49
也是好 好的东东啊
作者:
九夜神尊
时间:
2011-1-14 15:21
挺短的,不过用起来麻烦了!
倒是说,你倒是给了我一个提示,我打算也写一个同样功能的脚本!
作者:
越前リョーマ
时间:
2011-1-15 00:15
原来简单一改就可以使用独立变量了……其实也不会麻烦,毕竟那些参数都是必要的。
话说“E”这玩意可以当做是名字么,比如“HP”这样……
作者:
yehaojie
时间:
2012-1-5 22:40
挖坟了,如果要 独立变量E 大于等于 普通变量编号1 怎么写
作者:
★PIG★
时间:
2012-1-6 11:21
嗯…这样的话…似乎能配合事件动态生成,实现“种菜”,摆脱单纯事件和变量的麻烦且底效率问题,嗯…试试
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1