Quent42340Molécule
Messages : 67 Date d'inscription : 03/04/2009
Caractéristiques du membre Evolution: Atome Job: La création de Jeux :lol: XP: (20/20)
| Sujet: Menu personnalisable avec commande téléport Lun 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 : 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 |
|
Redlagoon
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: (20/20)
| Sujet: Re: Menu personnalisable avec commande téléport Ven 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 ? |
|
Quent42340Molécule
Messages : 67 Date d'inscription : 03/04/2009
Caractéristiques du membre Evolution: Atome Job: La création de Jeux :lol: XP: (20/20)
| Sujet: Re: Menu personnalisable avec commande téléport Ven 26 Fév 2010 - 1:41 | |
| Ha oui pardon j'en rajoute un ^^" |
|
Contenu sponsorisé
| Sujet: Re: Menu personnalisable avec commande téléport | |
| |
|