Portal SAMP
[Ajuda] Problemas com plugin textdraw streamer - 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] Problemas com plugin textdraw streamer (/showthread.php?tid=4965)



Problemas com plugin textdraw streamer - Notknown - 29/01/2025

Bom eu tava com um problema na minha Gm que quando aparecia muitos textdraw de uma vez algum texto acabava sumindo, mas quando 1 deles e removido da tela o que sumiu voltava, talvez fosse o limite de textdraw na tela, então fui utilizar a include text draw streamer e resolveu, mas no console fica aparecendo isso

DestroyDynamicTextDraw: No such id was found. (textId: 0) (C:\Users\Pichau\Desktop\STL 0.0.2B\gamemodes\STL.pwn:8670)

e com tempo o samp server fecha

onde ta ali pwn:8670 da nesse codigo, o problema é no textHP
Código:
    for(new i; i<GetMaxPlayers(); i++)
    {
        if(!IsPlayerConnected(i))
        {
            TextDrawDestroy(textHP[i]);
            TextDrawDestroy(textAP[i]);
        }
    }



RE: Problemas com plugin textdraw streamer - BitSain - 29/01/2025

"Cara, se a textdraw já foi destruída, para que destruir de novo", entende? Por isso dá: Não foi encontrado tal id; por que ele não existe, já foi destruído (ou não foi criado).

Você pode usar uma nova variável para checar se já foi destruído, ou usando o macro INVALID_TEXT_DRAW em sua variável para verificar se o id da textdraw é inválido:

Código:
if(textHP[i] != INVALID_TEXT_DRAW) {
    TextDrawDestroy(textHP[i]);
    textHP[i] = INVALID_TEXT_DRAW;
}

--
E outra, para que usar um loop que itera sobre todos os ids de players disponíveis (definição padrão: 1000) se a textdraw é global? Se for player, use:
Código:
if(textHP[i] != INVALID_TEXT_DRAW) {
    PlayerTextDrawDestroy(playerid, textHP[i]);
    textHP[i] = INVALID_TEXT_DRAW;
}

Mas também, não há essa necessidade de iterar sobre tudo durante algum tempo.
É só destruir na onplayerdisconnect, sem necessidade de loop em todos os ids.


RE: Problemas com plugin textdraw streamer - Notknown - 29/01/2025

(29/01/2025 15:53)BitSain Escreveu: "Cara, se a textdraw já foi destruída, para que destruir de novo", entende? Por isso dá: Não foi encontrado tal id; por que ele não existe, já foi destruído (ou não foi criado).

Você pode usar uma nova variável para checar se já foi destruído, ou usando o macro INVALID_TEXT_DRAW em sua variável para verificar se o id da textdraw é inválido:

Código:
if(textHP[i] != INVALID_TEXT_DRAW) {
    TextDrawDestroy(textHP[i]);
    textHP[i] = INVALID_TEXT_DRAW;
}

--
E outra, para que usar um loop que itera sobre todos os ids de players disponíveis (definição padrão: 1000) se a textdraw é global? Se for player, use:
Código:
if(textHP[i] != INVALID_TEXT_DRAW) {
    PlayerTextDrawDestroy(playerid, textHP[i]);
    textHP[i] = INVALID_TEXT_DRAW;
}

Mas também, não há essa necessidade de iterar sobre tudo durante algum tempo.
É só destruir na onplayerdisconnect, sem necessidade de loop em todos os ids.

faz sentido, obrigado resolveu aqui