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


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

(09/08/2023 18:29)Walkerxinho7 Escreveu:
(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.

Fico feliz por ter ajudado.


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

(09/08/2023 18:26)White_Blue Escreveu: 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.


Pelo que eu entendi, ele roda o looping pela quantidade MAX_TEXTDRAWS que deve ser a quantidade de textdraws na tela. Depois disso o looping pega essas textdraws pelo id(0,1,2,3...), e depois oculta. Se elas forem as primeiras a serem criadas, talvez até funcione... mas o ideal era fazer dessa forma aí mesmo.