Temp. Vehicle

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
  • Moin moin,

    folgende kleine Frage:

    Wenn ich auf meinem Server ein temporäres Auto In-Game mit einem Befehl erstelle und dieses Auto dann kaputt fahre, so will ich, dass es nicht respawnt.


    Ich hatte bis jetzt folgenden Ansatz:

    Code
    public OnVehicleSpawn(vehicleid) {
        for (new p = 0; p < MAX_PLAYERS; p++) {
            for(new v = 0; v < MAX_VEHICLES; v++) {
                if (vehicleid != tempPlayerVeh[p]) continue; // die "tempPlayerVeh[playerid]" ist die Variable, in der ich die VehicleID speichere
                DestroyVehicle(v);
            }
        }
        return 1;
    }

    Der Code bewirkt momentan, dass sobald mein temp. Auto kaputt ist und respawnt alle Autos auf meinem Server gelöscht werden. Ich komme einfach nicht darauf, wie ich nur die Autos, löschen kann, die ich temp. erstellt habe.


    Vielleicht hat jemand eine Lösungsidee,

    Danke!

  • Schreib es mal so. Ich habe noch ein paar Kommentare hinzugefügt damit du weißt, was du falsch gemacht hast :)


    for(new p = 0; p < MAX_PLAYERS; p++) {

      if(vehicleid != tempPlayerVeh[p]) continue;

      DestroyVehicle(vehicleid); // Hast die vehicleid ja schon durch das Callback, daher ist die weitere Schleife nicht nötig

      tempPlayerVeh[p] = 0; //Damit es keine Fehler gibt einfach zurücksetzen :)

    // vehicleid startet ab dem Wert 1, somit gibt es da auch keine Probleme ;)

    }

  • ich würde es allgemein nicht über eine Schleife machen das geht viel einfacher :


    global variable setzen:

    Code
    new bool:IsATempVehicle[MAX_VEHICLES];

    beim erstellen auf True stellen.


    Code
    IsATempVehicle[id] = True;
    Code
    public OnVehicleSpawn(vehicleid) {
        if(IsATempVehicle[vehicleid] == True)
        {
                DestroyVehicle(vehicleid);
                IsATempVehicle[vehicleid] = false;
        }
        return 1;
    }

    Mein erster Code nach 6 Jahren.
    ps: auf dem iPad geschrieben können also Schreibfehler enthalten.
    Ne Schleife dauert viel länger. Die AMX wird dadurch zwar etwas größer aber das hält sich in Grenzen.


    //Edit: Falls jetzt das Argument kommt zwecks disconnect da kann man Abhilfe mit SetPvarInt und GetPVarInt verschaffen zwecks id Übergabe.


    Lg

    RFT

    2 Mal editiert, zuletzt von RFT () aus folgendem Grund: Schreibfehler

  • Ja also zuerst, eine Schleife in einer Schleife, man kennts :D

    Gebe dem RFT auf jeden Fall Recht an dieser Schelle, spart einiges an Quellcode & ist auch schneller.

    Habe früher auch noch, mit Schleifen das ganze Vehicle Managend bearbeitet, bis ich es gesehen habe, wie einfach es gehen.. schon sehr viel am Code schrauben müssen, das KCT Script hatte letztes endlich ja bei Release um die 7429 Zeilen, das war ne Arbeit :D

    genau weis ich es nicht.. meine aber, dass ich dass Über OnVehicleDeath gemacht habe ;)