设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 4107|回复: 7
打印 上一主题 下一主题

[原创发布] 一行脚本,独立开关变独立变量

[复制链接]

Lv5.捕梦者 (版主)

遠航の猫咪

梦石
3
星屑
22442
在线时间
2335 小时
注册时间
2005-10-15
帖子
1160

开拓者

跳转到指定楼层
1
发表于 2010-12-13 15:18:16 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

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, 开关编号]]

点评

谢谢啦,很棒,找了很久了,终于可以疯狂的复制事件,而无须一一修改了  发表于 2011-4-2 13:32
SailCat (小猫子·要开心一点) 共上站 24 次,发表过 11 篇文章 上 次 在: [2006年01月28日11:41:18 星期六] 从 [162.105.120.91] 到本站一游。

Lv4.逐梦者

梦石
0
星屑
7946
在线时间
1182 小时
注册时间
2007-7-29
帖子
2055
2
发表于 2010-12-14 10:16:54 | 只看该作者
这个供新人参考还是很不错的(^^)。
以前我也用变量一个个记录的说,所以还是很重要以下。
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
1
星屑
8940
在线时间
4371 小时
注册时间
2005-10-22
帖子
6751

开拓者贵宾

3
发表于 2010-12-14 20:53:44 | 只看该作者
本帖最后由 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"] = “那个啥"



呃……这个貌似是独立字符串 ~\(≧▽≦)/~(大雾)

回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
301
在线时间
573 小时
注册时间
2005-10-27
帖子
1164
4
发表于 2010-12-21 02:49:47 | 只看该作者
也是好 好的东东啊

评分

参与人数 1星屑 -10 收起 理由
fux2 -10 请勿打酱油

查看全部评分

认真地猥琐,猥琐地认真
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1316
在线时间
831 小时
注册时间
2007-12-25
帖子
1558
5
发表于 2011-1-14 15:21:14 | 只看该作者
挺短的,不过用起来麻烦了!
倒是说,你倒是给了我一个提示,我打算也写一个同样功能的脚本!
精卫赤龙腾   
总是存在一种强大,去完成似乎不可能的事情.
无畏战乾程   
或是需要一种勇气,去挑战几乎不存在的胜利.
一味玄真魂     
这是拥有一种恒心,去化解根本没有解的困难.
烈卫开天径    
只是带着一种决心,去争取残存的最后的希望。
回复 支持 反对

使用道具 举报

Lv3.寻梦者 (暗夜天使)

名侦探小柯

梦石
0
星屑
3263
在线时间
3616 小时
注册时间
2006-9-6
帖子
37399

开拓者贵宾第3届短篇游戏大赛主流游戏组亚军第5届短篇游戏比赛亚军

6
发表于 2011-1-15 00:15:28 | 只看该作者
原来简单一改就可以使用独立变量了……其实也不会麻烦,毕竟那些参数都是必要的。
话说“E”这玩意可以当做是名字么,比如“HP”这样……
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
94 小时
注册时间
2007-6-3
帖子
801
7
发表于 2012-1-5 22:40:11 | 只看该作者
挖坟了,如果要     独立变量E  大于等于  普通变量编号1   怎么写
无签名,不解释
回复 支持 反对

使用道具 举报

Lv1.梦旅人

PIG·KIN

梦石
0
星屑
45
在线时间
442 小时
注册时间
2009-1-26
帖子
3298

贵宾

8
发表于 2012-1-6 11:21:34 手机端发表。 | 只看该作者
嗯…这样的话…似乎能配合事件动态生成,实现“种菜”,摆脱单纯事件和变量的麻烦且底效率问题,嗯…试试
我是一个风一般的————外卖佬。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

//
拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-4-26 15:17

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表