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 是一个黑屏的脚本的显示语句,因为背景暗转会涉及到很多改动,而之前有个脚本可以直接使用,我就不一一列举了。直接贴给你去研究吧。
#---------------------------------------------------------------------------
#戦闘背景暗転化スクリプトver.1.11(RTAB用)
#by bant [url]http://homepage2.nifty.com/bant/[/url]
#---------------------------------------------------------------------------
# 特性の属性を設定した武器、スキル、アイテムを使った時に
# 戦闘背景の色調を変更するスクリプトです。
#
# 特に戦闘背景が白い場合(008-Snowfield01など)戦闘アニメが見えなくなってしまう
# ので有効です。
#
# 数値の設定によっては暗くせずに明るくすることも可能です。
# このスクリプトへの質問等は必ず[url]http://homepage2.nifty.com/bant/[/url]内の掲示板にして下さい
# 1.1へのバージョンアップ情報
#
# 軽量化:80~104行目を変更
# 戦闘終了後に暗転フラグをオフにする:121~137行目を追加
#
# 1.11へのバージョンアップ情報
#
# アイテムへの対応:107行目、周辺のコメントアウトを消す
# 戦闘前に暗転フラグをオフにする:138、139行目を追加
#=begin
class Game_Battler
BLACK_ELEMENT = "暗转" # 戦闘背景を暗転化する時にこの名前の属性を設定して下さい
end
class Spriteset_Battle
# 色調がどれぐらいまで変化するかの数値です。具体的にはイベントの色調変化で
# 赤色が-TONE_MARGINALになるまで色調が変化します。
TONE_MARGINAL = 100
# 1フレームで変化する赤、緑、青のカラーバランス調整値です。
# 例えば赤なら1フレームで-BLACK_Rだけ変化します。
BLACK_R = 5
BLACK_G = 5
BLACK_B = 5
# *注意:TONE_MARGINALはそれぞれのカラーバランス調整値で割り切れるように設定して下さい。
end
#==============================================================================
# ■ Game_Temp
#------------------------------------------------------------------------------
# セーブデータに含まれない、一時的なデータを扱うクラスです。このクラスのイン
# スタンスは $game_temp で参照されます。
#==============================================================================
class Game_Temp
attr_accessor :black_flug # ☆暗転用
alias initialize_black_bant initialize
def initialize
initialize_black_bant
@black_flug = false
end
end
#==============================================================================
# ■ Spriteset_Battle
#------------------------------------------------------------------------------
# バトル画面のスプライトをまとめたクラスです。このクラスは Scene_Battle クラ
# スの内部で使用されます。
#==============================================================================
class Spriteset_Battle
alias update_black_bant update
def update
update_black_bant
#if @battleback_sprite.tone.red != -TONE_MARGINAL
if $game_temp.black_flug && @battleback_sprite.tone.red != -TONE_MARGINAL
@battleback_sprite.tone.red -= BLACK_R
@battleback_sprite.tone.green -= BLACK_G
@battleback_sprite.tone.blue -= BLACK_B
#elsif @battleback_sprite.tone.red != 0
elsif !$game_temp.black_flug && @battleback_sprite.tone.red != 0
@battleback_sprite.tone.red += BLACK_R
@battleback_sprite.tone.green += BLACK_G
@battleback_sprite.tone.blue += BLACK_B
end
end
end
#==============================================================================
# ■ Game_Battler (分割定義 3)
#------------------------------------------------------------------------------
# バトラーを扱うクラスです。このクラスは Game_Actor クラスと Game_Enemy クラ
# スのスーパークラスとして使用されます。
#==============================================================================
#=begin
class Game_Battler
alias attack_effect_black_bant attack_effect
def attack_effect(attacker)
if attacker.element_set.include?($data_system.elements.index(BLACK_ELEMENT))
$game_temp.black_flug = true
end
attack_effect_black_bant(attacker)
end
alias skill_effect_black_bant skill_effect
def skill_effect(user, skill)
if skill.element_set.include?($data_system.elements.index(BLACK_ELEMENT))
$game_temp.black_flug = true
end
skill_effect_black_bant(user, skill)
end
alias item_effect_black_bant item_effect
def item_effect(item, user = $game_party.actors[0])
if item.element_set.include?($data_system.elements.index(BLACK_ELEMENT))
$game_temp.black_flug = true
end
item_effect_black_bant(item, user)
end
end
#==============================================================================
# ■ Scene_Battle (分割定義 4)
#------------------------------------------------------------------------------
# バトル画面の処理を行うクラスです。
#==============================================================================
class Scene_Battle
alias update_phase4_step6_black_bant update_phase4_step6
def update_phase4_step6(battler)
if $game_temp.black_flug
$game_temp.black_flug = false
end
update_phase4_step6_black_bant(battler)
end
end
#==============================================================================
# ■ Scene_Battle (分割定義 1)
#------------------------------------------------------------------------------
# バトル画面の処理を行うクラスです。
#==============================================================================
class Scene_Battle
#--------------------------------------------------------------------------
# ● メイン処理
#--------------------------------------------------------------------------
alias main_black_bant main
def main
# 戦闘前に暗転フラグをオフにしておく
$game_temp.black_flug = false
main_black_bant
# 戦闘終了時に暗転フラグをオフにしておく
$game_temp.black_flug = false
end
end
#=end
复制代码
另外,如果使用了技能重击等类似的脚本,也只要找到判断重击的地方把$game_temp.black_flug = true
加上就可以了。���
作者:
zhangbanxian
时间:
2011-12-19 10:42
改成
for battler in $game_party.actors + $game_troop.enemies
@battleback_sprite.tone = Tone.new(0, 0, 0, 0)
@battleback_sprite.color = Color.new(0, 0, 0, 0)
@battleback_sprite.update
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
end
复制代码
- -b脚本从上往下执行...ORZ
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1