Bonjour,
Revenir dans un lieu après GameOver v2
- Auteur : Samarium
- Créé le 20 Juin 2008
- Version 2
- Incompatibilité : Peu
- Libre d'utilisation et de distribution
- RPG Maker XP
[
]Fonctions Après l'écran GameOver, le héros pourra revenir à la dernière auberge
visité. Cependant, si vous le souhaitez, l'argent du héros sera divisé par 2 ou un nombre de votre choix. Système comme le jeu Dragon Quest - L'odyssée du roi maudit (PS2)
[
]Caractéristiques et remarque=> Diviser l'argent par 2 ... après GameOver
=> Désactiver dès le départ, la sélection, "Auberge", tant que le héros na pas visité une auberge
=> Fenêtre indiquant que le joueur perd de l'argent en bas de l'écran
=> Commande d'évènement "Fin de jeu" utilisable (ce n'était pas le cas pour la version 1)
Non disponible pour le moment sous RPG Maker VX
[
]Screen [spolier]

[/spoiler]
[
]Utilisation[spolier]Pour les options, lisez les commentaires vers la ligne 34. Pour sauvergarder les dernières positions du héros dans une auberge, mettez dans un évènement grâce à "Insérez un script" :
- Code: Tout sélectionner
End2.new_position
[/spoiler]
[
]Installation et scripts1) Mettez le scripts "Système de sauvegarde des données" au dessus de "Main" disponible ici :
script XP Système de sauvegarde des données par Samarium2) Copiez ce script et collez le au dessus "main" :
- Code: Tout sélectionner
#========================================================================
# Revenir dans un lieu après GameOver v2
# RPG Maker XP
#========================================================================
=begin
=> Auteur : Samarium
Version 2 (20/06/2008)
Version 1 (--/--/2006)
=> Fonction :
Après l'écran GameOver, le héros pourra revenir à la dernière auberge
visité. Cependant, si vous le souhaitez, l'argent du héros sera divié par 2 ou un nombre
de votre choix. Système comme le jeu Dragon Quest - L'odyssée du roi maudit (PS2)
=> Utilisation :
Pour les options, lisez les commentaires vers la ligne 34. Pour sauvergarder les
dernières positions du héros dans une auberge, mettez dans un évènement
grâce à "Insérez un script" :
End2.new_position
=> Site du créateur : [url=http://www.rpgcreative.net" target="_blank]www.rpgcreative.net[/url] (si besoin d'aide, n'hésitez pas ;))
=> Remarque :
Vous devez avoir le script "Système de sauvegarde de données" par Samarium
=> Modifications :
Depuis la version 1, vous pouvez retirer de l'argent et revenir sur le dernier lieu visité
après GameOver
=end
#------------------------------------------------------------------------
module End2
# Position par défaut, si aucune nouvelle position est enregistrée et que
# DISABLE_START ci-dessous vaut "false"
DEFAUT_MAP_ID = 1 # ID de la map
DEFAUT_MAP_X = 1 # Position X
DEFAUT_MAP_Y = 1 # Position Y
# Dès le départ, la commande "auberge" est désactivé jusqu'à enregistrement
# d'une nouvelle position pour le héros. "false" pour ignorer cette option.
# "true" pour l'appliquer.
DISABLE_START = false
# Le nombre d'argent total divisé par ... après Game Over
# Mettez 0 pour ne pas enlever de l'argent et ne pas afficher la fenêtre
# indiquant que le joueur perd de l'argent en bas de l'écran
GOLD_DIVIS = 2
class << self
def new_position
$game_data['map_id_End2v2'] = $game_map.map_id
$game_data['x_End2v2'] = $game_player.x
$game_data['y_End2v2'] = $game_player.y
end
def var_position
hash_pos = {'map_id' => $game_data['map_id_End2v2'],
'x' => $game_data['x_End2v2'],
'y' => $game_data['y_End2v2'],}
return hash_pos
end
end
end
# --------------------------------------------------
# Scene_End2
# Reprise de la classe de la version 1. Permet de
# de mettre à jour les fenêtres et faire intérargir
# le joueur
# --------------------------------------------------
class Scene_End2
def main
# Fenêtre de sélection définit
s1 = "Écran-Titre"
s2 = "Revenir à l'auberge" # Ici, vous pouvez changer le nom de la destination.
@command_window = Window_Command.new(192, [s1, s2])
@command_window.x = 320 - @command_window.width / 2
@command_window.y = 50
# Désative/Active dès le départ selon les options choisises la sélection "Auberge"
@disable_start = false
@disable_start = true if End2::DISABLE_START and $game_end2.position.empty?
@command_window.disable_item(1) if @disable_start
# Fenêtre de destination ("Auberge") définit
@destination_window = Window_Destination.new
@destination_window.visible = false
# Fond GameOver définit
@sprite = Sprite.new
@sprite.bitmap = RPG::Cache.gameover($data_system.gameover_name)
# Boucle infinie de mise çjour des graphismes et entrée du clavier
Graphics.transition
loop do
Graphics.update
Input.update
update
if $scene != self
break
end
end
$game_temp.gameover = false if $scene.is_a?(Scene_Map)
# Suppression des fenêtres après avoir "gelé" les graphismes
Graphics.freeze
@command_window.dispose
@destination_window.dispose
end
def update
# Mise àjour des fenêtres
@command_window.update
@destination_window.update
# Affiche la feêtre Window_Destination selon les options
if End2::DISABLE_START
if !$game_end2.position.empty?
@destination_window.visible = @command_window.index == 1 ? true : false if End2::GOLD_DIVIS != 0
end
else
@destination_window.visible = @command_window.index == 1 ? true : false if End2::GOLD_DIVIS != 0
end
# Quand on appuie sur C/Entrée/Espace
if Input.trigger?(Input::C)
# Selon index de la sélection
case @command_window.index
when 0
# Aller à l'écran titre
command_to_title
when 1
# Son "Buzzer" si sélection désactivée
if @disable_start
$game_system.se_play($data_system.buzzer_se)
else
# Aller vers la destination de "l'auberge"
new_position = End2.var_position
if new_position.empty?
command_destination
else
command_destination(new_position['map_id'], new_position['x'], new_position['y'])
end
end
return
end
end
# Aller vers l'écran titre
def command_to_title
$game_system.se_play($data_system.decision_se)
Audio.bgm_fade(800)
Audio.bgs_fade(800)
Audio.me_fade(800)
$scene = Scene_Title.new
end
def command_destination(map_id = End2::DEFAUT_MAP_ID, map_x = End2::DEFAUT_MAP_X, map_y = End2::DEFAUT_MAP_Y)
$game_system.se_play($data_system.decision_se)
Audio.bgm_fade(800)
Audio.bgs_fade(800)
Audio.me_fade(800)
# On divise l'argent par un nombre choisit. Evite la division par 0
gold_divis = End2::GOLD_DIVIS != 0 ? End2::GOLD_DIVIS : 1
for i in 1...$game_party.actors.size
$game_actors[i].recover_all
end
$game_party.lose_gold($game_party.gold / gold_divis)
# Téléportation vers ID, X et Y de la map
$game_map.setup(map_id)
$game_player.moveto(map_x, map_y)
$game_player.refresh
$game_map.autoplay
$game_map.update
$scene = Scene_Map.new
end
end
end
# --------------------------------------------------
# Window_Destination
# La fenêtre d'information selon la perte d'argent
# --------------------------------------------------
class Window_Destination < Window_Base
def initialize
@win_width = 400
win_height = 100
# Centrer la fenêtre
x = 640 / 2 - @win_width / 2
y = 480 - win_height - 10
super(x, y, @win_width, win_height)
self.contents = Bitmap.new(width - 32, height - 32)
self.contents.font.name = $fontface
self.contents.font.size = 20
refresh
end
# Textes
def refresh
self.contents.clear
self.contents.draw_text(@win_width/2 - 170, 0, 400, 32, "Revenez dans la dernère auberge visitée.")
self.contents.draw_text(@win_width/2 - 170, 16, 400, 32, "Attention, vous gardez vos caratéristiques")
self.contents.draw_text(@win_width/2 - 140, 32, 400, 32, "mais votre argent sera divisé par #{End2::GOLD_DIVIS}")
end
end
# --------------------------------------------------
# Scene_Gameover
# Appelle de la classe Scene_End2 quand la scène
# Game Over a lieu
# --------------------------------------------------
class Scene_Gameover
def update
$scene = Scene_End2.new
end
end
# --------------------------------------------------
# Interpreter
# Commande d'évènement "Fin de jeu" redefinit.
# Evite les appels infinies de "Game Over"
# --------------------------------------------------
class Interpreter
def command_353
$game_temp.gameover = true
return true
end
end