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

Project1

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

[已经解决] 关于剧情回顾脚本的问题!!!

[复制链接]

Lv6.析梦学徒

老鹰

梦石
40
星屑
33427
在线时间
6554 小时
注册时间
2012-5-26
帖子
3178

极短24评委极短23参与极短22参与极短21评委老司机慢点开短篇十吟唱者组别冠军开拓者剧作品鉴家

1
发表于 2019-7-30 17:35:23 | 显示全部楼层
从网页源代码里提取出了它的原始文本页面
http://web.archive.org/web/20151 ... zai/message_log.txt

  1. #******************************************************************************
  2. #
  3. #   * メッセージ履歴画面 *
  4. #
  5. #                       for RGSS3
  6. #
  7. #        Ver 1.02   2014.05.11
  8. #
  9. #   ◆使い方
  10. #     1.▼素材セクション以下の適当な場所に導入してください。
  11. #
  12. #     2.ゲーム中にコンフィグ項目で設定したボタンを押すことで、
  13. #         メッセージ履歴画面を呼び出します。
  14. #
  15. #     3.コンフィグ項目で設定したスイッチをオンにすることで、
  16. #         メッセージ履歴の保存を一時停止することができます。
  17. #
  18. #     4.操作方法
  19. #         ・十字キーの上下で1行ずつスクロール
  20. #         ・十字キーの左右で5行ずつスクロール
  21. #         ・LRボタンで15行ずつスクロール
  22. #         ・Bボタンで元の画面に復帰します。
  23. #
  24. #   提供者:睡工房 http://hime.be/
  25. #
  26. #******************************************************************************

  27. #==============================================================================
  28. # コンフィグ項目
  29. #==============================================================================
  30. module SUI
  31. module LOG
  32.   # 履歴保存のオンオフスイッチ
  33.   # ゲームスイッチの番号を入力してください。
  34.   SW_ONOFF = 50
  35.   
  36.   # 履歴保存の最大行数
  37.   # この行数を超えた履歴は削除されます。
  38.   MAX_ROW = 50
  39.   
  40.   # 選択肢を保存するか?
  41.   SAVE_CHOICE = true
  42.   
  43.   # 履歴表示モードへの移行ボタン
  44.   # :L のシンボル形式で指定して下さい。
  45.   BTN_MODE = Input::L
  46. end
  47. end
  48. #==============================================================================
  49. # 設定完了
  50. #==============================================================================



  51. class Window_Message < Window_Base
  52.   #--------------------------------------------------------------------------
  53.   # ● 全テキストの処理
  54.   #--------------------------------------------------------------------------
  55.   alias sui_process_all_text process_all_text
  56.   def process_all_text
  57.     log = convert_escape_characters($game_message.all_text)
  58.     SUI::LOG.push(log)
  59.     sui_process_all_text
  60.   end
  61. end


  62. class Window_ChoiceList < Window_Command
  63.   #--------------------------------------------------------------------------
  64.   # ● コマンドリストの作成
  65.   #--------------------------------------------------------------------------
  66.   alias sui_make_command_list make_command_list
  67.   def make_command_list
  68.     sui_make_command_list
  69.     return unless SUI::LOG::SAVE_CHOICE
  70.     log = ""
  71.     $game_message.choices.each do |choice|
  72.       next if choice.empty?
  73.       log += "  " + choice + "\n"
  74.     end
  75.     return if log.empty?
  76.     SUI::LOG.push(log)
  77.   end
  78. end


  79. module SUI::LOG
  80.   LOG = []
  81.   #--------------------------------------------------------------------------
  82.   # ● 履歴の追加
  83.   #--------------------------------------------------------------------------
  84.   def self.push(text)
  85.     return if $game_switches[SW_ONOFF]    # Ver1.02
  86.     LOG.push(text)
  87.     LOG.shift if LOG.size > MAX_ROW
  88.   end
  89. end

  90. #==============================================================================
  91. # ■ Window_MessageLog
  92. #------------------------------------------------------------------------------
  93. #  メッセージ履歴を表示するウィンドウです。
  94. #==============================================================================

  95. class Window_MessageLog < Window_Base
  96.   #--------------------------------------------------------------------------
  97.   # ● オブジェクト初期化
  98.   #--------------------------------------------------------------------------
  99.   def initialize
  100.     super(0, 0, Graphics.width, Graphics.height)
  101.     self.z = 250
  102.     self.opacity = 0
  103.     self.active = false
  104.     self.openness = 0
  105.     self.padding *= 2
  106.     @index = 0
  107.     create_background
  108.     open
  109.     refresh
  110.   end
  111.   #--------------------------------------------------------------------------
  112.   # ● 解放
  113.   #--------------------------------------------------------------------------
  114.   def dispose
  115.     super
  116.     @back.bitmap.dispose
  117.     @back.dispose
  118.   end
  119.   #--------------------------------------------------------------------------
  120.   # ● フレーム更新
  121.   #--------------------------------------------------------------------------
  122.   def update
  123.     super
  124.     return if @opening || @closing
  125.     dispose if close?
  126.     if !self.disposed? && self.open?
  127.       if Input::trigger?(:B)
  128.         Sound.play_cancel
  129.         close
  130.       elsif Input::repeat?(:UP)
  131.         self.index = @index - 1
  132.       elsif Input::repeat?(:DOWN)
  133.         self.index = @index + 1
  134.       elsif Input::repeat?(:LEFT)
  135.         self.index = @index - 5
  136.       elsif Input::repeat?(:RIGHT)
  137.         self.index = @index + 5
  138.       elsif Input::repeat?(:L)
  139.         self.index = @index - 15
  140.       elsif Input::repeat?(:R)
  141.         self.index = @index + 15
  142.       end
  143.     end
  144.   end
  145.   #--------------------------------------------------------------------------
  146.   # ● 1 ページに表示できる行数の取得
  147.   #--------------------------------------------------------------------------
  148.   def page_row_max
  149.     contents_height / line_height
  150.   end
  151.   #--------------------------------------------------------------------------
  152.   # ● 表示領域移動
  153.   #--------------------------------------------------------------------------
  154.   def index=(row)
  155.     @index = [[row, @row_max - page_row_max + 1].min, 0].max
  156.     self.oy = @index * line_height
  157.   end
  158.   #--------------------------------------------------------------------------
  159.   # ● 背景の作成
  160.   #--------------------------------------------------------------------------
  161.   def create_background
  162.     @back = Sprite.new
  163.     @back.x = 0
  164.     @back.y = 0
  165.     @back.z = self.z - 1
  166.     @back.bitmap = Bitmap.new(Graphics.width, Graphics.height)
  167.     @back.bitmap.fill_rect(@back.bitmap.rect, Color.new(96, 96, 96, 250))
  168.   end
  169.   #--------------------------------------------------------------------------
  170.   # ● ログの追加
  171.   #--------------------------------------------------------------------------
  172.   def push(text)
  173.     return if $game_switches[SUI::LOG::SW_ONOFF]    # Ver1.02
  174.     SUI::LOG::LOG.push(text)
  175.     SUI::LOG::LOG.shift if SUI::LOG::LOG.size > SUI::LOG::MAX_ROW
  176.   end
  177.   #--------------------------------------------------------------------------
  178.   # ● ウィンドウ内容の作成
  179.   #--------------------------------------------------------------------------
  180.   def create_contents2(size)
  181.     self.contents.dispose
  182.     self.contents = Bitmap.new(width - padding * 2, [height - padding * 2, size * line_height].max)
  183.   end
  184.   #--------------------------------------------------------------------------
  185.   # ● 特殊文字の変換
  186.   #--------------------------------------------------------------------------
  187.   def convert_special_characters(text)
  188. #~     text.gsub!(/\e.\[.+\]/)        { "" }  # Ver1.02
  189.     text.gsub!(/\e.\[[^\]]+\]/)    { "" }     # Ver1.02
  190.     text.gsub!(/\e./)              { "" }
  191.     text
  192.   end
  193.   #--------------------------------------------------------------------------
  194.   # ● ログの描画
  195.   #--------------------------------------------------------------------------
  196.   def refresh
  197.     y = 0
  198.     texts = []
  199.     for i in 0...SUI::LOG::LOG.size
  200.       texts.push("") if i > 0
  201.       texts.concat(SUI::LOG::LOG[i].split("\n"))
  202.     end
  203.     create_contents2(texts.size)
  204.     for i in 0...texts.size
  205.       text = convert_special_characters(texts[i])
  206.       self.contents.draw_text(0, y, self.width - padding * 2, line_height, text)
  207.       y += line_height
  208.     end
  209.     @row_max = texts.size
  210.     self.index = texts.size
  211.   end
  212. end


  213. class Scene_Map < Scene_Base
  214.   #--------------------------------------------------------------------------
  215.   # ● フレーム更新
  216.   #--------------------------------------------------------------------------
  217.   alias sui_update update
  218.   def update
  219.     if @window_log
  220.       update_message_log
  221.     elsif Input.trigger?(SUI::LOG::BTN_MODE)
  222.       @window_log = Window_MessageLog.new
  223.       update_message_log
  224.     else
  225.       sui_update
  226.     end
  227.   end
  228.   #--------------------------------------------------------------------------
  229.   # ● ウィンドウ履歴更新
  230.   #--------------------------------------------------------------------------
  231.   def update_message_log
  232.     Graphics.update
  233.     Input.update
  234.     @window_log.update
  235.     @window_log = nil if @window_log.disposed?
  236.   end
  237. end

  238. class Scene_Battle < Scene_Base
  239.   #--------------------------------------------------------------------------
  240.   # ● フレーム更新
  241.   #--------------------------------------------------------------------------
  242.   alias sui_update update
  243.   def update
  244.     if @window_log
  245.       update_message_log
  246.     elsif Input.trigger?(SUI::LOG::BTN_MODE)
  247.       @window_log = Window_MessageLog.new
  248.       update_message_log
  249.     else
  250.       sui_update
  251.     end
  252.   end
  253.   #--------------------------------------------------------------------------
  254.   # ● ウィンドウ履歴更新
  255.   #--------------------------------------------------------------------------
  256.   def update_message_log
  257.     Graphics.update
  258.     Input.update
  259.     @window_log.update
  260.     @window_log = nil if @window_log.disposed?
  261.   end
  262. end
复制代码

评分

参与人数 1星屑 +30 收起 理由
VIPArcher + 30 乐于助人

查看全部评分

回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-5-6 01:19

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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