Project1

标题: 关于任务脚本的问题 [打印本页]

作者: 造小梦    时间: 2019-7-20 12:23
标题: 关于任务脚本的问题
本帖最后由 造小梦 于 2019-7-20 12:25 编辑

我有一个用于做主线与支线任务的脚本,我改了一下窗口的位置和长宽,然后“完成率 0%”这几个字就显示不出来了
如图,这是怎么回事?
脚本如下,求大佬解答
RUBY 代码复制
  1. #      RGSS3
  2. #      
  3. #      ★ 冒険メモ ★
  4. #      
  5. #     現在のあらすじなど、任意の文章を表示する項目をメニューに追加します。
  6. #     サブイベントの管理もできます。
  7. #      
  8. #      ● 仕様 ●==========================================================
  9. #      イベントでのメッセージ表示と同様の制御文字が使用可能です。
  10. #      使用する場合は\マークを2つ続けて入力するようにしてください。
  11. #      【例】
  12. #      \N[2] => \\N[2]
  13. #      \C[1] => \\C[1]
  14. #      ====================================================================
  15. #      
  16. #      ※ RPGツクールVX サンプルゲーム「レクトールと黒獅子の紋章」にて
  17. #         使用されているスクリプトを参考にしています。
  18. #     
  19. #      ver1.00
  20. #     
  21. #      Last Update : 2012/03/18
  22. #      03/18 : 新規
  23. #      
  24. #      ろかん   [url]http://kaisou-ryouiki.sakura.ne.jp/[/url]
  25. #
  26. #===========================================
  27. #   設定箇所
  28. #===========================================
  29. module STORYEVENT
  30. # メニューに表示される項目名
  31. STORYEVENT_MENU_TEXT = "任务"
  32.  
  33. # 条目所显示的菜单索引(顶部为0)
  34. STORYEVENT_MENU_INDEX = 4
  35.  
  36. # 启用条目的开关编号
  37. STORYEVENT_ENABLE_SID = 1
  38.  
  39. #------------------------------------------------------------------------------
  40. # 在概要中显示的标题
  41. STORYEVENT_CAPTION = "主线"
  42.  
  43. # 管理概况的变量编号
  44. STORYEVENT_VID = 1
  45.  
  46. # あらすじの設定
  47. #【形式】
  48. #   ① => [②, ③],
  49. #     ① STORYEVENT_VIDに格納されている値(数値)
  50. #     ② 進行中ストーリーの名前(文字列)
  51. #     ③ 進行中ストーリーの詳細(文字列)
  52. STORYEVENT_CONTENTS = {
  53.  
  54. 0 => ["【御风猕猴】", "猕猴王,七魔王之通风魔王,神出鬼没,变化多端,
  55. 挥舞着棍子,掌管着狂风,奉命在花果山阻击唐僧师徒。
  56.  
  57. 地点:\\C[24]花果山\\C[0]                                  目的:击败\\C[24]猕猴王"],
  58. 1 => ["【乘胜追击】", "战败的猕猴王逃往水帘洞,
  59. 前往水帘洞击败他!
  60.  
  61. 地点:\\C[24]水帘洞\\C[0]                                  目的:击败\\C[24]猕猴王"],
  62. 2 => ["【万劫之雷】", "禺狨王,号称驱神魔王,支配着雷电之力,能驱使雷云,召唤闪电,
  63. 在桃花源布下重重陷阱,誓要取唐僧师徒性命。
  64.  
  65. 地点:\\C[24]桃花源\\C[0]                                  目的:击败\\C[24]禺绒王"],
  66. 3 => ["【魔化的石像】", "蝙蝠石像被牛魔王魔化后法力大增,它的存在能使蝙蝠能源源不绝地产生,
  67. 蝙蝠石像镇守在无皋山山口,前往之人无一身还...
  68.  
  69. 地点\\C[24]蝙蝠洞窟\\C[0]                                  目的:击败\\C[24]蝙蝠石像"],
  70. 4 => ["【凤飞狮吟】", "狮驼王乃移山魔王,善于施毒,又拥有移山之力,
  71. 与鹏魔王把守妖森之穴,鹏魔王号称混天魔王,凤凰涅槃般在熊熊烈火中重生。
  72. 狮驼王的致命毒术与鹏魔王的涅槃之火使妖森之穴化为炼狱。
  73. 地点:\\C[24]妖森之穴\\C[0]                                 目的:击败\\C[24]狮驼王、鹏魔王"],
  74. 5 => ["【死寂东海】", "东海已被蛟魔王与鲨魔王占领,前往东海击败蛟魔王!"],
  75. 6 => ["【测试版完结】", "测试版到此结束,敬请期待正版发布。"],
  76. 7 => ["【魔鲨漩涡】", "鲨魔王在东海施下妖术,并将周围一带命名为“鲨之漩涡”
  77. 前往鲨之漩涡击败鲨魔王!"],
  78. 8 => ["【噩梦牛魔谷】", "做好充足的准备后就前往牛魔谷击败牛魔王吧!
  79. 期间可以前往神兽森林收集装备。"],
  80. 9 => ["【前往阴间】", "测试版到此结束,敬请期待正版发布。"],
  81.  
  82. }
  83. #------------------------------------------------------------------------------
  84. # サブイベントリストに表示する見出し
  85. SUBEVENT_CAPTION = "支线"
  86.  
  87. # サブイベント達成率部分に表示する項目名
  88. SUBEVENT_CLEARTEXT = "完成率"
  89.  
  90. # 子事件详细画面中使用的窗口外观名称
  91. SUBEVENT_SKIN = "Window"
  92.  
  93. # 要在清除的子事件中显示的字符串
  94. # 在子事件详细画面中显示
  95. SUBEVENT_CLEARED_TEXT = ""
  96.  
  97. # 显示在清除的子事件中的图标
  98. #显示在id子事件列表中
  99. SUBEVENT_CLEARED_ICON = 125
  100.  
  101. # 被看作子事件开始的变量值
  102. # 子事件所对应的变量中存储有大于此处设定值的值时,、
  103. # 判断为正在执行事件,并显示在子事件列表中
  104. SUBEVENT_STARTED = 1
  105.  
  106. # 视为子事件清除的变量值
  107. #在与子事件对应的变量中存储有大于此处设定值的值的情况下,、
  108. #被判断为事件清除,子事件列表的标记为清除时的标记
  109. SUBEVENT_CLEARED = 2000
  110.  
  111. # 子事件概要设定
  112. #【型号】
  113. #  ①= >“②,③,④”,
  114. #  ①子事件对应的变量编号(数值)
  115. #  ②正在进行的子事件的名称。 在子事件列表中显示(字符串)
  116. #  ③子事件发生中的文章。 显示在子事件详细画面(字符串)─
  117. #  ④子事件清除后的文章。 显示在子事件详细画面(字符串)
  118. #
  119. #  ※subevent _ contents中有有效设定的情况下,那边优先。
  120. SUBEVENT_TITLES = {
  121.  
  122. 101 => ["001:平定花果山",
  123. "\\C[1]事件发生场所\\C[0]
  124. 花果山
  125.  
  126. \\C[1]详细\\C[0]
  127. 打败猕猴王后各路小妖都前来花果山妄想将其占领
  128. 干掉他们,平定花果山!
  129. 报酬:
  130. 还魂丹*2",
  131. "\\C[1]事件发生场所\\C[0]
  132. 花果山
  133.  
  134. \\C[1]详细\\C[0]
  135. 任务完成!"],
  136.  
  137. 102 => ["002:妖树迷林",
  138. "\\C[1]事件发生场所\\C[0]
  139. 花果山
  140.  
  141. \\C[1]详细\\C[0]
  142. 天草本性温和,被猕猴王魔化后变得异常狂暴,
  143. 并用树根将花果山一带包围,形成迷宫,前往
  144. 花果山找到并打败它!
  145. 报酬:
  146. 妖森禅杖*1",
  147. "\\C[1]事件发生场所\\C[0]
  148. 花果山
  149.  
  150. \\C[1]详细\\C[0]
  151. 任务完成!"],
  152.  
  153. 103 => ["003:玄冰狙击",
  154. "\\C[1]事件发生场所\\C[0]
  155. 七星洞
  156.  
  157. \\C[1]详细\\C[0]
  158. 七星洞出现了许多妖魂,操作唐僧使用冰爆术
  159. 狙击他们!
  160. 报酬:
  161. 灵魂*3000",
  162. "\\C[1]事件发生场所\\C[0]
  163. 七星洞
  164.  
  165. \\C[1]详细\\C[0]
  166. 任务完成!"],
  167.  
  168. 104 => ["004:遗失的书",
  169. "\\C[1]事件发生场所\\C[0]
  170. 七星洞
  171.  
  172. \\C[1]详细\\C[0]
  173. 村民的书似乎落在七星洞了,快去帮他找回来吧!
  174. 报酬:
  175. 一阶魔泉丹*3",
  176. "\\C[1]事件发生场所\\C[0]
  177. 七星洞
  178. \\C[1]详细\\C[0]
  179. 任务完成!"],
  180.  
  181.  
  182.  
  183. }end
  184. #===========================================
  185. #   到此为止
  186. #===========================================
  187.  
  188. $rsi ||= {}
  189. $rsi["冒険メモ"] = true
  190.  
  191. module STORYEVENT
  192.   #--------------------------------------------------------------------------
  193.   # ● 各种缓存
  194.   #--------------------------------------------------------------------------
  195.   def self.cache
  196.     self.cache_story_data
  197.     self.cache_event_list
  198.   end
  199.   #--------------------------------------------------------------------------
  200.   # ● 简介获取标题
  201.   #--------------------------------------------------------------------------
  202.   def self.story_caption
  203.     STORYEVENT_CAPTION
  204.   end
  205.   #--------------------------------------------------------------------------
  206.   # ● 获取主故事信息
  207.   #--------------------------------------------------------------------------
  208.   def self.cache_story_data
  209.     @story_data = STORYEVENT_CONTENTS[$game_variables[STORYEVENT_VID]]
  210.     unless @story_data
  211.       $game_variables[STORYEVENT_VID].downto(0){|n|
  212.         if STORYEVENT_CONTENTS.has_key?(n)
  213.           @story_data = STORYEVENT_CONTENTS[n]
  214.           break
  215.         end
  216.       }
  217.     end
  218.   end
  219.   #--------------------------------------------------------------------------
  220.   # ● 简介获取标题
  221.   #--------------------------------------------------------------------------
  222.   def self.story_title
  223.     @story_data[0]
  224.   end
  225.   #--------------------------------------------------------------------------
  226.   # ● 概要获取文本
  227.   #--------------------------------------------------------------------------
  228.   def self.story_text
  229.     @story_data[1]
  230.   end
  231.   #--------------------------------------------------------------------------
  232.   # ● サブイベント 見出しの取得
  233.   #--------------------------------------------------------------------------
  234.   def self.event_caption
  235.     SUBEVENT_CAPTION
  236.   end
  237.   #--------------------------------------------------------------------------
  238.   # ● サブイベント リスト数の取得
  239.   #--------------------------------------------------------------------------
  240.   def self.event_number
  241.     SUBEVENT_TITLES.size
  242.   end
  243.   #--------------------------------------------------------------------------
  244.   # ● サブイベントが発生しているかどうかの判定
  245.   #--------------------------------------------------------------------------
  246.   def self.event_start?(id)
  247.     $game_variables[id] >= SUBEVENT_STARTED
  248.   end
  249.   #--------------------------------------------------------------------------
  250.   # ● サブイベントをクリアしたかどうかの判定
  251.   #--------------------------------------------------------------------------
  252.   def self.event_clear?(id)
  253.     $game_variables[id] >= SUBEVENT_CLEARED
  254.   end
  255.   #--------------------------------------------------------------------------
  256.   # ● 子事件获取标志变量列表
  257.   #--------------------------------------------------------------------------
  258.   def self.cache_event_list
  259.     @event_list = SUBEVENT_TITLES.keys.sort
  260.     @event_list.sort!{|a, b|
  261.       title_a = self.event_start?(a) ? 0 : 1
  262.       title_b = self.event_start?(b) ? 0 : 1
  263.       if title_a != title_b
  264.         title_a <=> title_b
  265.       else
  266.         a <=> b
  267.       end
  268.     }
  269.   end
  270.   #--------------------------------------------------------------------------
  271.   # ● 子事件列表的目标
  272.   #--------------------------------------------------------------------------
  273.   def self.event_list
  274.     @event_list
  275.   end
  276.   #--------------------------------------------------------------------------
  277.   # ● 子事件获取标题
  278.   #--------------------------------------------------------------------------
  279.   def self.event_title(id)
  280.     if event_start?(id)
  281.       SUBEVENT_TITLES[id][0]
  282.     else
  283.       "--------------------"
  284.     end
  285.   end
  286.   #--------------------------------------------------------------------------
  287.   # ● 子事件获取文本
  288.   #--------------------------------------------------------------------------
  289.   def self.event_text(id)
  290.     if event_clear?(id)
  291.       SUBEVENT_TITLES[id][2]
  292.     elsif event_start?(id)
  293.       text = nil
  294.       if SUBEVENT_CONTENTS[id]
  295.         SUBEVENT_CONTENTS[id].each{|data|
  296.           text = data[1] if data[0] <= $game_variables[id]
  297.         }
  298.       end
  299.       text ? text : SUBEVENT_TITLES[id][1]
  300.     else
  301.       ""
  302.     end
  303.   end
  304.   #--------------------------------------------------------------------------
  305.   # ● 取得方案达成率
  306.   #--------------------------------------------------------------------------
  307.   def self.completed
  308.     n = 0
  309.     for i in @event_list
  310.       if event_clear?(i)
  311.         n += 2
  312.       elsif event_start?(i)
  313.         n += 1
  314.       end
  315.     end
  316.     n * 100 / (event_number * 2)
  317.   end
  318. end
  319.  
  320. class WindowInfo < Window_Base
  321.   #--------------------------------------------------------------------------
  322.   # ● 对象初始化
  323.   #--------------------------------------------------------------------------
  324.   def initialize
  325.     super(368, 152, window_width, window_height)
  326.     self.opacity = 0
  327.     refresh
  328.   end
  329.   #--------------------------------------------------------------------------
  330.   # ● 获取窗口宽度
  331.   #--------------------------------------------------------------------------
  332.   def window_width
  333.     180
  334.   end
  335.   #--------------------------------------------------------------------------
  336.   # ● 获取窗口高度
  337.   #--------------------------------------------------------------------------
  338.   def window_height
  339.     line_height + 32
  340.   end
  341.   #--------------------------------------------------------------------------
  342.   # ● リフレッシュ
  343.   #--------------------------------------------------------------------------
  344.   def refresh
  345.     draw_text(20, 20, 124, line_height, STORYEVENT::SUBEVENT_CLEARTEXT)
  346.     text = "%"
  347.     contents.font.size = 16
  348.     cx = text_size(text).width
  349.     change_color(system_color)
  350.     draw_text(0, 20, 124, line_height, text, 2)
  351.     contents.font.size = 20
  352.     change_color(normal_color)
  353.     draw_text(0, 20, 124-cx-4, line_height, STORYEVENT.completed, 2)
  354.   end
  355. end
  356.  
  357. class WindowOutlineSub < Window_Base
  358.   #--------------------------------------------------------------------------
  359.   # ● オブジェクト初期化
  360.   #--------------------------------------------------------------------------
  361.   def initialize
  362.     super(0, 180, window_width, window_height)
  363.     refresh
  364.   end
  365.   #--------------------------------------------------------------------------
  366.   # ● ウィンドウ幅の取得
  367.   #--------------------------------------------------------------------------
  368.   def window_width
  369.     Graphics.width
  370.   end
  371.   #--------------------------------------------------------------------------
  372.   # ● ウィンドウ高さの取得
  373.   #--------------------------------------------------------------------------
  374.   def window_height
  375.     Graphics.height - 180
  376.   end
  377.   #--------------------------------------------------------------------------
  378.   # ● リフレッシュ
  379.   #--------------------------------------------------------------------------
  380.   def refresh
  381.     change_color(system_color)
  382.     draw_text(0, 0, 352, line_height, STORYEVENT.event_caption)
  383.   end
  384. end
  385.  
  386. class WindowOutlineList < Window_Selectable
  387.   #--------------------------------------------------------------------------
  388.   # ● オブジェクト初期化
  389.   #--------------------------------------------------------------------------
  390.   def initialize
  391.     super(0, 192, window_width, window_height)
  392.     self.index = 0
  393.     self.opacity = 0
  394.     refresh
  395.     activate
  396.   end
  397.   #--------------------------------------------------------------------------
  398.   # ● 获取选定条目的有效状态
  399.   #--------------------------------------------------------------------------
  400.   def current_item_enabled?
  401.     STORYEVENT.event_start?(STORYEVENT.event_list[index])
  402.   end
  403.   #--------------------------------------------------------------------------
  404.   # ● 桁数の取得
  405.   #--------------------------------------------------------------------------
  406.   def col_max
  407.     2
  408.   end
  409.   #--------------------------------------------------------------------------
  410.   # ● 获得横向排列项目时的空白宽度
  411.   #--------------------------------------------------------------------------
  412.   def spacing
  413.     16
  414.   end
  415.   #--------------------------------------------------------------------------
  416.   # ● 項目数の取得
  417.   #--------------------------------------------------------------------------
  418.   def item_max
  419.     STORYEVENT.event_number
  420.   end
  421.   #--------------------------------------------------------------------------
  422.   # ● ウィンドウ幅の取得
  423.   #--------------------------------------------------------------------------
  424.   def window_width
  425.     Graphics.width
  426.   end
  427.   #--------------------------------------------------------------------------
  428.   # ● ウィンドウ高さの取得
  429.   #--------------------------------------------------------------------------
  430.   def window_height
  431.     Graphics.height - 192
  432.   end
  433.   #--------------------------------------------------------------------------
  434.   # ● 項目の描画
  435.   #--------------------------------------------------------------------------
  436.   def draw_item(index)
  437.     event_id = STORYEVENT.event_list[index]
  438.     rect = item_rect(index)
  439.     rect.x += 2
  440.     color = normal_color
  441.     enabled = STORYEVENT.event_start?(event_id)
  442.     if enabled
  443.       if STORYEVENT.event_clear?(event_id)
  444.         color = text_color(1)
  445.         draw_icon(STORYEVENT::SUBEVENT_CLEARED_ICON, rect.x, rect.y)
  446.       end
  447.     end
  448.     rect.x += 24
  449.     rect.width -= 28
  450.     change_color(color, enabled)
  451.     draw_text(rect, STORYEVENT.event_title(event_id))
  452.   end
  453. end
  454.  
  455. class WindowOutlineMain < Window_Base
  456.   #--------------------------------------------------------------------------
  457.   # ● オブジェクト初期化
  458.   #--------------------------------------------------------------------------
  459.   def initialize
  460.     super(0, 0, window_width, window_height)
  461.     refresh
  462.   end
  463.   #--------------------------------------------------------------------------
  464.   # ● ウィンドウ幅の取得
  465.   #--------------------------------------------------------------------------
  466.   def window_width
  467.     Graphics.width
  468.   end
  469.   #--------------------------------------------------------------------------
  470.   # ● ウィンドウ高さの取得
  471.   #--------------------------------------------------------------------------
  472.   def window_height
  473.     180
  474.   end
  475.   #--------------------------------------------------------------------------
  476.   # ● リフレッシュ
  477.   #--------------------------------------------------------------------------
  478.   def refresh
  479.     cw = contents.width - 32
  480.     change_color(system_color)
  481.     draw_text(0, 0, contents.width - 32, line_height, STORYEVENT.story_caption)
  482.     change_color(normal_color)
  483.     cx = text_size(STORYEVENT.story_caption).width + 16
  484.     draw_text(cx, 0, cw - cx, line_height, STORYEVENT.story_title)
  485.     draw_text_ex(16, line_height + 16, STORYEVENT.story_text.dup)
  486.   end
  487. end
  488.  
  489. class WindoOutlineText < Window_Selectable
  490.   #--------------------------------------------------------------------------
  491.   # ● 公開インスタンス変数
  492.   #--------------------------------------------------------------------------
  493.   attr_reader   :item_index               # 表示するインデックス
  494.   #--------------------------------------------------------------------------
  495.   # ● オブジェクト初期化
  496.   #--------------------------------------------------------------------------
  497.   def initialize
  498.     super(window_x, window_y, window_width, window_height)
  499.     self.windowskin = Cache.system(STORYEVENT::SUBEVENT_SKIN)
  500.     self.z = 200
  501.     self.active = false
  502.     self.openness = 0
  503.     @item_index = 0
  504.   end
  505.   #--------------------------------------------------------------------------
  506.   # ● ウィンドウ X 座標の取得
  507.   #--------------------------------------------------------------------------
  508.   def window_x
  509.     (Graphics.width - window_width) / 2
  510.   end
  511.   #--------------------------------------------------------------------------
  512.   # ● ウィンドウ Y 座標の取得
  513.   #--------------------------------------------------------------------------
  514.   def window_y
  515.     (Graphics.height - window_height) / 2
  516.   end
  517.   #--------------------------------------------------------------------------
  518.   # ● ウィンドウ幅の取得
  519.   #--------------------------------------------------------------------------
  520.   def window_width
  521.     544#432
  522.   end
  523.   #--------------------------------------------------------------------------
  524.   # ● ウィンドウ高さの取得
  525.   #--------------------------------------------------------------------------
  526.   def window_height
  527.     416#368
  528.   end
  529.   #--------------------------------------------------------------------------
  530.   # ● リフレッシュ
  531.   #--------------------------------------------------------------------------
  532.   def refresh
  533.     contents.clear
  534.     id = STORYEVENT.event_list[@item_index]
  535.     text = STORYEVENT.event_title(id)
  536.     contents.font.shadow = false
  537.     contents.font.bold = true
  538.     contents.font.size = 24
  539.     change_color(system_color)
  540.     cx = contents.width - 96
  541.     cw = text_size(text).width
  542.     contents.fill_rect(Rect.new(4, 32, cw + 8, 2), system_color)
  543.     contents.draw_text(8, 8, cx - 24, line_height, text)
  544.     contents.font.bold = false
  545.     contents.font.size = 20
  546.     change_color(normal_color)
  547.     contents.draw_text(0, 36, cx, line_height, STORYEVENT::SUBEVENT_CLEARED_TEXT) if STORYEVENT.event_clear?(id)
  548.     draw_text_ex(0, line_height * 2+12, STORYEVENT.event_text(id).clone)
  549.   end
  550.   #--------------------------------------------------------------------------
  551.   # ● 表示するインデックスの設定
  552.   #--------------------------------------------------------------------------
  553.   def item_index=(index)
  554.     @item_index = index
  555.   end
  556.   #--------------------------------------------------------------------------
  557.   # ● ウィンドウのアクティブ化
  558.   #--------------------------------------------------------------------------
  559.   def activate
  560.     refresh
  561.     open
  562.     super
  563.   end
  564.   #--------------------------------------------------------------------------
  565.   # ● ウィンドウの非アクティブ化
  566.   #--------------------------------------------------------------------------
  567.   def deactivate
  568.     close
  569.     super
  570.   end
  571. end
  572.  
  573. class Window_MenuCommand < Window_Command
  574.   #--------------------------------------------------------------------------
  575.   # ● コマンドリストの作成
  576.   #--------------------------------------------------------------------------
  577.   alias _make_command_list_with_story_command make_command_list
  578.   def make_command_list
  579.     _make_command_list_with_story_command
  580.     add_story_command
  581.   end
  582.   #--------------------------------------------------------------------------
  583.   # ● インデックスを指定したコマンドの追加
  584.   #--------------------------------------------------------------------------
  585.   def add_command_with_index(name, symbol, index, enabled = true, ext = nil)
  586.     @list[index, 0] = {:name=>name, :symbol=>symbol, :enabled=>enabled, :ext=>ext}
  587.   end
  588.   #--------------------------------------------------------------------------
  589.   # ● 冒険メモコマンドの有効判定
  590.   #--------------------------------------------------------------------------
  591.   def enable_story_command?
  592.     $game_switches[STORYEVENT::STORYEVENT_ENABLE_SID]
  593.   end
  594.   #--------------------------------------------------------------------------
  595.   # ● 冒険メモコマンドの追加
  596.   #--------------------------------------------------------------------------
  597.   def add_story_command
  598.     add_command_with_index(STORYEVENT::STORYEVENT_MENU_TEXT, :story,
  599.           STORYEVENT::STORYEVENT_MENU_INDEX, enable_story_command?)
  600.   end
  601. end
  602.  
  603. class SceneOutline < Scene_Base
  604.   #--------------------------------------------------------------------------
  605.   # ● オブジェクト初期化
  606.   #--------------------------------------------------------------------------
  607.   def initialize
  608.     STORYEVENT.cache
  609.     @index = 0
  610.   end
  611.   #--------------------------------------------------------------------------
  612.   # ● 開始処理
  613.   #--------------------------------------------------------------------------
  614.   def start
  615.     super
  616.     create_background
  617.     create_backsprite
  618.     create_windows
  619.     set_handler
  620.   end
  621.   #--------------------------------------------------------------------------
  622.   # ● 背景の作成
  623.   #--------------------------------------------------------------------------
  624.   def create_background
  625.     @background_sprite = Sprite.new
  626.     @background_sprite.bitmap = SceneManager.background_bitmap
  627.     @background_sprite.color.set(16, 16, 16, 128)
  628.   end
  629.   #--------------------------------------------------------------------------
  630.   # ● サブイベント閲覧時用の背景スプライトの作成
  631.   #--------------------------------------------------------------------------
  632.   def create_backsprite
  633.     @back_sprite = Sprite.new
  634.     @back_sprite.bitmap = Bitmap.new(Graphics.width, Graphics.height)
  635.     @back_sprite.bitmap.fill_rect(@back_sprite.bitmap.rect, Color.new(0, 0, 0, 192))
  636.     @back_sprite.visible = false
  637.     @back_sprite.z = 190
  638.   end
  639.   #--------------------------------------------------------------------------
  640.   # ● 各種ウィンドウの作成
  641.   #--------------------------------------------------------------------------
  642.   def create_windows
  643.     @main_window = WindowOutlineMain.new
  644.     @sub_window = WindowOutlineSub.new
  645.     @list_window = WindowOutlineList.new
  646.     @info_window = WindowInfo.new
  647.     @text_window = WindoOutlineText.new
  648.   end
  649.   #--------------------------------------------------------------------------
  650.   # ● ハンドラのセット
  651.   #--------------------------------------------------------------------------
  652.   def set_handler
  653.     @list_window.set_handler(:ok, method(:open_text_window))
  654.     @list_window.set_handler(:cancel, method(:return_scene))
  655.     @text_window.set_handler(:cancel, method(:close_text_window))
  656.   end
  657.   #--------------------------------------------------------------------------
  658.   # ● 終了処理
  659.   #--------------------------------------------------------------------------
  660.   def terminate
  661.     super
  662.     dispose_background
  663.     dispose_backsprite
  664.     dispose_windows
  665.   end
  666.   #--------------------------------------------------------------------------
  667.   # ● 背景の解放
  668.   #--------------------------------------------------------------------------
  669.   def dispose_background
  670.     @background_sprite.dispose
  671.   end
  672.   #--------------------------------------------------------------------------
  673.   # ● サブイベント閲覧時用の背景スプライトの解放
  674.   #--------------------------------------------------------------------------
  675.   def dispose_backsprite
  676.     @back_sprite.dispose
  677.   end
  678.   #--------------------------------------------------------------------------
  679.   # ● 各種ウィンドウの解放
  680.   #--------------------------------------------------------------------------
  681.   def dispose_windows
  682.     @main_window.dispose
  683.     @sub_window.dispose
  684.     @list_window.dispose
  685.     @info_window.dispose
  686.     @text_window.dispose
  687.   end
  688.   #--------------------------------------------------------------------------
  689.   # ● サブイベントの詳細ウィンドウ表示
  690.   #--------------------------------------------------------------------------
  691.   def open_text_window
  692.     @list_window.visible = false
  693.     @main_window.visible = false
  694.     @sub_window.visible = false
  695.     @info_window.visible = false
  696.     @back_sprite.visible = true
  697.     @text_window.item_index = @list_window.index
  698.     @text_window.activate
  699.   end
  700.   #--------------------------------------------------------------------------
  701.   # ● サブイベントの詳細ウィンドウ非表示
  702.   #--------------------------------------------------------------------------
  703.   def close_text_window
  704.     @list_window.visible = true
  705.     @main_window.visible = true
  706.     @sub_window.visible = true
  707.     @info_window.visible = true
  708.     @back_sprite.visible = false
  709.     @list_window.activate
  710.   end
  711. end
  712.  
  713. class Scene_Menu < Scene_MenuBase
  714.   #--------------------------------------------------------------------------
  715.   # ● コマンドウィンドウの作成
  716.   #--------------------------------------------------------------------------
  717.   alias _create_story_command create_command_window
  718.   def create_command_window
  719.     _create_story_command
  720.     @command_window.set_handler(:story, method(:command_story))
  721.   end
  722.   #--------------------------------------------------------------------------
  723.   # ● コマンド[冒険メモ]
  724.   #--------------------------------------------------------------------------
  725.   def command_story
  726.     SceneManager.call(SceneOutline)
  727.   end
  728. end





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