| 赞 | 2 |
| VIP | |
| 好人卡 | |
| 积分 | 3 |
| 经验 | |
| 最后登录 | 2025-9-3 |
| 在线时间 | 122 小时 |
- 梦石
- 0
- 星屑
- 278
- 在线时间
- 122 小时
- 注册时间
- 2010-12-23
- 回帖
- 168
|
发表于 2014-10-6 20:43:23
|
显示全部楼层
本帖最后由 双叶GL 于 2014-10-6 20:57 编辑
啊好像发错版本了,这是RGSS3的脚本不要用!!!
这里是设定,可以修改参数
[pre lang="ruby" line="1"]#==============================================================================
# ■ RGSS3 アクター預かり所 ver 1.00 初期設定
#------------------------------------------------------------------------------
# 配布元:
# 白の魔 http://izumiwhite.web.fc2.com/
#
# 利用規約:
# RPGツクールVX Aceの正規の登録者のみご利用になれます。
# 利用報告・著作権表示とかは必要ありません。
# 改造もご自由にどうぞ。
# 何か問題が発生しても責任は持ちません。
#==============================================================================
#--------------------------------------------------------------------------
# ★ 初期設定。
# メンバーの加入条件、ソート機能等の設定
#--------------------------------------------------------------------------
module WD_memberchange_ini
Initial_switch = 102 #编号从X开关开始计算
# 例如,改成101,那么第101号开关开启后才能第一个角色替换
# 而开关102开启104开启105开起,那么第2个人就直接跳过
Remove_only = true #falseにすると交代のみ
#trueの場合は、一番下の空白を選択することで
#アクターを外すだけという処理が可能
Party_max = 4 #パーティ最大人数。
Sort_use = false #ソート切り替え機能を使用するか
Sort_variable = 10 #ソート用格納変数の番号
#注:ソート切り替え機能をOFFにしても指定すること。
# ソート切り替え機能がOFFの場合でも
# 並び順は変数で指定しているソートを使用する。
# 但し、メニュー上で切り替えはできない。
# (イベントコマンドで直接変数を書き換えれば可。)
Sort_indexini = true #trueの場合、ソート切り替え時カーソルを一番上へ移動
Sort_frontcommand = false #外すアクターを選択する場合にも
#ソート用コマンドを受け付ける場合はtrue
Sort_series = [0,1,2,3,4,5,6,7,8,9,10] #どのソート機能を使用するか
#ソート切り替え機能をOFFにしても
#指定すること
# 0:ID順 1:指定ソート 2:レベル順 3:最大HP順 4:最大MP順
# 5:攻撃力順 6:防御力順 7:魔法力順 8:魔法防御順 9:敏捷性順
#10:運順 11:職業ID順
Sort_names =
["ID順","レベル順","HP順","MP順", #各ソートの名称
"攻撃力順","防御力順","魔法力順","魔法防御順", #上の配列と同じ順番で指定
"敏捷性順","運順"]
Assignsort_array = [9,1,2,4,7,6,3,5,8,10] #指定ソート、
#アクターのID順に優先度を指定
#使わない場合は指定しなくてよい。
#この場合ラルフは7番、ウルリカは3番...
#間違えやすいので注意。
Eliminate_use = false #アクター除籍機能を使う場合はtrue
#除籍:各アクターの加入条件スイッチをOFFにすること。
#もう一度ONにすれば、再び編成画面に加わります。
Eliminate_command1 = "除籍" #除籍確認用コマンド1
Eliminate_command2 = "キャンセル" #除籍確認用コマンド2
Fix_switch1 = [] #この行は消さないこと
Fix_switch2 = [] #この行は消さないこと
#特定のメンバーを固定するためのスイッチ指定
Fix_switch1[1] = 102 #3番のスイッチがONの時1番のアクターは入れ替え不可
#Fix_switch1[6] = 4 #4番のスイッチがONの時6番のアクターは入れ替え不可
#特定のアクターを除籍できなくするスイッチ
Fix_switch2[1] = 7 #7番のスイッチがONの時2番のアクターは除籍不可
Fix_switch2[4] = 8 #8番のスイッチがONの時4番のアクターは除籍不可
Remove_equip1 = false #入れ替え時に装備を外す場合はtrue
Remove_equip2 = true #除籍時に装備を外す場合はtrue
Txtwindow1_use = true #テキストウィンドウ1を使用するか
Txtwindow1_text = "パーティメンバー" #テキストウィンドウ1に表示させる文章("\n"で改行)
Txtwindow1_timing = 1 #テキストウィンドウ1の表示タイミング
#1⇒常時、#2⇒外すアクター選択中、3⇒加えるアクター選択中
Txtwindow2_use = true #テキストウィンドウ2を使用するか
Txtwindow2_text = "待機メンバー" #テキストウィンドウ2に表示させる文章("\n"で改行)
Txtwindow2_timing = 1 #テキストウィンドウ1の表示タイミング
#1⇒常時、#2⇒外すアクター選択中、3⇒加えるアクター選択中
Txtwindow3_use = false #テキストウィンドウ3を使用するか
Txtwindow3_text = " " #テキストウィンドウ3に表示させる文章("\n"で改行)
Txtwindow3_timing = 3 #テキストウィンドウ1の表示タイミング
#1⇒常時、#2⇒外すアクター選択中、3⇒加えるアクター選択中
end
#--------------------------------------------------------------------------
# ★ 初期設定おわり
#--------------------------------------------------------------------------
#--------------------------------------------------------------------------
# ■ レイアウト設定。
# 各ウィンドウのレイアウトを指定
#--------------------------------------------------------------------------
#--------------------------------------------------------------------------
# ★ パーティから外すアクターを選択するウィンドウのレイアウトの設定
#--------------------------------------------------------------------------
module WD_memberchange_front_layout
#ウィンドウの設定
Window_x = 0
Window_y = 48
Window_width = 196
Window_height = 106 - 44
Window_col = 4
#カーソルの設定
Rect_spacing = 12
Rect_interval = 12
Rect_width = 34
Rect_height = 34
#顔グラフィックの表示
Faceview = false
Faceview_x = 0
Faceview_y = 0
#歩行グラィックの表示
Charaview = true
Charaview_x = 16
Charaview_y = 32
#ステートの表示
Stateview = false
Stateview_x = 0
Stateview_y = 0
Stateview_width = 96
#名前の表示
Nameview = false
Nameview_x = 0
Nameview_y = 0
Nameview_width = 112
#職業の表示
Classview = false
Classview_x = 0
Classview_y = 0
Classview_width = 112
#レベルの表示
Lvview = false
Lvview_x = 0
Lvview_y = 0
Lvview_width = 56
#二つ名の表示
Nicknameview = false
Nicknameview_x = 0
Nicknameview_y = 0
Nicknameview_width = 180
#HPゲージの表示
Hpgaugeview = false
Hpgaugeview_x = 0
Hpgaugeview_y = 0
Hpgaugeview_width = 124
#MPゲージの表示
Mpgaugeview = false
Mpgaugeview_x = 0
Mpgaugeview_y = 0
Mpgaugeview_width = 124
#TPの表示
Tpview = false
Tpview_x = 0
Tpview_y = 0
Tpview_width = 124
#最大HPの表示
Parameterview0 = false
Parameterview0_x = 0
Parameterview0_y = 0
Parameterview0_width = 156
#最大MPの表示
Parameterview1 = false
Parameterview1_x = 0
Parameterview1_y = 0
Parameterview1_width = 156
#攻撃力の表示
Parameterview2 = false
Parameterview2_x = 0
Parameterview2_y = 0
Parameterview2_width = 156
#防御力の表示
Parameterview3 = false
Parameterview3_x = 0
Parameterview3_y = 0
Parameterview3_width = 156
#魔法力の表示
Parameterview4 = false
Parameterview4_x = 0
Parameterview4_y = 0
Parameterview4_width = 156
#魔法防御の表示
Parameterview5 = false
Parameterview5_x = 0
Parameterview5_y = 0
Parameterview5_width = 156
#敏捷性の表示
Parameterview6 = false
Parameterview6_x = 0
Parameterview6_y = 0
Parameterview6_width = 156
#運の表示
Parameterview7 = false
Parameterview7_x = 0
Parameterview7_y = 0
Parameterview7_width = 156
end
#--------------------------------------------------------------------------
# ★ パーティに加えるアクターを選択するウィンドウのレイアウトの設定
#--------------------------------------------------------------------------
module WD_memberchange_back_layout
#ウィンドウの設定
Window_x = 0
Window_y = 202 - 44
Window_width = 196
Window_height = 166 + 46
Window_col = 4
#カーソルの設定
Rect_spacing = 12
Rect_interval = 12
Rect_width = 34
Rect_height = 34
#顔グラフィックの表示
Faceview = false
Faceview_x = 0
Faceview_y = 0
#歩行グラィックの表示
Charaview = true
Charaview_x = 16
Charaview_y = 32
#ステートの表示
Stateview = false
Stateview_x = 0
Stateview_y = 0
Stateview_width = 96
#名前の表示
Nameview = false
Nameview_x = 0
Nameview_y = 0
Nameview_width = 112
#職業の表示
Classview = false
Classview_x = 0
Classview_y = 0
Classview_width = 112
#二つ名の表示
Nicknameview = false
Nicknameview_x = 0
Nicknameview_y = 0
Nicknameview_width = 180
#レベルの表示
Lvview = false
Lvview_x = 0
Lvview_y = 0
Lvview_width = 56
#HPゲージの表示
Hpgaugeview = false
Hpgaugeview_x = 0
Hpgaugeview_y = 0
Hpgaugeview_width = 124
#MPゲージの表示
Mpgaugeview = false
Mpgaugeview_x = 0
Mpgaugeview_y = 0
Mpgaugeview_width = 124
#TPの表示
Tpview = false
Tpview_x = 0
Tpview_y = 0
Tpview_width = 124
#最大HPの表示
Parameterview0 = false
Parameterview0_x = 0
Parameterview0_y = 0
Parameterview0_width = 156
#最大MPの表示
Parameterview1 = false
Parameterview1_x = 0
Parameterview1_y = 0
Parameterview1_width = 156
#攻撃力の表示
Parameterview2 = false
Parameterview2_x = 0
Parameterview2_y = 0
Parameterview2_width = 156
#防御力の表示
Parameterview3 = false
Parameterview3_x = 0
Parameterview3_y = 0
Parameterview3_width = 156
#魔法力の表示
Parameterview4 = false
Parameterview4_x = 0
Parameterview4_y = 0
Parameterview4_width = 156
#魔法防御の表示
Parameterview5 = false
Parameterview5_x = 0
Parameterview5_y = 0
Parameterview5_width = 156
#敏捷性の表示
Parameterview6 = false
Parameterview6_x = 0
Parameterview6_y = 0
Parameterview6_width = 156
#運の表示
Parameterview7 = false
Parameterview7_x = 0
Parameterview7_y = 0
Parameterview7_width = 156
end
#--------------------------------------------------------------------------
# ★ アクターのステータスを表示するウィンドウのレイアウトの設定
#--------------------------------------------------------------------------
module WD_memberchange_status_layout
#ウィンドウの設定
Window_x = 196
Window_y = 0
Window_width = 348
Window_height = 416
#顔グラフィックの表示
Faceview = true
Faceview_x = 2
Faceview_y = 26
#歩行グラィックの表示
Charaview = true
Charaview_x = 122
Charaview_y = 120
#ステートの表示
Stateview = true
Stateview_x = 2
Stateview_y = 128
Stateview_width = 96
#名前の表示
Nameview = true
Nameview_x = 0
Nameview_y = 0
Nameview_width = 112
#職業の表示
Classview = true
Classview_x = 156
Classview_y = 0
Classview_width = 112
#二つ名の表示
Nicknameview = true
Nicknameview_x = 156
Nicknameview_y = 36
Nicknameview_width = 180
#レベルの表示
Lvview = true
Lvview_x = 156
Lvview_y = 72
Lvview_width = 56
#HPゲージの表示
Hpgaugeview = true
Hpgaugeview_x = 156
Hpgaugeview_y = 96
Hpgaugeview_width = 124
#MPゲージの表示
Mpgaugeview = true
Mpgaugeview_x = 156
Mpgaugeview_y = 120
Mpgaugeview_width = 124
#TPの表示
Tpview = false
Tpview_x = 0
Tpview_y = 0
Tpview_width = 124
#最大HPの表示
Parameterview0 = false
Parameterview0_x = 0
Parameterview0_y = 0
Parameterview0_width = 125
#最大MPの表示
Parameterview1 = false
Parameterview1_x = 0
Parameterview1_y = 0
Parameterview1_width = 125
#攻撃力の表示
Parameterview2 = true
Parameterview2_x = 2
Parameterview2_y = 156
Parameterview2_width = 125
#防御力の表示
Parameterview3 = true
Parameterview3_x = 160
Parameterview3_y = 156
Parameterview3_width = 125
#魔法力の表示
Parameterview4 = true
Parameterview4_x = 2
Parameterview4_y = 180
Parameterview4_width = 125
#魔法防御の表示
Parameterview5 = true
Parameterview5_x = 160
Parameterview5_y = 180
Parameterview5_width = 125
#敏捷性の表示
Parameterview6 = true
Parameterview6_x = 2
Parameterview6_y = 204
Parameterview6_width = 125
#運の表示
Parameterview7 = true
Parameterview7_x = 160
Parameterview7_y = 204
Parameterview7_width = 125
#武器の表示
Equipview0 = true
Equipview0_x = 2
Equipview0_y = 240
Equipview0_width = 264
#盾(or武器2)の表示
Equipview1 = true
Equipview1_x = 2
Equipview1_y = 240 + 24
Equipview1_width = 264
#頭の表示
Equipview2 = true
Equipview2_x = 2
Equipview2_y = 240 + 24 * 2
Equipview2_width = 264
#身体の表示
Equipview3 = true
Equipview3_x = 2
Equipview3_y = 240 + 24 * 3
Equipview3_width = 264
#装飾品の表示
Equipview4 = true
Equipview4_x = 2
Equipview4_y = 240 + 24 * 4
Equipview4_width = 264
#トータル経験値の表示
Expview1 = false
Expview1_x = 2
Expview1_y = 240
Expview1_width = 274
#次のレベルまでの経験値の表示
Expview2 = false
Expview2_x = 2
Expview2_y = 264
Expview2_width = 274
end
#--------------------------------------------------------------------------
# ★ 現在選択中のソートを表示するウィンドウのレイアウトの設定
#--------------------------------------------------------------------------
module WD_memberchange_sort_layout
#ウィンドウの設定
Window_x = 0
Window_y = 368
Window_width = 196
Window_height = 48
end
#--------------------------------------------------------------------------
# ★ アクター除籍の確認用ウィンドウのレイアウトの設定
#--------------------------------------------------------------------------
module WD_memberchange_eliminate_layout
#ウィンドウの設定
Window_x = 420
Window_y = 48
Window_width = 124
Window_height = 72
Window_col = 1 #コマンドの列数(1 or 2)
end
#--------------------------------------------------------------------------
# ★ テキストウィンドウ1のレイアウトの設定
#--------------------------------------------------------------------------
module WD_memberchange_text1_layout
#ウィンドウの設定
Window_x = 0
Window_y = 0
Window_width = 196
Window_height = 48
#テキストの設定
Text_align = 1 #テキストの位置(0 ⇒ 左揃え、1 ⇒ 中央揃え、 2 ⇒ 右揃え)
end
#--------------------------------------------------------------------------
# ★ テキストウィンドウ2のレイアウトの設定
#--------------------------------------------------------------------------
module WD_memberchange_text2_layout
#ウィンドウの設定
Window_x = 0
Window_y = 154 - 44
Window_width = 196
Window_height = 48
#テキストの設定
Text_align = 1 #テキストの位置(0 ⇒ 左揃え、1 ⇒ 中央揃え、 2 ⇒ 右揃え)
end
#--------------------------------------------------------------------------
# ★ テキストウィンドウ3のレイアウトの設定
#--------------------------------------------------------------------------
module WD_memberchange_text3_layout
#ウィンドウの設定
Window_x = 444
Window_y = 344
Window_width = 100
Window_height = 72
#テキストの設定
Text_align = 0 #テキストの位置(0 ⇒ 左揃え、1 ⇒ 中央揃え、 2 ⇒ 右揃え)
end[/pre]
第二部分,主要内容
[pre lang="ruby" line="1"]#==============================================================================
# ■ RGSS3 アクター預かり所 ver 1.00 本体プログラム
#------------------------------------------------------------------------------
# 配布元:
# 白の魔 http://izumiwhite.web.fc2.com/
#
# 利用規約:
# RPGツクールVX Aceの正規の登録者のみご利用になれます。
# 利用報告・著作権表示とかは必要ありません。
# 改造もご自由にどうぞ。
# 何か問題が発生しても責任は持ちません。
#==============================================================================
#==============================================================================
# ■ WD_memberchange_commonmethod
#------------------------------------------------------------------------------
# アクター預かり所用の共通メソッドです。
#==============================================================================
module WD_memberchange_commonmethod
#--------------------------------------------------------------------------
# ● 歩行グラフィックの描画
#--------------------------------------------------------------------------
def draw_character(character_name, character_index, x, y, enabled = true)
return unless character_name
bitmap = Cache.character(character_name)
sign = character_name[/^[\!\$]./]
if sign && sign.include?('$')
cw = bitmap.width / 3
ch = bitmap.height / 4
else
cw = bitmap.width / 12
ch = bitmap.height / 8
end
n = character_index
src_rect = Rect.new((n%4*3+1)*cw, (n/4*4)*ch, cw, ch)
if enabled
contents.blt(x - cw / 2, y - ch, bitmap, src_rect)
else
contents.blt(x - cw / 2, y - ch, bitmap, src_rect, 128)
end
end
#--------------------------------------------------------------------------
# ● ステートおよび強化/弱体のアイコンを描画
#--------------------------------------------------------------------------
def draw_actor_icons(actor, x, y, width = 96, enabled = true)
icons = (actor.state_icons + actor.buff_icons)[0, width / 24]
icons.each_with_index {|n, i| draw_icon(n, x + 24 * i, y, enabled) }
end
#--------------------------------------------------------------------------
# ● 名前の描画
#--------------------------------------------------------------------------
def draw_actor_name(actor, x, y, width = 112, enabled = true)
change_color(hp_color(actor), enabled)
draw_text(x, y, width, line_height, actor.name)
end
#--------------------------------------------------------------------------
# ● 職業の描画
#--------------------------------------------------------------------------
def draw_actor_class(actor, x, y, width = 112, enabled = true)
change_color(normal_color, enabled)
draw_text(x, y, width, line_height, actor.class.name)
end
#--------------------------------------------------------------------------
# ● 二つ名の描画
#--------------------------------------------------------------------------
def draw_actor_nickname(actor, x, y, width = 180, enabled = true)
change_color(normal_color, enabled)
draw_text(x, y, width, line_height, actor.nickname)
end
#--------------------------------------------------------------------------
# ● レベルの描画
#--------------------------------------------------------------------------
def draw_actor_level(actor, x, y, width = 56, enabled = true)
change_color(system_color, enabled)
draw_text(x, y, width-24, line_height, Vocab::level_a)
change_color(normal_color, enabled)
draw_text(x + 32, y, 24, line_height, actor.level, 2)
end
#--------------------------------------------------------------------------
# ● HP の描画
#--------------------------------------------------------------------------
def draw_actor_hp(actor, x, y, width = 124, enabled = true)
draw_gauge(x, y, width, actor.hp_rate, hp_gauge_color1, hp_gauge_color2)
change_color(system_color, enabled)
draw_text(x, y, 30, line_height, Vocab::hp_a)
draw_current_and_max_values(x, y, width, actor.hp, actor.mhp,
hp_color(actor), normal_color, enabled)
end
#--------------------------------------------------------------------------
# ● MP の描画
#--------------------------------------------------------------------------
def draw_actor_mp(actor, x, y, width = 124, enabled = true)
draw_gauge(x, y, width, actor.mp_rate, mp_gauge_color1, mp_gauge_color2)
change_color(system_color, enabled)
draw_text(x, y, 30, line_height, Vocab::mp_a)
draw_current_and_max_values(x, y, width, actor.mp, actor.mmp,
mp_color(actor), normal_color, enabled)
end
#--------------------------------------------------------------------------
# ● TP の描画
#--------------------------------------------------------------------------
def draw_actor_tp(actor, x, y, width = 124, enabled = true)
draw_gauge(x, y, width, actor.tp_rate, tp_gauge_color1, tp_gauge_color2)
change_color(system_color, enabled)
draw_text(x, y, 30, line_height, Vocab::tp_a)
change_color(tp_color(actor), enabled)
draw_text(x + width - 42, y, 42, line_height, actor.tp.to_i, 2)
end
#--------------------------------------------------------------------------
# ● 現在値/最大値を分数形式で描画
# current : 現在値
# max : 最大値
# color1 : 現在値の色
# color2 : 最大値の色
#--------------------------------------------------------------------------
def draw_current_and_max_values(x, y, width, current, max, color1, color2, enabled = true)
change_color(color1, enabled)
xr = x + width
if width < 96
draw_text(xr - 40, y, 42, line_height, current, 2)
else
draw_text(xr - 92, y, 42, line_height, current, 2)
change_color(color2, enabled)
draw_text(xr - 52, y, 12, line_height, "/", 2)
draw_text(xr - 42, y, 42, line_height, max, 2)
end
end
#--------------------------------------------------------------------------
# ● 能力値の描画
#--------------------------------------------------------------------------
def draw_actor_param(actor, x, y, param_id, width = 156, enabled = true)
change_color(system_color, enabled)
draw_text(x, y, width-36, line_height, Vocab::param(param_id))
change_color(normal_color, enabled)
draw_text(x + width-36, y, 36, line_height, actor.param(param_id), 2)
end
#--------------------------------------------------------------------------
# ● 項目の描画
#--------------------------------------------------------------------------
def draw_equip_item(actor, x, y, slot_index, width = 264, enabled = true)
change_color(system_color, enabled)
draw_text(x, y, 92, line_height, slot_name(actor, slot_index))
draw_item_name(actor.equips[slot_index], x + 92, y, enabled, width-92)
end
#--------------------------------------------------------------------------
# ● 装備スロットの名前を取得
#--------------------------------------------------------------------------
def slot_name(actor, slot_index)
@actor ? Vocab::etype(actor.equip_slots[slot_index]) : ""
end
#--------------------------------------------------------------------------
# ● 経験値情報の描画
#--------------------------------------------------------------------------
def draw_exp_info1(actor, x, y, width = 180, enabled = true)
s1 = actor.max_level? ? "-------" : actor.exp
change_color(system_color, enabled)
draw_text(x, y, width, line_height, Vocab::ExpTotal)
change_color(normal_color, enabled)
draw_text(x, y, width, line_height, s1, 2)
end
#--------------------------------------------------------------------------
# ● 経験値情報の描画
#--------------------------------------------------------------------------
def draw_exp_info2(actor, x, y, width = 180, enabled = true)
s2 = actor.max_level? ? "-------" : actor.next_level_exp - actor.exp
s_next = sprintf(Vocab::ExpNext, Vocab::level)
change_color(system_color, enabled)
draw_text(x, y, width, line_height, s_next)
change_color(normal_color, enabled)
draw_text(x, y, width, line_height, s2, 2)
end
end
#==============================================================================
# ■ Scene_MemberChange
#------------------------------------------------------------------------------
# アクター預かり所の処理を行うクラスです。
#==============================================================================
class Scene_MemberChange < Scene_ItemBase
#--------------------------------------------------------------------------
# ● 開始処理
#--------------------------------------------------------------------------
def start
super
create_status_window
create_front_window
create_back_window
create_sort_window if WD_memberchange_ini::Sort_use
create_eliminate_window if WD_memberchange_ini::Eliminate_use
create_text_window
end
#--------------------------------------------------------------------------
# ● パーティから外すアクターを選択するウィンドウの作成
#--------------------------------------------------------------------------
def create_front_window
@front_window = Window_FrontMember.new
@front_window.viewport = @viewport
@front_window.status_window = @status_window
@front_window.set_handler(:ok, method(:determine_member1))
@front_window.set_handler(:cancel, method(:return_scene))
if WD_memberchange_ini::Sort_use and WD_memberchange_ini::Sort_frontcommand
@front_window.set_handler(:sort, method(:change_sort))
end
@front_window.update_help
end
#--------------------------------------------------------------------------
# ● パーティに加えるアクターを選択するウィンドウの作成
#--------------------------------------------------------------------------
def create_back_window
@back_window = Window_BackMember.new
@back_window.viewport = @viewport
@back_window.status_window = @status_window
@back_window.set_handler(:ok, method(:determine_member2))
@back_window.set_handler(:cancel, method(:cancel_member1))
if WD_memberchange_ini::Sort_use
@back_window.set_handler(:sort, method(:change_sort))
end
if WD_memberchange_ini::Eliminate_use
@back_window.set_handler(:eliminate, method(:select_eliminate))
end
end
#--------------------------------------------------------------------------
# ● アクターのステータスウィンドウの作成
#--------------------------------------------------------------------------
def create_status_window
@front_window = Window_FrontMember.new
@status_window = Window_MemberChangeStatus.new
@status_window.viewport = @viewport
end
#--------------------------------------------------------------------------
# ● ソート表示ウィンドウの作成
#--------------------------------------------------------------------------
def create_sort_window
@sort_window = Window_MemberChangeSort.new
@sort_window.viewport = @viewport
end
#--------------------------------------------------------------------------
# ● 除籍確認ウィンドウの作成
#--------------------------------------------------------------------------
def create_eliminate_window
@eliminate_window = Window_MemberChangeEliminate.new
@eliminate_window.viewport = @viewport
@eliminate_window.set_handler(:ok, method(:ok_eliminate))
@eliminate_window.set_handler(:cancel, method(:cancel_eliminate))
@eliminate_window.visible = false
end
#--------------------------------------------------------------------------
# ● テキストウィンドウの作成
#--------------------------------------------------------------------------
def create_text_window
if WD_memberchange_ini::Txtwindow1_use
x = WD_memberchange_text1_layout::Window_x
y = WD_memberchange_text1_layout::Window_y
width = WD_memberchange_text1_layout::Window_width
height = WD_memberchange_text1_layout::Window_height
text = WD_memberchange_ini::Txtwindow1_text
align = WD_memberchange_text1_layout::Text_align
@text1_window = Window_MemberChangeText.new(x, y, width, height, text, align)
@text1_window.viewport = @viewport
end
if WD_memberchange_ini::Txtwindow2_use
x = WD_memberchange_text2_layout::Window_x
y = WD_memberchange_text2_layout::Window_y
width = WD_memberchange_text2_layout::Window_width
height = WD_memberchange_text2_layout::Window_height
text = WD_memberchange_ini::Txtwindow2_text
align = WD_memberchange_text2_layout::Text_align
@text2_window = Window_MemberChangeText.new(x, y, width, height, text, align)
@text2_window.viewport = @viewport
end
if WD_memberchange_ini::Txtwindow3_use
x = WD_memberchange_text3_layout::Window_x
y = WD_memberchange_text3_layout::Window_y
width = WD_memberchange_text3_layout::Window_width
height = WD_memberchange_text3_layout::Window_height
text = WD_memberchange_ini::Txtwindow3_text
align = WD_memberchange_text3_layout::Text_align
@text3_window = Window_MemberChangeText.new(x, y, width, height, text, align)
@text3_window.viewport = @viewport
end
textwindow_visualize(3)
end
#--------------------------------------------------------------------------
# ● パーティから外すメンバーの選択
#--------------------------------------------------------------------------
def determine_member1
@back_window.activate
textwindow_visualize(2)
end
#--------------------------------------------------------------------------
# ● パーティから外すメンバーのキャンセル
#--------------------------------------------------------------------------
def cancel_member1
@front_window.activate
textwindow_visualize(3)
end
#--------------------------------------------------------------------------
# ● パーティに加えるメンバーの選択
#--------------------------------------------------------------------------
def determine_member2
actor1 = @front_window.data[@front_window.index]
actor2 = @back_window.data[@back_window.index]
remove_equip(actor1) if WD_memberchange_ini::Remove_equip1
remove_actorid = []
membersize = $game_party.members.size
for i in @front_window.index..membersize - 1
remove_actorid.push($game_party.members[@front_window.index].id)
$game_party.remove_actor($game_party.members[@front_window.index].id)
end
if actor2
$game_party.add_actor(actor2.id)
end
for i in 1..remove_actorid.size - 1
$game_party.add_actor(remove_actorid)
end
@front_window.refresh
@back_window.refresh
@front_window.activate
textwindow_visualize(3)
end
#--------------------------------------------------------------------------
# ● ソート切り替え
#--------------------------------------------------------------------------
def change_sort
$game_variables[WD_memberchange_ini::Sort_variable] += 1
if $game_variables[WD_memberchange_ini::Sort_variable] >=
WD_memberchange_ini::Sort_series.size
$game_variables[WD_memberchange_ini::Sort_variable] = 0
end
@back_window.refresh
@status_window.refresh
@sort_window.refresh
@back_window.select(0) if WD_memberchange_ini::Sort_indexini
end
#--------------------------------------------------------------------------
# ● 除籍の選択
#--------------------------------------------------------------------------
def select_eliminate
@eliminate_window.visible = true
@eliminate_window.select(1)
@eliminate_window.activate
end
#--------------------------------------------------------------------------
# ● 除籍の決定
#--------------------------------------------------------------------------
def ok_eliminate
if @eliminate_window.index == 0
actor = @back_window.data[@back_window.index]
$game_switches[WD_memberchange_ini::Initial_switch + actor.id - 1] = false
remove_equip(actor) if WD_memberchange_ini::Remove_equip2
@back_window.refresh
end
@back_window.activate
@eliminate_window.visible = false
end
#--------------------------------------------------------------------------
# ● 除籍のキャンセル
#--------------------------------------------------------------------------
def cancel_eliminate
@back_window.activate
@eliminate_window.visible = false
end
#--------------------------------------------------------------------------
# ● 装備を外す
#--------------------------------------------------------------------------
def remove_equip(actor)
if actor
actor.change_equip_by_id(0, 0)
actor.change_equip_by_id(1, 0)
actor.change_equip_by_id(2, 0)
actor.change_equip_by_id(3, 0)
actor.change_equip_by_id(4, 0)
end
end
#--------------------------------------------------------------------------
# ● テキストウィンドウの表示切替
#--------------------------------------------------------------------------
def textwindow_visualize(timing)
if WD_memberchange_ini::Txtwindow1_use
if WD_memberchange_ini::Txtwindow1_timing == timing
@text1_window.visible = false
else
@text1_window.visible = true
end
end
if WD_memberchange_ini::Txtwindow2_use
if WD_memberchange_ini::Txtwindow2_timing == timing
@text2_window.visible = false
else
@text2_window.visible = true
end
end
if WD_memberchange_ini::Txtwindow3_use
if WD_memberchange_ini::Txtwindow3_timing == timing
@text3_window.visible = false
else
@text3_window.visible = true
end
end
end
end
#==============================================================================
# ■ Window_MemberChangeList
#------------------------------------------------------------------------------
# アクターを選択するための共通ウィンドウクラスです。
#==============================================================================
class Window_MemberChangeList < Window_Selectable
include WD_memberchange_commonmethod
#--------------------------------------------------------------------------
# ● 公開インスタンス変数
#--------------------------------------------------------------------------
attr_reader :data # アクターデータ
#--------------------------------------------------------------------------
# ● オブジェクト初期化
#--------------------------------------------------------------------------
def initialize(x, y, width, height)
super(x, y, width, height)
end
#--------------------------------------------------------------------------
# ● 項目数の取得
#--------------------------------------------------------------------------
def item_max
@data ? @data.size : 1
end
#--------------------------------------------------------------------------
# ● アイテムの取得
#--------------------------------------------------------------------------
def item
@data && index >= 0 ? @data[index] : nil
end
#--------------------------------------------------------------------------
# ● ヘルプウィンドウ更新メソッドの呼び出し
#--------------------------------------------------------------------------
def call_update_help
update_help if active
end
#--------------------------------------------------------------------------
# ● ヘルプテキスト更新
#--------------------------------------------------------------------------
def update_help
if @status_window
@status_window.set_item(item)
end
end
#--------------------------------------------------------------------------
# ● リフレッシュ
#--------------------------------------------------------------------------
def refresh
make_item_list
create_contents
draw_all_items
end
#--------------------------------------------------------------------------
# ● ステータスウィンドウの設定
#--------------------------------------------------------------------------
def status_window=(status_window)
@status_window = status_window
end
#--------------------------------------------------------------------------
# ● 下端パディングの更新
#--------------------------------------------------------------------------
def update_padding_bottom
self.padding_bottom = padding
end
#--------------------------------------------------------------------------
# ● X ボタン(Sort)が押されたときの処理
#--------------------------------------------------------------------------
def process_sort
Sound.play_cursor
Input.update
call_handler(:sort)
end
#--------------------------------------------------------------------------
# ● Y ボタン(除籍)が押されたときの処理
#--------------------------------------------------------------------------
def process_eliminate
actor = @data[index]
if actor == nil
Sound.play_buzzer
elsif $game_party.members.include?(actor)
Sound.play_buzzer
elsif WD_memberchange_ini::Fix_switch2[actor.id] != nil and
$game_switches[WD_memberchange_ini::Fix_switch2[actor.id]] == true
Sound.play_buzzer
else
Sound.play_ok
Input.update
deactivate
call_handler(:eliminate)
end
end
#--------------------------------------------------------------------------
# ● 決定やキャンセルなどのハンドリング処理
#--------------------------------------------------------------------------
def process_handling
super
if active
return process_sort if handle?(:sort) && Input.trigger?(:X)
return process_eliminate if handle?(:eliminate) && Input.trigger?(:Y)
end
end
#--------------------------------------------------------------------------
# ● 選択項目の有効状態を取得
#--------------------------------------------------------------------------
def current_item_enabled?
if @enabled[index]
return true
else
return false
end
end
end
#==============================================================================
# ■ Window_FrontMember
#------------------------------------------------------------------------------
# パーティから外すアクターを選択するウィンドウです。
#==============================================================================
class Window_FrontMember < Window_MemberChangeList
include WD_memberchange_commonmethod
#--------------------------------------------------------------------------
# ● オブジェクト初期化
#--------------------------------------------------------------------------
def initialize
x = WD_memberchange_front_layout::Window_x
y = WD_memberchange_front_layout::Window_y
width = WD_memberchange_front_layout::Window_width
height = WD_memberchange_front_layout::Window_height
super(x, y, width, height)
@data = []
refresh
activate
select(0)
end
#--------------------------------------------------------------------------
# ● 桁数の取得
#--------------------------------------------------------------------------
def col_max
return WD_memberchange_front_layout::Window_col
end
#--------------------------------------------------------------------------
# ● アクターリストの作成
#--------------------------------------------------------------------------
def make_item_list
@data = []
$game_party.members.each do |actor|
@data.push(actor)
end
@enabled = []
@data.each do |actor|
if WD_memberchange_ini::Fix_switch1[actor.id] != nil and
$game_switches[WD_memberchange_ini::Fix_switch1[actor.id]]
@enabled.push(false)
else
@enabled.push(true)
end
end
if @data.size < WD_memberchange_ini::Party_max
@data.push(nil)
@enabled.push(true)
end
end
#--------------------------------------------------------------------------
# ● 項目の描画
#--------------------------------------------------------------------------
def draw_item(index)
actor = @data[index]
if actor
rect = item_rect(index)
rect.width -= 4
x0 = rect.x
y0 = rect.y
enabled = @enabled[index]
if WD_memberchange_front_layout::Faceview
x = x0 + WD_memberchange_front_layout::Faceview_x
y = y0 + WD_memberchange_front_layout::Faceview_y
draw_actor_face(actor, x, y, enabled)
end
if WD_memberchange_front_layout::Charaview
x = x0 + WD_memberchange_front_layout::Charaview_x
y = y0 + WD_memberchange_front_layout::Charaview_y
draw_character(actor.character_name, actor.character_index, x, y, enabled)
end
if WD_memberchange_front_layout::Stateview == true
x = x0 + WD_memberchange_front_layout::Stateview_x
y = y0 + WD_memberchange_front_layout::Stateview_y
width = WD_memberchange_front_layout::Stateview_width
draw_actor_icons(actor, x, y, width, enabled)
end
if WD_memberchange_front_layout::Nameview == true
x = x0 + WD_memberchange_front_layout::Nameview_x
y = y0 + WD_memberchange_front_layout::Nameview_y
width = WD_memberchange_front_layout::Nameview_width
draw_actor_name(actor, x, y, width, enabled)
end
if WD_memberchange_front_layout::Classview == true
x = x0 + WD_memberchange_front_layout::Classview_x
y = y0 + WD_memberchange_front_layout::Classview_y
width = WD_memberchange_front_layout::Classview_width
draw_actor_class(actor, x, y, width, enabled)
end
if WD_memberchange_front_layout::Nicknameview == true
x = x0 + WD_memberchange_front_layout::Nicknameview_x
y = y0 + WD_memberchange_front_layout::Nicknameview_y
width = WD_memberchange_front_layout::Nicknameview_width
draw_actor_nickname(actor, x, y, width, enabled)
end
if WD_memberchange_front_layout::Lvview == true
x = x0 + WD_memberchange_front_layout::Lvview_x
y = y0 + WD_memberchange_front_layout::Lvview_y
width = WD_memberchange_front_layout::Lvview_width
draw_actor_level(actor, x, y, width, enabled)
end
if WD_memberchange_front_layout::Hpgaugeview == true
x = x0 + WD_memberchange_front_layout::Hpgaugeview_x
y = y0 + WD_memberchange_front_layout::Hpgaugeview_y
width = WD_memberchange_front_layout::Hpgaugeview_width
draw_actor_hp(actor, x, y, width, enabled)
end
if WD_memberchange_front_layout::Mpgaugeview == true
x = x0 + WD_memberchange_front_layout::Mpgaugeview_x
y = y0 + WD_memberchange_front_layout::Mpgaugeview_y
width = WD_memberchange_front_layout::Mpgaugeview_width
draw_actor_mp(actor, x, y, width, enabled)
end
if WD_memberchange_front_layout::Tpview == true
x = x0 + WD_memberchange_front_layout::Tpview_x
y = y0 + WD_memberchange_front_layout::Tpview_y
width = WD_memberchange_front_layout::Tpview_width
draw_actor_tp(actor, x, y, width, enabled)
end
if WD_memberchange_front_layout::Parameterview0 == true
x = x0 + WD_memberchange_front_layout::Parameterview0_x
y = y0 + WD_memberchange_front_layout::Parameterview0_y
width = WD_memberchange_front_layout::Parameterview0_width
draw_actor_param(actor, x, y, 0, width, enabled)
end
if WD_memberchange_front_layout::Parameterview1 == true
x = x0 + WD_memberchange_front_layout::Parameterview1_x
y = y0 + WD_memberchange_front_layout::Parameterview1_y
width = WD_memberchange_front_layout::Parameterview1_width
draw_actor_param(actor, x, y, 1, width, enabled)
end
if WD_memberchange_front_layout::Parameterview2 == true
x = x0 + WD_memberchange_front_layout::Parameterview2_x
y = y0 + WD_memberchange_front_layout::Parameterview2_y
width = WD_memberchange_front_layout::Parameterview2_width
draw_actor_param(actor, x, y, 2, width, enabled)
end
if WD_memberchange_front_layout::Parameterview3 == true
x = x0 + WD_memberchange_front_layout::Parameterview3_x
y = y0 + WD_memberchange_front_layout::Parameterview3_y
width = WD_memberchange_front_layout::Parameterview3_width
draw_actor_param(actor, x, y, 3, width, enabled)
end
if WD_memberchange_front_layout::Parameterview4 == true
x = x0 + WD_memberchange_front_layout::Parameterview4_x
y = y0 + WD_memberchange_front_layout::Parameterview4_y
width = WD_memberchange_front_layout::Parameterview4_width
draw_actor_param(actor, x, y, 4, width, enabled)
end
if WD_memberchange_front_layout::Parameterview5 == true
x = x0 + WD_memberchange_front_layout::Parameterview5_x
y = y0 + WD_memberchange_front_layout::Parameterview5_y
width = WD_memberchange_front_layout::Parameterview5_width
draw_actor_param(actor, x, y, 5, width, enabled)
end
if WD_memberchange_front_layout::Parameterview6 == true
x = x0 + WD_memberchange_front_layout::Parameterview6_x
y = y0 + WD_memberchange_front_layout::Parameterview6_y
width = WD_memberchange_front_layout::Parameterview6_width
draw_actor_param(actor, x, y, 6, width, enabled)
end
if WD_memberchange_front_layout::Parameterview7 == true
x = x0 + WD_memberchange_front_layout::Parameterview7_x
y = y0 + WD_memberchange_front_layout::Parameterview7_y
width = WD_memberchange_front_layout::Parameterview7_width
draw_actor_param(actor, x, y, 7, width, enabled)
end
end
end
#--------------------------------------------------------------------------
# ● ウィンドウ内容の作成
#--------------------------------------------------------------------------
def create_contents
contents.dispose
if contents_width > 0 && contents_height > 0
self.contents = Bitmap.new(contents_width,
[contents_height-999, row_max * (
WD_memberchange_front_layout::Rect_height +
WD_memberchange_front_layout::Rect_interval) -
WD_memberchange_front_layout::Rect_interval].max)
else
self.contents = Bitmap.new(1, 1)
end
end
#--------------------------------------------------------------------------
# ● 先頭の行の取得
#--------------------------------------------------------------------------
def top_row
oy / (WD_memberchange_front_layout::Rect_height +
WD_memberchange_front_layout::Rect_interval)
end
#--------------------------------------------------------------------------
# ● 先頭の行の設定
#--------------------------------------------------------------------------
def top_row=(row)
row = 0 if row < 0
row = row_max - 1 if row > row_max - 1
self.oy = row * (WD_memberchange_front_layout::Rect_height +
WD_memberchange_front_layout::Rect_interval)
end
#--------------------------------------------------------------------------
# ● 1 ページに表示できる行数の取得
#--------------------------------------------------------------------------
def page_row_max
return (height - padding*2 + WD_memberchange_front_layout::Rect_interval) /
(WD_memberchange_front_layout::Rect_height +
WD_memberchange_front_layout::Rect_interval)
end
#--------------------------------------------------------------------------
# ● 項目を描画する矩形の取得
#--------------------------------------------------------------------------
def item_rect(index)
rect = Rect.new
rect.width = WD_memberchange_front_layout::Rect_width
rect.height = WD_memberchange_front_layout::Rect_height
rect.x = index % col_max *
(rect.width + WD_memberchange_front_layout::Rect_spacing)
rect.y = index / col_max *
(rect.height + WD_memberchange_front_layout::Rect_interval)
rect
end
#--------------------------------------------------------------------------
# ● キャンセルボタンが押されたときの処理
#--------------------------------------------------------------------------
def process_cancel
if $game_party.members.size > 0
Sound.play_cancel
Input.update
deactivate
call_cancel_handler
else
Sound.play_buzzer
end
end
end
#==============================================================================
# ■ Window_BackMember
#------------------------------------------------------------------------------
# パーティに加えるアクターを選択するウィンドウです。
#==============================================================================
class Window_BackMember < Window_MemberChangeList
include WD_memberchange_commonmethod
#--------------------------------------------------------------------------
# ● オブジェクト初期化
#--------------------------------------------------------------------------
def initialize
x = WD_memberchange_back_layout::Window_x
y = WD_memberchange_back_layout::Window_y
width = WD_memberchange_back_layout::Window_width
height = WD_memberchange_back_layout::Window_height
super(x, y, width, height + 46)
@data = []
refresh
select(0)
end
#--------------------------------------------------------------------------
# ● 桁数の取得
#--------------------------------------------------------------------------
def col_max
return WD_memberchange_back_layout::Window_col
end
#--------------------------------------------------------------------------
# ● アクターリストの作成
#--------------------------------------------------------------------------
def make_item_list
data_buf = []
$data_actors.each do |actor|
if actor
if $game_switches[WD_memberchange_ini::Initial_switch+actor.id-1]
data_buf.push($game_actors[actor.id])
end
end
end
case WD_memberchange_ini::Sort_series[
$game_variables[WD_memberchange_ini::Sort_variable]]
when 0
@data = data_buf.sort_by{
|actor| actor.id}
when 1
@data = data_buf.sort_by{
|actor| WD_memberchange_ini::Assignsort_array[actor.id-1]}
when 2
@data = data_buf.sort_by{
|actor| -actor.level*10000+actor.id}
when 3
@data = data_buf.sort_by{
|actor| -actor.mhp*10000+actor.id}
when 4
@data = data_buf.sort_by{
|actor| -actor.mmp*10000+actor.id}
when 5
@data = data_buf.sort_by{
|actor| -actor.atk*10000+actor.id}
when 6
@data = data_buf.sort_by{
|actor| -actor.def*10000+actor.id}
when 7
@data = data_buf.sort_by{
|actor| -actor.mat*10000+actor.id}
when 8
@data = data_buf.sort_by{
|actor| -actor.mdf*10000+actor.id}
when 9
@data = data_buf.sort_by{
|actor| -actor.agi*10000+actor.id}
when 10
@data = data_buf.sort_by{
|actor| -actor.luk*10000+actor.id}
when 11
@data = data_buf.sort_by{
|actor| actor.class_id*10000+actor.id}
end
@enabled = []
@data.each do |actor|
if $game_party.members.include?(actor)
@enabled.push(false)
else
@enabled.push(true)
end
end
if WD_memberchange_ini::Remove_only
@data.push(nil)
@enabled.push(true)
end
end
#--------------------------------------------------------------------------
# ● 項目の描画
#--------------------------------------------------------------------------
def draw_item(index)
actor = @data[index]
if actor
rect = item_rect(index)
rect.width -= 4
x0 = rect.x
y0 = rect.y
enabled = @enabled[index]
if WD_memberchange_back_layout::Faceview
x = x0 + WD_memberchange_back_layout::Faceview_x
y = y0 + WD_memberchange_back_layout::Faceview_y
draw_actor_face(actor, x, y, enabled)
end
if WD_memberchange_back_layout::Charaview
x = x0 + WD_memberchange_back_layout::Charaview_x
y = y0 + WD_memberchange_back_layout::Charaview_y
draw_character(actor.character_name, actor.character_index, x, y, enabled)
end
if WD_memberchange_back_layout::Stateview == true
x = x0 + WD_memberchange_back_layout::Stateview_x
y = y0 + WD_memberchange_back_layout::Stateview_y
width = WD_memberchange_back_layout::Stateview_width
draw_actor_icons(actor, x, y, width, enabled)
end
if WD_memberchange_back_layout::Nameview == true
x = x0 + WD_memberchange_back_layout::Nameview_x
y = y0 + WD_memberchange_back_layout::Nameview_y
width = WD_memberchange_back_layout::Nameview_width
draw_actor_name(actor, x, y, width, enabled)
end
if WD_memberchange_back_layout::Classview == true
x = x0 + WD_memberchange_back_layout::Classview_x
y = y0 + WD_memberchange_back_layout::Classview_y
width = WD_memberchange_back_layout::Classview_width
draw_actor_class(actor, x, y, width, enabled)
end
if WD_memberchange_back_layout::Nicknameview == true
x = x0 + WD_memberchange_back_layout::Nicknameview_x
y = y0 + WD_memberchange_back_layout::Nicknameview_y
width = WD_memberchange_back_layout::Nicknameview_width
draw_actor_nickname(actor, x, y, width, enabled)
end
if WD_memberchange_back_layout::Lvview == true
x = x0 + WD_memberchange_back_layout::Lvview_x
y = y0 + WD_memberchange_back_layout::Lvview_y
width = WD_memberchange_back_layout::Lvview_width
draw_actor_level(actor, x, y, width, enabled)
end
if WD_memberchange_back_layout::Hpgaugeview == true
x = x0 + WD_memberchange_back_layout::Hpgaugeview_x
y = y0 + WD_memberchange_back_layout::Hpgaugeview_y
width = WD_memberchange_back_layout::Hpgaugeview_width
draw_actor_hp(actor, x, y, width, enabled)
end
if WD_memberchange_back_layout::Mpgaugeview == true
x = x0 + WD_memberchange_back_layout::Mpgaugeview_x
y = y0 + WD_memberchange_back_layout::Mpgaugeview_y
width = WD_memberchange_back_layout::Mpgaugeview_width
draw_actor_mp(actor, x, y, width, enabled)
end
if WD_memberchange_back_layout::Tpview == true
x = x0 + WD_memberchange_back_layout::Tpview_x
y = y0 + WD_memberchange_back_layout::Tpview_y
width = WD_memberchange_back_layout::Tpview_width
draw_actor_tp(actor, x, y, width, enabled)
end
if WD_memberchange_back_layout::Parameterview0 == true
x = x0 + WD_memberchange_back_layout::Parameterview0_x
y = y0 + WD_memberchange_back_layout::Parameterview0_y
width = WD_memberchange_back_layout::Parameterview0_width
draw_actor_param(actor, x, y, 0, width, enabled)
end
if WD_memberchange_back_layout::Parameterview1 == true
x = x0 + WD_memberchange_back_layout::Parameterview1_x
y = y0 + WD_memberchange_back_layout::Parameterview1_y
width = WD_memberchange_back_layout::Parameterview1_width
draw_actor_param(actor, x, y, 1, width, enabled)
end
if WD_memberchange_back_layout::Parameterview2 == true
x = x0 + WD_memberchange_back_layout::Parameterview2_x
y = y0 + WD_memberchange_back_layout::Parameterview2_y
width = WD_memberchange_back_layout::Parameterview2_width
draw_actor_param(actor, x, y, 2, width, enabled)
end
if WD_memberchange_back_layout::Parameterview3 == true
x = x0 + WD_memberchange_back_layout::Parameterview3_x
y = y0 + WD_memberchange_back_layout::Parameterview3_y
width = WD_memberchange_back_layout::Parameterview3_width
draw_actor_param(actor, x, y, 3, width, enabled)
end
if WD_memberchange_back_layout::Parameterview4 == true
x = x0 + WD_memberchange_back_layout::Parameterview4_x
y = y0 + WD_memberchange_back_layout::Parameterview4_y
width = WD_memberchange_back_layout::Parameterview4_width
draw_actor_param(actor, x, y, 4, width, enabled)
end
if WD_memberchange_back_layout::Parameterview5 == true
x = x0 + WD_memberchange_back_layout::Parameterview5_x
y = y0 + WD_memberchange_back_layout::Parameterview5_y
width = WD_memberchange_back_layout::Parameterview5_width
draw_actor_param(actor, x, y, 5, width, enabled)
end
if WD_memberchange_back_layout::Parameterview6 == true
x = x0 + WD_memberchange_back_layout::Parameterview6_x
y = y0 + WD_memberchange_back_layout::Parameterview6_y
width = WD_memberchange_back_layout::Parameterview6_width
draw_actor_param(actor, x, y, 6, width, enabled)
end
if WD_memberchange_back_layout::Parameterview7 == true
x = x0 + WD_memberchange_back_layout::Parameterview7_x
y = y0 + WD_memberchange_back_layout::Parameterview7_y
width = WD_memberchange_back_layout::Parameterview7_width
draw_actor_param(actor, x, y, 7, width, enabled)
end
end
end
#--------------------------------------------------------------------------
# ● ウィンドウ内容の作成
#--------------------------------------------------------------------------
def create_contents
contents.dispose
if contents_width > 0 && contents_height > 0
self.contents = Bitmap.new(contents_width,
[contents_height-999, row_max * (
WD_memberchange_back_layout::Rect_height +
WD_memberchange_back_layout::Rect_interval) -
WD_memberchange_back_layout::Rect_interval].max)
else
self.contents = Bitmap.new(1, 1)
end
end
#--------------------------------------------------------------------------
# ● 先頭の行の取得
#--------------------------------------------------------------------------
def top_row
oy / (WD_memberchange_back_layout::Rect_height +
WD_memberchange_back_layout::Rect_interval)
end
#--------------------------------------------------------------------------
# ● 先頭の行の設定
#--------------------------------------------------------------------------
def top_row=(row)
row = 0 if row < 0
row = row_max - 1 if row > row_max - 1
self.oy = row * (WD_memberchange_back_layout::Rect_height +
WD_memberchange_back_layout::Rect_interval)
end
#--------------------------------------------------------------------------
# ● 1 ページに表示できる行数の取得
#--------------------------------------------------------------------------
def page_row_max
return (height - padding*2 + WD_memberchange_back_layout::Rect_interval) /
(WD_memberchange_back_layout::Rect_height +
WD_memberchange_back_layout::Rect_interval)
end
#--------------------------------------------------------------------------
# ● 項目を描画する矩形の取得
#--------------------------------------------------------------------------
def item_rect(index)
rect = Rect.new
rect.width = WD_memberchange_back_layout::Rect_width
rect.height = WD_memberchange_back_layout::Rect_height
rect.x = index % col_max *
(rect.width + WD_memberchange_back_layout::Rect_spacing)
rect.y = index / col_max *
(rect.height + WD_memberchange_back_layout::Rect_interval)
rect
end
end
#==============================================================================
# ■ Window_MemberChangeStatus
#------------------------------------------------------------------------------
# アクターのステータスを表示するウィンドウです。
#==============================================================================
class Window_MemberChangeStatus < Window_Base
include WD_memberchange_commonmethod
#--------------------------------------------------------------------------
# ● オブジェクト初期化
#--------------------------------------------------------------------------
def initialize
x = WD_memberchange_status_layout::Window_x
y = WD_memberchange_status_layout::Window_y
width = WD_memberchange_status_layout::Window_width
height = WD_memberchange_status_layout::Window_height
super(x, y, width, height)
@actor = nil
refresh
end
#--------------------------------------------------------------------------
# ● アクターの設定
#--------------------------------------------------------------------------
def set_item(actor)
return if @actor == actor
@actor = actor
refresh
end
#--------------------------------------------------------------------------
# ● リフレッシュ
#--------------------------------------------------------------------------
def refresh
contents.clear
contents.font.size = 24
if @actor != nil
x0 = 0
y0 = 0
enabled = true
actor = @actor
if WD_memberchange_status_layout::Faceview
x = x0 + WD_memberchange_status_layout::Faceview_x
y = y0 + WD_memberchange_status_layout::Faceview_y
draw_actor_face(actor, x, y, enabled)
end
if WD_memberchange_status_layout::Charaview
x = x0 + WD_memberchange_status_layout::Charaview_x
y = y0 + WD_memberchange_status_layout::Charaview_y
draw_character(actor.character_name, actor.character_index, x, y, enabled)
end
if WD_memberchange_status_layout::Stateview == true
x = x0 + WD_memberchange_status_layout::Stateview_x
y = y0 + WD_memberchange_status_layout::Stateview_y
width = WD_memberchange_status_layout::Stateview_width
draw_actor_icons(actor, x, y, width, enabled)
end
if WD_memberchange_status_layout::Nameview == true
x = x0 + WD_memberchange_status_layout::Nameview_x
y = y0 + WD_memberchange_status_layout::Nameview_y
width = WD_memberchange_status_layout::Nameview_width
draw_actor_name(actor, x, y, width, enabled)
end
if WD_memberchange_status_layout::Classview == true
x = x0 + WD_memberchange_status_layout::Classview_x
y = y0 + WD_memberchange_status_layout::Classview_y
width = WD_memberchange_status_layout::Classview_width
draw_actor_class(actor, x, y, width, enabled)
end
if WD_memberchange_status_layout::Nicknameview == true
x = x0 + WD_memberchange_status_layout::Nicknameview_x
y = y0 + WD_memberchange_status_layout::Nicknameview_y
width = WD_memberchange_status_layout::Nicknameview_width
draw_actor_nickname(actor, x, y, width, enabled)
end
if WD_memberchange_status_layout::Lvview == true
x = x0 + WD_memberchange_status_layout::Lvview_x
y = y0 + WD_memberchange_status_layout::Lvview_y
width = WD_memberchange_status_layout::Lvview_width
draw_actor_level(actor, x, y, width, enabled)
end
if WD_memberchange_status_layout::Hpgaugeview == true
x = x0 + WD_memberchange_status_layout::Hpgaugeview_x
y = y0 + WD_memberchange_status_layout::Hpgaugeview_y
width = WD_memberchange_status_layout::Hpgaugeview_width
draw_actor_hp(actor, x, y, width, enabled)
end
if WD_memberchange_status_layout::Mpgaugeview == true
x = x0 + WD_memberchange_status_layout::Mpgaugeview_x
y = y0 + WD_memberchange_status_layout::Mpgaugeview_y
width = WD_memberchange_status_layout::Mpgaugeview_width
draw_actor_mp(actor, x, y, width, enabled)
end
if WD_memberchange_status_layout::Tpview == true
x = x0 + WD_memberchange_status_layout::Tpview_x
y = y0 + WD_memberchange_status_layout::Tpview_y
width = WD_memberchange_status_layout::Tpview_width
draw_actor_tp(actor, x, y, width, enabled)
end
if WD_memberchange_status_layout::Parameterview0 == true
x = x0 + WD_memberchange_status_layout::Parameterview0_x
y = y0 + WD_memberchange_status_layout::Parameterview0_y
width = WD_memberchange_status_layout::Parameterview0_width
draw_actor_param(actor, x, y, 0, width, enabled)
end
if WD_memberchange_status_layout::Parameterview1 == true
x = x0 + WD_memberchange_status_layout::Parameterview1_x
y = y0 + WD_memberchange_status_layout::Parameterview1_y
width = WD_memberchange_status_layout::Parameterview1_width
draw_actor_param(actor, x, y, 1, width, enabled)
end
if WD_memberchange_status_layout::Parameterview2 == true
x = x0 + WD_memberchange_status_layout::Parameterview2_x
y = y0 + WD_memberchange_status_layout::Parameterview2_y
width = WD_memberchange_status_layout::Parameterview2_width
draw_actor_param(actor, x, y, 2, width, enabled)
end
if WD_memberchange_status_layout::Parameterview3 == true
x = x0 + WD_memberchange_status_layout::Parameterview3_x
y = y0 + WD_memberchange_status_layout::Parameterview3_y
width = WD_memberchange_status_layout::Parameterview3_width
draw_actor_param(actor, x, y, 3, width, enabled)
end
if WD_memberchange_status_layout::Parameterview4 == true
x = x0 + WD_memberchange_status_layout::Parameterview4_x
y = y0 + WD_memberchange_status_layout::Parameterview4_y
width = WD_memberchange_status_layout::Parameterview4_width
draw_actor_param(actor, x, y, 4, width, enabled)
end
if WD_memberchange_status_layout::Parameterview5 == true
x = x0 + WD_memberchange_status_layout::Parameterview5_x
y = y0 + WD_memberchange_status_layout::Parameterview5_y
width = WD_memberchange_status_layout::Parameterview5_width
draw_actor_param(actor, x, y, 5, width, enabled)
end
if WD_memberchange_status_layout::Parameterview6 == true
x = x0 + WD_memberchange_status_layout::Parameterview6_x
y = y0 + WD_memberchange_status_layout::Parameterview6_y
width = WD_memberchange_status_layout::Parameterview6_width
draw_actor_param(actor, x, y, 6, width, enabled)
end
if WD_memberchange_status_layout::Parameterview7 == true
x = x0 + WD_memberchange_status_layout::Parameterview7_x
y = y0 + WD_memberchange_status_layout::Parameterview7_y
width = WD_memberchange_status_layout::Parameterview7_width
draw_actor_param(actor, x, y, 7, width, enabled)
end
if WD_memberchange_status_layout::Equipview0 == true
x = x0 + WD_memberchange_status_layout::Equipview0_x
y = y0 + WD_memberchange_status_layout::Equipview0_y
width = WD_memberchange_status_layout::Equipview0_width
draw_equip_item(actor, x, y, 0, width, enabled)
end
if WD_memberchange_status_layout::Equipview1 == true
x = x0 + WD_memberchange_status_layout::Equipview1_x
y = y0 + WD_memberchange_status_layout::Equipview1_y
width = WD_memberchange_status_layout::Equipview1_width
draw_equip_item(actor, x, y, 1, width, enabled)
end
if WD_memberchange_status_layout::Equipview2 == true
x = x0 + WD_memberchange_status_layout::Equipview2_x
y = y0 + WD_memberchange_status_layout::Equipview2_y
width = WD_memberchange_status_layout::Equipview2_width
draw_equip_item(actor, x, y, 2, width, enabled)
end
if WD_memberchange_status_layout::Equipview3 == true
x = x0 + WD_memberchange_status_layout::Equipview3_x
y = y0 + WD_memberchange_status_layout::Equipview3_y
width = WD_memberchange_status_layout::Equipview3_width
draw_equip_item(actor, x, y, 3, width, enabled)
end
if WD_memberchange_status_layout::Equipview4 == true
x = x0 + WD_memberchange_status_layout::Equipview4_x
y = y0 + WD_memberchange_status_layout::Equipview4_y
width = WD_memberchange_status_layout::Equipview4_width
draw_equip_item(actor, x, y, 4, width, enabled)
end
if WD_memberchange_status_layout::Expview1 == true
x = x0 + WD_memberchange_status_layout::Expview1_x
y = y0 + WD_memberchange_status_layout::Expview1_y
width = WD_memberchange_status_layout::Expview1_width
draw_exp_info1(actor, x, y, width, enabled)
end
if WD_memberchange_status_layout::Expview2 == true
x = x0 + WD_memberchange_status_layout::Expview2_x
y = y0 + WD_memberchange_status_layout::Expview2_y
width = WD_memberchange_status_layout::Expview2_width
draw_exp_info2(actor, x, y, width, enabled)
end
end
end
end
class Window_MemberChangeSort < Window_Base
#--------------------------------------------------------------------------
# ● オブジェクト初期化
#--------------------------------------------------------------------------
def initialize
x = WD_memberchange_sort_layout::Window_x
y = WD_memberchange_sort_layout::Window_y
width = WD_memberchange_sort_layout::Window_width
height = WD_memberchange_sort_layout::Window_height
super(x, y, width, height)
refresh
end
#--------------------------------------------------------------------------
# ● リフレッシュ
#--------------------------------------------------------------------------
def refresh
contents.clear
contents.font.size = 24
sortname = WD_memberchange_ini::Sort_names[
$game_variables[WD_memberchange_ini::Sort_variable]]
draw_text(0, 0, contents_width, line_height, sortname, 1)
end
end
#==============================================================================
# ■ Window_MemberChangeEliminate
#------------------------------------------------------------------------------
# アクター除籍の確認用ウィンドウです。
#==============================================================================
class Window_MemberChangeEliminate < Window_Selectable
#--------------------------------------------------------------------------
# ● オブジェクト初期化
#--------------------------------------------------------------------------
def initialize
x = WD_memberchange_eliminate_layout::Window_x
y = WD_memberchange_eliminate_layout::Window_y
width = WD_memberchange_eliminate_layout::Window_width
height = WD_memberchange_eliminate_layout::Window_height
super(x, y, width, height)
@data = [WD_memberchange_ini::Eliminate_command1,
WD_memberchange_ini::Eliminate_command2]
refresh
select(1)
end
#--------------------------------------------------------------------------
# ● 桁数の取得
#--------------------------------------------------------------------------
def col_max
return WD_memberchange_eliminate_layout::Window_col
end
#--------------------------------------------------------------------------
# ● 項目数の取得
#--------------------------------------------------------------------------
def item_max
return 2
end
#--------------------------------------------------------------------------
# ● 項目の描画
#--------------------------------------------------------------------------
def draw_item(index)
rect = item_rect_for_text(index)
draw_text(rect.x, rect.y, contents_width, line_height, @data[index])
end
#--------------------------------------------------------------------------
# ● リフレッシュ
#--------------------------------------------------------------------------
def refresh
create_contents
draw_all_items
end
#--------------------------------------------------------------------------
# ● 決定ボタンが押されたときの処理
#--------------------------------------------------------------------------
def process_ok
Input.update
deactivate
if index == 0
Sound.play_ok
call_ok_handler
else
Sound.play_cancel
call_cancel_handler
end
end
end
#==============================================================================
# ■ Window_MemberChangeText
#------------------------------------------------------------------------------
# テキストを表示するウィンドウです。
#==============================================================================
class Window_MemberChangeText < Window_Base
#--------------------------------------------------------------------------
# ● オブジェクト初期化
#--------------------------------------------------------------------------
def initialize(x, y, width, height, text, align)
@text = text
@align = align
super(x, y, width, height)
refresh
end
#--------------------------------------------------------------------------
# ● リフレッシュ
#--------------------------------------------------------------------------
def refresh
contents.clear
contents.font.size = 24
text = (@text).split(/\n/)
for i in 0...text.size
draw_text(0, line_height*i, contents_width, line_height, text, @align)
end
end
end
[/pre] |
评分
-
查看全部评分
|