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

Project1

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

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

[复制链接]

Lv1.梦旅人

梦石
0
星屑
57
在线时间
131 小时
注册时间
2008-8-12
帖子
184
跳转到指定楼层
1
发表于 2015-10-8 14:39:02 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
搜到一个脚本,可以设置一个编号的变量为公用变量,那么如果我想设置编号为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

Lv4.逐梦者

素材区好人

梦石
3
星屑
7329
在线时间
3525 小时
注册时间
2011-7-21
帖子
2280

极短24参与极短23参与极短22参与极短21参与

2
发表于 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
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
57
在线时间
131 小时
注册时间
2008-8-12
帖子
184
3
 楼主| 发表于 2015-10-8 15:32:40 | 只看该作者
无忧谷主幻 发表于 2015-10-8 15:18
看看行不行

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

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
165
在线时间
809 小时
注册时间
2013-8-23
帖子
804

开拓者

4
发表于 2015-10-8 15:33:06 | 只看该作者
本帖最后由 冰水金刚 于 2015-10-8 21:43 编辑

RUBY 代码复制
  1. $valh = {}
  2. class Game_Variables
  3.   FileVariablesID1 = [63,64,65]
  4.   #--------------------------------------------------------------------------
  5.   # ● 初始化
  6.   #--------------------------------------------------------------------------
  7.   def initialize
  8.     @data = []
  9.   end
  10.   #--------------------------------------------------------------------------
  11.   # ● 获取变量
  12.   #     variable_id : 变量 ID
  13.   #--------------------------------------------------------------------------
  14.   def [](variable_id)
  15.     FileVariablesID1.each do |i|
  16.       if variable_id == i
  17.         begin
  18.           valh = load_data("TempVariables.rxdata")
  19.           val = valh[i]
  20.         rescue Errno::ENOENT
  21.           valh={}
  22.           for i in FileVariablesID1.each
  23.              valh[i]=0
  24.           end
  25.           save_data(valh, "TempVariables.rxdata")
  26.           retry
  27.         end
  28.         return val
  29.       end
  30.     end
  31.     if variable_id <= 5000 and @data[variable_id] != nil
  32.       return @data[variable_id]
  33.     else
  34.       return 0
  35.     end
  36.   end
  37.   #--------------------------------------------------------------------------
  38.   # ● 设置变量
  39.   #     variable_id : 变量 ID
  40.   #     value       : 变量的值
  41.   #--------------------------------------------------------------------------
  42.   def []=(variable_id, value)
  43.     if variable_id <= 5000
  44.       @data[variable_id] = value
  45.     end
  46.     n = 0
  47.     FileVariablesID1.each do |i|
  48.       if variable_id == i
  49.         $valh[i]=@data[variable_id]
  50.         n+=1
  51.       end
  52.     end
  53.     if n > 0
  54.       save_data($valh, "TempVariables.rxdata")
  55.     end
  56.   end
  57. end

评分

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

查看全部评分

遗失的签名。。。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
57
在线时间
131 小时
注册时间
2008-8-12
帖子
184
5
 楼主| 发表于 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
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
165
在线时间
809 小时
注册时间
2013-8-23
帖子
804

开拓者

6
发表于 2015-10-8 18:32:58 | 只看该作者
本帖最后由 冰水金刚 于 2015-10-8 18:43 编辑

把for i in FileVariablesID1a.each
全换成FileVariablesID1.each do |i|
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
57
在线时间
131 小时
注册时间
2008-8-12
帖子
184
7
 楼主| 发表于 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
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1353
在线时间
1295 小时
注册时间
2012-8-4
帖子
749
8
发表于 2015-10-8 22:01:27 | 只看该作者
本帖最后由 夜狠简单 于 2015-10-8 22:04 编辑

重新进入游戏后读取不到
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-9-20 06:41

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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