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

Project1

 找回密码
 注册会员
搜索

禁止存档失效

查看数: 2475 | 评论数: 5 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2017-5-27 17:26

正文摘要:

如题,我的禁止存档失效了 尝试找了很多相关的帖子却解决不了问题 场景是在某个地图/迷宫禁止玩家存档 我设置事件是: 并行处理+禁止存档+打开独立开关A > 事件条件独立开关A Window_Command脚本: RUBY  ...

回复

blueppe 发表于 2017-5-28 10:28:04
guoxiaomi 发表于 2017-5-27 23:51
我知道bug在哪了,把35行的4改成2。

成功了!!!!!!!!!!!!!
问题解决了!!!!!!!!!!!!!
感谢大大!!!!!!!!!!!!!
我好激动!!!!!!!!!!!
给大大爱心<3<3<3(恐怖
guoxiaomi 发表于 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

查看全部评分

blueppe 发表于 2017-5-27 23:31:05
感谢拯救我的手残(笑哭

嗯...其实我不是很懂...是说我应该去哪里找 还是怎样知道 $data_system.words.item 是nil呢OWO/?
blueppe 发表于 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
guoxiaomi 发表于 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 中的选项。

跟自动存档事件的设置无关。
拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

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

GMT+8, 2024-11-30 17:10

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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