Das sieht eigentlich ganz gut aus, aber wozu die Stühle und Tische davor ?
6/10
Das sieht eigentlich ganz gut aus, aber wozu die Stühle und Tische davor ?
6/10
Für eine 10 Minuten Map ist das in Ordnung.
6/10 Punkte
So ist es richtig:
stock IstSpielerInFraktion(playerid, fraktionsid)
{
if(SpielerDaten[playerid][Fraktion] == fraktionsid) return 1;
return 0;
}
Poste mal die Zeilen 479 - 492 so wie du sie jetzt hast.
Warum benutzt du dini_Get wenn das Integer sind ?
Änder es so um:
SetPlayerScore(playerid,dini_Int(Spieler,"Level");
SpielerDaten[playerid][Adminlevel] = dini_Int(Spieler,"Adminlevel");
SpielerDaten[playerid][Level] = dini_Int(Spieler,"Level");
SpielerDaten[playerid][Fraktion] = dini_Int(Spieler,"Fraktion");
SpielerDaten[playerid][Geld] = dini_Int(Spieler,"Geld");
Übrigens ist der stock SpielerReset auch falsch, weil du den Vergleichsoperator "==" benutzt obwohl du dort einen Wert zugeweist, also wäre "=" richtig.
Änder die if Abfrage:
if(!IsPlayerConnected(id)) return SendClientMessage(playerid, -1, "* Spieler ist nicht Online!");
Du formatierst zuerst den Pfad zur jeweiligen Spielerdatei und setzt dein SetSpawnInfo dann so:
SetSpawnInfo(playerid,0,dini_Int(Pfad,"Skin"),2221.0396,-1145.3312,1025.7969,181.3046,0,0,0,0,0,0);
Du musst die Datei zuerst mit dini_Create oder manuell erstellen.
Solltest du die Methode mit dini_Create benutzen, dann musst du davor zuerst den Ordner FraktionsKasse erstellen.
Poste mal paar Zeilen davor und danach.
return 1 unter den Command.
Was verstehst du unter Selfmade ?
Wenn du ein fertiges Autohaus für dein Selfmade nimmst, dann ist es kein Selfmade mehr.
Dann liegt das Problem wohl im Dateipfad.
Wo formatierst du die data ?
//Edit
Warum setzt du da neue Variablen hin ?
Benutz doch das SpielerInfo Aarray.
Wäre so richtig:
SpielerInfo[playerid][PosX] = dini_Float(data,"PosX");
SpielerInfo[playerid][PosY] = dini_Float(data,"PosY");
SpielerInfo[playerid][PosZ] = dini_Float(data,"PosZ");
SpielerInfo[playerid][PosR] = dini_Float(data,"PosR");
Mit FloatSet speicherst du den Float ab und als dritter Parameter wäre dann der Float.
Also beim abspeichern wäre es so:
dini_FloatSet(data,"PosX",SpielerInfo[playerid][PosX]);
dini_FloatSet(data,"PosY",SpielerInfo[playerid][PosY]);
dini_FloatSet(data,"PosZ",SpielerInfo[playerid][PosZ] );
dini_FloatSet(data,"PosR",SpielerInfo[playerid][PosR]);
Ich habs dir mal verbessert.
Versuch es so :
for(new i=0;i<MAX_VEHICLES;i++)
{
new save[28];
format(Vehicle[i][vBesitzer],MAX_PLAYER_NAME,dini_Get(save,"vBesitzer"));
format(save,sizeof(save),"/Fahrzeuge/%s.ini",Vehicle[i][vBesitzer]);
printf("Debug: Save enthält: %s",save);
Vehicle[i][vModel] = dini_Int(save,"vModel");
Vehicle[i][vX] = dini_Float(save,"vX");
Vehicle[i][vY] = dini_Float(save,"vY");
Vehicle[i][vZ] = dini_Float(save,"vZ");
Vehicle[i][vA] = dini_Float(save,"vA");
Vehicle[i][vColor1] = dini_Int(save,"vColor1");
Vehicle[i][vColor2] = dini_Int(save,"vColor2");
GetVehicleParamsEx(i,engine,lights,alarm,doors,bonnet,boot,objective);
SetVehicleParamsEx(i,0,lights,alarm,doors,bonnet,boot,objective);
MotorAn[i] = 0;
if(dini_Exists(save))
{
CreateVehicle(Vehicle[i][vModel],Vehicle[i][vX],Vehicle[i][vY],Vehicle[i][vZ],Vehicle[i][vA],Vehicle[i][vColor1],Vehicle[i][vColor2],-1);
}
}
//Edit
Damit wäre zwar der Error weg, aber die Fahrzeuge könnten so nicht geladen werden, weil du die Fahrzeuge als BESITZER.ini abspeicherst und in deiner Schleife zuerst den Besitzer des Fahrzeugs in die Variable setzt bevor du den Pfad zur Datei festlegst. Das kann ja so garnicht funktionieren.
Mach am besten eine Abfrage, wenn der der Spieler connected bzw. sich einlogt und überprüfe ob eine Fahrzeugdatei zum jeweiligen Spielernamen exisitert.
Falls ja kannst du das Fahrzeug dann erstellen.
Klammerfehler
format(string,sizeof(string),"Name: %s\nLevel: %d\nBargeld: %i\n",name,GetPlayerScore(playerid),GetPlayerMoney(playerid));
//Edit
Hab dir noch ein paar Sachen in deinem format verbessert.
GetPlayerMoney gibt einen Integer zurück, also kein %s sondern %i und beim Namen willst du ja sicherlich den Spielernamen und nicht die playerid ausgeben.
Steht doch im Error drin
Und wenn man das schon länger macht dann sieht man sowas auf den ersten Blick.
forward autotimer(playerid);
Dann ist der Error weg
Wow, wer hätte das gedacht.
Bayern gewinnt 2:1
Könnte am SpawnPlayer liegen.
Pack einfach ein SetSpawnInfo davor.
Zu deiner 3. Frage :
GetPlayerPos(playerid,sSpieler[playerid][XPosition],sSpieler[playerid][YPosition],sSpieler[playerid][ZPosition]);
Somit sollte der Error weg sein.