Project1

标题: rpgxp自行制作脚本修改出错,求助 [打印本页]

作者: lshy1993    时间: 2013-8-26 13:51
标题: rpgxp自行制作脚本修改出错,求助
本帖最后由 lshy1993 于 2013-8-26 13:54 编辑

我想做一个查看任务的系统,其实就是在菜单里面看,分为上窗口列表下窗口解释
因为与道具窗口十分相似,所以我打算在道具的脚本里面修改。
但是修改几次后一直出现这种错误

或者

求帮助指出脚本编辑哪里出错?
或者是我从根本上考虑出错了。

以下是代码

首先是菜单里面按下后转到 Scene_Quest
  1. class Scene_Quest
  2.   #--------------------------------------------------------------------------
  3.   # ● 主处理
  4.   #--------------------------------------------------------------------------
  5.   def main
  6.     # 生成帮助窗口、任务窗口
  7.     @help2_window = Window_Help.new
  8.     @quest_window = Window_Quest.new
  9.     # 关联帮助窗口
  10.     @quest_window.help_window = @help2_window
  11.     # 生成目标窗口 (设置为不可见・不活动)
  12.     @target_window = Window_Target.new
  13.     @target_window.visible = false
  14.     @target_window.active = false
  15.     # 执行过度
  16.     Graphics.transition
  17.     # 设置光标位置
  18.     #@quest_window.index = @quest_index
  19.     # 执行过渡
  20.     Graphics.transition
  21.     # 主循环
  22.     loop do
  23.       # 刷新游戏画面
  24.       Graphics.update
  25.       # 刷新输入信息
  26.       Input.update
  27.       # 刷新画面
  28.       update
  29.       # 如果画面切换的话的就中断循环
  30.       if $scene != self
  31.         break
  32.       end
  33.     end
  34.     # 准备过渡
  35.     Graphics.freeze
  36.     # 释放窗口
  37.     @help2_window.dispose
  38.     @quest_window.dispose
  39.   end
  40.   #--------------------------------------------------------------------------
  41.   # ● 刷新画面
  42.   #--------------------------------------------------------------------------
  43.   def update
  44.     # 刷新窗口
  45.     @quest_window.update
  46.     @help2_window.update
  47.     if Input.trigger?(Input::B)
  48.       # 演奏取消 SE
  49.       $game_system.se_play($data_system.cancel_se)
  50.       # 切换到菜单画面
  51.       $scene = Scene_Menu.new(1)
  52.       return
  53.     end
  54.     if Input.trigger?(Input::C)
  55.       # 演奏无效 SE
  56.       $game_system.se_play($data_system.buzzer_se)
  57.       return
  58.     end
  59.   end
  60. end
复制代码
然后是Window_Quest
  1. #==============================================================================
  2. # ■ Window_Quest
  3. #------------------------------------------------------------------------------
  4. #  任务介绍的窗口。
  5. #==============================================================================

  6. class Window_Quest < Window_Selectable
  7.   #--------------------------------------------------------------------------
  8.   # ● 初始化对像
  9.   #--------------------------------------------------------------------------
  10.   def initialize
  11.     super(0, 0, 640, 352)
  12.     @column_max = 1
  13.     refresh
  14.     self.index = 0
  15.   end
  16.   #--------------------------------------------------------------------------
  17.   # ● 获取物品
  18.   #--------------------------------------------------------------------------
  19.   def item
  20.     return @data[self.index]
  21.   end
  22.   #--------------------------------------------------------------------------
  23.   # ● 刷新
  24.   #--------------------------------------------------------------------------
  25.   def refresh
  26.     if self.contents != nil
  27.       self.contents.dispose
  28.       self.contents = nil
  29.     end
  30.     @data = []
  31.     # 添加物品
  32.     for i in 0...$game_quest.id.size
  33.       @data.push($game_quest.name[i])
  34.     end
  35.     # 如果项目数不是 0 就生成位图、重新描绘全部项目
  36.     @item_max = @data.size - 1
  37.     if @item_max > 0
  38.       #self.contents = Bitmap.new(width - 32, row_max * 32)
  39.       for i in 0...@item_max
  40.         draw_item(i)
  41.       end
  42.     end
  43.   end
  44.   #--------------------------------------------------------------------------
  45.   # ● 描绘项目
  46.   #     index : 项目编号
  47.   #--------------------------------------------------------------------------
  48.   def draw_item(index)
  49.     item = @data[index]
  50.     if $game_quest.done[index] == 1
  51.       self.contents.font.color = normal_color
  52.     else
  53.       self.contents.font.color = disabled_color
  54.     end
  55.     x = 4 + index % 2 * (288 + 32)
  56.     y = index / 2 * 32
  57.     rect = Rect.new(x, y, self.width / @column_max - 32, 32)
  58.     self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
  59.     self.contents.draw_text(x + 28, y, 212, 32, item, 0)
  60.   end
  61. #--------------------------------------------------------------------------
  62. # ● 刷新帮助文本
  63. #--------------------------------------------------------------------------
  64.   def update_help
  65.   item = @data.size
  66.     @help_window.set_text($game_quest.help[item] == nil ? "" : $game_quest.help[item])
  67.   end
  68. end
复制代码
最后是Game_Quest 用于储存任务的信息
  1. #==============================================================================
  2. # ■ Game_Quest
  3. #------------------------------------------------------------------------------
  4. #  处理任务的类。本类的实例
  5. # 请参考 $game_quest。
  6. #==============================================================================

  7. class Game_Quest
  8.   #--------------------------------------------------------------------------
  9.   # ● 定义实例变量
  10.   #--------------------------------------------------------------------------
  11.   attr_reader   :id                   # 序号
  12.   attr_reader   :name                     # 名称
  13.   attr_reader   :help                    # 说明
  14.   attr_reader   :done                    # 完成度
  15.   #--------------------------------------------------------------------------
  16.   # ● 初始化对像
  17.   #--------------------------------------------------------------------------
  18.   def initialize
  19.     # 建立任务序列
  20.    @id = []
  21.     @name = []
  22.     @help = []
  23.     @done = []
  24.   end
  25.   #--------------------------------------------------------------------------
  26.   # ● 判断任务是否完成
  27.   #     iquest_id : 任务 ID
  28.   #--------------------------------------------------------------------------
  29.   def quest_done?(id)
  30.     if @done[id] == 1
  31.       # 已经完成
  32.       return true
  33.     end
  34.   end
  35. end
复制代码
其中 我是想通过事件中的写入脚本来达到增加任务的目的
具体就是在接任务的地方 写入脚本比如
$game_quest.id[0] = 1
$game_quest.name[0] = "寻找木柴"
$game_quest.help[0] = "去杨家的柴房找找看"
$game_quest.done[0] = 0 #0 未完成 1 完成
$game_quest.id[1] = 2
$game_quest.name[1] = "生火"
$game_quest.help[1] = "去杨家的厨房 厨房在大院的北边"
$game_quest.done[1] = 0
但是运行测试后出现最初的截图 请大家指出错误




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1