RGSS2(VX製)デフォルトの装備画面を改良したい
Posted: 2020年11月11日(水) 19:31
色々ごちゃごちゃしていて、すみません…。
2枚目の画像のような装備画面にしたいのですが、KGC様の「ヘルプウィンドウ拡張機能」を使っていて、VXデフォルトから、改良を試みたものの1枚目の画像になりました。
そこから、選択で縦一列の状態から、横に移動?選択?が可能にすることができなく、力尽きました。
なるべく、デフォルト(VX)から起用したいです。
[attachment=0]5235325.png[/attachment]
KGC様のヘルプウィンドウ拡張機能 にある、装備画面を改良したものです。
[color=#FF80BF]140行[/color]
[code]
#==============================================================================
# ■ Scene_Equip
#==============================================================================
class Scene_Equip < Scene_Base
#--------------------------------------------------------------------------
# ● 開始処理
#--------------------------------------------------------------------------
alias start_KGC_HelpExtension start
def start
start_KGC_HelpExtension
adjust_window_size
end
#--------------------------------------------------------------------------
# ● ウィンドウサイズ調整
#--------------------------------------------------------------------------
def adjust_window_size
@help_window.row_max = KGC::HelpExtension::ROW_MAX
@equip_window.y = 174 #@help_window.height
@status_window.y = @help_window.height
resize_item_windows
end
#--------------------------------------------------------------------------
# ● アイテムウィンドウのサイズ変更
#--------------------------------------------------------------------------
def resize_item_windows
@item_windows.each { |w|
dy = @help_window.height + @equip_window.height
w.y = dy
w.height = Graphics.height + dy
w.refresh
}
end
end
[/code]
[color=#FF80BF]175行[/color]
下記は、デフォルトのEquipです。(デフォルトのまま全て貼り付けてます)
[code]
#==============================================================================
# ■ Window_Equip
#------------------------------------------------------------------------------
# 装備画面で、アクターが現在装備しているアイテムを表示するウィンドウです。
#==============================================================================
class Window_Equip < Window_Selectable
#--------------------------------------------------------------------------
# ● オブジェクト初期化
# x : ウィンドウの X 座標
# y : ウィンドウの Y 座標
# actor : アクター
#--------------------------------------------------------------------------
def initialize(x, y, actor)
super(0, y, 544, 100)#(x, y, 336, WLH * 5 + 32)装備可能アイテム一覧ウィンドウ
@actor = actor
refresh
self.index = 0
end
#--------------------------------------------------------------------------
# ● アイテムの取得
#--------------------------------------------------------------------------
def item
return @data[self.index]
end
#--------------------------------------------------------------------------
# ● リフレッシュ
#--------------------------------------------------------------------------
def refresh
self.contents.clear
@data = []
for item in @actor.equips do @data.push(item) end
@item_max = @data.size
self.contents.font.color = system_color
if @actor.two_swords_style
self.contents.draw_text(4, WLH * 0, 92, WLH, Vocab::weapon1)#4, WLH * 0, 92, WLH
self.contents.draw_text(4, WLH * 1, 92, WLH, Vocab::weapon2)
else
self.contents.draw_text(4, WLH * 0, 92, WLH, Vocab::weapon)
self.contents.draw_text(4, WLH * 1, 92, WLH, Vocab::armor1)
end
self.contents.draw_text(4, WLH * 2, 92, WLH, Vocab::armor2)#4, WLH * 2, 92
self.contents.draw_text(4, WLH * 3, 92, WLH, Vocab::armor3)
self.contents.draw_text(180, 20, 92, WLH, Vocab::armor4)#4, WLH * 4, 92, WLH,
draw_item_name(@data[0], 92, WLH * 0)
draw_item_name(@data[1], 92, WLH * 0)#1
draw_item_name(@data[2], 92, WLH * 1)#2
draw_item_name(@data[3], 92, WLH * 1)#3
draw_item_name(@data[4], 92, WLH * 2)#4
end
#--------------------------------------------------------------------------
# ● ヘルプテキスト更新
#--------------------------------------------------------------------------
def update_help
@help_window.set_text(item == nil ? "" : item.description)
end
end
[/code]
下記、デフォルトのEquipStatusです。(デフォルトのまま全て貼り付けてます)
[code]
#==============================================================================
# ■ Window_EquipStatus
#------------------------------------------------------------------------------
# 装備画面で、アクターの能力値変化を表示するウィンドウです。
#==============================================================================
class Window_EquipStatus < Window_Base
#--------------------------------------------------------------------------
# ● オブジェクト初期化
# x : ウィンドウの X 座標
# y : ウィンドウの Y 座標
# actor : アクター
#--------------------------------------------------------------------------
def initialize(x, y, actor)
super(x, y, 544, 99)#(x, y, 208, WLH * 5 + 32)255 99
@actor = actor
refresh
end
#--------------------------------------------------------------------------
# ○ リフレッシュ
#--------------------------------------------------------------------------
def refresh
self.contents.clear
draw_actor_name(@actor, 4, 0)#4, 0
draw_parameter(0, WLH * 1, 0) # 攻撃 (0, WLH * 2, 0)
draw_parameter(255, 22, 1) # 防御 (0, WLH * 2, 1)
draw_parameter(0, 46, 2) # 魔攻 (0, WLH * 2, 2)
draw_parameter(255, 46, 3) # 速さ (0, WLH * 2, 3)
draw_basic_info(0, 0)
#draw_parameter(0, WLH * 5, 4)#追加
#draw_parameter(0, WLH * 6, 5)#追加
end
#--------------------------------------------------------------------------
# ● 装備変更後の能力値設定
# new_atk : 装備変更後の攻撃力
# new_def : 装備変更後の防御力
# new_spi : 装備変更後の精神力
# new_agi : 装備変更後の敏捷性
#--------------------------------------------------------------------------
def set_new_parameters(new_atk, new_def, new_spi, new_agi)
if @new_atk != new_atk or @new_def != new_def or
@new_spi != new_spi or @new_agi != new_agi
@new_atk = new_atk
@new_def = new_def
@new_spi = new_spi
@new_agi = new_agi
refresh
end
end
#--------------------------------------------------------------------------
# ● 装備変更後の能力値の描画色取得
# old_value : 装備変更前の能力値
# new_value : 装備変更後の能力値
#--------------------------------------------------------------------------
def new_parameter_color(old_value, new_value)
if new_value > old_value # 強くなる
return power_up_color
elsif new_value == old_value # 変わらず
return normal_color
else # 弱くなる
return power_down_color
end
end
#--------------------------------------------------------------------------
# ● 能力値の描画
# x : 描画先 X 座標
# y : 描画先 Y 座標
# type : 能力値の種類 (0~3)
#--------------------------------------------------------------------------
def draw_parameter(x, y, type)
case type
when 0
name = Vocab::atk
value = @actor.atk
new_value = @new_atk
when 1
name = Vocab::def
value = @actor.def
new_value = @new_def
when 2
name = Vocab::spi
value = @actor.spi
new_value = @new_spi
when 3
name = Vocab::agi
value = @actor.agi
new_value = @new_agi
end
self.contents.font.color = system_color
self.contents.draw_text(x + 3, y, 80, WLH, name)
self.contents.font.color = normal_color
self.contents.draw_text(x + 45, y, 86, WLH, value, 2)
self.contents.font.color = system_color
self.contents.draw_text(x + 140, y, 20, WLH, "→", 1)
if new_value != nil
self.contents.font.color = new_parameter_color(value, new_value)
self.contents.draw_text(x + 165, y, 86, WLH, new_value, 2)#122,55
end
end
#--------------------------------------------------------------------------
# ● 基本情報の描画
# x : 描画先 X 座標
# y : 描画先 Y 座標
#--------------------------------------------------------------------------
def draw_basic_info(x, y)
draw_actor_level(@actor, 90, 0)
draw_actor_hp(@actor, 210, 0) # (@actor, x, y + WLH * 1)
draw_actor_mp(@actor, 380, 0) # (@actor, x, y + WLH * 2)
end
end
[/code]
[attachment=1]名称未設定.png[/attachment]
2枚目の画像のような装備画面にしたいのですが、KGC様の「ヘルプウィンドウ拡張機能」を使っていて、VXデフォルトから、改良を試みたものの1枚目の画像になりました。
そこから、選択で縦一列の状態から、横に移動?選択?が可能にすることができなく、力尽きました。
なるべく、デフォルト(VX)から起用したいです。
[attachment=0]5235325.png[/attachment]
KGC様のヘルプウィンドウ拡張機能 にある、装備画面を改良したものです。
[color=#FF80BF]140行[/color]
[code]
#==============================================================================
# ■ Scene_Equip
#==============================================================================
class Scene_Equip < Scene_Base
#--------------------------------------------------------------------------
# ● 開始処理
#--------------------------------------------------------------------------
alias start_KGC_HelpExtension start
def start
start_KGC_HelpExtension
adjust_window_size
end
#--------------------------------------------------------------------------
# ● ウィンドウサイズ調整
#--------------------------------------------------------------------------
def adjust_window_size
@help_window.row_max = KGC::HelpExtension::ROW_MAX
@equip_window.y = 174 #@help_window.height
@status_window.y = @help_window.height
resize_item_windows
end
#--------------------------------------------------------------------------
# ● アイテムウィンドウのサイズ変更
#--------------------------------------------------------------------------
def resize_item_windows
@item_windows.each { |w|
dy = @help_window.height + @equip_window.height
w.y = dy
w.height = Graphics.height + dy
w.refresh
}
end
end
[/code]
[color=#FF80BF]175行[/color]
下記は、デフォルトのEquipです。(デフォルトのまま全て貼り付けてます)
[code]
#==============================================================================
# ■ Window_Equip
#------------------------------------------------------------------------------
# 装備画面で、アクターが現在装備しているアイテムを表示するウィンドウです。
#==============================================================================
class Window_Equip < Window_Selectable
#--------------------------------------------------------------------------
# ● オブジェクト初期化
# x : ウィンドウの X 座標
# y : ウィンドウの Y 座標
# actor : アクター
#--------------------------------------------------------------------------
def initialize(x, y, actor)
super(0, y, 544, 100)#(x, y, 336, WLH * 5 + 32)装備可能アイテム一覧ウィンドウ
@actor = actor
refresh
self.index = 0
end
#--------------------------------------------------------------------------
# ● アイテムの取得
#--------------------------------------------------------------------------
def item
return @data[self.index]
end
#--------------------------------------------------------------------------
# ● リフレッシュ
#--------------------------------------------------------------------------
def refresh
self.contents.clear
@data = []
for item in @actor.equips do @data.push(item) end
@item_max = @data.size
self.contents.font.color = system_color
if @actor.two_swords_style
self.contents.draw_text(4, WLH * 0, 92, WLH, Vocab::weapon1)#4, WLH * 0, 92, WLH
self.contents.draw_text(4, WLH * 1, 92, WLH, Vocab::weapon2)
else
self.contents.draw_text(4, WLH * 0, 92, WLH, Vocab::weapon)
self.contents.draw_text(4, WLH * 1, 92, WLH, Vocab::armor1)
end
self.contents.draw_text(4, WLH * 2, 92, WLH, Vocab::armor2)#4, WLH * 2, 92
self.contents.draw_text(4, WLH * 3, 92, WLH, Vocab::armor3)
self.contents.draw_text(180, 20, 92, WLH, Vocab::armor4)#4, WLH * 4, 92, WLH,
draw_item_name(@data[0], 92, WLH * 0)
draw_item_name(@data[1], 92, WLH * 0)#1
draw_item_name(@data[2], 92, WLH * 1)#2
draw_item_name(@data[3], 92, WLH * 1)#3
draw_item_name(@data[4], 92, WLH * 2)#4
end
#--------------------------------------------------------------------------
# ● ヘルプテキスト更新
#--------------------------------------------------------------------------
def update_help
@help_window.set_text(item == nil ? "" : item.description)
end
end
[/code]
下記、デフォルトのEquipStatusです。(デフォルトのまま全て貼り付けてます)
[code]
#==============================================================================
# ■ Window_EquipStatus
#------------------------------------------------------------------------------
# 装備画面で、アクターの能力値変化を表示するウィンドウです。
#==============================================================================
class Window_EquipStatus < Window_Base
#--------------------------------------------------------------------------
# ● オブジェクト初期化
# x : ウィンドウの X 座標
# y : ウィンドウの Y 座標
# actor : アクター
#--------------------------------------------------------------------------
def initialize(x, y, actor)
super(x, y, 544, 99)#(x, y, 208, WLH * 5 + 32)255 99
@actor = actor
refresh
end
#--------------------------------------------------------------------------
# ○ リフレッシュ
#--------------------------------------------------------------------------
def refresh
self.contents.clear
draw_actor_name(@actor, 4, 0)#4, 0
draw_parameter(0, WLH * 1, 0) # 攻撃 (0, WLH * 2, 0)
draw_parameter(255, 22, 1) # 防御 (0, WLH * 2, 1)
draw_parameter(0, 46, 2) # 魔攻 (0, WLH * 2, 2)
draw_parameter(255, 46, 3) # 速さ (0, WLH * 2, 3)
draw_basic_info(0, 0)
#draw_parameter(0, WLH * 5, 4)#追加
#draw_parameter(0, WLH * 6, 5)#追加
end
#--------------------------------------------------------------------------
# ● 装備変更後の能力値設定
# new_atk : 装備変更後の攻撃力
# new_def : 装備変更後の防御力
# new_spi : 装備変更後の精神力
# new_agi : 装備変更後の敏捷性
#--------------------------------------------------------------------------
def set_new_parameters(new_atk, new_def, new_spi, new_agi)
if @new_atk != new_atk or @new_def != new_def or
@new_spi != new_spi or @new_agi != new_agi
@new_atk = new_atk
@new_def = new_def
@new_spi = new_spi
@new_agi = new_agi
refresh
end
end
#--------------------------------------------------------------------------
# ● 装備変更後の能力値の描画色取得
# old_value : 装備変更前の能力値
# new_value : 装備変更後の能力値
#--------------------------------------------------------------------------
def new_parameter_color(old_value, new_value)
if new_value > old_value # 強くなる
return power_up_color
elsif new_value == old_value # 変わらず
return normal_color
else # 弱くなる
return power_down_color
end
end
#--------------------------------------------------------------------------
# ● 能力値の描画
# x : 描画先 X 座標
# y : 描画先 Y 座標
# type : 能力値の種類 (0~3)
#--------------------------------------------------------------------------
def draw_parameter(x, y, type)
case type
when 0
name = Vocab::atk
value = @actor.atk
new_value = @new_atk
when 1
name = Vocab::def
value = @actor.def
new_value = @new_def
when 2
name = Vocab::spi
value = @actor.spi
new_value = @new_spi
when 3
name = Vocab::agi
value = @actor.agi
new_value = @new_agi
end
self.contents.font.color = system_color
self.contents.draw_text(x + 3, y, 80, WLH, name)
self.contents.font.color = normal_color
self.contents.draw_text(x + 45, y, 86, WLH, value, 2)
self.contents.font.color = system_color
self.contents.draw_text(x + 140, y, 20, WLH, "→", 1)
if new_value != nil
self.contents.font.color = new_parameter_color(value, new_value)
self.contents.draw_text(x + 165, y, 86, WLH, new_value, 2)#122,55
end
end
#--------------------------------------------------------------------------
# ● 基本情報の描画
# x : 描画先 X 座標
# y : 描画先 Y 座標
#--------------------------------------------------------------------------
def draw_basic_info(x, y)
draw_actor_level(@actor, 90, 0)
draw_actor_hp(@actor, 210, 0) # (@actor, x, y + WLH * 1)
draw_actor_mp(@actor, 380, 0) # (@actor, x, y + WLH * 2)
end
end
[/code]
[attachment=1]名称未設定.png[/attachment]