Fraktionsfahrzeug parken

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 liebe Scripter,



    Ich möchte meine Fahrzeuge per Befehl parken lassen, weiß aber gerade ehrlich gesagt nicht wie.


    Das Fraktionsfahrzeugeerstellen und -loeschen system wurde mir empfohlen:



    ocmd:fferstellen(playerid, params[])
    {
    //Zuerst fragen wir ab, ob wir noch Fahrzeuge erstellen können
    if(GetVehicleModel(MAX_VEHICLES-1) != 0) return SendClientMessage(playerid, Weiss, "Es können keine weiteren Fahrzeuge erstellt werden, Limit (MAX_VEHICLES) erreicht.");



    //Wir deklarieren die benötigten temporären Variablen.
    new tmp[20], idx, model, fID, color1 = -1, color2 = -1;



    //Anschließend teilen wir mit strtok2 die eingegebenen Paramater auf und wandeln sie in eine Zahl um.
    //Falls etwas falsches eingegeben wurde, geben wir eine entsprechende Meldung zurück.
    tmp = strtok2(params, idx);
    if(!strlen(tmp) || !IsNumeric(tmp)) return SendClientMessage(playerid, Weiss, "Verwendung: /fferstellen [Model] [FraktionsID] [opt:Farbe1] [opt:Farbe2]");
    model = strval(tmp);
    //Eine solche Abfrage kann man auch für nachfolgende FraktionsID (fID) machen, falls gewünscht.
    if(model < 400 || model > 611) return SendClientMessage(playerid, Weiss, "Error: Model ID existiert nicht.");
    tmp = strtok2(params, idx);
    if(!strlen(tmp) || !IsNumeric(tmp)) return SendClientMessage(playerid, Weiss, "Verwendung: /fferstellen [Model] [FraktionsID] [opt:Farbe1] [opt:Farbe2]");
    fID = strval(tmp);
    tmp = strtok2(params, idx);
    if(strlen(tmp) && IsNumeric(tmp)) color1 = strval(tmp);
    tmp = strtok2(params, idx);
    if(strlen(tmp) && IsNumeric(tmp)) color2 = strval(tmp);



    //Sind alle Parameter korrekt übergeben worden, dann suchen wir uns einen freien Index in den wir das Fraktions-Fahrzeug speichern können.
    for(new i=0; i<Max_FraktionsFahrzeuge; i++)
    {
    //Frei:
    if(FFVehInfo[i][ff_vID] == 0)
    {
    //Daten werden übergeben
    new Float:x, Float:y, Float:z, Float:a;
    GetPlayerPos(playerid, x, y, z);
    GetPlayerFacingAngle(playerid, a);
    FFVehInfo[i][ff_ModelID] = model;
    FFVehInfo[i][ff_x] = x;
    FFVehInfo[i][ff_y] = y;
    FFVehInfo[i][ff_z] = z;
    FFVehInfo[i][ff_a] = a;
    FFVehInfo[i][ff_Farbe1] = color1;
    FFVehInfo[i][ff_Farbe2] = color2;
    FFVehInfo[i][ff_FraktionsID] = fID;



    //und anschließend wird dann das Fahrzeug erstellt und der Spieler in das Fahrzeug gesetzt.
    FFVehInfo[i][ff_vID] = CreateVehicle(FFVehInfo[i][ff_ModelID], FFVehInfo[i][ff_x], FFVehInfo[i][ff_y], FFVehInfo[i][ff_z], FFVehInfo[i][ff_a], FFVehInfo[i][ff_Farbe1], FFVehInfo[i][ff_Farbe2], -1);
    PutPlayerInVehicle(playerid, FFVehInfo[i][ff_vID], 0);
    //Zuletzt wird die Datei angelegt und das Fahrzeug gespeichert.
    new FrakName[64];
    switch(fID)
    {
    case 1: FrakName = "San Andreas Police Department";
    case 2: FrakName = "Bundeswehr";
    case 3: FrakName = "Terroristen";
    case 4: FrakName = "Hitman";
    }
    new path[64];
    format(path, sizeof(path), "/FraktionsFahrzeuge/%s_%d_%d.ini",FrakName, model, i);
    dini_Create(path);
    SpeicherFrakVehCheck(FFVehInfo[i][ff_vID]);



    return SendClientMessage(playerid, Weiss, "Fraktionsfahrzeug erstellt und gespeichert.");
    }
    }
    return SendClientMessage(playerid, 0xFF0000FF, "Error: Limit für Fraktions-Fahrzeuge erreicht.");
    }



    ocmd:ffloeschen(playerid, params[])
    {
    //Wir deklarieren die benötigte temporäre Variable.
    new vid;
    //Wenn der Spieler keine Vehicle-ID eingibt wird die gelöscht, in der sich der Spieler befindet,
    //ansonsten die eingegebene ID.
    if(!IsNumeric(params) || !strlen(params)) return SendClientMessage(playerid, 0xFF0000FF, "Error: Nutze: /ffloeschen [Vehicle ID]");
    vid = strval(params);
    if(vid <= 0) return SendClientMessage(playerid, 0xFF0000FF, "Error: Vehicle-ID ist kein Fraktions-Fahrzeug.");
    for(new i=0; i<Max_FraktionsFahrzeuge; i++)
    {
    //Eingegebene ID und die des Fraktions-Fahrzeugs stimmen überein.
    if(FFVehInfo[i][ff_vID] == vid)
    {
    //Daten werden entfernt
    FFVehInfo[i][ff_ModelID] = 0;
    FFVehInfo[i][ff_x] = 0.0;
    FFVehInfo[i][ff_y] = 0.0;
    FFVehInfo[i][ff_z] = 0.0;
    FFVehInfo[i][ff_a] = 0.0;
    FFVehInfo[i][ff_Farbe1] = 0;
    FFVehInfo[i][ff_Farbe2] = 0;
    FFVehInfo[i][ff_FraktionsID] = -1;
    //und anschließend in der Datenbank gelöscht.
    new path[64];
    format(path, sizeof(path), "/FraktionsFahrzeuge/%d.ini", i);
    dini_Remove(path);



    DestroyVehicle(FFVehInfo[i][ff_vID]);
    FFVehInfo[i][ff_vID] = 0;
    return SendClientMessage(playerid, 0x00FF00FF, "Fahrzeug gelöscht.");
    }
    }
    return SendClientMessage(playerid, 0xFF0000FF, "Error: Vehicle-ID ist kein Fraktions-Fahrzeug.");
    }

    Mit freundlichen Grüßen,
    Dachdecker