Come risolvere gli errori di traceback Python e root pack del client Metin2?
Arresto del client, script dell'interfaccia utente, root pack e guida al debug di Python.
Uno dei problemi più comuni sul lato client Metin2 Tracciabilità di Python sono errori. Il client potrebbe chiudersi durante l'apertura, la schermata di accesso potrebbe non apparire, il gioco potrebbe chiudersi quando si apre l'inventario o una finestra speciale, oppure potrebbero essere visualizzate righe di errore appartenenti ai file Python in syserr.txt.
Questi errori sono solitamente rootpack, uiscript, file dell'interfaccia locale, è causato da un'importazione mancante, da un nome di funzione errato o da una sintassi Python errata.
1. Cos'è Python Traceback?
Traceback è l'output dell'errore in cui Python mostra quale file e quale riga presenta un problema quando si verifica un errore. Nel client Metin2 syserr.txt di solito appare così:
Traceback (most recent call last): File "uiInventory.py", line 123, in OnPressEscapeKey AttributeError: 'InventoryWindow' object has no attribute 'Close'
errore in questo esempio uiInventory.py Si è verificato alla riga 123 del file. Se il tipo di errore è Errore attributo Appare come .
2. Controllo del file Syserr del client
Il primo file di controllo sul lato client si trova solitamente nella cartella client. syserr.txt è il file.
Client klasorunde syserr.txt dosyasini acin ve en alttaki yeni hatalari kontrol edin.
La parte più importante dell'errore è solitamente il risultato finale. Perché nel traceback Python, le righe superiori mostrano la sequenza di chiamate e la riga inferiore mostra il tipo di errore effettivo.
3. Tipi più comuni di errori Python
- Errore di sintassi: C'è un errore di battitura. Potrebbero mancare parentesi, due punti o virgolette.
- Errore attributo: La funzione o la variabile richiamata non esiste nell'oggetto in questione.
- NomeErrore: Il nome utilizzato non è definito.
- Errore di importazione: Il file o il modulo Python richiesto non è stato trovato.
- TipoErrore: Alla funzione è stato inviato il tipo o il numero errato di parametri.
- Errore chiave: È stata chiamata una chiave che non è presente nel dizionario.
Questi tipi di errore non mostrano direttamente la soluzione, ma ti dicono in quale direzione dovresti guardare.
4. Errori del pacchetto root
Il pacchetto root contiene la maggior parte dei file Python lato client. Per esempio:
- ui.py
- gioco.py
- interfacciaModule.py
- uiInventory.py
- uiCharacter.py
- uiScriptLocale.py
- constInfo.py
Una modifica errata nel file root può causare la mancata apertura o la chiusura del client quando viene aperta una determinata finestra.
Ordine di controllo generale per gli errori root:
- Identificare l'ultimo file Python modificato.
- Trova il file e il numero di riga in syserr.txt.
- Verifica l'importazione mancante o il nome della funzione errato.
- Controlla i rientri Python.
- Assicurati che il file sia effettivamente aggiornato quando riconfeziona il pacchetto root.
5. Errori di script dell'interfaccia utente
Finestre dell'interfaccia client Metin2 spesso uiscript È definito da file. Questi file contengono la dimensione della finestra, la posizione del pulsante, il percorso dell'immagine, l'area di testo e gli oggetti secondari.
Gli errori uiscript possono presentare i seguenti sintomi:
- Il client si chiude quando viene aperta una finestra specifica
- La finestra si apre ma i pulsanti non sono visibili
- Gli oggetti dell'interfaccia si sovrappongono
- L'errore LoadScriptFile si verifica in syserr
- L'errore GetChild si verifica sul lato Python
Esempio di errore GetChild:
KeyError: 'board' AttributeError: 'NoneType' object has no attribute 'SetEvent'
In tali errori, il file Python potrebbe chiamare un oggetto che non esiste in uiscript.
6. Risoluzione degli errori GetChild
Supponiamo che ci sia un codice come questo sul lato Python:
self.GetChild("accept_button")In questo caso nel file uiscript accetta_pulsante L'oggetto figlio denominato deve effettivamente esistere. Se il nome è diverso o non esiste affatto, il client potrebbe generare un errore.
Per la soluzione:
- Controlla il nome GetChild nel file Python.
- Controlla il campo del nome nel file uiscript.
- Prestare attenzione alla differenza tra maiuscole e minuscole.
- Assicurati che il pulsante o l'oggetto di testo appena aggiunto sia sotto il genitore corretto.
7. Problemi relativi a file e pacchetti mancanti
Nel client siserr possono verificarsi i seguenti tipi di errori:
No file or directory LoadScriptFile Error CANNOT_FIND_PACK_FILE Failed to load image
In questo caso, il file in questione potrebbe non essere stato aggiunto al pacchetto, potrebbe essere stato inserito nella cartella sbagliata o il percorso potrebbe essere stato scritto in modo errato.
In particolare, dovrebbero essere controllati i seguenti tipi di file:
- File Python .py
- File Python compilati .pyc
- File .py uiscript
- File immagine .tga, .dds, .sub
- file dell'interfaccia locale
8. Problemi di codifica e caratteri turchi
In alcune vecchie infrastrutture client, l'utilizzo di una codifica errata nei file Python o nei file locali può causare errori del client. Soprattutto se i caratteri turchi vengono registrati in modo errato, il testo potrebbe apparire distorto o il file potrebbe non essere leggibile.
Cose da considerare:
- Mantieni la struttura di codifica esistente del file.
- Non interrompere il set di caratteri durante il salvataggio di file tra editor diversi.
- Prestare attenzione all'uso di ş, ç, ğ, ü, ö, ı nei file che non supportano i caratteri turchi.
- UTF-8 potrebbe non funzionare sempre correttamente sulle infrastrutture più vecchie.
Errori comuni
- Modifica casuale dei file root senza leggere syserr.txt
- Rompere i rientri Python
- Chiamare un oggetto che non è in Uiscript con GetChild in Python
- Penso che il pacchetto sia stato aggiornato e testato con il vecchio client
- Non aggiungere file di immagine mancanti al client
- Impedire la lettura del file corrompendo la struttura di codifica
Domande frequenti
Il client si apre ma si chiude quando si apre l'inventario, perché?
Potrebbe esserci un errore nel file Python o uiscript relativo all'inventario. uiInventory.py e il relativo file uiscript devono essere controllati tramite il client syserr.
Qual è la riga più importante nell'errore di traceback?
Di solito la riga di errore in basso mostra il vero problema. Le righe superiori descrivono la catena di chiamate.
Il gioco non si avvia dopo il cambio del root pack, cosa devo fare?
Confronta l'ultimo file Python modificato con il suo vecchio backup, controlla syserr.txt e assicurati che il pacchetto sia stato effettivamente aggiornato.
Raccomandazioni per la sicurezza e il funzionamento
- Assicurati di eseguire un backup prima di modificare il pacchetto root.
- Dopo ogni modifica, cancellare il file syserr del client ed eseguire nuovamente il test.
- Esegui piccoli test in batch invece di apportare modifiche root in blocco.
- Prova su un client pulito prima di applicare patch ai giocatori.
- Non modificare inconsciamente la codifica e il formato di fine riga.
Questo articolo è stato preparato appositamente per PvPServer.