Project1
标题:
幫改RGSS.....
[打印本页]
作者:
ms0688987
时间:
2010-9-9 17:21
标题:
幫改RGSS.....
這個RGSS是進入戰斗執行攻擊的時候上面才會出現狀態信息
哪位可以改成一進入戰斗就顯示阿....
#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
#_/ ◆ オンスクリーンステータス - KGC_OnScreenStatus ◆ VX ◆
#_/ ◇ Last update : 2009/01/02 ◇
#_/----------------------------------------------------------------------------
#_/ 戦闘行動中、画面上にアクターのステータスを表示します。
#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
#==============================================================================
# ★ カスタマイズ項目 - Customize BEGIN ★
#==============================================================================
module KGC
module OnScreenStatus
# ◆ ウィンドウの配置
# 0..左揃え、1..中央揃え、2..右揃え
WINDOW_ALIGN = 0
# ◆ アクター一人分の横幅
WIDTH_PER_ACTOR = 92
# ◆ MP を表示する
SHOW_MP = true
# ◆ ステートを表示する
SHOW_STATE = false
# ◆ 消費した MP を反映するタイミング
# 0..スキル発動時 1..行動終了後
# 0 にしてバグる場合は 1 を使用してください。
SKILL_MP_COST_APPLY_TIMING = 0
end
end
#==============================================================================
# ☆ カスタマイズ項目終了 - Customize END ☆
#==============================================================================
$imported = {} if $imported == nil
$imported["OnScreenStatus"] = true
#==============================================================================
# □ Window_OnScreenBattleStatus
#------------------------------------------------------------------------------
# 戦闘行動中にパーティメンバーのステータスを表示するウィンドウです。
#==============================================================================
class Window_OnScreenBattleStatus < Window_Selectable
#--------------------------------------------------------------------------
# ● オブジェクト初期化
#--------------------------------------------------------------------------
def initialize
wh = 32 + WLH * 2
wh += WLH if KGC::OnScreenStatus::SHOW_MP
wh += WLH if KGC::OnScreenStatus::SHOW_STATE
super(0, 0, 64, wh, 8)
@item_max = 0
@column_max = 1
refresh
self.back_opacity = 160
self.openness = 0
self.active = false
end
#--------------------------------------------------------------------------
# ● 名前の描画
# actor : アクター
# x : 描画先 X 座標
# y : 描画先 Y 座標
# width : 幅
#--------------------------------------------------------------------------
def draw_actor_name(actor, x, y, width = 108)
if $imported["OverDrive"]
draw_actor_od_gauge(actor, x, y, width)
end
self.contents.font.color = hp_color(actor)
self.contents.draw_text(x, y, width, WLH, actor.name)
end
#--------------------------------------------------------------------------
# ● 項目を描画する矩形の取得
# index : 項目番号
#--------------------------------------------------------------------------
def item_rect(index)
rect = Rect.new(0, 0, KGC::OnScreenStatus::WIDTH_PER_ACTOR, height - 32)
rect.x = index % @column_max * (rect.width + @spacing)
return rect
end
#--------------------------------------------------------------------------
# ● リフレッシュ
#--------------------------------------------------------------------------
def refresh
last_item_max = @item_max
@item_max = $game_party.members.size
if @item_max != last_item_max
# メンバー数が変化したらウィンドウサイズ変更
self.width =
(KGC::OnScreenStatus::WIDTH_PER_ACTOR + @spacing) * @item_max + 32
@column_max = @item_max
create_contents
else
self.contents.clear
end
@item_max.times { |i| draw_item(i) }
# 表示座標調整
case KGC::OnScreenStatus::WINDOW_ALIGN
when 0
self.x = 0
when 1
self.x = (Graphics.width - self.width) / 2
when 2
self.x = Graphics.width - self.width
end
end
#--------------------------------------------------------------------------
# ● 項目の描画
# index : 項目番号
#--------------------------------------------------------------------------
def draw_item(index)
rect = item_rect(index)
self.contents.clear_rect(rect)
self.contents.font.color = normal_color
actor = $game_party.members[index]
cw = KGC::OnScreenStatus::WIDTH_PER_ACTOR
draw_actor_name(actor, rect.x, rect.y, cw)
rect.y += WLH
draw_actor_hp(actor, rect.x, rect.y, cw)
if KGC::OnScreenStatus::SHOW_MP
rect.y += WLH
draw_actor_mp(actor, rect.x, rect.y, cw)
end
if KGC::OnScreenStatus::SHOW_STATE
rect.y += WLH
draw_actor_state(actor, rect.x, rect.y, cw)
end
end
#--------------------------------------------------------------------------
# ○ 再描画
# actor : 対象アクター
#--------------------------------------------------------------------------
def redraw(actor)
draw_item(actor.index)
end
end
#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
#==============================================================================
# ■ Scene_Battle
#==============================================================================
class Scene_Battle < Scene_Base
#--------------------------------------------------------------------------
# ● 開始処理
#--------------------------------------------------------------------------
alias start_KGC_OnScreenStatus start
def start
# オンスクリーンウィンドウを作成
@onscreen_status_window = Window_OnScreenBattleStatus.new
@onscreen_status_refresh_request = false
start_KGC_OnScreenStatus
end
#--------------------------------------------------------------------------
# ● 終了処理
#--------------------------------------------------------------------------
alias terminate_KGC_OnScreenStatus terminate
def terminate
@onscreen_status_window.dispose
terminate_KGC_OnScreenStatus
end
#--------------------------------------------------------------------------
# ● 基本更新処理
# main : メインの update メソッドからの呼び出し
#--------------------------------------------------------------------------
alias update_basic_KGC_OnScreenStatus update_basic
def update_basic(main = false)
update_basic_KGC_OnScreenStatus(main)
if $game_troop.interpreter.running?
@onscreen_status_window.close
@onscreen_status_refresh_request = true
end
@onscreen_status_window.update
end
#--------------------------------------------------------------------------
# ● 戦闘処理の実行開始
#--------------------------------------------------------------------------
alias start_main_KGC_OnScreenStatus start_main
def start_main
@onscreen_status_window.refresh
start_main_KGC_OnScreenStatus
end
#--------------------------------------------------------------------------
# ● 戦闘行動の処理
#--------------------------------------------------------------------------
alias process_action_KGC_OnScreenStatus process_action
def process_action
if @onscreen_status_refresh_request
@onscreen_status_window.refresh
@onscreen_status_refresh_request = false
end
@onscreen_status_window.open
process_action_KGC_OnScreenStatus
update_onscreen_status(@active_battler)
end
#--------------------------------------------------------------------------
# ● ターン終了
#--------------------------------------------------------------------------
alias turn_end_KGC_OnScreenStatus turn_end
def turn_end
@onscreen_status_window.close
turn_end_KGC_OnScreenStatus
end
#--------------------------------------------------------------------------
# ● 戦闘行動の実行 : スキル
#--------------------------------------------------------------------------
alias execute_action_skill_KGC_OnScreenStatus execute_action_skill
def execute_action_skill
# 行動前に MP を反映する場合
if KGC::OnScreenStatus::SKILL_MP_COST_APPLY_TIMING == 0
# MP を仮消費してステータスを更新
last_mp = @active_battler.mp
skill = @active_battler.action.skill
@active_battler.mp -= @active_battler.calc_mp_cost(skill)
update_onscreen_status(@active_battler)
# 消費前に戻す
@active_battler.mp = last_mp
end
execute_action_skill_KGC_OnScreenStatus
# 行動後に MP を反映する場合
if KGC::OnScreenStatus::SKILL_MP_COST_APPLY_TIMING == 1
update_onscreen_status(@active_battler)
end
end
#--------------------------------------------------------------------------
# ○ オンスクリーンステータスを更新
# target : 対象者
#--------------------------------------------------------------------------
def update_onscreen_status(target)
if target.is_a?(Game_Actor)
@onscreen_status_window.redraw(target)
elsif $imported["CooperationSkill"] &&
target.is_a?(Game_CooperationBattler)
@onscreen_status_window.refresh
end
end
#--------------------------------------------------------------------------
# ● HP ダメージ表示
# target : 対象者
# obj : スキルまたはアイテム
#--------------------------------------------------------------------------
alias display_hp_damage_KGC_OnScreenStatus display_hp_damage
def display_hp_damage(target, obj = nil)
update_onscreen_status(target)
if target.absorbed
# 吸収の場合は行動者も更新
update_onscreen_status(@active_battler)
end
display_hp_damage_KGC_OnScreenStatus(target, obj)
end
#--------------------------------------------------------------------------
# ● MP ダメージ表示
# target : 対象者
# obj : スキルまたはアイテム
#--------------------------------------------------------------------------
alias display_mp_damage_KGC_OnScreenStatus display_mp_damage
def display_mp_damage(target, obj = nil)
update_onscreen_status(target)
if target.absorbed
# 吸収の場合は行動者も更新
update_onscreen_status(@active_battler)
end
display_mp_damage_KGC_OnScreenStatus(target, obj)
end
#--------------------------------------------------------------------------
# ● ステート変化の表示
# target : 対象者
# obj : スキルまたはアイテム
#--------------------------------------------------------------------------
alias display_state_changes_KGC_OnScreenStatus display_state_changes
def display_state_changes(target, obj = nil)
update_onscreen_status(target)
display_state_changes_KGC_OnScreenStatus(target, obj)
end
end
复制代码
作者:
summer92
时间:
2010-9-9 19:20
- -这个还是外包比较好,学好脚本比较难挨
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1