赞 | 90 |
VIP | 350 |
好人卡 | 311 |
积分 | 101 |
经验 | 150139 |
最后登录 | 2024-7-17 |
在线时间 | 5020 小时 |
Lv4.逐梦者 (版主) 无限の剣制
- 梦石
- 0
- 星屑
- 10074
- 在线时间
- 5020 小时
- 注册时间
- 2013-2-28
- 帖子
- 5030
|
甩个脚本给你
- #==============================================================================
- # ■ VX-RGSS-26 ファイル画面-改 [Ver.1.0.0] by Claimh
- #------------------------------------------------------------------------------
- # ファイル画面を改変します。
- #【変更点】
- # ・ファイル構成変更(FileHader化)
- # ・現在位置表示追加
- # ・顔グラフィック描画追加
- #==============================================================================
- module SaveEx
- # 顔グラフィックで表示
- USE_FACE = false
- # 現在地の表示
- MAP_NAME = true
- # ツリーの親のマップ名を使用する
- BASE_NAME = false
- end
- #==============================================================================
- # ■ Game_Map 拡張メソッド
- #==============================================================================
- class Game_Map
- #--------------------------------------------------------------------------
- # ● マップ名取得
- #--------------------------------------------------------------------------
- def map_name
- mapInfo = load_data(sprintf("Data/MapInfos.rvdata"))
- return mapInfo[@map_id].name
- end
- end
- #==============================================================================
- # ■ FileHeader : セーブファイルヘッダ
- #==============================================================================
- class FileHeader
- attr_reader :characters # キャラクター
- attr_reader :faces # 顔グラフィック
- attr_reader :map_name # マップ名
- #--------------------------------------------------------------------------
- # ● オブジェクト初期化
- #--------------------------------------------------------------------------
- def initialize
- @characters = []
- @faces = []
- for actor in $game_party.members
- @characters.push([actor.character_name, actor.character_index])
- @faces.push([actor.face_name, actor.face_index])
- end
- @map_name = SaveEx::BASE_NAME ? $game_map.base_map_name : $game_map.map_name
- end
- end
- #~ #==============================================================================
- #~ # ■ Window_SaveFile
- #~ #==============================================================================
- class Window_SaveFile < Window_Base
- #--------------------------------------------------------------------------
- # ● 公開インスタンス変数
- #--------------------------------------------------------------------------
- attr_reader :filename # ファイル名
- attr_reader :file_exist # ファイル存在フラグ
- attr_reader :time_stamp # タイムスタンプ
- attr_reader :selected # 選択状態
- #--------------------------------------------------------------------------
- # ● オブジェクト初期化
- # file_index : セーブファイルのインデックス (0~3)
- # filename : ファイル名
- #--------------------------------------------------------------------------
- def initialize(file_index, filename)
- super(0, 56 + file_index % 4 * 90, 544, 90)
- @file_index = file_index
- @filename = filename
- load_gamedata
- refresh
- @selected = false
- end
- #--------------------------------------------------------------------------
- # ● ゲームデータの一部をロード
- # スイッチや変数はデフォルトでは未使用 (地名表示などの拡張用) 。
- #--------------------------------------------------------------------------
- def load_gamedata
- @time_stamp = Time.at(0)
- @file_exist = FileTest.exist?(@filename)
- if @file_exist
- file = File.open(@filename, "r")
- @time_stamp = file.mtime
- begin
- @header = Marshal.load(file)
- @frame_count = Marshal.load(file)
- @last_bgm = Marshal.load(file)
- @last_bgs = Marshal.load(file)
- @game_system = Marshal.load(file)
- @game_message = Marshal.load(file)
- @game_switches = Marshal.load(file)
- @game_variables = Marshal.load(file)
- @total_sec = @frame_count / Graphics.frame_rate
- rescue
- @file_exist = false
- ensure
- file.close
- end
- end
- end
- #--------------------------------------------------------------------------
- # ● リフレッシュ
- #--------------------------------------------------------------------------
- def refresh
- self.contents.clear
- self.contents.font.color = normal_color
- name = Vocab::File + " #{@file_index + 1}"
- self.contents.draw_text(4, 0, 200, WLH, name)
- @name_width = contents.text_size(name).width
- if @file_exist
- SaveEx::USE_FACE ? draw_party_faces(100, -10) : draw_party_characters(152, 58)
- self.contents.draw_text(320-16, 0, 200, WLH, @header.map_name, 2) if SaveEx::MAP_NAME
- draw_playtime(0, 34, contents.width - 4, 2)
- end
- end
- #--------------------------------------------------------------------------
- # ● パーティキャラの描画
- # x : 描画先 X 座標
- # y : 描画先 Y 座標
- #--------------------------------------------------------------------------
- def draw_party_characters(x, y)
- for i in [email protected]
- name = @header.characters[i][0]
- index = @header.characters[i][1]
- draw_character(name, index, x + i * 48, y)
- end
- end
- #--------------------------------------------------------------------------
- # ● パーティキャラの描画
- # x : 描画先 X 座標
- # y : 描画先 Y 座標
- #--------------------------------------------------------------------------
- def draw_party_faces(x, y)
- for i in [email protected]
- name = @header.faces[i][0]
- index = @header.faces[i][1]
- draw_face(name, index, x + i * 90, y) # 4人以上だと文字とかぶる…
- end
- end
- end
- #~ #==============================================================================
- #~ # ■ Scene_File
- #~ #==============================================================================
- class Scene_File < Scene_Base
- #--------------------------------------------------------------------------
- # ● オブジェクト初期化
- # saving : セーブフラグ (false ならロード画面)
- # from_title : タイトルの「コンティニュー」で呼び出されたフラグ
- # from_event : イベントの「セーブ画面の呼び出し」で呼び出されたフラグ
- #--------------------------------------------------------------------------
- def initialize(saving, from_title, from_event, menu_index=4)
- @saving = saving
- @from_title = from_title
- @from_event = from_event
- @menu_index = menu_index
- end
- #--------------------------------------------------------------------------
- # ● 元の画面へ戻る
- #--------------------------------------------------------------------------
- def return_scene
- if @from_title
- $scene = Scene_Title.new
- elsif @from_event
- $scene = Scene_Map.new
- else
- $scene = Scene_Menu.new(1)
- end
- end
- #--------------------------------------------------------------------------
- # ● セーブデータの書き込み
- # file : 書き込み用ファイルオブジェクト (オープン済み)
- #--------------------------------------------------------------------------
- def write_save_data(file)
- header = FileHeader.new
- $game_system.save_count += 1
- $game_system.version_id = $data_system.version_id
- @last_bgm = RPG::BGM::last
- @last_bgs = RPG::BGS::last
- Marshal.dump(header, file)
- Marshal.dump(Graphics.frame_count, file)
- Marshal.dump(@last_bgm, file)
- Marshal.dump(@last_bgs, file)
- Marshal.dump($game_system, file)
- Marshal.dump($game_message, file)
- Marshal.dump($game_switches, file)
- Marshal.dump($game_variables, file)
- Marshal.dump($game_self_switches, file)
- Marshal.dump($game_actors, file)
- Marshal.dump($game_party, file)
- Marshal.dump($game_troop, file)
- Marshal.dump($game_map, file)
- Marshal.dump($game_player, file)
- end
- #--------------------------------------------------------------------------
- # ● セーブデータの読み込み
- # file : 読み込み用ファイルオブジェクト (オープン済み)
- #--------------------------------------------------------------------------
- def read_save_data(file)
- header = Marshal.load(file)
- Graphics.frame_count = Marshal.load(file)
- @last_bgm = Marshal.load(file)
- @last_bgs = Marshal.load(file)
- $game_system = Marshal.load(file)
- $game_message = Marshal.load(file)
- $game_switches = Marshal.load(file)
- $game_variables = Marshal.load(file)
- $game_self_switches = Marshal.load(file)
- $game_actors = Marshal.load(file)
- $game_party = Marshal.load(file)
- $game_troop = Marshal.load(file)
- $game_map = Marshal.load(file)
- $game_player = Marshal.load(file)
- if $game_system.version_id != $data_system.version_id
- $game_map.setup($game_map.map_id)
- $game_player.center($game_player.x, $game_player.y)
- end
- end
- end
复制代码 |
评分
-
查看全部评分
|