Aventurier Lv.16
Age : 40 Inscrit le : 03/09/2009 Messages : 1503
| Sujet: Problème avec le script Porte du monde Lun 27 Sep 2010 - 14:13 | |
| Bonjour à tous Nature de la demande : Réparer un bug ^^ Script : World Gate Porte du monde diisponible ici > https://rpg-maker-vx.bbactif.com/autres-f172/script-world-gate-porte-du-monde-t5695.htmProjet en cours : The Kingdom of Fancy Description du script voulu : J'ai rencontré un bug sur mon projet donc j'ai essayé de testé sur un projet vierge et ce bug est toujours présent une erreur "Cache" apparemment voici la description du problème. J'ai 3 endroits pour me téléporter la map 1, la map 2 et la map 3. Si j'ai accès à la map 1 et à la map 3 (donc j'ai pas encore accès à la téléportation à la map 2) le projet plante. Et comme mon univers est assez grand avec plein d'endroits cachés, si le joueur rate un téléporteur et active le suivant, pendant la fenêtre de la destination si je déplace mon cursor sur la map 3 mon projet plantera, mais si accès à toute les destinations le projet ne plante pas. Mon script : - Spoiler:
- Code:
-
###################################################################################### # # script écrit par : Raizen ZENTRIX # # script World Gate # Version 1.0 ###################################################################################### # Vous devez appeler ce script pour pouvoir l'utiliser avec la commande : # $scene = Scene_Worldgate.new ###################################################################################### class Window_Worldgate < Window_Selectable
def initialize(width, commands, column_max = 1, row_max = 0, spacing = 32) if row_max == 0 row_max = (commands.size + column_max - 1) / column_max end super(0, 0, width, row_max * WLH + 32, spacing) @commands = commands @item_max = commands.size @column_max = column_max self.contents.dispose self.contents = Bitmap.new(width - 32, @item_max * WLH) refresh self.index = 0 end
def refresh self.contents.clear for i in 0...@item_max draw_item(i) end end
def draw_item(index, enabled = true) rect = item_rect(index) rect.x += 4 rect.width -= 8 self.contents.clear_rect(rect) self.contents.font.color = normal_color self.contents.font.color.alpha = enabled ? 255 : 128 self.contents.draw_text(rect, @commands[index]) end end
class Scene_Worldgate
def main
#-------------------------------------------------------------- A MODIFIER ----------------------------------------------------------------- # Fenêtre de bienvenue : # Ici, vous pourrez modifier votre message de bienvenue, en remplaçant les phrases entre " " par votre # message : @welcome_window = Window_Base.new(0, 0, 544, 87) @welcome_window.contents.draw_text (0, 0, 544, 32, "World Gate", 1) @welcome_window.contents.draw_text (0,0,544,72, "Veuillez choisir votre destination", 1) #-------------------------------------------------------- FIN DE LA 1ERE MODIF ------------------------------------------------------#
#-------------------------------------------------------------- A MODIFIER ----------------------------------------------------------------- @place_name = [] @place_picture = [] # Noms et images des endroits : # C'est ici que vous metterez le nom des choix dans la variable @placename[x] avec x : la position du choix # EN COMMENCANT PAR 0, et le nom de l'image (sans l'extension) de ce choix dans la variable @place_picture[y] # avec y : la position du choix EN COMMENCANT PAR 0. # Le format conseillé des images est de 332x316, et de type jpg. #Vous pouvez mettre autant de choix que vous voulez : @place_name[0] ="Temple de Venia" #Placer le nom du 1er choix entre les " " @place_picture[0] = "1TempleVenia" #Placer le nom de l'image du 1er choix entre les " " @place_name[1] = "Forêt Lamador partie-sst" #Le nom du 2ème choix @place_picture[1] = "2Foretlamador" #Le nom de l'image du 2ème choix # Ici, le choix "Endroit1" n'apparaîtera que si l'interrupteur 23 est activé, if $game_switches[201] == true # Vous pouvez changer le numéro de l'interrupteur si vous voulez @place_name[2] = "Village Gaiard" # Et vous pouvez mettre autant de choix et d'interrupteur que vous désirez @place_picture[2] = "3GrotteGaiard" # Sinon vous pourrez toujours supprimer la condition end # Ici, le choix "Endroit2" n'apparaîtera que si la variable [15] est plus grande que 5 if $game_switches[202] == true # Vous pouvez changer le numéro de la variable si vous voulez @place_name[3] = "Manoir" # Et vous pouvez mettre autant de choix et de variables que vous désirez @place_picture[3] = "4Manoir" # Sinon vous pourrez toujours supprimer la condition end #-------------------------------------------------------- FIN DE LA 2EME MODIF ------------------------------------------------------# # Fenêtre de choix : @select_window = Window_Worldgate.new(192, @place_name,1,13,10) @select_window.x = 0 @select_window.y = @welcome_window.height # Fenêtre où apparaîterons les images des endroits @images_window = Window_Base.new(192, @welcome_window.height, 352, 330) @images_window.back_opacity = 0 #-------------------------------------------------------------- A MODIFIER ----------------------------------------------------------------- # Fenêtre des sprites : # Si vos images ne sont pas de taille 332x316, vous pouvez modifier leur position avec @places_sprite.x # qui représente l'axe des x, et @places_sprite.y qui représente l'axe des y : @places_sprite = Sprite.new @places_sprite.x = 201 @places_sprite.y = 90 #-------------------------------------------------------- FIN DE LA 3EME MODIF ------------------------------------------------------# Graphics.transition loop do Graphics.update Input.update update if $scene != self break end end Graphics.freeze @welcome_window.dispose @select_window.dispose @images_window.dispose @places_sprite.dispose end
def update @welcome_window.update @select_window.update @images_window.update create_sprite end
def create_sprite index = @select_window.index @places_sprite.bitmap = Cache.picture(@place_picture[index]) update_command end
def update_command if Input.trigger?(Input::C) Sound.play_decision $scene = Scene_Map.new case @select_window.index #-------------------------------------------------------------- A MODIFIER ----------------------------------------------------------------# # C'est ici que vous pouvez configurer la téléportation de l'équipe, pour cela vous devez utiliser cette # commande " $game_player.reserve_transfer(a, b, c, d) " avec : # a : id de la prochaine map # b : coordonnées x de l'équipe # c : coordonnées y de l'équipe # d : la direction dans laquelle va regarder le héros (2=> en bas; 4=> à gauche; 6=> en haut; 8=> à droite) # Une dernière chose : Vous avez remarquez que à côté de " when " (qui signifie quand ou lorsque) il y a # un chiffre, ben ce chiffre représente la position de votre choix que vous avez modifié dans la 2ème modif # plus haut. # Ce qui veut dire que si vous avez 5 choix ou plus, vous devriez ajouter un autre " when z " avec : # z : la position du choix. when 0 $game_player.reserve_transfer(27, 3, 27, 8) #Chemin du palais de Venia# when 1 $game_player.reserve_transfer(3,99,5,8) #Village Gaiard# when 2 $game_player.reserve_transfer(64,45,34,8) #Village Gaiard# when 3 $game_player.reserve_transfer(80,8,10,8) #Manoir #-------------------------------------------------------- FIN DE LA 4EME MODIF ------------------------------------------------------#
end end if Input.trigger?(Input::B) Sound.play_cancel $scene = Scene_Map.new end end
end
#-------------------------------------------------------- FIN DU script -----------------------------------------------------------------# ########################################################################### Liste des scripts déjà utilisés : Vu que ce problème persiste sur un projet vierge, je ne pense pas que ce soit vraiment nécessaire de les mettre. Merci. =) |
|
Age : 33 Inscrit le : 27/06/2008 Messages : 10881
| Sujet: Re: Problème avec le script Porte du monde Lun 27 Sep 2010 - 14:16 | |
| Mmm, quitte à dire un truc assez générique, toutes les images nécessaires au script sont-elles là, au bon endroit, sous le bon format ? Parce qu'il me semble que des bugs cache, c'est souvent en lien avec des trucs manquants ( en l'occurrence, là, j'aurais dis les aperçus des endroits où se téléporter ). |
|
Maître des Duels
Age : 32 Inscrit le : 29/07/2009 Messages : 7841
| Sujet: Re: Problème avec le script Porte du monde Lun 27 Sep 2010 - 15:31 | |
| Tu pourrais afficher le message d'erreur complet ?
Et comme le dit Matsuo, les erreurs de caché c'est souvent les pictures et autres images ( en même temps y'a que les images qui sont mises en cache xD ) |
|
Aventurier Lv.16
Age : 40 Inscrit le : 03/09/2009 Messages : 1503
| Sujet: Re: Problème avec le script Porte du monde Lun 27 Sep 2010 - 17:23 | |
| D'accord je vais faire un screen et j'éditerai ce post. Pourtant toute les images sont en format PNJ et ça plante que quand il y a un trou sur le menu de téléportation enfin bref je fais ça de suite. =) EDIT: Voilà. |
|
Ex-Admin Cruelle
Age : 32 Inscrit le : 03/07/2008 Messages : 2441
| Sujet: Re: Problème avec le script Porte du monde Lun 27 Sep 2010 - 17:37 | |
| Le mieux c'est de fournir une démo ! |
|
Aventurier Lv.16
Age : 40 Inscrit le : 03/09/2009 Messages : 1503
| Sujet: Re: Problème avec le script Porte du monde Lun 27 Sep 2010 - 17:38 | |
| Très bien je vais ça de ce pas. =)
EDIT: Voilà une demo faite en 10 minutes ^^ http://www.mediafire.com/?008cnta1br97jxq J'ai fait 3 maps et j'ai mis les images, en parlant à la sphère bleu on active directement le passage pour la map3, donc il suffit juste de descendre dans le menu pour que ça plante. |
|
| Sujet: Re: Problème avec le script Porte du monde | |
| |
|