Project1

标题: 关于战斗画面 [打印本页]

作者: 1059847607    时间: 2013-8-13 20:29
标题: 关于战斗画面
本帖最后由 1059847607 于 2013-8-14 00:13 编辑

这是搜索到的脚本,只有一个角色的时候,人物会站在中间,可是两边都是黑色,有点难看啊,怎么用图片遮挡一下?可能描述的不太清楚,使用这个脚本下就知道了
  1. #==============================================================================
  2. # 本脚本来自www.66RPG.com,使用和转载请保留此信息
  3. #==============================================================================

  4. #==============================================================================
  5. # ■ 战斗时自动更改状态栏大小和命令窗口位置
  6. #
  7. #     简单战斗系统,根据队员人数自动更改状态窗口大小,自动调整命令窗口位置;需
  8. # 要去站上下载一张640 * 480的战斗背景图,导入到Graphics/Battlebacks文件夹中,再
  9. # 在数据库的[图块]设置。  
  10. #==============================================================================

  11. #==============================================================================
  12. # ■ Game_Actor
  13. #------------------------------------------------------------------------------
  14. #  处理角色的类。本类在 Game_Actors 类 ($game_actors)
  15. # 的内部使用、Game_Party 类请参考 ($game_party) 。
  16. #==============================================================================
  17. class Game_Actor < Game_Battler
  18.   #--------------------------------------------------------------------------
  19.   # ● 取得战斗画面的 X 坐标
  20.   #--------------------------------------------------------------------------
  21.   def screen_x
  22.     # 返回计算后的队伍 X 坐标的排列顺序
  23.     case $game_party.actors.size
  24.     when 0
  25.       return 0
  26.     when 1
  27.       return 320
  28.     when 2
  29.       case self.index
  30.       when 0
  31.         return 240
  32.       when 1
  33.         return 400
  34.       end
  35.     when 3
  36.       case self.index
  37.       when 0
  38.         return 160
  39.       when 1
  40.         return 320
  41.       when 2
  42.         return 480
  43.       end
  44.     when 4
  45.       case self.index
  46.       when 0
  47.         return 80
  48.       when 1
  49.         return 240
  50.       when 2
  51.         return 400
  52.       when 3
  53.         return 560
  54.       end
  55.     end
  56.   end
  57. end
  58. #------------------------------------------------------------------------------
  59. #  显示战斗画面同伴状态的窗口。
  60. #==============================================================================
  61. class Window_BattleStatus < Window_Base
  62.   #--------------------------------------------------------------------------
  63.   # ● 初始化对像
  64.   #--------------------------------------------------------------------------
  65.   def initialize
  66.     case $game_party.actors.size
  67.     when 1
  68.       super(240, 320, 160, 160)
  69.     when 2
  70.       super(160, 320, 320, 160)
  71.     when 3
  72.       super(80, 320, 480, 160)
  73.     when 4
  74.       super(0, 320, 640, 160)
  75.     end
  76.     self.contents = Bitmap.new(width - 32, height - 32)
  77.     @level_up_flags = [false, false, false, false]
  78.     refresh
  79.   end
  80. end
  81. #==============================================================================
  82. # ■ Spriteset_Battle
  83. #------------------------------------------------------------------------------
  84. #  处理战斗画面的活动块的类。本类在 Scene_Battle 类
  85. # 的内部使用。
  86. #==============================================================================
  87. class Spriteset_Battle
  88.   #--------------------------------------------------------------------------
  89.   # ● 初始化变量
  90.   #--------------------------------------------------------------------------
  91.   def initialize
  92.     # 生成显示端口
  93.     @viewport1 = Viewport.new(0, 0, 640, 480)
  94.     @viewport2 = Viewport.new(0, 0, 640, 480)
  95.     @viewport3 = Viewport.new(0, 0, 640, 480)
  96.     @viewport4 = Viewport.new(0, 0, 640, 480)
  97.     @viewport2.z = 101
  98.     @viewport3.z = 200
  99.     @viewport4.z = 5000
  100.     # 生成战斗背景活动块
  101.     @battleback_sprite = Sprite.new(@viewport1)
  102.     # 生成敌人活动块
  103.     @enemy_sprites = []
  104.     for enemy in $game_troop.enemies.reverse
  105.       @enemy_sprites.push(Sprite_Battler.new(@viewport1, enemy))
  106.     end
  107.     # 生成敌人活动块
  108.     @actor_sprites = []
  109.     @actor_sprites.push(Sprite_Battler.new(@viewport2))
  110.     @actor_sprites.push(Sprite_Battler.new(@viewport2))
  111.     @actor_sprites.push(Sprite_Battler.new(@viewport2))
  112.     @actor_sprites.push(Sprite_Battler.new(@viewport2))
  113.     # 生成天候
  114.     @weather = RPG::Weather.new(@viewport1)
  115.     # 生成图片活动块
  116.     @picture_sprites = []
  117.     for i in 51..100
  118.       @picture_sprites.push(Sprite_Picture.new(@viewport3,
  119.           $game_screen.pictures[i]))
  120.     end
  121.     # 生成计时器块
  122.     @timer_sprite = Sprite_Timer.new
  123.     # 刷新画面
  124.     update
  125.   end
  126.   #--------------------------------------------------------------------------
  127.   # ● 刷新画面
  128.   #--------------------------------------------------------------------------
  129.   def update
  130.     # 刷新角色的活动块 (对应角色的替换)
  131.     @actor_sprites[0].battler = $game_party.actors[0]
  132.     @actor_sprites[1].battler = $game_party.actors[1]
  133.     @actor_sprites[2].battler = $game_party.actors[2]
  134.     @actor_sprites[3].battler = $game_party.actors[3]
  135.     # 战斗背景的文件名与现在情况有差异的情况下
  136.     if @battleback_name != $game_temp.battleback_name
  137.       @battleback_name = $game_temp.battleback_name
  138.       if @battleback_sprite.bitmap != nil
  139.         @battleback_sprite.bitmap.dispose
  140.       end
  141.       @battleback_sprite.bitmap = RPG::Cache.battleback(@battleback_name)
  142.       @battleback_sprite.src_rect.set(0, 0, 640, 480)
  143.     end
  144.     # 刷新战斗者的活动块
  145.     for sprite in @enemy_sprites + @actor_sprites
  146.       sprite.update
  147.     end
  148.     # 刷新天气图形
  149.     @weather.type = $game_screen.weather_type
  150.     @weather.max = $game_screen.weather_max
  151.     @weather.update
  152.     # 刷新图片活动块
  153.     for sprite in @picture_sprites
  154.       sprite.update
  155.     end
  156.     # 刷新计时器活动块
  157.     @timer_sprite.update
  158.     # 设置画面的色调与震动位置
  159.     @viewport1.tone = $game_screen.tone
  160.     @viewport1.ox = $game_screen.shake
  161.     # 设置画面的闪烁色
  162.     @viewport4.color = $game_screen.flash_color
  163.     # 刷新显示端口
  164.     @viewport1.update
  165.     @viewport2.update
  166.     @viewport4.update
  167.   end
  168. end
  169. #==============================================================================
  170. # ■ Scene_Battle (分割定义 1)
  171. #------------------------------------------------------------------------------
  172. #  处理战斗画面的类。
  173. #==============================================================================
  174. class Scene_Battle
  175.   #--------------------------------------------------------------------------
  176.   # ● 主处理
  177.   #--------------------------------------------------------------------------
  178.   def main
  179.     # 初始化战斗用的各种暂时数据
  180.     $game_temp.in_battle = true
  181.     $game_temp.battle_turn = 0
  182.     $game_temp.battle_event_flags.clear
  183.     $game_temp.battle_abort = false
  184.     $game_temp.battle_main_phase = false
  185.     $game_temp.battleback_name = $game_map.battleback_name
  186.     $game_temp.forcing_battler = nil
  187.     # 初始化战斗用事件解释器
  188.     $game_system.battle_interpreter.setup(nil, 0)
  189.     # 准备队伍
  190.     @troop_id = $game_temp.battle_troop_id
  191.     $game_troop.setup(@troop_id)
  192.     # 生成角色命令窗口
  193.     s1 = $data_system.words.attack
  194.     s2 = $data_system.words.skill
  195.     s3 = $data_system.words.guard
  196.     s4 = $data_system.words.item
  197.     @actor_command_window = Window_Command.new(160, [s1, s2, s3, s4])
  198.     @actor_command_window.y = 160
  199.     @actor_command_window.back_opacity = 160
  200.     @actor_command_window.active = false
  201.     @actor_command_window.visible = false
  202.     # 生成其它窗口
  203.     @party_command_window = Window_PartyCommand.new
  204.     @help_window = Window_Help.new
  205.     @help_window.back_opacity = 160
  206.     @help_window.visible = false
  207.     @status_window = Window_BattleStatus.new
  208.     @message_window = Window_Message.new   
  209.     # 生成活动块
  210.     @spriteset = Spriteset_Battle.new
  211.     # 初始化等待计数
  212.     @wait_count = 0
  213.     # 执行过渡
  214.     if $data_system.battle_transition == ""
  215.       Graphics.transition(20)
  216.     else
  217.       Graphics.transition(40, "Graphics/Transitions/" +
  218.           $data_system.battle_transition)
  219.     end
  220.     # 开始自由战斗回合
  221.     start_phase1
  222.     # 主循环
  223.     loop do
  224.       # 刷新游戏画面
  225.       Graphics.update
  226.       # 刷新输入信息
  227.       Input.update
  228.       # 刷新画面
  229.       update
  230.       # 如果画面切换的话就中断循环
  231.       if $scene != self
  232.         break
  233.       end
  234.     end
  235.     # 刷新地图
  236.     $game_map.refresh
  237.     # 准备过渡
  238.     Graphics.freeze
  239.     # 释放窗口
  240.     @actor_command_window.dispose
  241.     @party_command_window.dispose
  242.     @help_window.dispose
  243.     @status_window.dispose
  244.     @message_window.dispose
  245.     if @skill_window != nil
  246.       @skill_window.dispose
  247.     end
  248.     if @item_window != nil
  249.       @item_window.dispose
  250.     end
  251.     if @result_window != nil
  252.       @result_window.dispose
  253.     end
  254.     # 释放活动块
  255.     @spriteset.dispose
  256.     # 标题画面切换中的情况
  257.     if $scene.is_a?(Scene_Title)
  258.       # 淡入淡出画面
  259.       Graphics.transition
  260.       Graphics.freeze
  261.     end
  262.     # 战斗测试或者游戏结束以外的画面切换中的情况
  263.     if $BTEST and not $scene.is_a?(Scene_Gameover)
  264.       $scene = nil
  265.     end
  266.   end
  267.   #--------------------------------------------------------------------------
  268.   # ● 设置角色指令窗口
  269.   #--------------------------------------------------------------------------
  270.   def phase3_setup_command_window
  271.     # 同伴指令窗口无效化
  272.     @party_command_window.active = false
  273.     @party_command_window.visible = false
  274.     # 角色指令窗口无效化
  275.     @actor_command_window.active = true
  276.     @actor_command_window.visible = true
  277.     # 设置角色指令窗口的位置
  278.     case $game_party.actors.size
  279.     when 1
  280.       @actor_command_window.x = @actor_index * 160 + 240
  281.     when 2
  282.       @actor_command_window.x = @actor_index * 160 + 160
  283.     when 3
  284.       @actor_command_window.x = @actor_index * 160 + 80
  285.     when 4
  286.       @actor_command_window.x = @actor_index * 160
  287.     end
  288.     # 设置索引为 0
  289.     @actor_command_window.index = 0
  290.   end
  291. end
  292. #==============================================================================
  293. # 本脚本来自www.66RPG.com,使用和转载请保留此信息
  294. #==============================================================================
复制代码

作者: 弗雷德    时间: 2013-8-13 20:34
会黑色是因为默认的战斗背景图只有640*320,你只需要准备640*480的战斗背景图就可以了
作者: 1059847607    时间: 2013-8-13 21:11
弗雷德 发表于 2013-8-13 20:34
会黑色是因为默认的战斗背景图只有640*320,你只需要准备640*480的战斗背景图就可以了 ...

可以具体点吗?不太明白哎。
作者: 1059847607    时间: 2013-8-13 21:16
弗雷德 发表于 2013-8-13 20:34
会黑色是因为默认的战斗背景图只有640*320,你只需要准备640*480的战斗背景图就可以了 ...

谢谢了,明白了。




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