Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.


 
AccueilSiteDernières imagesRechercherS'enregistrerConnexion
Le deal à ne pas rater :
Funko POP! Jumbo One Piece Kaido Dragon Form : où l’acheter ?
Voir le deal

 

 Revenir dans un lieu après GameOver v2

Voir le sujet précédent Voir le sujet suivant Aller en bas 
Auteur Message
Samarium
Conquérant
Conquérant
Samarium

Masculin Nombre de messages : 2183
Age : 35
Point(s) Fort(s) : Programmation : PHP, Ruby, Java
Point(s) Faible(s) : Dessin
Niveau RPG Maker : Expert
Logiciel préféré : RMXP ; IGM
Date d'inscription : 05/08/2006

Revenir dans un lieu après GameOver v2 Vide
MessageSujet: Revenir dans un lieu après GameOver v2   Revenir dans un lieu après GameOver v2 Icon_minitimeMar 24 Juin 2008 - 16:41

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
Spoiler:

Utilisation
Spoiler:


Installation et scripts

1) 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 Samarium

2) Copiez ce script et collez le au dessus "main" :


Code:
=begin
#========================================================================
#                    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 : www.rpgcreative.net (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
Revenir en haut Aller en bas
https://rpgcreative.forumgaming.fr
 

Revenir dans un lieu après GameOver v2

Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1

Permission de ce forum: Vous ne pouvez pas répondre aux sujets dans ce forum
 :: Partage de scripts :: Systèmes -
|
Créer un forum | ©phpBB | Forum gratuit d'entraide | Signaler un abus | Forum gratuit