❤ 0 Auteur : Fabien
Logiciel : RPG Maker XP
Nombre de scripts : 1
Il est possible d'adapter les scripts standards des sauvegardes pour en faire ce que l'on veut.
Cette version vous permettra de sauvegarder ou vous voudrez sans passer par le menu de sauvegarde, et dans le fichier que vous voudrez( pas dans 4 emplacements normaux donc).
C'est pratique pour faire des sauvegardes automatiques, entre les scènes par exemple, sans pour autant faire passer le joueur par un point de sauvegarde.
Si vous mettez en scrîpt, dans un évent ou ailleurs
1
| sauver("nom de votre sauvegarde entre guillemets") |
vous sauvegarderez
Et si vous mettez
1
| charger("nom de votre sauvegarde entre guillemets") |
... je vous laisse deviner ce que cela fera.
Vous remarquerez que ceci crée de nouveaux fichiers de sauvegarde à coté des classiques, nommés "nom de votre sauvegarde entre guillemets.rxdata"
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
| def sauver(nom="Continu")
$scene = Scene_Save2.new(nom)
end
def charger(nom="Continu")
$scene = Scene_Load2.new(nom)
end
#==============================================================================
class Scene_File2
#--------------------------------------------------------------------------
def initialize(help_text,nom="Continu")
@help_text = ""
@nom=nom
end
#--------------------------------------------------------------------------
def main
on_decision(@nom+".rxdata")
$game_temp.last_file_index = 1
end
#--------------------------------------------------------------------------
end
#==============================================================================
class Scene_Save2 < Scene_File2
#--------------------------------------------------------------------------
def initialize(nom)
super("",nom)
end
#--------------------------------------------------------------------------
def on_decision(filename)
file = File.open(filename, "wb")
write_save_data(file)
file.close
if $game_temp.save_calling
$game_temp.save_calling = false
$scene = Scene_Map.new
return
end
$scene = Scene_Map.new
end
#--------------------------------------------------------------------------
def write_save_data(file)
characters = []
for i in 0...$game_party.actors.size
actor = $game_party.actors[i]
characters.push([actor.character_name, actor.character_hue])
end
Marshal.dump(characters, file)
Marshal.dump(Graphics.frame_count, file)
$game_system.save_count += 1
$game_system.magic_number = $data_system.magic_number
Marshal.dump($game_system, file)
Marshal.dump($game_switches, file)
Marshal.dump($game_variables, file)
Marshal.dump($game_self_switches, file)
Marshal.dump($game_screen, 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
alias mirror_write_save_data write_save_data
def write_save_data(file)
#$game_map.mirror = nil
mirror_write_save_data(file)
end
end
#==============================================================================
# ■ Scene_Load
#------------------------------------------------------------------------------
# ロード画面の処理を行うクラスです。
#==============================================================================
class Scene_Load2 < Scene_File2
#--------------------------------------------------------------------------
# ● オブジェクト初期化
#--------------------------------------------------------------------------
def initialize(nom)
super("",nom)
@nom=nom
# テンポラリオブジェクトを再作成
end
#--------------------------------------------------------------------------
# ● 決定時の処理
#--------------------------------------------------------------------------
def on_decision(filename)
# ファイルが存在しない場合
unless FileTest.exist?(filename)
# ブザー SE を演奏
$game_system.se_play($data_system.buzzer_se)
return
end
# ロード SE を演奏
$game_system.se_play($data_system.load_se)
# セーブデータの書き込み
file = File.open(filename, "rb")
read_save_data(file)
file.close
# BGM、BGS を復帰
$game_system.bgm_play($game_system.playing_bgm)
$game_system.bgs_play($game_system.playing_bgs)
# マップを更新 (並列イベント実行)
$game_map.update
# マップ画面に切り替え
$scene = Scene_Map.new
end
def read_save_data(file)
# セーブファイル描画用のキャラクターデータを読み込む
characters = Marshal.load(file)
# プレイ時間計測用のフレームカウントを読み込む
Graphics.frame_count = Marshal.load(file)
# 各種ゲームオブジェクトを読み込む
$game_system = Marshal.load(file)
$game_switches = Marshal.load(file)
$game_variables = Marshal.load(file)
$game_self_switches = Marshal.load(file)
$game_screen = 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.magic_number != $data_system.magic_number
# マップをリロード
$game_map.setup($game_map.map_id)
$game_player.center($game_player.x, $game_player.y)
end
# パーティメンバーをリフレッシュ
$game_party.refresh
end
end |
Mis à jour le 21 novembre 2020.
|