new id = GetFreePickupID();
if(id == -1) return SendClientMessage(playerid, 0xFF0000FF, "Error: Alle voll.");
aPickups[id][e_pickupid] = CreatePickup(...);
Bei OnGameModeInit setzt du alle e_pickupid auf -1, mit einer Schleife.
Und bei GetFreePickupID machst du eine Schleife durch alle aPickups und fragst ab, ob es -1 ist, wenn ja returnst du i. Wird keins gefunden, nach der Schleife, -1.
Gleich bei OnPlayerPickUpPickup, nur eben nicht auf -1 prüfen, sondern auf pickupid.
Versuche das mal anhand der Beschreibung hinzubekommen.