king-exit/Scripts/_.47.rb
2024-08-31 14:17:23 -05:00

225 lines
9.2 KiB
Ruby
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#******************************************************************************
#
# ステータスウィンドウ
#
# --------------------------------------------------------------------------
# バージョン 1.0.0
# 対 応 RPGツクールVX Ace : RGSS3
# 制 作 者
# 配 布 元 http://cacaosoft.web.fc2.com/
# --------------------------------------------------------------------------
# == 概 要 ==
#
# デフォルトっぽいステータスです。
#
# --------------------------------------------------------------------------
# == 注意事項 ==
#
# ※ このスクリプトの動作には、Custom Menu Base が必要です。
# ※ 横1列のみの場合は左右に、それ以外は上下のみスクロールします。
#
#
#******************************************************************************
#==============================================================================
# ◆ 設定項目
#==============================================================================
module CAO::CM::Status
#--------------------------------------------------------------------------
# ◇ ウィンドウの位置・サイズ
#--------------------------------------------------------------------------
WINDOW_X = 0 # x座標
WINDOW_Y = 108 # y座標
WINDOW_W = 640 # 横幅
WINDOW_H = 300 # 縦幅
#--------------------------------------------------------------------------
# ◇ 1アクターのサイズ
#--------------------------------------------------------------------------
ITEM_W = 155
ITEM_H = 270
#--------------------------------------------------------------------------
# ◇ 項目を横に並べる数
#--------------------------------------------------------------------------
COLUMN_MAX = 4
#--------------------------------------------------------------------------
# ◇ 表示項目の設定
#--------------------------------------------------------------------------
ITEM_PARAMS = []
ITEM_PARAMS << [:bust, 2, 10]
ITEM_PARAMS << [:pict, -8, -5, "Menu"]
ITEM_PARAMS << [:pict, 24, 50, "Menu2"]
ITEM_PARAMS << [:name, 4, 5, 108]
#ITEM_PARAMS << [:pict, 78, 0, ["mbattler", ""]]
ITEM_PARAMS << [:text, 84, 188, "\\C[16]Lv"]
ITEM_PARAMS << [:num, 110, 180, "'%2d'%actor.level", "mnum"]
ITEM_PARAMS << [:state, 116, 7, 72]
ITEM_PARAMS << [:w_hp, 3, 210, 145]
ITEM_PARAMS << [:w_mp, 3, 240, 145]
#--------------------------------------------------------------------------
# ◇ 戦闘メンバーのみ表示
#--------------------------------------------------------------------------
::CAO::CM::BATTLER_ONLY = false
#--------------------------------------------------------------------------
# ◇ ウィンドウの可視状態
#--------------------------------------------------------------------------
VISIBLE_BACKWINDOW = true
end
#/////////////////////////////////////////////////////////////////////////////#
# #
# 下記のスクリプトを変更する必要はありません。 #
# #
#/////////////////////////////////////////////////////////////////////////////#
class Window_MenuStatus
include CAO::CM::Status
#--------------------------------------------------------------------------
# ○ オブジェクト初期化
#--------------------------------------------------------------------------
def initialize(x, y)
super(WINDOW_X, WINDOW_Y, window_width, window_height)
self.opacity = VISIBLE_BACKWINDOW ? 255 : 0
@canvas = CAO::CM::Canvas.new(self)
@pending_index = -1
refresh
end
#--------------------------------------------------------------------------
# ○ 横に項目が並ぶときの空白の幅を取得
#--------------------------------------------------------------------------
def spacing
return 0
end
#--------------------------------------------------------------------------
# ○ ウィンドウ幅の取得
#--------------------------------------------------------------------------
def window_width
WINDOW_W
end
#--------------------------------------------------------------------------
# ○ ウィンドウ高さの取得
#--------------------------------------------------------------------------
def window_height
WINDOW_H
end
#--------------------------------------------------------------------------
# ○ ウィンドウ内容の幅を計算
#--------------------------------------------------------------------------
def contents_width
(item_width + spacing) * col_max - spacing
end
#--------------------------------------------------------------------------
# ● 項目数の取得
#--------------------------------------------------------------------------
def item_max
$game_party.members.size
end
#--------------------------------------------------------------------------
# ● 桁数の取得
#--------------------------------------------------------------------------
def col_max
return COLUMN_MAX
end
#--------------------------------------------------------------------------
# ○ 項目の幅を取得
#--------------------------------------------------------------------------
def item_width
ITEM_W
end
#--------------------------------------------------------------------------
# ○ 項目の高さを取得
#--------------------------------------------------------------------------
def item_height
ITEM_H
end
#--------------------------------------------------------------------------
# ● 項目の描画
#--------------------------------------------------------------------------
def draw_item(index)
draw_item_background(index)
actor = $game_party.members[index]
rect = item_rect(index)
@canvas.draw_actor_items(actor, rect.x, rect.y, ITEM_PARAMS)
end
#--------------------------------------------------------------------------
# ● カーソルを下に移動
#--------------------------------------------------------------------------
def cursor_down(wrap = false)
if index < item_max - col_max || (wrap && col_max == 1)
select((index + col_max) % item_max)
elsif col_max != 1 && index < (item_max.to_f/col_max).ceil*col_max-col_max
select(item_max - 1)
end
end
end
class Scene_Menu
#--------------------------------------------------------------------------
# ● ステータスウィンドウの作成
#--------------------------------------------------------------------------
def create_status_window
@status_window = Window_MenuStatus.new(0, 0)
end
#--------------------------------------------------------------------------
# ● ステータスウィンドウの更新
#--------------------------------------------------------------------------
def update_status_window
@status_window.unselect unless @status_window.active
end
#--------------------------------------------------------------------------
# ○
#--------------------------------------------------------------------------
alias _cao_cm_status_check_refresh_window check_refresh_window
def check_refresh_window(command)
_cao_cm_status_check_refresh_window(command)
@status_window.refresh if command.refresh.include?(:status)
end
end
class Game_Party < Game_Unit
#--------------------------------------------------------------------------
# ● 公開インスタンス変数
#--------------------------------------------------------------------------
attr_accessor :in_menu # メニュー中フラグ
#--------------------------------------------------------------------------
# ●
#--------------------------------------------------------------------------
def in_menu
return true if SceneManager.scene_is?(Scene_Menu)
return SceneManager.instance_variable_get(:@stack).any? do |obj|
obj.is_a?(Scene_Menu)
end
end
#--------------------------------------------------------------------------
# ○ メンバーの取得
#--------------------------------------------------------------------------
def members
return battle_members if in_battle
return battle_members if CAO::CM::BATTLER_ONLY && in_menu
return all_members
end
end
class Scene_ItemBase < Scene_MenuBase
#--------------------------------------------------------------------------
# ○ サブウィンドウの表示
#--------------------------------------------------------------------------
def show_sub_window(window)
window.x = (Graphics.width - window.width) / 2
window.y = (Graphics.height - window.height) / 2
window.z = @viewport.z# + 1
@last_viewport_color = @viewport.color.dup
@viewport.color.set(16, 16, 16, 128)
window.show.activate
end
#--------------------------------------------------------------------------
# ○ サブウィンドウの非表示
#--------------------------------------------------------------------------
def hide_sub_window(window)
@viewport.color.set(@last_viewport_color) if @last_viewport_color
window.hide.deactivate
activate_item_window
end
end