Project1

标题: 关于RTAB等待动画开关的问题 [打印本页]

作者: jiushiainilip19    时间: 2017-7-12 21:02
标题: 关于RTAB等待动画开关的问题
先上脚本,这是部分的
RUBY 代码复制
  1. class Scene_Battle
  2.   #--------------------------------------------------------------------------
  3.   # ● 公開インスタンス変数
  4.   #--------------------------------------------------------------------------
  5.   attr_reader   :status_window            # ステータスウィンドウ
  6.   attr_reader   :spriteset                # バトルスプライト
  7.   attr_reader   :scroll_time              # スクリーン移動基本時間
  8.   attr_reader   :zoom_rate                # 敵バトラー基本位置
  9.   attr_reader   :drive                    # カメラ駆動
  10.   attr_accessor :force                    # アクション強制度
  11.   attr_accessor :camera                   # 現在のカメラ所持者
  12.   #--------------------------------------------------------------------------
  13.   # ● ATB基礎セットアップ
  14.   #--------------------------------------------------------------------------
  15.   def atb_setup
  16.     # ATB初期化
  17.     # speed   : バトルスピード決定。値が小さいほど早い
  18.     # @active : アクティブ度設定
  19.     #           3 : 常にアクティブ状態
  20.     #           2 : スキル・アイテム選択中のみアクティブゲージが止まる
  21.     #           1 : 2の状態に加え、ターゲット選択時もウェイトが掛かる
  22.     #           0 : 1の状態に加え、コマンド入力時にもウェイトが掛かる
  23.     # @action : 他人が行動中に自分も行動を起こすことを許すか
  24.     #           3 : 自分が行動不能でない限り限り許す
  25.     #           2 : 自分がダメージを受けていない限り許す
  26.     #           1 : 2の状態に加え、ターゲットが行動していない限り許す
  27.     #           0 : 行動を許さない。順番に行動し終えるまで待つ
  28.     # @anime_wait : trueにするとバトルアニメ・ダメージ表示中はウェイトが掛かる
  29.     # @damage_wait : ダメージ表示待ち時間(単位はフレーム)
  30.     # @enemy_speed : 敵の思考速度。1なら即時行動。
  31.     #                1フレーム毎に、1/@enemy_speedの確率で行動を起こす
  32.     # [url=home.php?mod=space&uid=316545]@force[/url] : 強制アクションでスキル使用時の強制具合
  33.     #          2:スキルは全て詠唱せず、必ず即時実行
  34.     #          1:単独スキルは詠唱し、連携スキルのみ即時実行
  35.     #          0:全スキル詠唱を行うだけ
  36.     # ($scene.force = x とすることにより、通常イベントのスクリプトから変更可能)
  37.     # [url=home.php?mod=space&uid=2639411]@DRIVE[/url] : カメラ駆動ON/OFF。trueで駆動ON、falseで駆動OFF
  38.     # @scroll_time : スクリーン移動に要する基本時間
  39.     # @zoom_rate = [i, j] : エネミーのズーム率
  40.     #                       i が画面最上部に配置した時の拡大率
  41.     #                       j が画面最下部に配置した時の拡大率
  42.     #                       1 倍としたいときも、1.0 と必ず小数で設定すること
  43.     speed = 100
  44.     @active = 3
  45.     @action = 3
  46.     @anime_wait = false#true#false
  47.     @damage_wait = 10
  48.     @enemy_speed = 10
  49.     @force = 2
  50.     @drive = false
  51.     @scroll_time = 15
  52.     @zoom_rate = [0.2, 1.0]
  53.     @help_time = 40
  54.     @escape == false
  55.     @camera = nil
  56.     [url=home.php?mod=space&uid=25307]@Max[/url] = 0
  57.     @turn_cnt = 0
  58.     @help_wait = 0
  59.     @action_battlers = []
  60.     @synthe = []
  61.     @spell_p = {}
  62.     @spell_e = {}
  63.     @command_a = false
  64.     @command = []
  65.     @party = false
  66.     for battler in $game_party.actors + $game_troop.enemies
  67.       spell_reset(battler)
  68.       battler.at = battler.agi * rand(speed / 2)
  69.       battler.damage_pop = {}
  70.       battler.damage = {}
  71.       battler.damage_sp = {}
  72.       battler.critical = {}
  73.       battler.recover_hp = {}
  74.       battler.recover_sp = {}
  75.       battler.state_p = {}
  76.       battler.state_m = {}
  77.       battler.animation = []
  78.       if battler.is_a?(Game_Actor)
  79.         @max += battler.agi
  80.       end
  81.     end
  82.     @max *= speed
  83.     @max /= $game_party.actors.size
  84.     for battler in $game_party.actors + $game_troop.enemies
  85.       battler.atp = 100 * battler.at / @max
  86.     end
  87.   end
  88.   #--------------------------------------------------------------------------
  89.   # ● ATゲージMax時SE
  90.   #--------------------------------------------------------------------------
  91.   def fullat_se
  92.     Audio.se_play("Audio/SE/033-switch02", 80, 100)
  93.   end
  94.   #--------------------------------------------------------------------------
  95.   # ● レベルアップSE
  96.   #--------------------------------------------------------------------------
  97.   def levelup_se
  98.     Audio.se_play("Audio/SE/056-Right02", 80, 100)
  99.   end
  100.   #--------------------------------------------------------------------------
  101.   # ● スキル習得SE
  102.   #--------------------------------------------------------------------------
  103.   def skill_se
  104.     Audio.se_play("Audio/SE/056-Right02", 80, 150)
  105.   end
  106. end
  107.  
  108. class Window_Base < Window
  109.   #--------------------------------------------------------------------------
  110.   # ● ATG の描画
  111.   #     actor : アクター
  112.   #     x     : 描画先 X 座標
  113.   #     y     : 描画先 Y 座標
  114.   #     width : 描画先の幅
  115.   #--------------------------------------------------------------------------
  116.   def draw_actor_atg(actor, x, y, width = 144)
  117.     if @at_gauge == nil
  118.       # plus_x:X座標の位置補正 rate_x:X座標の位置補正(%) plus_y:Y座標の位置補正
  119.       # plus_width:幅の補正 rate_width:幅の補正(%) height:縦幅
  120.       # align1:描画タイプ1 0:左詰め 1:中央揃え 2:右詰め
  121.       # align2:描画タイプ2 0:上詰め 1:中央揃え 2:下詰め
  122.       # align3:ゲージタイプ 0:左詰め 1:右詰め
  123.       @plus_x = 0
  124.       @rate_x = 0
  125.       @plus_y = 16
  126.       @plus_width = 0
  127.       @rate_width = 100
  128.       @width = @plus_width + width * @rate_width / 100
  129.       [url=home.php?mod=space&uid=291977]@height[/url] = 16
  130.       @align1 = 0
  131.       @align2 = 1
  132.       @align3 = 0
  133.       # グラデーション設定 grade1:空ゲージ grade2:実ゲージ
  134.       # (0:横にグラデーション 1:縦にグラデーション 2:斜めにグラデーション)
  135.       grade1 = 1
  136.       grade2 = 0
  137.       # 色設定。color1:最外枠,color2:中枠
  138.       # color3:空枠ダークカラー,color4:空枠ライトカラー
  139.       color1 = Color.new(0, 0, 0)
  140.       color2 = Color.new(255, 255, 192)
  141.       color3 = Color.new(0, 0, 0, 192)
  142.       color4 = Color.new(0, 0, 64, 192)
  143.       # ゲージの色設定
  144.       # 通常時の色設定
  145.       color5 = Color.new(0, 64, 80)
  146.       color6 = Color.new(0, 128, 160)
  147.       # ゲージがMAXの時の色設定
  148.       color7 = Color.new(80, 0, 0)
  149.       color8 = Color.new(240, 0, 0)
  150.       # 連携スキル使用時の色設定
  151.       color9 = Color.new(80, 64, 32)
  152.       color10 = Color.new(240, 192, 96)
  153.       # スキル詠唱時の色設定
  154.       color11 = Color.new(80, 0, 64)
  155.       color12 = Color.new(240, 0, 192)
  156.       # ゲージの描画
  157.       gauge_rect_at(@width, @height, @align3, color1, color2,
  158.                   color3, color4, color5, color6, color7, color8,
  159.                   color9, color10, color11, color12, grade1, grade2)
  160.     end
  161.     # 変数atに描画するゲージの幅を代入
  162.     if actor.rtp == 0
  163.       at = (width + @plus_width) * actor.atp * @rate_width / 10000
  164.     else
  165.       at = (width + @plus_width) * actor.rt * @rate_width / actor.rtp / 100
  166.     end
  167.     if at > width
  168.       at = width
  169.     end
  170.     # ゲージの左詰・中央構え等の補正
  171.     case @align1
  172.     when 1
  173.       x += (@rect_width - width) / 2
  174.     when 2
  175.       x += @rect_width - width
  176.     end
  177.     case @align2
  178.     when 1
  179.       y -= @height / 2
  180.     when 2
  181.       y -= @height
  182.     end
  183.     self.contents.blt(x + @plus_x + width * @rate_x / 100, y + @plus_y,
  184.                       @at_gauge, Rect.new(0, 0, @width, @height))
  185.     if @align3 == 0
  186.       rect_x = 0
  187.     else
  188.       x += @width - at - 1
  189.       rect_x = @width - at - 1
  190.     end
  191.     # ゲージの色設定
  192.     if at == width
  193.         # MAX時のゲージ描画
  194.       self.contents.blt(x + @plus_x + @width * @rate_x / 100, y + @plus_y,
  195.                         @at_gauge, Rect.new(rect_x, @height * 2, at, @height))
  196.     else
  197.       if actor.rtp == 0
  198.         # 通常時のゲージ描画
  199.         self.contents.blt(x + @plus_x + @width * @rate_x / 100, y + @plus_y,
  200.                           @at_gauge, Rect.new(rect_x, @height, at, @height))
  201.       else
  202.         if actor.spell == true
  203.           # 連携スキル使用時のゲージ描画
  204.           self.contents.blt(x + @plus_x + @width * @rate_x / 100, y + @plus_y,
  205.                         @at_gauge, Rect.new(rect_x, @height * 3, at, @height))
  206.         else
  207.           # スキル詠唱時のゲージ描画
  208.           self.contents.blt(x + @plus_x + @width * @rate_x / 100, y + @plus_y,
  209.                         @at_gauge, Rect.new(rect_x, @height * 4, at, @height))
  210.         end
  211.       end
  212.     end
  213.   end
  214. end


这上面有个 @anime_wait =
是控制技能释放时候是否等待动画结束的
但是不能临时更改,我就想在使用某些ID技能的时候进行等待
其他技能不等待!

下面是RTAB定义这个地方
RUBY 代码复制
  1. def anime_wait_return
  2.     if (@action_battlers.empty? or @anime_wait == false) and
  3.         not $game_system.battle_interpreter.running? and not fin?
  4.       # エネミーアローが有効の場合
  5.       if @enemy_arrow != nil
  6.         return [@active - 2, 0].min == 0
  7.       # アクターアローが有効の場合
  8.       elsif @actor_arrow != nil
  9.         return [@active - 2, 0].min == 0
  10.       # スキルウィンドウが有効の場合
  11.       elsif @skill_window != nil
  12.         return [@active - 3, 0].min == 0
  13.       # アイテムウィンドウが有効の場合
  14.       elsif @item_window != nil
  15.         return [@active - 3, 0].min == 0
  16.       # アクターコマンドウィンドウが有効の場合
  17.       elsif @actor_command_window.active
  18.         return [@active - 1, 0].min == 0
  19.       else
  20.         return true
  21.       end
  22.     else
  23.       return false
  24.     end
  25.   end


我用的是图书馆那个以前很老版本的RTAB!

知道的大神求告知一下··!!!!!

不想用豪华版本的!




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