So
Ein zweites Tutorial.
Fangen wir an.
Als erstes brauchen wir 2 Includes.
#include <zcmd>
#include <dini>
Na ? War doch nicht so schwer.
Jetzt definieren wir 2 Sachen
#undef MAX_VEHICLES
#define MAX_VEHICLES 5 // Erstmal 5 das könnt ihr beliebig ändern
So nun machen wir noch ein enum wo wir alles speichern und aufbewahren.
enum vInfo
{
vModel, // Vehicle Model
Float:vPosx, // Vehicle X Position
Float:vPosy, // Vehicle Y Position
Float:vPosz, // Vehicle Z Position
Float:vPosa, // Vehicle A Position
vColor1, // Vehicle Farbe ID 1
vColor2, // Vehicle Farbe ID 2
vvw, // Virtuelle Welt vom Fahrzeug
vPlate[10], // Nummernschild. Nicht nötig aber warum nicht?
}
new VehicleInfo[][vInfo] = //
{
{540,-2937.5,-2927.5, 19.2819, 268.0262,1,1,0,"Platte - 0"}, // Das ist ID 0 , wird nie benutzt aber lass es hier ;)
{540,-2947.5,-2927.5, 19.2819, 268.0262,1,1,0,"Platte - 1"}, // ID 1
{540,-2957.5,-2927.5, 19.2819, 268.0262,1,1,0,"Platte - 2"}, // ID 2
{540,-2967.5,-2927.5, 19.2819, 268.0262,1,1,0,"Platte - 3"}, // ID 3
{540,-2977.5,-2927.5, 19.2819, 268.0262,1,1,0,"Platte - 4"} // ID 4
};
So nun unter OnGameModeInit schreiben wir jetzt
LoadVehicles(); // Läd alle Fahrzeuge wenn der Server startet
Das können wir aber nicht so stehen lassen also erstellen wir uns ein Stock.
stock LoadVehicles()
{
for(new i = 1; i < sizeof(VehicleInfo); i++) // Läd die Autos
{
if( !dini_Exists( CarFile(i) ) ) // Wenn die Datei nicht existiert.
{
dini_Create(CarFile(i)); // Wird erstellt
printf("%s created!", CarFile(i)); // Die Fahrzeug ID wird in die Console geschrieben
new iStr[10]; // Für das Nummernschild
dini_IntSet(CarFile(i), "model", VehicleInfo[i][vModel]); // Hier wird das Model gesetzt.
dini_FloatSet(CarFile(i), "x", VehicleInfo[i][vPosx]); // Hier die X Position
dini_FloatSet(CarFile(i), "y", VehicleInfo[i][vPosy]); // Die Y Position
dini_FloatSet(CarFile(i), "z", VehicleInfo[i][vPosz]); // Die Z Position
dini_FloatSet(CarFile(i), "a", VehicleInfo[i][vPosa]); // Die A Position
dini_IntSet(CarFile(i), "color1", VehicleInfo[i][vColor1]); // Farbe 1
dini_IntSet(CarFile(i), "color2", VehicleInfo[i][vColor2]); // Farbe 2
dini_Set(CarFile(i), "plate", "Platte"); // Nummernschild
CreateVehicle(VehicleInfo[i][vModel],VehicleInfo[i][vPosx], VehicleInfo[i][vPosy],VehicleInfo[i][vPosz],VehicleInfo[i][vPosa], VehicleInfo[i][vColor1],VehicleInfo[i][vColor2], 500000); //Auto wird erstellt. Die 500000 ist der Respawntimer
format(iStr, sizeof(iStr), "Platte - %d", i); //
SetVehicleNumberPlate(i, iStr); // Hier wird das Nummernschild gesetzt mit der ID vom Fahrzeug.
}
else
{
LoadVehicle(i); // Wenn die Datei doch existiert. Wird das hier geladen
}
}
}
// NOTE: Wenn ihr das jetzt ausführt bekommt ihr jedemenge Errors
stock LoadVehicle(i) // Wenn die .ini Datei existiert wird das hier geladen
{
// Diese ganzen Zeilen hier werden alles laden.
new iStr[10];
VehicleInfo[i][vModel] = dini_Int(CarFile(i), "model");
VehicleInfo[i][vPosx] = dini_Float(CarFile(i), "x");
VehicleInfo[i][vPosy] = dini_Float(CarFile(i), "y");
VehicleInfo[i][vPosz] = dini_Float(CarFile(i), "z");
VehicleInfo[i][vPosa] = dini_Float(CarFile(i), "a");
VehicleInfo[i][vColor1] = dini_Int(CarFile(i), "color1");
VehicleInfo[i][vColor2] = dini_Int(CarFile(i), "color2");
myStrcpy(VehicleInfo[i][vPlate],dini_Get(CarFile(i), "plate"));
CreateVehicle(VehicleInfo[i][vModel],VehicleInfo[i][vPosx], VehicleInfo[i][vPosy],VehicleInfo[i][vPosz],VehicleInfo[i][vPosa], VehicleInfo[i][vColor1],VehicleInfo[i][vColor2], 500000);
format(iStr, sizeof(iStr), "Platte - %d", i);
SetVehicleNumberPlate(i, iStr);
SetVehicleToRespawn(i); // Das Auto wird respawnt
}
So und jetzt der CarFile Stock:
stock CarFile(vID)
{
new fn[20];
format(fn, sizeof(fn), "Cars/Car%d.txt", vID);
return fn;
}
Und zuletzt:
stock myStrcpy(dest[], src[])
{
new i = 0;
while ((dest[i] = src[i])) i++;
}
Danke ich hoffe es gefällt euch und es ist nützlich.
Ihr könnt nun immer was zu dem Enum hinzufügen.
Credits:
Yoran (Tutorial)
NeonReflexe(Übersetzer)