Ich geb dir hier keinen Copy&Paste Code sondern ein paar Denkanstöße:
Als allererstes brauchst du ein mehrdimensionales Array:
vom Aufbau her so ungefähr: pAuto[playerid][autoid_zum_spieler]
->playerid ist die ID des Spielers (geht also von 0 bis MAX_PLAYERS;
->autoid_zum_spieler wäre dann entweder 0 oder 1 (das erste oder das zweite Auto. Wenn du mehr möchtest musst du einfach die Zahl (ein #define am besten) erhöhen)
Also sollte das so aussehen:
#define MAX_CARS_PER_PLAYER 2
new pAuto[MAX_PLAYERS][MAX_CARS_PER_PLAYER];
In dem Arrayplatz speicherst du dann die ID des Autos (bekommst du beim Erstellen als Return-Wert)
Eventuell wäre es hier sinnvoller mit SetPVarInt zu arbeiten.
Beim Erstellen frägst du einfach den Return-Wert ab und setzt ihn in die SpielerVariable
new c = CreateVehicle(....);
SetPVarInt(playerid,"Auto1",c);
Autos Spawnen auf dem Parkplatz
-Du musst ein paar feste Positionen in einem 2-dimensionalen Array speichern und beim Autokauf das Auto an einen zufälligen Parkplatz setzen
-Kannst du dir von deinem Spieleraccount DINI System abschauen. Das sollte ähnlich aufgebaut sein
Autos sind weg wen Player offline
-Bei OnPlayerDisconnect musst du nur das Auto löschen. Mit [wiki]DestroyVehicle[/wiki]. Die VehicleID ist in diesem Falle der Wert aus dem Array oder von GetPVarInt
Vorzeige Autos nicht betretbar
-[wiki]SetVehicleParamsEx[/wiki]. Damit kannst du von den Vorzeigeautos die "doors" auf 1 setzen. Damit sind sie abgesperrt.
-Eine zusätzliche Absicherung kannst du dir in OnPlayerStateChange einbauen, indem du abfragst ob sich der Spieler in ein Vorzeigeauto gesetzt hat. Falls ja, schmeist du ihn wieder raus.