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

Project1

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

[已经解决] 禁止存档失效

[复制链接]

Lv2.观梦者

梦石
0
星屑
386
在线时间
56 小时
注册时间
2017-5-16
帖子
20
跳转到指定楼层
1
发表于 2017-5-27 17:26:15 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

x
如题,我的禁止存档失效了
尝试找了很多相关的帖子却解决不了问题

场景是在某个地图/迷宫禁止玩家存档

我设置事件是:
并行处理+禁止存档+打开独立开关A > 事件条件独立开关A


然而在试玩时,在此地图尝试打开菜单却出现了问题(如图):


Window_Command脚本:

RUBY 代码复制
  1. #==============================================================================
  2. # ■ Window_Command
  3. #------------------------------------------------------------------------------
  4. #  一般的命令选择行窗口。
  5. #==============================================================================
  6.  
  7. class Window_Command < Window_Selectable
  8.   #--------------------------------------------------------------------------
  9.   # ● 初始化对像
  10.   #     width    : 窗口的宽
  11.   #     commands : 命令字符串序列
  12.   #--------------------------------------------------------------------------
  13.   def initialize(width, commands)
  14.     # 由命令的个数计算出窗口的高
  15.     super(0, 0, width, commands.size * 32 + 32)
  16.     @item_max = commands.size
  17.     @commands = commands
  18.     self.contents = Bitmap.new(width - 32, @item_max * 32)
  19.     refresh
  20.     self.index = 0
  21.   end
  22.   #--------------------------------------------------------------------------
  23.   # ● 刷新
  24.   #--------------------------------------------------------------------------
  25.   def refresh
  26.     self.contents.clear
  27.     for i in 0...@item_max
  28.       draw_item(i, normal_color)
  29.     end
  30.   end
  31.   #--------------------------------------------------------------------------
  32.   # ● 描绘项目
  33.   #     index : 项目编号
  34.   #     color : 文字色
  35.   #--------------------------------------------------------------------------
  36.   def draw_item(index, color)
  37.     self.contents.font.color = color
  38.     rect = Rect.new(4, 32 * index, self.contents.width - 8, 32)
  39.     self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
  40.     self.contents.draw_text(rect, @commands[index])
  41.   end
  42.   #--------------------------------------------------------------------------
  43.   # ● 项目无效化
  44.   #     index : 项目编号
  45.   #--------------------------------------------------------------------------
  46.   def disable_item(index)
  47.     draw_item(index, disabled_color)
  48.   end
  49. end



看不懂脚本我也不知道到底是哪出现了问题所以前来跪下求助了QAQ!
希望找到解决方案,谢谢!(跪
第一次发帖,若有什么地方违规的话也请多指教!

Lv5.捕梦者 (版主)

梦石
1
星屑
23984
在线时间
3339 小时
注册时间
2011-7-8
帖子
3926

开拓者

2
发表于 2017-5-27 18:19:55 | 只看该作者
本帖最后由 guoxiaomi 于 2017-5-27 18:21 编辑

先解释一下报错原因,这是 40 行的代码,报错信息的意思是:“不能将 nil 转化成 字符串(string)”
  1. self.contents.draw_text(rect, @commands[index])
复制代码

为什么会报错,因为 @commands[index] 这个数组调用的 index 超出了数组的范围,或者是 @commands 里面有为 nil 的项。而 draw_text 的第二个参数是要描绘的字符串。传入了 nil 对象导致报错。

既然是打开菜单报错,看看你是不是修改了 Window_Menu 中的选项。

跟自动存档事件的设置无关。
熟悉rgss和ruby,xp区版主~
正在填坑:《膜拜组传奇》讲述膜拜组和学霸们的故事。
已上steam:与TXBD合作的Reformers《变革者》
* 战斗调用公共事件 *
* RGSOS 网络脚本 *
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
386
在线时间
56 小时
注册时间
2017-5-16
帖子
20
3
 楼主| 发表于 2017-5-27 18:50:25 | 只看该作者
本帖最后由 blueppe 于 2017-5-27 19:00 编辑

感谢回复!(拥抱

我的脚本里边好像没有Window_Menu的文件夹QAQ
倒是有Window_Menu Status 和 Scene_Menu

如果说改过的话,我是有改过Scene_Menu的选项(苦恼
以下是我的Scene_Menu脚本:
  1. #==============================================================================
  2. # ■ Scene_Menu
  3. #------------------------------------------------------------------------------
  4. #  处理菜单画面的类。
  5. #==============================================================================

  6. class Scene_Menu
  7.   #--------------------------------------------------------------------------
  8.   # ● 初始化对像
  9.   #     menu_index : 命令光标的初期位置
  10.   #--------------------------------------------------------------------------
  11.   def initialize(menu_index = 0)
  12.     @menu_index = menu_index
  13.   end
  14.   #--------------------------------------------------------------------------
  15.   # ● 主处理
  16.   #--------------------------------------------------------------------------
  17.   def main
  18.     # 生成命令窗口
  19.     s1 = $data_system.words.item
  20.     s2 = "状态"
  21.     s3 = "存档"
  22.     s4 = "结束游戏"
  23.     @command_window = Window_Command.new(160, [s1, s2, s3, s4])
  24.     @command_window.index = @menu_index
  25.     # 同伴人数为 0 的情况下
  26.     if $game_party.actors.size == 0
  27.       # 物品、特技、装备、状态无效化
  28.       @command_window.disable_item(0)
  29.       @command_window.disable_item(1)
  30.     end
  31.     # 禁止存档的情况下
  32.     if $game_system.save_disabled
  33.       # 存档无效
  34.       @command_window.disable_item(4)
  35.     end
  36.     # 生成游戏时间窗口
  37.     @playtime_window = Window_PlayTime.new
  38.     @playtime_window.x = 0
  39.     @playtime_window.y = 224
  40.     # 生成步数窗口
  41.     @steps_window = Window_Steps.new
  42.     @steps_window.x = 0
  43.     @steps_window.y = 320
  44.     # 生成金钱窗口
  45.     #@gold_window = Window_Gold.new
  46.     #@gold_window.x = 0
  47.     #@gold_window.y = 416
  48.     # 生成状态窗口
  49.     @status_window = Window_MenuStatus.new
  50.     @status_window.x = 160
  51.     @status_window.y = 0
  52.     # 执行过渡
  53.     Graphics.transition
  54.     # 主循环
  55.     loop do
  56.       # 刷新游戏画面
  57.       Graphics.update
  58.       # 刷新输入信息
  59.       Input.update
  60.       # 刷新画面
  61.       update
  62.       # 如果切换画面就中断循环
  63.       if $scene != self
  64.         break
  65.       end
  66.     end
  67.     # 准备过渡
  68.     Graphics.freeze
  69.     # 释放窗口
  70.     @command_window.dispose
  71.     @playtime_window.dispose
  72.     @steps_window.dispose
  73.     #@gold_window.dispose
  74.     @status_window.dispose
  75.   end
  76.   #--------------------------------------------------------------------------
  77.   # ● 刷新画面
  78.   #--------------------------------------------------------------------------
  79.   def update
  80.     # 刷新窗口
  81.     @command_window.update
  82.     @playtime_window.update
  83.     @steps_window.update
  84.     #@gold_window.update
  85.     @status_window.update
  86.     # 命令窗口被激活的情况下: 调用 update_command
  87.     if @command_window.active
  88.       update_command
  89.       return
  90.     end
  91.     # 状态窗口被激活的情况下: 调用 update_status
  92.     if @status_window.active
  93.       update_status
  94.       return
  95.     end
  96.   end
  97.   #--------------------------------------------------------------------------
  98.   # ● 刷新画面 (命令窗口被激活的情况下)
  99.   #--------------------------------------------------------------------------
  100.   def update_command
  101.     # 按下 B 键的情况下
  102.     if Input.trigger?(Input::B)
  103.       # 演奏取消 SE
  104.       $game_system.se_play($data_system.cancel_se)
  105.       # 切换的地图画面
  106.       $scene = Scene_Map.new
  107.       return
  108.     end
  109.     # 按下 C 键的情况下
  110.     if Input.trigger?(Input::C)
  111.       # 同伴人数为 0、存档、游戏结束以外的场合
  112.       if $game_party.actors.size == 0 and @command_window.index < 4
  113.         # 演奏冻结 SE
  114.         $game_system.se_play($data_system.buzzer_se)
  115.         return
  116.       end
  117.       # 命令窗口的光标位置分支
  118.       case @command_window.index
  119.       when 0  # 物品
  120.         # 演奏确定 SE
  121.         $game_system.se_play($data_system.decision_se)
  122.         # 切换到物品画面
  123.         $scene = Scene_Item.new
  124.       when 1  # 状态
  125.         # 演奏确定 SE
  126.         $game_system.se_play($data_system.decision_se)
  127.         # 激活状态窗口
  128.         @command_window.active = false
  129.         @status_window.active = true
  130.         @status_window.index = 0
  131.       when 2  # 存档
  132.         # 禁止存档的情况下
  133.         if $game_system.save_disabled
  134.           # 演奏冻结 SE
  135.           $game_system.se_play($data_system.buzzer_se)
  136.           return
  137.         end
  138.         # 演奏确定 SE
  139.         $game_system.se_play($data_system.decision_se)
  140.         # 切换到存档画面
  141.         $scene = Scene_Save.new
  142.       when 3  # 游戏结束
  143.         # 演奏确定 SE
  144.         $game_system.se_play($data_system.decision_se)
  145.         # 切换到游戏结束画面
  146.         $scene = Scene_End.new
  147.       end
  148.       return
  149.     end
  150.   end
  151.   #--------------------------------------------------------------------------
  152.   # ● 刷新画面 (状态窗口被激活的情况下)
  153.   #--------------------------------------------------------------------------
  154.   def update_status
  155.     # 按下 B 键的情况下
  156.     if Input.trigger?(Input::B)
  157.       # 演奏取消 SE
  158.       $game_system.se_play($data_system.cancel_se)
  159.       # 激活命令窗口
  160.       @command_window.active = true
  161.       @status_window.active = false
  162.       @status_window.index = -1
  163.       return
  164.     end
  165.     # 按下 C 键的情况下
  166.     if Input.trigger?(Input::C)
  167.       # 命令窗口的光标位置分支
  168.       case @command_window.index
  169.       when 1  # 状态
  170.         # 演奏确定 SE
  171.         $game_system.se_play($data_system.decision_se)
  172.         # 切换到状态画面
  173.         $scene = Scene_Status.new(@status_window.index)
  174.       end
  175.       return
  176.     end
  177.   end
  178. end
复制代码


然后我手残的把自己帖子标记为已解决再变成已过期(被自己的笑哭

点评

会不会是 $data_system.words.item 是nil?这个脚本的改动我看没有啥问题啊  发表于 2017-5-27 20:03
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
386
在线时间
56 小时
注册时间
2017-5-16
帖子
20
4
 楼主| 发表于 2017-5-27 23:31:05 | 只看该作者
感谢拯救我的手残(笑哭

嗯...其实我不是很懂...是说我应该去哪里找 还是怎样知道 $data_system.words.item 是nil呢OWO/?
回复 支持 反对

使用道具 举报

Lv5.捕梦者 (版主)

梦石
1
星屑
23984
在线时间
3339 小时
注册时间
2011-7-8
帖子
3926

开拓者

5
发表于 2017-5-27 23:51:31 | 只看该作者
blueppe 发表于 2017-5-27 23:31
感谢拯救我的手残(笑哭

嗯...其实我不是很懂...是说我应该去哪里找 还是怎样知道 $data_system.words.ite ...

我知道bug在哪了,把35行的4改成2。

评分

参与人数 1星屑 +166 收起 理由
RyanBern + 166 6

查看全部评分

熟悉rgss和ruby,xp区版主~
正在填坑:《膜拜组传奇》讲述膜拜组和学霸们的故事。
已上steam:与TXBD合作的Reformers《变革者》
* 战斗调用公共事件 *
* RGSOS 网络脚本 *
回复 支持 1 反对 0

使用道具 举报

Lv2.观梦者

梦石
0
星屑
386
在线时间
56 小时
注册时间
2017-5-16
帖子
20
6
 楼主| 发表于 2017-5-28 10:28:04 | 只看该作者
guoxiaomi 发表于 2017-5-27 23:51
我知道bug在哪了,把35行的4改成2。

成功了!!!!!!!!!!!!!
问题解决了!!!!!!!!!!!!!
感谢大大!!!!!!!!!!!!!
我好激动!!!!!!!!!!!
给大大爱心<3<3<3(恐怖
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-9-21 23:27

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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