幻想森林

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 2243|回复: 2

[RMXP] XP功能复活 雾图形、自定战斗背景

[复制链接]

845

主题

1万

帖子

214748万

积分

版主

脑残中……

Rank: 7Rank: 7Rank: 7

积分
2147483647

声命组金赏

发表于 2008-2-20 16:29:10 | 显示全部楼层 |阅读模式
  1. #==============================================================================
  2. # ★ ExMap_AutoPlane
  3. #------------------------------------------------------------------------------
  4. #  设定云、雾等显示在特定地图的脚本素材。
  5. #==============================================================================
  6. # 地图设定。
  7. # 请按照 地图ID、文件名、横向回圈、纵向回圈、Z 坐标、
  8. # 不透明度(0 ~ 255)、合成方式 (0:通常 1:加算 2:減算)的顺序填写
  9. # 例如) 地图ID为、将图片「fog.png」半透明并且显示在一般图片下面
  10. #   向左5向下2的速度回圈,那么就填写 => [5, "fog", 5, -2, 50, 128, 0]
  11. EXMAP_ATPLN_MAPS = [
  12. [0, "", 0, 0, 50, 0, 0],
  13. [0, "", 0, 0, 50, 0, 0],
  14. ]
  15.   
  16. # 设定文件目录。
  17. # 指定雾图形文件位置 (Graphic/xxx/)
  18. # 0:System 1:Parallaxes 2:Pictures 3:Animations
  19. EXMAP_ATPLN_FOLDER = 1
  20. #------------------------------------------------------------------------------
  21. class Game_Map
  22. alias _exmapln_setup setup
  23. alias _exmapln_update update
  24. alias _exmapln_set_display_pos set_display_pos
  25. alias _exmapln_scroll_down scroll_down
  26. alias _exmapln_scroll_left scroll_left
  27. alias _exmapln_scroll_right scroll_right
  28. alias _exmapln_scroll_up scroll_up
  29. #--------------------------------------------------------------------------
  30. # ○ 公開インスタンス変数 (追加定義)
  31. #--------------------------------------------------------------------------
  32. attr_reader   :fog                      # フォグデータ
  33. #--------------------------------------------------------------------------
  34. # ○ セットアップ (追加定義)
  35. #     map_id : マップ ID
  36. #--------------------------------------------------------------------------
  37. def setup(map_id)
  38.    _exmapln_setup(map_id)
  39.    setup_fog
  40. end
  41. #--------------------------------------------------------------------------
  42. # ☆ フォグのセットアップ
  43. #--------------------------------------------------------------------------
  44. def setup_fog
  45.    @fog = [0, "", 0, 0, 50, 0, 0]
  46.    @fog_sx = 0
  47.    @fog_sy = 0
  48.    @fog_x = 0
  49.    @fog_y = 0
  50.    for data in EXMAP_ATPLN_MAPS
  51.      if @map_id == data[0]
  52.        @fog = data
  53.        @fog_sx = data[2]
  54.        @fog_sy = data[3]
  55.        break
  56.      end
  57.    end
  58. end
  59. #--------------------------------------------------------------------------
  60. # ○ フレーム更新 (追加定義)
  61. #--------------------------------------------------------------------------
  62. def update
  63.    _exmapln_update
  64.    update_fog
  65. end
  66. #--------------------------------------------------------------------------
  67. # ○ 表示位置の設定 (追加定義)
  68. #     x : 新しい表示 X 座標 (*256)
  69. #     y : 新しい表示 Y 座標 (*256)
  70. #--------------------------------------------------------------------------
  71. def set_display_pos(x, y)
  72.    _exmapln_set_display_pos(x, y)
  73.    @fog_x = x
  74.    @fog_y = y
  75. end
  76. #--------------------------------------------------------------------------
  77. # ☆ フォグ表示 X 座標の計算
  78. #     bitmap : フォグビットマップ
  79. #--------------------------------------------------------------------------
  80. def calc_fog_x(bitmap)
  81.    return bitmap == nil ? 0 : @fog_x / 8
  82. end
  83. #--------------------------------------------------------------------------
  84. # ☆ フォグ表示 Y 座標の計算
  85. #     bitmap : フォグビットマップ
  86. #--------------------------------------------------------------------------
  87. def calc_fog_y(bitmap)
  88.    return bitmap == nil ? 0 : @fog_y / 8
  89. end
  90. #--------------------------------------------------------------------------
  91. # ○ 下にスクロール (追加定義)
  92. #     distance : スクロールする距離
  93. #--------------------------------------------------------------------------
  94. def scroll_down(distance)
  95.    last_y = @display_y
  96.    _exmapln_scroll_down(distance)
  97.    if loop_vertical?
  98.      @fog_y += distance
  99.    else
  100.      @fog_y += @display_y - last_y
  101.    end
  102. end
  103. #--------------------------------------------------------------------------
  104. # ○ 左にスクロール (追加定義)
  105. #     distance : スクロールする距離
  106. #--------------------------------------------------------------------------
  107. def scroll_left(distance)
  108.    last_x = @display_x
  109.    _exmapln_scroll_left(distance)
  110.    if loop_horizontal?
  111.      @fog_x -= distance
  112.    else
  113.      @fog_x += @display_x - last_x
  114.    end
  115. end
  116. #--------------------------------------------------------------------------
  117. # ○ 右にスクロール (追加定義)
  118. #     distance : スクロールする距離
  119. #--------------------------------------------------------------------------
  120. def scroll_right(distance)
  121.    last_x = @display_x
  122.    _exmapln_scroll_right(distance)
  123.    if loop_horizontal?
  124.      @fog_x += distance
  125.    else
  126.      @fog_x += @display_x - last_x
  127.    end
  128. end
  129. #--------------------------------------------------------------------------
  130. # ○ 上にスクロール (追加定義)
  131. #     distance : スクロールする距離
  132. #--------------------------------------------------------------------------
  133. def scroll_up(distance)
  134.    last_y = @display_y
  135.    _exmapln_scroll_up(distance)
  136.    if @fog != nil
  137.      if loop_vertical?
  138.        @fog_y -= distance
  139.      else
  140.        @fog_y += @display_y - last_y
  141.      end
  142.    end
  143. end
  144. #--------------------------------------------------------------------------
  145. # ☆ フォグの更新
  146. #--------------------------------------------------------------------------
  147. def update_fog
  148.    @fog_x += @fog_sx * 2
  149.    @fog_y += @fog_sy * 2
  150. end
  151. end
  152. class Spriteset_Map
  153. alias _exmapln_initialize initialize
  154. alias _exmapln_dispose dispose
  155. alias _exmapln_update update
  156. #--------------------------------------------------------------------------
  157. # ○ オブジェクト初期化 (追加定義)
  158. #--------------------------------------------------------------------------
  159. def initialize
  160.    create_fog
  161.    _exmapln_initialize
  162. end
  163. #--------------------------------------------------------------------------
  164. # ☆ フォグの作成
  165. #--------------------------------------------------------------------------
  166. def create_fog
  167.    @fog = Plane.new
  168.    if $game_map.fog != nil
  169.      @fog.z = $game_map.fog[4]
  170.      @fog.opacity = $game_map.fog[5]
  171.      @fog.blend_type = $game_map.fog[6]
  172.    end
  173. end
  174. #--------------------------------------------------------------------------
  175. # ○ 解放 (追加定義)
  176. #--------------------------------------------------------------------------
  177. def dispose
  178.    _exmapln_dispose
  179.    @fog.dispose
  180. end
  181. #--------------------------------------------------------------------------
  182. # ○ フレーム更新 (追加定義)
  183. #--------------------------------------------------------------------------
  184. def update
  185.    _exmapln_update
  186.    update_fog
  187. end
  188. #--------------------------------------------------------------------------
  189. # ☆ フォグの更新
  190. #--------------------------------------------------------------------------
  191. def update_fog
  192.    if @fog_name != $game_map.fog[1]
  193.      @fog_name = $game_map.fog[1]
  194.      if @fog.bitmap != nil
  195.        @fog.bitmap.dispose
  196.        @fog.bitmap = nil
  197.      end
  198.      if @fog_name != ""
  199.        case EXMAP_ATPLN_FOLDER
  200.        when 0
  201.          @fog.bitmap = Cache.system(@fog_name)
  202.        when 1
  203.          @fog.bitmap = Cache.parallax(@fog_name)
  204.        when 2
  205.          @fog.bitmap = Cache.picture(@fog_name)
  206.        when 3
  207.          @fog.bitmap = Cache.animation(@fog_name, 0)
  208.        end
  209.      end
  210.      Graphics.frame_reset
  211.    end
  212.    @fog.ox = $game_map.calc_fog_x(@fog.bitmap)
  213.    @fog.oy = $game_map.calc_fog_y(@fog.bitmap)
  214. end
  215. end
复制代码
  1. #==============================================================================
  2. # ★ ExBattle_Background
  3. #------------------------------------------------------------------------------
  4. #  使战斗画面能设定任意背景的脚本素材。
  5. #==============================================================================
  6. # 地图设定。
  7. # 请按照 地图 ID、图片名 的顺序填写。
  8. EXBTL_BACKGR_MAP = {
  9. 1 => "Ocean",
  10. 2 => "Mountains",
  11. }
  12. # 区域设定。
  13. # 请按照 区域 ID、图片名 的顺序填写。
  14. EXBTL_BACKGR_AREA = {
  15. 1 => "Sunset",
  16. 2 => "CloudySky",
  17. }
  18. # 显示位置。
  19. # 指定图片的显示位置 (0:上 1:中 2:下) 。
  20. EXBTL_BACKGR_POSITION = 1
  21. # 设定战斗地面
  22. # 设定战斗地面是否显示。
  23. # (0:不显示 1:显示)
  24. EXBTL_BACKGR_FLOOR = 0
  25. # 设定文件目录。
  26. # 指定战斗背景图片文件位置 (Graphic/xxx/) 。
  27. # 0:System 1:Parallaxes 2:Pictures
  28. EXBTL_BACKGR_FOLDER = 1
  29. #------------------------------------------------------------------------------
  30. class Spriteset_Battle
  31. alias _exbbackgr_create_battleback create_battleback
  32. alias _exbbackgr_create_battlefloor create_battlefloor
  33. #--------------------------------------------------------------------------
  34. # ○ 建立战斗背景精灵 (附加定义)
  35. #--------------------------------------------------------------------------
  36. def create_battleback
  37.    fixed = false
  38.    for area in $data_areas.values
  39.      if $game_player.in_area?(area) and EXBTL_BACKGR_AREA.has_key?(area.id)
  40.        source = EXBTL_BACKGR_AREA[area.id]
  41.        fixed = true
  42.      end
  43.    end
  44.    unless fixed
  45.      if EXBTL_BACKGR_MAP.has_key?($game_map.map_id)
  46.        source = EXBTL_BACKGR_MAP[$game_map.map_id]
  47.        fixed = true
  48.      end
  49.    end
  50.    if fixed
  51.      case EXBTL_BACKGR_FOLDER
  52.      when 0
  53.        bitmap = Cache.system(source)
  54.      when 1
  55.        bitmap = Cache.parallax(source)
  56.      when 2
  57.        bitmap = Cache.picture(source)
  58.      end
  59.      @battleback_sprite = Sprite.new(@viewport1)
  60.      @battleback_sprite.bitmap = bitmap
  61.      @battleback_sprite.x = (544 - bitmap.width) / 2
  62.      case EXBTL_BACKGR_POSITION
  63.      when 0
  64.        @battleback_sprite.y = 0
  65.      when 1
  66.        @battleback_sprite.y = (416 - bitmap.height) / 2
  67.      when 2
  68.        @battleback_sprite.y = 416 - bitmap.height
  69.      end
  70.    else
  71.      _exbbackgr_create_battleback
  72.    end
  73. end
  74. #--------------------------------------------------------------------------
  75. # ○ 建立战斗背景精灵 (附加定义)
  76. #--------------------------------------------------------------------------
  77. def create_battlefloor
  78.    _exbbackgr_create_battlefloor
  79.    @battlefloor_sprite.opacity = 0 if EXBTL_BACKGR_FLOOR == 0
  80. end
  81. end
复制代码
http://icv.cc声动音缘配音社
回复

使用道具 举报

3

主题

5

帖子

57

积分

②入门

积分
57
发表于 2008-3-23 00:52:49 | 显示全部楼层
谢谢分享,请问VX能用吗?
回复 支持 反对

使用道具 举报

0

主题

8

帖子

90

积分

②入门

积分
90
发表于 2008-3-23 01:50:13 | 显示全部楼层
引用第1楼totem2005于2008-03-23 00:52发表的  :
谢谢分享,请问VX能用吗?

@@
這本來就是VX的腳本
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|幻想森林

GMT+8, 2025-6-20 07:04 , Processed in 0.010788 second(s), 21 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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