Player Textdraw

Započeo Shaw Salcedo, Maj 30, 2024, 20:30:41 POSLE PODNE

prethodna tema - sledeća tema

0 članova i 1 gost pregledaju ovu temu.

Pitanje/savjet: Imam jedan sistem, e sad igracu treba da prikaze preko 150 textdrawova, ali ne prikaze mu sve uopste, fazon 50 mozda, proverio sam i na sa-mp pise da je max player textdrawova 256, sve u svemu sta sam probao.
Da destroyam ove druge textdrawove, ali opet isto, takodje sam obrisao sve textdrawove i ostavio samo te i isto se desava, zna li neko resenje

https://prnt.sc/aKQTsPaY3LWw
Opširnije: Vaš odgovor
Dodatno: Vaš odgovor
GAD SAM JA

Limit 256 tdova koji su kreirani po igracu. Trebalo bi da ti radi, verovatno imas negde jos player td-ova koji ti se kreiraju negde unutar skripte, verovatno pri connect-u.

Najbolje da uzmes i proveravas svaki player td koji imas u skripti za pocetak. Zatim da koristis metodu unistavanja i kreiranja pri prikazivanju.

U prevodu, pri prikazivanju tdova ih kreiras, kada hoces da ih sakrijes unistih ih. Onda neces imati problema sa limitom.

Jeste to je u pitanju imam pun k modula, i krenuo sam polako jedan po jedan modul da "brisem" tj kreiram nakon koriscenja odredjene komande
GAD SAM JA

Umjesto da koristis player-textdrawove, kod bi mogao koristiti globalne textdrawove. Globalni textdrawovi se ne racunaju u ogranicenje od 256 player-textdrawova po igracu, ali imaju svoja ogranicenja i mogu utjecati na performanse ako se koriste u velikom broju.

#include <a_samp>

#define MAX_GLOBAL_TEXTDRAWS 222

new Text:GlobalniTextDraw[MAX_GLOBAL_TEXTDRAWS];

public OnGameModeInit()
{

    // Stvaranje globalnih textdrawova
    for (new i = 0; i < MAX_GLOBAL_TEXTDRAWS; i++)
    {
        GlobalniTextDraw[i] = TextDrawCreate(..., "...");
        TextDrawShowForAll(GlobalniTextDraw[i]);
    }
}

public OnPlayerConnect(playerid)
{
    // Prikazivanje globalnih textdrawova novom igracu
    for (new i = 0; i < MAX_GLOBAL_TEXTDRAWS; i++)
    {
        TextDrawShowForPlayer(playerid, GlobalniTextDraw[i]);
    }
}

public OnGameModeExit()
{
    // Unistavanje globalnih textdrawova prilikom gasenja servera
    for (new i = 0; i < MAX_GLOBAL_TEXTDRAWS; i++)
    {
        TextDrawDestroy(GlobalniTextDraw[i]);
    }
}

Globalni textdrawovi su vidljivi svim igracima, pa ih nije moguće prilagoditi pojedinacnim igracima.

Možeš i timer koristiti umjesto OnPlayerConnect ako hoćeš bolje kontrolirati koliko se cesto azuriraju textdrawovi.

Uradio sam slican fazon, textdrawovi koji nemaju nikakav change, oni su global ostale gde se menjaju neke vrednosti stavio sam da budu player
Sve u svemu, resio sam problem tako sto sam svaki textdraw destroyao nakon hide-anja i ponovo ga kreirao na show i tjt
hvala svakako
GAD SAM JA