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.");
}