Hallo ich habe vor, ein RL server mit einem Freund auf die beine zu stellen und komme an einer Stelle nicht weiter.
Ich möchte gerne dass die Fraktionscars von der Army nur für die Mitglieder dieser Fraktion zu fahren sind.
Ich habe 33 Autos insgesamt und ich denke ich mache das irgendwie so:
new Acars[33]; // Acars = Armycars war zu faul auszuschreiben ..
dann habe ich halt immer gemacht:
Acars[0]=AddStaticVehicleEx(520,423.52752685547,2514.3615722656,17.403949737549,88,-1,-1,15);
Acars[1]=AddStaticVehicleEx(520,423.15087890625,2495.087890625,17.403949737549,88,-1,-1,15);
das geht so weiter bis Acars[32]...
was muss ich jetzt weiter machen ?
oder ist es total falsch?
wenn es flasch ist schreibt mir bitte wie es richtig wäre
danke Sart
Fraktionscars nur für Mitglieder?
- Sart
- Geschlossen
- Erledigt
Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!
Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
-
-
Ne stimt soweit
must halt noch dem script sagen was pasiert wen man einsteigt
aber dazu gibts ja hier tuts
[ SCRIPTING ] Fraktionsautos für gf keine id verschiebung!MFG waidi
-
AAHHHHH vergessen zu sagen kein GF only blank will alles alleine machen
-
//Ganz nach oben ins Script:
forward IsAArmyCar(vehicleid);
//Dann die abfrage:
public OnPlayerStateChange(playerid, newstate, oldstate)
{
if(newstate == PLAYER_STATE_DRIVER)
{
new vehicleid = GetPlayerVehicleID(playerid);
if(IsAArmyCar(vehicleid)
{
if(/* Hier muss die Abfrage rein ob der Spieler ein Mitglied der Army*/) {}
else //Falls er das NICHT ist
{
SendClientMessage(playerid, COLOR_LoginRot, "Du bist kein Mitglied der Army");
RemovePlayerFromVehicle(playerid);
}
}
}
}
//Und ganz nach unten ins Script:
public IsAArmyCar(vehicleid)
{
new i=0;
for(; i < sizeof(Acars);; i++)
{
if(vehicleid == Acars[i]) return 1;
}
return 0;
}
Und du kannst auch das Tutorial benutzen. Nur weil es für GF geschrieben ist heisst es nicht das es bei anderen Scripts nicht funktioniert. -
Erstmal danke für die schnele antwort
leider kenne ich mich noch nciht so gut aus und ich weis nicht wofür dieses AArmyCar stehen soll?
also nix mit arrys oder wie? -
Die Funktion IsAArmyCar(vehicleid) überprüft ganz einfach ob das auto in dem man gereade sitzt ein fahrzeug der Army fraktion ist oder nicht.
public IsAArmyCar(vehicleid)
{
new i=0;//eine neue variable wird erstellt ( i ) und es wird dierekt gesagt das i 0 ist.
for(; i < sizeof(Acars); i++)//hier wird eine schleife gestartet. Das heisst solange die angegebene variable ( i ) kleiner als ( < ) die größe von Acars ( sizeof(Acars) beudetet die größe von Acars, also 33 ) ist wird die variable ( i ) immer um eins erhöht ( i++ )
{
if(vehicleid == Acars[i]) return 1;// Nun wird in jedem durchlauf überprüft ob vehicleid (wir errinnern uns, vehicleid war das fahrzeug in dem wir uns gerade befinden) eines der Army cars ist. Ist das der fall wird 1 also true zurück gegeben und die schleife wird beendet
}
return 0;//wurde bei der schleife nichts gefunden wird 0 also false zurück gegeben
}
Somit kannst du Abfragen ob das Fahrzeug ein Army car ist oder nicht
if(IsAArmyCar(vehicleid))
{
SendClientMessage(playerid, 0xFFFFFFFF, "Es ist ein Army car");
}
if(!IsAArmyCar(vehicleid))
{
SendClientMessage(playerid, 0xFFFFFFFF, "Es ist kein Army car");
}Man könnte das ganze auch so schreiben:
public IsAArmyCar(vehicleid)
{
if(vehicleid == Acars[0]) return 1;
else if(vehicleid == Acars[1]) return 1;
else if(vehicleid == Acars[2]) return 1;
else if(vehicleid == Acars[3]) return 1;
else if(vehicleid == Acars[4]) return 1;
else if(vehicleid == Acars[5]) return 1;
else if(vehicleid == Acars[6]) return 1;
else if(vehicleid == Acars[7]) return 1;
else if(vehicleid == Acars[8]) return 1;
else if(vehicleid == Acars[9]) return 1;
else if(vehicleid == Acars[10]) return 1;
else if(vehicleid == Acars[11]) return 1;
else if(vehicleid == Acars[12]) return 1;
else if(vehicleid == Acars[13]) return 1;
else if(vehicleid == Acars[14]) return 1;
else if(vehicleid == Acars[15]) return 1;
else if(vehicleid == Acars[16]) return 1;
else if(vehicleid == Acars[17]) return 1;
else if(vehicleid == Acars[18]) return 1;
else if(vehicleid == Acars[19]) return 1;
else if(vehicleid == Acars[20]) return 1;
else if(vehicleid == Acars[21]) return 1;
else if(vehicleid == Acars[22]) return 1;
else if(vehicleid == Acars[23]) return 1;
else if(vehicleid == Acars[24]) return 1;
else if(vehicleid == Acars[25]) return 1;
else if(vehicleid == Acars[26]) return 1;
else if(vehicleid == Acars[27]) return 1;
else if(vehicleid == Acars[28]) return 1;
else if(vehicleid == Acars[29]) return 1;
else if(vehicleid == Acars[30]) return 1;
else if(vehicleid == Acars[31]) return 1;
else if(vehicleid == Acars[32]) return 1;
else if(vehicleid == Acars[33]) return 1;
else return 0;
}
Aber warum so umständlich wenns auch einfacher und kützer gehtUnd ich hatte da einen kleien fehler drin
So sollte es richtig gehen:
public IsAArmyCar(vehicleid)
{
new i=0;
for(; i < sizeof(Acars);; i++)
{
if(vehicleid == Acars[i]) return 1;
}
return 0;
} -
omg es funktioniert danke danke danke
du bist ein held -
new PolizeiVehs[13];//Eigene Anzahl einstellen
forward IsACopCar(carid);public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger) // Überprüfen ob Spieler in ein Polizeifahrzeug steigt
{
if (IsACopCar(vehicleid) && !ispassenger) // Ist spieler ein Polizist? für Beifahrer fällt die Abfrage aus
{
if(PlayerInfo[playerid][pLeader] == 1 || PlayerInfo[playerid][pMember]== 1){ } // Definiertes Team
else
{
SendClientMessage(playerid, Grau, " Du hast keinen Schlüssel!"); // Text
TogglePlayerControllable(playerid, 1); //Stoppt Betreten des Autos // Verhindern
}
}
}
return 1;
}public IsACopCar(carid)
{
for(new i = 0; i < sizeof(PolizeiVehs); i++)
{
if(carid == PolizeiVehs[i])
{
return 1;
}
}
return 0;
}PolizeiVehs[1] = AddStaticVehicleEx(598,991.6130,-1339.3340,13.1302,359.7912,0,0,-1); // Polizei Fahrzeuge
// usw.Wenn für mehrere Cars einfach alles neu nur mit anderen Namen :D
-
ich hab das jeztt so gemacht und es will nicht gehen zeigt keine errors an aber ingame kann ich ganz normal in das car rein auch wenn ich nicht in der frajtion drinne bin :
new elc[8];forward IsAelcar(carid);
public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
{
if (IsAelcar(vehicleid) && !ispassenger) // Ist spieler ein Polizist? für Beifahrer fällt die Abfrage aus
{
if(Spieler[playerid][leader] == 1 || Spieler[playerid][team]== 4){ } // Definiertes Team
else
{
SendClientMessage(playerid, Grau, " Du hast keinen Schlüssel!"); // Text
TogglePlayerControllable(playerid, 1); //Stoppt Betreten des Autos // Verhindern
}
}}
public IsAelcar(carid)
{
for(new i = 0; i < sizeof(elc); i++)
{
if(carid == elc[i])
{
return 1;
}
}
return 0;
}
was ist daran falsch?