#=======================================================================
# ■ 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"
#@ni[1] = "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
0...@s.size 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 =@command_window.index
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 0...@item_max
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
0...@commands.size if @commands[i] == nom
return i
end
end
return false
end
end
Ensuite, pour le faire marcher:
Citation:
# à 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.
#=======================================================================