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



 
AccueilDernières imagesS'enregistrerConnexion
Le deal à ne pas rater :
Code promo Nike : -25% dès 50€ d’achats sur tout le site Nike
Voir le deal

Partagez | 
 

 Menu personnalisable avec commande téléport

Voir le sujet précédent Voir le sujet suivant Aller en bas 
AuteurMessage
Quent42340
Molécule
Molécule
Quent42340


Messages : 67
Date d'inscription : 03/04/2009

Caractéristiques du membre
Evolution: Atome
Job: La création de Jeux :lol:
XP:
Menu personnalisable avec commande téléport Left_bar_bleue20/20Menu personnalisable avec commande téléport Empty_bar_bleue  (20/20)

Menu personnalisable avec commande téléport Empty
MessageSujet: Menu personnalisable avec commande téléport   Menu personnalisable avec commande téléport EmptyLun 22 Fév 2010 - 23:18

Bonjour,

J'ai réussi à amélioré mon script de menu grâce à Tonyryu, Berka et Wawower de RMXP Studios 2 !


Voici un screen :
Menu personnalisable avec commande téléport ScVol
Et voici le script :
Code:
#==============================================================================
# ■ Game_Party
#==============================================================================
class Game_Party
  #-----------------------------------------------------------------------
  # ● initialize
  #-----------------------------------------------------------------------
  alias vol_initialize initialize
  def initialize
    $places = {}
    $places["Map 2"]=[2, 4, 3, 1]
    # Tu peux ajouter les lieux par defauts ici.
    vol_initialize
  end
  #-----------------------------------------------------------------------
  # ● push_place
  #    name = nom de la destination
  #    coord = coordonées de la destination
  #-----------------------------------------------------------------------
  def push_place(name,*coord)
    $places[name] = coord
  end 
end
#==============================================================================
# ■ Scene_Vol
#------------------------------------------------------------------------------
# De Quentin BAZIN htp://www.crazycollec.wb.st
#******************************************************************************
# J'ai été aidé par Tonyryu, Berka et Wawower de RMXP Studio (certains commentaires sont de Berka)
#==============================================================================
$places = {}
class Scene_Vol
  #--------------------------------------------------------------------------
  # ● menu_index
  #--------------------------------------------------------------------------
  def initialize(menu_index = 0)                   
    @menu_index = menu_index
  end
  #--------------------------------------------------------------------------
  # ● Principal
  #--------------------------------------------------------------------------
  def main                                             
    @spriteset=Spriteset_Map.new
    @noms = $places.keys.sort                          # On récupère toutes les clés du hash dans un tableau: ce sont les noms.
                                                      # La méthode sort de Array trie les données par ordre alphabétique, pratique !
    @command_window = Window_Command.new(160,@noms)    # Ces noms seront les choix disponibles: on clique et on se téléporte. 
                                                      # On ne va pas recréer une Window_Vol ! On est fainéants...
    @command_window.x= 480                            # On va juste la déplacer abscisses
    @command_window.y= 0                              # Ordonnées
   
                                                      # Un problème: si la liste est trop longue, la fenetre sortira de l'ecran !
    if @command_window.height>=480-@command_window.y  # on fixe donc une taille maximale
      @command_window.height=480
    end
   
    @command_window.index = @menu_index 
    Graphics.transition                           
    loop do                                       
      Graphics.update
      Input.update
      update                                       
      if $scene != self
        break
      end
    end
    Graphics.freeze                               
    @command_window.dispose                       
    @spriteset.dispose
  end
#=====================================================================
# ● Définition de la méthode Teleport
#======================================================================
  def teleport(map_id,coord_x,coord_y,direction=0)   
    $game_temp.player_transferring = true
    $game_temp.player_new_map_id = map_id
    $game_temp.player_new_x = coord_x
    $game_temp.player_new_y = coord_y
    $game_temp.player_new_direction = direction
    Graphics.freeze
    $scene = Scene_Map.new
  end
#--------------------------------------------------------------------------
# ● Update
#--------------------------------------------------------------------------
  def update
    @command_window.update                               
    if @command_window.active                         
      update_command                                 
      return                                         
    end
  end
#--------------------------------------------------------------------------
# ● Mise à jour de la commande
#--------------------------------------------------------------------------
  def update_command                     
    # B
    if Input.trigger?(Input::B)           
      $game_system.se_play($data_system.cancel_se) 
      $scene = Scene_Menu.new                           
      return
    end
    # C
    if Input.trigger?(Input::C)   
                                                        # On connait la position du curseur par @command_window.index
                                                        # On a la clé (le nom), on récupère alors la valeur (les coordonnées)
      nom_du_choix=@noms[@command_window.index]
      coordonnees=$places[nom_du_choix]
      teleport(*coordonnees)                            # coordonnées est un tableau contenant les données de téléportation
                                                        # Par * on 'distribue' les données en tant qu'arguments de la méthode.
      return
    end                                         
  end                                           
end

#==============================================================================
# ■ Scene_Menu
#==============================================================================
class Scene_Menu     
  #--------------------------------------------------------------------------
  # ●  menu_index
  #--------------------------------------------------------------------------
  def initialize(menu_index = 0) # Initialisation de l'index
    @menu_index = menu_index
  end
  #--------------------------------------------------------------------------
  # ● Principal
  #--------------------------------------------------------------------------
  def main                                       
    @spriteset=Spriteset_Map.new
    s1 = "Objets"
    s2 = "Compétences"
    s3 = "Equiper"
    s4 = "Sauvegarder"
    s5 = "Charger"
    s6 = "Ecran titre"
    s7 = "Quitter"
    s8 = "Status"
    s9 = "Téléport"
    @command_window = Window_Command.new(160,[s1,s2,s3,s8,s9,s4,s5,s6,s7])
    @command_window.index = @menu_index
    Graphics.transition                     
    loop do                                 
      Graphics.update
      Input.update
      update                               
      if $scene != self
        break
      end
    end
    Graphics.freeze                   
    @command_window.dispose           
    @spriteset.dispose
  end
  #--------------------------------------------------------------------------
  # ● Mise à jour de la scene
  #--------------------------------------------------------------------------
  def update
    @command_window.update
    if @command_window.active
      update_command
      return
    end
    if @status_window.active
      update_status
      return
    end
  end
  #--------------------------------------------------------------------------
  # ● Mise à jour de la commande
  #--------------------------------------------------------------------------
  def update_command                             
    # B
    if Input.trigger?(Input::B)                 
      $game_system.se_play($data_system.cancel_se)
      $scene = Scene_Map.new                 
      return
    end
    # C
    if Input.trigger?(Input::C)
      $game_system.se_play($data_system.decision_se) 
      case @command_window.index                 
      when 0                                     
        $scene = Scene_Item.new
      when 1                                         
        $scene = Scene_Skill.new
      when 2
        $scene = Scene_Equip.new
      when 3 
        $scene = Scene_Status.new
      when 4 
        $scene = Scene_Vol.new
      when 5
        $scene = Scene_Save.new
      when 6
        $scene = Scene_Load_Mod.new
      when 7
        $scene = Scene_Title.new
      when 8
        command_shutdown
      end                                               
      return
    end                                                 
  end                                                   
end

Commande d'event :
Code:
$game_party.push_place("Map 1",1,1,1,1)

En gros : ("Nom", id_map, x, y, direction)

Démo : http://nanolua.webege.com/nanolua/files/Scene_Vol.zip

Voilà et encore un grand merci à Tonyryu, Berka et Wawower de RMXP Studios 2 !


Dernière édition par Quent42340 le Ven 26 Fév 2010 - 1:45, édité 1 fois
Revenir en haut Aller en bas
Redlagoon
Redlagoon


Masculin Messages : 1430
Age : 32
Loisirs : Ordi-Théâtre-Guitare
Date d'inscription : 31/12/2009

Caractéristiques du membre
Evolution: Atome
Job: psychologue de Zarok ^^
XP:
Menu personnalisable avec commande téléport Left_bar_bleue20/20Menu personnalisable avec commande téléport Empty_bar_bleue  (20/20)

Menu personnalisable avec commande téléport Empty
MessageSujet: Re: Menu personnalisable avec commande téléport   Menu personnalisable avec commande téléport EmptyVen 26 Fév 2010 - 0:49

un screen pourrait peut-être nous éviter de DLL la démo inutilement si celui-ci ne nous intéresse pas ?
Revenir en haut Aller en bas
Quent42340
Molécule
Molécule
Quent42340


Messages : 67
Date d'inscription : 03/04/2009

Caractéristiques du membre
Evolution: Atome
Job: La création de Jeux :lol:
XP:
Menu personnalisable avec commande téléport Left_bar_bleue20/20Menu personnalisable avec commande téléport Empty_bar_bleue  (20/20)

Menu personnalisable avec commande téléport Empty
MessageSujet: Re: Menu personnalisable avec commande téléport   Menu personnalisable avec commande téléport EmptyVen 26 Fév 2010 - 1:41

Ha oui pardon j'en rajoute un ^^"
Revenir en haut Aller en bas
Contenu sponsorisé



Menu personnalisable avec commande téléport Empty
MessageSujet: Re: Menu personnalisable avec commande téléport   Menu personnalisable avec commande téléport Empty

Revenir en haut Aller en bas
 

Menu personnalisable avec commande téléport

Voir le sujet précédent Voir le sujet suivant Revenir en haut 

 Sujets similaires

-
» Petit Menu (Personnalisable) + UP : Worldmap
» Menu Tournant Avec Bestiaire Intégré
» Nouvbeau ABS avec sauvegarde avancé, menu ring....
» [TUTO] Créer un menu avec choix en image ^^
» Script pour nouveau Menu (avec affichage centré en losange )
Page 1 sur 1

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
Zarok RPG Maker :: 

 :: SCRIPTS :: Script XP :: Scripts d'interfaces/ menus
-
Sauter vers: