=begin ************************************************************************
◆ セーブレイアウト (リーダー详细版) Ver.1.01
---------------------------------------------------------------------------
セーブ・ロード画面のレイアウトを変更します。
=end # ************************************************************************
#-information------------------------------------------------------------------
$ziifee ||= {}
$ziifee[:SaveLayout] = :TypeA
#------------------------------------------------------------------------------
#-memo-------------------------------------------------------------------------
# 各种データは一度セーブすることで表示されます。
# セーブファイルのマップ名は“表示名”を表示します。
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# 他のセーブ関系の素材と竞合する可能性が高いので注意して使用してください。
# ファイル番号 17番 以降にセーブした场合、ロードにはこのスクリプトが必要です。
#------------------------------------------------------------------------------
module ZiifSaveLayoutA
# [ 设置个所 1 ]
# ▼ ファイルリスト设置 (ファイル数は 横×縦)
File_column = 2 # ファイル 横の数
File_row = 8 # ファイル 縦の数
D_LineNumber = 5 # 表示行数
File_Align = 1 # 揃え (0:左揃え, 1:中央揃え, 2:右揃え)
D_StoryList = true # リストにストーリー名を表示 ( true / false )
V_None = "No Data" # 用语 : ファイルなし
# ▼ 情报ウィンドウ设置
WindowMargin = 0 # ウィンドウ外周の余白 (px)
WindowLineNumber = 9 # ウィンドウの高さ (行数)
WindowTransparency = false # 情报ウィンドウを透明化 ( true / false )
# ▼ ヘルプウィンドウ设置
HelpWTransparency = false # ヘルプウィンドウを透明化 ( true / false )
# ▼ セーブ确认设置
SaveConfirm = true # セーブ确认を行うかどうか ( true / false )
SConfirmationDefault = 0 # 初期位置 ( 0:はい / 1:いいえ )
V_SConfirmation = "要复盖记录嘛?" # 用语 : セーブ确认
V_SConfirmationYes = "存盘" # 用语 : はい
V_SConfirmationNo = "不要" # 用语 : いいえ
# ▼ ロード确认设置
LoadConfirm = true # ロード确认を行うかどうか ( true / false )
LConfirmationDefault = 0 # 初期位置 ( 0:はい / 1:いいえ )
V_LConfirmation = "要读取纪录吗?" # 用语 : ロード确认
V_LConfirmationYes = "读取" # 用语 : はい
V_LConfirmationNo = "不要" # 用语 : いいえ
# ▼ ファイル画面背景画象名 ( "" : 未使用、画象は Graphics/Pictures に)
SaveBackground = "" # セーブ画面背景
LoadBackground = "" # ロード画面背景
# ※ 背景画象未使用时は通常の背景表示になります。
# ▼ ウィンドウ表示设置 ( true : 表示する / false : 表示しない )
# ファイル情报
D_File = true # ファイル番号
D_Story = true # ストーリー名
D_Playtime = true # プレイ时间
# パーティ情报
D_Area = true # エリア・マップ名
D_Gold = true # 所持金
D_AG_Line = false # マップ名と所持金を同じ行に表示 (マップ名は左揃え)
# パーティ画象
D_PartyFaces = false # パーティの顔グラフィック
D_Characters = true # パーティの歩行グラフィック
# リーダー情报
D_LeaderInfo = true # リーダー情报 ( true の时以下を表示する)
D_Face = false # 顔グラフィック
D_Name = true # 名前
D_Level = true # レベル
D_Class = false # 职业
D_Nickname = true # 二つ名
D_HPMP = true # HP・MP
D_UnderName = :level # 名前下の表示タイプ ( :level / :class / nil )
D_Param = true # 能力値 (攻撃・敏捷性など)
D_Equip = true # 装备 (武器・防具)
# ※ 全てを true にすると、ウィンドウ内に入りきらないので注意!
end
module ZiifManager
# [ 设置个所 2 ]
# ▼ 文本色设置 (0~255) : Color.new(赤, 緑, 青)
Story_Color = Color.new(225, 200, 255) # ストーリー名
Area_Color = Color.new(225, 200, 255) # エリア・マップ名
# ▼ ストーリー名の设置
Story_VarID = 60 # ストーリー确认用 変数ID
StorySet ||= Hash.new("")
StorySet[0] = "序幕" #
StorySet[1] = "旅程的前夕" #
StorySet[2] = "寻找神圣的火焰" #
StorySet[3] = "拯救者、被拯救者" #
StorySet[4] = "沙之国、少女占卜师" #
StorySet[5] = "决战!海贼王" #
StorySet[6] = "漂流至新天地" #
StorySet[7] = "麦卡托的天空" #
StorySet[8] = "被引导的之人" #
StorySet[9] = "手里的真相" #
StorySet[10] = "罪孽深重的亡者" #
StorySet[11] = "山丘上的夕阳" #
StorySet[12] = "世代传承的意志" #
StorySet[13] = "旅途的尽头" #
StorySet[14] = "某位魔法使" #
StorySet[15] = "痕迹" #
StorySet[16] = "★ 旅程的前夕" #
StorySet[17] = "★ 寻找神圣的火焰" #
StorySet[18] = "★ 拯救者、被拯救者" #
StorySet[19] = "★ 沙之国、少女占卜师" #
StorySet[20] = "★ 决战!海贼王" #
StorySet[21] = "★ 漂流至新天地" #
StorySet[22] = "★ 麦卡托的天空" #
StorySet[23] = "★ 被引导的之人" #
StorySet[24] = "★ 手里的真相" #
StorySet[25] = "★ 罪孽深重的亡者" #
StorySet[26] = "★ 山丘上的夕阳" #
StorySet[27] = "★ 世代传承的意志" #
StorySet[28] = "★ 旅途的尽头" #
StorySet[29] = "★ 某位魔法使" #
StorySet[30] = "★ 痕迹" #
StorySet[31] = "超越命运" #
StorySet[32] = "★ 超越命运" #
#-memo---------------------------------------------------------------------
# StorySet[変数の値] = "ストーリー名" # ストーリー名の设置
#--------------------------------------------------------------------------
# ▼ エリア名の设置
AreaSet ||= Hash.new(Hash.new(nil))
AreaSet[1] = Hash.new(nil) # マップID:01 を登録
AreaSet[1][1] = "机关人偶馆的附近" # ⇒ リージョンID:01
AreaSet[1][2] = "小村落附近" # ⇒ リージョンID:02
AreaSet[2] = Hash.new(nil) # マップID:02 を登録
AreaSet[2][1] = "暗闇的大地" # ⇒ リージョンID:01
#-memo---------------------------------------------------------------------
# AreaSet[マップID] = Hash.new(nil) # フィールドマップIDの登録
# AreaSet[マップID][リージョンID] = "エリア名" # リージョンエリア名の设置
# ※ 変数の値が设置されていない场合は、现在のマップ名を表示します。
#--------------------------------------------------------------------------
end
#******************************************************************************
# ▼ モジュール部
#******************************************************************************
#==============================================================================
# ■ ZiifSaveLayoutA
#==============================================================================
module ZiifSaveLayoutA
#--------------------------------------------------------------------------
# ● セーブファイル数の取得
#--------------------------------------------------------------------------
def self.savefile_max
File_column * File_row
end
#--------------------------------------------------------------------------
# ● セーブ背景画象があるかどうか
#--------------------------------------------------------------------------
def self.save_background?
SaveBackground != ""
end
#--------------------------------------------------------------------------
# ● セーブ背景ビットマップの取得
#--------------------------------------------------------------------------
def self.save_background_bitmap
Cache.picture(SaveBackground)
end
#--------------------------------------------------------------------------
# ● ロード背景画象があるかどうか
#--------------------------------------------------------------------------
def self.load_background?
LoadBackground != ""
end
#--------------------------------------------------------------------------
# ● ロード背景ビットマップの取得
#--------------------------------------------------------------------------
def self.load_background_bitmap
Cache.picture(LoadBackground)
end
end
#==============================================================================
# ■ ZiifManager
#==============================================================================
module ZiifManager
#--------------------------------------------------------------------------
# ● ストーリー名の取得
#--------------------------------------------------------------------------
def self.story_name(story_id)
StorySet[story_id]
end
#--------------------------------------------------------------------------
# ● エリア名の取得
#--------------------------------------------------------------------------
def self.area_name(map_id, region_id = nil)
AreaSet[map_id][region_id] || map_name(map_id)
end
#--------------------------------------------------------------------------
# ● マップ名の取得
#--------------------------------------------------------------------------
def self.map_name(map_id)
@map_name_cache ||= {}
unless @map_name_cache[map_id]
map = load_data(sprintf("Data/Map%03d.rvdata2", map_id)) rescue nil
@map_name_cache[map_id] = (map ? map.display_name : "No MapData")
end
@map_name_cache[map_id]
end
end
#==============================================================================
# ■ ZiifManager::DrawingModule
#==============================================================================
module ZiifManager::DrawingModule
#--------------------------------------------------------------------------
# ● ストーリー名文本色の取得
#--------------------------------------------------------------------------
def story_color
ZiifManager::Story_Color
end
#--------------------------------------------------------------------------
# ● エリア名文本色の取得
#--------------------------------------------------------------------------
def area_color
ZiifManager::Area_Color
end
#--------------------------------------------------------------------------
# ● ファイル番号の描画
#--------------------------------------------------------------------------
def draw_file_number(index, x, y, enabled = true, width = 120, align = 0)
change_color(normal_color, enabled)
draw_text(x, y, width, line_height, Vocab::File + " #{index + 1}", align)
end
#--------------------------------------------------------------------------
# ● ストーリー名の描画
#--------------------------------------------------------------------------
def draw_story_name(story_id, x, y, width = 256, align = 0)
change_color(story_color)
text = ZiifManager.story_name(story_id)
draw_text(x, y, width, line_height, text, align)
end
#--------------------------------------------------------------------------
# ● エリア名の描画
#--------------------------------------------------------------------------
def draw_area_map(map_id, region_id, x, y, width = 256, align = 0)
change_color(area_color)
text = ZiifManager.area_name(map_id, region_id)
draw_text(x, y, width, line_height, text, align)
end
end
#==============================================================================
# ■ DataManager
#==============================================================================
class << DataManager
#--------------------------------------------------------------------------
# ☆ セーブファイルの最大数 (再定义)
#--------------------------------------------------------------------------
def savefile_max
return ZiifSaveLayoutA.savefile_max
end
#--------------------------------------------------------------------------
# ● セーブヘッダの作成
#--------------------------------------------------------------------------
alias :ziif_save_layout_01_make_save_header :make_save_header
def make_save_header
header = ziif_save_layout_01_make_save_header
header[:story_id] = $game_system.ziif_story_id
header[:map_id] = $game_map.map_id
header[:region_id] = $game_player.region_id
header[:gold] = $game_party.gold
header[:faces] = $game_party.ziif_faces_for_savefile
header[:leader] = $game_party.ziif_leader_for_savefile
header
end
end
#******************************************************************************
# ▼ ゲームオブジェクト部
#******************************************************************************
#==============================================================================
# ■ Game_System
#==============================================================================
class Game_System
#--------------------------------------------------------------------------
# ● ストーリーIDの取得
#--------------------------------------------------------------------------
def ziif_story_id
$game_variables[ZiifManager::Story_VarID]
end
end
#==============================================================================
# ■ Game_Party
#==============================================================================
class Game_Party
#--------------------------------------------------------------------------
# ● セーブファイル表示用の顔グラフィック画象情报
#--------------------------------------------------------------------------
def ziif_faces_for_savefile
battle_members.collect do |actor|
[actor.face_name, actor.face_index]
end
end
#--------------------------------------------------------------------------
# ● セーブファイル表示用のリーダー情报
#--------------------------------------------------------------------------
def ziif_leader_for_savefile
return leader
end
end
#******************************************************************************
# ▼ ウィンドウ部
#******************************************************************************
#==============================================================================
# ■ Window_ZiifFileList
#------------------------------------------------------------------------------
# ファイル画面で、セーブファイルの一覧を表示するウィンドウです。
#==============================================================================
class Window_ZiifFileList < Window_Selectable
#--------------------------------------------------------------------------
# ● Mix-In
#--------------------------------------------------------------------------
include ZiifManager::DrawingModule # 描画机能追加モジュール
#--------------------------------------------------------------------------
# ● オブジェクト初期化
#--------------------------------------------------------------------------
def initialize
rect = window_rect
super(rect.x, rect.y, rect.width, rect.height)
self.opacity = 0
refresh
activate
end
#--------------------------------------------------------------------------
# ● ウィンドウの表示范囲を取得
#--------------------------------------------------------------------------
def window_rect
rect = Rect.new
rect.x = 4
rect.y = 48
rect.width = Graphics.width-8
rect.height = fitting_height(ZiifSaveLayoutA::D_LineNumber)
rect
end
#--------------------------------------------------------------------------
# ● 桁数の取得
#--------------------------------------------------------------------------
def col_max
ZiifSaveLayoutA::File_column
end
#--------------------------------------------------------------------------
# ● 项目数の取得
#--------------------------------------------------------------------------
def item_max
DataManager.savefile_max
end
#--------------------------------------------------------------------------
# ● アライメントの取得
#--------------------------------------------------------------------------
def alignment
return ZiifSaveLayoutA::File_Align
end
#--------------------------------------------------------------------------
# ● ファイル名の描画判定
#--------------------------------------------------------------------------
def file_number_draw?
!ZiifSaveLayoutA::D_StoryList
end
#--------------------------------------------------------------------------
# ● ストーリー名の描画判定
#--------------------------------------------------------------------------
def story_name_draw?
ZiifSaveLayoutA::D_StoryList
end
#--------------------------------------------------------------------------
# ● セーブヘッダの取得
#--------------------------------------------------------------------------
def header(index)
DataManager.load_header(index)
end
#--------------------------------------------------------------------------
# ● セーブファイルが存在しているかどうか
#--------------------------------------------------------------------------
def enable?(index)
header(index)
end
#--------------------------------------------------------------------------
# ● 决定ボタンが押されたときの処理 (决定サウンドを鸣らさない)
#--------------------------------------------------------------------------
def process_ok
if current_item_enabled?
Input.update
deactivate
call_ok_handler
else
Sound.play_buzzer
end
end
#--------------------------------------------------------------------------
# ● 选択项目の有効状态を取得
#--------------------------------------------------------------------------
def current_item_enabled?
!SceneManager.scene_is?(Scene_Load) || enable?(self.index)
end
#--------------------------------------------------------------------------
# ● 项目の描画
#--------------------------------------------------------------------------
def draw_item(index)
rect = item_rect(index)
# ファイル番号を描画
if file_number_draw?
draw_file_number(index,rect.x,rect.y,enable?(index),rect.width,alignment)
end
# ストーリー名を描画
if story_name_draw?
header = header(index)
if header && header[:story_id]
draw_story_name(header[:story_id],rect.x,rect.y,rect.width,alignment)
else
change_color(normal_color, false)
draw_text(rect, ZiifSaveLayoutA::V_None, alignment)
end
end
end
end
#==============================================================================
# ■ Window_ZiifSaveFile
#------------------------------------------------------------------------------
# ファイル画面でファイル情报を表示するウィンドウです。
#==============================================================================
class Window_ZiifSaveFile < Window_Base
#--------------------------------------------------------------------------
# ● Mix-In
#--------------------------------------------------------------------------
include ZiifManager::DrawingModule # 描画机能追加モジュール
#--------------------------------------------------------------------------
# ● 公开インスタンス変数
#--------------------------------------------------------------------------
attr_reader :selected # 选択状态
attr_reader :header # セーブヘッダ
#--------------------------------------------------------------------------
# ● オブジェクト初期化
# index : セーブファイルのインデックス
#--------------------------------------------------------------------------
def initialize(dummy_height, index)
rect = window_rect
super(rect.x, rect.y, rect.width, rect.height)
self.opacity = 0 if ZiifSaveLayoutA::WindowTransparency
@file_index = index
clear_header
refresh
self.visible = false
@selected = false
end
#--------------------------------------------------------------------------
# ● ウィンドウの表示范囲を取得
#--------------------------------------------------------------------------
def window_rect
rect = Rect.new
rect.x = ZiifSaveLayoutA::WindowMargin
rect.y = Graphics.height - ZiifSaveLayoutA::WindowMargin
rect.width = Graphics.width - ZiifSaveLayoutA::WindowMargin * 2
rect.height = fitting_height(ZiifSaveLayoutA::WindowLineNumber)
rect.y -= rect.height
rect
end
#--------------------------------------------------------------------------
# ● 选択状态の设置
#--------------------------------------------------------------------------
def selected=(selected)
@selected = selected
update_select
end
#--------------------------------------------------------------------------
# ● 选択状态の更新
#--------------------------------------------------------------------------
def update_select
self.visible = self.selected
update
end
#--------------------------------------------------------------------------
# ● セーブヘッダのロード
#--------------------------------------------------------------------------
def load_header
@header = DataManager.load_header(@file_index)
end
#--------------------------------------------------------------------------
# ● セーブヘッダのクリア
#--------------------------------------------------------------------------
def clear_header
@header = nil
end
#--------------------------------------------------------------------------
# ● ファイル情报があるかどうか
#--------------------------------------------------------------------------
def header?(symbol)
@header && @header[symbol]
end
#--------------------------------------------------------------------------
# ● リフレッシュ
#--------------------------------------------------------------------------
def refresh
contents.clear
load_header
draw_file_contents
draw_no_file unless @header
clear_header
end
#--------------------------------------------------------------------------
# ○ ファイル内容の描画 (素材下部にて再定义)
#--------------------------------------------------------------------------
def draw_file_contents
end
#--------------------------------------------------------------------------
# ● ファイルなしの描画
#--------------------------------------------------------------------------
def draw_no_file
rect = Rect.new(0, 0, contents.width, line_height)
rect.y = (contents.height - rect.height) / 2
change_color(normal_color, false)
draw_text(rect, ZiifSaveLayoutA::V_None, 1)
end
end
#==============================================================================
# ■ Window_ZiifFileConfirmation
#------------------------------------------------------------------------------
# ファイル画面でセーブ・ロード确认コマンドを表示するウィンドウです。
#==============================================================================
class Window_ZiifFileConfirmation < Window_Command
#--------------------------------------------------------------------------
# ● オブジェクト初期化
#--------------------------------------------------------------------------
def initialize
super(window_x, window_y)
self.z = 200
self.openness = 0
deactivate
end
#--------------------------------------------------------------------------
# ● ウィンドウ X 坐标 の取得
#--------------------------------------------------------------------------
def window_x
return (Graphics.width-window_width) / 2
end
#--------------------------------------------------------------------------
# ● ウィンドウ Y 坐标 の取得
#--------------------------------------------------------------------------
def window_y
return (Graphics.height-window_height) / 2
end
#--------------------------------------------------------------------------
# ● ウィンドウ幅の取得
#--------------------------------------------------------------------------
def window_width
return 128
end
#--------------------------------------------------------------------------
# ● 表示行数の取得
#--------------------------------------------------------------------------
def visible_line_number
return 2
end
#--------------------------------------------------------------------------
# ● デフォルト位置を选択
#--------------------------------------------------------------------------
def select_default
end
end
#==============================================================================
# ■ Window_ZiifSaveConfirmation
#------------------------------------------------------------------------------
# セーブ画面で确认コマンドを表示するウィンドウです。
#==============================================================================
class Window_ZiifSaveConfirmation < Window_ZiifFileConfirmation
#--------------------------------------------------------------------------
# ● コマンドリストの作成
#--------------------------------------------------------------------------
def make_command_list
add_command(ZiifSaveLayoutA::V_SConfirmationYes, :save)
add_command(ZiifSaveLayoutA::V_SConfirmationNo, :cancel)
end
#--------------------------------------------------------------------------
# ● ヘルプテキスト更新
#--------------------------------------------------------------------------
def update_help
@help_window.set_text(ZiifSaveLayoutA::V_SConfirmation)
end
#--------------------------------------------------------------------------
# ● デフォルト位置を选択
#--------------------------------------------------------------------------
def select_default
select(ZiifSaveLayoutA::SConfirmationDefault)
end
#--------------------------------------------------------------------------
# ● 决定ボタンが押されたときの処理 (セーブ时サウンドを鸣らさない)
#--------------------------------------------------------------------------
def process_ok
return super if current_symbol != :save
if current_item_enabled?
Input.update
deactivate
call_ok_handler
else
Sound.play_buzzer
end
end
end
#==============================================================================
# ■ Window_ZiifLoadConfirmation
#------------------------------------------------------------------------------
# ロード画面で确认コマンドを表示するウィンドウです。
#==============================================================================
class Window_ZiifLoadConfirmation < Window_ZiifFileConfirmation
#--------------------------------------------------------------------------
# ● コマンドリストの作成
#--------------------------------------------------------------------------
def make_command_list
add_command(ZiifSaveLayoutA::V_LConfirmationYes, :load)
add_command(ZiifSaveLayoutA::V_LConfirmationNo, :cancel)
end
#--------------------------------------------------------------------------
# ● ヘルプテキスト更新
#--------------------------------------------------------------------------
def update_help
@help_window.set_text(ZiifSaveLayoutA::V_LConfirmation)
end
#--------------------------------------------------------------------------
# ● デフォルト位置を选択
#--------------------------------------------------------------------------
def select_default
select(ZiifSaveLayoutA::LConfirmationDefault)
end
#--------------------------------------------------------------------------
# ● 决定ボタンが押されたときの処理 (ロード时サウンドを鸣らさない)
#--------------------------------------------------------------------------
def process_ok
return super if current_symbol != :load
if current_item_enabled?
Input.update
deactivate
call_ok_handler
else
Sound.play_buzzer
end
end
end
#******************************************************************************
# ▼ シーン部
#******************************************************************************
#==============================================================================
# ■ Scene_File
#==============================================================================
class Scene_File
#--------------------------------------------------------------------------
# ● 背景画象があるかどうか
#--------------------------------------------------------------------------
def ziif_file_background?
return false
end
#--------------------------------------------------------------------------
# ● 背景ビットマップの取得
#--------------------------------------------------------------------------
def ziif_file_background_bitmap
SceneManager.background_bitmap
end
#--------------------------------------------------------------------------
# ● セーブ・ロードの确认をするかどうか
#--------------------------------------------------------------------------
def file_confirm?
return false
end
#--------------------------------------------------------------------------
# ● セーブ・ロード确认ウィンドウの取得
#--------------------------------------------------------------------------
def confirmation_window
return Window_ZiifFileConfirmation
end
#--------------------------------------------------------------------------
# ● 背景の作成
#--------------------------------------------------------------------------
alias :ziif_save_layout_01_create_background :create_background
def create_background
if ziif_file_background?
create_ziif_file_background
else
ziif_save_layout_01_create_background
end
end
#--------------------------------------------------------------------------
# ● ファイル画面の背景の作成
#--------------------------------------------------------------------------
def create_ziif_file_background
@background_sprite = Sprite.new
@background_sprite.bitmap = ziif_file_background_bitmap
end
#--------------------------------------------------------------------------
# ● ヘルプウィンドウの作成
#--------------------------------------------------------------------------
alias :ziif_save_layout_01_create_help_window :create_help_window
def create_help_window
ziif_save_layout_01_create_help_window
@help_window.opacity = 0 if ZiifSaveLayoutA::HelpWTransparency
end
#--------------------------------------------------------------------------
# ☆ セーブファイルウィンドウの作成 (再定义)
#--------------------------------------------------------------------------
def create_savefile_windows
create_filelist_window
create_savefile_windows_sub
create_confirmation_window
end
#--------------------------------------------------------------------------
# ● ファイルリストウィンドウの作成
#--------------------------------------------------------------------------
def create_filelist_window
@filelist_window = Window_ZiifFileList.new
@filelist_window.set_handler(:ok, method(:on_filelist_ok))
@filelist_window.set_handler(:cancel, method(:return_scene))
end
#--------------------------------------------------------------------------
# ● セーブファイルウィンドウの作成 (サブ定义)
#--------------------------------------------------------------------------
def create_savefile_windows_sub
@savefile_windows = Array.new(item_max) do |i|
Window_ZiifSaveFile.new(0, i)
end
end
#--------------------------------------------------------------------------
# ● セーブ・ロード确认ウィンドウの作成
#--------------------------------------------------------------------------
def create_confirmation_window
@confirmation_window = confirmation_window.new
@confirmation_window.help_window = @help_window
@confirmation_window.set_handler(:ok, method(:on_confirmation_ok))
@confirmation_window.set_handler(:cancel, method(:on_confirmation_cancel))
@confirmation_window.select_default
end
#--------------------------------------------------------------------------
# ☆ 选択状态の初期化 (再定义)
#--------------------------------------------------------------------------
def init_selection
@filelist_window.select(first_savefile_index)
@savefile_windows[index].selected = true
@last_index = index
set_file_index
end
#--------------------------------------------------------------------------
# ☆ 现在のインデックスの取得 (再定义)
#--------------------------------------------------------------------------
def index
@filelist_window.index
end
#--------------------------------------------------------------------------
# ● インデックス设置
#--------------------------------------------------------------------------
def set_file_index
@index = index
end
#--------------------------------------------------------------------------
# ☆ セーブファイル选択の更新 (再定义)
#--------------------------------------------------------------------------
def update_savefile_selection
if index != @last_index
set_file_index
@savefile_windows[@last_index].selected = false
@savefile_windows[index].selected = true
@last_index = index
end
end
#--------------------------------------------------------------------------
# ● ファイルリスト[决定]
#--------------------------------------------------------------------------
def on_filelist_ok
set_file_index
if file_confirm?
Sound.play_ok
activate_confirmation_window
else
on_savefile_ok
end
end
#--------------------------------------------------------------------------
# ● 确认ウィンドウをアクティブ化
#--------------------------------------------------------------------------
def activate_confirmation_window
@confirmation_window.activate
@confirmation_window.open
end
#--------------------------------------------------------------------------
# ● セーブ・ロード确认[决定]
#--------------------------------------------------------------------------
def on_confirmation_ok
on_savefile_ok
end
#--------------------------------------------------------------------------
# ● セーブ・ロード确认[キャンセル]
#--------------------------------------------------------------------------
def on_confirmation_cancel
@help_window.set_text(help_window_text)
@confirmation_window.select_default
@confirmation_window.close
@filelist_window.activate
end
end
#==============================================================================
# ■ Scene_Save
#==============================================================================
class Scene_Save
#--------------------------------------------------------------------------
# ● 背景画象があるかどうか
#--------------------------------------------------------------------------
def ziif_file_background?
ZiifSaveLayoutA.save_background?
end
#--------------------------------------------------------------------------
# ● 背景ビットマップの取得
#--------------------------------------------------------------------------
def ziif_file_background_bitmap
ZiifSaveLayoutA.save_background_bitmap
end
#--------------------------------------------------------------------------
# ● セーブ・ロードの确认をするかどうか
#--------------------------------------------------------------------------
def file_confirm?
ZiifSaveLayoutA::SaveConfirm
end
#--------------------------------------------------------------------------
# ● セーブ・ロード确认ウィンドウの取得
#--------------------------------------------------------------------------
def confirmation_window
return Window_ZiifSaveConfirmation
end
#--------------------------------------------------------------------------
# ● セーブファイルの决定
#--------------------------------------------------------------------------
alias :ziif_save_layout_01_save_on_savefile_ok :on_savefile_ok
def on_savefile_ok
ziif_save_layout_01_save_on_savefile_ok
@confirmation_window.close
@filelist_window.activate
end
end
#==============================================================================
# ■ Scene_Load
#==============================================================================
class Scene_Load
#--------------------------------------------------------------------------
# ● 背景画象があるかどうか
#--------------------------------------------------------------------------
def ziif_file_background?
ZiifSaveLayoutA.load_background?
end
#--------------------------------------------------------------------------
# ● 背景ビットマップの取得
#--------------------------------------------------------------------------
def ziif_file_background_bitmap
ZiifSaveLayoutA.load_background_bitmap
end
#--------------------------------------------------------------------------
# ● セーブ・ロードの确认をするかどうか
#--------------------------------------------------------------------------
def file_confirm?
ZiifSaveLayoutA::LoadConfirm
end
#--------------------------------------------------------------------------
# ● セーブ・ロード确认ウィンドウの取得
#--------------------------------------------------------------------------
def confirmation_window
return Window_ZiifLoadConfirmation
end
#--------------------------------------------------------------------------
# ● セーブファイルの决定
#--------------------------------------------------------------------------
alias :ziif_save_layout_01_load_on_savefile_ok :on_savefile_ok
def on_savefile_ok
ziif_save_layout_01_load_on_savefile_ok
@confirmation_window.close
@filelist_window.activate
end
end
#******************************************************************************
# ▼ ラインヘルプ机能部
#******************************************************************************
#-memo-------------------------------------------------------------------------
# ラインヘルプウィンドウスクリプトを导入する场合に使用します。
#------------------------------------------------------------------------------
#==============================================================================
# ■ Window_ZiifFileList
#==============================================================================
class Window_ZiifFileList < Window_Selectable
#--------------------------------------------------------------------------
# ● ウィンドウの表示范囲を取得
#--------------------------------------------------------------------------
alias :ziif_line_help_file_window_rect :window_rect
def window_rect
rect = ziif_line_help_file_window_rect
rect.y -= 6 if $ziifee[:LineHelp]
rect
end
end
#==============================================================================
# ■ Scene_File
#==============================================================================
class Scene_File
#--------------------------------------------------------------------------
# ● ヘルプウィンドウの作成
#--------------------------------------------------------------------------
alias :ziif_line_help_file_create_help_window :create_help_window
def create_help_window
return ziif_line_help_file_create_help_window unless $ziifee[:LineHelp]
@help_window = Window_ZiifLineHelp.new(1)
@help_window.set_text(help_window_text)
end
end
#******************************************************************************
# ▼ ファイル情报描画部
#******************************************************************************
#-memo-------------------------------------------------------------------------
# ここから下を削除して、Window_ZiifSaveFile に直接记述する事もできます。
#------------------------------------------------------------------------------
#==============================================================================
# ■ Window_ZiifSaveFile
#==============================================================================
class Window_ZiifSaveFile
#--------------------------------------------------------------------------
# ● ファイル内容の描画
#--------------------------------------------------------------------------
def draw_file_contents
draw_file_info
draw_party_info
draw_leader_info
draw_party_faces
draw_party_characters
end
#--------------------------------------------------------------------------
# ● ファイル情报の描画
#--------------------------------------------------------------------------
def draw_file_info
draw_x = 4
# ファイル番号
if ZiifSaveLayoutA::D_File
draw_file_number(@file_index, draw_x, 0)
draw_x += 128
end
# ストーリー名
if ZiifSaveLayoutA::D_Story && header?(:story_id)
draw_story_name(@header[:story_id], draw_x, 0)
end
# プレイタイム
if ZiifSaveLayoutA::D_Playtime && header?(:playtime_s)
change_color(normal_color)
draw_text(4, 0, contents.width - 8, line_height, @header[:playtime_s], 2)
end
end
#--------------------------------------------------------------------------
# ● 通货単位の取得
#--------------------------------------------------------------------------
def currency_unit
Vocab::currency_unit
end
#--------------------------------------------------------------------------
# ● 所持金・マップ情报の描画
#--------------------------------------------------------------------------
def draw_party_info
draw_y = contents.height - line_height
# エリア・マップ名
if ZiifSaveLayoutA::D_Area && header?(:map_id)
map_align = (ZiifSaveLayoutA::D_AG_Line ? 0 : 2)
map_id = @header[:map_id]
region_id = @header[:region_id]
draw_area_map(map_id, region_id, 4, draw_y, contents.width-8, map_align)
draw_y -= line_height unless ZiifSaveLayoutA::D_AG_Line
end
# 所持金
if ZiifSaveLayoutA::D_Gold && header?(:gold)
gold = @header[:gold]
draw_currency_value(gold, currency_unit, 4, draw_y, contents.width - 8)
end
end
#--------------------------------------------------------------------------
# ● ファイル情报を描画したかどうか
#--------------------------------------------------------------------------
def file_info_draw?
ZiifSaveLayoutA::D_File || ZiifSaveLayoutA::D_Story ||
ZiifSaveLayoutA::D_Playtime
end
#--------------------------------------------------------------------------
# ● リーダー情报の描画
#--------------------------------------------------------------------------
def draw_leader_info
return 0, 0 unless ZiifSaveLayoutA::D_LeaderInfo && header?(:leader)
actor = @header[:leader]
draw_x = 4
draw_y = (file_info_draw? ? line_height : 0)
# 顔グラフィック
if ZiifSaveLayoutA::D_Face
draw_actor_face(actor, draw_x, draw_y)
draw_x += 100
end
bw = draw_leader_base_info(actor, draw_x, draw_y + line_height)
nw = draw_leader_name_info(actor, draw_x, draw_y) - draw_x
# 详细情报の描画位置调整
if nw <= bw && bw > 0
draw_x += bw + 8
elsif nw > 0 && bw == 0
draw_y += line_height
elsif nw > bw && bw > 0
draw_x += bw + 8
draw_y += line_height
end
# 能力値
param_width = contents.width - draw_x
line = draw_leader_parameters(actor, draw_x, draw_y, param_width)
draw_y += line * line_height
# 装备
line = draw_leader_equipments(actor, draw_x + 16, draw_y)
draw_y += line * line_height
return draw_x, draw_y
end
#--------------------------------------------------------------------------
# ● リーダーの基本情报の描画 (最大描画幅を返す)
#--------------------------------------------------------------------------
def draw_leader_base_info(actor, x, y)
draw_width = 0
# レベル (名前の下に表示する场合)
if ZiifSaveLayoutA::D_Level && ZiifSaveLayoutA::D_UnderName == :level
draw_actor_level(actor, x, y)
draw_width = [draw_width, 96].max
end
# 职业 (名前の下に表示する场合)
if ZiifSaveLayoutA::D_Class && ZiifSaveLayoutA::D_UnderName == :class
draw_actor_class(actor, x, y)
draw_width = [draw_width, 112].max
end
# HP・MP
if ZiifSaveLayoutA::D_HPMP
draw_actor_hp(actor, x, y + line_height * 1)
draw_actor_mp(actor, x, y + line_height * 2)
draw_width = [draw_width, 124].max
end
return draw_width
end
#--------------------------------------------------------------------------
# ● リーダーのネーム情报の描画 (描画位置を返す)
#--------------------------------------------------------------------------
def draw_leader_name_info(actor, x, y)
draw_x = x
# 名前
if ZiifSaveLayoutA::D_Name
draw_actor_name(actor, draw_x, y)
draw_x += 126
end
# レベル (名前の下に表示しない场合)
if ZiifSaveLayoutA::D_Level && ZiifSaveLayoutA::D_UnderName != :level
draw_actor_level(actor, draw_x, y)
draw_x += 80
end
# 职业 (名前の下に表示しない场合)
if ZiifSaveLayoutA::D_Class && ZiifSaveLayoutA::D_UnderName != :class
draw_actor_class(actor, draw_x, y)
draw_x += 110
end
# 二つ名
if ZiifSaveLayoutA::D_Nickname
draw_actor_nickname(actor, draw_x, y)
draw_x += 180
end
return draw_x
end
#--------------------------------------------------------------------------
# ● リーダーの能力値の描画 (描画行数を返す)
#--------------------------------------------------------------------------
def draw_leader_parameters(actor, x, y, width = 120)
return 0 unless ZiifSaveLayoutA::D_Param
col_num = [width / 128, 1].max
draw_width = width / col_num
6.times do |i|
draw_x = x + draw_width * (i % col_num) + 4
draw_y = y + line_height * (i / col_num)
draw_actor_param_with_width(actor, draw_x, draw_y, i + 2, draw_width - 8)
end
return (5 + col_num) / col_num
end
#--------------------------------------------------------------------------
# ● 能力値の描画 (横幅付きで描画)
#--------------------------------------------------------------------------
def draw_actor_param_with_width(actor, x, y, param_id, width)
change_color(system_color)
draw_text(x, y, width - 36, line_height, Vocab::param(param_id))
change_color(normal_color)
draw_text(x + width - 36, y, 36, line_height, actor.param(param_id), 2)
end
#--------------------------------------------------------------------------
# ● リーダーの装备品の描画 (描画行数を返す)
#--------------------------------------------------------------------------
def draw_leader_equipments(actor, x, y)
return 0 unless ZiifSaveLayoutA::D_Equip
actor.equips.each_with_index do |item, i|
draw_item_name(item, x, y + line_height * i)
end
return actor.equips.size
end
#--------------------------------------------------------------------------
# ● リーダー情报で顔グラフィック描画をしたかどうか (パーティ表示用)
#--------------------------------------------------------------------------
def leader_face_draw?
header?(:leader) &&
ZiifSaveLayoutA::D_LeaderInfo && ZiifSaveLayoutA::D_Face
end
#--------------------------------------------------------------------------
# ● パーティの顔グラフィックの描画
#--------------------------------------------------------------------------
def draw_party_faces
return unless ZiifSaveLayoutA::D_PartyFaces && header?(:faces)
draw_y = (file_info_draw? ? line_height : 0)
draw_y += [96, line_height * 4].max if ZiifSaveLayoutA::D_LeaderInfo
draw_x = 4
@header[:faces].each_with_index do |data, i|
next if i == 0 && leader_face_draw?
draw_face_height88(data[0], data[1], draw_x, draw_y)
draw_x += 100
end
end
#--------------------------------------------------------------------------
# ● パーティの歩行グラフィックの描画
#--------------------------------------------------------------------------
def draw_party_characters
return unless ZiifSaveLayoutA::D_Characters && header?(:characters)
draw_y = contents.height - 8
draw_y -= line_height if ZiifSaveLayoutA::D_AG_Line
draw_x = 28
@header[:characters].each_with_index do |data, i|
draw_character(data[0], data[1], draw_x, draw_y)
draw_x += 48
end
end
#--------------------------------------------------------------------------
# ● 顔グラフィックの描画 (高さを 88px で描画)
#--------------------------------------------------------------------------
def draw_face_height88(face_name, face_index, x, y, enabled = true)
bitmap = Cache.face(face_name)
rect = Rect.new(face_index % 4 * 96, face_index / 4 * 96 + 4, 96, 88)
contents.blt(x, y + 4, bitmap, rect, enabled ? 255 : translucent_alpha)
end
end