Admindictatrice
Age : 34 Inscrit le : 27/02/2009 Messages : 2855
| Sujet: Problème de script : compatibilité ? [Resolu] Mer 3 Fév 2010 - 7:31 | |
| J'ai commencé à toucher aux scripts il n'y a pas si longtemps, et bien sur avec les scripts, les problèmes arrivent. Si quelqu'un arrivait à m'aider je lui en serait très reconnaissante... Voila, j'ai un projet spécial, ou je teste tout les scripts, notamment pour les problèmes de compatibilité (j'ai pas envie que ça foire mon jeu à cause d'un script mal utilisé). Le dernier en date est celui pour changer le battle back, associé au menu ring tournant en cobat. A priori, sur le projet test, aucun problème. Je passe donc sur mon projet Utopie, et là, c'est le drame. Au moment du test de combat, un message d'erreur s'affiche : - Citation :
- Script 'cache' line 75: TypeError occurred.
cannot convert nil into string Ligne du script en question : - Code:
-
70#-------------------------------------------------------------------------- 71 # * Load Bitmap 72#-------------------------------------------------------------------------- 73 def self.load_bitmap(folder_name, filename, hue = 0) 74 @cache = {} if @cache == nil 75 path = folder_name + filename 76 if not @cache.include?(path) or @cache[path].disposed? 77 if filename.empty? 78 @cache[path] = Bitmap.new(32, 32) 79 else 80 @cache[path] = Bitmap.new(path) Problème : il ne me semble pas avoir touché au script "cache" (ce n'est pas mon genre), de plus les deux script cache sont identiques sur mes deux projets. De même que le nombre et le contenu de chaque script. Si j'enlève le script "battleback" (pour changer le fond de combat donc), sur Utopie, il n'y a aucun problème. Alors, est-ce un souci de compatibilité. J'avoue ne pas bien comprendre pourquoi ça marche sur mon projet test et pas sur Utopie ? Merci à celui ou celle qui aura la bonté de m'aider.
Dernière édition par Angellan le Mer 3 Fév 2010 - 14:26, édité 1 fois |
|
Age : 33 Inscrit le : 27/06/2008 Messages : 10881
| Sujet: Re: Problème de script : compatibilité ? [Resolu] Mer 3 Fév 2010 - 7:38 | |
| Mdr Angellan' x) La réponse au niveau script à laquelle j'ai le plus répondu de ma viiiie x)
Bon écoute, soit je suis un idiot et ton problème vient d'une incompatibilité et a exactement le même message d'erreur que ce à quoi je pense, soit tu as oublié d'associer un battleback à la map que tu testes, c'too. Je suppose que tu as du tester en enlever chaque script et voir que le problème venait du script de btb, et bah voilà. Maintenant, associe un btb à ta map.
Le message d'erreur cache n'a aucun rapport, merci le ruby. |
|
Admindictatrice
Age : 34 Inscrit le : 27/02/2009 Messages : 2855
| Sujet: Re: Problème de script : compatibilité ? [Resolu] Mer 3 Fév 2010 - 14:25 | |
| Oh... Et bah oui le combat est pas dans la map 1...
*va se pendre*
Bon du coup je suis rassurée, je peux garder tous mes scripts.
Note : ne plus chercher à comprendre les scripts tard le soir... 5oui j'ai laissé le message ce matin, mais ai eu le blem hier soir u_u")
Merci mon petit mari chéri \o/ |
|
Maître des Duels
Age : 32 Inscrit le : 29/07/2009 Messages : 7841
| Sujet: Re: Problème de script : compatibilité ? [Resolu] Mer 3 Fév 2010 - 19:20 | |
| Tiens utilise ce script là. Il permet de configurer un battleback par défaut ( si battleback pas configuré = défaut ) et si l'image n'existe pas c'est remplacé pour un battleback d'erreur. Au revoir les messages d'erreur ! - Code:
-
#============================================================================== # ¦ BattleBacks #==============================================================================
#scripts de ASHKA, de Claimh, et de MogHunter fusionnés et modifiés par Skillo
#============================================================================== # ¦ Module BattleBack #============================================================================== module BattleBack # Sélection du type de battle Back # 0:Map actuelle avec effets (Par défaut dans VX) # 1:Map actuelle # 2:Utilisation d'une image comme battle Back BB_TYPE = 2 # Affichage du Battle Floor BT_FLOOR = true #Coordonnées du Battle Floor si BT_FLOOR = true FLOOR = [0,142, 128] #Nom du Battle Floor que vous voulez utiliser. Il doit se trouver dans le dossier system de votre jeu. BT_FLOOR_NAME = "BattleFloor" # Affichage du Battleback pour les tests BT_BACK_TEST = "name" # Permet d'afficher une map en cas d'oublie de définition de la map (ça evite que votre jeu crash #si vous avez oublié de mettre un battle back pour une map et que vous avez engager un combat #ça affichera un battle back par defaut BT_BACK_BUG = "error"
#Toutes ces fonctions peuvent être changer via un appel de cript dans un event #Exemple: pour Désactiver/Activer le Battle Floor, creez un event qui appelle un script dans #lequel vous mettez ceci: #BattleBack::BT_FLOOR = false ou BattleBack::BT_FLOOR = true #Pareil pour les autres fonctions. end
#============================================================================== # ¦ Module Cache #============================================================================== module Cache def self.battleback(filename) load_bitmap("Graphics/Battlebacks/", filename) end end
#============================================================================== # ¦ Spriteset_Battle #============================================================================== class Spriteset_Battle WIDTH = 544.00 HEIGHT = 416.00 #-------------------------------------------------------------------------- # ? Création du sprite du battle Back #-------------------------------------------------------------------------- def create_battleback case BattleBack::BB_TYPE when 0 source = $game_temp.background_bitmap bitmap = Bitmap.new(640, 480) bitmap.stretch_blt(bitmap.rect, source, source.rect) bitmap.radial_blur(90, 12) @battleback_sprite = Sprite.new(@viewport1) @battleback_sprite.bitmap = bitmap @battleback_sprite.ox = 320 @battleback_sprite.oy = 240 @battleback_sprite.x = 272 @battleback_sprite.y = 176 @battleback_sprite.wave_amp = 8 @battleback_sprite.wave_length = 240 @battleback_sprite.wave_speed = 120 when 1 source = $game_temp.background_bitmap bitmap = Bitmap.new(640, 480) bitmap.stretch_blt(bitmap.rect, source, source.rect) @battleback_sprite = Sprite.new(@viewport1) @battleback_sprite.bitmap = bitmap @battleback_sprite.ox = 320 @battleback_sprite.oy = 240 @battleback_sprite.x = 272 @battleback_sprite.y = 176 when 2 if $BTEST battleback(@viewport1) else battleback(@viewport1, $battleback_name) end end end #-------------------------------------------------------------------------- # ? Création du sprite du Battle Floor #--------------------------------------------------------------------------
def create_battlefloor if BattleBack::BT_FLOOR @battlefloor_sprite = Sprite.new(@viewport1) @battlefloor_sprite.bitmap = Cache.system(BattleBack::BT_FLOOR_NAME) @battlefloor_sprite.x = BattleBack::FLOOR[0] @battlefloor_sprite.y = BattleBack::FLOOR[1] @battlefloor_sprite.opacity = BattleBack::FLOOR[2] @battlefloor_sprite.z = 1 end end #-------------------------------------------------------------------------- # ? Suppression du sprite du Battle Floor #-------------------------------------------------------------------------- alias dispose_battlefloor_mbb dispose_battlefloor def dispose_battlefloor dispose_battlefloor_mbb if BattleBack::BT_FLOOR end #-------------------------------------------------------------------------- # ? Mise à jour du sprite du Battle Floor #-------------------------------------------------------------------------- alias update_battlefloor_mbb update_battlefloor def update_battlefloor update_battlefloor_mbb if BattleBack::BT_FLOOR end #-------------------------------------------------------------------------- # Creation de l'image du Battleback #-------------------------------------------------------------------------- def battleback(viewport, battleback_name = BattleBack::BT_BACK_TEST) @battleback_name = battleback_name @battleback_sprite = Sprite.new(viewport) @battleback_sprite.bitmap = Cache.battleback(@battleback_name) # Zoom est effectuée selon la taille de l'image. @x_zoom = WIDTH / @battleback_sprite.bitmap.width @y_zoom = HEIGHT / @battleback_sprite.bitmap.height @zoom = @x_zoom > @y_zoom ? @x_zoom : @y_zoom # Zoom effectué. @battleback_sprite.zoom_x = @zoom @battleback_sprite.zoom_y = @zoom # Fabrication de l'affichage centrale. @battleback_sprite.ox = @battleback_sprite.bitmap.width / 2 @battleback_sprite.oy = @battleback_sprite.bitmap.height / 2 @battleback_sprite.x = (@battleback_sprite.bitmap.width / 2) * @zoom @battleback_sprite.y = (@battleback_sprite.bitmap.height / 2) * @zoom end end
# -------------------------------------------------------------------------- # La partie ci-dessous associe une map à un battleback. # Les premieres lignes sont des tableaux stockant des ID des maps. # Les conditions en dessous associent un tableau ( par le biais des ID des maps qu'il contient ) à un battleback. # Rajouter les ID des maps dans le tableau de votre choix !! # Et supprimez le # devant les lignes dont le tableau est utilisé. # Tout vos battlebacks doivent etre importés dans un dossier "Battlebacks" du gestionnaire. # Il suffit ensuite de remplacer "name" par le nom d'un de vos battlebacks ( entre " " ). # Si vous utilisez plus que neuf battleback ( evidement ), il suffit de créer un nouveau tableau à la suite des autres. # L'endroit est indiqué.
# back_10 = [ID, ID, ID, ID, ID]
# Et d'inserer une nouvelle condition juste au dessus du " end " ( le dernier de cette partie ). # L'endroit est indiqué.
# elsif back_10.include?($game_map.map_id) # $battleback_name = "name"
# -------------------------------------------------------------------------- class Scene_Map < Scene_Base alias map_update update def update super back_1 = [ID, ID, ID, ID, ID] # Placer ici toutes les ID des maps associé au back 1 #back_2 = [ID, ID, ID, ID, ID] # Placer ici toutes les ID des maps associé au back 2 #back_3 = [ID, ID, ID, ID, ID] # Placer ici toutes les ID des maps associé au back 3 #back_4 = [ID, ID, ID, ID, ID] # Placer ici toutes les ID des maps associé au back 4 #back_5 = [ID, ID, ID, ID, ID] # Placer ici toutes les ID des maps associé au back 5 #back_6 = [ID, ID, ID, ID, ID] # Placer ici toutes les ID des maps associé au back 6 #back_7 = [ID, ID, ID, ID, ID] # Placer ici toutes les ID des maps associé au back 7 #back_8 = [ID, ID, ID, ID, ID] # Placer ici toutes les ID des maps associé au back 8 #back_9 = [ID, ID, ID, ID, ID] # Placer ici toutes les ID des maps associé au back 9
# Ajouter ci-dessus les tableaux de vos autres battlebacks if back_1.include?($game_map.map_id) $battleback_name = "name" # Nom du battleback 1 lié au tableau back_1 # elsif back_2.include?($game_map.map_id) # $battleback_name = "name" # Nom du battleback 2 lié au tableau back_2 # elsif back_3.include?($game_map.map_id) # $battleback_name = "name" # Nom du battleback 3 lié au tableau back_3 # elsif back_4.include?($game_map.map_id) # $battleback_name = "name" # Nom du battleback 4 lié au tableau back_4 # elsif back_5.include?($game_map.map_id) # $battleback_name = "name" # Nom du battleback 5 lié au tableau back_5 # elsif back_6.include?($game_map.map_id) # $battleback_name = "name" # Nom du battleback 6 lié au tableau back_6 # elsif back_7.include?($game_map.map_id) # $battleback_name = "name" # Nom du battleback 7 lié au tableau back_7 # elsif back_8.include?($game_map.map_id) # $battleback_name = "name" # Nom du battleback 8 lié au tableau back_8 # elsif back_9.include?($game_map.map_id) # $battleback_name = "name" # Nom du battleback 9 lié au tableau back_9
# Ajouter ci-dessus les conditions pour vos autres battleback else $battleback_name = BattleBack::BT_BACK_BUG end # si le joueur est dans une area incluant [A], le battleback est different for area in $data_areas.values if $game_player.in_area?(area) and area.name.include?("[A]") choose_bback(area) end end map_update end
# -------------------------------------------------------------------------- # Choix du battleback des areas # La partie ci-dessous attribue un battleback selon la zone où le héros est. # Sur une map, vous avez le back principal, celui lié au tableau où est l'ID de la map ( l'etape 2 ci-dessus ). # Vous pouvez aussi avoir des zones aves des backs differents. # Il suffit de créer une area ( avec ou sans ennemi supplementaire, à vous de voir !! ). # Si vous voulez que l'area dispose d'un back different de celui du reste de la map, il faut inclure ces trois caracteres dans le nom de l'area : [A] # Il suffit ensuite de preciser quels back en rajoutant un [1], [2] ou [3], ... # Configurer la methode ci dessous pour savoir à quoi correspond chacun d'eux.
# Vous avez donc un battleback pour chaque maps et la possibilité d'avoir plusieurs battlebacks par map grace aux areas !! # L'area appellé "[A][5]je_sais_pas_quoi " aura donc un battleback different que celui de la map, celui correspondant au [5]. # L'area " je_sais_pas_quoi " utilise le même battleback que la map. # ------------------------------------------------------------------------- def choose_bback(area) if area.name.include?("[1]") # Area incluant [1] $battleback_name = "name" # Nom du battleback voulu elsif area.name.include?("[2]") # Area incluant [2] $battleback_name = "name" # Nom du battleback voulu elsif area.name.include?("[3]") # Area incluant [3] $battleback_name = "name" # Nom du battleback voulu elsif area.name.include?("[4]") # Area incluant [4] $battleback_name = "name" # Nom du battleback voulu elsif area.name.include?("[5]") # Area incluant [5] $battleback_name = "name" # Nom du battleback voulu elsif area.name.include?("[6]") # Area incluant [6] $battleback_name = "name" # Nom du battleback voulu elsif area.name.include?("[7]") # Area incluant [7] $battleback_name = "name" # Nom du battleback voulu elsif area.name.include?("[8]") # Area incluant [8] $battleback_name = "name" # Nom du battleback voulu elsif area.name.include?("[9]") # Area incluant [9] $battleback_name = "name" # Nom du battleback voulu end end end # class |
|
Admindictatrice
Age : 34 Inscrit le : 27/02/2009 Messages : 2855
| Sujet: Re: Problème de script : compatibilité ? [Resolu] Mer 3 Fév 2010 - 22:34 | |
| |
|
| Sujet: Re: Problème de script : compatibilité ? [Resolu] | |
| |
|