Comment résoudre les erreurs de traçage Python et de pack racine du client Metin2 ?
Arrêt du client, script d'interface utilisateur, pack racine et guide de débogage Python.
L'un des problèmes les plus courants côté client Metin2 traçabilité Python sont des erreurs. Le client peut se fermer lors de l'ouverture, l'écran de connexion peut ne pas apparaître, le jeu peut se fermer lorsque l'inventaire ou une fenêtre spéciale s'ouvre, ou des lignes d'erreur appartenant aux fichiers Python peuvent être visibles dans syserr.txt.
Ces erreurs sont généralement paquet de racines, script utilisateur, fichiers d'interface locaux, est dû à une importation manquante, à un nom de fonction incorrect ou à une syntaxe Python cassée.
1. Qu'est-ce que le traçage Python ?
Traceback est la sortie d'erreur dans laquelle Python indique quel fichier et quelle ligne ont un problème lorsqu'une erreur se produit. Dans le client Metin2, syserr.txt, cela ressemble généralement à ceci :
Traceback (most recent call last): File "uiInventory.py", line 123, in OnPressEscapeKey AttributeError: 'InventoryWindow' object has no attribute 'Close'
erreur dans cet exemple uiInventaire.py Cela s'est produit à la ligne 123 du dossier. Si le type d'erreur est Erreur d'attribut Il apparaît comme .
2. Vérification du fichier Syserr du client
Le premier fichier de contrôle côté client se trouve généralement dans le dossier client. syserr.txt est le fichier.
Client klasorunde syserr.txt dosyasini acin ve en alttaki yeni hatalari kontrol edin.
La partie la plus importante de l’erreur concerne généralement les résultats. Parce que dans Python traceback, les lignes du haut montrent la séquence d'appel et la ligne du bas montre le type d'erreur réel.
3. Types d'erreurs Python les plus courants
- Erreur de syntaxe : Il y a une faute de frappe. Des parenthèses, des deux-points ou des guillemets peuvent manquer.
- Erreur d'attribut : La fonction ou la variable appelée n'existe pas dans l'objet concerné.
- Erreur de nom : Le nom utilisé n'est pas défini.
- Erreur d'importation : Le fichier ou module Python requis est introuvable.
- TypeErreur : Un mauvais type ou un mauvais nombre de paramètres ont été envoyés à la fonction.
- Erreur de clé : Une clé qui ne figure pas dans le dictionnaire a été appelée.
Ces types d’erreurs n’affichent pas directement la solution, mais ils vous indiquent dans quelle direction regarder.
4. Erreurs du pack racine
Le pack racine contient la plupart des fichiers Python côté client. Par exemple :
- ui.py
- jeu.py
- interfaceModule.py
- uiInventaire.py
- uiCharacter.py
- uiScriptLocale.py
- constInfo.py
Une modification incorrecte dans le fichier racine peut empêcher le client de s'ouvrir ou de se fermer lorsqu'une certaine fenêtre est ouverte.
Ordre général de vérification des erreurs racine :
- Identifiez le dernier fichier Python modifié.
- Recherchez le fichier et le numéro de ligne dans syserr.txt.
- Recherchez une importation manquante ou un nom de fonction incorrect.
- Vérifiez les indentations Python.
- Assurez-vous que le fichier est réellement mis à jour lors du reconditionnement du pack racine.
5. Erreurs de script d'interface utilisateur
Fenêtres de l'interface client Metin2 souvent script utilisateur Il est défini par des fichiers. Ces fichiers contiennent la taille de la fenêtre, l'emplacement des boutons, le chemin de l'image, la zone de texte et les objets enfants.
Les erreurs Uiscript peuvent présenter les symptômes suivants :
- Le client se ferme lorsqu'une fenêtre spécifique est ouverte
- La fenêtre s'ouvre mais les boutons ne sont pas visibles
- Les objets d'interface se chevauchent
- Une erreur LoadScriptFile se produit dans Syserr
- Une erreur GetChild se produit du côté de Python
Exemple d'erreur GetChild :
KeyError: 'board' AttributeError: 'NoneType' object has no attribute 'SetEvent'
Dans de telles erreurs, le fichier Python peut appeler un objet qui n'existe pas dans uiscript.
6. Résoudre les erreurs GetChild
Supposons qu'il existe un code comme celui-ci du côté Python :
self.GetChild("accept_button")Dans ce cas, dans le fichier uiscript accepter_bouton L'objet enfant nommé doit réellement exister. Si le nom est différent ou n'existe pas du tout, le client peut générer une erreur.
Pour la solution :
- Vérifiez le nom GetChild dans le fichier Python.
- Vérifiez le champ de nom dans le fichier uiscript.
- Faites attention à la différence de cas.
- Assurez-vous que le bouton ou l'objet texte nouvellement ajouté se trouve sous le bon parent.
7. Problèmes de fichiers et de packs manquants
Les types d'erreurs suivants peuvent se produire dans le client siserr :
No file or directory LoadScriptFile Error CANNOT_FIND_PACK_FILE Failed to load image
Dans ce cas, le fichier concerné n'a peut-être pas été ajouté au package, il a peut-être été placé dans le mauvais dossier ou le chemin a peut-être été mal écrit.
En particulier, les types de fichiers suivants doivent être vérifiés :
- Fichiers Python .py
- Fichiers Python compilés .pyc
- Fichiers uiscript .py
- Fichiers images .tga, .dds, .sub
- fichiers d'interface locaux
8. Problèmes d'encodage et de caractères turcs
Dans certaines anciennes infrastructures client, l'utilisation d'un codage incorrect dans les fichiers Python ou les fichiers de paramètres régionaux peut provoquer des erreurs client. Surtout si les caractères turcs sont mal enregistrés, le texte peut apparaître déformé ou le fichier peut être illisible.
Points à considérer :
- Conservez la structure de codage existante du fichier.
- Ne cassez pas le jeu de caractères lors de l'enregistrement de fichiers entre différents éditeurs.
- Faites attention à l'utilisation de ş, ç, ğ, ü, ö, ı dans les fichiers qui ne prennent pas en charge les caractères turcs.
- UTF-8 peut ne pas toujours fonctionner correctement sur des infrastructures plus anciennes.
Erreurs courantes
- Modification aléatoire des fichiers racine sans lire syserr.txt
- Briser les indentations Python
- Appeler un objet qui n'est pas dans Uiscript avec GetChild en Python
- Penser que le pack a été mis à jour et tester avec l'ancien client
- Ne pas ajouter les fichiers image manquants au client
- Empêcher la lecture du fichier en corrompant la structure de codage
FAQ
Le client ouvre mais ferme à l'ouverture de l'inventaire, pourquoi ?
Il peut y avoir une erreur dans le fichier Python ou uiscript lié à l'inventaire. uiInventory.py et le fichier uiscript associé doivent être vérifiés via le client syserr.
Quelle est la ligne la plus importante dans l’erreur de traçabilité ?
Habituellement, la ligne d'erreur en bas montre le véritable problème. Les lignes supérieures décrivent la chaîne d'appel.
Le jeu ne démarre pas après le changement du root pack, que dois-je faire ?
Comparez le dernier fichier Python modifié avec son ancienne sauvegarde, vérifiez syserr.txt et assurez-vous que le package a bien été mis à jour.
Recommandations en matière de sécurité et d'exploitation
- Assurez-vous de faire une sauvegarde avant de modifier le pack racine.
- Après chaque modification, effacez le fichier syserr du client et testez à nouveau.
- Effectuez de petits tests par lots au lieu de modifications racine en masse.
- Testez sur un client propre avant de patcher les joueurs.
- Ne modifiez pas inconsciemment le format d’encodage et de fin de ligne.
Cet article est spécialement préparé pour PvPServer.