Project1

标题: 【XP】RTAB背景改變 [打印本页]

作者: f26401004    时间: 2011-12-18 14:15
标题: 【XP】RTAB背景改變
自己有寫了一段放在 Spriteset_Battle 的 def update 裡:
    for battler in $game_party.actors + $game_troop.enemies
      if battler.critical.size > 0
        for i in 0...battler.critical.size
          @battleback_sprite.tone = Tone.new(0, 0, 0, 200) if battler.critical[i] == true
          @battleback_sprite.color = Color.new(80, 80, 80, 100) if battler.critical[i] == true
          @battleback_sprite.update
        end
      end
      @battleback_sprite.tone = Tone.new(0, 0, 0, 0)
      @battleback_sprite.color = Color.new(0, 0, 0, 0)
      @battleback_sprite.update
    end

是想做成「如果會心一擊,畫面顏色更變一下」
但好像不行,求指教。
dsu_plus_rewardpost_czw
作者: dbshy    时间: 2011-12-18 23:49
本帖最后由 dbshy 于 2011-12-19 09:34 编辑

你的脚本有问题
不管是true或是false 都会执行,所以没效果 = =
@battleback_sprite.tone = Tone.new(0, 0, 0, 0)
@battleback_sprite.color = Color.new(0, 0, 0, 0)
用if  else来判断

作者: 羞射了    时间: 2011-12-19 02:41
本帖最后由 月夜神音 于 2011-12-19 09:45 编辑

讲一下思路,

首先判断攻击或技能是否重击并不是在Sprite里,而是在Game_Battler3里判断的
battler.critical那个并不是用来判断重击的标志。

我不知道你是否使用技能重击等附加脚本,默认是只有普攻会出重击;
然后实际判断重击是在def attack_effect(attacker)找到:
        # クリティカル修正
        if rand(100) < 4 * attacker.dex / self.agi
          self.damage[attacker] *= 2
          self.critical[attacker] = true
          以上就是判断重击的位置
          $game_temp.black_flug = true

        end

$game_temp.black_flug = true 是一个黑屏的脚本的显示语句,因为背景暗转会涉及到很多改动,而之前有个脚本可以直接使用,我就不一一列举了。直接贴给你去研究吧。
  1. #---------------------------------------------------------------------------
  2. #戦闘背景暗転化スクリプトver.1.11(RTAB用)
  3. #by bant [url]http://homepage2.nifty.com/bant/[/url]
  4. #---------------------------------------------------------------------------
  5. # 特性の属性を設定した武器、スキル、アイテムを使った時に
  6. # 戦闘背景の色調を変更するスクリプトです。
  7. #
  8. # 特に戦闘背景が白い場合(008-Snowfield01など)戦闘アニメが見えなくなってしまう
  9. # ので有効です。
  10. #
  11. # 数値の設定によっては暗くせずに明るくすることも可能です。
  12. # このスクリプトへの質問等は必ず[url]http://homepage2.nifty.com/bant/[/url]内の掲示板にして下さい
  13. # 1.1へのバージョンアップ情報
  14. #
  15. # 軽量化:80~104行目を変更
  16. # 戦闘終了後に暗転フラグをオフにする:121~137行目を追加
  17. #
  18. # 1.11へのバージョンアップ情報
  19. #
  20. # アイテムへの対応:107行目、周辺のコメントアウトを消す
  21. # 戦闘前に暗転フラグをオフにする:138、139行目を追加
  22. #=begin
  23. class Game_Battler
  24.   BLACK_ELEMENT = "暗转" # 戦闘背景を暗転化する時にこの名前の属性を設定して下さい
  25. end
  26. class Spriteset_Battle
  27. # 色調がどれぐらいまで変化するかの数値です。具体的にはイベントの色調変化で
  28. # 赤色が-TONE_MARGINALになるまで色調が変化します。
  29.   TONE_MARGINAL = 100
  30. # 1フレームで変化する赤、緑、青のカラーバランス調整値です。
  31. # 例えば赤なら1フレームで-BLACK_Rだけ変化します。
  32.   BLACK_R = 5
  33.   BLACK_G = 5
  34.   BLACK_B = 5
  35. # *注意:TONE_MARGINALはそれぞれのカラーバランス調整値で割り切れるように設定して下さい。
  36. end

  37. #==============================================================================
  38. # ■ Game_Temp
  39. #------------------------------------------------------------------------------
  40. #  セーブデータに含まれない、一時的なデータを扱うクラスです。このクラスのイン
  41. # スタンスは $game_temp で参照されます。
  42. #==============================================================================

  43. class Game_Temp
  44.   attr_accessor :black_flug               # ☆暗転用
  45.   alias initialize_black_bant initialize
  46.   def initialize
  47.     initialize_black_bant
  48.     @black_flug = false
  49.   end
  50. end

  51. #==============================================================================
  52. # ■ Spriteset_Battle
  53. #------------------------------------------------------------------------------
  54. #  バトル画面のスプライトをまとめたクラスです。このクラスは Scene_Battle クラ
  55. # スの内部で使用されます。
  56. #==============================================================================

  57. class Spriteset_Battle
  58.   alias update_black_bant update
  59.   def update
  60.     update_black_bant
  61.     #if @battleback_sprite.tone.red != -TONE_MARGINAL
  62.     if $game_temp.black_flug && @battleback_sprite.tone.red != -TONE_MARGINAL
  63.       @battleback_sprite.tone.red -= BLACK_R
  64.       @battleback_sprite.tone.green -= BLACK_G
  65.       @battleback_sprite.tone.blue -= BLACK_B
  66.     #elsif @battleback_sprite.tone.red != 0
  67.     elsif !$game_temp.black_flug && @battleback_sprite.tone.red != 0
  68.       @battleback_sprite.tone.red += BLACK_R
  69.       @battleback_sprite.tone.green += BLACK_G
  70.       @battleback_sprite.tone.blue += BLACK_B
  71.     end
  72.   end
  73. end
  74. #==============================================================================
  75. # ■ Game_Battler (分割定義 3)
  76. #------------------------------------------------------------------------------
  77. #  バトラーを扱うクラスです。このクラスは Game_Actor クラスと Game_Enemy クラ
  78. # スのスーパークラスとして使用されます。
  79. #==============================================================================
  80. #=begin
  81. class Game_Battler
  82.   alias attack_effect_black_bant attack_effect
  83.   def attack_effect(attacker)
  84.     if attacker.element_set.include?($data_system.elements.index(BLACK_ELEMENT))
  85.       $game_temp.black_flug = true
  86.     end
  87.     attack_effect_black_bant(attacker)
  88.   end
  89.   
  90.   alias skill_effect_black_bant skill_effect
  91.   def skill_effect(user, skill)
  92.     if skill.element_set.include?($data_system.elements.index(BLACK_ELEMENT))
  93.       $game_temp.black_flug = true
  94.     end
  95.     skill_effect_black_bant(user, skill)
  96.   end
  97.   alias item_effect_black_bant item_effect
  98.   def item_effect(item, user = $game_party.actors[0])
  99.     if item.element_set.include?($data_system.elements.index(BLACK_ELEMENT))
  100.       $game_temp.black_flug = true
  101.     end
  102.     item_effect_black_bant(item, user)
  103.   end
  104. end

  105. #==============================================================================
  106. # ■ Scene_Battle (分割定義 4)
  107. #------------------------------------------------------------------------------
  108. #  バトル画面の処理を行うクラスです。
  109. #==============================================================================

  110. class Scene_Battle
  111.   alias update_phase4_step6_black_bant update_phase4_step6
  112.   def update_phase4_step6(battler)
  113.     if $game_temp.black_flug
  114.       $game_temp.black_flug = false
  115.     end
  116.     update_phase4_step6_black_bant(battler)
  117.   end
  118. end
  119. #==============================================================================
  120. # ■ Scene_Battle (分割定義 1)
  121. #------------------------------------------------------------------------------
  122. #  バトル画面の処理を行うクラスです。
  123. #==============================================================================

  124. class Scene_Battle
  125.   #--------------------------------------------------------------------------
  126.   # ● メイン処理
  127.   #--------------------------------------------------------------------------
  128.   alias main_black_bant main
  129.   def main
  130.     # 戦闘前に暗転フラグをオフにしておく
  131.     $game_temp.black_flug = false
  132.     main_black_bant
  133.     # 戦闘終了時に暗転フラグをオフにしておく
  134.     $game_temp.black_flug = false
  135.   end
  136. end
  137. #=end
复制代码
另外,如果使用了技能重击等类似的脚本,也只要找到判断重击的地方把$game_temp.black_flug = true
加上就可以了。���
作者: zhangbanxian    时间: 2011-12-19 10:42
改成
  1. for battler in $game_party.actors + $game_troop.enemies
  2.       @battleback_sprite.tone = Tone.new(0, 0, 0, 0)
  3.       @battleback_sprite.color = Color.new(0, 0, 0, 0)
  4.       @battleback_sprite.update
  5.       if battler.critical.size > 0
  6.         for i in 0...battler.critical.size
  7.           @battleback_sprite.tone = Tone.new(0, 0, 0, 200) if battler.critical[i] == true
  8.           @battleback_sprite.color = Color.new(80, 80, 80, 100) if battler.critical[i] == true
  9.           @battleback_sprite.update
  10.         end
  11.       end
  12.     end
复制代码
- -b脚本从上往下执行...ORZ




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