Soroshiya Modérateur
Nombre de messages : 124 Age : 32 Date d'inscription : 16/11/2007
Feuille personnelle PAs (Points d'Aide): (0/130) Permis à Points: (40/40)
| Sujet: Menu de téléportation a la place de la world map Sam 17 Nov - 5:56 | |
| Nom du script : Menu de téléportation a la place de la world map Auteur : Krazplay Fonction : Ce script vous permet d'éviter de dessiner une carte du monde. Alors vous utilisez un menu avec images. Image(s) : Ressource(s) : AucuneRemarque : FonctionnelInstallation : Allez dans l'éditeur de script ( F11 ) et suivez les instructions ci-dessous .Faite un nouveau script au dessus de Main appelé Worldmap90 puis coller ce code: - Code:
-
#======================================================================= # ■ Scene_Worldmap v0.9 #-------------------------------------------------------------------------------------------------------------------------------- # Ecrit par Krazplay, version la plus à jour disponible sur le forum du site rpgmakerxp.free.fr # Nécessite : le scrîpt Window_world # Description : # Ce scrîpt permet d'afficher un menu de carte du monde/téléporteur comportant dans une # première fenêtre à gauche une liste de choix (les destinations), chacun des choix est # accompagné d'une image qui apparaitra à droite, et probablement dans une prochaine version # d'une description dans la fenêtre de bienvenu, un choix peut être ajouté/enlevé ou désactivé # à l'aide de variables ou de switchs. # Utilisation : # Il y a trois endroits où vous devez modifier ce scrîpt pour qu'il fonctionne, pour cela faites # comme dans les exemples, ils sont à mon avis assez explicites. # # Modifications 1 : C'est là que vous mettrez le nom de la destination (dans la variable @s[i], # où i est la position de ce choix, 0 = première position, 1 = 2nde position ou 1ère position si # le choix 0 n'est pas disponible et ainsi de suite) et le nom de l'image du dossier Pictures lui # correspondant dans la variable @ni[i] (le nom doit être entre crochets (exemple "Ville"), et ne # doit PAS contenir le nom de l'extension (.jpg). # # Modifications 2 : Optionnel, si vous voullez qu'à un moment le joueur ne puisse pas aller # quelquepart mais que le choix soit tout de même visible, c'est là qu'il faut le mettre, à l'aide # de la commande : @command_window.disable_item("nom du l'endroit") # # Modifications 3 : Entrer ici les conséquences du choix, générallement la téléportion complète # de l'équipe. Pour téléporter l'équipe vous pouvez utiliser la commande : # téléportation(id_de_la_map, coordonnée_x, coordonnée_y, direction_du_héros_optionnel) # Je ne me rappelle plus des différentes direction du héros, il me semble que ce chiffre peut # une valeur entre 0 et 3, 0 et 3 étant compris. Cela permet en tout cas que le héro regarde # vers le haut ou la droite par exemple, après s'être téléporté. # # Notes importantes : L'image doit être au format jpg (c'est le seul que j'ai testé, je ne sais pas # si les autres sont acceptés). Son format conseillé est de 368x352, si l'image est plus petite, # elle sera automatiquement centré au milieu de la fenêtre, de même si elle est trop grande, on # verra son milieu, et non son côté. # Pour appeller cette carte du monde, utliser la ligne de scrîpt suivante : # $scene = Scene_Worldmap.new # à partir de n'importe quel évènement ou scrîpt. #======================================================================= class Scene_Worldmap
def initialize(menu_index = 0) @menu_index = menu_index end
def main @s = [] @ni = [] ############### Modifications 1 ################ @s[0] = "Mines" #Nom du premier choix @ni[0] = "image_Mines1" #Nom de l'image du premier choix ds votre dossier Pictures (sans l'extension) @s[1] = "Ville du desert" [email]#@ni[1[/email]] = "Ville du desert" #Le nom de l'image étant identique à celui du lieu, on peut négliger de la préciser if $game_switches[1] == true # Exemple avec un switch : @s[2] = "Test" # Le choix "Test" n'apparaitra que si @ni[2] = "image_test" # le switch 1 est activé end if $game_variables[80] > 3 # Exemple avec une variable : @s[3] = "AZERTY" # Le choix "AZERTY" n'apparaitra que si @ni[3] = "blablabla" # la variable 80 est supérieur à 3 end
for i in [email]0...@s.size[/email] if @ni[i] == nil and @s[i] != nil # Si aucun nom d'image n'a été attribué alors que le lieu existe @ni[i] = @s[i] # Alors le nom du lieu devient le nom de l'image end end @s.compact! # Enlève les espaces vides possibles. @ni.compact! #Création de la fenêtre de bienvenue => (coordonnée x, coordonnée y, largeur, hauteur) largeur = 640 hauteur = 96 @bienvenue_window = Window_Base.new(0,0,largeur,hauteur) @bienvenue_window.contents = Bitmap.new(largeur-32, hauteur-32) @bienvenue_window.contents.font.name = $fontface #si vous voullez modifier la police d'écriture @bienvenue_window.contents.font.size = $fontsize #ou sa taille c'est ici. message1 = "Bienvenu sur la World Map." message2 = "Veuillez choisir votre destination." align = 1 #(0 = texte aligné à gauche ; 1 = texte centré ; 2 = aligné à droite) @bienvenue_window.contents.draw_text(0, 0, largeur, 32, message1, align) @bienvenue_window.contents.draw_text(0, 32, largeur, 32, message2, align) largeur2 = 240 #(largeur de la fenêtre des choix) @command_window = Window_World.new(largeur2, @s) @command_window.x = 0 # position x de la fenêtre des choix @command_window.y = 96 # position y de la fenêtre des choix @command_window.index = @menu_index # Fenêtre qui contiendra l'image => (position x, position y, largeur, hauteur) @image_window = Window_Base.new(240, 96, 400, 480-96)
############### Modifications 2 ################ # Liste des choix non selectionnables, ils sont visibles en grisé par le joueur. if $game_switches[2] == true # Exemple avec un switch : @command_window.disable_item("Ville du desert") # Le choix "Ville du desert" sera grisé end # et non selectionnable si le switch 2 est activé
if $game_variables[66] < 4 # Exemple avec une variable : Le choix "Mines" @command_window.disable_item("Mines") # sera grisé et non selectionnable end # tant que la variable 66 est inférieur à 4.
Graphics.transition loop do Graphics.update Input.update update if $scene != self break end end Graphics.freeze @command_window.dispose end
def update @command_window.update if @image_window.active update_image end if @command_window.active update_command return end end
def update_command if Input.trigger?(Input::B) $game_system.se_play($data_system.cancel_se) @bienvenue_window.dispose @image_window.dispose $scene = Scene_Map.new return end if Input.trigger?(Input::C) case @s[@command_window.index]
############### Modifications 3 ################ when "Mines" # Ce qui se passe si le joueur choisit "Mines" if not @command_window.disable_item?("Mines") # Le choix n'est pas validé s'il est désactivé (grisé). téléportation(2, 1, 1, 2) # téléportation de l'équipe # rappel : (id_de_la_map, coordonnée_x, coordonnée_y, direction_du_héros_optionnel) end
when "Ville du desert" if not @command_window.disable_item?("Ville du desert") téléportation(4, 8, 10) end
when "Test" if not @command_window.disable_item?("Test") téléportation(2, 1, 1) end end
if $scene == self # Si la scene est encore celle-ci, le choix n'était pas bon, donc on $game_system.se_play($data_system.buzzer_se) # joue un bruit de buzzer else $game_system.se_play($data_system.decision_se) end return end end
def téléportation(map_id, coord_x, coord_y, héro_direction=0) @bienvenue_window.dispose @image_window.dispose $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 = héro_direction Graphics.freeze $game_temp.transition_processing = true $game_temp.transition_name = "" $scene = Scene_Map.new end
def update_image i [email]=@command_window.index[/email] if @ni[i] != nil and i != @vieuxi @image_window.contents = Bitmap.new(400-32, 480-96-32) bitmap = RPG::Cache.picture(@ni[i]) cw = bitmap.width ch = bitmap.height if cw > 368 # Ce qui suit sert à centrer l'image si elle est trop petite ou trop grande. aw = (cw - 368) / 2 bw = 0 else aw = 0 bw = (368 - cw) / 2 end if ch > 352 ah = (ch - 352) / 2 bh =0 else ah = 0 bh = (352 - ch) / 2 end src_rect = Rect.new(aw, ah, cw, ch) @image_window.contents.blt(bw, bh, bitmap, src_rect) @vieuxi = i end end
end #======================================================================= # ■ Window_World v0.9 #-------------------------------------------------------------------------------------------------------------------------------- # Ecrit par Krazplay, version la plus à jour disponible sur le forum du site rpgmakerxp.free.fr # Nécessite : le scrîpt Scene_Worldmap # Toutes les explications sont dans le scrîpt Scene_Worldmap, il ne devrait rien avoir à faire # dans celui-ci. #======================================================================= class Window_World < Window_Selectable def initialize(width, commands) @item_désactivé =[] if commands.size > 11 hauteur = 11 else hauteur = commands.size end super(0, 0, width, hauteur * 32 + 32) @item_max = commands.size @commands = commands self.contents = Bitmap.new(width - 32, @item_max * 32) self.contents.font.name = $fontface self.contents.font.size = $fontsize refresh self.index = 0 end def refresh self.contents.clear for i in [email]0...@item_max[/email] draw_item(i, normal_color) end end def draw_item(index, color) self.contents.font.color = color rect = Rect.new(4, 32 * index, self.contents.width - 8, 32) self.contents.fill_rect(rect, Color.new(0, 0, 0, 0)) self.contents.draw_text(rect, @commands[index]) @item_désactivé[index] = 0 end def disable_item(nom) if indexde(nom) != false draw_item(indexde(nom), disabled_color) @item_désactivé[indexde(nom)] = 1 end end
def disable_item?(nom) if @item_désactivé[indexde(nom)] == 1 return true else return false end end
def indexde(nom) for i in [email]0...@commands.size[/email] if @commands[i] == nom return i end end return false end
end
UTILISATIONEnsuite, pour le faire marcher: - Code:
-
# à l'aide de variables ou de switchs / intérupteur. # Utilisation : # Il y a trois endroits où vous devez modifier ce scrîpt pour qu'il fonctionne, pour cela faites # comme dans les exemples, ils sont à mon avis assez explicites. # # Modifications 1 : C'est là que vous mettrez le nom de la destination (dans la variable @s[i], # où i est la position de ce choix, 0 = première position, 1 = 2nde position ou 1ère position si # le choix 0 n'est pas disponible et ainsi de suite) et le nom de l'image du dossier Pictures lui # correspondant dans la variable @ni[i] (le nom doit être entre crochets (exemple "Ville"), et ne # doit PAS contenir le nom de l'extension (.jpg). # # Modifications 2 : Optionnel, si vous voullez qu'à un moment le joueur ne puisse pas aller # quelquepart mais que le choix soit tout de même visible, c'est là qu'il faut le mettre, à l'aide # de la commande : @command_window.disable_item("nom du l'endroit") # # Modifications 3 : Entrer ici les conséquences du choix, générallement la téléportion complète # de l'équipe. Pour téléporter l'équipe vous pouvez utiliser la commande : # téléportation(id_de_la_map, coordonnée_x, coordonnée_y, direction_du_héros_optionnel) # Je ne me rappelle plus des différentes direction du héros, il me semble que ce chiffre peut # une valeur entre 0 et 3, 0 et 3 étant compris. Cela permet en tout cas que le héro regarde # vers le haut ou la droite par exemple, après s'être téléporté. # # Notes importantes : L'image doit être au format jpg (c'est le seul que j'ai testé, je ne sais pas # si les autres sont acceptés). Son format conseillé est de 368x352, si l'image est plus petite, # elle sera automatiquement centré au milieu de la fenêtre, de même si elle est trop grande, on # verra son milieu, et non son côté. # Pour appeller cette carte du monde, utliser la ligne de scrîpt suivante : # $scene = Scene_Worldmap.new # à partir de n'importe quel évènement ou scrîpt. #======================================================================= Pour appeller un script, vous devez faire un évènement qui lui appellera le script: $scene = Scene_Worldmap.newLes modifications montre l'endroit dans le script à regarder. Lisez bien les comemntaire en vert dans le script, sa vous explique quoi changer ou modifier. | |
|