Super Mario Bros. X City

Bienvenue sur la communauté francophone de SMBX ! SMBX est un fangame regroupant les éléments de SMB, SMB2, SMB3, SMW, SM et LoZ permettant de créer ses propres jeux
 
AccueilAccueil  PortailPortail  PublicationsPublications  FAQFAQ  RechercherRechercher  GroupesGroupes  S'enregistrerS'enregistrer  ConnexionConnexion  
Visitez nos partenaires :
Si vous ne possédez pas SMBX ou que vous l'avez perdu, vous pouvez le télécharger ici. Wink
Lisez le panneau d'affichage pour être au courant des dernières infos !
Envie de participer à un jeu interactif avec les autres membres ? SMBX City's RPG : NFC Copyright Quest est fait pour vous !
La ChatBox ne sera plus accessible à partir du 18 juin 2017. Cliquez ici pour plus d'infos.

Partagez | 
 

 [How-To] Récupérer un niveau corrompu après type mismatch.

Voir le sujet précédent Voir le sujet suivant Aller en bas 
AuteurMessage
2x2=4
Maskass
Maskass


Messages 46
Date d'inscription 22/09/2014

MessageSujet: [How-To] Récupérer un niveau corrompu après type mismatch.   Jeu 15 Jan - 2:00

Salut les gens. Laughing

Avouez: ça nous est tous arrivé: on construit un niveau, tranquille, puis on se dit qu'on a besoin d'un custom NPC, donc on va en chercher un dans un parc graphique (ou on le construit nous-même), et à la prochaine sauvegarde:



Arr, le fameux type mismatch que tout le monde déteste. x( Quand vous vous foirez sur la taille d'une hitbox pour un custom NPC, voilà sur quoi ça débouche! Et le pire avec le mismatch, c'est qu'il pourri votre niveau. Vous aurez beau le rouvrir autant de fois que vous voudrez, ça ne marchera jamais, vous retomberez toujours sur ce fucking message d'erreur! PAF!

Et bien j'ai trouvé la solution pour s'en sortir, et ainsi, sauver votre niveau, sans avoir à tout refaire, et c'est pour ça que je fais ce How-To! Faut un peu mettre la main à la pâte, mais ça se fait assez facilement! cat Pour que ce soit plut concret, je m'appuierai sur un exemple, qui correspond à un problème que j'ai vraiment eu avec le type mismatch.

1. Corriger le problème
Commencez par corriger le problème avec le NPC. Il vient forcément d'un document texte, mais il est parfois lié aux sprites en eux-même. Dans notre exemple, j'avais pris le "Christmas Kamek", du parc graphique de Red-Yoshi (gaffe d'ailleurs si vous l'utilisez, vu qu'il est buggé). Voici le document texte:

Citation :
width=103
height=64
gfxwidth=103
gfxheight=64

Une dimension impair, c'est pas normal, mais, le spritesheet faisait en effet 103px de largeur. J'ai donc corrigé le fichier gif (et j'ai aussi corrigé un problème de pixels parasites sur l'image), puis j'ai changé le fichier txt pour mettre une largeur de 102px.

2. Ouvrir avec le bloc note
Ensuite, vu que l'éditeur SMBX refuse d'ouvrir votre niveau, vous allez devoir vous-même aller bidouiller le code source du jeu pour vous en sortir. Attention: ne faites pas de c*nneries, sinon, vous allez cumuler les problèmes et ça va être le souk pour vous en sortir après ça. Vous double-cliquez sur votre niveau dans le dossier où il est contenu, puis vous choisissez de sélectionner vous-même le programme à utiliser pour lire le fichier, et vous prenez le bloc note. Ou bien, si l'option se présente, clic droit --> ouvrir avec --> bloc-note, mais normalement, vous devriez pas avoir cette option.



(je vous conseille de décocher "toujours ouvrir avec ce programme", sinon vous allez avoir une icône du programme sur tous vos niveaux. En sois, c'est pas grave, ça risque pas de faire planter, mais c'est pas bô je trouve)

Je précise aussi qu'il faut impérativement utiliser le bloc-note, pas un traitement de texte comme World, parce que dans les traitements de texte, y'a des codes cachés partout (pour la police, le retrait, l'espacement entre 2 lignes, la casse ...), et ça, SMBX, il aime pas trop. Mr. Green

3. Localiser la tumeur
Une fois le fichier lvl ouvert avec le bloc-note, vous tombez sur un fichier texte rempli de code qui ne veut rien dire à première vue, avec des #FALSE#, des nombres immenses en négatif, des "Default", des "next" et j'en passe c'est des meilleures. Je pourrais vous expliquer à quoi correspondent ces codes, parce que je me suis penché dessus longuement et j'ai compris comment tout cela marche ... mais ça serait beaaaaaaucoup trop long et c'est pas le sujet du topic: je suis là pour vous aider à éradiquer le type mismatch.

Donc en gros, pour vous expliquer quand même la structure générale: y'a d'abord les nombres qui correspondent au dimension du niveau, puis des codes auxquels faut pas toucher, puis les codes des block, puis ceux des background object, et après ça, on tombe sur les codes des npcs.

Voici la structure général du code des npcs. Ça concerne un npc normal c'est-à-dire qui n'est pas enterré, qui n'est pas dans une bulle, pas lancé par un Lakitu, pas généré en boucle par un générateur, qui n'active aucun event ...

coordonnée x
coordonnée y
-1 (ce -1 est propre aux npc. Le code des block par exemple, ne possède pas de -1)
Code SMBX du npc (exemple: pour le Goomba de SMB3, le "code SMBX", c'est 1, car c'est le npc-1)
#FALSE#
""
#FALSE#
#FALSE#
#FALSE#
"nom du layer" (si le npc n'est pas un layer, alors le nom donné sera "Default")
""
""
""
""
""

Et c'est grâce à cette structure générale que vous allez trouver le problème: tout d'abord, placez-vous en haut du bloc-note, et lancez une recherche (ctrl + F)



Dans "recherchez", vous tapez le code SMBX du npc buggé, que vous devez normalement connaître. Dans mon cas, je sais que c'est le Kamek, qui remplace le Lakitu de SMW. Je vais chercher le code SMBX du Lakitu: c'est le 284. Du coup, dans le champ de recherche, je tape "284", et important aussi: il faut cocher "bas" dans le champ "direction" (en gros, on se met en haut du bloc-note, et on lui dit de chercher "284" en se dirigeant vers le bas, donc où il y a tout le reste. Si on avait mis "haut", il nous aurait dit qu'il a rien trouvé, ce qui est normal, vu qu'il y a rien plus haut)

Il vous emmène au premier endroit où il trouve le nombre "284". Attention: il faut que la structure autour du nombre corresponde. Dans mon cas, voilà ce qu'il trouve en premier:


Ce n'est pas le nombre 284 seul, et en plus, on a pas le -1 spécifique aux npc, donc je sais que c'est pas le bon code. Du coup, il faut continuer: on retourne dans le champ de recherche, et on appuie encore sur Entrer, jusqu'à trouver quelque chose qui corresponde.



Bingo! On retrouve bien la structure générale que je vous ai affichée plus haut: coordonnée x, puis y, puis -1, puis le code SMBX du npc (284). Le 291 qui vient après, je vous en ai pas parlé mais en gros, ça veut dire que le Lakitu (284) jette le npc 291. Ensuite, False, "", 3 fois FALSE (bon, là c'est True, mais c'est parce que j'ai bidouillé un truc dans mon niveau, mais on voit bien que ça colle), "Default" et 5 fois "".

4. Corriger
Comment faire pour corriger le problème ? Et bah plusieurs solutions! En fait, qu'est-ce qui fait crasher le jeu concrètement ? Et bien c'est la coordonnée à virgule: -205699.5. Donc pour corriger, il vous suffit de virer la virgule, pour mettre -205699 ou -205700  . Smile Vous n'êtes pas obligé de mettre un chiffre pair, le jeu marchera même avec un chiffre impair. Ou alors, deuxième méthode: carrément virer le npc purement et simplement, si vous voulez plus voir sa sale tronche! Pour ça, faut supprimer le code mais attention: vous devez supprimer le code du npc en question, mais SURTOUT PAS une partie du code des npcs voisins, sinon ça va encore planter. Relisez bien la structure des npcs que je vous ai donnée plus haut pour savoir ce qu'il faut supprimer. La solution est en spoiler:

Il faut supprimer ...:
 

Et voilà. Smile Après, si vous ne savez pas quel est le npc qui est buggé (et ça, c'est pas de bol), ou si le npc buggé remplace le Goomba par exemple, (c'est pas pratique de rechercher "1", il y en a partout des 1!!) et bien dans le recherche, au lieu de taper son code SMBX, vous tapez un point comme ça: .

Dans le code d'un niveau, il n'y a PRESQUE PAS de points: il peut y en avoir dans un event si vous avez mis une vitesse de déplacement de layer à virgule, pour une custom music, ou dans un dialogue, mais du moment que vous trouvez un point dans du code pur de npc, c'est qu'il y a un soucis. Et pour être encore plus précis, vous pouvez même rechercher .5 parce qu'en général, quand vous avez eu un soucis de hitbox avec un npc, la valeur foirée de coordonnée qui va s'afficher, va finir par .5



Et voilà, c'était mon tuto pour faire refonctionner un niveau après une erreur de type mismatch. Smile S'il y a un point qui vous semble obscur, n'hésitez pas à le dire.
Revenir en haut Aller en bas
Dark-Francis
Peach
Peach
avatar

Messages 764
Date d'inscription 17/08/2010
Localisation Reliqua

Fiche personnage RPG
Nom: Darky
Points Coeur (PC) Points Coeur (PC):
20/20  (20/20)
Points Fleur (PF) Points Fleur (PF):
35/35  (35/35)

MessageSujet: Re: [How-To] Récupérer un niveau corrompu après type mismatch.   Jeu 15 Jan - 13:12

Ton tuto me parait un peu louche perso. J'ai souvent vu des erreurs de type mismatch, c'est assez fréquent, comme tu le dis à cause de tailles impaires ou de valeur à virgule dans les codes des npcs. Seulement, quand tu corriges le code et que tu relances le niveau, en principe il s'ouvre sans problème et tout va bien. Du coup, je sais pas trop où t'es allé chercher tout ça...

M'fin, ça reste intéressant, et ça pourra peut-être servir à dépanner d'autres erreurs à l'avenir. Essayez quand de relancer juste le niveau dans l'éditeur après avoir corrigé avant d'aller fouiner dans ces conneries, c'est un coup à supprimer un truc qu'il faut pas pour rien.

_________________
It's about our dreams we can't give it up ○
○ There's no running away from reality, Invité
Revenir en haut Aller en bas
2x2=4
Maskass
Maskass


Messages 46
Date d'inscription 22/09/2014

MessageSujet: Re: [How-To] Récupérer un niveau corrompu après type mismatch.   Jeu 15 Jan - 14:03

C'est vrai que dans la majorité des cas, corriger l'erreur est suffisant. Pourquoi ça ? Et bien parce qu'en fait, quand tu définies la taille en pixel de la hitbox du NPC, et que tu le places dans ton niveau, il va être déplacé un peu vers la gauche ou un peu vers le droite. S'il est déplacé de 2px ou même de 1px, alors pas de problème: la coordonnée x va être un nombre entier, donc il n'y aura pas de problème. :p

Par contre, si t'as pas de chance, le NPC est déplacé d'un nombre de pixel à virgule, comme 0.5 pixels, et ça, ça reste dans le code source du niveau, quoi que tu fasses. C'est une aberration, un pixel, ça peut pas être coupé en deux, et donc le jeu comprend pas et plante systématiquement à l'ouverture du niveau. Et là, tu seras obligé d'aller bidouiller le code pour faire refonctionner ton niveau.

C'est une question de chance en fait.
Revenir en haut Aller en bas
Romain.XXX
Administrateur
Administrateur
avatar

Messages 401
Date d'inscription 01/06/2013
Localisation Monde 1 niveau 5

Fiche personnage RPG
Nom: Boomain
Points Coeur (PC) Points Coeur (PC):
18/18  (18/18)
Points Fleur (PF) Points Fleur (PF):
28/28  (28/28)

MessageSujet: Re: [How-To] Récupérer un niveau corrompu après type mismatch.   Jeu 15 Jan - 18:12

Moi je trouve sa vachement intéressant ! J'avais eu aussi un problème avec un npc impair et vu que malheureusement je n'avais pas ta technique j'ai du le refaire (heureusement je m'y était préparais et j'avais fait des sauvegarde).
En tout cas merci pour cette info je suis sur qu'elle me sera utile à l'avenir !
Revenir en haut Aller en bas
Toaddle
Birdo
Birdo
avatar

Messages 436
Date d'inscription 01/09/2012
Localisation Champiville

Fiche personnage RPG
Nom: Toaddle
Points Coeur (PC) Points Coeur (PC):
35/35  (35/35)
Points Fleur (PF) Points Fleur (PF):
30/30  (30/30)

MessageSujet: Re: [How-To] Récupérer un niveau corrompu après type mismatch.   Mar 11 Aoû - 11:59

J'ai encore eu la boulette qui m'est tombé dessus, et pourtant dans un niveau ou j'avais pas mis de customs récemment.

Faites attention à vos noms de layers, ne mettez pas de caractères spéciaux ! J'ai mis des guillemets, j'ai failli le perdre Wink

_________________
Je te surveille Invité.
Ceci est une balise username.
Revenir en haut Aller en bas
http://www.planete-toad.fr
Contenu sponsorisé




MessageSujet: Re: [How-To] Récupérer un niveau corrompu après type mismatch.   

Revenir en haut Aller en bas
 
[How-To] Récupérer un niveau corrompu après type mismatch.
Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» [How-To] Récupérer un niveau corrompu après type mismatch.
» Visite guidée : Récupération de souvenirs. (niveau 18-20)
» Objet(s) introuvable(s) du niveau "T'as saisi ?"
» Technique d'xp autour du niveau 40
» Maitre-picoleur, pandawa au marteau [niveau 199]

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
Super Mario Bros. X City :: SMBX :: Bibliotutos SMBX :: Installation, Fonctionnement & Jeu-
Sauter vers: