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

Project1

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

[已经过期] 这个标题脚本怎么用?

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
87 小时
注册时间
2015-3-12
帖子
47
跳转到指定楼层
1
发表于 2015-3-28 11:48:22 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
  1. #==============================================================================
  2. # ■ VXAce-RGSS3-17 タイトルカスタマイズ [Ver.1.0.0]        by Claimh
  3. #------------------------------------------------------------------------------
  4. #  タイトル表示時の付属機能の詰め合わせ
  5. #==============================================================================

  6. module Title
  7.   #--------------------------------------------------------------------------
  8.   # ● 跳过标题
  9.   #--------------------------------------------------------------------------
  10.   # いつもニューゲームから始める
  11.   SKIP_ALL      = false
  12.   # セーブファイルがなければニューゲームから始める
  13.   SKIP_NEWGAME  = false
  14.   # セーブファイルがあればコンティニュー、なければニューゲームから始める
  15.   SKIP_CONTINUE = false


  16.   #--------------------------------------------------------------------------
  17.   # ● 一般设置标题显示
  18.   #--------------------------------------------------------------------------
  19.   # トランジション(nil:画像なし)
  20.   TITLE_TRN = nil  #"Graphics/System/cc_transition2"


  21.   #--------------------------------------------------------------------------
  22.   # ● 设置主标题
  23.   #--------------------------------------------------------------------------
  24.   # 表示位置
  25.   #   Rect#x, y   : 表示位置(-1にすると中央表示)
  26.   #   Rect#width  : x=-1の時にずらす幅
  27.   #   Rect#height : y=-1の時にずらす高さ
  28.   TM_RECT = Rect.new(-1, -1, 0, 0)

  29.   # 表示タイプ(true:テキスト false:画像)
  30.   TM_TYPE = true

  31.   # タイトル画像名(Graphics/System) ※TM_TYPE=falseの場合のみ
  32.   TM_NAME = "main_title"

  33.   # フォント設定
  34.   def self.set_main_bitmap(bitmap)
  35.     bitmap.font.size = 48
  36.     bitmap
  37.   end


  38.   #--------------------------------------------------------------------------
  39.   # ● 字幕设置
  40.   #--------------------------------------------------------------------------
  41.   # サブタイトル表示有効?(true:有効 false:無効)
  42.   TS = false

  43.   # 表示位置
  44.   #   Rect#x, y   : 表示位置(-1にすると中央表示)
  45.   #   Rect#width  : x=-1の時にずらす幅
  46.   #   Rect#height : y=-1の時にずらす高さ
  47.   TS_RECT = Rect.new(-1, -1, 0, 40)

  48.   # 表示タイプ(true:テキスト false:画像)
  49.   #  ※ フォントの設定はTitle#create_sub_bitmapに記述してください
  50.   TS_TYPE = true

  51.   # タイトル名 or タイトル画像名(Graphics/System)
  52.   TS_NAME = "sub_title"

  53.   # フォント設定
  54.   def self.set_sub_bitmap(bitmap)
  55.     bitmap.font.size = 48
  56.     bitmap
  57.   end


  58.   #--------------------------------------------------------------------------
  59.   # ● 命令设置标题
  60.   #--------------------------------------------------------------------------
  61.   # コマンドの表示順設定
  62.   #   0: ニューゲーム   (Vocab::new_game)
  63.   #   1: コンティニュー (Vocab::continue)
  64.   #   2: シャットダウン (Vocab::shutdown)
  65.   #   3以降 : 拡張コマンド(EXCMDで設定)
  66.   CMD_BOX = [0, 1, 3, 2]

  67.   # 拡張コマンド設定
  68.   # ※ 表示ON・OFFは Title#excmd_enable? で設定して下さい
  69.   EXCMD = {
  70. # コマンド番号 => ["コマンド名", シーンクラス名, シンボル名]
  71. #    3 => ["ギャラリー", Scene_ExGarally,  :garally]
  72. #    4 => ["オプション", Scene_Option, :option]
  73.   }

  74.   # 拡張コマンドの表示可否設定
  75.   def self.excmd_enable?(cmd)
  76.     case cmd # コマンド番号
  77.     when 3; return true
  78.     when 4; return true
  79.     end
  80.     true
  81.   end

  82.   # 表示位置
  83.   #   Rect#x, y   : 表示位置(-1にすると中央表示)
  84.   #   Rect#width  : コマンド並びのズレ幅
  85.   #   Rect#height : コマンドの高さ
  86.   CMD_RECT = Rect.new(-1, -1, 0, 24)

  87.   # 背景透明度設定
  88.   def self.cmd_window_opacity(window)
  89.     window.opacity = 255
  90.     window.back_opacity = 160
  91.     window
  92.   end

  93.   # スロット式表示
  94.   #  (注) 文字かつカーソルフィット時は使用不可
  95.   CMD_SLOT = false
  96.   # スロット式表示時にすべての項目を表示する
  97.   CMD_SLOT_ALL = true


  98.   # コマンドタイプ(true:テキスト false:画像)
  99.   CMD_TYPE = true

  100.   #--<テキストコマンド設定>--#
  101.   # テキストの表示方法
  102.   #   0..左揃え 1..中央 2..右揃え
  103.   CT_ALIGN = 1
  104.   # カーソル幅を文字幅にフィットさせる
  105.   CT_CUR_FIT = false

  106.   # フォント設定
  107.   def self.set_cmd_bitmap(bitmap)
  108.     bitmap.font.size = 22
  109.     bitmap
  110.   end

  111.   #--<画像コマンド設定>--#
  112.   # カーゾルが当たってるときに画像チェンジ(true:有効 false:無効)
  113.   CMD_CHNG = true

  114.   # 画像ファイル(Graphics/System)
  115.   # (注)コマンド用の画像は全て同じサイズ(幅、高さ)にしてください。
  116.   CMD_GRPHIC = {
  117.   # コマンド番号 => [画像1, 画像2]
  118.     0 => ["newgame",  "newgame_s"],
  119.     1 => ["continue", "continue_s"],
  120.     2 => ["shutdown", "shutdown_s"]
  121.   }

  122.   # カーゾル消去
  123.   DISABLE_CURSOR = false


  124.   #--------------------------------------------------------------------------
  125.   # ● 天气设定
  126.   #--------------------------------------------------------------------------
  127.   # 天候エフェクト
  128.   #  :none  ..なし(晴れ)
  129.   #  :rain  ..雨
  130.   #  :storm ..嵐
  131.   #  :snow  ..雪
  132.   WEATHER_TYPE = :none
  133.   # 天候エフェクトの量(0..40)
  134.   WEATHER_POWER = 0

  135.   # タイトル表示時のBGS(nil:不要)
  136.   BGS = nil #RPG::BGS.new("Rain", 100, 100)


  137.   #--------------------------------------------------------------------------
  138.   # ● 淡入
  139.   #--------------------------------------------------------------------------
  140.   # フェードインパターン
  141.   #   0:フェードなし
  142.   #   1:メインタイトル+サブタイトル+コマンド
  143.   #   2:メインタイトル+サブタイトル → コマンド
  144.   FADEIN_PATTERN = 1

  145.   # フェードイン時間(フレーム数)
  146.   #  (例1)60に設定した場合
  147.   #         パターン0 => 60
  148.   #         パターン1 => 60 + 60
  149.   FADEIN_TIME = 60


  150.   #--------------------------------------------------------------------------
  151.   # ● 超时设置
  152.   #--------------------------------------------------------------------------
  153.   # タイムアウト機能
  154.   TIME_OUT = false

  155.   # タイムアウト発生フレーム数
  156.   TIME_OUT_CNT = 6000


  157.   #--------------------------------------------------------------------------
  158.   # ● 背景图设置
  159.   #--------------------------------------------------------------------------
  160.   # タイトル背景にマップを使用する
  161.   TB_MAP = true

  162.   # 表示するマップID
  163.   TB_MAP_ID = 70

  164.   # 表示するマップ位置(Rect#width/heightは未参照)
  165.   TB_MAP_POS = Rect.new(19, 28, 0, 0)

  166.   # 背景2(手前)を表示する
  167.   TB_MAP_2 = false

  168.   #--------------------------------------------------------------------------
  169.   # ● 背景设定
  170.   #--------------------------------------------------------------------------
  171.   # 背景については [背景1(奥), 背景2(手前)] の形式で個々に指定して下さい。
  172.   #--------------------------------------------------------------------------
  173.   # (注) マップ背景のスクロール等はイベントで実行して下さい
  174.   #--------------------------------------------------------------------------
  175.   # タイトル背景のズーム
  176.   TB_FIT = [true, true]

  177.   # 背景原点
  178.   #   0, 5 : 中央
  179.   #   7(左上) | 8(上) | 9(右上)
  180.   #   4(左)   | 5(―) | 6(右)
  181.   #   1(左下) | 2(下) | 3(右下)
  182.   TB_BASE = [5, 5]

  183.   # タイトルグラフィックのスクロール設定
  184.   #   true  : スクロール有り
  185.   #   false : スクロール無し
  186.   SCROLL_TG = [false, false]

  187.   # スクロール方向
  188.   #   0, 5 : 変更なし
  189.   #   7(左上) | 8(上) | 9(右上)
  190.   #   4(左)   | 5(―) | 6(右)
  191.   #   1(左下) | 2(下) | 3(右下)
  192.   SCROLL_DIR = [8, 5]

  193.   # スクロール速さ(1frame単位で移動させる位置)
  194.   SCROLL_SPD = [1, 1]

  195.   # 画像境界でスクロールを止める
  196.   # ※ 画面サイズより大きな画像を用意してください。
  197.   #    また、TB_BASEとSCROLL_DIRの値は反対の位置に設定して下さい。
  198.   SCROLL_STOP = [true, false]

  199. end
复制代码

Lv1.梦旅人

梦石
0
星屑
50
在线时间
87 小时
注册时间
2015-3-12
帖子
47
2
 楼主| 发表于 2015-3-28 11:49:26 | 只看该作者
定制标题主要部分
  1. #==============================================================================
  2. # ■ VXAce-RGSS3-17 タイトルカスタマイズ [main]        by Claimh
  3. #==============================================================================

  4. #==============================================================================
  5. # ■ Title
  6. #==============================================================================
  7. module Title
  8.   #--------------------------------------------------------------------------
  9.   # ● スキップコマンド : C, B, 方向キー
  10.   #--------------------------------------------------------------------------
  11.   def self.skip_trigger?
  12.     (Input.trigger?(:C) or Input.trigger?(:B) or Input.dir4 > 0)
  13.   end
  14. end


  15. #==============================================================================
  16. # ■ Title::Scene
  17. #==============================================================================
  18. module Title::Scene
  19.   S_START = 0  # 起動
  20.   S_LOGO  = 1  # ロゴシーン
  21.   S_DEMO  = 2  # イベントデモ
  22.   S_TITLE = 3  # タイトル
  23.   #--------------------------------------------------------------------------
  24.   # ● ロゴシーンの有無
  25.   #--------------------------------------------------------------------------
  26.   def self.enable_logo(timeout=false)
  27.     false
  28.   end
  29.   #--------------------------------------------------------------------------
  30.   # ● イベントシーンの有無
  31.   #--------------------------------------------------------------------------
  32.   def self.enable_demo(timeout=false)
  33.     false
  34.   end
  35. end

  36. #==============================================================================
  37. # ■ TitleBack  : 背景プレーン
  38. #==============================================================================
  39. class TitleBack < Plane
  40.   #--------------------------------------------------------------------------
  41.   # ● オブジェクト初期化
  42.   #--------------------------------------------------------------------------
  43.   def initialize(b, main=false)
  44.     @index = main ? 0 : 1
  45.     super(Viewport.new(0, 0, Graphics.width, Graphics.height))
  46.     self.bitmap = b
  47.     self.viewport.z = 100
  48.     fit_screen if Title::TB_FIT[@index]
  49.     @stop = false
  50.     reset_pos
  51.     stop_pos
  52.   end
  53.   def bwz;  (bitmap.width * zoom_x).truncate; end # ズーム後のbitmap幅
  54.   def bhz;  (bitmap.height* zoom_y).truncate; end # ズーム後のbitmap高さ
  55.   def vw;   viewport.rect.width;   end
  56.   def vh;   viewport.rect.height;  end
  57.   #--------------------------------------------------------------------------
  58.   # ● オブジェクト破棄
  59.   #--------------------------------------------------------------------------
  60.   def dispose
  61.     self.bitmap.dispose
  62.     self.viewport.dispose
  63.     super
  64.   end
  65.   #--------------------------------------------------------------------------
  66.   # ● 画面にフィットさせる
  67.   #--------------------------------------------------------------------------
  68.   def fit_screen
  69.     x_zoom = vw  * 1.0 / bitmap.width
  70.     y_zoom = vh * 1.0 / bitmap.height
  71.     zoom = x_zoom > y_zoom ? x_zoom : y_zoom
  72.     self.zoom_x = self.zoom_y = zoom
  73.   end
  74.   #--------------------------------------------------------------------------
  75.   # ● 画像位置の設定
  76.   #--------------------------------------------------------------------------
  77.   def x4; 0;  end
  78.   def x5; (bwz - vw) / 2;  end
  79.   def x6; (bwz - vw);  end
  80.   def y2; (bhz - vh);  end
  81.   def y5; (bhz - vh) / 2;  end
  82.   def y8; 0;  end
  83.   def reset_pos
  84.     case Title::TB_BASE[@index]
  85.     when 1; self.ox = x4; self.oy = y2
  86.     when 2; self.ox = x5; self.oy = y2
  87.     when 3; self.ox = x6; self.oy = y2
  88.     when 4; self.ox = x4; self.oy = y5
  89.     when 6; self.ox = x6; self.oy = y5
  90.     when 7; self.ox = x4; self.oy = y8
  91.     when 8; self.ox = x5; self.oy = y8
  92.     when 9; self.ox = x6; self.oy = y8
  93.     else;   self.ox = x5; self.oy = y5
  94.     end
  95.   end
  96.   #--------------------------------------------------------------------------
  97.   # ● 終端点の設定
  98.   #--------------------------------------------------------------------------
  99.   def stop_pos
  100.     case Title::TB_BASE[@index]
  101.     when 1,4,7; @x_gap = x6
  102.     when 3,6,9; @x_gap = x4
  103.     else;       @x_gap = nil
  104.     end
  105.     case Title::TB_BASE[@index]
  106.     when 1,2,3; @y_gap = y8
  107.     when 7,8,9; @y_gap = y2
  108.     else;       @y_gap = nil
  109.     end
  110.   end
  111.   #--------------------------------------------------------------------------
  112.   # ● スクロール判定
  113.   #--------------------------------------------------------------------------
  114.   def scroll?
  115.     Title::SCROLL_TG[@index]
  116.   end
  117.   #--------------------------------------------------------------------------
  118.   # ● スクロール終端判定
  119.   #--------------------------------------------------------------------------
  120.   def scroll_stop?
  121.     return unless Title::SCROLL_STOP[@index]
  122.     if !@x_gap.nil?
  123. #      p "#{self.ox}, #{@x_gap}"
  124.       case Title::SCROLL_DIR[@index]
  125.       when 1,4,7; x_end_stop if self.ox < @x_gap
  126.       when 3,6,9; x_end_stop if self.ox > @x_gap
  127.       end
  128.     end
  129.     if !@y_gap.nil?
  130. #      p "#{self.oy}, #{@y_gap}"
  131.       case Title::SCROLL_DIR[@index]
  132.       when 1,2,3; y_end_stop if self.oy > @y_gap
  133.       when 7,8,9; y_end_stop if self.oy < @y_gap
  134.       end
  135.     end
  136.   end
  137.   def x_end_stop
  138.     self.ox = @x_gap
  139.     @stop = true
  140.   end
  141.   def y_end_stop
  142.     self.oy = @y_gap
  143.     @stop = true
  144.   end
  145.   #--------------------------------------------------------------------------
  146.   # ● Xスクロール
  147.   #--------------------------------------------------------------------------
  148.   def scroll_x(n)
  149.     self.ox = self.ox + n * Title::SCROLL_SPD[@index]
  150.   end
  151.   def scroll_r;  scroll_x( 1)  end
  152.   def scroll_l;  scroll_x(-1)  end
  153.   #--------------------------------------------------------------------------
  154.   # ● Yスクロール
  155.   #--------------------------------------------------------------------------
  156.   def scroll_y(n)
  157.     self.oy = self.oy + n * Title::SCROLL_SPD[@index]
  158.   end
  159.   def scroll_u;  scroll_y(-1)  end
  160.   def scroll_d;  scroll_y( 1)  end
  161.   #--------------------------------------------------------------------------
  162.   # ● フレーム更新
  163.   #--------------------------------------------------------------------------
  164.   def update
  165.     return unless scroll?
  166.     return if @stop
  167.     case Title::SCROLL_DIR[@index]
  168.     when 1; scroll_l; scroll_d
  169.     when 2;           scroll_d
  170.     when 3; scroll_r; scroll_d
  171.     when 4; scroll_l
  172.     when 6; scroll_r
  173.     when 7; scroll_l; scroll_u
  174.     when 8;           scroll_u
  175.     when 9; scroll_r; scroll_u
  176.     end
  177.     scroll_stop?
  178.     self.ox %= viewport.rect.width
  179.     self.oy %= viewport.rect.height
  180.   end
  181. end


  182. #==============================================================================
  183. # ■ Spriteset_TitleMap  : タイトル背景マップ
  184. #==============================================================================
  185. class Spriteset_TitleMap < Spriteset_Map
  186.   #--------------------------------------------------------------------------
  187.   # ● フレーム更新
  188.   #--------------------------------------------------------------------------
  189.   def update
  190.     super
  191.     $game_map.update(true)
  192.   end
  193. end


  194. #==============================================================================
  195. # ■ Title::TitleName
  196. #==============================================================================
  197. class Title::TitleName
  198.   #--------------------------------------------------------------------------
  199.   # ● オブジェクト初期化
  200.   #--------------------------------------------------------------------------
  201.   def initialize(type)
  202.     @type = type
  203.     @name = @file = ""
  204.     @rect = Rect.new
  205.     @x_align = @y_align = 0
  206.   end
  207.   #--------------------------------------------------------------------------
  208.   # ● 描画対象の矩形
  209.   #--------------------------------------------------------------------------
  210.   def src_rect(name, file, bitmap)
  211.     if @type
  212.       @name = name
  213.       @srect = bitmap.text_size(name)
  214.     else
  215.       @file = file
  216.       b = Cache.system(file)
  217.       @srect = Rect.new(0, 0, b.width, b.height)
  218.     end
  219.   end
  220.   #--------------------------------------------------------------------------
  221.   # ● タイトル矩形の計算
  222.   #--------------------------------------------------------------------------
  223.   def calc_rect(config, half=true)
  224.     if config.x < 0
  225.       @rect.x += config.width
  226.       @rect.width = Graphics.width - config.width
  227.       @x_align = 1
  228.     else
  229.       @rect.x = config.x
  230.       @rect.width = @srect.width
  231.     end
  232.     if config.y < 0
  233.       @rect.y += config.height
  234.       @rect.height = half ? Graphics.height / 2 : Graphics.height
  235.       @y_align = 1
  236.     else
  237.       @rect.y = config.y
  238.       @rect.height = @srect.height
  239.     end
  240.   end
  241.   #--------------------------------------------------------------------------
  242.   # ● タイトル描画
  243.   #--------------------------------------------------------------------------
  244.   def draw_tile(bitmap)
  245.     if @type
  246.       bitmap.draw_text(@rect, @name, @x_align)
  247.     else
  248.       b = Cache.system(@file)
  249.       @rect.x = ((@rect.width  - b.width)  / 2)   if @x_align == 1
  250.       @rect.y = ((@rect.height - b.height) / 2)   if @y_align == 1
  251.       bitmap.blt(@rect.x, @rect.y, b, @srect)
  252.     end
  253.   end
  254. end


  255. #==============================================================================
  256. # ■ Sprite_TitleName  : タイトル名スプライト
  257. #==============================================================================
  258. class Sprite_TitleName < Sprite
  259.   #--------------------------------------------------------------------------
  260.   # ● オブジェクト初期化
  261.   #--------------------------------------------------------------------------
  262.   def initialize(main)
  263.     @main = main
  264.     super(Viewport.new(0, 0, Graphics.width, Graphics.height))
  265.     self.bitmap = Bitmap.new(Graphics.width, Graphics.height)
  266.     self.viewport.z = 200
  267.     main ? Title.set_main_bitmap(self.bitmap) : Title.set_sub_bitmap(self.bitmap)
  268.   end
  269.   #--------------------------------------------------------------------------
  270.   # ● オブジェクト破棄
  271.   #--------------------------------------------------------------------------
  272.   def dispose
  273.     self.bitmap.dispose
  274.     self.viewport.dispose
  275.     super
  276.   end
  277.   #--------------------------------------------------------------------------
  278.   # ● タイトル描画
  279.   #--------------------------------------------------------------------------
  280.   def draw_title
  281.     @main ? draw_main_title : draw_sub_title
  282.   end
  283.   #--------------------------------------------------------------------------
  284.   # ● メインタイトル描画
  285.   #--------------------------------------------------------------------------
  286.   def draw_main_title
  287.     title = Title::TitleName.new(Title::TM_TYPE)
  288.     title.src_rect($data_system.game_title, Title::TM_NAME, self.bitmap)
  289.     title.calc_rect(Title::TM_RECT)
  290.     title.draw_tile(self.bitmap)
  291.   end
  292.   #--------------------------------------------------------------------------
  293.   # ● サブタイトル描画
  294.   #--------------------------------------------------------------------------
  295.   def draw_sub_title
  296.     title = Title::TitleName.new(Title::TS_TYPE)
  297.     title.src_rect(Title::TS_NAME, Title::TS_NAME, self.bitmap)
  298.     title.calc_rect(Title::TS_RECT)
  299.     title.draw_tile(self.bitmap)
  300.   end
  301. end


  302. #==============================================================================
  303. # ■ Scene_Title
  304. #------------------------------------------------------------------------------
  305. #  タイトル画面の処理を行うクラスです。
  306. #==============================================================================
  307. class Scene_Title < Scene_Base
  308.   include Title::Scene
  309.   #--------------------------------------------------------------------------
  310.   # ● オブジェクト初期化
  311.   #--------------------------------------------------------------------------
  312.   def initialize
  313.     super
  314.     prepare(S_START)
  315.     @timecnt = 0
  316.   end
  317.   #--------------------------------------------------------------------------
  318.   # ● 準備
  319.   #--------------------------------------------------------------------------
  320.   def prepare(scene=S_TITLE, timeout=false, index=-1)
  321.     @pre_scene = scene
  322.     @timeout   = timeout
  323.     @index     = index
  324.   end
  325.   #--------------------------------------------------------------------------
  326.   # ● トランジション実行
  327.   #--------------------------------------------------------------------------
  328.   def perform_transition
  329.     Title::TITLE_TRN.nil? ? super : Graphics.transition(transition_speed, Title::TITLE_TRN)
  330.   end
  331.   #--------------------------------------------------------------------------
  332.   # ● 開始前シーン制御
  333.   #--------------------------------------------------------------------------
  334.   def check_pre_scene
  335.     if Title::SKIP_ALL
  336.       return skip_start
  337.     end
  338.     if Title::SKIP_NEWGAME
  339.       return skip_start unless DataManager.save_file_exists?
  340.     end
  341.     if Title::SKIP_CONTINUE
  342.       return DataManager.save_file_exists? ? SceneManager.call(Scene_Load) : skip_start
  343.     end
  344.     if Title::Scene.enable_logo(@timeout) and @pre_scene < S_LOGO
  345.       return call_new_scene(Scene_Logo)
  346.     end
  347.     if Title::Scene.enable_demo(@timeout) and @pre_scene < S_DEMO
  348.       return call_new_scene(Scene_EvDemo)
  349.     end
  350.   end
  351.   #--------------------------------------------------------------------------
  352.   # ● 開始前シーン制御
  353.   #--------------------------------------------------------------------------
  354.   def call_new_scene(scene)
  355.     SceneManager.call(scene)
  356.     SceneManager.scene.prepare(@timeout)
  357.     Graphics.freeze
  358.   end
  359.   #--------------------------------------------------------------------------
  360.   # ● Skip New Game
  361.   #--------------------------------------------------------------------------
  362.   def skip_start
  363.     DataManager.setup_new_game
  364.     fadeout_all
  365.     $game_map.autoplay
  366.     SceneManager.goto(Scene_Map)
  367.     Graphics.freeze
  368.   end
  369.   #--------------------------------------------------------------------------
  370.   # ● Skip Continue
  371.   #--------------------------------------------------------------------------
  372.   def skip_continue
  373.     play_title_music
  374.     SceneManager.call(Scene_Load)
  375.     Graphics.freeze
  376.   end
  377.   #--------------------------------------------------------------------------
  378.   # ● メイン
  379.   #--------------------------------------------------------------------------
  380.   def main
  381.     check_pre_scene
  382.     return if scene_changing?
  383.     super
  384.   end
  385.   #--------------------------------------------------------------------------
  386.   # ● 開始後処理
  387.   #--------------------------------------------------------------------------
  388.   def post_start
  389.     setup_fadein  if Title::FADEIN_PATTERN > 0
  390.     super
  391.     exec_fadein   if Title::FADEIN_PATTERN > 0
  392.   end
  393.   #--------------------------------------------------------------------------
  394.   # ● フェードin処理準備
  395.   #--------------------------------------------------------------------------
  396.   def setup_fadein
  397.     @text_sprites.each { |s| s.opacity = 0 }
  398.     @command_window.open
  399.   end
  400.   #--------------------------------------------------------------------------
  401.   # ● フェードin処理
  402.   #--------------------------------------------------------------------------
  403.   def exec_fadein
  404.     case Title::FADEIN_PATTERN
  405.     when 1  # メインタイトル+サブタイトル+コマンド
  406.       Title::FADEIN_TIME.times do |i|
  407.         @text_sprites.each { |s| s.opacity += 255/Title::FADEIN_TIME }
  408.         @command_window.update_open
  409.         break if update_fade
  410.       end
  411.     when 2  # メインタイトル+サブタイトル → コマンド
  412.       Title::FADEIN_TIME.times do |i|
  413.         @text_sprites.each { |s| s.opacity += 255/Title::FADEIN_TIME }
  414.         break if update_fade
  415.       end
  416.       Title::FADEIN_TIME.times do |i|
  417.         @command_window.update_open
  418.         break if update_fade
  419.       end
  420.     end
  421.     @text_sprites.each { |s| s.opacity = 255 }
  422.     @command_window.update_open while !@command_window.open?
  423.   end
  424.   #--------------------------------------------------------------------------
  425.   # ● フェードinのフレーム更新
  426.   #--------------------------------------------------------------------------
  427.   def update_fade
  428.     update_background
  429.     Graphics.update
  430.     Input.update
  431.     @command_window.process_cursor_move
  432.     Title.skip_trigger?
  433.   end
  434.   #--------------------------------------------------------------------------
  435.   # ● 開始処理
  436.   #--------------------------------------------------------------------------
  437.   alias start_title start
  438.   def start
  439.     start_title
  440.     create_message_window     if Title::TB_MAP
  441.     create_scroll_text_window if Title::TB_MAP
  442.   end
  443.   #--------------------------------------------------------------------------
  444.   # ● 背景の作成 [再定義]
  445.   #--------------------------------------------------------------------------
  446.   def create_background
  447.     @back_sprites = []
  448.     if Title::TB_MAP
  449.       DataManager.create_game_objects
  450.       $game_map.setup(Title::TB_MAP_ID)
  451.       $game_player.moveto(Title::TB_MAP_POS.x, Title::TB_MAP_POS.y)
  452.       @back_sprites.push(Spriteset_TitleMap.new)
  453.       @back_sprites[0].update
  454.       @back_sprites.push(TitleBack.new(Cache.title2($data_system.title2_name))) if Title::TB_MAP_2
  455.     else
  456.       @back_sprites.push(TitleBack.new(Cache.title1($data_system.title1_name), true))
  457.       @back_sprites.push(TitleBack.new(Cache.title2($data_system.title2_name)))
  458.     end
  459.     create_weather
  460.   end
  461.   #--------------------------------------------------------------------------
  462.   # ● 背景のフレーム更新
  463.   #--------------------------------------------------------------------------
  464.   def update_background
  465.     @back_sprites.each { |s| s.update }
  466.     update_weather
  467.   end
  468.   #--------------------------------------------------------------------------
  469.   # ● 前景の作成 [再定義]
  470.   #--------------------------------------------------------------------------
  471.   def create_foreground
  472.     @text_sprites = []
  473.     return unless $data_system.opt_draw_title
  474.     (Title::TS ? 2 : 1).times {|i| @text_sprites.push(Sprite_TitleName.new(i==0))}
  475.     draw_game_title
  476.   end
  477.   #--------------------------------------------------------------------------
  478.   # ● ゲームタイトルの描画 [再定義]
  479.   #--------------------------------------------------------------------------
  480.   def draw_game_title
  481.     @text_sprites.each { |s| s.draw_title }
  482.   end
  483.   #--------------------------------------------------------------------------
  484.   # ● 背景の解放 [再定義]
  485.   #--------------------------------------------------------------------------
  486.   def dispose_background
  487.     dispose_weather
  488.     @back_sprites.each { |s| s.dispose }
  489.   end
  490.   #--------------------------------------------------------------------------
  491.   # ● 前景の解放 [再定義]
  492.   #--------------------------------------------------------------------------
  493.   def dispose_foreground
  494.     @text_sprites.each { |s| s.bitmap.dispose; s.dispose }
  495.   end
  496.   #--------------------------------------------------------------------------
  497.   # ● メッセージウィンドウの作成
  498.   #--------------------------------------------------------------------------
  499.   def create_message_window
  500.     @message_window = Window_Message.new
  501.   end
  502.   #--------------------------------------------------------------------------
  503.   # ● スクロール文章ウィンドウの作成
  504.   #--------------------------------------------------------------------------
  505.   def create_scroll_text_window
  506.     @scroll_text_window = Window_ScrollText.new
  507.   end
  508.   #--------------------------------------------------------------------------
  509.   # ● コマンドウィンドウの作成
  510.   #--------------------------------------------------------------------------
  511.   alias create_command_window_title create_command_window
  512.   def create_command_window
  513.     create_command_window_title
  514.     Title::CMD_BOX.select { |i| i > 2 }.each do |c|
  515.       @command_window.set_handler(Title::EXCMD[c][3], method(:command_extra))
  516.     end
  517.     @command_window.select(@index) if @index >= 0
  518.   end
  519.   #--------------------------------------------------------------------------
  520.   # ● コマンド[ニューゲーム]
  521.   #--------------------------------------------------------------------------
  522.   alias command_new_game_title command_new_game
  523.   def command_new_game
  524.     map_clear if Title::TB_MAP
  525.     command_new_game_title
  526.   end
  527.   #--------------------------------------------------------------------------
  528.   # ● コマンド[拡張コマンド]
  529.   #--------------------------------------------------------------------------
  530.   def command_extra
  531.     close_command_window
  532.     map_clear if Title::TB_MAP
  533.     SceneManager.call(Title::EXCMD[@command_window.cmd_no][1])
  534.   end
  535.   #--------------------------------------------------------------------------
  536.   # ● 天候スプライトの作成
  537.   #--------------------------------------------------------------------------
  538.   def create_weather
  539.     @w_viewport = Viewport.new(0,0,Graphics.width,Graphics.height)
  540.     @w_viewport.z = 100
  541.     @weather = Spriteset_Weather.new(@w_viewport)
  542.     @weather.type  = Title::WEATHER_TYPE
  543.     @weather.power = Title::WEATHER_POWER
  544.     @weather.update
  545.   end
  546.   #--------------------------------------------------------------------------
  547.   # ● 天候スプライトの解放
  548.   #--------------------------------------------------------------------------
  549.   def dispose_weather
  550.     @w_viewport.dispose
  551.     @weather.dispose
  552.   end
  553.   #--------------------------------------------------------------------------
  554.   # ● 天候スプライトのフレーム更新
  555.   #--------------------------------------------------------------------------
  556.   def update_weather
  557.     @weather.update
  558.   end
  559.   #--------------------------------------------------------------------------
  560.   # ● タイトル画面の音楽演奏
  561.   #--------------------------------------------------------------------------
  562.   alias play_title_music_title play_title_music
  563.   def play_title_music
  564.     play_title_music_title
  565.     Title::BGS.play unless Title::BGS.nil?
  566.   end
  567.   #--------------------------------------------------------------------------
  568.   # ● マップ表示のクリア(マップ使用時はfreezeして、画面をクリアする)
  569.   #--------------------------------------------------------------------------
  570.   def map_clear
  571.     Graphics.freeze
  572.     $game_map.screen.clear
  573.   end
  574.   #--------------------------------------------------------------------------
  575.   # ● フレーム更新
  576.   #--------------------------------------------------------------------------
  577.   def update
  578.     super
  579.     update_background
  580.     update_timeout
  581.   end
  582.   #--------------------------------------------------------------------------
  583.   # ● タイムアウト
  584.   #--------------------------------------------------------------------------
  585.   def update_timeout
  586.     @timecnt += 1
  587.     if @timecnt >= Title::TIME_OUT_CNT
  588.       map_clear if Title::TB_MAP
  589.       fadeout_all
  590.       SceneManager.goto(Scene_Title)
  591.       SceneManager.scene.prepare(Title::Scene::S_START, true)
  592.     end
  593.   end
  594. end


  595. #==============================================================================
  596. # ■ Window_TitleCommand
  597. #------------------------------------------------------------------------------
  598. #  タイトル画面で、ニューゲーム/コンティニューを選択するウィンドウです。
  599. #==============================================================================
  600. class Window_TitleCommand < Window_Command
  601.   #--------------------------------------------------------------------------
  602.   # ● オブジェクト初期化
  603.   #--------------------------------------------------------------------------
  604.   alias initialize_title initialize
  605.   def initialize
  606.     @slot_n = 0
  607.     @slot_chg = false
  608.     @cmds = enable_cmd_list
  609.     initialize_title
  610.     Title.cmd_window_opacity(self)
  611.     Title.set_cmd_bitmap(self.contents)
  612.   end
  613.   #--------------------------------------------------------------------------
  614.   # ● 行の高さを取得
  615.   #--------------------------------------------------------------------------
  616.   def line_height
  617.     Title::CMD_TYPE ? Title::CMD_RECT.height : Cache.system(Title::CMD_GRPHIC[0][0]).height
  618.   end
  619.   #--------------------------------------------------------------------------
  620.   # ● ウィンドウ内容の作成
  621.   #--------------------------------------------------------------------------
  622.   def create_contents
  623.     super
  624.     Title.set_cmd_bitmap(self.contents)
  625.   end
  626.   #--------------------------------------------------------------------------
  627.   # ● カーソルの移動処理
  628.   #--------------------------------------------------------------------------
  629.   def process_cursor_move
  630.     return unless cursor_movable?
  631.     @slot_chg = false
  632.     super
  633.     Sound.play_cursor if @slot_chg
  634.   end
  635.   #--------------------------------------------------------------------------
  636.   # ● アライメントの取得
  637.   #--------------------------------------------------------------------------
  638.   def alignment
  639.     Title::CT_ALIGN
  640.   end
  641.   #--------------------------------------------------------------------------
  642.   # ● コマンド番号取得
  643.   #--------------------------------------------------------------------------
  644.   def command_no(index)
  645.     @list[index][:ext]
  646.   end
  647.   def cmd_no
  648.     @list[@index][:ext]
  649.   end
  650.   #--------------------------------------------------------------------------
  651.   # ● テキスト幅
  652.   #--------------------------------------------------------------------------
  653.   def cmd_width_max(add_w=0)
  654.     sizes = []
  655.     item_max.times{ |i| sizes.push(cmd_text_w(i) + (i * add_w)) }
  656.     return sizes.max + 8
  657.   end
  658.   #--------------------------------------------------------------------------
  659.   # ● ウィンドウ幅の取得
  660.   #--------------------------------------------------------------------------
  661.   def window_width
  662.     [160, cmd_width_max(Title::CMD_RECT.width) + standard_padding * 2].max
  663.   end
  664.   #--------------------------------------------------------------------------
  665.   # ● 項目を描画する矩形の取得
  666.   #--------------------------------------------------------------------------
  667.   def align_x(index, x=0)
  668.     if Title::CMD_TYPE
  669.       case alignment
  670.       when 0; #non
  671.       when 1; return (cmd_width_max + x - cmd_text_w(command_no(index))) / 2
  672.       when 2; return cmd_width_max + x - cmd_text_w(command_no(index))
  673.       end
  674.     end
  675.     return 0
  676.   end
  677.   #--------------------------------------------------------------------------
  678.   # ● 項目を描画する矩形の取得
  679.   #--------------------------------------------------------------------------
  680.   def item_rect(index)
  681.     rect = super(index)
  682.     rect.x += index * Title::CMD_RECT.width
  683.     if Title::CT_CUR_FIT
  684.       rect.x += align_x(index, -8)
  685.       rect.width = cmd_text_w(command_no(index)) + 8
  686.     end
  687.     rect
  688.   end
  689.   #--------------------------------------------------------------------------
  690.   # ● 項目を描画する矩形の取得(テキスト用)
  691.   #--------------------------------------------------------------------------
  692.   def item_rect_for_text(index)
  693.     rect = super(index)
  694.     if Title::CT_CUR_FIT
  695.       rect.x -= align_x(index, 8)
  696.       rect.width = cmd_width_max + 8
  697.     end
  698.     rect
  699.   end
  700.   #--------------------------------------------------------------------------
  701.   # ● ウィンドウ位置の更新
  702.   #--------------------------------------------------------------------------
  703.   def update_placement
  704.     self.x = Title::CMD_RECT.x < 0 ? (Graphics.width - width) / 2 : Title::CMD_RECT.x
  705.     self.y = Title::CMD_RECT.y < 0 ? (Graphics.height * 1.6 - height) / 2 : Title::CMD_RECT.y
  706.   end
  707.   #--------------------------------------------------------------------------
  708.   # ● 表示対象のコマンドリスト
  709.   #--------------------------------------------------------------------------
  710.   def enable_cmd_list
  711.     Title::CMD_BOX.uniq.select { |c| Title.excmd_enable?(c) }
  712.   end
  713.   def cmd_list
  714.     slot_shift
  715.   end
  716.   #--------------------------------------------------------------------------
  717.   # ● コマンドごとのテキスト幅
  718.   #--------------------------------------------------------------------------
  719.   def cmd_text_w(index)
  720.     if Title::CMD_TYPE
  721.       if disposed?
  722.         b = Title.set_cmd_bitmap(Bitmap.new(1,1))
  723.         w = b.text_size(command_name(index)).width
  724.         b.dispose
  725.       else
  726.         w = contents.text_size(command_name(index)).width
  727.       end
  728.     else
  729.       w = Cache.system(Title::CMD_GRPHIC[command_no(index)][0]).width
  730.     end
  731.     return w
  732.   end
  733.   #--------------------------------------------------------------------------
  734.   # ● コマンドリストの作成
  735.   #--------------------------------------------------------------------------
  736.   def make_command_list
  737.     cmd_list.each do |c|
  738.       case c
  739.       when 0; add_command(Vocab::new_game, :new_game, true, c)
  740.       when 1; add_command(Vocab::continue, :continue, continue_enabled, c)
  741.       when 2; add_command(Vocab::shutdown, :shutdown, true, c)
  742.       else;   add_command(Title::EXCMD[c][0],Title::EXCMD[c][3], true, c)
  743.       end
  744.     end
  745.   end
  746.   #--------------------------------------------------------------------------
  747.   # ● スロット式の固定Index
  748.   #--------------------------------------------------------------------------
  749.   def slot_i
  750.     ((@cmds.size-1)/2).truncate
  751.   end
  752.   #--------------------------------------------------------------------------
  753.   # ● カーソル位置の設定
  754.   #--------------------------------------------------------------------------
  755.   def index=(index)
  756.     if Title::CMD_SLOT
  757.       @slot_n = (slot_i - index) % item_max
  758.       @slot_chg = @slot_n != 0
  759.       super(slot_i)
  760.       refresh
  761.     else
  762.       super(index)
  763.     end
  764.   end
  765.   #--------------------------------------------------------------------------
  766.   # ● 項目の選択
  767.   #--------------------------------------------------------------------------
  768.   def select(index)
  769.     old_index = @index
  770.     super(index)
  771.     if !Title::CMD_SLOT and Title::CMD_CHNG
  772.       redraw_item(old_index)
  773.       redraw_item(index)
  774.     end
  775.   end
  776.   #--------------------------------------------------------------------------
  777.   # ● スロットシフト
  778.   #--------------------------------------------------------------------------
  779.   def slot_shift
  780.     if Title::CMD_SLOT
  781.       @slot_n.abs.times do |i|
  782.         @cmds.unshift(@cmds.pop) if @slot_n > 0
  783.         @cmds.push(@cmds.shift)  if @slot_n < 0
  784.       end
  785.     end
  786.     @cmds
  787.   end
  788.   #--------------------------------------------------------------------------
  789.   # ● スロット表示時の不透明化
  790.   #--------------------------------------------------------------------------
  791.   def slot_alpha(index)
  792.     return 0 if Title::CMD_SLOT_ALL
  793.     (@index-index).abs < 2 ? 0 : 255
  794.   end
  795.   #--------------------------------------------------------------------------
  796.   # ● 項目の描画
  797.   #--------------------------------------------------------------------------
  798.   def draw_item(index)
  799.     Title::CMD_TYPE ? draw_item_text(index) : draw_cmd(index)
  800.   end
  801.   #--------------------------------------------------------------------------
  802.   # ● 項目の描画
  803.   #--------------------------------------------------------------------------
  804.   def draw_item_text(index)
  805.     change_color(normal_color, command_enabled?(index))
  806.     contents.font.color.alpha -= slot_alpha(index) if Title::CMD_SLOT
  807.     draw_text(item_rect_for_text(index), command_name(index), alignment)
  808.   end
  809.   #--------------------------------------------------------------------------
  810.   # ● 画像描画
  811.   #--------------------------------------------------------------------------
  812.   def draw_cmd(index)
  813.     g = Title::CMD_GRPHIC[command_no(index)]
  814.     b = Cache.system((Title::CMD_CHNG and index != @index) ? g[1] : g[0])
  815.     rect = item_rect_for_text(index)
  816.     opacity = command_enabled?(index) ? 255 : translucent_alpha
  817.     opacity -= slot_alpha(index) if Title::CMD_SLOT
  818.     contents.blt(rect.x, rect.y, b, Rect.new(0,0,b.width,b.height), opacity)
  819.   end
  820.   #--------------------------------------------------------------------------
  821.   # ● カーソルの更新
  822.   #--------------------------------------------------------------------------
  823.   def update_cursor
  824.     Title::DISABLE_CURSOR ? cursor_rect.empty : super
  825.   end
  826. end
复制代码
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
87 小时
注册时间
2015-3-12
帖子
47
3
 楼主| 发表于 2015-3-28 11:50:00 | 只看该作者
标题logo
  1. #==============================================================================
  2. # ■ VXAce-RGSS3-17 タイトルカスタマイズ [Logo]        by Claimh
  3. #------------------------------------------------------------------------------
  4. # タイトル表示前にロゴ画面を表示します。
  5. #------------------------------------------------------------------------------
  6. # ●セクション
  7. #   タイトルカスタマイズより下に配置して下さい。
  8. #------------------------------------------------------------------------------
  9. # ●動作について
  10. # ロゴ表示中Title.skip_trigger?内のボタンが押された場合はスキップします
  11. # ただし、動画再生の場合はスキップできません。
  12. #==============================================================================

  13. module Title::LOGO
  14.   # ME
  15.   LOGO_ME = RPG::ME.new("Item")

  16.   # トランジション(nil:画像なし)
  17.   LOGO_TRN = nil  #"Graphics/System/cc_transition2"

  18.   # ロゴタイプ
  19.   #  0..画像
  20.   #  1..テキスト
  21.   #  2..ogv動画
  22.   LOGO_TYPE = 0

  23.   # ロゴ名(画像ファイル or テキスト or 動画ファイル)
  24.   #   画像ファイル : Graphics/System/
  25.   #   動画ファイル : Movies/
  26.   LOGO = "logo"
  27.   
  28.   # ロゴ表示位置(Rect#width,heightは未参照)
  29.   #   Rect#x  : -1を指定すると中央
  30.   #   Rect#y  : -1を指定すると中央
  31.   # (注)動画再生は常に中央表示になります
  32.   L_RECT = Rect.new(-1, -1, 0, 0)
  33.   
  34.   # フォント設定
  35.   def self.logo_font(bitmap)
  36.     bitmap.font.size = 48
  37.     bitmap
  38.   end
  39.   
  40.   # ロゴ表示時間(フレーム数)
  41.   # (注)動画再生では無効(動画終端まで再生されます)
  42.   L_TIME = 90
  43.   
  44.   # タイムアウト発生時にもロゴ表示する
  45.   L_TOUT = false
  46. end


  47. #==============================================================================
  48. # ■ Title::Scene
  49. #==============================================================================
  50. module Title::Scene
  51.   #--------------------------------------------------------------------------
  52.   # ● ロゴシーンの有無
  53.   #--------------------------------------------------------------------------
  54.   def self.enable_logo(timeout=false)
  55.     timeout ? Title::LOGO::L_TOUT : true
  56.   end
  57. end

  58. class Scene_Logo < Scene_Base
  59.   include Title::LOGO
  60.   #--------------------------------------------------------------------------
  61.   # ● オブジェクト初期化
  62.   #--------------------------------------------------------------------------
  63.   def initialize
  64.     super
  65.     prepare
  66.   end
  67.   #--------------------------------------------------------------------------
  68.   # ● 準備
  69.   #--------------------------------------------------------------------------
  70.   def prepare(timeout=false)
  71.     @timeout = timeout
  72.   end
  73.   #--------------------------------------------------------------------------
  74.   # ● 開始処理
  75.   #--------------------------------------------------------------------------
  76.   def start
  77.     super
  78.     LOGO_ME.play unless LOGO_ME.nil?
  79.     @time = 0
  80.     @sprite = Sprite.new
  81.     @sprite.bitmap = Title::LOGO.logo_font(Bitmap.new(Graphics.width, Graphics.height))
  82.     draw_logo if LOGO_TYPE < 2
  83.   end
  84.   #--------------------------------------------------------------------------
  85.   # ● トランジション実行
  86.   #--------------------------------------------------------------------------
  87.   def perform_transition
  88.     LOGO_TRN.nil? ? super : Graphics.transition(transition_speed, LOGO_TRN)
  89.   end
  90.   #--------------------------------------------------------------------------
  91.   # ● トランジション速度の取得
  92.   #--------------------------------------------------------------------------
  93.   def transition_speed
  94.     return 20
  95.   end
  96.   #--------------------------------------------------------------------------
  97.   # ● ロゴ描画
  98.   #--------------------------------------------------------------------------
  99.   def draw_logo
  100.     logo = Title::TitleName.new(LOGO_TYPE==1)
  101.     logo.src_rect(LOGO, LOGO, @sprite.bitmap)
  102.     logo.calc_rect(L_RECT, false)
  103.     logo.draw_tile(@sprite.bitmap)
  104.   end
  105.   #--------------------------------------------------------------------------
  106.   # ● 開始後処理
  107.   #--------------------------------------------------------------------------
  108.   def post_start
  109.     super
  110.     play_movie if LOGO_TYPE == 2
  111.   end
  112.   #--------------------------------------------------------------------------
  113.   # ● 動画再生
  114.   #--------------------------------------------------------------------------
  115.   def play_movie
  116.     Graphics.play_movie('Movies/' + LOGO)
  117.     return_scene
  118.   end
  119.   #--------------------------------------------------------------------------
  120.   # ● 終了処理
  121.   #--------------------------------------------------------------------------
  122.   def terminate
  123.     super
  124.     @sprite.bitmap.dispose
  125.     @sprite.dispose
  126.   end
  127.   #--------------------------------------------------------------------------
  128.   # ● フレーム更新
  129.   #--------------------------------------------------------------------------
  130.   def update
  131.     super
  132.     @time += 1
  133.     return return_scene if @time > L_TIME
  134.     return return_scene if Title.skip_trigger?
  135.   end
  136.   #--------------------------------------------------------------------------
  137.   # ● 呼び出し元のシーンへ戻る
  138.   #--------------------------------------------------------------------------
  139.   def return_scene
  140.     super
  141.     fadeout_all
  142.     SceneManager.scene.prepare(Title::Scene::S_LOGO, @timeout)
  143.   end
  144. end
复制代码
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
87 小时
注册时间
2015-3-12
帖子
47
4
 楼主| 发表于 2015-3-28 11:50:22 | 只看该作者
  1. ==============================================================================
  2. # ■ VXAce-RGSS3-17 タイトルカスタマイズ [EvDemo]        by Claimh
  3. #------------------------------------------------------------------------------
  4. # タイトル表示前後にイベントによるデモンストレーションを表示します。
  5. #------------------------------------------------------------------------------
  6. # ●セクション
  7. #   タイトルカスタマイズより下に配置して下さい。
  8. #------------------------------------------------------------------------------
  9. # ●イベントからタイトルに戻る場合は以下の実行してください
  10. #   SceneManager.scene.return_scene
  11. #------------------------------------------------------------------------------
  12. # ●注意事項
  13. # ・メッセージの自動送りは行いません
  14. # ・デモのイベント内で操作したスイッチ、変数等の変更はゲーム内には継承しません
  15. # ・デモ中にTitle.skip_trigger?内のボタンが押された場合はスキップします
  16. # ・動画再生を行った場合、動画再生中はスキップできません
  17. #==============================================================================

  18. module Title::EvDemo
  19.   # トランジション(nil:画像なし)
  20.   DEMO_TRN = nil  #"Graphics/System/cc_transition2"

  21.   # 表示するマップID
  22.   D_MAP_ID = 24

  23.   # 表示するマップ位置(Rect#width/heightは未参照)
  24.   D_MAP_POS = Rect.new(10, 14, 0, 0)

  25.   # 表示するタイミング
  26.   #  0..タイトル前
  27.   #  1..タイトル後(タイムアウト時)
  28.   #  2..タイトル前後
  29.   D_SHOW = 2
  30. end

  31. #==============================================================================
  32. # ■ Title::Scene
  33. #==============================================================================
  34. module Title::Scene
  35.   #--------------------------------------------------------------------------
  36.   # ● イベントシーンの有無
  37.   #--------------------------------------------------------------------------
  38.   def self.enable_demo(timeout=false)
  39.     case Title::EvDemo::D_SHOW
  40.     when 0; return !timeout
  41.     when 1; return timeout
  42.     when 2; return true
  43.     end
  44.     false
  45.   end
  46. end

  47. class Scene_EvDemo < Scene_Base
  48.   include Title::EvDemo
  49.   #--------------------------------------------------------------------------
  50.   # ● オブジェクト初期化
  51.   #--------------------------------------------------------------------------
  52.   def initialize
  53.     super
  54.     prepare
  55.   end
  56.   #--------------------------------------------------------------------------
  57.   # ● 準備
  58.   #--------------------------------------------------------------------------
  59.   def prepare(timeout=false)
  60.     @timeout = timeout
  61.   end
  62.   #--------------------------------------------------------------------------
  63.   # ● トランジション実行
  64.   #--------------------------------------------------------------------------
  65.   def perform_transition
  66.     DEMO_TRN.nil? ? super : Graphics.transition(transition_speed, DEMO_TRN)
  67.   end
  68.   #--------------------------------------------------------------------------
  69.   # ● トランジション速度の取得
  70.   #--------------------------------------------------------------------------
  71.   def transition_speed
  72.     return 20
  73.   end
  74.   #--------------------------------------------------------------------------
  75.   # ● 開始処理
  76.   #--------------------------------------------------------------------------
  77.   def start
  78.     super
  79.     create_message_window
  80.     create_scroll_text_window
  81.     DataManager.create_game_objects
  82.     $game_map.setup(D_MAP_ID)
  83.     $game_map.autoplay
  84.     $game_player.moveto(D_MAP_POS.x, D_MAP_POS.y)
  85.     @spriteset = Spriteset_TitleMap.new
  86.   end
  87.   #--------------------------------------------------------------------------
  88.   # ● メッセージウィンドウの作成
  89.   #--------------------------------------------------------------------------
  90.   def create_message_window
  91.     @message_window = Window_Message.new
  92.   end
  93.   #--------------------------------------------------------------------------
  94.   # ● スクロール文章ウィンドウの作成
  95.   #--------------------------------------------------------------------------
  96.   def create_scroll_text_window
  97.     @scroll_text_window = Window_ScrollText.new
  98.   end
  99.   #--------------------------------------------------------------------------
  100.   # ● フレーム更新
  101.   #--------------------------------------------------------------------------
  102.   def update
  103.     super
  104.     @spriteset.update
  105.     return_scene if Title.skip_trigger?
  106.   end
  107.   #--------------------------------------------------------------------------
  108.   # ● 呼び出し元のシーンへ戻る
  109.   #--------------------------------------------------------------------------
  110.   def return_scene
  111.     super
  112.     fadeout_all
  113.     $game_map.screen.clear
  114.     @spriteset.update_pictures
  115.     Graphics.update
  116.     SceneManager.scene.prepare(Title::Scene::S_DEMO, @timeout)
  117.   end
  118. end
复制代码
回复 支持 反对

使用道具 举报

Lv3.寻梦者 (版主)

…あたしは天使なんかじゃないわ

梦石
0
星屑
2208
在线时间
4033 小时
注册时间
2010-10-4
帖子
10779

开拓者贵宾

5
发表于 2015-3-28 12:04:38 | 只看该作者
图书馆Q&A -> 插件脚本如何使用?
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-15 23:25

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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