Accueil du SiteAccueil du Site  AccueilAccueil  Dernières imagesDernières images  RechercherRechercher  ConnexionConnexion  S'enregistrerS'enregistrer  



Le Deal du moment :
Cdiscount : -30€ dès 300€ ...
Voir le deal

Partagez
 

 Multi Starter

Voir le sujet précédent Voir le sujet suivant Aller en bas 
AuteurMessage
Hinola
Ninja (niveau 4)
Ninja (niveau 4)
Hinola

Masculin
Messages postés : 213
Date d'inscription : 06/02/2013
Jauge LPC :
Multi Starter 891527140091 / 10091 / 100Multi Starter 8915271400

Multi Starter Membre10
Multi Starter Mappeu11



Multi Starter Empty
MessageSujet: Multi Starter   Multi Starter EmptyLun 14 Sep 2015 - 21:47

Salut salut

Je vous présente mon tout premier script à partager



Le Multi-starter XP

Le script en est à sa deuxième version.
il permet de :
- Créer plusieurs points de départ (nombre illimité)
- afficher jusqu'à 6 choix de lancement ( les autres, c'est avec des tites flèches, cf screens)
- Choisir les personnages de départ ainsi que leur lvl
- Autoriser un départ si une sauvegarde contient un interrupteur activé
- modifier le nombre max de points affichés ( je viens juste d'y penser ^^)
- activer un interrupteur au lancement de la partie (pour connaitre le starter utilisé directement en jeu)

J'ai fait en sorte que le script de configuration soit le plus simple et clair pour les débutants
Il est compatible normalement avec tout les scripts modifiant Scene_Title utilisant "command_new_game"

Images : et explications

Spoiler:

Spoiler:

Script

Multi Starter 1442184287-scripts

Voici donc le script principal:

Code:

#==============================================================================
#             Multi-Starter
#             Pour RPG Maker XP
#             par Hinola
#==============================================================================
#
#             VERSION : 2.0
#             > Ce script fonctionne avec l'annexe 'Multi_Starter'
#             > Cette partie n'est pas prévue pour être modifiée
#             > Cette partie peut changer selon les versions
#
#==============================================================================

class Scene_MultiStarter
  
  def main
    
    @MSconfig = Multi_Starter.new
    @MSconfig.setup
    config = @MSconfig.getList
    nbCom = config.size
        
    @nbSave = @MSconfig.nbSave;
    
    # si il n'y a pas de starters
    # on lance directement le jeu avec les attributs de base
    if nbCom < 1
      
      new_game(-1)
    
    # si tout est normal
    else
      # title
      @sprite = Sprite.new
      @sprite.bitmap = RPG::Cache.title($data_system.title_name)
      
      listCom = []
      @comInvalid = []
      index = 0
      config.each do | st |
        listCom<<st[0]
        # on test si la condition du swith est valable
        if st[5].size > 0
          if testSwitchSave(st[5]) == false
            @comInvalid<<index
          end
        end
        index += 1
      end
      
      # réglage de la hauteur de la fenêtre
      max = @MSconfig.maxStarter
      h = max * 32 + 32
      posY = 384 - max * 32
      if nbCom < max
        h = nbCom * 32 + 32
        posY = 384 - nbCom * 32
      end
      # dimensions de la fenêtre
      @command_window = Window_Command.new(192, listCom)
      @command_window.back_opacity = 160
      @command_window.height = h
      @command_window.x = 320 - @command_window.width / 2
      @command_window.y = posY
      # désactivation d'éléments
      @comInvalid.each do | id |
        @command_window.disable_item(id)
      end
      
      # graphics
      Graphics.transition
      loop do
        Graphics.update
        Input.update
        update
        if $scene != self
          break
        end
      end
      Graphics.freeze
      
      # dispose
      @command_window.dispose
      @sprite.bitmap.dispose
      @sprite.dispose
    end
  end
  
  #test des switchs dans les sauvegardes
  def testSwitchSave(tab)
    for i in 0..@nbSave
      saveValid = false
      filename = make_filename(i)
      if FileTest.exist?(filename)
        file = File.open(filename, "rb")
        # chargement des switchs dans une variable temporaire
        temp = nil
        for i in 0..3
          temp = Marshal.load(file)
        end
        # test sur chacun des interrupteurs
        saveValid = true
        tab.each do | switch |
          if temp[switch] == false
            saveValid = false
          end
        end
        file.close
      end
      if saveValid == true
        return true
      end
    end
    return false
  end
  
  # création du nom de la sauvegarde
  def make_filename(file_index)
    return "Save#{file_index + 1}.rxdata"
  end
  
  # update
  def update
    @command_window.update
    # touche entrée / action
    if Input.trigger?(Input::C)
      #non valide
      if @comInvalid.include?(@command_window.index)
        $game_system.se_play($data_system.buzzer_se)
        return
      # valide
      else
        new_game(@command_window.index)
      end
    end
    # touche échap / annulation
    if Input.trigger?(Input::B)
      $scene = Scene_Title.new
    end
    
  end
  
  # nouvelle partie
  
  def new_game(id)
    # Play decision SE
    $game_system.se_play($data_system.decision_se)
    # Stop BGM
    Audio.bgm_stop
    # Reset frame count for measuring play time
    Graphics.frame_count = 0
    # Load games script
    loadGame
    
    st = @MSconfig.getStarter(id)
    
    # start map and coord
    $game_map.setup(st[1])
    $game_player.moveto(st[2], st[3])
    
    # setup party
    if st[4].size < 1
      $game_party.setup_starting_members
    else
      st[4][0..4].each do | idPerso |
        if $game_actors[idPerso] != nil
          $game_party.add_actor(idPerso)
        end
      end
    end
        
    # Refresh player
    $game_player.refresh
    # Run automatic change for BGM and BGS set with map
    $game_map.autoplay
    # Update map (run parallel process event)
    $game_map.update
    
    # si on import, on affiche le choix
    if st[6]
      $scene = Scene_ChoiceParty.new
    else
      $scene = Scene_Map.new
    end
  end
  
  def loadGame
    # Make each type of game object
    $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
  end
  
end

# class de configuration

class Config_Starter
  
  attr_reader   :nbSave
  attr_reader   :maxStarter
  
  def initialize
    @list = []
    initParameters
    @nbSave = 4
    @maxStarter = 6
  end
  
  def initParameters
    @id_map = $data_system.start_map_id
    @x_map = $data_system.start_x
    @y_map = $data_system.start_y
    @switchs = []
    @actors = []
    @name = "jeu de base"
    @import = false
  end
  
  def addStarter
    @list<<[@name, @id_map, @x_map, @y_map, @actors, @switchs, @import]
    initParameters
  end
  
  def getStarter(id)
    if id != -1
      return @list[id]
    else
      @liste = []
      addStarter
      return @list[0]
    end  
  end
  
  def getList
    return @list
  end  
end

# Scene_Title : commande new game

class Scene_Title
  
  def command_new_game
    $scene = Scene_MultiStarter.new
  end
  
end

class Scene_ChoiceParty < Scene_File
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  def initialize
    # Remake temporary object
    $game_temp = Game_Temp.new
    # Timestamp selects new file
    $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("Quelle équipe importer : ?")
  end
  #--------------------------------------------------------------------------
  # * Decision Processing
  #--------------------------------------------------------------------------
  def on_decision(filename)
    unless FileTest.exist?(filename)
      $game_system.se_play($data_system.buzzer_se)
      return
    end
    $game_system.se_play($data_system.load_se)
    file = File.open(filename, "rb")
    for i in 0..7
      Marshal.load(file)
    end
    $game_party = Marshal.load(file)
    for i in 0..1
      Marshal.load(file)
    end
    $game_player.refresh
    $game_party.refresh
    $scene = Scene_Map.new
  end
  #--------------------------------------------------------------------------
  # * Cancel Processing
  #--------------------------------------------------------------------------
  def on_cancel
    $game_system.se_play($data_system.cancel_se)
    $scene = Scene_Title.new
  end
end


Et voici la config, à placer au dessous du Script principal :

Code:

#==============================================================================
#             Multi-Starter
#             Pour RPG Maker XP
#             par Hinola
#==============================================================================
#
#             VERSION : 1.0
#             > Ce script est l'annexe de configuration du Multi-starter.
#             > Cette partie est normalement prévue pour fonctionner
#             quelque soit la version du script de base.
#
# Le script Multi-Starter permet la création de plusieurs points de départ.
# explications plus bas
#
#==============================================================================

class Multi_Starter < Config_Starter

  def setup
    
    # le nombre de choix affichés
    # (de base 6, ils restent tout de même disponibles sur la même page)
    @maxStarter = 6
    # le nombre de sauvegarde maximum de votre projet
    # (de base 4 si vous n'utilisez aucun script pour augmenter)
    @nbSave = 4
    
    @name = "Départ de base"
    addStarter
    
    @name = "Secondaire"
    @actors = [1, 3, 5]
    @switchs = [1, 2]
    @import = true
    addStarter
    
    # configuration du multi starter :
    # Les attributs suivants ne sont pas obligatoires.
    # S’ils ne sont pas renseignés, une valeur de base les remplacera.
    # addStarter Ajoutera un point de départ avec la configuration choisie.
    #
    # @name : le nom du starter (affiché dans le menu)
    #   > valeur de base : "jeu de base"
    # @id_map : l'id de la map d'apparition
    #   > VDB : l'id choisit dans la base de donnée
    # @x_map et @y_map : coordonnées x et y de départ
    #   > VDB : coordonnées choisies dans la base de donnée
    # @ switchs : liste des interrupteurs requis
    #   > VDB : aucun interrupteur requis
    #   > exemple : @switchs = [1, 2]^pour les deux premiers interrupteurs.
    # @actors : tableaux des id des personnages
    #   > VDB : les personnages de la base de donnée
    #   > exemple : @actors = [1, 2] pour les deux premiers perso
    # @import : donne le choix au joueur d'importer l'équipe d'une sauvegarde.
    #   > VDB : false (faux)
    #   > @import = true pour activer.
    
  end
    
end
Revenir en haut Aller en bas
Zexion
Administrateur
Administrateur
Zexion

Masculin
Messages postés : 6228
Date d'inscription : 04/01/2012
Jauge LPC :
Multi Starter 891527140097 / 10097 / 100Multi Starter 8915271400

Multi Starter Membre15
Multi Starter Event-10
Multi Starter Altrui10
Multi Starter Action10
Multi Starter Travai10
Multi Starter Collec10
Multi Starter Collec11
Multi Starter Collec12
Multi Starter Staffe11
Multi Starter Dessin10


Multi Starter Empty
MessageSujet: Re: Multi Starter   Multi Starter EmptyLun 14 Sep 2015 - 23:19

Intéressant, je savais pas que tu codais. :p
Merci du partage, je t'ajoute des points !
Revenir en haut Aller en bas
Hinola
Ninja (niveau 4)
Ninja (niveau 4)
Hinola

Masculin
Messages postés : 213
Date d'inscription : 06/02/2013
Jauge LPC :
Multi Starter 891527140091 / 10091 / 100Multi Starter 8915271400

Multi Starter Membre10
Multi Starter Mappeu11



Multi Starter Empty
MessageSujet: Re: Multi Starter   Multi Starter EmptyLun 14 Sep 2015 - 23:31

bah c'est mon premier code sur RM ^^
Je viens de m'y mettre, à la base c'était pour me faire mon propre CBS
Mais sinon ouais, j'ai fait un DUT info prog donc je code ^^

merci pour les points ^^
Revenir en haut Aller en bas
City Hunter
Administrateur
Administrateur
City Hunter

Masculin
Messages postés : 6523
Date d'inscription : 25/05/2011
Jauge LPC :
Multi Starter 891527140040 / 10040 / 100Multi Starter 8915271400

Multi Starter Staffe10
Multi Starter Mappeu10
Multi Starter Membre15
Multi Starter Testeu10
Multi Starter Promot10
Multi Starter Projet10
Multi Starter Projet16
Multi Starter Riche_10
Multi Starter Travai10
Multi Starter Collec10
Multi Starter Collec11
Multi Starter Collec12
Multi Starter Collec13
Multi Starter Pandac10
Multi Starter 10000011


Multi Starter Empty
MessageSujet: Re: Multi Starter   Multi Starter EmptyMar 15 Sep 2015 - 22:49

Intéressant ce script ^^

Je ne comprenais pas au début l'intérêt que peut avoir un tel code.. ^^ Mais après tout, si on souhaite choisir un camp ou une équipe différente en fonction d'une histoire et d’atterrir quelques part au choix.. Après, on pouvait créer un évent automatique au démarrage pouvant remplir les même conditions^^

Bravo à toi.
Revenir en haut Aller en bas
Hinola
Ninja (niveau 4)
Ninja (niveau 4)
Hinola

Masculin
Messages postés : 213
Date d'inscription : 06/02/2013
Jauge LPC :
Multi Starter 891527140091 / 10091 / 100Multi Starter 8915271400

Multi Starter Membre10
Multi Starter Mappeu11



Multi Starter Empty
MessageSujet: Re: Multi Starter   Multi Starter EmptyMar 15 Sep 2015 - 22:53

Ouais, mais c'est pour ça que j'ai rajouté des trucs cools

comme commencer une partie normale, mais avec l'équipe d'une partie sauvegardée.
Avec tout les sous et tout les objets qui vont avec ^^.
Revenir en haut Aller en bas
City Hunter
Administrateur
Administrateur
City Hunter

Masculin
Messages postés : 6523
Date d'inscription : 25/05/2011
Jauge LPC :
Multi Starter 891527140040 / 10040 / 100Multi Starter 8915271400

Multi Starter Staffe10
Multi Starter Mappeu10
Multi Starter Membre15
Multi Starter Testeu10
Multi Starter Promot10
Multi Starter Projet10
Multi Starter Projet16
Multi Starter Riche_10
Multi Starter Travai10
Multi Starter Collec10
Multi Starter Collec11
Multi Starter Collec12
Multi Starter Collec13
Multi Starter Pandac10
Multi Starter 10000011


Multi Starter Empty
MessageSujet: Re: Multi Starter   Multi Starter EmptyJeu 17 Sep 2015 - 19:54

Ah ouai ^^ Comme les jeux où tu peux recommencer de 0 mais avec les stats et les armes etc... ^^
Revenir en haut Aller en bas
Contenu sponsorisé




Multi Starter Empty
MessageSujet: Re: Multi Starter   Multi Starter Empty

Revenir en haut Aller en bas
 
Multi Starter
Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» [VX] Pokémon Starter Kit
» [RMXP]Recrutement starter kit FF !!!
» SMMOB 0.3.0 - DoMoon Graphic Starter Kit 1.0
» Multi maker
» [VX] Multi-Drop VX

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
Le Palais Créatif :: ~ PARTAGE ~ :: Scripts et plugins :: RPG Maker XP :: Menu-
Sauter vers: