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

Project1

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

如何临时更改战斗背景?

 关闭 [复制链接]

Lv1.梦旅人

梦石
0
星屑
55
在线时间
3 小时
注册时间
2007-3-22
帖子
505
跳转到指定楼层
1
发表于 2008-3-2 03:03:46 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
我用的是这个脚本,似乎一张地图只能固定了一张背景。
不是区域改背景,而是特定时间改背景(例如:早,中,晚)


  1. #==============================================================================
  2. # ★ ExBattle_Background
  3. #------------------------------------------------------------------------------
  4. #  使战斗画面能设定任意背景的脚本素材。
  5. #==============================================================================

  6. # 地图设定。
  7. # 请按照 地图 ID、图片名 的顺序填写。
  8. EXBTL_BACKGR_MAP = {
  9. 22 => "002-Woods01",
  10. 35 => "001-Grassland01",
  11. 25 => "001-Grassland01",
  12. }

  13. # 区域设定。
  14. # 请按照 区域 ID、图片名 的顺序填写。
  15. EXBTL_BACKGR_AREA = {
  16. 1 => "Sunset",
  17. 2 => "CloudySky",
  18. }

  19. # 显示位置。
  20. # 指定图片的显示位置 (0:上 1:中 2:下) 。
  21. EXBTL_BACKGR_POSITION = 1

  22. # 设定战斗地面
  23. # 设定战斗地面是否显示。
  24. # (0:不显示 1:显示)
  25. EXBTL_BACKGR_FLOOR = 0

  26. # 设定文件目录。
  27. # 指定战斗背景图片文件位置 (Graphic/xxx/) 。
  28. # 0:System 1:Parallaxes 2:Pictures
  29. EXBTL_BACKGR_FOLDER = 1

  30. #------------------------------------------------------------------------------

  31. class Spriteset_Battle
  32. alias _exbbackgr_create_battleback create_battleback
  33. alias _exbbackgr_create_battlefloor create_battlefloor
  34. #--------------------------------------------------------------------------
  35. # ○ 建立战斗背景精灵 (附加定义)
  36. #--------------------------------------------------------------------------
  37. def create_battleback
  38.    fixed = false
  39.    for area in $data_areas.values
  40.      if $game_player.in_area?(area) and EXBTL_BACKGR_AREA.has_key?(area.id)
  41.        source = EXBTL_BACKGR_AREA[area.id]
  42.        fixed = true
  43.      end
  44.    end
  45.    unless fixed
  46.      if EXBTL_BACKGR_MAP.has_key?($game_map.map_id)
  47.        source = EXBTL_BACKGR_MAP[$game_map.map_id]
  48.        fixed = true
  49.      end
  50.    end
  51.    if fixed
  52.      case EXBTL_BACKGR_FOLDER
  53.      when 0
  54.        bitmap = Cache.system(source)
  55.      when 1
  56.        bitmap = Cache.parallax(source)
  57.      when 2
  58.        bitmap = Cache.picture(source)
  59.      end
  60.      @battleback_sprite = Sprite.new(@viewport1)
  61.      @battleback_sprite.bitmap = bitmap
  62.      @battleback_sprite.x = (640 - bitmap.width) / 2
  63.      case EXBTL_BACKGR_POSITION
  64.      when 0
  65.        @battleback_sprite.y = 0
  66.      when 1
  67.        @battleback_sprite.y = (300- bitmap.height) / 2
  68.      when 2
  69.        @battleback_sprite.y = 480 - bitmap.height
  70.      end
  71.    else
  72.      _exbbackgr_create_battleback
  73.    end
  74. end
  75. #--------------------------------------------------------------------------
  76. # ○ 建立战斗背景精灵 (附加定义)
  77. #--------------------------------------------------------------------------
  78. def create_battlefloor
  79.    _exbbackgr_create_battlefloor
  80.    @battlefloor_sprite.opacity = 0 if EXBTL_BACKGR_FLOOR == 0
  81. end
  82. end
复制代码

版务信息:本贴由楼主自主结贴~

Lv1.梦旅人

梦石
0
星屑
55
在线时间
3 小时
注册时间
2007-3-22
帖子
505
2
 楼主| 发表于 2008-3-3 02:46:55 | 只看该作者
那啥,咋没人回答捏?
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
55
在线时间
46 小时
注册时间
2007-8-2
帖子
859
3
发表于 2008-3-3 04:29:56 | 只看该作者
{/jy}{/jy}
  1. #==============================================================================
  2. # ■ VX-RGSS2 改变战斗背景 [版本.1.0.0]     by Claimh
  3. #------------------------------------------------------------------------------
  4. # 英语翻译 By: Elemental Crisis [http://www.rpgcrisis.net]
  5. # 中文翻译 By: zero2 [http://rpg.blue/web]
  6. #------------------------------------------------------------------------------
  7. # 改变战斗的背景图.
  8. #==============================================================================


  9. module BattleBack
  10. #   选择战斗背景
  11. #   0:当前地图的战斗背景,为战斗背景(默认VX的样式)
  12. #   1:目前使用的地图作为战斗背景
  13. #   2:使用自己的图片,为战斗背景
  14. BB_TYPE = 0  # 在这里输入上面提到的编号

  15. # 显示战斗地面
  16. BT_FLOOR = false

  17. # 使用的图片(如果你选择的编号为2)
  18. M_B_BACK = {
  19.   # 地图编号 => "(Graphics/System/图片名)"
  20.   1 => "001-Grassland01"
  21. }
  22. end


  23. #==============================================================================
  24. # ■ Spriteset_Battle
  25. #==============================================================================
  26. class Spriteset_Battle
  27. #--------------------------------------------------------------------------
  28. # ● Creating Battle Back Sprite
  29. #--------------------------------------------------------------------------
  30. def create_battleback
  31.   case BattleBack::BB_TYPE
  32.   when 0
  33.     source = $game_temp.background_bitmap
  34.     bitmap = Bitmap.new(640, 480)
  35.     bitmap.stretch_blt(bitmap.rect, source, source.rect)
  36.     bitmap.radial_blur(90, 12)
  37.     @battleback_sprite = Sprite.new(@viewport1)
  38.     @battleback_sprite.bitmap = bitmap
  39.     @battleback_sprite.ox = 320
  40.     @battleback_sprite.oy = 240
  41.     @battleback_sprite.x = 272
  42.     @battleback_sprite.y = 176
  43.     @battleback_sprite.wave_amp = 8
  44.     @battleback_sprite.wave_length = 240
  45.     @battleback_sprite.wave_speed = 120
  46.   when 1
  47.     source = $game_temp.background_bitmap
  48.     bitmap = Bitmap.new(640, 480)
  49.     bitmap.stretch_blt(bitmap.rect, source, source.rect)
  50.     @battleback_sprite = Sprite.new(@viewport1)
  51.     @battleback_sprite.bitmap = bitmap
  52.     @battleback_sprite.ox = 320
  53.     @battleback_sprite.oy = 240
  54.     @battleback_sprite.x = 272
  55.     @battleback_sprite.y = 176
  56.   when 2
  57.     @battleback_sprite = BattleBackSprite.new(@viewport1)
  58.   end
  59. end
  60. #--------------------------------------------------------------------------
  61. # ● Creating Battle Floor Sprite
  62. #--------------------------------------------------------------------------
  63. alias create_battlefloor_mbb create_battlefloor
  64. def create_battlefloor
  65.   create_battlefloor_mbb if BattleBack::BT_FLOOR
  66. end
  67. #--------------------------------------------------------------------------
  68. # ● Delete Battle Floor Sprite
  69. #--------------------------------------------------------------------------
  70. alias dispose_battlefloor_mbb dispose_battlefloor
  71. def dispose_battlefloor
  72.   dispose_battlefloor_mbb if BattleBack::BT_FLOOR
  73. end
  74. #--------------------------------------------------------------------------
  75. # ● Update Battle Floor Sprite
  76. #--------------------------------------------------------------------------
  77. alias update_battlefloor_mbb update_battlefloor
  78. def update_battlefloor
  79.   update_battlefloor_mbb if BattleBack::BT_FLOOR
  80. end
  81. end


  82. #==============================================================================
  83. # ■ BattleBackSprite
  84. #==============================================================================
  85. class BattleBackSprite < Sprite
  86. # Background Screen Size
  87. WIDTH  = 544.00
  88. HEIGHT = 288.00
  89. #--------------------------------------------------------------------------
  90. # ● Object Initialization
  91. #     viewport : viewport
  92. #--------------------------------------------------------------------------
  93. def initialize(viewport = nil)
  94.   super(viewport)
  95.   self.bitmap = Cache.system(BattleBack::M_B_BACK[$game_map.map_id])
  96.   # Zoom is carried out according to picture size.
  97.   @x_zoom = WIDTH / self.bitmap.width
  98.   @y_zoom = HEIGHT / self.bitmap.height
  99.   @zoom = @x_zoom > @y_zoom ? @x_zoom : @y_zoom
  100.   # Zoom is carried out.
  101.   self.zoom_x = @zoom
  102.   self.zoom_y = @zoom
  103.   # Made into central display.
  104.   self.ox = self.bitmap.width / 2
  105.   self.oy = self.bitmap.height / 2
  106.   self.x = (self.bitmap.width / 2)  * @zoom
  107.   self.y = (self.bitmap.height / 2) * @zoom
  108. end
  109. end
复制代码

用这个吧。。。这个。。。比较简单的说!
本人小博客,摸图进入
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
55
在线时间
3 小时
注册时间
2007-3-22
帖子
505
4
 楼主| 发表于 2008-3-3 06:13:28 | 只看该作者
# 使用的图片(如果你选择的编号为2)
M_B_BACK = {
  # 地图编号 => "(Graphics/System/图片名)"
  1 => "001-Grassland01"
}
end



用这个脚本还是一张地图只能用一个背景啊~
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
9
星屑
785
在线时间
291 小时
注册时间
2007-12-15
帖子
256
5
发表于 2008-3-3 08:06:41 | 只看该作者
  1. #--------------------------------------------------------------------------
  2.   # ● 生成战斗背景位图
  3.   #--------------------------------------------------------------------------
  4.   def create_battleback
  5.     case $game_variables[5] #变量5 战斗远景
  6.       when 1
  7.         bitmap = Bitmap.new("Graphics/Parallaxes/StarlitSky")
  8.       when 2
  9.         bitmap = Bitmap.new("Graphics/Parallaxes/CloudySky")
  10.       else
  11.         source = $game_temp.background_bitmap
  12.         bitmap = Bitmap.new(640, 480)
  13.         bitmap.stretch_blt(bitmap.rect, source, source.rect)
  14.       end
  15.     @battleback_sprite = Sprite.new(@viewport1)
  16.     @battleback_sprite.bitmap = bitmap
  17.     @battleback_sprite.tone = Tone.new(0,0,0,255)
  18.     @battleback_sprite.x = 0
  19.     @battleback_sprite.y = 0
  20.   end
  21.   #--------------------------------------------------------------------------
  22.   # ● 生成战斗场所活动块
  23.   #--------------------------------------------------------------------------
  24.   def create_battlefloor
  25.     @battlefloor_sprite = Sprite.new(@viewport1)
  26.     case $game_variables[6] #变量6 战斗背景
  27.       when 1
  28.         bitmap = Bitmap.new("Graphics/Battlebacks/Battlebacks_001")
  29.       when 2
  30.         bitmap = Bitmap.new("Graphics/Battlebacks/Battlebacks_002")
  31.       when 3
  32.         bitmap = Bitmap.new("Graphics/Battlebacks/Battlebacks_003")
  33.       when 4
  34.         bitmap = Bitmap.new("Graphics/Battlebacks/Battlebacks_004")
  35.       when 5
  36.         bitmap = Bitmap.new("Graphics/Battlebacks/Battlebacks_005")
  37.       when 6
  38.         bitmap = Bitmap.new("Graphics/Battlebacks/Battlebacks_006")
  39.       when 7
  40.         bitmap = Bitmap.new("Graphics/Battlebacks/Battlebacks_007")
  41.       when 8
  42.         bitmap = Bitmap.new("Graphics/Battlebacks/Battlebacks_008")
  43.       when 9
  44.         bitmap = Bitmap.new("Graphics/Battlebacks/Battlebacks_009")
  45.       when 10
  46.         bitmap = Bitmap.new("Graphics/Battlebacks/Battlebacks_010")
  47.       else
  48.         bitmap = Bitmap.new("Graphics/Battlebacks/Battlebacks_001")
  49.       end
  50.     @battlefloor_sprite.bitmap = bitmap
  51.     @battlefloor_sprite.x = 0
  52.     @battlefloor_sprite.y = 0
  53.     @battlefloor_sprite.z = 1
  54.     @battlefloor_sprite.opacity = 255
  55.   end
复制代码


这个是我VX参赛游戏里的办法

修改的东西很少   用变量控制

你可以参考下


PS:葱娘大心
系统信息:本贴由楼主认可为正确答案,66RPG感谢您的热情解答~
残念无念
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
0 小时
注册时间
2008-2-18
帖子
1423
6
发表于 2008-3-3 10:21:06 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽
回复 支持 反对

使用道具 举报

Lv2.观梦者

天仙

梦石
0
星屑
620
在线时间
184 小时
注册时间
2008-4-15
帖子
5023

贵宾

7
发表于 2008-3-3 12:24:08 | 只看该作者
to 雪风:

case $game_variables[6] #变量6 战斗背景
      when 1
        bitmap = Bitmap.new("Graphics/Battlebacks/Battlebacks_001")
      when 2
        bitmap = Bitmap.new("Graphics/Battlebacks/Battlebacks_002")
......
end

这段也太麻烦了点吧?
每次加一个战斗背景就要在加一条分歧

为什麽不用
name = "Graphics/Battlebacks/Battlebacks_" + $game_variables[6].to_s
就好了?
VA脚本开工中...
偷窃脚本1.0 - 已完成
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
9
星屑
785
在线时间
291 小时
注册时间
2007-12-15
帖子
256
8
发表于 2008-3-3 18:08:22 | 只看该作者
以下引用snstar2006于2008-3-3 4:24:08的发言:

to 雪风:

case $game_variables[6] #变量6 战斗背景
     when 1
       bitmap = Bitmap.new("Graphics/Battlebacks/Battlebacks_001")
     when 2
       bitmap = Bitmap.new("Graphics/Battlebacks/Battlebacks_002")
......
end

这段也太麻烦了点吧?
每次加一个战斗背景就要在加一条分歧

为什麽不用
name = "Graphics/Battlebacks/Battlebacks_" + $game_variables[6].to_s
就好了?


俺又不是发布脚本   

游戏里直接复制出来的   

短篇游戏 就几个背景而已  目的是告诉LZ思路
残念无念
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
55
在线时间
3 小时
注册时间
2007-3-22
帖子
505
9
 楼主| 发表于 2008-3-4 05:02:09 | 只看该作者
谢谢各位,我先都试一下~
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
55
在线时间
3 小时
注册时间
2007-3-22
帖子
505
10
 楼主| 发表于 2008-3-4 06:51:54 | 只看该作者
以下引用wy29于2008-3-3 2:21:06的发言:

每次想换背景,就在Scene_Battle里跑:

@spriteset.change_battleback("背景文件的地址")

如果想在任何地方换背景,就得把@spriteset改成global variable.
用 $spriteset


这个怎么用?
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-12-23 17:26

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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