查看: 2517|回复: 7

[已经解决] 还是关于公共变量的问题

[复制链接]
梦石
0
星屑
50
在线时间
130 小时
注册时间
2008-8-12
回帖
117
发表于 2015-10-8 14:39:02 | 显示全部楼层 |阅读模式

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

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

×
搜到一个脚本,可以设置一个编号的变量为公用变量,那么如果我想设置编号为63、64、65的三个变量为公共变量,应该怎么修改脚本呢?
  1. class Game_Variables
  2.   FileVariablesID1 = 63
  3.   #--------------------------------------------------------------------------
  4.   # ● 初始化
  5.   #--------------------------------------------------------------------------
  6.   def initialize
  7.     @data = []
  8.   end
  9.   #--------------------------------------------------------------------------
  10.   # ● 获取变量
  11.   #     variable_id : 变量 ID
  12.   #--------------------------------------------------------------------------
  13.   def [](variable_id)
  14.     if variable_id == FileVariablesID1
  15.       begin
  16.         val = load_data("TempVariables.rxdata")
  17.       rescue Errno::ENOENT
  18.         save_data(0, "TempVariables.rxdata")
  19.         retry
  20.       end
  21.       return val
  22.     end
  23.     if variable_id <= 5000 and @data[variable_id] != nil
  24.       return @data[variable_id]
  25.     else
  26.       return 0
  27.     end
  28.   end
  29.   #--------------------------------------------------------------------------
  30.   # ● 设置变量
  31.   #     variable_id : 变量 ID
  32.   #     value       : 变量的值
  33.   #--------------------------------------------------------------------------
  34.   def []=(variable_id, value)
  35.     if variable_id <= 5000
  36.       @data[variable_id] = value
  37.     end
  38.     if variable_id == FileVariablesID1
  39.       save_data(@data[variable_id], "TempVariables.rxdata")
  40.     end
  41.   end
  42. end
复制代码

评分

参与人数 1星屑 +35 收起 理由
RyanBern + 35 手动认可奖励

查看全部评分

Tomorrow

素材区好人

梦石
5
星屑
12564
在线时间
4347 小时
注册时间
2011-7-21
回帖
2264

超评测参与极短28参与极短27参与极短26参与极短25参与极短24参与极短23参与极短22参与极短21参与

发表于 2015-10-8 15:18:04 | 显示全部楼层
看看行不行
class Game_Variables
  FileVariablesID1 = 63,64,65
  #--------------------------------------------------------------------------
  # ● 初始化
  #--------------------------------------------------------------------------
  def initialize
    @data = []
  end
  #--------------------------------------------------------------------------
  # ● 获取变量
  #     variable_id : 变量 ID
  #--------------------------------------------------------------------------
  def [](variable_id)
    if variable_id == FileVariablesID1
      begin
        val = load_data("TempVariables.rxdata")
      rescue Errno::ENOENT
        save_data(0, "TempVariables.rxdata")
        retry
      end
      return val
    end
    if variable_id <= 5000 and @data[variable_id] != nil
      return @data[variable_id]
    else
      return 0
    end
  end
  #--------------------------------------------------------------------------
  # ● 设置变量
  #     variable_id : 变量 ID
  #     value       : 变量的值
  #--------------------------------------------------------------------------
  def []=(variable_id, value)
    if variable_id <= 5000
      @data[variable_id] = value
    end
    if variable_id == FileVariablesID1
      save_data(@data[variable_id], "TempVariables.rxdata")
    end
  end
end
回复

使用道具 举报

梦石
0
星屑
50
在线时间
130 小时
注册时间
2008-8-12
回帖
117
 楼主| 发表于 2015-10-8 15:32:40 | 显示全部楼层
无忧谷主幻 发表于 2015-10-8 15:18
看看行不行

改成这样一个变量都保存不了,新建游戏就全部归零了
Tomorrow
回复

使用道具 举报

梦石
0
星屑
170
在线时间
809 小时
注册时间
2013-8-23
回帖
773

开拓者

发表于 2015-10-8 15:33:06 | 显示全部楼层
本帖最后由 冰水金刚 于 2015-10-8 21:43 编辑

[pre lang="ruby"]$valh = {}
class Game_Variables
  FileVariablesID1 = [63,64,65]
  #--------------------------------------------------------------------------
  # ● 初始化
  #--------------------------------------------------------------------------
  def initialize
    @data = []
  end
  #--------------------------------------------------------------------------
  # ● 获取变量
  #     variable_id : 变量 ID
  #--------------------------------------------------------------------------
  def [](variable_id)
    FileVariablesID1.each do |i|
      if variable_id == i
        begin
          valh = load_data("TempVariables.rxdata")
          val = valh
        rescue Errno::ENOENT
          valh={}
          for i in FileVariablesID1.each
             valh=0
          end
          save_data(valh, "TempVariables.rxdata")
          retry
        end
        return val
      end
    end
    if variable_id <= 5000 and @data[variable_id] != nil
      return @data[variable_id]
    else
      return 0
    end
  end
  #--------------------------------------------------------------------------
  # ● 设置变量
  #     variable_id : 变量 ID
  #     value       : 变量的值
  #--------------------------------------------------------------------------
  def []=(variable_id, value)
    if variable_id <= 5000
      @data[variable_id] = value
    end
    n = 0
    FileVariablesID1.each do |i|
      if variable_id == i
        $valh=@data[variable_id]
        n+=1
      end
    end
    if n > 0
      save_data($valh, "TempVariables.rxdata")
    end
  end
end[/pre]

评分

参与人数 2星屑 +20 梦石 +1 收起 理由
RyanBern + 1 认可答案
兔毛鹿 + 20 认可答案

查看全部评分

遗失的签名。。。
回复

使用道具 举报

梦石
0
星屑
50
在线时间
130 小时
注册时间
2008-8-12
回帖
117
 楼主| 发表于 2015-10-8 15:50:03 | 显示全部楼层
本帖最后由 兔毛鹿 于 2015-10-8 15:51 编辑
冰水金刚 发表于 2015-10-8 15:33
class Game_Variables
  FileVariablesID1 = [63,64,65]
  #-------------------------------------------- ...


我通过事件给变量赋值的时候就报错:脚本的47行发生了 LocalJumpError。  no block given
Tomorrow
回复

使用道具 举报

梦石
0
星屑
170
在线时间
809 小时
注册时间
2013-8-23
回帖
773

开拓者

发表于 2015-10-8 18:32:58 | 显示全部楼层
本帖最后由 冰水金刚 于 2015-10-8 18:43 编辑

把for i in FileVariablesID1a.each
全换成FileVariablesID1.each do |i|
回复

使用道具 举报

梦石
0
星屑
50
在线时间
130 小时
注册时间
2008-8-12
回帖
117
 楼主| 发表于 2015-10-8 19:23:20 | 显示全部楼层
冰水金刚 发表于 2015-10-8 18:32
把for i in FileVariablesID1a.each
全换成FileVariablesID1.each do |i|

这样改了以后测试给三个变量赋值,只有第三个变量是正确的,前两个变量都是nil

点评

已修改  发表于 2015-10-8 21:44
Tomorrow
回复

使用道具 举报

梦石
0
星屑
1788
在线时间
1313 小时
注册时间
2012-8-4
回帖
724
发表于 2015-10-8 22:01:27 | 显示全部楼层
本帖最后由 夜狠简单 于 2015-10-8 22:04 编辑

重新进入游戏后读取不到
回复

使用道具 举报

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

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部