Project1

标题: 关于对话框 [打印本页]

作者: 已死君    时间: 2015-9-16 20:01
标题: 关于对话框
qwq请问怎么让每个人的对话框不一样?就像岚少之前实况过一款糖果屋的游戏里边的人的对话框就不一样,还是说要画好对话框然后和立绘一样放进去?(;´Д`)
作者: 翻滚牛宝宝    时间: 2015-9-16 20:16
立绘带着对话框就不一样了……
作者: 喵呜喵5    时间: 2015-9-16 20:25
显示文字背景透明+显示图片
作者: tseyik    时间: 2015-9-16 21:03
本帖最后由 tseyik 于 2015-9-16 21:07 编辑

改変Windowskin
  1. =begin
  2.       RGSS3
  3.       
  4.    ★ ウィンドウスキン変更 ★

  5.       ゲーム中にウィンドウスキンの変更を可能にします。
  6.       
  7.       ● 使い方 ●========================================================
  8.       設定箇所で指定した変数に格納されている値に対応した
  9.       ウィンドウスキンが適用されます。
  10.       --------------------------------------------------------------------
  11.       変数の値を変更した瞬間にスキンが変更されます。
  12.       --------------------------------------------------------------------
  13.       イベントコマンドより下記のスクリプトを実行すると、
  14.       プレイヤーが任意にウィンドウスキンを変更できるシーンへ移行します。
  15.         call_skin_selection
  16.       ====================================================================
  17.       
  18.       ver1.00
  19.       
  20.       Last Update : 2015/04/30
  21.       4/30 : RGSS2にあったものを移植
  22.       
  23.       ろかん   http://kaisou-ryouiki.sakura.ne.jp/
  24. =end

  25. #===================================
  26. #  ●設定箇所
  27. #===================================
  28. module Change_Window
  29.   # ウィンドウスキン変更に使用する変数番号
  30.   WINDOW_V = 5
  31.   
  32.   # ウィンドウスキン定義
  33.   #【形式】
  34.   #   ① => ["②", "③"],
  35.   #     ① ウィンドウスキンに対応する変数の値(数値)
  36.   #     ② ウィンドウスキンのファイル名(文字列)
  37.   #     ③ ウィンドウスキンの名前(文字列) ※ウィンドウスキンを変更するシーンで利用されます
  38.   SKIN_INFO = {
  39.     0 => ["Window", "デフォルト"],
  40.     1 => ["window2", "メタリック"],
  41.     2 => ["window4", "森林"],
  42.     3 => ["window5", "クールブラック"],
  43.   }
  44. end
  45. #===================================
  46. #  ここまで
  47. #===================================

  48. $rsi ||= {}
  49. $rsi["ウィンドウスキン変更"] = true

  50. class Game_Temp
  51.   #--------------------------------------------------------------------------
  52.   # ● 公開インスタンス変数
  53.   #--------------------------------------------------------------------------
  54.   attr_accessor   :skin_id          # スキン番号
  55.   #--------------------------------------------------------------------------
  56.   # ● オブジェクト初期化
  57.   #--------------------------------------------------------------------------
  58.   alias change_skin_initialize initialize
  59.   def initialize
  60.     change_skin_initialize
  61.     @skin_id = 0
  62.   end
  63. end

  64. class Game_Interpreter
  65.   #--------------------------------------------------------------------------
  66.   # ● ウィンドウ選択シーンへ移行
  67.   #--------------------------------------------------------------------------
  68.   def call_skin_selection
  69.     SceneManager.call(Scene_SelectWindow)
  70.   end
  71. end

  72. class Window_Base < Window
  73.   #--------------------------------------------------------------------------
  74.   # ● インクルード Change_Window
  75.   #--------------------------------------------------------------------------
  76.   include Change_Window
  77.   #--------------------------------------------------------------------------
  78.   # ● オブジェクト初期化
  79.   #--------------------------------------------------------------------------
  80.   alias change_skin_initialize initialize
  81.   def initialize(x, y, width, height)
  82.     change_skin_initialize(x, y, width, height)
  83.     change_window_skin
  84.   end
  85.   #--------------------------------------------------------------------------
  86.   # ● ウィンドウスキンの適用
  87.   #--------------------------------------------------------------------------
  88.   def change_window_skin
  89.     self.windowskin = Cache.system(SKIN_INFO[$game_variables[WINDOW_V]][0])
  90.   end
  91. end

  92. class Window_SkinSelect < Window_Base
  93.   #--------------------------------------------------------------------------
  94.   # ● インクルード Change_Window
  95.   #--------------------------------------------------------------------------
  96.   include Change_Window
  97.   #--------------------------------------------------------------------------
  98.   # ● オブジェクト初期化
  99.   #--------------------------------------------------------------------------
  100.   def initialize
  101.     super(get_x, get_y, get_width, get_height)
  102.   end
  103.   #--------------------------------------------------------------------------
  104.   # ● X 座標の取得
  105.   #--------------------------------------------------------------------------
  106.   def get_x
  107.     Graphics.width / 2 - get_width / 2
  108.   end
  109.   #--------------------------------------------------------------------------
  110.   # ● Y 座標の取得
  111.   #--------------------------------------------------------------------------
  112.   def get_y
  113.     Graphics.height / 2 - get_height / 2
  114.   end
  115.   #--------------------------------------------------------------------------
  116.   # ● 横幅の取得
  117.   #--------------------------------------------------------------------------
  118.   def get_width
  119.     350
  120.   end
  121.   #--------------------------------------------------------------------------
  122.   # ● 縦幅の取得
  123.   #--------------------------------------------------------------------------
  124.   def get_height
  125.     100
  126.   end
  127.   #--------------------------------------------------------------------------
  128.   # ● ウィンドウスキンの適用
  129.   #--------------------------------------------------------------------------
  130.   def change_window_skin
  131.     super
  132.     self.contents.clear
  133.     self.contents.font.size = 20
  134.     self.contents.font.color = system_color
  135.     draw_text(0, 0, contents.width, line_height, "ウィンドウスキンを選択してください", 1)
  136.     self.contents.font.color = normal_color
  137.     self.contents.font.size = 23
  138.     self.contents.font.italic = true
  139.     draw_text(0, line_height + 15, contents.width, line_height, "- #{SKIN_INFO[$game_variables[WINDOW_V]][1]} -", 1)
  140.     self.contents.font.italic = false
  141.     self.contents.font.bold = true
  142.     draw_text(0, line_height + 15, contents.width, line_height, "<<", 0)
  143.     draw_text(0, line_height + 15, contents.width, line_height, ">>", 2)
  144.     self.contents.font.bold = false
  145.   end
  146. end

  147. class Scene_Base
  148.   #--------------------------------------------------------------------------
  149.   # ● インクルード Change_Window
  150.   #--------------------------------------------------------------------------
  151.   include Change_Window
  152.   #--------------------------------------------------------------------------
  153.   # ● フレーム更新
  154.   #--------------------------------------------------------------------------
  155.   alias change_skin_update update
  156.   def update
  157.     change_skin_update
  158.     update_skin
  159.   end
  160.   #--------------------------------------------------------------------------
  161.   # ● ウィンドウスキンの更新
  162.   #--------------------------------------------------------------------------
  163.   def update_skin
  164.     if $game_variables[WINDOW_V] != $game_temp.skin_id
  165.       $game_temp.skin_id = $game_variables[WINDOW_V]
  166.       update_skin_all_windows
  167.     end
  168.   end
  169.   #--------------------------------------------------------------------------
  170.   # ● 全ウィンドウのスキン更新
  171.   #--------------------------------------------------------------------------
  172.   def update_skin_all_windows
  173.     ObjectSpace.each_object(Window_Base){|window|
  174.       window.change_window_skin unless window.disposed?
  175.     }
  176.   end
  177. end

  178. class Scene_SelectWindow < Scene_Base
  179.   #--------------------------------------------------------------------------
  180.   # ● 開始処理
  181.   #--------------------------------------------------------------------------
  182.   def start
  183.     super
  184.     create_background
  185.     create_window
  186.   end
  187.   #--------------------------------------------------------------------------
  188.   # ● 背景の作成
  189.   #--------------------------------------------------------------------------
  190.   def create_background
  191.     @background_sprite = Sprite.new
  192.     @background_sprite.bitmap = SceneManager.background_bitmap
  193.     @background_sprite.color.set(16, 16, 16, 128)
  194.   end
  195.   #--------------------------------------------------------------------------
  196.   # ● 終了処理
  197.   #--------------------------------------------------------------------------
  198.   def terminate
  199.     super
  200.     dispose_background
  201.   end
  202.   #--------------------------------------------------------------------------
  203.   # ● 背景の解放
  204.   #--------------------------------------------------------------------------
  205.   def dispose_background
  206.     @background_sprite.dispose
  207.   end
  208.   #--------------------------------------------------------------------------
  209.   # ● ウィンドウの作成
  210.   #--------------------------------------------------------------------------
  211.   def create_window
  212.     @skin_select_window = Window_SkinSelect.new
  213.   end
  214.   #--------------------------------------------------------------------------
  215.   # ● フレーム更新
  216.   #--------------------------------------------------------------------------
  217.   def update
  218.     update_change_skin unless update_call_return
  219.     super
  220.   end
  221.   #--------------------------------------------------------------------------
  222.   # ● 前のシーンに戻る
  223.   #--------------------------------------------------------------------------
  224.   def update_call_return
  225.     if Input.trigger?(:B)
  226.       Sound.play_cancel
  227.       return_scene
  228.       true
  229.     else
  230.       false
  231.     end
  232.   end
  233.   #--------------------------------------------------------------------------
  234.   # ● スキン変更の更新
  235.   #--------------------------------------------------------------------------
  236.   def update_change_skin
  237.     if Input.trigger?(:RIGHT)
  238.       Sound.play_ok
  239.       list = SKIN_INFO.keys.sort
  240.       $game_variables[WINDOW_V] = list[list.index($game_variables[WINDOW_V]).next]
  241.       $game_variables[WINDOW_V] = list.first unless $game_variables[WINDOW_V]
  242.     elsif Input.trigger?(:LEFT)
  243.       Sound.play_ok
  244.       list = SKIN_INFO.keys.sort
  245.       $game_variables[WINDOW_V] = list[list.index($game_variables[WINDOW_V]) - 1]
  246.       $game_variables[WINDOW_V] = list.last unless $game_variables[WINDOW_V]
  247.     end
  248.   end
  249. end
复制代码





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