Portal SAMP
[Ajuda] Warning 213: tag mismatch no LOOP - Versão de Impressão

+- Portal SAMP (https://portalsamp.com)
+-- Fórum: SA-MP (https://portalsamp.com/forumdisplay.php?fid=5)
+--- Fórum: Área de suporte (https://portalsamp.com/forumdisplay.php?fid=6)
+--- Tópico: [Ajuda] Warning 213: tag mismatch no LOOP (/showthread.php?tid=3884)

Páginas: 1 2


Warning 213: tag mismatch no LOOP - Calasans - 09/08/2023

Código PHP:
for(new texttext MAX_TEXT_DRAWStext ++)
        TextDrawHideForPlayer(playeridText:text); 
 
O warning está no loop, começou depois que atualizei as includes padrão do samp, exemplo > a_samp.


RE: Warning 213: tag mismatch no LOOP - White_Blue - 09/08/2023

Primeira coisa: Nunca, nunca altere as funções das includes padrões do SA-MP, as natives são registros de funções definidos no header do código fonte do SA-MP, nunca altere a sintaxe ou o nome das funções pois você terá problemas. A tag Text: apenas é usada para definir variáveis que são textdraws.


RE: Warning 213: tag mismatch no LOOP - xbruno1000x - 09/08/2023

Você usou Text:text no looping

Text é uma scripting tag do SA-MP que é pra sinalizar que é uma variável de textdraw. É a mesma coisa que a Float: ou bool:, e só deve ser sinalizado quando você der new variavel;.

Tente assim:
Código:
for(new text; text < MAX_TEXT_DRAWS; text ++)
        TextDrawHideForPlayer(playerid, text);



RE: Warning 213: tag mismatch no LOOP - Calasans - 09/08/2023

(09/08/2023 14:54)White_Blue Escreveu: Primeira coisa: Nunca, nunca altere as funções das includes padrões do SA-MP, as natives são registros de funções definidos no header do código fonte do SA-MP, nunca altere a sintaxe ou o nome das funções pois você terá problemas. A tag Text: apenas é usada para definir variáveis que são textdraws.
Peguei daqui https://github.com/pawn-lang/samp-stdlib


RE: Warning 213: tag mismatch no LOOP - MarcosBrazz - 09/08/2023

Código PHP:
for(new Text:textText:text MAX_TEXT_DRAWSText:text ++)
        
TextDrawHideForPlayer(playeridText:text); 
O segundo parametro de TextDrawHideForPlayer pede uma variavel com a tag Text:, logo a variavel usada (do loop) tem que conter Text:


RE: Warning 213: tag mismatch no LOOP - Calasans - 09/08/2023

(09/08/2023 15:05)xbruno1000x Escreveu: Você usou Text:text no looping

Text é uma scripting tag do SA-MP que é pra sinalizar que é uma variável de textdraw. É a mesma coisa que a Float: ou bool:, e só deve ser sinalizado quando você der new variavel;.

Tente assim:
Código:
for(new text; text < MAX_TEXT_DRAWS; text ++)
        TextDrawHideForPlayer(playerid, text);
Tentei também Bruno, da outro tag mismatch.

(09/08/2023 17:44)MarcosBrazz Escreveu:
Código PHP:
for(new Text:textText:text MAX_TEXT_DRAWSText:text ++)
        TextDrawHideForPlayer(playeridText:text); 
O segundo parametro de TextDrawHideForPlayer pede uma variavel com a tag Text:, logo a variavel usada (do loop) tem que conter Text:

Resolvido, valeu Marcos.


RE: Warning 213: tag mismatch no LOOP - White_Blue - 09/08/2023

(09/08/2023 17:44)MarcosBrazz Escreveu:
Código PHP:
for(new Text:textText:text MAX_TEXT_DRAWSText:text ++)
        TextDrawHideForPlayer(playeridText:text); 
O segundo parametro de TextDrawHideForPlayer pede uma variavel com a tag Text:, logo a variavel usada (do loop) tem que conter Text:

Não havia percebido que ele estava usando o loop para definir a variável, mas não entendo o por quê.

Qual o motivo para isso? Por que apenas não declarar uma variável global? O loop 'for' é um laço de repetição, não uma palavra-chave para definir variáveis.

Exemplo:
Código PHP:
new Text:text// Supondo que seja apenas uma textdraw, afinal, a variável do loop não é uma array. Portanto, sequer precisa usar um loop para manipular a textdraw

public OnGameModeInit() {
         
text TextDrawCreate(240.0580.0"Bem-vindo ao meu servidor SA-MP!");
         return 
1;
}

public 
OnPlayerConnect(playerid) {
       
TextDrawShowForPlayer(playeridtext);
       return 
1;
}

CMD:escondertextdraw(playerid) {
    
TextDrawHideForPlayer(playeridtext);
    return 
1;


O código acima não necessita de um loop, assim poupando processamento, pois no contexto do código que você forneceu, não faz o menor sentido usar um loop.


RE: Warning 213: tag mismatch no LOOP - Calasans - 09/08/2023

(09/08/2023 17:56)White_Blue Escreveu:
(09/08/2023 17:44)MarcosBrazz Escreveu:
Código PHP:
for(new Text:textText:text MAX_TEXT_DRAWSText:text ++)
        TextDrawHideForPlayer(playeridText:text); 
O segundo parametro de TextDrawHideForPlayer pede uma variavel com a tag Text:, logo a variavel usada (do loop) tem que conter Text:

Não havia percebido que ele estava usando o loop para definir a variável, mas não entendo o por quê.

Qual o motivo para isso? Por que apenas não declarar uma variável global? O loop 'for' é um laço de repetição, não uma palavra-chave para definir variáveis.

Exemplo:
Código PHP:
new Text:text// Supondo que seja apenas uma textdraw, afinal, a variável do loop não é uma array. Portanto, sequer precisa usar um loop para manipular a textdraw

public OnGameModeInit() {
         text TextDrawCreate(240.0580.0"Bem-vindo ao meu servidor SA-MP!");
         return 1;
}

public 
OnPlayerConnect(playerid) {
       TextDrawShowForPlayer(playeridtext);
       return 1;
}

CMD:escondertextdraw(playerid) {
    TextDrawHideForPlayer(playeridtext);
    return 1;


O código acima não necessita de um loop, assim poupando processamento, pois no contexto do código que você forneceu, não faz o menor sentido usar um loop.

Esse loop remove todas as textdraws que for "Text" da tela do player.


RE: Warning 213: tag mismatch no LOOP - White_Blue - 09/08/2023

(09/08/2023 18:03)Walkerxinho7 Escreveu:
(09/08/2023 17:56)White_Blue Escreveu:
(09/08/2023 17:44)MarcosBrazz Escreveu:
Código PHP:
for(new Text:textText:text MAX_TEXT_DRAWSText:text ++)
        TextDrawHideForPlayer(playeridText:text); 
O segundo parametro de TextDrawHideForPlayer pede uma variavel com a tag Text:, logo a variavel usada (do loop) tem que conter Text:

Não havia percebido que ele estava usando o loop para definir a variável, mas não entendo o por quê.

Qual o motivo para isso? Por que apenas não declarar uma variável global? O loop 'for' é um laço de repetição, não uma palavra-chave para definir variáveis.

Exemplo:
Código PHP:
new Text:text// Supondo que seja apenas uma textdraw, afinal, a variável do loop não é uma array. Portanto, sequer precisa usar um loop para manipular a textdraw

public OnGameModeInit() {
         text TextDrawCreate(240.0580.0"Bem-vindo ao meu servidor SA-MP!");
         return 1;
}

public 
OnPlayerConnect(playerid) {
       TextDrawShowForPlayer(playeridtext);
       return 1;
}

CMD:escondertextdraw(playerid) {
    TextDrawHideForPlayer(playeridtext);
    return 1;


O código acima não necessita de um loop, assim poupando processamento, pois no contexto do código que você forneceu, não faz o menor sentido usar um loop.

Esse loop remove todas as textdraws que for "Text" da tela do player.

Se a ideia é esconder todas as textdraws contidas em uma array, você está incorreto do mesmo jeito. Você está definindo uma variável local chamada text, se já existe uma variável global com esse nome você receberia um erro.

Se você deseja remover todas as textdraws associadas à variável o correto seria:
Código PHP:
for(new 0sizeof(text); i++) /* O breakpoint assume o valor da variável text, assim criando um número de repetições de acordo com o valor de itens da array. */ {

     
TextDrawHideForPlayer(playeridtext[i]); // Supondo que text seja uma array com diversos itens, caso contrário, não há a menor necessidade de usar um loop se for só uma textdraw.




RE: Warning 213: tag mismatch no LOOP - Calasans - 09/08/2023

(09/08/2023 18:26)White_Blue Escreveu:
(09/08/2023 18:03)Walkerxinho7 Escreveu:
(09/08/2023 17:56)White_Blue Escreveu:
(09/08/2023 17:44)MarcosBrazz Escreveu:
Código PHP:
for(new Text:textText:text MAX_TEXT_DRAWSText:text ++)
        TextDrawHideForPlayer(playeridText:text); 
O segundo parametro de TextDrawHideForPlayer pede uma variavel com a tag Text:, logo a variavel usada (do loop) tem que conter Text:

Não havia percebido que ele estava usando o loop para definir a variável, mas não entendo o por quê.

Qual o motivo para isso? Por que apenas não declarar uma variável global? O loop 'for' é um laço de repetição, não uma palavra-chave para definir variáveis.

Exemplo:
Código PHP:
new Text:text// Supondo que seja apenas uma textdraw, afinal, a variável do loop não é uma array. Portanto, sequer precisa usar um loop para manipular a textdraw

public OnGameModeInit() {
         text TextDrawCreate(240.0580.0"Bem-vindo ao meu servidor SA-MP!");
         return 1;
}

public 
OnPlayerConnect(playerid) {
       TextDrawShowForPlayer(playeridtext);
       return 1;
}

CMD:escondertextdraw(playerid) {
    TextDrawHideForPlayer(playeridtext);
    return 1;


O código acima não necessita de um loop, assim poupando processamento, pois no contexto do código que você forneceu, não faz o menor sentido usar um loop.

Esse loop remove todas as textdraws que for "Text" da tela do player.

Se a ideia é esconder todas as textdraws contidas em uma array, você está incorreto do mesmo jeito. Você está definindo uma variável local chamada text, se já existe uma variável global com esse nome você receberia um erro.

Se você deseja remover todas as textdraws associadas à variável o correto seria:
Código PHP:
for(new 0sizeof(text); i++) /* O breakpoint assume o valor da variável text, assim criando um número de repetições de acordo com o valor de itens da array. */ {

     TextDrawHideForPlayer(playeridtext[i]); // Supondo que text seja uma array com diversas células, caso contrário, não há a menor necessidade de usar um loop se for só uma textdraw.

Certo, irei corrigir, valeu White.