Was sollen immer diese unnötigen Diskussionen? Kehrt doch mal lieber zum Thema zurück und wenn ihr die vom Vorposter genannte Funktion nicht optimal findet, dann verbessert ihn halt.
b2T:
Also ich habe es bisher immer so gemacht:
Ich habe bei OnPlayerStateChange geprüft ob jemand in ein Fraktionsfahrzeug einsteigt und ihn einfach rausgeschmissen, wenn er nicht in der jeweiligen Fraktion ist.
Also ungefähr so sollte es aussehen (es geht noch einfacher, aber egal ...):
// Oben
new Polizei[5];
// OnGameModeInit
Polizei[0] = AddStaticVehicleEx ...
Polizei[1] = AddStaticVehicleEx ...
// Callback
public Polizeiwagen(vid)
{
for(new i = 0; i < sizeof(Polizei); i++)
{
if(vid == Polizei[i])
{
return 1;
}
}
return 0;
}
// OnPlayerStateChange
if(newstate == PLAYER_STATE_DRIVER)
{
new getid = GetPlayerVehicleID(playerid);
if(Polizeiwagen(getid))
{
if(Abfrage ob Spieler in Fraktion ist)
{
SendClientMessage(playerid,FARBE,"* Dies ist ein Fraktionsfahrzeug.");
}
else
{
RemovePlayerFromVehicle(playerid);
SendClientMessage(playerid,FARBE, "* Du bist kein Polizist!");
}
}
}
Natürlich kann man auch eine for-Schleife benutzen, was durchaus einfacher wäre, aber so funktioniert es auch perfekt.
// Edit: Und denk dran: Da die Fahrzeuge bei 0 beginnen, wird es keine 5 geben, aber der Wert muss immer 1 höher sein.