Project1

标题: [RM脚本] 一些脚本 [from zenith.ifdef.jp] [打印本页]

作者: FinalFantasy    时间: 2006-6-2 05:19
标题: [RM脚本] 一些脚本 [from zenith.ifdef.jp]
シーンタイトル

  1. #==============================================================================
  2. # タイトルデモエディター
  3. # (シーンタイトル  type A  ver1.51)
  4. #   by 水夜
  5. #  http://zenith.ifdef.jp/
  6. #------------------------------------------------------------------------------
  7. # タイトル画面にデモ演出を加えてちょっと豪華にしてみたり(設定がめんどい)
  8. #==============================================================================

  9. class Scene_Title
  10.   #--------------------------------------------------------------------------
  11.   # ● メイン処理
  12.   #--------------------------------------------------------------------------
  13.   def main
  14.     # 戦闘テストの場合
  15.     if $BTEST
  16.       battle_test
  17.       return
  18.     end
  19.     # データベースをロード
  20.     $data_actors        = load_data("Data/Actors.rxdata")
  21.     $data_classes       = load_data("Data/Classes.rxdata")
  22.     $data_skills        = load_data("Data/Skills.rxdata")
  23.     $data_items         = load_data("Data/Items.rxdata")
  24.     $data_weapons       = load_data("Data/Weapons.rxdata")
  25.     $data_armors        = load_data("Data/Armors.rxdata")
  26.     $data_enemies       = load_data("Data/Enemies.rxdata")
  27.     $data_troops        = load_data("Data/Troops.rxdata")
  28.     $data_states        = load_data("Data/States.rxdata")
  29.     $data_animations    = load_data("Data/Animations.rxdata")
  30.     $data_tilesets      = load_data("Data/Tilesets.rxdata")
  31.     $data_common_events = load_data("Data/CommonEvents.rxdata")
  32.     $data_system        = load_data("Data/System.rxdata")
  33.     # システムオブジェクトを作成
  34.     $game_system = Game_System.new
  35.     # コンティニュー有効判定
  36.     # セーブファイルがひとつでも存在するかどうかを調べる
  37.     # 有効なら @continue_enabled を true、無効なら false にする
  38.     @continue_enabled = false
  39.     for i in 0..3
  40.       if FileTest.exist?("Save#{i+1}.rxdata")
  41.         @continue_enabled = true
  42.       end
  43.     end
  44.     # ME、BGS の演奏を停止
  45.     Audio.me_stop
  46.     Audio.bgs_stop
  47.    
  48.     # ロード画面から戻ってきた際はロゴ表示とデモをスキップ(オプション導入時)
  49.     if $skip == nil
  50.       if TITLE::LOGO_APPEAR
  51.         # ロゴグラフィック作成
  52.         @logo = Sprite.new
  53.         @logo.bitmap = RPG::Cache.title(TITLE::LOGO)
  54.         @logo.ox = @logo.bitmap.width / 2
  55.         @logo.oy = @logo.bitmap.height / 2
  56.         @logo.x = 320
  57.         @logo.y = 240
  58.         @logo.opacity = 0
  59.         # タイムカウントリセット
  60.         @time = 0
  61.         # ロゴ SE を演奏
  62.         Audio.se_play("Audio/SE/" + TITLE::LOGO_SE) if TITLE::LOGO_SE != ""
  63.         # トランジション実行
  64.         Graphics.transition(0)
  65.         # ロゴ表示ループ
  66.         loop do
  67.           # ゲーム画面を更新
  68.           Graphics.update
  69.           # フレーム更新
  70.           update_logo
  71.           # ロゴ表示時間経過後ループ中断
  72.           break if @time == TITLE::LOGO_DURATION + 510 / TITLE::LOGO_FADE
  73.         end
  74.         # ロゴグラフィックを解放
  75.         @logo.bitmap.dispose
  76.         @logo.dispose
  77.       end
  78.       # タイムカウントリセット
  79.       @time = 0
  80.       
  81.       # デモ背景を作成
  82.       if TITLE::DEMO_BACK != ""
  83.         @demo_back = Plane.new
  84.         @demo_back.bitmap = RPG::Cache.title(TITLE::DEMO_BACK)
  85.       end
  86.       @back_sx = TITLE::DEMO_BACK_SCR[0] / 8.0
  87.       @back_sy = TITLE::DEMO_BACK_SCR[1] / 8.0
  88.       @back_ox = 0
  89.       @back_oy = 0
  90.       # デモスプライト格納用配列を作成
  91.       @demo = Array.new
  92.       if TITLE::DEMO_BGM != ""
  93.         # デモ BGM を演奏
  94.         Audio.bgm_play("Audio/BGM/" + TITLE::DEMO_BGM)
  95.       end
  96.       # デモ表示ループ
  97.       loop do
  98.         # ゲーム画面を更新
  99.         Graphics.update
  100.         # 入力情報を更新
  101.         Input.update
  102.         # フレーム更新
  103.         update_demo
  104.         # デモ終了またはスキップでループを中断        
  105.         break if update_demo
  106.       end
  107.       # トランジション準備
  108.       Graphics.freeze
  109.       # デモグラフィックを解放
  110.       if defined? @demo_back
  111.         @demo_back.bitmap.dispose
  112.         @demo_back.dispose
  113.       end
  114.       @demo.each{|i|i.dispose}
  115.     end
  116.    
  117.     # タイトルグラフィックを作成
  118.     @sprite = Sprite.new
  119.     @sprite.bitmap = RPG::Cache.title($data_system.title_name)
  120.     # コマンドウィンドウを作成
  121.     make_command
  122.     command_appear
  123.     if !TITLE::DEMO_TITLE_BGM and $skip != nil
  124.       # タイトル BGM を演奏
  125.       $game_system.bgm_play($data_system.title_bgm)
  126.     end
  127.     $skip = nil  
  128.     # トランジション実行
  129.     Graphics.transition(TITLE::DEMO_FADE)
  130.     # メインループ
  131.     loop do
  132.       # ゲーム画面を更新
  133.       Graphics.update
  134.       # 入力情報を更新
  135.       Input.update
  136.       # フレーム更新
  137.       update
  138.       # 画面が切り替わったらループを中断
  139.       if $scene != self
  140.         break
  141.       end
  142.     end
  143.     # トランジション準備
  144.     Graphics.freeze
  145.     # コマンドウィンドウを解放
  146.     @command_window.dispose
  147.     # タイトルグラフィックを解放
  148.     @sprite.bitmap.dispose
  149.     @sprite.dispose
  150.   end
  151.   #--------------------------------------------------------------------------
  152.   # ● コマンド作成
  153.   #--------------------------------------------------------------------------
  154.   def make_command
  155.     s1 = TITLE::NEW_GAME
  156.     s2 = TITLE::CONTINUE
  157.     s3 = TITLE::SHUT_DOWN
  158.     @command_window = Window_Command.new(192, [s1, s2, s3])
  159.     @command_window.opacity = TITLE::COMMAND_OPACITY
  160.     if TITLE::COMMAND_CDN == nil      
  161.       @command_window.x = 320 - @command_window.width / 2
  162.       @command_window.y = 288
  163.     else
  164.       @command_window.x = TITLE::COMMAND_CDN[0]
  165.       @command_window.y = TITLE::COMMAND_CDN[1]
  166.     end
  167.     @command_window.z = 500
  168.     @command_window.active = false
  169.     @command_window.visible = false
  170.     # コンティニューが有効な場合、カーソルをコンティニューに合わせる
  171.     # 無効な場合、コンティニューの文字をグレー表示にする
  172.     if @continue_enabled
  173.       @command_window.index = 1
  174.     else
  175.       @command_window.disable_item(1)
  176.     end
  177.   end
  178.   #--------------------------------------------------------------------------
  179.   # ● コマンド表示
  180.   #--------------------------------------------------------------------------
  181.   def command_appear
  182.     @command_window.active = true
  183.     @command_window.visible = true
  184.   end
  185.   #--------------------------------------------------------------------------
  186.   # ● ロゴフレーム更新
  187.   #--------------------------------------------------------------------------
  188.   def update_logo
  189.     # スプライト更新
  190.     @logo.opacity += TITLE::LOGO_FADE if @time < 255 / TITLE::LOGO_FADE
  191.     @logo.opacity -= TITLE::LOGO_FADE if @time > TITLE::LOGO_DURATION + 255 / TITLE::LOGO_FADE
  192.     # タイムカウントアップ
  193.     @time += 1
  194.   end
  195.   #--------------------------------------------------------------------------
  196.   # ● デモフレーム更新
  197.   #--------------------------------------------------------------------------
  198.   def update_demo
  199.     for i in 0...TITLE::DEMO.size
  200.       next if @time != TITLE::DEMO[i][2]
  201.       @demo.push Sprite_Demo.new(i)
  202.     end
  203.     @demo.each{|i|i.demo_update
  204.                if @time == i.end_time
  205.                  i.dispose
  206.                  @demo.delete(i)
  207.                end
  208.                }
  209.     if defined? @demo_back
  210.       @back_ox -= @back_sx
  211.       @back_oy -= @back_sx
  212.       @demo_back.ox = @back_ox
  213.       @demo_back.oy = @back_oy
  214.     end
  215.     # タイムカウントアップ
  216.     @time += 1
  217.     # C ボタンが押された場合
  218.     unless TITLE::DEMO_NO_SKIP and !@continue_enabled
  219.       if Input.trigger?(Input::C)
  220.         # デモスキップ SE を演奏
  221.         Audio.se_play("Audio/SE/" + TITLE::DEMO_SKIP_SE) if TITLE::DEMO_SKIP_SE != ""
  222.         return true
  223.       end
  224.     end
  225.     # デモ終了時間に達した場合
  226.     if @time == TITLE::DEMO_END
  227.       return true
  228.     end
  229.   end
  230. end
复制代码

作者: FinalFantasy    时间: 2006-6-2 05:19
标题: [RM脚本] 一些脚本 [from zenith.ifdef.jp]
シーンタイトル

  1. #==============================================================================
  2. # タイトルデモエディター
  3. # (シーンタイトル  type A  ver1.51)
  4. #   by 水夜
  5. #  http://zenith.ifdef.jp/
  6. #------------------------------------------------------------------------------
  7. # タイトル画面にデモ演出を加えてちょっと豪華にしてみたり(設定がめんどい)
  8. #==============================================================================

  9. class Scene_Title
  10.   #--------------------------------------------------------------------------
  11.   # ● メイン処理
  12.   #--------------------------------------------------------------------------
  13.   def main
  14.     # 戦闘テストの場合
  15.     if $BTEST
  16.       battle_test
  17.       return
  18.     end
  19.     # データベースをロード
  20.     $data_actors        = load_data("Data/Actors.rxdata")
  21.     $data_classes       = load_data("Data/Classes.rxdata")
  22.     $data_skills        = load_data("Data/Skills.rxdata")
  23.     $data_items         = load_data("Data/Items.rxdata")
  24.     $data_weapons       = load_data("Data/Weapons.rxdata")
  25.     $data_armors        = load_data("Data/Armors.rxdata")
  26.     $data_enemies       = load_data("Data/Enemies.rxdata")
  27.     $data_troops        = load_data("Data/Troops.rxdata")
  28.     $data_states        = load_data("Data/States.rxdata")
  29.     $data_animations    = load_data("Data/Animations.rxdata")
  30.     $data_tilesets      = load_data("Data/Tilesets.rxdata")
  31.     $data_common_events = load_data("Data/CommonEvents.rxdata")
  32.     $data_system        = load_data("Data/System.rxdata")
  33.     # システムオブジェクトを作成
  34.     $game_system = Game_System.new
  35.     # コンティニュー有効判定
  36.     # セーブファイルがひとつでも存在するかどうかを調べる
  37.     # 有効なら @continue_enabled を true、無効なら false にする
  38.     @continue_enabled = false
  39.     for i in 0..3
  40.       if FileTest.exist?("Save#{i+1}.rxdata")
  41.         @continue_enabled = true
  42.       end
  43.     end
  44.     # ME、BGS の演奏を停止
  45.     Audio.me_stop
  46.     Audio.bgs_stop
  47.    
  48.     # ロード画面から戻ってきた際はロゴ表示とデモをスキップ(オプション導入時)
  49.     if $skip == nil
  50.       if TITLE::LOGO_APPEAR
  51.         # ロゴグラフィック作成
  52.         @logo = Sprite.new
  53.         @logo.bitmap = RPG::Cache.title(TITLE::LOGO)
  54.         @logo.ox = @logo.bitmap.width / 2
  55.         @logo.oy = @logo.bitmap.height / 2
  56.         @logo.x = 320
  57.         @logo.y = 240
  58.         @logo.opacity = 0
  59.         # タイムカウントリセット
  60.         @time = 0
  61.         # ロゴ SE を演奏
  62.         Audio.se_play("Audio/SE/" + TITLE::LOGO_SE) if TITLE::LOGO_SE != ""
  63.         # トランジション実行
  64.         Graphics.transition(0)
  65.         # ロゴ表示ループ
  66.         loop do
  67.           # ゲーム画面を更新
  68.           Graphics.update
  69.           # フレーム更新
  70.           update_logo
  71.           # ロゴ表示時間経過後ループ中断
  72.           break if @time == TITLE::LOGO_DURATION + 510 / TITLE::LOGO_FADE
  73.         end
  74.         # ロゴグラフィックを解放
  75.         @logo.bitmap.dispose
  76.         @logo.dispose
  77.       end
  78.       # タイムカウントリセット
  79.       @time = 0
  80.       
  81.       # デモ背景を作成
  82.       if TITLE::DEMO_BACK != ""
  83.         @demo_back = Plane.new
  84.         @demo_back.bitmap = RPG::Cache.title(TITLE::DEMO_BACK)
  85.       end
  86.       @back_sx = TITLE::DEMO_BACK_SCR[0] / 8.0
  87.       @back_sy = TITLE::DEMO_BACK_SCR[1] / 8.0
  88.       @back_ox = 0
  89.       @back_oy = 0
  90.       # デモスプライト格納用配列を作成
  91.       @demo = Array.new
  92.       if TITLE::DEMO_BGM != ""
  93.         # デモ BGM を演奏
  94.         Audio.bgm_play("Audio/BGM/" + TITLE::DEMO_BGM)
  95.       end
  96.       # デモ表示ループ
  97.       loop do
  98.         # ゲーム画面を更新
  99.         Graphics.update
  100.         # 入力情報を更新
  101.         Input.update
  102.         # フレーム更新
  103.         update_demo
  104.         # デモ終了またはスキップでループを中断        
  105.         break if update_demo
  106.       end
  107.       # トランジション準備
  108.       Graphics.freeze
  109.       # デモグラフィックを解放
  110.       if defined? @demo_back
  111.         @demo_back.bitmap.dispose
  112.         @demo_back.dispose
  113.       end
  114.       @demo.each{|i|i.dispose}
  115.     end
  116.    
  117.     # タイトルグラフィックを作成
  118.     @sprite = Sprite.new
  119.     @sprite.bitmap = RPG::Cache.title($data_system.title_name)
  120.     # コマンドウィンドウを作成
  121.     make_command
  122.     command_appear
  123.     if !TITLE::DEMO_TITLE_BGM and $skip != nil
  124.       # タイトル BGM を演奏
  125.       $game_system.bgm_play($data_system.title_bgm)
  126.     end
  127.     $skip = nil  
  128.     # トランジション実行
  129.     Graphics.transition(TITLE::DEMO_FADE)
  130.     # メインループ
  131.     loop do
  132.       # ゲーム画面を更新
  133.       Graphics.update
  134.       # 入力情報を更新
  135.       Input.update
  136.       # フレーム更新
  137.       update
  138.       # 画面が切り替わったらループを中断
  139.       if $scene != self
  140.         break
  141.       end
  142.     end
  143.     # トランジション準備
  144.     Graphics.freeze
  145.     # コマンドウィンドウを解放
  146.     @command_window.dispose
  147.     # タイトルグラフィックを解放
  148.     @sprite.bitmap.dispose
  149.     @sprite.dispose
  150.   end
  151.   #--------------------------------------------------------------------------
  152.   # ● コマンド作成
  153.   #--------------------------------------------------------------------------
  154.   def make_command
  155.     s1 = TITLE::NEW_GAME
  156.     s2 = TITLE::CONTINUE
  157.     s3 = TITLE::SHUT_DOWN
  158.     @command_window = Window_Command.new(192, [s1, s2, s3])
  159.     @command_window.opacity = TITLE::COMMAND_OPACITY
  160.     if TITLE::COMMAND_CDN == nil      
  161.       @command_window.x = 320 - @command_window.width / 2
  162.       @command_window.y = 288
  163.     else
  164.       @command_window.x = TITLE::COMMAND_CDN[0]
  165.       @command_window.y = TITLE::COMMAND_CDN[1]
  166.     end
  167.     @command_window.z = 500
  168.     @command_window.active = false
  169.     @command_window.visible = false
  170.     # コンティニューが有効な場合、カーソルをコンティニューに合わせる
  171.     # 無効な場合、コンティニューの文字をグレー表示にする
  172.     if @continue_enabled
  173.       @command_window.index = 1
  174.     else
  175.       @command_window.disable_item(1)
  176.     end
  177.   end
  178.   #--------------------------------------------------------------------------
  179.   # ● コマンド表示
  180.   #--------------------------------------------------------------------------
  181.   def command_appear
  182.     @command_window.active = true
  183.     @command_window.visible = true
  184.   end
  185.   #--------------------------------------------------------------------------
  186.   # ● ロゴフレーム更新
  187.   #--------------------------------------------------------------------------
  188.   def update_logo
  189.     # スプライト更新
  190.     @logo.opacity += TITLE::LOGO_FADE if @time < 255 / TITLE::LOGO_FADE
  191.     @logo.opacity -= TITLE::LOGO_FADE if @time > TITLE::LOGO_DURATION + 255 / TITLE::LOGO_FADE
  192.     # タイムカウントアップ
  193.     @time += 1
  194.   end
  195.   #--------------------------------------------------------------------------
  196.   # ● デモフレーム更新
  197.   #--------------------------------------------------------------------------
  198.   def update_demo
  199.     for i in 0...TITLE::DEMO.size
  200.       next if @time != TITLE::DEMO[i][2]
  201.       @demo.push Sprite_Demo.new(i)
  202.     end
  203.     @demo.each{|i|i.demo_update
  204.                if @time == i.end_time
  205.                  i.dispose
  206.                  @demo.delete(i)
  207.                end
  208.                }
  209.     if defined? @demo_back
  210.       @back_ox -= @back_sx
  211.       @back_oy -= @back_sx
  212.       @demo_back.ox = @back_ox
  213.       @demo_back.oy = @back_oy
  214.     end
  215.     # タイムカウントアップ
  216.     @time += 1
  217.     # C ボタンが押された場合
  218.     unless TITLE::DEMO_NO_SKIP and !@continue_enabled
  219.       if Input.trigger?(Input::C)
  220.         # デモスキップ SE を演奏
  221.         Audio.se_play("Audio/SE/" + TITLE::DEMO_SKIP_SE) if TITLE::DEMO_SKIP_SE != ""
  222.         return true
  223.       end
  224.     end
  225.     # デモ終了時間に達した場合
  226.     if @time == TITLE::DEMO_END
  227.       return true
  228.     end
  229.   end
  230. end
复制代码

作者: FinalFantasy    时间: 2006-6-2 05:21
スプライトデモ
  1. #==============================================================================
  2. # タイトルデモエディター
  3. # (スプライトデモ ver1.51)
  4. #   by 水夜
  5. #  http://zenith.ifdef.jp/
  6. #------------------------------------------------------------------------------
  7. # タイトル画面にデモ演出を加えてちょっと豪華にしてみたり(設定がめんどい)
  8. #==============================================================================

  9. class Sprite_Demo < Sprite
  10.   #--------------------------------------------------------------------------
  11.   # ● オブジェクト初期化
  12.   #--------------------------------------------------------------------------
  13.   def initialize(index)
  14.     super()
  15.     @index = index
  16.     @text = false
  17.     begin
  18.       self.bitmap = RPG::Cache.title(TITLE::DEMO[@index][0])
  19.     # 画像ファイルが存在しない場合は文字列表示に変更
  20.     rescue
  21.       make_text
  22.     end
  23.     # 初期状態設定
  24.     self.ox = self.bitmap.width / 2
  25.     self.oy = self.bitmap.height / 2
  26.     self.x = TITLE::DEMO[@index][4]
  27.     self.y = TITLE::DEMO[@index][5]
  28.     self.z = 2
  29.     self.zoom_x = TITLE::DEMO[@index][6]
  30.     self.zoom_y = TITLE::DEMO[@index][7]
  31.     self.opacity = TITLE::DEMO[@index][8]
  32.     # 更新用数値に初期値を代入
  33.     @sx = self.x
  34.     @sy = self.y
  35.     @szx = self.zoom_x
  36.     @szy = self.zoom_y
  37.     @sop = self.opacity
  38.     @sa = 0
  39.     @duration = (TITLE::DEMO[@index][3] - TITLE::DEMO[@index][2]) * 1.0
  40.     @demo_time = 0
  41.   end
  42.   #--------------------------------------------------------------------------
  43.   # ● テキスト作成
  44.   #--------------------------------------------------------------------------
  45.   def make_text
  46.     self.bitmap = Bitmap.new(1, 1)
  47.     n = TITLE::DEMO[@index][1]
  48.     self.bitmap.font.name = TITLE::FONT[n][0]
  49.     self.bitmap.font.size = TITLE::FONT[n][1]
  50.     rect = self.bitmap.text_size(TITLE::DEMO[@index][0])
  51.     self.bitmap.dispose
  52.     self.bitmap = Bitmap.new(rect.width, rect.height)
  53.     self.bitmap.font.name = TITLE::FONT[n][0]
  54.     self.bitmap.font.size = TITLE::FONT[n][1]
  55.     # 太文字 / 斜字体
  56.     self.bitmap.font.bold = TITLE::FONT[n][4]
  57.     self.bitmap.font.italic = TITLE::FONT[n][5]
  58.     case TITLE::FONT[n][3]
  59.     # 影文字
  60.     when 1
  61.       self.bitmap.font.color = Color.new(0, 0, 0)
  62.       self.bitmap.draw_text(rect.x+2, rect.y+2, rect.width, rect.height, TITLE::DEMO[@index][0])
  63.     # 縁取り文字  
  64.     when 2
  65.       self.bitmap.font.color = Color.new(0, 0, 0)
  66.       self.bitmap.draw_text(rect.x+1, rect.y+1, rect.width, rect.height, TITLE::DEMO[@index][0])
  67.       self.bitmap.draw_text(rect.x+1, rect.y-1, rect.width, rect.height, TITLE::DEMO[@index][0])
  68.       self.bitmap.draw_text(rect.x-1, rect.y+1, rect.width, rect.height, TITLE::DEMO[@index][0])
  69.       self.bitmap.draw_text(rect.x-1, rect.y-1, rect.width, rect.height, TITLE::DEMO[@index][0])
  70.     end
  71.     self.bitmap.font.color = TITLE::FONT[n][2]
  72.     self.bitmap.draw_text(rect, TITLE::DEMO[@index][0])
  73.     @text = true
  74.   end   
  75.   #--------------------------------------------------------------------------
  76.   # ● 表示終了フレーム
  77.   #--------------------------------------------------------------------------
  78.   def end_time
  79.     return TITLE::DEMO[@index][3]
  80.   end
  81.   #--------------------------------------------------------------------------
  82.   # ● フレーム更新
  83.   #--------------------------------------------------------------------------
  84.   def demo_update
  85.     # 数値更新
  86.     @sx += (TITLE::DEMO[@index][9] - TITLE::DEMO[@index][4]) / @duration
  87.     @sy += (TITLE::DEMO[@index][10] - TITLE::DEMO[@index][5]) / @duration
  88.     @szx += (TITLE::DEMO[@index][11] - TITLE::DEMO[@index][6]) / @duration
  89.     @szy += (TITLE::DEMO[@index][12] - TITLE::DEMO[@index][7]) / @duration
  90.     @sop += (TITLE::DEMO[@index][13] - TITLE::DEMO[@index][8]) / @duration
  91.     # 更にエフェクト分の数値更新
  92.     if !@text
  93.       case TITLE::DEMO[@index][1]
  94.       when 1
  95.         shake(0)
  96.       when 2
  97.         shake(1)
  98.       when 3
  99.         turn(0)
  100.       when 4
  101.         turn(1)
  102.       when 5
  103.         ef_flash(0)
  104.       when 6
  105.         ef_flash(1)
  106.       when 7
  107.         waver
  108.       # エフェクトを自分で追加する場合は
  109.       #   when 8
  110.       #   追加エフェクト名
  111.       # ってな具合で
  112.       end
  113.     end
  114.     # 更新を反映
  115.     self.x = @sx
  116.     self.y = @sy
  117.     self.zoom_x = @szx
  118.     self.zoom_y = @szy
  119.     self.opacity = @sop
  120.     self.angle = @sa
  121.     # タイムカウントアップ
  122.     @demo_time += 1
  123.   end
  124.   
  125.   #--------------------------------------------------------------------------
  126.   # 以下、各種プリセットエフェクト
  127.   #--------------------------------------------------------------------------
  128.   #--------------------------------------------------------------------------
  129.   # ● エフェクト1,2 : シェイク(1:横シェイク, 2:縦シェイク)
  130.   #--------------------------------------------------------------------------
  131.   def shake(type)
  132.     case type
  133.     when 0
  134.       @sx += 1.5 if @demo_time == 0 or @demo_time%24 < 12
  135.       @sx -= 1.5 if @demo_time%24 >= 12
  136.     when 1
  137.       @sy += 1.5 if @demo_time == 0 or @demo_time%24 < 12
  138.       @sy -= 1.5 if @demo_time%24 >= 12
  139.     end
  140.   end
  141.   #--------------------------------------------------------------------------
  142.   # ● エフェクト3,4 : 回転(3:左回転, 4:右回転)
  143.   #--------------------------------------------------------------------------
  144.   def turn(type)
  145.     case type
  146.     when 0
  147.       @sa += 1
  148.     when 1
  149.       @sa -= 1
  150.     end
  151.   end
  152.   #--------------------------------------------------------------------------
  153.   # ● エフェクト5,6 : フラッシュ(5:白フラッシュ, 6:消滅フラッシュ)
  154.   #--------------------------------------------------------------------------
  155.   def ef_flash(type)
  156.     case type
  157.     when 0
  158.       self.flash(Color.new(255, 255, 255) ,20) if @demo_time == 0 or @demo_time%50 == 0
  159.     when 1
  160.       self.flash(nil, 20) if @demo_time == 0 or @demo_time%50 == 0
  161.     end
  162.     self.update
  163.   end
  164.   #--------------------------------------------------------------------------
  165.   # ● エフェクト7 : ゆらめき(っぽい)
  166.   #--------------------------------------------------------------------------
  167.   def waver
  168.     if @demo_time == 0 or @demo_time%100 < 50
  169.       @szx -= 0.00043
  170.       @szy += 0.00052
  171.       @sx -= 0.08
  172.       @sy -= 0.08
  173.     elsif @demo_time%100 >= 50
  174.       @szx += 0.00043
  175.       @szy -= 0.00052
  176.       @sx += 0.08
  177.       @sy += 0.08
  178.     end
  179.     if @demo_time == 0 or @demo_time%6 <= 3
  180.       @sa = -0.3
  181.     elsif @demo_time%6 >= 3
  182.       @sa = 0.3
  183.     end
  184.   end
  185. end
复制代码

作者: FinalFantasy    时间: 2006-6-2 05:22
カスタマイズモジュール
  1. #==============================================================================
  2. # タイトルデモエディター
  3. # (カスタマイズモジュール ver1.51)
  4. #   by 水夜
  5. #  http://zenith.ifdef.jp/
  6. #------------------------------------------------------------------------------
  7. # タイトル画面にデモ演出を加えてちょっと豪華にしてみたり(設定がめんどい)
  8. #==============================================================================

  9. module TITLE
  10.   
  11.   # ロゴを表示するかどうか
  12.   LOGO_APPEAR = true
  13.   # ロゴ画像ファイル名
  14.   LOGO = "logo1"
  15.   # ロゴ表示 SE ("" でSEを鳴らさない)
  16.   LOGO_SE = "135-Light01"
  17.   # ロゴ表示時間 (フレーム数)
  18.   LOGO_DURATION = 40
  19.   # ロゴフェード速度 (数値が大きいほど速い)
  20.   LOGO_FADE = 10

  21.   # デモ背景画像ファイル名 ("" で背景なし(黒背景))
  22.   DEMO_BACK = ""
  23.   # デモ背景スクロール速度 [sx, sy]
  24.   DEMO_BACK_SCR = [0, 0]
  25.   # デモBGM ("" でBGMなし)
  26.   DEMO_BGM = "012-Theme01"
  27.   # デモBGMのままタイトルへ移行するかどうか(typeA のみ有効)
  28.   DEMO_TITLE_BGM = false
  29.   # デモをループするかどうか(typeB のみ有効)
  30.   DEMO_LOOP = true
  31.   # ループの際に何フレーム目から再開するか(typeB のみ有効)
  32.   DEMO_LOOP_FRAME = 450
  33.   # セーブデータが存在しないときにデモスキップを禁止するかどうか
  34.   DEMO_NO_SKIP = false
  35.   # デモスキップ時SE ("" でSEを鳴らさない)
  36.   DEMO_SKIP_SE = "001-System01"
  37.   # デモ終了フレーム
  38.   DEMO_END = 580
  39.   # デモ終了時のフェード時間(typeA のみ有効)
  40.   DEMO_FADE = 40

  41.   # タイトルコマンド名
  42.   NEW_GAME = "ニューゲーム"     #ニューゲーム
  43.   CONTINUE = "コンティニュー"   #コンティニュー
  44.   SHUT_DOWN = "シャットダウン"  #シャットダウン
  45.   # コマンドウィンドウ不透明度
  46.   COMMAND_OPACITY = 160
  47.   # コマンドウィンドウ座標[X, Y]  (nilで通常の位置)
  48.   COMMAND_CDN = nil

  49.   # 各デモ画像表示詳細設定(ここが要であり、1番面倒...)
  50.   #   =========================================================================
  51.   #   ["画像ファイル名", エフェクトID, 表示開始フレーム, 表示終了フレーム,
  52.   #     始 X 座標, 始 Y 座標, 始 X 拡大率, 始 Y 拡大率, 始不透明度,
  53.   #     終 X 座標, 終 Y 座標, 終 X 拡大率, 終 Y 拡大率, 終不透明度]
  54.   #   =========================================================================
  55.   #
  56.   # ※始 → 終 へと直線的に移動、変化します。
  57.   # ※フレームはデモ開始時が 0 です。
  58.   # ※座標は画像の中心で計測。
  59.   # ※拡大率は 1.0 が等倍。
  60.   # ※複数の画像を同時に処理できますが、
  61.   #   同時に処理する画像が多すぎると重くなることがあります。
  62.   # ※エフェクトID (Sprite_Demoにて追加可能)
  63.   #   =================================================================
  64.   #    0:エフェクトなし 1:横シェイク 2:縦シェイク 3:左回転 4:右回転
  65.   #    5:白フラッシュ 6:消滅フラッシュ 7:ゆらめき(っぽいもの)
  66.   #   =================================================================
  67.   #   エフェクト3,4,7は重いので注意!(小さい画像向き)
  68.   #
  69.   # ※存在しないファイル名を指定した場合、そのファイル名を文字列として表示します。
  70.   #   その際、エフェクトIDはフォントIDとして扱われます。
  71.   #   フォントIDの設定は更に下のほうにあります。
  72.   #   
  73.   DEMO = [  # ←この括弧は消さないこと!
  74.   
  75.           #↓index 0      # ←index番号を振っておくと管理しやすいかも
  76.           ["demo_light", 0, 0, 200,
  77.               0,   0, 4.0, 4.0, 255,
  78.             320, 240, 0.5, 0.5,   0],  # ←カンマを忘れずに!
  79.           #↓index 1
  80.           ["demo_light", 0, 50, 250,
  81.             640,   0, 4.0, 4.0, 255,
  82.             320, 240, 0.5, 0.5,   0],  # ←カンマを忘れずに!
  83.           #↓index 2
  84.           ["demo_light", 0, 100, 300,
  85.               0, 480, 4.0, 4.0, 255,
  86.             320, 240, 0.5, 0.5,   0],  # ←カンマを忘れずに!
  87.           #↓index 3
  88.           ["demo_light", 0, 150, 350,
  89.             640, 480, 4.0, 4.0, 255,
  90.             320, 240, 0.5, 0.5,   0],  # ←カンマを忘れずに!
  91.           #↓index 4
  92.           ["demo_light", 2, 350, 450,
  93.             320, 240, 0.5, 0.5, 155,
  94.             320, 240, 5.5, 5.5, 255],  # ←カンマを忘れずに!
  95.           #↓index 5
  96.           ["demo_light", 5, 450, 580,
  97.             320, 240, 5.5, 5.5, 255,
  98.             320, 240, 50.0, 5.5, 55],  # ←カンマを忘れずに!
  99.           #↓index 6
  100.           ["GAME TITLE", 0, 450, 515,
  101.             320, 240, 1.0, 1.0,   0,
  102.             320, 240, 1.0, 1.0, 255],  # ←カンマを忘れずに!
  103.           #↓index 7
  104.           ["GAME TITLE", 0, 515, 580,
  105.             320, 240, 1.0, 1.0, 255,
  106.             320, 240, 1.0, 1.0,   0]  # ←最後のindexにはカンマをつけない!
  107.             
  108.          ]  # ←この括弧は消さないこと!

  109.   
  110.   # フォントID設定
  111.   #   ===================================================================
  112.   #    ["フォント名",  フォントサイズ,  フォント色,
  113.   #      影or縁(0:無 1:影 2:縁), 太文字(true/false), 斜字体(true/false)]
  114.   #   ===================================================================
  115.   #   
  116.   FONT = [  # ←この括弧は消さないこと!
  117.   
  118.           #↓ID 0
  119.           ["MS Pゴシック", 42, Color.new(255, 255, 255), 2, false, false],
  120.                                                        # カンマを忘れずに! ↑
  121.           #↓ID 1
  122.           ["MS P明朝", 22, Color.new(55, 255, 55), 0, true, false]
  123.          
  124.          ]  # ←この括弧は消さないこと!
  125.                   
  126. end
复制代码

作者: FinalFantasy    时间: 2006-6-2 05:30
オプションスクリプト

1:ロード画面から戻った際はロゴとデモをスキップ


  1. #==============================================================================
  2. # タイトルデモエディター
  3. # (オプション:ロード画面から戻った際はロゴとデモをスキップ ver1.00)
  4. #   by 水夜
  5. #  http://zenith.ifdef.jp/
  6. #==============================================================================

  7. #==============================================================================
  8. # ■ Scene_Load
  9. #==============================================================================
  10. class Scene_Load < Scene_File
  11.   #--------------------------------------------------------------------------
  12.   # ● 決定時の処理
  13.   #--------------------------------------------------------------------------
  14.   alias title_on_decision on_decision
  15.   def on_decision(filename)
  16.     # ファイルが存在する場合
  17.     if FileTest.exist?(filename)
  18.       $skip = nil
  19.     end
  20.     title_on_decision(filename)
  21.   end
  22.   #--------------------------------------------------------------------------
  23.   # ● キャンセル時の処理
  24.   #--------------------------------------------------------------------------
  25.   alias title_on_cancel on_cancel
  26.   def on_cancel
  27.     $skip = true
  28.     title_on_cancel
  29.   end
  30. end

复制代码


2:タイトルコマンド画像化
  1. #==============================================================================
  2. # タイトルデモエディター
  3. # (オプション:タイトルコマンド画像化 ver1.02)
  4. #   by 水夜
  5. #  http://zenith.ifdef.jp/
  6. #==============================================================================

  7. module TITLE
  8.   
  9.   # タイトルコマンド画像ファイル名
  10.   NEWGAME_GRA  = "newgame"     #ニューゲーム
  11.   CONTINUE_GRA  = "continue"    #コンティニュー
  12.   SHUTDOWN_GRA = "shutdown"    #シャットダウン

  13. end

  14. class Scene_Title
  15.   #--------------------------------------------------------------------------
  16.   # ● メイン処理
  17.   #--------------------------------------------------------------------------
  18.   alias option_main main
  19.   def main
  20.     option_main
  21.     if !$BTEST
  22.       @newgame.dispose
  23.       @continue.dispose
  24.       @shutdown.dispose
  25.     end
  26.   end
  27.   #--------------------------------------------------------------------------
  28.   # ● コマンド作成
  29.   #--------------------------------------------------------------------------
  30.   alias option_make_command make_command
  31.   def make_command
  32.     option_make_command
  33.     @newgame = Sprite.new
  34.     @newgame.bitmap = RPG::Cache.title(TITLE::NEWGAME_GRA)
  35.     if TITLE::COMMAND_CDN == nil
  36.       x = 320 - @newgame.bitmap.width / 2
  37.       y = 288
  38.     else
  39.       x = TITLE::COMMAND_CDN[0]
  40.       y = TITLE::COMMAND_CDN[1]
  41.     end
  42.     @newgame.x = x
  43.     @newgame.y = y
  44.     @newgame.z = 100
  45.     @newgame.opacity = 100
  46.     @newgame.visible = false
  47.     @continue = Sprite.new
  48.     @continue.bitmap = RPG::Cache.title(TITLE::CONTINUE_GRA)
  49.     @continue.x = x
  50.     @continue.y = @newgame.y + @newgame.bitmap.height + 16
  51.     @continue.z = 100
  52.     @continue.opacity = 100
  53.     @continue.visible = false
  54.     @shutdown = Sprite.new
  55.     @shutdown.bitmap = RPG::Cache.title(TITLE::SHUTDOWN_GRA)
  56.     @shutdown.x = x
  57.     @shutdown.y = @continue.y + @continue.bitmap.height + 16
  58.     @shutdown.z = 100
  59.     @shutdown.opacity = 100
  60.     @shutdown.visible = false
  61.     if @continue_enabled
  62.       @continue.opacity = 255
  63.     else
  64.       @newgame.opacity = 255      
  65.       @continue.color = Color.new(50, 50, 50, 200)
  66.     end
  67.   end
  68.   #--------------------------------------------------------------------------
  69.   # ● コマンド表示
  70.   #--------------------------------------------------------------------------
  71.   alias option_command_appear command_appear
  72.   def command_appear
  73.     option_command_appear
  74.     @command_window.visible = false
  75.     @newgame.visible = true
  76.     @continue.visible = true
  77.     @shutdown.visible = true
  78.   end
  79.   #--------------------------------------------------------------------------
  80.   # ● フレーム更新
  81.   #--------------------------------------------------------------------------
  82.   alias option_update update
  83.   def update
  84.     case @command_window.index
  85.     when 0
  86.       @newgame.opacity = 255
  87.       @continue.opacity = 100
  88.       @shutdown.opacity = 100
  89.     when 1
  90.       @newgame.opacity = 100
  91.       @continue.opacity = 255
  92.       @shutdown.opacity = 100
  93.     when 2
  94.       @newgame.opacity = 100
  95.       @continue.opacity = 100
  96.       @shutdown.opacity = 255
  97.     end
  98.     option_update
  99.   end
  100. end

复制代码


3:自動ニューゲーム
  1. #==============================================================================
  2. # タイトルデモエディター
  3. # (オプション:自動ニューゲーム ver1.00)
  4. #   by 水夜
  5. #  http://zenith.ifdef.jp/
  6. #==============================================================================
  7. # セーブデータが存在しないときに、デモ終了後、自動的にニューゲームを開始します。
  8. #==============================================================================

  9. class Scene_Title
  10.   #--------------------------------------------------------------------------
  11.   # ● コマンド表示
  12.   #--------------------------------------------------------------------------
  13.   alias option3_command_appear command_appear
  14.   def command_appear
  15.     if !@continue_enabled
  16.       # BGM を停止
  17.       Audio.bgm_stop
  18.       # プレイ時間計測用のフレームカウントをリセット
  19.       Graphics.frame_count = 0
  20.       # 各種ゲームオブジェクトを作成
  21.       $game_temp          = Game_Temp.new
  22.       $game_system        = Game_System.new
  23.       $game_switches      = Game_Switches.new
  24.       $game_variables     = Game_Variables.new
  25.       $game_self_switches = Game_SelfSwitches.new
  26.       $game_screen        = Game_Screen.new
  27.       $game_actors        = Game_Actors.new
  28.       $game_party         = Game_Party.new
  29.       $game_troop         = Game_Troop.new
  30.       $game_map           = Game_Map.new
  31.       $game_player        = Game_Player.new
  32.       # 初期パーティをセットアップ
  33.       $game_party.setup_starting_members
  34.       # 初期位置のマップをセットアップ
  35.       $game_map.setup($data_system.start_map_id)
  36.       # プレイヤーを初期位置に移動
  37.       $game_player.moveto($data_system.start_x, $data_system.start_y)
  38.       # プレイヤーをリフレッシュ
  39.       $game_player.refresh
  40.       # マップに設定されている BGM と BGS の自動切り替えを実行
  41.       $game_map.autoplay
  42.       # マップを更新 (並列イベント実行)
  43.       $game_map.update
  44.       # マップ画面に切り替え
  45.       $scene = Scene_Map.new
  46.       # タイトルグラフィックを解放
  47.       if defined? @sprite
  48.         @sprite.bitmap.dispose
  49.         @sprite.dispose
  50.       end
  51.       return
  52.     end
  53.     option3_command_appear
  54.   end
  55. end

复制代码


4:デモ背景&スクロール速度変化
  1. #==============================================================================
  2. # タイトルデモエディター
  3. # (オプション:デモ背景&スクロール速度変化 ver1.00)
  4. #   by 水夜
  5. #  http://zenith.ifdef.jp/
  6. #==============================================================================
  7. # デモ背景とそのスクロール速度をデモの途中で変更します。
  8. #==============================================================================

  9. module TITLE

  10.   # デモ背景変更設定
  11.   #   変更フレーム=>"ファイル名" と記述してください
  12.   BACK_CHANGE = {100=>"001-Title01", 300=>"001-Title01"}

  13.   # デモ背景スクロール速度変更設定
  14.   #   変更フレーム=>スクロール速度[sx, sy] と記述してください  
  15.   SCR_CHANGE = {100=>[20, 20], 300=>[5, 5]}

  16. end
  17.   
  18. class Scene_Title
  19.   #--------------------------------------------------------------------------
  20.   # ● デモフレーム更新
  21.   #--------------------------------------------------------------------------
  22.   alias option4_update_demo update_demo
  23.   def update_demo
  24.     if TITLE::BACK_CHANGE.include?(@time)
  25.       if !defined? @demo_back
  26.         @demo_back = Plane.new
  27.         @demo_back.z = 1
  28.       end
  29.       @demo_back.bitmap = RPG::Cache.title(TITLE::BACK_CHANGE[@time])
  30.     end
  31.     if TITLE::BACK_CHANGE.include?(@time)
  32.       @back_sx = TITLE::SCR_CHANGE[@time][0] / 8.0
  33.       @back_sy = TITLE::SCR_CHANGE[@time][1] / 8.0
  34.     end
  35.     option4_update_demo
  36.   end
  37. end

复制代码


5:デモ BGM 変化
  1. #==============================================================================
  2. # タイトルデモエディター
  3. # (オプション:デモ BGM 変化 ver1.00)
  4. #   by 水夜
  5. #  http://zenith.ifdef.jp/
  6. #==============================================================================
  7. # デモ BGM をデモの途中で変更します。
  8. #==============================================================================

  9. module TITLE

  10.   # デモ BGM 変更設定
  11.   #   変更フレーム=>"ファイル名" と記述してください
  12.   BGM_CHANGE = {100=>"001-Battle01", 300=>"002-Battle02"}

  13. end
  14.   
  15. class Scene_Title
  16.   #--------------------------------------------------------------------------
  17.   # ● デモフレーム更新
  18.   #--------------------------------------------------------------------------
  19.   alias option5_update_demo update_demo
  20.   def update_demo
  21.     if TITLE::BGM_CHANGE.include?(@time)
  22.       Audio.bgm_play("Audio/BGM/" + TITLE::BGM_CHANGE[@time])
  23.     end
  24.     option5_update_demo
  25.   end
  26. end

复制代码

作者: FinalFantasy    时间: 2006-6-2 05:35
エネミー強化システム
  1. #==============================================================================
  2. # Zenith Script1 エネミー強化システム  ver1.01
  3. #   by 水夜
  4. #  http://zenith.ifdef.jp/
  5. #------------------------------------------------------------------------------
  6. # エネミーの能力値をパーティーメンバーのレベルの平均値に応じて変化させます。
  7. #==============================================================================

  8. #==============================================================================
  9. # □ カスタマイズポイント
  10. #==============================================================================
  11. module ZENITH1
  12.   #
  13.   # 設定倍率
  14.   #
  15.   COMP_MAXHP = 2.0  #MaxHP
  16.   COMP_MAXSP = 2.0  #MaxSP
  17.   COMP_STR   = 2.0  #腕力
  18.   COMP_DEX   = 2.0  #器用さ
  19.   COMP_AGI   = 2.0  #素早さ
  20.   COMP_INT   = 2.0  #魔力
  21.   COMP_ATK   = 2.0  #攻撃力
  22.   COMP_PDEF  = 2.0  #物理防御
  23.   COMP_MDEF  = 2.0  #魔法防御
  24.   COMP_EXP   = 2.0  #EXP
  25.   COMP_GOLD  = 2.0  #ゴールド
  26. end
  27. #------------------------------------------------------------------------------
  28. #
  29. # 実際の能力値は (パーティーメンバーのレベルの平均値 × 設定倍率)% 上昇します。
  30. #
  31. #------------------------------------------------------------------------------

  32. #==============================================================================
  33. # ■ Game_Enemy
  34. #==============================================================================
  35. class Game_Enemy < Game_Battler
  36.   #--------------------------------------------------------------------------
  37.   # ● 基本 MaxHP の取得
  38.   #--------------------------------------------------------------------------
  39.   alias base_maxhp_zenith base_maxhp
  40.   def base_maxhp
  41.     n = base_maxhp_zenith
  42.       for actor in $game_party.actors
  43.     n += n * (actor.level * ZENITH1::COMP_MAXHP / $game_party.actors.size) / 100
  44.       end
  45.     return Integer(n)
  46.   end
  47.   #--------------------------------------------------------------------------
  48.   # ● 基本 MaxSP の取得
  49.   #--------------------------------------------------------------------------
  50.   alias base_maxsp_zenith base_maxsp
  51.   def base_maxsp
  52.     n = base_maxsp_zenith
  53.       for actor in $game_party.actors
  54.     n += n * (actor.level * ZENITH1::COMP_MAXSP / $game_party.actors.size) / 100
  55.       end
  56.     return Integer(n)
  57.   end
  58.   #--------------------------------------------------------------------------
  59.   # ● 基本腕力の取得
  60.   #--------------------------------------------------------------------------
  61.   alias base_str_zenith base_str
  62.   def base_str
  63.     n = base_str_zenith
  64.       for actor in $game_party.actors
  65.     n += n * (actor.level * ZENITH1::COMP_STR / $game_party.actors.size) / 100
  66.       end
  67.     return Integer(n)
  68.   end
  69.   #--------------------------------------------------------------------------
  70.   # ● 基本器用さの取得
  71.   #--------------------------------------------------------------------------
  72.   alias base_dex_zenith base_dex
  73.   def base_dex
  74.     n = base_dex_zenith
  75.       for actor in $game_party.actors
  76.     n += n * (actor.level * ZENITH1::COMP_DEX / $game_party.actors.size) / 100
  77.       end
  78.     return Integer(n)
  79.   end
  80.   #--------------------------------------------------------------------------
  81.   # ● 基本素早さの取得
  82.   #--------------------------------------------------------------------------
  83.   alias base_agi_zenith base_agi
  84.   def base_agi
  85.     n = base_dex_zenith
  86.       for actor in $game_party.actors
  87.     n += n * (actor.level * ZENITH1::COMP_AGI / $game_party.actors.size) / 100
  88.       end
  89.     return Integer(n)
  90.   end
  91.   #--------------------------------------------------------------------------
  92.   # ● 基本魔力の取得
  93.   #--------------------------------------------------------------------------
  94.   alias base_int_zenith base_int
  95.   def base_int
  96.     n = base_int_zenith
  97.       for actor in $game_party.actors
  98.     n += n * (actor.level * ZENITH1::COMP_INT / $game_party.actors.size) / 100
  99.       end
  100.     return Integer(n)
  101.   end
  102.   #--------------------------------------------------------------------------
  103.   # ● 基本攻撃力の取得
  104.   #--------------------------------------------------------------------------
  105.   alias base_atk_zenith base_atk
  106.   def base_atk
  107.     n = base_atk_zenith
  108.       for actor in $game_party.actors
  109.     n += n * (actor.level * ZENITH1::COMP_ATK / $game_party.actors.size) / 100
  110.       end
  111.     return Integer(n)
  112.   end
  113.   #--------------------------------------------------------------------------
  114.   # ● 基本物理防御の取得
  115.   #--------------------------------------------------------------------------
  116.   alias base_pdef_zenith base_pdef
  117.   def base_pdef
  118.     n = base_pdef_zenith
  119.       for actor in $game_party.actors
  120.     n += n * (actor.level * ZENITH1::COMP_PDEF / $game_party.actors.size) / 100
  121.       end
  122.     return Integer(n)
  123.   end
  124.   #--------------------------------------------------------------------------
  125.   # ● 基本魔法防御の取得
  126.   #--------------------------------------------------------------------------
  127.   alias base_mdef_zenith base_mdef
  128.   def base_mdef
  129.     n = base_mdef_zenith
  130.       for actor in $game_party.actors
  131.     n += n * (actor.level * ZENITH1::COMP_MDEF / $game_party.actors.size) / 100
  132.       end
  133.     return Integer(n)
  134.   end
  135.   #--------------------------------------------------------------------------
  136.   # ● EXP の取得
  137.   #--------------------------------------------------------------------------
  138.   alias exp_zenith exp
  139.   def exp
  140.     n = exp_zenith
  141.       for actor in $game_party.actors
  142.     n += n * (actor.level * ZENITH1::COMP_EXP / $game_party.actors.size) / 100
  143.       end
  144.     return Integer(n)
  145.   end
  146.   #--------------------------------------------------------------------------
  147.   # ● ゴールドの取得
  148.   #--------------------------------------------------------------------------
  149.   alias gold_zenith gold
  150.   def gold
  151.     n = gold_zenith
  152.       for actor in $game_party.actors
  153.     n += n * (actor.level * ZENITH1::COMP_GOLD / $game_party.actors.size) / 100
  154.       end
  155.     return Integer(n)
  156.   end
  157. end
复制代码

作者: FinalFantasy    时间: 2006-6-2 05:38
バトルバックスクロール
  1. #==============================================================================
  2. # Zenith Script2 バトルバックスクロール  ver1.10
  3. #   by 水夜
  4. #  http://zenith.ifdef.jp/
  5. #------------------------------------------------------------------------------
  6. # 戦闘中の背景をフォグのスクロールと同じ要領でスクロールさせます。
  7. #==============================================================================

  8. #==============================================================================
  9. # □ カスタマイズポイント
  10. #==============================================================================
  11. module ZENITH2
  12.   #
  13.   # バトルバックのスクロール速度を指定する変数のID
  14.   #
  15.   BATTLEBACK_SX_VARIABLE_ID = 1  #X方向のスクロール速度を指定する変数のID
  16.   BATTLEBACK_SY_VARIABLE_ID = 2  #Y方向のスクロール速度を指定する変数のID
  17. end
  18. #------------------------------------------------------------------------------
  19. #
  20. # イベントコマンドで、指定した変数に任意のスクロール速度を入れてください。
  21. # スクロール速度の設定は、フォグのsx,syと同様です。
  22. #
  23. #------------------------------------------------------------------------------

  24. #==============================================================================
  25. # ■ Spriteset_Battle
  26. #==============================================================================
  27. class Spriteset_Battle
  28.   #--------------------------------------------------------------------------
  29.   # ● オブジェクト初期化
  30.   #--------------------------------------------------------------------------
  31.   def initialize
  32.     # ビューポートを作成
  33.     @viewport1 = Viewport.new(0, 0, 640, 320)
  34.     @viewport2 = Viewport.new(0, 0, 640, 480)
  35.     @viewport3 = Viewport.new(0, 0, 640, 480)
  36.     @viewport4 = Viewport.new(0, 0, 640, 480)
  37.     @viewport2.z = 101
  38.     @viewport3.z = 200
  39.     @viewport4.z = 5000
  40.     # バトルバックスプライトを作成
  41.     @battleback_sprite = Plane.new(@viewport1)
  42.     # エネミースプライトを作成
  43.     @enemy_sprites = []
  44.     for enemy in $game_troop.enemies.reverse
  45.       @enemy_sprites.push(Sprite_Battler.new(@viewport1, enemy))
  46.     end
  47.     # アクタースプライトを作成
  48.     @actor_sprites = []
  49.     @actor_sprites.push(Sprite_Battler.new(@viewport2))
  50.     @actor_sprites.push(Sprite_Battler.new(@viewport2))
  51.     @actor_sprites.push(Sprite_Battler.new(@viewport2))
  52.     @actor_sprites.push(Sprite_Battler.new(@viewport2))
  53.     # 天候を作成
  54.     @weather = RPG::Weather.new(@viewport1)
  55.     # ピクチャスプライトを作成
  56.     @picture_sprites = []
  57.     for i in 51..100
  58.       @picture_sprites.push(Sprite_Picture.new(@viewport3,
  59.         $game_screen.pictures[i]))
  60.     end
  61.     # タイマースプライトを作成
  62.     @timer_sprite = Sprite_Timer.new
  63.     # フレーム更新
  64.     update
  65.   end
  66.   #--------------------------------------------------------------------------
  67.   # ● フレーム更新
  68.   #--------------------------------------------------------------------------
  69.   def update
  70.     # アクタースプライトの内容を更新 (アクターの入れ替えに対応)
  71.     @actor_sprites[0].battler = $game_party.actors[0]
  72.     @actor_sprites[1].battler = $game_party.actors[1]
  73.     @actor_sprites[2].battler = $game_party.actors[2]
  74.     @actor_sprites[3].battler = $game_party.actors[3]
  75.     # バトルバックのファイル名が現在のものと違う場合
  76.     if @battleback_name != $game_temp.battleback_name
  77.       @battleback_name = $game_temp.battleback_name
  78.       if @battleback_sprite.bitmap != nil
  79.         @battleback_sprite.bitmap.dispose
  80.       end
  81.       @battleback_sprite.bitmap = RPG::Cache.battleback(@battleback_name)
  82.     end
  83.     # バトルバックのスクロール処理
  84.     unless $game_variables[ZENITH2::BATTLEBACK_SX_VARIABLE_ID] == 0 and $game_variables[ZENITH2::BATTLEBACK_SY_VARIABLE_ID] == 0
  85.      @battleback_sprite.ox -= $game_variables[ZENITH2::BATTLEBACK_SX_VARIABLE_ID]
  86.      @battleback_sprite.oy -= $game_variables[ZENITH2::BATTLEBACK_SY_VARIABLE_ID]
  87.     else
  88.      @battleback_sprite.ox = 0
  89.      @battleback_sprite.oy = 0
  90.     end
  91.     # バトラースプライトを更新
  92.     for sprite in @enemy_sprites + @actor_sprites
  93.       sprite.update
  94.     end
  95.     # 天候グラフィックを更新
  96.     @weather.type = $game_screen.weather_type
  97.     @weather.max = $game_screen.weather_max
  98.     @weather.update
  99.     # ピクチャスプライトを更新
  100.     for sprite in @picture_sprites
  101.       sprite.update
  102.     end
  103.     # タイマースプライトを更新
  104.     @timer_sprite.update
  105.     # 画面の色調とシェイク位置を設定
  106.     @viewport1.tone = $game_screen.tone
  107.     @viewport1.ox = $game_screen.shake
  108.     # 画面のフラッシュ色を設定
  109.     @viewport4.color = $game_screen.flash_color
  110.     # ビューポートを更新
  111.     @viewport1.update
  112.     @viewport2.update
  113.     @viewport4.update
  114.   end
  115. end

复制代码

作者: FinalFantasy    时间: 2006-6-2 05:39
アクションネームプレート
  1. #==============================================================================
  2. # Zenith RGSS3 アクションネームプレート  ver1.11
  3. #   by 水夜
  4. #  http://zenith.ifdef.jp/
  5. #  参考&部分引用 XMS.スクリプトシェルフ http://xms.rdy.jp/
  6. #    桜雅 在土 様 作「ターゲットネームプレート」
  7. #------------------------------------------------------------------------------
  8. # 戦闘中のスキル名アイテム名などのアクション名を小さいウィンドウで表示
  9. #==============================================================================

  10. #==============================================================================
  11. # □ カスタマイズポイント
  12. #==============================================================================
  13. module ZENITH3
  14.   # アクションネームウィンドウの不透明度
  15.   ACTION_OPACITY = 160
  16.   # アクターのアクション表示位置(0:頭上 1:足下)
  17.   ACTOR_POSITION = 0
  18.   # エネミーのアクション表示位置(0:頭上 1:足下)
  19.   ENEMY_POSITION = 0
  20.   # アクターのアクション表示X座標調整
  21.   ACTOR_PLUS_X = 0
  22.   # アクターのアクション表示Y座標調整
  23.   ACTOR_PLUS_Y = 0
  24.   # エネミーのアクション表示X座標調整
  25.   ENEMY_PLUS_X = 0
  26.   # エネミーのアクション表示Y座標調整
  27.   ENEMY_PLUS_Y = 0
  28. end

  29. class Window_ActionName < Window_Help
  30.   #--------------------------------------------------------------------------
  31.   # ● オブジェクト初期化
  32.   #--------------------------------------------------------------------------
  33.   def initialize
  34.     super
  35.     self.width = 160
  36.     self.height = 64
  37.     self.contents = Bitmap.new(width - 32, height - 32)
  38.     @base_window = Window_Base.new(x, y+16, width, 32)
  39.     @base_window.opacity = ZENITH3::ACTION_OPACITY
  40.     self.opacity = 0
  41.     self.visible = false
  42.     self.z = 600
  43.   end
  44.   #--------------------------------------------------------------------------
  45.   # ● テキスト設定
  46.   #--------------------------------------------------------------------------
  47.   def set_text(text, align = 0)
  48.     # テキストとアラインメントの少なくとも一方が前回と違っている場合
  49.     if text != @text or align != @align
  50.       # テキストを再描画
  51.       self.contents.clear
  52.       self.contents.font.color = normal_color
  53.       self.contents.draw_text(4, 0, self.width - 40, 32, text, align)
  54.       @text = text
  55.       @align = align
  56.       @actor = nil
  57.     end
  58.     self.visible = true
  59.   end
  60.   #--------------------------------------------------------------------------
  61.   # ● X 座標
  62.   #--------------------------------------------------------------------------
  63.   def x=(n)
  64.     super
  65.     @base_window.x = n unless @base_window.nil?
  66.   end
  67.   #--------------------------------------------------------------------------
  68.   # ● Y 座標
  69.   #--------------------------------------------------------------------------
  70.   def y=(n)
  71.     super
  72.     @base_window.y = n + 16 unless @base_window.nil?
  73.   end
  74.   #--------------------------------------------------------------------------
  75.   # ● Z 座標
  76.   #--------------------------------------------------------------------------
  77.   def z=(n)
  78.     super
  79.     @base_window.z = n unless @base_window.nil?
  80.   end
  81.   #--------------------------------------------------------------------------
  82.   # ● 可視状態
  83.   #--------------------------------------------------------------------------
  84.   def visible=(b)
  85.     super
  86.     @base_window.visible = b unless @base_window.nil?
  87.   end
  88.   #--------------------------------------------------------------------------
  89.   # ● 開放
  90.   #--------------------------------------------------------------------------
  91.   def dispose
  92.     @base_window.dispose
  93.     super
  94.   end
  95. end
  96. #==============================================================================
  97. # --- アクター バトラーグラフィックのサイズ取得機能 ---
  98. #==============================================================================
  99. class Game_Actor < Game_Battler
  100.   def battler_rect
  101.     bitmap = RPG::Cache.battler(@battler_name, @battler_hue)
  102.     return Rect.new(self.screen_x, self.screen_y, bitmap.width, bitmap.height)
  103.   end
  104. end
  105. #==============================================================================
  106. # --- エネミー バトラーグラフィックのサイズ取得機能 ---
  107. #==============================================================================
  108. class Game_Enemy < Game_Battler
  109.   def battler_rect
  110.     bitmap = RPG::Cache.battler(@battler_name, @battler_hue)
  111.     return Rect.new(self.screen_x, self.screen_y, bitmap.width, bitmap.height)
  112.   end
  113. end
  114. #==============================================================================
  115. # ■ Scene_Battle
  116. #==============================================================================
  117. class Scene_Battle
  118.   #--------------------------------------------------------------------------
  119.   # ● メイン処理
  120.   #--------------------------------------------------------------------------
  121.   alias zenith3_main main
  122.   def main
  123.     # ウィンドウを作成
  124.     @actionname_window = Window_ActionName.new
  125.     # 呼び戻す
  126.     zenith3_main
  127.     # ウィンドウを開放
  128.     @actionname_window.dispose
  129.   end
  130.   #--------------------------------------------------------------------------
  131.   # ● 基本アクション 結果作成
  132.   #--------------------------------------------------------------------------
  133.   alias zenith3_make_basic_action_result make_basic_action_result
  134.   def make_basic_action_result
  135.     # 呼び戻す
  136.     zenith3_make_basic_action_result
  137.     # ヘルプウィンドウを隠す
  138.     @help_window.visible = false
  139.     # 防御の場合
  140.     if @active_battler.current_action.basic == 1
  141.       # アクションネームの位置取得
  142.       if @active_battler.is_a?(Game_Actor)
  143.         actor = @active_battler
  144.         rect = actor.battler_rect
  145.         @actionname_window.x = [  0 + rect.x - @actionname_window.width/2, 4].max + ZENITH3::ACTOR_PLUS_X
  146.         case ZENITH3::ACTOR_POSITION
  147.         when 0
  148.           @actionname_window.y = [-48 + rect.y - rect.height, 4].max + ZENITH3::ACTOR_PLUS_Y
  149.         when 1
  150.           @actionname_window.y = [rect.y, 432].min + ZENITH3::ACTOR_PLUS_Y
  151.         end
  152.       else
  153.         enemy = @active_battler
  154.         rect = enemy.battler_rect
  155.         @actionname_window.x = [  0 + rect.x - @actionname_window.width/2, 4].max + ZENITH3::ENEMY_PLUS_X
  156.         case ZENITH3::ENEMY_POSITION
  157.         when 0
  158.           @actionname_window.y = [-48 + rect.y - rect.height, 4].max + ZENITH3::ENEMY_PLUS_Y
  159.         when 1
  160.           @actionname_window.y = [rect.y, 432].min + ZENITH3::ENEMY_PLUS_Y
  161.         end
  162.       end
  163.       # アクションネームウィンドウに "防御" を表示
  164.       @actionname_window.set_text($data_system.words.guard, 1)
  165.       return
  166.     end
  167.     # 逃げるの場合
  168.     if @active_battler.is_a?(Game_Enemy) and
  169.       @active_battler.current_action.basic == 2
  170.       # アクションネームの位置取得
  171.       enemy = @active_battler
  172.       rect = enemy.battler_rect
  173.       @actionname_window.x = [  0 + rect.x - @actionname_window.width/2, 4].max + ZENITH3::ENEMY_PLUS_X
  174.       case ZENITH3::ENEMY_POSITION
  175.       when 0
  176.         @actionname_window.y = [-48 + rect.y - rect.height, 4].max + ZENITH3::ENEMY_PLUS_Y
  177.       when 1
  178.         @actionname_window.y = [rect.y, 432].min + ZENITH3::ENEMY_PLUS_Y
  179.       end
  180.       # アクションネームウィンドウに "逃げる" を表示
  181.       @actionname_window.set_text("逃げる", 1)
  182.       # 逃げる
  183.       @active_battler.escape
  184.       return
  185.     end
  186.   end
  187.   #--------------------------------------------------------------------------
  188.   # ● スキルアクション 結果作成
  189.   #--------------------------------------------------------------------------
  190.   alias zenith3_make_skill_action_result make_skill_action_result
  191.   def make_skill_action_result
  192.     # 呼び戻す
  193.     zenith3_make_skill_action_result
  194.     # ヘルプウィンドウを隠す
  195.     @help_window.visible = false
  196.     # アクションネームの位置取得
  197.     if @active_battler.is_a?(Game_Actor)
  198.       actor = @active_battler
  199.       rect = actor.battler_rect
  200.       @actionname_window.x = [  0 + rect.x - @actionname_window.width/2, 4].max + ZENITH3::ACTOR_PLUS_X
  201.       case ZENITH3::ACTOR_POSITION
  202.       when 0
  203.         @actionname_window.y = [-48 + rect.y - rect.height, 4].max + ZENITH3::ACTOR_PLUS_Y
  204.       when 1
  205.         @actionname_window.y = [rect.y, 432].min + ZENITH3::ACTOR_PLUS_Y
  206.       end
  207.     else
  208.       enemy = @active_battler
  209.       rect = enemy.battler_rect
  210.       @actionname_window.x = [  0 + rect.x - @actionname_window.width/2, 4].max + ZENITH3::ENEMY_PLUS_X
  211.       case ZENITH3::ENEMY_POSITION
  212.       when 0
  213.         @actionname_window.y = [-48 + rect.y - rect.height, 4].max + ZENITH3::ENEMY_PLUS_Y
  214.       when 1
  215.         @actionname_window.y = [rect.y, 432].min + ZENITH3::ENEMY_PLUS_Y
  216.       end
  217.     end
  218.     # アクションネームウィンドウにスキル名を表示
  219.     @actionname_window.set_text(@skill.name, 1)
  220.   end
  221.   #--------------------------------------------------------------------------
  222.   # ● アイテムアクション 結果作成
  223.   #--------------------------------------------------------------------------
  224.   alias zenith3_make_item_action_result make_item_action_result
  225.   def make_item_action_result
  226.     # 呼び戻す
  227.     zenith3_make_item_action_result
  228.     # ヘルプウィンドウを隠す
  229.     @help_window.visible = false
  230.     # アクションネームの位置取得
  231.     actor = @active_battler
  232.     rect = actor.battler_rect
  233.     @actionname_window.x = [  0 + rect.x - @actionname_window.width/2, 4].max + ZENITH3::ACTOR_PLUS_X
  234.     case ZENITH3::ACTOR_POSITION
  235.     when 0
  236.       @actionname_window.y = [-48 + rect.y - rect.height, 4].max + ZENITH3::ACTOR_PLUS_Y
  237.     when 1
  238.       @actionname_window.y = [rect.y, 432].min + ZENITH3::ACTOR_PLUS_Y
  239.     end
  240.     # アクションネームウィンドウにアイテム名を表示
  241.     @actionname_window.set_text(@item.name, 1)
  242.   end
  243.   #--------------------------------------------------------------------------
  244.   # ● フレーム更新 (メインフェーズ ステップ 5 : ダメージ表示)
  245.   #--------------------------------------------------------------------------
  246.   alias zenith3_update_phase4_step5 update_phase4_step5
  247.   def update_phase4_step5
  248.     # アクションネームウィンドウを隠す
  249.     @actionname_window.visible = false
  250.     # 呼び戻す
  251.     zenith3_update_phase4_step5
  252.   end
  253. end

复制代码

作者: FinalFantasy    时间: 2006-6-2 05:42
エネミー残勢力表示
  1. #==============================================================================
  2. # Zenith RGSS4 エネミー残勢力表示  ver1.00
  3. #   by 水夜
  4. #  http://zenith.ifdef.jp/
  5. #------------------------------------------------------------------------------
  6. # トループに残存するエネミーの残りHPの合計をゲージで表示
  7. #==============================================================================

  8. #==============================================================================
  9. # □ カスタマイズポイント
  10. #==============================================================================
  11. module ZENITH4
  12.   # エネミー残勢力の表示・非表示を切り替えるスイッチのID(スイッチON時に非表示)
  13.   E_SWITCH = 1
  14.   # 残勢力ゲージの長さ
  15.   EG_WIDTH = 160
  16.   # 残勢力ゲージの色
  17.   EG_COLOR = Color.new(255, 0, 0, 255)
  18.   # 表示する文字列
  19.   EW_NAME = "エネミー残勢力"
  20.   # 表示する文字列の色
  21.   EW_COLOR = Color.new(255, 255, 255, 255)
  22. end

  23. #==============================================================================
  24. # ■ Window_BattleStatus
  25. #==============================================================================
  26. class Window_BattleStatus < Window_Base
  27.   #--------------------------------------------------------------------------
  28.   # ● オブジェクト初期化
  29.   #--------------------------------------------------------------------------
  30.   alias zenith4_initialize initialize
  31.   def initialize
  32.     # エネミー勢力スプライト作成
  33.     @enemy_force = Sprite.new
  34.     @enemy_force.bitmap = Bitmap.new(8 + ZENITH4::EG_WIDTH, 34)
  35.     @enemy_force.x = 640 - (12 + ZENITH4::EG_WIDTH)
  36.     @enemy_force.y = 62
  37.     @enemy_force.z = 50
  38.     # 呼び戻す
  39.     zenith4_initialize
  40.   end
  41.   #--------------------------------------------------------------------------
  42.   # ● 解放
  43.   #--------------------------------------------------------------------------
  44.   alias zenith4_dispose dispose
  45.   def dispose
  46.     # エネミー勢力スプライト解放
  47.     @enemy_force.bitmap.dispose
  48.     @enemy_force.dispose
  49.     # 呼び戻す
  50.     zenith4_dispose
  51.   end
  52.   #--------------------------------------------------------------------------
  53.   # ● リフレッシュ
  54.   #--------------------------------------------------------------------------
  55.   alias zenith4_refresh refresh
  56.   def refresh
  57.     # 呼び戻す
  58.     zenith4_refresh
  59.     if $game_switches[ZENITH4::E_SWITCH] == false
  60.       @enemy_force.visible = true
  61.       @enemy_force.bitmap.clear
  62.       x = 4
  63.       y = 4
  64.       width = ZENITH4::EG_WIDTH
  65.       # 文字列を描画
  66.       @enemy_force.bitmap.font.size = 18
  67.       @enemy_force.bitmap.font.color = Color.new(0, 0, 0, 255)
  68.       @enemy_force.bitmap.draw_text(x+1, y+1, width, 22, ZENITH4::EW_NAME)
  69.       @enemy_force.bitmap.draw_text(x-1, y-1, width, 22, ZENITH4::EW_NAME)
  70.       @enemy_force.bitmap.draw_text(x+1, y-1, width, 22, ZENITH4::EW_NAME)
  71.       @enemy_force.bitmap.draw_text(x-1, y+1, width, 22, ZENITH4::EW_NAME)
  72.       @enemy_force.bitmap.font.color = ZENITH4::EW_COLOR
  73.       @enemy_force.bitmap.draw_text(x, y, width, 22, ZENITH4::EW_NAME)
  74.       # エネミー勢力を描画
  75.       @item_max = $game_troop.enemies.size
  76.       enemy_mh = 0
  77.       enemy_h = 0
  78.       for i in 0...@item_max
  79.        enemy = $game_troop.enemies[i]
  80.        enemy_mh += enemy.maxhp
  81.        enemy_h += enemy.hp
  82.       end
  83.       @enemy_force.bitmap.fill_rect(x-1, y+24, width+2,5, Color.new(0, 0, 0, 150))
  84.       w = width * enemy_h / enemy_mh
  85.       @enemy_force.bitmap.fill_rect(x+width-w, y+25, w,3, ZENITH4::EG_COLOR)
  86.     else
  87.       @enemy_force.visible = false
  88.     end
  89.   end
  90. end

复制代码

作者: FinalFantasy    时间: 2006-6-2 05:45
アクター別ポジション + 攻撃力・物理防御補正
  1. #==============================================================================
  2. # Zenith RGSS5 アクター別ポジション + 攻撃力・物理防御補正  ver1.00
  3. #   by 水夜
  4. #  http://zenith.ifdef.jp/
  5. #------------------------------------------------------------------------------
  6. # アクター別にポジションを設定し、攻撃力・物理防御を補正します。
  7. #==============================================================================

  8. #==============================================================================
  9. # □ カスタマイズポイント
  10. #==============================================================================
  11. module ZENITH5
  12.   #
  13.   # アクターの初期ポジション
  14.   #  アクターID=>ポジション と記述してください。
  15.   #  ポジションは 0→前衛 1→中衛 2→後衛 に対応しています。
  16.   #   3や4にも設定可。4だと敵の攻撃を受けません。(全体攻撃を除く)
  17.   #
  18.   ACTOR_BP = { 1=>0, 2=>1, 3=>0, 4=>2, 5=>2}
  19.   #
  20.   # 上記で設定しなかったアクターの初期ポジション
  21.   ACTOR_BP.default = 1
  22.   #
  23.   # 前衛・後衛のバトラー表示位置修正(中衛を基準に指定した値だけ前後にずれる)
  24.   BATTLER_Y = 20   # 単位:ピクセル
  25.   #
  26.   # ポジション無視武器の属性ID
  27.   N_POS_EL_ID = 20
  28. end

  29. class Game_Actor < Game_Battler
  30.   def pos_mg
  31.     case self.battle_position
  32.     #
  33.     # ポジションごとの攻撃力と物理防御の補正倍率
  34.     # 攻撃力はn倍、物理防御は1/n倍になります。(戦闘中のみ)
  35.     #
  36.     when 0  # 前衛
  37.       return 1.5
  38.     when 1  # 中衛
  39.       return 1
  40.     when 2  # 後衛
  41.       return 0.75
  42.     else    # その他
  43.       return 0.5
  44.     end
  45.   end
  46. end
  47. #==============================================================================
  48. # □ カスタマイズポイント終了
  49. #==============================================================================

  50. #==============================================================================
  51. # ■ Game_Actor
  52. #==============================================================================
  53. class Game_Actor < Game_Battler
  54.   #--------------------------------------------------------------------------
  55.   # ● 公開インスタンス変数
  56.   #--------------------------------------------------------------------------
  57.   attr_accessor :battle_position  # ポジション
  58.   #--------------------------------------------------------------------------
  59.   # ● オブジェクト初期化
  60.   #     actor_id : アクター ID
  61.   #--------------------------------------------------------------------------
  62.   alias zenith5_initialize initialize
  63.   def initialize(actor_id)
  64.     @battle_position = ZENITH5::ACTOR_BP[actor_id]
  65.     zenith5_initialize(actor_id)
  66.   end
  67.   #--------------------------------------------------------------------------
  68.   # ● バトル画面 Y 座標の取得
  69.   #--------------------------------------------------------------------------
  70.   def screen_y
  71.     return 464 + (self.battle_position - 1) * ZENITH5::BATTLER_Y
  72.   end
  73. end

  74. #==============================================================================
  75. # ■ Game_Party
  76. #==============================================================================
  77. class Game_Party
  78.   #--------------------------------------------------------------------------
  79.   # ● 対象アクターのランダムな決定
  80.   #     hp0 : HP 0 のアクターに限る
  81.   #--------------------------------------------------------------------------
  82.   def random_target_actor(hp0 = false)
  83.     # ルーレットを初期化
  84.     roulette = []
  85.     # ループ
  86.     for actor in @actors
  87.       # 条件に該当する場合
  88.       if (not hp0 and actor.exist?) or (hp0 and actor.hp0?)
  89.         # アクターのクラスの [位置] を取得
  90.         position = actor.battle_position
  91.         # 前衛のとき n = 4、中衛のとき n = 3、後衛のとき n = 2
  92.         n = 4 - position
  93.         # ルーレットにアクターを n 回追加
  94.         n.times do
  95.           roulette.push(actor)
  96.         end
  97.       end
  98.     end
  99.     # ルーレットのサイズが 0 の場合
  100.     if roulette.size == 0
  101.       return nil
  102.     end
  103.     # ルーレットを回し、アクターを決定
  104.     return roulette[rand(roulette.size)]
  105.   end
  106. end

  107. #==============================================================================
  108. # ■ Game_Battler
  109. #==============================================================================
  110. class Game_Battler
  111.   #--------------------------------------------------------------------------
  112.   # ● 攻撃力の取得
  113.   #--------------------------------------------------------------------------
  114.   alias zenith5_atk atk
  115.   def atk
  116.     n = zenith5_atk
  117.     # 戦闘中のみ値を補正
  118.     if self.is_a?(Game_Actor) and $game_temp.in_battle
  119.       weapon = $data_weapons[self.weapon_id]
  120.       # ポジション無視武器の場合は補正しない
  121.       n *= self.pos_mg unless weapon.element_set.include?(ZENITH5::N_POS_EL_ID)
  122.     end
  123.     return Integer(n)
  124.   end
  125.   #--------------------------------------------------------------------------
  126.   # ● 物理防御の取得
  127.   #--------------------------------------------------------------------------
  128.   alias zenith5_pdef pdef
  129.   def pdef
  130.     n = zenith5_pdef
  131.     # 戦闘中のみ値を補正
  132.     if self.is_a?(Game_Actor) and $game_temp.in_battle
  133.       n /= self.pos_mg
  134.     end
  135.     return Integer(n)
  136.   end
  137. end

复制代码





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