Como resolver erros de traceback e root pack do cliente Metin2 em Python?
Desligamento do cliente, script UI, root pack e guia de depuração Python.
Um dos problemas mais comuns do lado do cliente Metin2 Rastreamento de Python são erros. O cliente pode fechar ao abrir, o ecrã de login pode não aparecer, o jogo pode fechar quando o inventário ou uma janela especial é aberta, ou as linhas de erro pertencentes a ficheiros Python podem ser vistas no syserr.txt.
Estes erros geralmente são pacote de root, uiscript, ficheiros de interface local, é causado por falta de importação, nome de função incorreto ou sintaxe Python quebrada.
1. O que é o rastreio em Python?
Traceback é a saída de erro em que o Python mostra qual o ficheiro e qual a linha que está com problemas quando ocorre um erro. No cliente Metin2 o syserr.txt fica normalmente assim:
Traceback (most recent call last): File "uiInventory.py", line 123, in OnPressEscapeKey AttributeError: 'InventoryWindow' object has no attribute 'Close'
erro neste exemplo uiInventory.py Ocorreu na linha 123 do ficheiro. Se o tipo de erro for AtributoError Aparece como .
2.º Verificando o ficheiro Syserr do cliente
O primeiro ficheiro de controlo do lado do cliente está normalmente na pasta do cliente. syserr.txt é o ficheiro.
Client klasorunde syserr.txt dosyasini acin ve en alttaki yeni hatalari kontrol edin.
A parte mais importante do erro são, geralmente, os resultados financeiros. Porque no traceback do Python, as linhas superiores mostram a sequência de chamada e a linha inferior mostra o tipo de erro real.
3. Tipos mais comuns de erros Python
- Erro de sintaxe: Há um erro de digitação. Parêntesis, dois pontos ou aspas podem estar em falta.
- Erro de atributo: A função ou variável chamada não existe no objeto relevante.
- NomeErro: O nome utilizado não está definido.
- Erro de importação: O ficheiro ou módulo Python necessário não foi encontrado.
- Erro de tipo: O tipo errado ou o número errado de parâmetros foram enviados para a função.
- Erro-chave: Foi chamada uma chave que não está no dicionário.
Estes tipos de erros não mostram diretamente a solução, mas informam-no em que direção deve olhar.
4. Erros do pacote raiz
O pacote raiz contém a maioria dos ficheiros Python do lado do cliente. Por exemplo:
- ui.py
- jogo.py
- interfaceModule.py
- uiInventory.py
- uiCharacter.py
- uiScriptLocale.py
- constInfo.py
A edição incorreta no ficheiro raiz pode fazer com que o cliente não abra ou feche quando uma determinada janela é aberta.
Ordem geral de verificação para erros de raiz:
- Identifique o último ficheiro Python modificado.
- Encontre o ficheiro e o número da linha em syserr.txt.
- Verifique se há importação em falta ou nome de função incorreto.
- Verifique os recuos do Python.
- Certifique-se de que o ficheiro está realmente atualizado ao reempacotar o pacote raiz.
5. Erros de script da IU
As janelas da interface do cliente Metin2 frequentemente uiscript É definido por ficheiros. Estes ficheiros contêm o tamanho da janela, a localização do botão, o caminho da imagem, a área de texto e os objetos filhos.
Os erros de Uiscript podem apresentar os seguintes sintomas:
- O cliente fecha quando uma janela específica é aberta
- A janela abre, mas os botões não estão visíveis
- Sobreposição de objetos de interface
- O erro LoadScriptFile ocorre no syserr
- O erro GetChild ocorre no lado do Python
Exemplo de erro GetChild:
KeyError: 'board' AttributeError: 'NoneType' object has no attribute 'SetEvent'
Nestes erros, o ficheiro Python pode estar a chamar um objeto que não existe no uiscript.
6. Resolvendo Erros GetChild
Vamos supor que existe um código como este no lado do Python:
self.GetChild("accept_button")Neste caso, no ficheiro uiscript botão_aceitar O objeto filho nomeado deve realmente existir. Se o nome for diferente ou não existir, o cliente poderá gerar um erro.
Para a solução:
- Verifique o nome GetChild no ficheiro Python.
- Verifique o campo de nome no ficheiro uiscript.
- Tenha em atenção a diferença entre maiúsculas e minúsculas.
- Certifique-se de que o botão ou objeto de texto recentemente adicionado está no pai correto.
7. Problemas de ficheiros e pacotes em falta
Os seguintes tipos de erros podem ocorrer no cliente siserr:
No file or directory LoadScriptFile Error CANNOT_FIND_PACK_FILE Failed to load image
Neste caso, o ficheiro relevante pode não ter sido adicionado ao pacote, pode ter sido colocado na pasta errada ou o caminho pode ter sido escrito incorretamente.
Em particular, devem ser verificados os seguintes tipos de ficheiro:
- .py Ficheiros Python
- Ficheiros Python compilados .pyc
- Ficheiros .py uiscript
- Ficheiros de imagem .tga, .dds, .sub
- ficheiros de interface local
8. Problemas de codificação e caracteres turcos
Em algumas infraestruturas de clientes antigas, a utilização de codificação incorreta em ficheiros Python ou ficheiros de localidade pode causar erros de cliente. Especialmente se os caracteres turcos forem gravados incorretamente, o texto poderá parecer distorcido ou o ficheiro poderá não ser legível.
Coisas a considerar:
- Mantenha a estrutura de codificação existente do ficheiro.
- Não quebre o conjunto de caracteres ao guardar ficheiros entre editores diferentes.
- Tenha em atenção a utilização de ş, ç, ğ, ü, ö, ı em ficheiros que não suportam caracteres turcos.
- O UTF-8 nem sempre funciona perfeitamente em infraestruturas mais antigas.
Erros Comuns
- Alterar ficheiros raiz aleatoriamente sem ler o syserr.txt
- Quebrando recuos do Python
- Chamar um objeto que não está em Uiscript com GetChild em Python
- Pensar que o pacote foi atualizado e testar com o cliente antigo
- Não adicionar ficheiros de imagem em falta ao cliente
- Evitar que o ficheiro seja lido corrompendo a estrutura de codificação
Perguntas frequentes
O cliente abre mas fecha quando o stock é aberto, porquê?
Pode haver um erro no ficheiro Python ou uiscript relacionado com o inventário. uiInventory.py e o ficheiro uiscript relacionado devem ser verificados através do cliente syserr.
Qual é a linha mais importante no erro de traceback?
Normalmente, a linha de erro na parte inferior mostra o problema real. As linhas superiores descrevem a cadeia de chamadas.
O jogo não arranca após a alteração do root pack, o que devo fazer?
Compare o último ficheiro Python modificado com o seu backup antigo, verifique o syserr.txt e certifique-se de que o pacote foi realmente atualizado.
Recomendações de segurança e operações
- Certifique-se de que faz um backup antes de editar o pacote raiz.
- Após cada alteração, limpe o ficheiro syserr do cliente e teste novamente.
- Faça testes em pequenos lotes em vez de alterações de raiz em massa.
- Teste num cliente limpo antes de corrigir jogadores.
- Não altere a codificação e o formato de finalização de linha inconscientemente.
Este artigo foi preparado especialmente para o PvPServer.