[Problem] - Fahrzeug Abschleppen

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
  • Guten Tag,


    Ich versuche grad es so zumachen das wenn man /abschleppen eingibt das dann das Fahrzeug was am Hacken hängt zu einem Freien Parkplatz geportet wird, mein Problem ist aber folgendes er gibt immer noch ID 0 aus egal ob eins dort steht oder nicht ich hoffe mir kann jemand helfen.


    Hier mal die Stocks:




    & hier der Befehl dazu:



    MfG

  • Also setzen wir mal voraus, dass die Koordinaten stimmen, dann gibt es einige Logik Fehler in deinem Code.


    Ich versuche dir das mal zu erklären, was deine 2 größten sind.


    • Du startest die vehicleids ab 0. Allerdings starten diese bei 1, somit steht das 1. Fahrzeug natürlich nie, an einem Parkplatz, da es nicht existiert. Dann prüfst du, ob es da steht, natürlich nicht und schwupp scheint es so als sei Parkplatz 0 frei.
    • Hier solltest du den 2. Logikfehler gesehen haben, du musst erst durch alle Fahrzeuge durchloopen um zu schauen, ob ein Parkplatz frei ist oder nicht.

    Also hier mal anders:



    Und schreib die andere Funktion mal so, das ist eleganter und schneller:



    C
    stock IsVehicleInArea(vehicleid, Float:MinX, Float:MinY, Float:MaxX, Float:MaxY)
    {
        new Float:X, Float:Y, Float:Z;
        GetVehiclePos(vehicleid, X, Y, Z);
        return (X >= MinX && X <= MaxX && Y >= MinY && Y <= MaxY);
    }

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • Danke dir erstmal aber habe es jetzt so gemacht:



    stock GetFreePoint() {
    for(new bool:besetzt,m_id=GetVehiclePoolSize(),v,p; p < sizeof(VehicleTowedSpawn); p++ ) {
    besetzt=false;
    for(v=m_id; v!=0; v--) {
    if(IsVehicleInArea(v, VehicleTowedSpawn[p][TowedSpawnMinX] , VehicleTowedSpawn[p][TowedSpawnMinY], VehicleTowedSpawn[p][TowedSpawnMaxX], VehicleTowedSpawn[p][TowedSpawnMaxY])) {
    besetzt = true;
    break;
    }
    } if(!besetzt) return p;
    }
    return -1;
    }


    stock IsVehicleInArea(vehicleid, Float:MinX, Float:MinY, Float:MaxX, Float:MaxY) {
    new Float:X, Float:Y, Float:Z;
    GetVehiclePos(vehicleid, X, Y, Z);
    return (X >= MinX && X <= MaxX && Y >= MinY && Y <= MaxY);
    }


    Bekomme immernoch die id 0 zurück.

  • Bekomme immernoch die id 0 zurück.

    Okay, kannst du mal aus Spaß zeigen was die Werte von:


    VehicleTowedSpawn[0][TowedSpawnMinX] , VehicleTowedSpawn[0][TowedSpawnMinY], VehicleTowedSpawn[0][TowedSpawnMaxX], VehicleTowedSpawn[0][TowedSpawnMaxY]


    und


    VehicleTowedSpawn[0][TowedSpawnX],VehicleTowedSpawn[0][TowedSpawnY],VehicleTowedSpawn[0][TowedSpawnZ]


    sind :)

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • @Kaliber
    Hier:

    enum enum_VehicleTowedSpawn {
    Float:TowedSpawnX,Float:TowedSpawnY,Float:TowedSpawnZ,Float:TowedSpawnR,
    Float:TowedSpawnMinX,Float:TowedSpawnMinY,Float:TowedSpawnMaxX,Float:TowedSpawnMaxY,
    };
    new VehicleTowedSpawn[2][enum_VehicleTowedSpawn] = { // spawn bei VerwahrungTowedSpawnMinY
    // X Y Z A
    {1099.2972,-1757.9954,13.0572,89.8849, 1101.4561,1095.8397,-1753.5172,-1756.2960},
    {1099.1534,-1763.8715,13.0558,88.6196, 1095.8352,-1762.0773, 1101.5844,-1759.2413}
    };

  • Die Anordnung ist falsch:


    1101.4561 = xMax
    1095.8397 = xMin
    -1753.5172 = yMax
    -1756.2960 = yMin



    Deine Anordnung ist also: xMax, xMin, yMax, yMin


    Sie sollte aber: xMin, yMin, xMax, yMax sein.

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • Leider immer noch das Selbe :(

  • Zeig nochmal deine Koordinaten :)


    Und bist du sicher, dass auch wirklich ein Fahrzeug da steht?

    @Kaliber


    Es klappt Dank dir

    Einmal editiert, zuletzt von iTzTrappY ()

  • Habe es jetzt so:


    enum enum_VehicleTowedSpawn {
    Float:TowedSpawnX,Float:TowedSpawnY,Float:TowedSpawnZ,Float:TowedSpawnR,
    Float:TowedSpawnMinX,Float:TowedSpawnMinY,Float:TowedSpawnMaxX,Float:TowedSpawnMaxY,
    };
    new VehicleTowedSpawn[2][enum_VehicleTowedSpawn] = { // spawn bei Verwahrung
    // X Y Z A
    {1099.2107,-1757.9520,13.0559,89.3095,1095.8269,-1759.4690,1101.6964,-1756.5287},
    {1098.7535,-1763.7693,13.0572,89.6937,1095.7173,-1765.4781,1101.9083,-1762.3434}
    };


    und es Funktionier!


    Danke dir für deine Hilfe