Beiträge von Kaliber

    Also, so funktioniert das mit dem Anti-Cheat nicht. (Aus sehr vielen Gründen)


    Schau dir nochmal ein paar Tutorials an.

    • Um mal das Geheimnis zu lüften, wieso du gekickt wirst. Stell dir vor, du hast 500$ auf der Hand. Jetzt rufst du GivePlayerMoneyEx auf und gibst dir 50$. Jetzt hast du natürlich 550$ auf der Hand, aber er prüft, ob 550 > 50 ist...natürlich ist es das, ergo KICK :D
    • NewMoney[playerid] = GetPlayerMoney(playerid); Das ist absoluter Käse, schon beim Login könnte er sich Geld gecheatet haben und das wäre damit nun legal.
    • NIIIE GetPlayerMoney als Referenz für einen Wert verwenden (nur zur Abfrage, ob er Geld gecheatet hat). Ansonsten musst du eigene Variablen verwenden und diese aus der Datenbank laden. Darum geht es ja, das Geld serverseitig verwalten.

    Hoffe das hilft dir etwas :)


    Google mal Anti-Money cheat samp...da müssteste eigentlich viele Dinge finden :)

    Versuch mal:

    C
    #if SQL_DATABASE == 0
      			MySqlConnection = mysql_connect(LOCAL_SQL_HOST,LOCAL_SQL_USER,LOCAL_SQL_PASS,LOCAL_SQL_DATA);
    		#endif
    		#if SQL_DATABASE == 1
    			MySqlConnection = mysql_connect(SQL_HOST,SQL_USER,SQL_PASS,SQL_DATA);
    			printf("Host: %s,User: %s,Datanbank: %s,Passwort: %s",SQL_HOST,SQL_USER,SQL_DATA,SQL_PASS);
    		#endif

    Nun, testest du das denn auf einer VM oder auf deinem Handy?


    Wenn die Uhrzeit auf der VM oder dem Handy falsch eingestellt ist, nimmt er auch die falsche Uhrzeit.


    Willst du sicher gehen, dass er den aktuellen Timestamp verwendet, musst du dir den über eine Website ziehen.

    Da kamst du mit den Klammern durcheinander, mach es mal so:


    • Bei einer foreach-Schleife loopst du nur durch Spieler die connected sind, da brauchst du das nicht mit IsPlayerConnected überprüfen :)
    • Hmmm...prüf mal mit einem print, ob das überhaupt aufgerufen wird, wenn du das in der Konsole eingibst. (bzw schau mal, ab wann er crasht?)

    Aber nur zur Info:


    • This callback will NOT be called if the server crashes or the process is killed by other means, such as using the Linux kill command or pressing the close-button on the Windows console.

    Also ich vermute, dass wenn ein Spieler online ist und der Server down geht, der Spieler natürlich noch gespeichert werden muss.


    Das Problem ist aber, dass du vermutlich nirgends mysql_close aufrufst.


    Somit endet der Threaded Query im Nirgendwo und das crasht deinen Server.


    Also eventuell unter OnGameModeExit mysql_close verwenden oder einfach alle User Speichern bzw kicken im Befehl, dann mysql_close und dann in so einem 2 Sekunden delay den Server per "gmx" neustarten! :)

    Ist es irgendwie möglich, die niedrigste unbesetzte vehicleid herauszufinden und dann ein Fahrzeug mit dieser vehicleid zu erstellen ?

    Also um es kurz zu machen, ist ein Fahrzeug Slot unbenutzt und du erstellt mit CreateVehicle (oder sonst wie) ein Fahrzeug, dann wird dieser Slot die neue ID des Fahrzeuges automatisch.


    Vehicleids setzen für Fahrzeuge kann man nicht.


    Dennoch kannst du ermitteln, was die niedrigste freie vehicleid ist, mit [wiki]IsValidVehicle[/wiki].

    ist aber auch nur richtig, wenn der Rest des Systems auch so aussieht.

    Das versteh ich jetzt nicht so ganz?


    Zumal dein System fast identisch ist..nur du hast mehr extra Variablen..die man eig nicht bräuchte...



    Oh, mir fällt grade auf, das der Pin doch mit der Karte verknüpft ist, weil im Reallife gehst du ja auch zur Bank und musst den Pin eingeben damit du mit der Karte die mit dem Konto verknüpft ist Geld abheben kannst.

    Was? Das macht doch gar keinen Sinn, was du da redest.


    Lies dir nochmal meinen Text durch.

    Aber der Pin ist doch mit keiner Karte, sondern mit einem Bankkonto verknüpft.


    Ergo wenn Spieler A ein Konto hat, muss er ja erstmal n Pin sich ausdenken, damit er auf sein Konto zugreifen kann.
    Dieser Pin wird ja in der Tabelle von dem Spieler gespeichert ganz normal.


    Erlangt jetzt Spieler B die Karte von Spieler A, dann gilt die Pin logischerweise von Spieler A noch.
    Ergo kannst du die einfach durch die SQLid von Spieler A aus der Datenbank ermitteln.