❤ 0 Auteur : gagner
Logiciel : RPG Maker XP
Nombre de scripts : 2
Description : Ce script permet au joueur d'effacer une sauvegarde depuis l'écran titre.
Pour commencer, remplacez Scene_Title par le code suivant :
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
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
| #==============================================================================
# ¦ Scene_Title modifié par gagner
# L'écran titre est doté de la fonction "Effacer une partie"
# Ne peut circuler sans le nom de son modificateur
#==============================================================================
class Scene_Title
#--------------------------------------------------------------------------
# ? ?????
#--------------------------------------------------------------------------
def main # quand l'écran titre doit apparaitre
# ????????
if $BTEST
battle_test
return
end
# ??????????
$data_actors = load_data("Data/Actors.rxdata") # chargement des persos
$data_classes = load_data("Data/Classes.rxdata") # des classes
$data_skills = load_data("Data/Skills.rxdata") # des compétences
$data_items = load_data("Data/Items.rxdata") # des objets
$data_weapons = load_data("Data/Weapons.rxdata") # des armes
$data_armors = load_data("Data/Armors.rxdata") # des armures
$data_enemies = load_data("Data/Enemies.rxdata") # et de tout le reste
$data_troops = load_data("Data/Troops.rxdata")
$data_states = load_data("Data/States.rxdata")
$data_animations = load_data("Data/Animations.rxdata")
$data_tilesets = load_data("Data/Tilesets.rxdata")
$data_common_events = load_data("Data/CommonEvents.rxdata")
$data_system = load_data("Data/System.rxdata")
# ?????????????
$game_system = Game_System.new
# ?????????????
@sprite = Sprite.new # on créé un image
@sprite.bitmap = RPG::Cache.title($data_system.title_name) # cette image est celle de l'écran titre
# ????????????
s1 = "Nouvelle partie" # premier choix
s2 = "Charger une partie" # deuxième choix
s3 = "Effacer une partie" # le nouveau choix (3ème choix)
s4 = "Quitter" # 4ème choix
@command_window = Window_Command.new(192, [s1, s2, s3, s4]) # on créé le cadre
@command_window.back_opacity = 160 # sa transparence
@command_window.x = 320 - @command_window.width / 2 # sa position horizontale
@command_window.y = 288 # sa position verticale
#
@continue_enabled = false
for i in 0..3
if FileTest.exist?("Save#{i+1}.rxdata")
@continue_enabled = true
end
end
if @continue_enabled
@command_window.index = 1
else
@command_window.disable_item(1)
@command_window.disable_item(2)
end
# les lignes précédentes indiquent que quand il y a un fichier qui existe le curseur va direct
# sur "Charger une partie", dans le cas contraire celui-ci est grisé, ainsi que "Effacer une partie"
$game_system.bgm_play($data_system.title_bgm) # musique de l'écran titre
Audio.me_stop # on arrete le ME (music effects)
Audio.bgs_stop # et le BGS (background sounds)
#
Graphics.transition
loop do
Graphics.update
Input.update
update
if $scene != self
break
end
end
Graphics.freeze
@command_window.dispose
@sprite.bitmap.dispose
@sprite.dispose
# les lignes précédentes préparent l'écran titre
end
#--------------------------------------------------------------------------
# ? ??????
#--------------------------------------------------------------------------
def update
# ????????????
@command_window.update
# C ??????????
if Input.trigger?(Input::C) # si C (= barre espace) est pressée
# ???????????????????
case @command_window.index
when 0 # quand curseur sur "nouvelle partie"
command_new_game # emmène sur "def command new_game"
when 1 # quand curseur sur "charger partie"
command_continue # emmène sur "def command continue"
when 2 # quand curseur sur "effacer partie"
command_delete # emmène sur "def command delete"
when 3 # quand curseur sur "quitter"
command_shutdown # emmène sur "def command shutdown"
end
end
end
#--------------------------------------------------------------------------
# ? ???? : ??????
#--------------------------------------------------------------------------
def command_new_game
# ?? SE ???
$game_system.se_play($data_system.decision_se) # joue le SE de validation
# BGM ???
Audio.bgm_stop # on arrete le BGM (= background music), ici la musique de l'écran titre
#
Graphics.frame_count = 0
# après on met tout ce qu'il faut pour pouvoir jouer :
$game_temp = Game_Temp.new
$game_system = Game_System.new
$game_switches = Game_Switches.new
$game_variables = Game_Variables.new
$game_self_switches = Game_SelfSwitches.new
$game_screen = Game_Screen.new
$game_actors = Game_Actors.new
$game_party = Game_Party.new
$game_troop = Game_Troop.new
$game_map = Game_Map.new
$game_player = Game_Player.new
# ?????????????
$game_party.setup_starting_members
# ???????????????
$game_map.setup($data_system.start_map_id) # map de départ
# ?????????????
$game_player.moveto($data_system.start_x, $data_system.start_y) # position x et y de départ
# ????????????
$game_player.refresh
# ??????????? BGM ? BGS ??????????
$game_map.autoplay
# ?????? (????????)
$game_map.update
# ??????????
$scene = Scene_Map.new # on va sur la map
end
#--------------------------------------------------------------------------
# ? ???? : ???????
#--------------------------------------------------------------------------
def command_continue
# ?????????????
unless @continue_enabled # si aucun fichier n'existe
$game_system.se_play($data_system.buzzer_se) # dans ce cas : SE d'erreur
return
end
# sinon
$game_system.se_play($data_system.decision_se) # SE de validation
#
$scene = Scene_Load.new # on va choisir le fichier à charger
end
#--------------------------------------------------------------------------
# ? ???? : ???????
#--------------------------------------------------------------------------
def command_shutdown
# ?? SE ???
$game_system.se_play($data_system.decision_se) # SE de validation
# BGM?BGS?ME ????????
Audio.bgm_fade(800) # on stoppe doucement le BGM
Audio.bgs_fade(800) # on stoppe doucement le BGS
Audio.me_fade(800) # on stoppe doucement le ME
# ???????
$scene = nil # scene = rien autrement dit on ferme tout
end
#
#
#
def command_delete # notre fonction adorée, enfin le meilleur^^
unless @continue_enabled # si aucun fichier n'existe
$game_system.se_play($data_system.buzzer_se) # dans ce cas : SE d'erreur
return
end
# sinon
$game_system.se_play($data_system.decision_se) # SE de validation
$scene = Scene_Delete.new # on va choisir le fichier a supprimer
# la ligne précédente vous invite à voir le script Scene_Delete
end
#--------------------------------------------------------------------------
# ? ?????
#--------------------------------------------------------------------------
def battle_test # cette fonction n'apparait pas dans l'écran titre c'est pour faire un test que
# vous pouvez faire dans base de données/groupe de monstres
# donc je ne vais pas détailler c'est pareil que pour le reste
#
$data_actors = load_data("Data/BT_Actors.rxdata")
$data_classes = load_data("Data/BT_Classes.rxdata")
$data_skills = load_data("Data/BT_Skills.rxdata")
$data_items = load_data("Data/BT_Items.rxdata")
$data_weapons = load_data("Data/BT_Weapons.rxdata")
$data_armors = load_data("Data/BT_Armors.rxdata")
$data_enemies = load_data("Data/BT_Enemies.rxdata")
$data_troops = load_data("Data/BT_Troops.rxdata")
$data_states = load_data("Data/BT_States.rxdata")
$data_animations = load_data("Data/BT_Animations.rxdata")
$data_tilesets = load_data("Data/BT_Tilesets.rxdata")
$data_common_events = load_data("Data/BT_CommonEvents.rxdata")
$data_system = load_data("Data/BT_System.rxdata")
# ??????????????????????
Graphics.frame_count = 0
# ??????????????
$game_temp = Game_Temp.new
$game_system = Game_System.new
$game_switches = Game_Switches.new
$game_variables = Game_Variables.new
$game_self_switches = Game_SelfSwitches.new
$game_screen = Game_Screen.new
$game_actors = Game_Actors.new
$game_party = Game_Party.new
$game_troop = Game_Troop.new
$game_map = Game_Map.new
$game_player = Game_Player.new
# ??????????????????
$game_party.setup_battle_test_members
# ???? ID??????????????????
$game_temp.battle_troop_id = $data_system.test_troop_id
$game_temp.battle_can_escape = true
$game_map.battleback_name = $data_system.battleback_name
# ????? SE ???
$game_system.se_play($data_system.battle_start_se)
# ??? BGM ???
$game_system.bgm_play($game_system.battle_bgm)
# ??????????
$scene = Scene_Battle.new
end
end # de Scene_Title |
Faites un nouveau script au dessus de Main, appelez le Scene_Delete, et collez le code suivant à l'intérieur (la phrase basique^^)
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
| #==============================================================================
# ¦ Scene_Delete créé par gagner
# Supprimer un fichier à partir de l'écran titre
# Ne peut circuler sans le nom de son créateur
#==============================================================================
class Scene_Delete < Scene_File
#--------------------------------------------------------------------------
# ? ?????????
#--------------------------------------------------------------------------
def initialize # quand on appelle Scene_Delete
# bref les quelques lignes suivantes sont du blabla
$game_temp = Game_Temp.new
# ??????????????????
$game_temp.last_file_index = 0
latest_time = Time.at(0)
for i in 0..3
filename = make_filename(i)
if FileTest.exist?(filename)
file = File.open(filename, "r")
if file.mtime > latest_time
latest_time = file.mtime
$game_temp.last_file_index = i
end
file.close
end
end
super("Supprimer quelle partie ?") # affiche tout simplement cette phrase
end
#--------------------------------------------------------------------------
# ? ??????
#--------------------------------------------------------------------------
def on_decision(filename) # quand on a choisi le fichier a supprimer
# ????????????
unless FileTest.exist?(filename) # si le fichier n'existe pas
# ??? SE ???
$game_system.se_play($data_system.buzzer_se) # dans ce cas : SE d'erreur
return
end
# sinon
File.delete(filename, "Save1") # Supprime le fichier sélectionné
rescue Errno::ENOENT # Comme le fichier n'existe plus, le logiciel ne trouve pas le fichier,
# cette ligne empeche de faire foirer le logiciel, et ainsi passer comme si de rien n'était
Audio.se_play("Audio/SE/048-Explosion01") # son quand le fichier est supprimé
$scene = Scene_Delete.new # actualise pour qu'on ne voit plus le fichier affiché
end
#--------------------------------------------------------------------------
# ? ?????????
#--------------------------------------------------------------------------
def on_cancel # annulation
# ????? SE ???
$game_system.se_play($data_system.cancel_se) # SE d'annulation
# ???????????
$scene = Scene_Title.new # retour à l'écran titre
end
end # de Scene_Delete |
Je l'ai essayé sur un projet vierge ... ET CA MARCHE !
ATTENTION !
Si vous avez changé certains scripts (comme Window_SaveFile par exemple) il se peut que ca ne fonctionne pas.
Voilà tout !
Mis à jour le 21 novembre 2020.
|