Fraktionscars nur für Mitglieder?

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
  • 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

  • //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.

    The fact is, I am right. And if you think I'm wrong, you are wrong.

  • 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 geht ;)


    Und 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;
    }

    The fact is, I am right. And if you think I'm wrong, you are wrong.


  • 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?