Also ganz Simple erklärt, du erstellst eine neue variable, weißt dieser dann dem Fahrzeug zu und fragst beim einstiegen oder beim Hinsetzen ab, ob er in der Fraktion ist am besten benutzt du dafür OnplayerStateChange
Vor weg, der Code ist kommenteir, ich hoffe man kann es erkennen....
Simple dann so:
die 10 steht für die maximalen Fahrzeuge, kannst du natürlich erhöhen, diese variablen sind dann ein Array, ein Array fängt immer mit 0 an zu zählen, dass bedeutet Minimum wäre ballas_Car[0] und Max ballas_Car[9], alles darüber gibt Fehler, es sei denn du erhöhst die 10
unter OnGameModeInit dann
ballas_Car[0]=AddStaticVehicle(405,1220.4780,-928.0273,42.9246,181.7324,36,1);
ballas_Car[1]=AddStaticVehicle(411,1230.4780,-928.0273,42.9246,181.7324,36,1);
ballas_Car[2]=AddStaticVehicle(412,1240.4780,-928.0273,42.9246,181.7324,36,1);
ballas_Car[3]=AddStaticVehicle(413,1250.4780,-928.0273,42.9246,181.7324,36,1);
grove_Car[0]=AddStaticVehicle(411,1260.4780,-928.0273,42.9246,181.7324,36,1);
Als Beispiel, hier kannst du wie gesagt bis zu der zahl neun gehen oder du erhöhst die 10
dann bei OnPlayerStateChange
if(newstate == PLAYER_STATE_DRIVER || newstate == PLAYER_STATE_PASSENGER)//Fragt ab ob wir Fahrer oder Passagier sind, bedeutet wenn du willst das man sich als Beifahrer rein setzen darf, entferne "|| newstate == PLAYER_STATE_PASSENGER"
{
new vehicle = GetPlayerVehicleID(playerid);//gibt die Aktuelle Id vom Fahrzeug, indem wir sitzen zurück
for(new i=0; i<sizeof(ballas_Car);i++)//geht alle Fahrzeuge durch von den Ballas
{
if(vehicle == ballas_Car[i])//Fragt ab, ob wir in einem ballas Fahrzeug sitzen
{
if(playerFaction[playerid]!=2)//Fragt ab ob wir nicht in der Fraktion von der Ballas sind, Bitte anpassen zu deinem System!!!!!
{
RemovePlayerFromVehicle(playerid);//entfernt den Spieler vom Fahrzeug wieder
SendClientMessage(playerid,-1,"Du bist kein Mitglied der Ballas");//gibt eine Nachricht aus
}
return 1;//beendet, da wir das Fahrzeug gefunden haben (geht auch break, falls darunter noch Code kommt welcher ausgeführt werden soll)
}
}
for(new i=0; i<sizeof(grove_Car);i++)//geht alle Fahrzeuge durch von den GroveStreet
{
if(vehicle == grove_Car[i])//Fragt ab, ob wir in einem GroveStreet Fahrzeug sitzen
{
if(playerFaction[playerid]!=1)//Fragt ab ob wir nicht in der Fraktion von der Grovestreet sind, Bitte anpassen zu deinem System!!!!!
{
RemovePlayerFromVehicle(playerid);//entfernt den Spieler vom Fahrzeug wieder
SendClientMessage(playerid,-1,"Du bist kein Mitglied der Grovestree");//gibt eine Nachricht aus
}
return 1;//beendet, da wir das Fahrzeug gefunden haben (geht auch break, falls darunter noch Code kommt welcher ausgeführt werden soll)
}
}
}
Alles anzeigen
Du siehst also, bei mehr Fraktionen musst du nur die for schleife kopieren und anpassen.
oder du nutzt ein Enum um bei mehrer fraktionen, mehr übersicht zu haben
enum Cars{
model,
Float:fx,
Float:fy,
Float:fz,
Float:fr,
c1,
c2,
faction,
id
}
new frakCars[][Cars] = {
// {modelid,x,y,z,angle,color1,color2,fraktionid}
{411,1230.4780,-928.0273,42.9246,181.7324,6,1,1},//Fraktion 1
{412,1230.4780,-938.0273,42.9246,181.7324,6,1,1},//Fraktion 1
{413,1230.4780,-948.0273,42.9246,181.7324,6,1,2}, //Fraktion 1
{414,1230.4780,-958.0273,42.9246,181.7324,6,1,2},//Fraktion 2
{415,1230.4780,-968.0273,42.9246,181.7324,6,1,2} //Fraktion 2
};
Alles anzeigen
In FrakCars, setzt du genau die werte ein, die eigentlich in AddStaticVehicle stehen und am ende fügst du dann mit einem Komma noch die frations id hinzu.
Bsp. unser gepseichertes Fahrzeug AddStaticVehicle(405,1220.4780,-928.0273,42.9246,181.7324,36,1);
wir kopieren alels aus der Klammer, "405,1220.4780,-928.0273,42.9246,181.7324,36,1"
und fügen am ende noch die Fraktion hinzu, welche das Fahrzeug nutzen darf, sagen wir mal die Fraktionsid 3 darf das Fahrzeug nutzen, dann sieht es so aus:
"405,1220.4780,-928.0273,42.9246,181.7324,36,1,3" und das fügen wir ein
also so dann fertig. wichtig, dadrüber hitner der "}" dann ein Komma setzen. (seihe oben das Bsp.)
dann unter OnGameModeInit
for(new i=0;i<sizeof(frakCars);i++)//geht alle Erstellten autos durch
{
frakCars[i][id] = AddStaticVehicle(frakCars[i][model],frakCars[i][fx],frakCars[i][fy],frakCars[i][fz],frakCars[i][fr],frakCars[i][c1],frakCars[i][c2]);//erstellt unser Auto und weisst die id zu
}
dann unter OnPlayerStateChange
if(newstate == PLAYER_STATE_DRIVER || newstate == PLAYER_STATE_PASSENGER)
{
new vehicle = GetPlayerVehicleID(playerid);
for(new i=0; i<sizeof(frakCars);i++)//geht alle Erstellten autos durch
{
if(vehicle == frakCars[i][id])//überprüft ob wir in einem dieser Fahrzeuge sitzen
{
if(playerFaction[playerid]!=frakCars[i][faction])//Fragt ab, ob wir nicht der Fraktion sind
{
RemovePlayerFromVehicle(playerid);//entfernt uns vom Fahrzeug
new string[120];
format(string,sizeof(string),"Du bist kein Mitglied der Fraktion: %s",GetFactionName(frakCars[i][faction]));
SendClientMessageToAll(-1,string);//gibt uns eine Nachricht, das wir nicht zu der gesetzten Fraktion gehören.
}
return 1;//beendet, da wir das Fahrzeug gefunden haben (geht auch break, falls darunter noch Code kommt welcher ausgeführt werden soll)
}
}
}
Alles anzeigen
zusatz funktion, GetFactionName
stock GetFactionName(fractionid)
{
new string[20];
switch(fractionid)
{
case 0: string="Zivi";
case 1: string="Grove Street";
case 2: string="Ballas";
}
return string;
}
Alles anzeigen
Somit, musst du einfach nur oben ein neues Fahrzeug hinzufügen und sparst dir immer, das napassen der Variablen
Ich hoffe einer dieser Varianten konnte dir helfen.