Problem se verovatno nalazi u liniji gde se koristi PlayerTextDrawSetString sa g_MenuHeaderText. Postoje nekoliko potencijalnih problema koji mogu izazvati grešku:
g_MenuHeaderText nije pravilno inicijalizovan ili kreiran za playerid.
Proveri da li je g_MenuHeaderText validan (npr. da li je TextDraw kreiran za tog igrača pre nego što pokušavaš da postaviš tekst).
header niz nije validan ili ima nedozvoljene vrednosti.
Uveri se da header sadrži odgovarajuću vrednost, bez null pointer-a ili grešaka u formatu.
Indeks playerid nije validan.
Proveri da li playerid spada u opseg igrača koji su povezani na server.
PlayerTextDrawSetString možda ne podržava prazan string.
Ako je header prazan string (""), probaj da ga postaviš na neku podrazumevanu vrednost.
Popravka koda sa dodatnim proverama:
Evo ispravljenog koda sa dodatnim proverama da se izbegnu potencijalne greške:
static stock ShowModelSelectionMenuTextDraws(playerid, const header[])
{
// Uništavanje prethodnih TD-ova
DestroyModelSelectionPlayerTDs(playerid);
CreateModelSelectionPlayerTDs(playerid);
for (new Iter:i = list_iter(g_MenuModels), count = 0, model; iter_inside(i); iter_move_next(i))
{
if (count >= MAX_ITEM_PER_PAGE) break;
iter_get_arr(i, model);
SetModelSelectionModelBox(playerid, count, model);
count++;
}
// Provera da li postoji igračeva stranica
if (g_MenuPageNumber != INVALID_TEXT_DRAW)
{
new page;
format(page, sizeof(page), "1/%d", (list_size(g_MenuModels) / MAX_ITEM_PER_PAGE) + 1);
PlayerTextDrawSetString(playerid, g_MenuPageNumber, page);
}
// Provera validnosti header-a i g_MenuHeaderText
if (g_MenuHeaderText != INVALID_TEXT_DRAW && header != EOS)
{
PlayerTextDrawSetString(playerid, g_MenuHeaderText, header);
PlayerTextDrawShow(playerid, g_MenuHeaderText);
}
// Prikaz ostalih TD-ova
PlayerTextDrawShow(playerid, g_MenuPageNumber);
TextDrawShowForPlayer(playerid, g_MenuRightArrow);
TextDrawShowForPlayer(playerid, g_MenuLeftArrow);
TextDrawShowForPlayer(playerid, g_MenuBackground);
TextDrawShowForPlayer(playerid, g_MenuTopBanner);
TextDrawShowForPlayer(playerid, g_MenuBottomBanner);
TextDrawShowForPlayer(playerid, g_MenuCloseButton);
SelectTextDraw(playerid, -1);
}
Opet testiraj kod za svaki slučaj.