Warning 213: tag mismatch no LOOP - Calasans - 09/08/2023
Código PHP: for(new text; text < MAX_TEXT_DRAWS; text ++) TextDrawHideForPlayer(playerid, Text: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:text; Text:text < MAX_TEXT_DRAWS; Text:text ++) TextDrawHideForPlayer(playerid, Text: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:text; Text:text < MAX_TEXT_DRAWS; Text:text ++) TextDrawHideForPlayer(playerid, Text: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:text; Text:text < MAX_TEXT_DRAWS; Text:text ++) TextDrawHideForPlayer(playerid, Text: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.0, 580.0, "Bem-vindo ao meu servidor SA-MP!"); return 1; }
public OnPlayerConnect(playerid) { TextDrawShowForPlayer(playerid, text); return 1; }
CMD:escondertextdraw(playerid) { TextDrawHideForPlayer(playerid, text); 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:text; Text:text < MAX_TEXT_DRAWS; Text:text ++) TextDrawHideForPlayer(playerid, Text: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.0, 580.0, "Bem-vindo ao meu servidor SA-MP!"); return 1; }
public OnPlayerConnect(playerid) { TextDrawShowForPlayer(playerid, text); return 1; }
CMD:escondertextdraw(playerid) { TextDrawHideForPlayer(playerid, text); 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:text; Text:text < MAX_TEXT_DRAWS; Text:text ++) TextDrawHideForPlayer(playerid, Text: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.0, 580.0, "Bem-vindo ao meu servidor SA-MP!"); return 1; }
public OnPlayerConnect(playerid) { TextDrawShowForPlayer(playerid, text); return 1; }
CMD:escondertextdraw(playerid) { TextDrawHideForPlayer(playerid, text); 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 i = 0; i < sizeof(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(playerid, text[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:text; Text:text < MAX_TEXT_DRAWS; Text:text ++) TextDrawHideForPlayer(playerid, Text: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.0, 580.0, "Bem-vindo ao meu servidor SA-MP!"); return 1; }
public OnPlayerConnect(playerid) { TextDrawShowForPlayer(playerid, text); return 1; }
CMD:escondertextdraw(playerid) { TextDrawHideForPlayer(playerid, text); 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 i = 0; i < sizeof(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(playerid, text[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.
|