Nous construirons le script dans l'ordre ou il se lit, je ne donne pas tout d'un coup, ça évite de faire appel aux numéros des lignes.
- POUR CEUX QUI VEULENT COMPRENDRE :
Bon, tout d'abord, la première chose à faire est d'aller dans les script (par la touche F11 ou en cliquant sur l'icone des scripts).
Une fois dedans, descendez jusqu'en bas, là vous apercevez le script Scene_Title, supprimez tout son contenu, puis copiez à la place ceci :
- Code: Tout sélectionner
#==============================================================================
# ■ Scene_Title
#------------------------------------------------------------------------------
# by Sin
#==============================================================================
class Scene_Title
#--------------------------------------------------------------------------
# ● Initialisation
#--------------------------------------------------------------------------
def main
if $BTEST
battle_test
return
end
# Données
$data_actors = load_data("Data/Actors.rxdata")
$data_classes = load_data("Data/Classes.rxdata")
$data_skills = load_data("Data/Skills.rxdata")
$data_items = load_data("Data/Items.rxdata")
$data_weapons = load_data("Data/Weapons.rxdata")
$data_armors = load_data("Data/Armors.rxdata")
$data_enemies = load_data("Data/Enemies.rxdata")
$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
Une fois cela fait, il faut s'occuper du nombre de choix que comportera votre écran titre. Comme exemple, on prendra deux choix : Nouvelle partie et Charger partie (comme KH ou d'autre jeux...), mais vous pouvez en prendre autant que vous voulez bien sur.
Ce qui détermine le nombre de choix dans un script est la portion de code suivante :
- Code: Tout sélectionner
s1 = ""
s2 = ""
@command_window = Window_Command.new(192, [s1, s2])
@command_window.x = - 850
Dans ce cas, on a deux choix, mais si on veut en mettre trois, alors il suffit de rajouter "s3" entre crochet et rajouter
- Code: Tout sélectionner
s3 = ""
juste en dessous de
- Code: Tout sélectionner
s2 = ""
.
Et vous l'aurez compris, recommencer l'opération pour autant de choix que vous voulez...
Vous noterez que la position en x (axe des abscisses) et de - 850, je l'ai fait exprès pour qu'on ne voit pas le cadre de choix, car on a pas besoin de le voir.
Passons aux images : il va falloir dessiner des images pour chaque configurations (une pour Nouvelle partie, une pour Charger Partie), ce qui vous permet de dessiner les lettres des vos deux choix, et de faire des petits dessins qui bougeront en fonction de la position ou vous trouverez (comme une petite puce, ou une main qui suit votre position sur les choix, vous pouvez aussi créer un petit décalage pour faire comme un système d'onglet, bref, vous pouvez designer facilement l'apparence de votre écran titre.
Cependant, vos images doivent être impérativement en 640*480 pixels.
Voici un exemple test, vite fait :


N'oubliez pas d'importer vos images avec l'importateur (F10) et de faire "Effacer" pour qu'il n'y ait aucun couleur de transparence.
Après collez ce code, il sert à savoir s'il y a des fichiers de sauvegarde ou non, selon l'accès à "charger partie" sera bloqué ou non :
- Code: Tout sélectionner
# On regarde s'il y a des sauvegardes
@continue_enabled = false
for i in 0..3
if FileTest.exist?("Sauvegarde#{i+1}.rxdata")
@continue_enabled = true
end
end
if @continue_enabled
@command_window.index = 1
else
@command_window.disable_item(1)
end
Ensuite, collez ces lignes de script :
- Code: Tout sélectionner
# Nouvelle partie
@np = Sprite.new
@np.bitmap = RPG::Cache.picture("Nouvelle partie")
@np.z = 300
@np.x = 0
@np.y = 0
@np.opacity = 255
# Charger partie
@cp = Sprite.new
@cp.bitmap = RPG::Cache.picture("Charger partie")
@cp.z = 300
@cp.x = 0
@cp.y = 0
@cp.opacity = 0
Là je viens de faire "exister" les deux images dont ont a besoin.
Copiez autant de fois que vous avez d'images les lignes, et mettez les noms des images entre guillemets.
Ensuite collez les codes suivant :
- Code: Tout sélectionner
# BGM
$game_system.bgm_play($data_system.title_bgm)
# Fin BGS et ME
Audio.me_stop
Audio.bgs_stop
# Transition
Graphics.transition
# メインループ
loop do
# update graphique
Graphics.update
Input.update
update
if $scene != self
break
end
end
# Transitions 2
Graphics.freeze
# Effacement des images
@command_window.dispose
@np.dispose
@cp.dispose
end
Comme marqué juste au dessus, il faut indiqué au script que vous supprimez les images une fois l'écran titre passé. Vous mettez donc un
- Code: Tout sélectionner
.dispose
après chaque nom représentatif de vos images (souvenez vous, j'ai dis que pour le script @np correspond à l'image de nouvelle partie).
Ensuite, copiez les code suivant :
- Code: Tout sélectionner
#--------------------------------------------------------------------------
# ● Update
#--------------------------------------------------------------------------
def update
# Rafraichissement
@command_window.update
@np.update
@cp.update
@b.update
@q.update
update_command
# Appuis C
if Input.trigger?(Input::C)
case @command_window.index
when 0 # Commencer
command_new_game
when 1 # Charger
command_continue
end
end
end
Comme pour .dispose, vous devez mettre .update devant vos images.
Dans ce code, vous devez aussi mettre autant de "when" qu'il y a de possibilité, de choix. Et en dessous du when, vous mettez ce que vous voulez qu'il se passe quand le joueur valide et qu'il se trouve sur le choix indiqué par le chifre (0 c'est le première choix, 1 le deuxième, etc...).
Sachez que
- Code: Tout sélectionner
command_shutdown
fait quitter le jeu.
Ensuite copiez coller ce script, toujours à la suite :
- Code: Tout sélectionner
#--------------------------------------------------------------------------
# ● Définition des commandes - Commencer -
#--------------------------------------------------------------------------
def command_new_game
# Nouveau jeu
$game_system.se_play($data_system.decision_se)
# Fin BGM
Audio.bgm_stop
Graphics.frame_count = 0
# Données
$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)
$game_player.moveto($data_system.start_x, $data_system.start_y)
$game_player.refresh
$game_map.autoplay
$game_map.update
# Début du jeu
$scene = Scene_Map.new
end
#--------------------------------------------------------------------------
# ● Définition des commandes - Continue -
#--------------------------------------------------------------------------
def command_continue
# Continue
unless @continue_enabled
# SE
$game_system.se_play($data_system.buzzer_se)
return
end
# SE
$game_system.se_play($data_system.decision_se)
# Chargement
$scene = Scene_Load.new
end
Et puis copiez le code suivant si jamais vous avez mis une possibilité de quitter le jeu :
- Code: Tout sélectionner
#--------------------------------------------------------------------------
# ● Définition des commandes - Quitter -
#--------------------------------------------------------------------------
def command_shutdown
# Fin
$game_system.se_play($data_system.decision_se)
# BGM、BGS、ME
Audio.bgm_fade(800)
Audio.bgs_fade(800)
Audio.me_fade(800)
$scene = nil
end
Le plus important :
- Code: Tout sélectionner
#--------------------------------------------------------------------------
# ● Position dans le menu
#--------------------------------------------------------------------------
def update_command
case @command_window.index
when 0
@np.opacity = 255
@cp.opacity = 0
when 1
@np.opacity = 0
@cp.opacity = 255
end
end
Ce code définis ce qui se passe selon votre position dans les choix, ici il est marqué que si vous êtes sur 0 (le premier choix), l'image nouvelle partie (@np) sera totalement affiché (opacité maximale) alors que l'image de charger partie (@cp) sera invisible. Et c'est l'inverse lorsque l'on se trouve dans la seconde position.
Là est tout le principe du tuto et du script, selon votre position, ce ne sont pas les mêmes images qui vous sont affichés.
On a le même résultat et principes avec les event, mais avouez que le dernier code qui fait 10 ligne au plus est bien plus simple que deux event et des déclencheurs (et fait moins laggé).
Bref, vous n'avez plus qu'a copiez coller ce dernier code et c'est finit :
- Code: Tout sélectionner
#--------------------------------------------------------------------------
# ● 戦闘テスト
#--------------------------------------------------------------------------
def battle_test
# Test
$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
$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)
# Combat
$scene = Scene_Battle.new
end
end