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

Project1

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

[已经解决] <VA>如何使战斗背景变为所在地图

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
100 小时
注册时间
2014-6-23
帖子
85
跳转到指定楼层
1
发表于 2014-8-30 08:10:49 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

x
残念。。。早期用的vx是有一个脚本可以让所在地图虚化后变为战斗背景,但在论坛里搜了半天,好像没有发现va可以用的,度娘给了一款,但是贴上去后完全没有反应,大神可以帮忙发个可以用的链接嘛?

Lv3.寻梦者 (版主)

…あたしは天使なんかじゃないわ

梦石
0
星屑
2208
在线时间
4033 小时
注册时间
2010-10-4
帖子
10779

开拓者贵宾

2
发表于 2014-8-30 08:54:45 | 只看该作者
  1. class Scene_Battle
  2.   alias battleback_map_main main
  3.   def main
  4.     @battleback_sprite = Spriteset_Map.new
  5.     battleback_map_main
  6.     @battleback_sprite.dispose
  7.   end
  8. end unless $BTEST
复制代码

评分

参与人数 1梦石 +1 收起 理由
VIPArcher + 1 认可答案

查看全部评分

回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
100 小时
注册时间
2014-6-23
帖子
85
3
 楼主| 发表于 2014-8-30 08:58:32 | 只看该作者
本帖最后由 Sence 于 2014-8-30 08:59 编辑
taroxd 发表于 2014-8-30 08:54


貌似...不行... 天气是带入战斗了...但是背景图还是一团旋转的绿色物体(图片设置两个都填无的...){:2_259:}还有 最好地图 虚化一下...完全 清晰总觉得哪里怪怪的...

点评

不清楚。我这里貌似没问题  发表于 2014-8-30 09:01
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
100 小时
注册时间
2014-6-23
帖子
85
4
 楼主| 发表于 2014-8-30 09:16:26 | 只看该作者
Sence 发表于 2014-8-30 08:58
貌似...不行... 天气是带入战斗了...但是背景图还是一团旋转的绿色物体(图片设置两个都填无的...){:2_259 ...

会跟脸图战斗之类的脚本冲突嘛?

点评

应该不太会啊  发表于 2014-8-30 09:18
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
100 小时
注册时间
2014-6-23
帖子
85
5
 楼主| 发表于 2014-8-30 09:20:58 | 只看该作者
Sence 发表于 2014-8-30 09:16
会跟脸图战斗之类的脚本冲突嘛?

额...我再去图书馆逛逛吧...还是要谢谢你...
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
22713
在线时间
8623 小时
注册时间
2011-12-31
帖子
3367
6
发表于 2014-8-30 10:23:06 | 只看该作者
本帖最后由 tseyik 于 2014-8-30 10:26 编辑

フィールド並行戦闘
還可令战斗背景的所在地图執行事件
http://canarialt.blog.fc2.com/blog-entry-56.html

RUBY 代码复制
  1. #==============================================================================
  2. # ■ フィールド並行戦闘 (VX Ace用)
  3. #------------------------------------------------------------------------------
  4. # 製作者     : CanariAlternate
  5. # サイト名   : カルトの鳥篭
  6. # サイトURL  : [url]http://canarialt.blog.fc2.com[/url]
  7. #------------------------------------------------------------------------------
  8. # ■ 概要 : マップの処理を停止せずに戦闘を実行する。
  9. #
  10. # ■ 必須 : なし
  11. #
  12. # ■ 位置 : 「Scene_Battle」より下
  13. #------------------------------------------------------------------------------
  14. # 更新履歴 : 2012/12/30 Ver1.00 スクリプトを作成した。
  15. #            2012/12/30 Ver1.01 戦闘中の判定のバグを修正した。
  16. #            2013/01/05 Ver1.02 解放済みのウィンドウを更新しないように変更
  17. #            2013/02/19 Ver1.03 共通処理スクリプトの廃止による変更を施した。
  18. #            2013/08/18 Ver1.04 トランジションのバグを修正した。
  19. #                               戦闘背景の不透明度の設定方法を拡張した。
  20. #==============================================================================
  21.  
  22. =begin
  23.   ■□■仕様・設定に関する内容の箇条書き□■□
  24.   文章の表示などは戦闘終了までウェイトする。戦闘イベントは反映される。
  25.   コマンド「バトルの処理」も文章の表示と同様に戦闘終了までウェイトする。
  26.   コマンド「メニュー画面を開く」なども戦闘終了までウェイトする。
  27.   コマンド「画面の色調変更」などはマップで実行すればマップに反映する。
  28.   コマンド「画面の色調変更」などは戦闘イベントで実行すれば戦闘画面に反映する。
  29. =end
  30.  
  31. $imported ||= {}
  32. $imported[:CanariAlternate_ParallelBattle] = true
  33.  
  34. #==============================================================================
  35. # ■ Calt
  36. #------------------------------------------------------------------------------
  37. #  CanariAlternateが製作したスクリプト用のモジュールです。
  38. #==============================================================================
  39. module Calt
  40.   #----------------------------------------------------------------------------
  41.   # ◆開始時のトランジションと終了時のフェードアウトを有効にするスイッチの番号
  42.   TRANSITION_SWITCH = 0 # 0 だと常に無効化
  43.   #
  44.   # ◆戦闘背景(床)の不透明度(負の値に設定すると変数を参照するようになる)
  45.   # 例 BACK1_OPACITY = -5  # 不透明度を5番の変数で設定
  46.   # 例 BACK1_OPACITY = 160 # 不透明度を直接設定
  47.   BACK1_OPACITY = 160 # 0 ~ 255 または -変数の番号
  48.   #
  49.   # ◆戦闘背景(壁)の不透明度(負の値に設定すると変数を参照するようになる)
  50.   # 例 BACK2_OPACITY = -6  # 不透明度を6番の変数で設定
  51.   # 例 BACK2_OPACITY = 0   # 不透明度を直接設定
  52.   BACK2_OPACITY = 0   # 0 ~ 255 または -変数の番号
  53.   #----------------------------------------------------------------------------
  54. end
  55.  
  56. #==============================================================================
  57. # ■ Game_Player
  58. #------------------------------------------------------------------------------
  59. #  プレイヤーを扱うクラスです。イベントの起動判定や、マップのスクロールなどの
  60. # 機能を持っています。このクラスのインスタンスは $game_player で参照されます。
  61. #==============================================================================
  62. class Game_Player < Game_Character
  63.   #--------------------------------------------------------------------------
  64.   # ● 移動可能判定 [追加]
  65.   #--------------------------------------------------------------------------
  66.   alias movable_ParallelBattle? movable?
  67.   def movable?
  68.     return false if SceneManager.scene_is?(Scene_Battle)  # 戦闘中は操作不可
  69.     return movable_ParallelBattle?
  70.   end
  71. end
  72.  
  73. #==============================================================================
  74. # ■ Game_Interpreter
  75. #------------------------------------------------------------------------------
  76. #  イベントコマンドを実行するインタプリタです。このクラスは Game_Map クラス、
  77. # Game_Troop クラス、Game_Event クラスの内部で使用されます。
  78. #==============================================================================
  79. class Game_Interpreter
  80.   #--------------------------------------------------------------------------
  81.   # ● 画面系コマンドの対象を取得 [◆再定義]
  82.   #--------------------------------------------------------------------------
  83.   def screen
  84.     battle_event? ? $game_troop.screen : $game_map.screen
  85.   end
  86.   #--------------------------------------------------------------------------
  87.   # ● キャラクターの取得 [◆再定義]
  88.   #--------------------------------------------------------------------------
  89.   def get_character(param)
  90.     if $BTEST
  91.       nil
  92.     elsif param < 0
  93.       $game_player
  94.     else
  95.       events = same_map? ? $game_map.events : {}
  96.       events[param > 0 ? param : @event_id]
  97.     end
  98.   end
  99.   #--------------------------------------------------------------------------
  100.   # ● メッセージ表示がビジー状態の間ウェイト [◆再定義]
  101.   #--------------------------------------------------------------------------
  102.   def wait_for_message
  103.     Fiber.yield while $game_message.busy? || $in_battle_running_map
  104.   end
  105.   #--------------------------------------------------------------------------
  106.   # ● 自身が戦闘のイベントか判定 [新規]
  107.   #--------------------------------------------------------------------------
  108.   def battle_event?
  109.     return $game_party.in_battle && !$in_battle_running_map
  110.   end
  111.   #--------------------------------------------------------------------------
  112.   # ● マップのイベント限定で戦闘中はウェイト [新規]
  113.   #--------------------------------------------------------------------------
  114.   def wait_for_battle
  115.     Fiber.yield while $game_party.in_battle || $in_battle_running_map
  116.   end
  117.   #--------------------------------------------------------------------------
  118.   # ● 場所移動 [◆再定義]
  119.   #--------------------------------------------------------------------------
  120.   def command_201
  121.     return if $BTEST
  122.     Fiber.yield while $game_player.transfer? || $game_message.visible
  123.     if @params[0] == 0                      # 直接指定
  124.       map_id = @params[1]
  125.       x = @params[2]
  126.       y = @params[3]
  127.     else                                    # 変数で指定
  128.       map_id = $game_variables[@params[1]]
  129.       x = $game_variables[@params[2]]
  130.       y = $game_variables[@params[3]]
  131.     end
  132.     $game_player.reserve_transfer(map_id, x, y, @params[4])
  133.     $game_temp.fade_type = @params[5]
  134.     Fiber.yield while $game_player.transfer?
  135.   end
  136.   #--------------------------------------------------------------------------
  137.   # ● マップのスクロール [◆再定義]
  138.   #--------------------------------------------------------------------------
  139.   def command_204
  140.     return if $BTEST
  141.     Fiber.yield while $game_map.scrolling?
  142.     $game_map.start_scroll(@params[0], @params[1], @params[2])
  143.   end
  144.   #--------------------------------------------------------------------------
  145.   # ● 隊列メンバーの集合 [◆再定義]
  146.   #--------------------------------------------------------------------------
  147.   def command_217
  148.     return if $BTEST
  149.     $game_player.followers.gather
  150.     Fiber.yield until $game_player.followers.gather?
  151.   end
  152.   #--------------------------------------------------------------------------
  153.   # ● 天候の設定 [◆再定義]
  154.   #--------------------------------------------------------------------------
  155.   def command_236
  156.     return if $BTEST
  157.     $game_map.screen.change_weather(@params[0], @params[1], @params[2])
  158.     wait(@params[2]) if @params[3]
  159.   end
  160.   #--------------------------------------------------------------------------
  161.   # ● バトルの処理 [◆再定義]
  162.   #--------------------------------------------------------------------------
  163.   def command_301
  164.     return if battle_event?
  165.     wait_for_battle # 戦闘終了まで待機
  166.     if @params[0] == 0                      # 直接指定
  167.       troop_id = @params[1]
  168.     elsif @params[0] == 1                   # 変数で指定
  169.       troop_id = $game_variables[@params[1]]
  170.     else                                    # マップ指定の敵グループ
  171.       troop_id = $game_player.make_encounter_troop_id
  172.     end
  173.     if $data_troops[troop_id]
  174.       BattleManager.setup(troop_id, @params[2], @params[3])
  175.       BattleManager.event_proc = Proc.new {|n| @branch[@indent] = n }
  176.       $game_player.make_encounter_count
  177.       SceneManager.call(Scene_Battle)
  178.     end
  179.     Fiber.yield
  180.     wait_for_battle # 戦闘終了まで待機
  181.   end
  182.   #--------------------------------------------------------------------------
  183.   # ● ショップの処理
  184.   #--------------------------------------------------------------------------
  185.   def command_302
  186.     return if battle_event?
  187.     wait_for_battle # 戦闘終了まで待機
  188.     goods = [@params]
  189.     while next_event_code == 605
  190.       @index += 1
  191.       goods.push(@list[@index].parameters)
  192.     end
  193.     SceneManager.call(Scene_Shop)
  194.     SceneManager.scene.prepare(goods, @params[4])
  195.     Fiber.yield
  196.   end
  197.   #--------------------------------------------------------------------------
  198.   # ● 名前入力の処理
  199.   #--------------------------------------------------------------------------
  200.   def command_303
  201.     return if battle_event?
  202.     wait_for_battle # 戦闘終了まで待機
  203.     if $data_actors[@params[0]]
  204.       SceneManager.call(Scene_Name)
  205.       SceneManager.scene.prepare(@params[0], @params[1])
  206.       Fiber.yield
  207.     end
  208.   end
  209.   #--------------------------------------------------------------------------
  210.   # ● メニュー画面を開く
  211.   #--------------------------------------------------------------------------
  212.   def command_351
  213.     return if battle_event?
  214.     wait_for_battle # 戦闘終了まで待機
  215.     SceneManager.call(Scene_Menu)
  216.     Window_MenuCommand::init_command_position
  217.     Fiber.yield
  218.   end
  219.   #--------------------------------------------------------------------------
  220.   # ● セーブ画面を開く
  221.   #--------------------------------------------------------------------------
  222.   def command_352
  223.     return if battle_event?
  224.     wait_for_battle # 戦闘終了まで待機
  225.     SceneManager.call(Scene_Save)
  226.     Fiber.yield
  227.   end
  228. end
  229.  
  230. #==============================================================================
  231. # ■ Spriteset_Battle
  232. #------------------------------------------------------------------------------
  233. #  バトル画面のスプライトをまとめたクラスです。このクラスは Scene_Battle クラ
  234. # スの内部で使用されます。
  235. #==============================================================================
  236. class Spriteset_Battle
  237.   #--------------------------------------------------------------------------
  238.   # ● 戦闘背景(床)スプライトの作成 [追加]
  239.   #--------------------------------------------------------------------------
  240.   alias create_battleback1_ParallelBattle create_battleback1
  241.   def create_battleback1
  242.     create_battleback1_ParallelBattle
  243.     return if $BTEST
  244.     if Calt::BACK1_OPACITY >= 0
  245.       @back1_sprite.opacity = Calt::BACK1_OPACITY
  246.     else
  247.       @back1_sprite.opacity = $game_variables[-Calt::BACK1_OPACITY]
  248.     end
  249.   end
  250.   #--------------------------------------------------------------------------
  251.   # ● 戦闘背景(壁)スプライトの作成 [追加]
  252.   #--------------------------------------------------------------------------
  253.   alias create_battleback2_ParallelBattle create_battleback2
  254.   def create_battleback2
  255.     create_battleback2_ParallelBattle
  256.     return if $BTEST
  257.     if Calt::BACK2_OPACITY >= 0
  258.       @back2_sprite.opacity = Calt::BACK2_OPACITY
  259.     else
  260.       @back2_sprite.opacity = $game_variables[-Calt::BACK2_OPACITY]
  261.     end
  262.   end
  263. end
  264.  
  265. #==============================================================================
  266. # ■ Scene_Map
  267. #------------------------------------------------------------------------------
  268. #  マップ画面の処理を行うクラスです。
  269. #==============================================================================
  270. class Scene_Map < Scene_Base
  271.   #--------------------------------------------------------------------------
  272.   # ● オブジェクト初期化 [新規]
  273.   #-------------------------------------------------------------------------
  274.   def initialize
  275.     $in_battle_running_map = false
  276.     @battle_calling = false
  277.   end
  278.   #--------------------------------------------------------------------------
  279.   # ● 開始処理 [◆再定義]
  280.   #--------------------------------------------------------------------------
  281.   alias start_ParallelBattle start
  282.   def start
  283.     if @battle_calling
  284.       @battle_calling = false # 戦闘モードを解除
  285.       create_message_window
  286.       create_scroll_text_window
  287.       return
  288.     end
  289.     start_ParallelBattle
  290.   end
  291.   #--------------------------------------------------------------------------
  292.   # ● 終了処理 [◆再定義]
  293.   #--------------------------------------------------------------------------
  294.   def terminate
  295.     Graphics.freeze
  296.     if @battle_calling
  297.       @message_window.dispose
  298.       @scroll_text_window.dispose
  299.     else
  300.       dispose_all_windows
  301.       dispose_main_viewport
  302.     end
  303.     SceneManager.snapshot_for_background
  304.     dispose_spriteset unless @battle_calling  # 戦闘モードの場合は解放処理は行わない
  305.     # perform_battle_transition if SceneManager.scene_is?(Scene_Battle)
  306.   end
  307.   #--------------------------------------------------------------------------
  308.   # ● フレーム更新(戦闘中) [新規]
  309.   #--------------------------------------------------------------------------
  310.   def update_battle
  311.     instance_variables.each do |varname|
  312.       ivar = instance_variable_get(varname)
  313.       ivar.update if ivar.is_a?(Window) && !ivar.disposed? && !ivar.is_a?(Window_Message) && !ivar.is_a?(Window_ScrollText)
  314.     end
  315.     $game_map.update(true)
  316.     $game_player.update
  317.     @spriteset.update
  318.     update_transfer_player
  319.   end
  320.   #--------------------------------------------------------------------------
  321.   # ● バトル画面遷移の前処理 [◆再定義]
  322.   #--------------------------------------------------------------------------
  323.   def pre_battle_scene
  324.     Graphics.update
  325.     Graphics.freeze
  326.     @battle_calling = true                  # 戦闘モードに移行
  327.     SceneManager.scene.parent_scene = self  # 戦闘シーンに自身をセット
  328.     # @spriteset.dispose_characters
  329.     BattleManager.save_bgm_and_bgs
  330.     BattleManager.play_battle_bgm
  331.     Sound.play_battle_start
  332.   end
  333.   #--------------------------------------------------------------------------
  334.   # ● 戦闘中の解放処理 [新規]
  335.   #--------------------------------------------------------------------------
  336.   def dispose_battle
  337.     dispose_all_windows
  338.     dispose_main_viewport
  339.     dispose_spriteset
  340.   end
  341. end
  342.  
  343. #==============================================================================
  344. # ■ Scene_Battle
  345. #------------------------------------------------------------------------------
  346. #  バトル画面の処理を行うクラスです。
  347. #==============================================================================
  348. class Scene_Battle < Scene_Base
  349.   #--------------------------------------------------------------------------
  350.   # ● 公開インスタンス変数
  351.   #--------------------------------------------------------------------------
  352.   attr_accessor :parent_scene
  353.   #--------------------------------------------------------------------------
  354.   # ● オブジェクト初期化 [新規]
  355.   #-------------------------------------------------------------------------
  356.   def initialize
  357.     $in_battle_running_map = false
  358.     @parent_scene = nil
  359.   end
  360.   #--------------------------------------------------------------------------
  361.   # ● トランジション実行 [◆再定義]
  362.   #--------------------------------------------------------------------------
  363.   alias perform_transition_ParallelBattle perform_transition
  364.   def perform_transition
  365.     if @parent_scene && $game_switches[Calt::TRANSITION_SWITCH]
  366.       @parent_scene.perform_battle_transition
  367.       Graphics.transition(0)
  368.       # Graphics.transition(60, "Graphics/System/BattleStart", 100)
  369.     else
  370.       perform_transition_ParallelBattle
  371.     end
  372.   end
  373.   #--------------------------------------------------------------------------
  374.   # ● 終了前処理 [◆再定義]
  375.   #--------------------------------------------------------------------------
  376.   def pre_terminate
  377.     super
  378.     Graphics.fadeout(30) if SceneManager.scene_is?(Scene_Map) &&
  379.                             $game_switches[Calt::TRANSITION_SWITCH]
  380.     Graphics.fadeout(60) if SceneManager.scene_is?(Scene_Title)
  381.   end
  382.   #--------------------------------------------------------------------------
  383.   # ● 終了処理 [追加]
  384.   #--------------------------------------------------------------------------
  385.   alias terminate_ParallelBattle terminate
  386.   def terminate
  387.     terminate_ParallelBattle
  388.     if @parent_scene && (SceneManager.scene_is?(Scene_Title) || SceneManager.scene_is?(Scene_Gameover))
  389.       @parent_scene.dispose_battle  # マップのスプライトなどを解放
  390.     end
  391.   end
  392.   #--------------------------------------------------------------------------
  393.   # ● フレーム更新(基本)[◆再定義]
  394.   #--------------------------------------------------------------------------
  395.   def update_basic
  396.     super
  397.     update_map if @parent_scene # 戦闘中のマップ更新
  398.     $game_timer.update
  399.     $game_troop.update
  400.     @spriteset.update
  401.     update_info_viewport
  402.     update_message_open
  403.   end
  404.   #--------------------------------------------------------------------------
  405.   # ● 戦闘中のマップ更新 [新規]
  406.   #--------------------------------------------------------------------------
  407.   def update_map
  408.     $in_battle_running_map = true
  409.     @parent_scene.update_battle
  410.     $in_battle_running_map = false
  411.   end
  412. end

点评

範本下載頁http://canarialt.blog.fc2.com/blog-entry-69.html  发表于 2014-8-30 10:28

评分

参与人数 1星屑 +132 收起 理由
VIPArcher + 132 认可答案

查看全部评分

回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
716
在线时间
532 小时
注册时间
2011-10-3
帖子
2237
7
发表于 2014-8-30 19:00:41 | 只看该作者
  1. #===============================================================
  2. # 本脚本来自www.66rpg.com
  3. # 功能:对于没有设置战斗背景的地图,直接用地图做战斗背景
  4. #===============================================================
  5. class Scene_Battle
  6. alias battleback_map_main main
  7. def main
  8.    @battleback_sprite = Spriteset_Map.new
  9.    battleback_map_main
  10.    @battleback_sprite.dispose
  11. end
  12. end
  13. #===============================================================
  14. # 申请者:张永;脚本作者:bluefool 改善人:亿万星辰
  15. #===============================================================
复制代码

评分

参与人数 1星屑 +200 收起 理由
VIPArcher + 200 。。。

查看全部评分

回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
100 小时
注册时间
2014-6-23
帖子
85
8
 楼主| 发表于 2014-8-30 22:01:05 | 只看该作者

大家的脚本都试了,但是 进入游戏后画面依旧太美我不敢看...


需要把范例发上来嘛?{:2_270:}
回复 支持 反对

使用道具 举报

Lv4.逐梦者 (版主)

无限の剣制

梦石
0
星屑
10073
在线时间
5020 小时
注册时间
2013-2-28
帖子
5030

开拓者贵宾

9
发表于 2014-8-30 22:37:10 | 只看该作者
本帖最后由 VIPArcher 于 2014-8-30 22:38 编辑
Sence 发表于 2014-8-30 22:01
大家的脚本都试了,但是 进入游戏后画面依旧太美我不敢看...

推荐上面taroxd的脚本,因为那个在战斗测试时无效不会出错。
原来是这样的问题,
请在地图设置战斗背景,内容为空。

评分

参与人数 1星屑 +100 收起 理由
taroxd + 100 认可答案

查看全部评分

回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
100 小时
注册时间
2014-6-23
帖子
85
10
 楼主| 发表于 2014-8-30 22:57:41 | 只看该作者
本帖最后由 Sence 于 2014-8-31 01:36 编辑
VIPArcher 发表于 2014-8-30 22:37
推荐上面taroxd的脚本,因为那个在战斗测试时无效不会出错。
原来是这样的问题,
请在地图设置战 ...


哦,原来问题的根源在这里,谢谢,完美解决...还有 帖子得 已经解决  选项 要如何设置。
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-9-26 05:20

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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