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

Project1

 找回密码
 注册会员
搜索
12
返回列表 发新帖
楼主: sai90306

[已经解决] 請問如何用全局變量給腳本設定一個開關

 关闭 [复制链接]

Lv2.观梦者

傻♂逼

梦石
0
星屑
369
在线时间
1605 小时
注册时间
2007-3-13
帖子
6562

烫烫烫开拓者

发表于 2012-4-17 14:37:22 | 显示全部楼层
膜拜神脚本特么这个判个开关有这么累么= =·
class Foo
  def update
    if $yangff.is_a?(SB)
      开启脚本内容
    end
  end
end
。。。有多累?

点评

版务区空降+1  发表于 2012-4-17 16:43
不好意思...弱弱的問下請問SB是代表什麼意思?  发表于 2012-4-17 16:19
版务区空降的给各位神犇跪下了!  发表于 2012-4-17 14:38
哎呀,蛋疼什么的最有爱了
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
100
在线时间
5250 小时
注册时间
2011-10-7
帖子
1885

开拓者贵宾

发表于 2012-4-17 15:07:02 | 显示全部楼层

RE: 請問如何用全局變量給腳本設定一個開關

本帖最后由 凌童鞋 于 2012-4-17 15:19 编辑
yangff 发表于 2012-4-17 14:37
膜拜神脚本特么这个判个开关有这么累么= =·
class Foo
  def update


同意,只要屏蔽updata就好了..不updata脚本就近乎没作用...
不过如果是挂在其它功能上面那种呢...
大概这样可以吧...
class Ling
def hello
   p 'hello'
  end
end if $game_switches[1]
然后记得eval来加载,否则无效
s = load_data('Data/Script.rxdata')

然后想办法找到这页脚本Zlib解压..
手机回这种帖真累挺!这是思路,有错误别吐槽..
据说Main下的东西不加载,反正我的思路就是开始时不加载然后手工eval就对了..
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
55
在线时间
461 小时
注册时间
2008-11-19
帖子
607
 楼主| 发表于 2012-4-17 17:15:59 | 显示全部楼层
本帖最后由 sai90306 于 2012-4-17 17:18 编辑
eve592370698 发表于 2012-4-17 07:09
不好意思,出现这个错误是我缺乏相关理论知识,这怨我。
在自由Ruby语言里头,这么做绝对是没问题的,但 ...


請問為什麼我在
腳本中插入
  1.     class Eve592370698
  2.       if $abc == true
  3.         p "谁说我跳不出来?"
  4.         def hello
  5.           p "嘿嘿"
  6.         end
  7.       else
  8.         p "就是错误的"
  9.       end
  10.     end
复制代码
在事件中插入腳本
  1. $abc = false
  2. Eve592370698.new.hello
复制代码
對話後
會出現"unidentified method 'hello' for Eve592370698" ?

点评

考虑一下ruby…一旦覆盖定义就不太能取消。因此只能在定义内进行判断。也就是说您需要在每个覆盖了原脚本中定义的定义里判断。  发表于 2012-4-17 21:27
那值要怎麼設才能符合定義呢?設數字嗎?  发表于 2012-4-17 19:08
出错的原因是hello那个方法因为之前变量的值不符合要求而没有被定义,所以出现运行错误。  发表于 2012-4-17 19:01
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
112 小时
注册时间
2011-10-6
帖子
182
发表于 2012-4-17 20:05:01 | 显示全部楼层
sai90306 发表于 2012-4-17 17:15
請問為什麼我在
腳本中插入在事件中插入腳本對話後
會出現"unidentified method 'hello' for Eve59237069 ...

定义在这里作为动词使用
来分析这段代码

  1. def a; p 5; end
  2. if $abc==true
  3. def a; p 21; end
  4. end
  5. $abc=true
  6. a
复制代码

结果是多少呢?
5!

def这个是下定义。

接下来分析运行顺序
第一行下了a的定义、显示5。接着下一行。
第二行判断$abc,但是这个时候还没有$abc所以跳过到第五行了。第三行的定义实际上没有执行。
第五行才设置$abc。
第六行调用a,根据下的定义于是显示5。这里并不会返回去判断。因为ruby不管在不在类中代码都是按顺序执行的。于是程序结束。

因此正确的方法是在定义内判断,而不是在下定义的时候判断。因为只要后者只会执行一次,相当于下了定义之后就和abc再也没有关系。

正确的代码
  1. def a
  2. if $abc==true
  3. p 21
  4. else
  5. p 5
  6. end
  7. end

  8. $abc=true
  9. a
复制代码


评分

参与人数 1梦石 +2 +2 收起 理由
eve592370698 + 2 + 2 对于脚本初学者来说,至关重要!.

查看全部评分

回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-3-29 17:04

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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