SSGamers - 12 Anos online por você.

#SSGamers - A Comunidade que mais crescer no brasil!

Participe do fórum, é rápido e fácil

SSGamers - 12 Anos online por você.

#SSGamers - A Comunidade que mais crescer no brasil!

SSGamers - 12 Anos online por você.

Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.
Chegou o novo tema 6.5.5 - SSGamers - Servidores online de qualidade - Aproveite e entre para nossa comunidade, inscreva-se já! - Ouça nossa web radio - Veja nossas novidades - Participe dos nossos setores de jogos online - Parcerias aberta fale já com um administrador.

    [Tutorial] Erros e avisos do YSI

    Weslley_Script
    Weslley_Script
    SS - Fundador
    SS - Fundador


    Steam Steam : WeslleySSGames
    Zello : WeslleySSGames
    Mensagens : 11378
    Moedas : 1031977
    Data de inscrição : 06/10/2011
    Idade : 28
    Localização : Brasil

    pragma - [Tutorial] Erros e avisos do YSI Empty [Tutorial] Erros e avisos do YSI

    Mensagem por Weslley_Script Qui 30 Mar 2023 - 8:30

    Introdução

    O YSI usa MUITAS macros para tornar as coisas mais fáceis de escrever. A desvantagem disso é que pode tornar os erros e avisos muito difíceis de interpretar, pois eles se referirão ao código após a substituição da macro. Este guia deve ajudá-lo a traduzir os erros fornecidos para os erros reais.

    Acrescentarei mais à medida que me tornar consciente deles.

    Erros e avisos

    1)
    • Código


    peão Код:

    Código:
    // Alternativo:
    //CMD:kickplayer(playerid, params[])
    YCMD : kickplayer ( playerid, params [ ] , help )  // Linha de aviso.
    {
        // Algum código aqui.
    }


    • Problema


    Код:

    Código:
    <path>\errors.pwn(11): aviso 203: o símbolo nunca é usado: "kickplayer"
    Compilador Pawn 3.2.3664 Copyright © 1997-2006, ITB CompuPhase




    1 Aviso.

    • Solução


    Você não incluiu "YSI\y_commands". Os comandos nunca são chamados explicitamente em nenhum lugar do código, então o compilador precisa ser informado de que eles serão chamados eventualmente.
    peão Код:

    Código:
    #include <YSI\y_commands>


    2)
    • Código


    peão Код:

    Código:
    timer X ( )  // Linha de erro.
    {
    }


    • Problema


    Код:

    Código:
    <caminho>\errors.pwn(3): erro 010: função ou declaração inválida
    Compilador Pawn 3.2.3664 Copyright © 1997-2006, ITB CompuPhase




    1 Erro.

    • Solução


    Nesse caso, a mensagem de erro é bastante descritiva. É uma declaração inválida - não há atraso especificado para o cronômetro.
    peão Код:

    Código:
    temporizador X [ 100 ] ( )
    {
    }


    3)
    • Código


    peão Код:

    Código:
    X [ 100 ] ( )  // Linha de erro.
    {
    }


    • Problema


    Код:

    Código:
    <caminho>\errors.pwn(3): erro 010: função ou declaração inválida
    Compilador Pawn 3.2.3664 Copyright © 1997-2006, ITB CompuPhase




    1 Erro.

    • Solução


    Problema muito semelhante ao anterior, só que desta vez faltando a palavra-chave "timer" em vez do tempo.
    peão Код:

    Código:
    temporizador X [ 100 ] ( )
    {
    }


    4)
    • Código


    peão Код:

    Código:
    timer X [ 100 ] ( arr [ ] )  // Linha de erro.
    {
    }


    • Problema


    Код:

    Código:
    <caminho>\errors.pwn(3): erro 010: função ou declaração inválida
    Compilador Pawn 3.2.3664 Copyright © 1997-2006, ITB CompuPhase




    1 Erro.

    • Solução


    Você tem a sintaxe correta com "timer" e o tempo, mas AINDA obtém uma declaração inválida. Este é realmente outro erro útil dizendo a verdade. Todos os arrays nas funções "timer", "global" e "remotefunc" DEVEM ser seguidos por seu comprimento. As strings NÃO precisam de seu comprimento, mas DEVEM ser declaradas como "string:", caso contrário, o compilador não poderá diferenciá-las.
    peão Код:

    Código:
    [size=14][size=13]timer X [ 100 ] ( arr [ ] , tamanho )
    {
    }[/size][/size]


    [size=14]peão Код:
    [size=13]timer X [ 100 ] ( string : arr [ ] )
    {
    }[/size][/size]


    5)
    • Código


    peão Код:

    Código:
    main ( )
    {
        new
            Iterator : x < 100 > ; // Linha de alerta.
        foreach ( novo  i  : x )
        {
        }
    }


    • Problema


    Код:

    Código:
    <path>\errors.pwn(6): aviso 203: o símbolo nunca é usado: "x@YSII_Cg"
    Compilador Pawn 3.2.3664 Copyright © 1997-2006, ITB CompuPhase




    1 Aviso.

    • Solução


    Esta é uma das mensagens de advertência um pouco mais esotéricas. Os iteradores compilam para DUAS variáveis ​​- uma matriz de dados e um tamanho. A matriz de dados é chamada de "@YSII_Ag" e a variável de tamanho é chamada de "@YSII_Cg". Se você receber um aviso de que a variável de tamanho nunca é usada, isso significa que o tamanho nunca é modificado, o que significa que nada é adicionado ou removido do iterador. Se for esse o caso, seu iterador estará sempre vazio e, portanto, sem sentido. Se você receber uma mensagem dizendo que "@YSII_Ag" (o array de dados) também nunca é usado, o iterador nunca é usado, mesmo em um loop "foreach".
    peão Код:

    Código:
    main ( )
    {
        new
            Iterator : x < 100 > ;
        Iter_Add ( x, 10 ) ;
        foreach ( novo  i  : x )
        {
        }
    }


    6)
    • Código


    peão Код:

    Código:
    main ( )
    {
        new
            Iterator : x < 100 > ;
        Iter_Add ( x, 10 ) ;
        foreach ( i  : x )  // Linha de erro.
        {
        }
    }


    • Problema


    Код:

    Código:
    <caminho>\errors.pwn(7): erro 017: símbolo indefinido "i"
    <path>\errors.pwn(7): aviso 206: teste redundante: expressão constante é diferente de zero
    <caminho>\errors.pwn(7): erro 017: símbolo indefinido "i"
    <path>\errors.pwn(7) : warning 221: nome do rótulo "_Y_ITER_C0" nome do marcador de sombras
    <path>\errors.pwn(7): aviso 225: código inacessível
    <caminho>\errors.pwn(7): erro 017: símbolo indefinido "i"
    <caminho>\errors.pwn(7): erro fatal 107: muitas mensagens de erro em uma linha



    Compilação abortada. Compilador Pawn 3.2.3664 Copyright © 1997-2006, ITB CompuPhase


    4 Erros.

    • Solução


    Aqui apenas o primeiro erro é importante, todos os outros são causados ​​pelo primeiro. Eles podem ser confusos, pois expõem alguns dos internos de "y_iterate", mas apenas os ignore e corrija o primeiro erro (o mesmo de sempre).
    peão Код:

    Código:
    main ( )
    {
        new
            Iterator : x < 100 > ;
        Iter_Add ( x, 10 ) ;
        foreach ( novo  i  : x )
        {
        }
    }


    7)
    • Problema


    O compilador trava.
    • Solução


    Existem várias causas para isso, geralmente uma macro se expandindo para muito código. Se você tiver uma declaração "foreign", "global", "remotefunc" ou "timer" muito grande, como:
    peão Код:

    Código:
    timer MyTimer [ 1000 ] ( playerid, string : str [ ] , arr [ ] , tamanho, string : other [ ] , string : final [ ] )
    {
    }


    O código acima IRÁ travar o compilador. Por si só, não é uma linha longa - muito curta em relação ao máximo de 511 caracteres, mas, como afirmado anteriormente, o YSI usa muitas macros e isso se expande para uma longa linha de código (eficiente, mas longa). O problema são os estágios intermediários - o código é expandido para um código muito longo e depois reduzido para um código ligeiramente mais longo. Tente encurtar a linha.
    peão Код:

    Código:
    timer MyTimer [ 1000 ] ( p, string : s [ ] ,a [ ] ,c, string : o [ ] , string : f [ ] )
    {
    }


    Isso vai compilar bem. Se o compilador ainda travar (e você confirmou qual função é o problema comentando todas as outras), talvez seja necessário recorrer ao uso de métodos alternativos, como cronômetros básicos de "encaminhamento"/"público". O código gerado por "estrangeiro" e "global" é tão longo que teve que ser dividido em duas partes - daí porque as duas palavras-chave foram feitas para espelhar "encaminhar" e "público".

    Cool
    • Código


    peão Код:

    Código:
    main ( )
    {
         inline Func ( arr [ ] )  // Linha de erro.
        {
        }
    }


    • Problema


    Код:

    Código:
    <path>\errors.pwn(7): erro 009: tamanho de array inválido (negativo, zero ou fora dos limites)
    <caminho>\errors.pwn(7) : erro 001: token esperado: ")", mas encontrado ";"
    <caminho>\errors.pwn(7): erro 036: declaração vazia
    <caminho>\errors.pwn(7): erro fatal 107: muitas mensagens de erro em uma linha



    Compilação abortada. Compilador Pawn 3.2.3664 Copyright © 1997-2006, ITB CompuPhase


    4 Erros.

    • Solução


    Este é realmente um problema semelhante ao número 4, mas com sintomas diferentes. Infelizmente, as funções inline não podem ter arrays, mesmo quando seguidas por seu tamanho. Se você tentar incluir o tamanho, receberá um adicional:
    Код:

    Código:
    <path>\errors.pwn(7): aviso 215: a expressão não tem efeito


    Você pode, no entanto, ainda ter strings prefixadas com "string:".

    Código:
    peão Код:
    main ( )
    {
         função inline ( string : arr [ ] )
        {
        }
    }


    9)
    • Código


    peão Код:

    Código:
    uvar
        gFirst [ MAX_PLAYERS ] [ 10 ] , // Linha de erro.
        gSegundo [ MAX_PLAYERS ] [ 10 ] ;


    • Problema


    Код:
    \errors.pwn(9): erro 010: função ou declaração inválida
    Compilador Pawn 3.2.3664 Copyright © 1997-2006, ITB CompuPhase


    1 Erro.

    • Solução


    As variáveis ​​declaradas com "novo" ou "estoque", etc., geralmente seguem o novo padrão de linha acima. Por motivos técnicos, isso não pode ser feito com as variáveis ​​"uvar" e "svar". Cada um deve estar na mesma linha que uma declaração "uvar" ou "svar".
    peão Код:

    Código:
    uvar gFirst [ MAX_PLAYERS ] [ 10 ] ;
    uvar gSecond [ MAX_PLAYERS ] [ 10 ] ;


    10)
    • Código


    peão Код:

    Código:
    public DoRead ( nome [ ] , valor [ ] )
    {
         INI_String ( "chave" , gValue ) ; // Linha de erro.
    }


    • Problema


    Код:

    Código:
    <path>\errors.pwn(12): erro 017: símbolo indefinido "INI_String"
    Compilador Pawn 3.2.3664 Copyright © 1997-2006, ITB CompuPhase




    1 Erro.

    • Solução


    "INI_String" EXISTE, apenas dá um erro incomum quando o último parâmetro é perdido. Você deve chamá-lo com o comprimento de destino.
    peão Код:

    Código:
    public DoRead ( nome [ ] , valor [ ] )
    {
         INI_String ( "chave" , gValue, sizeof  ( gValue ) ) ;
    }


    11)
    • Código


    peão Код:

    Código:
    #include <YSI\y_commands>


    • Problema


    Код:

    Código:
    <include>\YSI\y_debug.inc(367): erro 036: declaração vazia
    <include>\YSI\y_debug.inc(367): erro 036: declaração vazia
    <include>\YSI\y_amx.inc(367): erro 036: declaração vazia
    <include>\YSI\y_amx.inc(367): erro 036: declaração vazia
    <include>\YSI\y_amx.inc(411): erro 036: declaração vazia
    <include>\YSI\y_amx.inc(411): erro 036: declaração vazia
    <include>\YSI\y_amx.inc(646): erro 036: declaração vazia
    <include>\YSI\y_amx.inc(646): erro 036: declaração vazia
    <include>\YSI\y_amx.inc(780): erro 036: declaração vazia
    <include>\YSI\y_amx.inc(780): erro 036: declaração vazia
    <include>\YSI\y_amx.inc(938): erro 036: declaração vazia
    <include>\YSI\y_amx.inc(938): erro 036: declaração vazia
    <include>\YSI\y_amx.inc(958): erro 036: declaração vazia
    <include>\YSI\y_amx.inc(958): erro 036: declaração vazia
    <include>\YSI\internal\y_shortfunc.inc(144): erro 036: declaração vazia
    <include>\YSI\internal\y_shortfunc.inc(144): erro 036: declaração vazia
    <include>\YSI\internal\y_shortfunc.inc(150): erro 036: declaração vazia
    <include>\YSI\internal\y_shortfunc.inc(150): erro 036: declaração vazia
    <include>\YSI\internal\y_shortfunc.inc(159): erro 036: declaração vazia
    <include>\YSI\internal\y_shortfunc.inc(159): erro 036: declaração vazia
    <include>\YSI\internal\y_shortfunc.inc(174): erro 036: declaração vazia
    <include>\YSI\internal\y_shortfunc.inc(174): erro 036: declaração vazia
    <include>\YSI\internal\y_shortfunc.inc(183): erro 036: declaração vazia
    <include>\YSI\internal\y_shortfunc.inc(183): erro 036: declaração vazia
    <include>\YSI\internal\y_dohooks.inc(125): erro 036: declaração vazia
    <include>\YSI\internal\y_dohooks.inc(125): erro 036: declaração vazia



    Compilação abortada. Compilador Pawn 3.2.3664 Copyright © 1997-2006, ITB CompuPhase


    26 Erros.

    • Solução


    Quando você recebe centenas de erros como esse dentro do YSI, isso tende a ser causado pelo uso de um editor não padrão (ou seja, não PAWNO). Não há nada de errado com outros editores, alguns são apenas configurados com diferentes parâmetros de linha de comando padrão para PAWNCC (o compilador). Você precisa certificar-se de passar por esses dois interruptores importantes:
    Код:

    Código:
    [size=14][size=13]-;+ -(+[/size][/size]

    12)
    • Código


    peão Код:

    Código:
    timer X [ 100 ] ( )  // Linha de erro.
    {
    }


    • Problema


    Код:

    Código:
    <path>\errors.pwn(3): aviso 218: protótipos de estilo antigo usados ​​com ponto e vírgula opcional
    Compilador Pawn 3.2.3664 Copyright © 1997-2006, ITB CompuPhase



    1 Aviso.

    • Solução


    Isso parece ser causado pelo uso do RolePlay de Raven, que por algum motivo inexplicável decidiu ignorar a formatação SA:MP padrão e remover o ponto e vírgula. Para corrigir isso, primeiro você precisa remover esta linha:

    [peão]#pragma ponto e vírgula 0

    Em seguida, corrija todos os outros erros que surgem porque estão faltando muitos pontos e vírgulas. Culpe eles, não eu - isso é o que acontece quando você ignora os padrões de toda a comunidade!

    13)
    • Código


    peão Код:

    Código:
    gancho OnGameModeInit ( )  // Linha de erro.
    {
    }


    • Problema


    Код:

    Código:
    <path>\errors.pwn(3) : erro 021: símbolo já definido: "@yH_GameModeInit2"
    <path>\errors.pwn(3) : erro 021: símbolo já definido: "@yH_GameModeInit2"


    Compilador Pawn 3.2.3664 Copyright © 1997-2006, ITB CompuPhase


    1 Aviso.

    • Solução


    Isso se aplica a qualquer retorno de chamada conectado e número no final, por exemplo "@yH_PlayerDisconnect42". O problema é causado pela inclusão de y_hooks antes de outras inclusões, pois eles também podem usar y_hooks:
    peão Код:

    Código:
    #include <YSI\y_hooks>
    #include <other>




    Código:
    hook OnGameModeInit ( )  // Linha de erro.
    {
    }


    Deveria estar:
    peão Код:

    Código:
    #include <other>
    #include <YSI\y_hooks>



    Código:
     gancho OnGameModeInit ( )  // Linha de erro.
    {
    }


    14)
    • Código


    peão Код:

    Código:
    #include "internal\y_version" // Linha de erro.


    • Problema


    Код:

    Código:
    pawno\include\YSI/y_ini.inc(161): erro fatal 100: não é possível ler do arquivo: "internal\y_version"
    Compilador Pawn 3.2.3664 Copyright © 1997-2006, ITB CompuPhase




    1 Erro.

    • Solução


    O verdadeiro problema está aqui:
    Код:

    Código:
    \YSI/y_ini.inc


    Em algum lugar do seu código, ou em uma das inclusões do seu código, um arquivo foi incluído incorretamente. TODOS os arquivos YSI DEVEM ser incluídos usando uma barra invertida, NÃO uma barra normal. Mudar:
    peão Код:

    Código:
    #include <YSI/y_ini>


    Para:
    peão Код:

    Código:
    #include <YSI\y_ini>


    Repita para todas as outras inclusões feitas incorretamente (ou seja, usando "YSI/" e não "YSI\").


    Creditos:Misiur



    pragma - [Tutorial] Erros e avisos do YSI D07Xwqb
    pragma - [Tutorial] Erros e avisos do YSI Yjab9HN

      Data/hora atual: Qua 8 maio 2024 - 2:12