Beiträge von Jeffry

    Die Befehle so:


    Bei OnPlayerConnect und dort wo der Auftrag beendet wird:

    C
    format(PlayerInfo[playerid][p_Auftraggeber], MAX_PLAYER_NAME, "");


    Im Enum dann das p_AuftraggeberID ändern zu:

    C
    p_Auftraggeber[MAX_PLAYER_NAME],


    Dann speichert es den Name unabhängig davon, ob der Auftraggeber online ist oder nicht.

    Das Verstehe ich nicht ganz, wenn die Fahrzeug ID gespeichert wird, wieso sollte die sich ändern?

    Erstellst du die Fahrzeuge alle nur statisch beim Start des Servers, oder erstellst du auch welche während der Server läuft?
    Wenn du nämlich zwischendrin welche erstellst, dann kann es ja sein, dass mal die einen zuerst erstellt werden und mal die anderen, daher passen dann die IDs nicht mehr mit der gespeicherten ID überein, ebenso wenn du mal eins löschst.


    Wäre es denn nicht sinnvoller, wenn man es so macht:
    Man steigt in ein Fahrzeug ein und kauft es, dann setzt es das Fahrzeug zurück zum Spawn und erstellt an gleicher Stelle das gleiche Fahrzeug erneut. Dessen Daten kann man dann speichern und jedes mal wieder erstellen, wenn der Spieler in den Server kommt.
    Wäre das eine Möglichkeit? Das würde Fehler ausschließen.



    Welche Fehler könnten sonst noch auftreten?

    Das kann ich nicht genau sagen, was da alles noch auftreten kann. Das kann alles mögliche sein, das kommt immer drauf an wie der Rest vom Gamemode aufgebaut ist.

    Im Register stock steht vor dem VALUES ein Komma, das muss weg.


    format(query, sizeof(query), "INSERT INTO `Accounts` (`Name`, `Passwort`) VALUES ('%s', '%s')", SpielerName(playerid), key);

    Ich habe mir das System mal angeschaut. Wirklich toll ist das System ja nicht, denn, so wie ich das verstanden habe, kann man ein x-beliebiges Fahrzeug kaufen, welches bereits existiert. Im Prinzip könnte man das natürlich speichern, wem das Fahrzeug gehört, aber wenn sich die Fahrzeug-IDs ändern, dann stimmt nichts mehr.


    Je nach dem wie du dir das System vorstellst kann man mit entsprechendem Aufwand natürlich etwas machen, aber mit diesem Code finde ich persönlich es nicht sinnvoll, eine Speicherung einzubauen, denn das wird irgendwann auf Fehler laufen.


    Außerdem kann es bei diesem System dazu kommen, dass irgendwann alle Fahrzeuge im Server gekauft worden sind, wenn dann ein neuer Spieler kommt, dann kann er kein einziges Fahrzeug fahren.

    Erstelle bitte einen neuen Thread und poste dort den Befehl und die anderen Codes die noch zu dem System gehören.
    Wenn ich mich richtig erinnere, dann hatte ich daran schon mal was gemacht, das müsste man dann wahrscheinlich auch etwas ändern.

    Dann versuche es folgendermaßen:


    Bei OnGameModeInit nur:

    C
    loadcars();


    Und dann diesen stock:


    Dann sollte es eigentlich passen, und die Performance ist zudem wesentlich besser, da nur ein einziges Query ausgeführt wird, anstatt 27 mal die Anzahl der Fahrzeuge Queries.

    Versuche es so:

    Das scheint wohl nicht zu klappen. Versuche es mal indem du es zur Speicherung hinzufügst.


    C
    savePlayer(playerid)
    {
    	if(sInfo[playerid][eingeloggt]==0)return 1;
    	//Speichern Level,Geld
    	new query[128];
    	format(query,sizeof(query),"UPDATE user SET level='%i',money='%i', skin='%i' WHERE id='%i'",sInfo[playerid][level],GetPlayerMoney(playerid),GetPlayerSkin(playerid), sInfo[playerid][id]);
    	mysql_function_query(dbhandle,query,false,"","");
    	return 1;
    }

    So:

    Gegebenenfalls musst du dann auch den Code bei OnDialogResponse anpassen.

    Versuche es so: