Project1

标题: 怎样让战斗画面全屏显示 [打印本页]

作者: 幻冄    时间: 2008-9-9 03:22
提示: 作者被禁止或删除 内容自动屏蔽
作者: 殲滅天使·玲    时间: 2008-9-9 03:49
看LZ头像很漂亮, 就帮你咯^_^
先在Spriteset_Battle 里  所有都改成 0 , 0 ,640 ,480
    # 生成显示端口
    @viewport1 = Viewport.new(0, 0, 640, 480)
    @viewport2 = Viewport.new(0, 0, 640, 480)
    @viewport3 = Viewport.new(0, 0, 640, 480)
    @viewport4 = Viewport.new(0, 0, 640, 480)

对了 还有个      @battleback_sprite.src_rect.set(0, 0, 640, 320) 改成480

然后战斗图采用 640 * 480大小 或者用战斗背景放大脚本
  1. # 戦闘背景全体化 Ver 1.01
  2. # 配布元・サポートURL
  3. # http://members.jcom.home.ne.jp/cogwheel/

  4. #==============================================================================
  5. # ■ Game_Actor
  6. #------------------------------------------------------------------------------
  7. #  アクターを扱うクラスです。このクラスは Game_Actors クラス ($game_actors)
  8. # の内部で使用され、Game_Party クラス ($game_party) からも参照されます。
  9. #==============================================================================
  10. =begin
  11. class Game_Actor < Game_Battler
  12.   #--------------------------------------------------------------------------
  13.   # ● バトル画面 X 座標の取得
  14.   #--------------------------------------------------------------------------
  15.   def screen_x
  16.     # パーティ内の並び順から X 座標を計算して返す
  17.     if self.index != nil
  18.       return self.index * 160 + (4 - $game_party.actors.size) * 80 + 80
  19.     else
  20.       return 0
  21.     end
  22.   end
  23. =end

  24. #==============================================================================
  25. # ■ Spriteset_Battle
  26. #------------------------------------------------------------------------------
  27. #  バトル画面のスプライトをまとめたクラスです。このクラスは Scene_Battle クラ
  28. # スの内部で使用されます。
  29. #==============================================================================

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

  127. #==============================================================================
  128. # ■ Window_BattleStatus
  129. #------------------------------------------------------------------------------
  130. #  バトル画面でパーティメンバーのステータスを表示するウィンドウです。
  131. #==============================================================================

  132. class Window_BattleStatus < Window_Base
  133.   #--------------------------------------------------------------------------
  134.   # ● オブジェクト初期化
  135.   #--------------------------------------------------------------------------
  136.   def initialize
  137.     x = (4 - $game_party.actors.size) * 80
  138.     width = $game_party.actors.size * 160
  139.     super(x, 320, width, 160)
  140.     self.contents = Bitmap.new(width - 32, height - 32)
  141.     self.back_opacity = 160
  142.     @level_up_flags = [false, false, false, false]
  143.     refresh
  144.   end
  145.   #--------------------------------------------------------------------------
  146.   # ● フレーム更新
  147.   #--------------------------------------------------------------------------
  148.   def update
  149.     super
  150.     if self.x != (4 - $game_party.actors.size) * 80
  151.       self.x = (4 - $game_party.actors.size) * 80
  152.       self.width = $game_party.actors.size * 160
  153.       self.contents = Bitmap.new(self.width - 32, self.height - 32)
  154.       refresh
  155.     end
  156.     # メインフェーズのときは不透明度をやや下げる
  157.     if $game_temp.battle_main_phase
  158.       self.contents_opacity -= 4 if self.contents_opacity > 191
  159.     else
  160.       self.contents_opacity += 4 if self.contents_opacity < 255
  161.     end
  162.   end
  163. end

  164. #==============================================================================
  165. # ■ Scene_Battle (分割定義 3)
  166. #------------------------------------------------------------------------------
  167. #  バトル画面の処理を行うクラスです。
  168. #==============================================================================

  169. class Scene_Battle
  170.   #--------------------------------------------------------------------------
  171.   # ● アクターコマンドウィンドウのセットアップ
  172.   #--------------------------------------------------------------------------
  173.   def phase3_setup_command_window
  174.     # パーティコマンドウィンドウを無効化
  175.     @party_command_window.active = false
  176.     @party_command_window.visible = false
  177.     # アクターコマンドウィンドウを有効化
  178.     @actor_command_window.active = true
  179.     @actor_command_window.visible = true
  180.     # アクターコマンドウィンドウの位置を設定
  181.     @actor_command_window.x = @actor_index * 160 +
  182.                               (4 - $game_party.actors.size) * 80
  183.     # インデックスを 0 に設定
  184.     @actor_command_window.index = 0
  185.   end
  186. end

  187. #==============================================================================
  188. # ■ Spriteモジュール
  189. #------------------------------------------------------------------------------
  190. #  アニメーションの管理を行うモジュールです。
  191. #==============================================================================

  192. module RPG
  193.   class Sprite < ::Sprite
  194.     def animation_set_sprites(sprites, cell_data, position)
  195.       for i in 0..15
  196.         sprite = sprites[i]
  197.         pattern = cell_data[i, 0]
  198.         if sprite == nil or pattern == nil or pattern == -1
  199.           sprite.visible = false if sprite != nil
  200.           next
  201.         end
  202.         sprite.visible = true
  203.         sprite.src_rect.set(pattern % 5 * 192, pattern / 5 * 192, 192, 192)
  204.         if position == 3
  205.           if self.viewport != nil
  206.             sprite.x = self.viewport.rect.width / 2
  207.             if $game_temp.in_battle and self.battler.is_a?(Game_Actor)
  208.               sprite.y = self.viewport.rect.height - 160
  209.             else
  210.               sprite.y = self.viewport.rect.height - 320
  211.             end
  212.           else
  213.             sprite.x = 320
  214.             sprite.y = 240
  215.           end
  216.         else
  217.           sprite.x = self.x + self.viewport.rect.x - self.ox + self.src_rect.width / 2
  218.           sprite.y = self.y + self.viewport.rect.y - self.oy * self.zoom_y + self.src_rect.height * self.zoom_y  / 2
  219.           sprite.y -= self.src_rect.height / 4 if position == 0
  220.           sprite.y += self.src_rect.height / 4 if position == 2
  221.         end
  222.         sprite.x += cell_data[i, 1]
  223.         sprite.y += cell_data[i, 2]
  224.         sprite.z = 2000
  225.         sprite.ox = 96
  226.         sprite.oy = 96
  227.         sprite.zoom_x = cell_data[i, 3] / 100.0
  228.         sprite.zoom_y = cell_data[i, 3] / 100.0
  229.         sprite.angle = cell_data[i, 4]
  230.         sprite.mirror = (cell_data[i, 5] == 1)
  231.         sprite.opacity = cell_data[i, 6] * self.opacity / 255.0
  232.         sprite.blend_type = cell_data[i, 7]
  233.       end
  234.     end
  235.   end
  236. end
复制代码


[LINE]1,#dddddd[/LINE]系统信息:本贴由楼主认可为正确答案,66RPG感谢您的热情解答~
作者: Iselia小雪    时间: 2008-9-9 03:50
提示: 作者被禁止或删除 内容自动屏蔽




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