Beiträge von Warren


    Daran hatte ich ja garnicht gedacht. ;) Dachte das ist mit neuen Pluginupdates selbstverständlich geworden. Aber, gut zu wissen.



    Jony:
    Du meinst also das es nichts bringt? Möchtest du also bei einem Dump komplette Userdaten an die Öffentlichtkeit geben?


    Dann gib nächstes mal genauere Informationen. Dann kommt dabei auch kein Schwachsinn raus.

    Wenn du Daten von Usern speichern möchtest die eventuell schon Disconnected sind. Würde ich "mysql_query" verwenden weil ich neuer Thread eigentlich unnötig dafür ist.


    Über GetPlayerMoney würde ich auch das Geld nicht abfragen, User können sich das Geld mit s0beit Cheaten und dann abspeichern lassen. ;)


    Und du erstellt nur den Query aber rufst ihn nirgends ab. :) (mysql_query(Handle, Query);)

    Hey Breadfish Community,


    Ich habe seit einigen Tagen ein Problem mit dem Minimieren von SAMP! Nämlich ständig wenn ich alt+tab drücke um das Fenster zu minimieren, bekomme ich ein Blackscreen, und beim erneuten versuch maximiert sich SAMP wieder.
    Mein GTA SA beinhaltet keine Mods, oder sonstige extra Features.
    Kennt da jemand eine Lösung zu diesem Problem?


    Danke schon mal im voraus

    Welches System hast du? Eventuell nicht die aktuellesten Grafiktreiber / DirectX.

    Nicht an den Server gebunden sein, sprich dann zu spielen, wenn ich Lust habe und nicht weil mein Leader sagt wir haben Morgen um 18.00 Uhr Gangfight.

    Das Liegt nicht an den Serverbetreiber, das liegt an den Leader'n der einzelnen Gangs. Du kannst ja bevor du in eine Gang gehst nachfragen ;)

    Ich fände es cool, wenn sich viele Server bisschen an Altis Life orientieren. Weniger Fraktionen, dafür aber Gruppen die man selber erstellen kann.


    Ich glaube wenn es so ein Server geben würde, wäre ich auch mal wieder soweit un sa:mp rauszuholen.

    Obacht, sowas steht bevor. :)

    BlackAce hat das ganze eigentlich komplett und gut zusammengefasst.


    Fast "alle" Projekte die groß angekündigt wurden und mit ihren "Features" angegeben haben, wurden nach 1. Monat dicht gemacht.
    Es fehlten einfach die User die das ganze richtig verwenden konnten, oder einfach keine Lust darauf hatten.
    Ich finde, wenn man zuviel vom Server verrät dann ist es wie wenn ein neues Spiel erscheint und alles Gespoilert wird.


    Man muss den Leuten einfach ein paar Reize bieten... und ihnen auch Bewusst machen das wenn sie lang spielen etwas erreicht haben.


    Würdest du glücklich sein in 2 Tagen ein Millionär zu sein mit dem wissen das es jeder so schnell werden kann?
    Ich denke, du würdest glücklicher sein, wenn du weißt das du hart gearbeitet hat und keiner dir so schnell das Wasser reichen kann.


    Natürlich sollte man auch das Gefühl haben das man mit am Server arbeiten kann, das Ideen umgesetzt werden.
    Viele Server sagen einfach "Nein", zu wirklich guten Features, die User möchten.


    Was bringen einen die besten Systeme wenn der Rest und die Community totaler Bullshit sind?

    Ich würde für solche Sachen die möglichst "dynamisch" sein sollen MySQL verwendet.


    Ansonsten benötigst du deine "for"-Schleife mit der du alle Inhalte der "Datei" ausließt und per sscanf durch gehst. :)
    Jeden einzelnen Spawn speicherst du dann in ein erstellen "Array".



    new Array[32][8]; //32 ist die größe des arrays und 8 die größe der 2. dimension


    ...


    for(new i = 0; i < sizeof(Array); i++)
    {
    sscanf(...)
    }

    Die Überschrift sagt das meiste aus, habe einen normalen 0.3.7 Client und jedesmal wenn ich auf einen R2 Server Joinen möchte
    Crasht das Spiel nach dem LogIn-


    Eigene Dokumente die "gta_sa.set"-Datei löschen und im San Andreas Ordner die Kompatibilität von GTA_SA.exe auf Windows 98 / ME.

    Willkommen zu einem kleinen Tutorial von mir!


    Ich werde euch in diesem Tutorial das Hashen / Salten von Passwörtern in Datenbanken per Pawn näherbringen.
    Das Salten von Passwörtern sorgt heutzutage für mehr Sicherheit bei Datenbankzugriff von fremden Personen.


    Beim Salten von Passwörtern wird ein zufällig erstellter Datensatz zum Verschlüsseln der Passwörter verwendet.
    Somit wird ein nahezu einzigartiger Hash erstellt, der von Crack Datenbanken nicht aufzufinden werden ist. (Beispiel Cracker)


    Nun, man könnte seine Passwörter genau so in SHA Encoden oder andere Encodings verwenden, meiner Meinung nach bringt das Salten aber die meiste Sicherheit.
    Auch für SHA gibt es Datenbanken, die für das Cracken von Strings da sind, um eventuelle Passwörter zu finden.



    Was benötigt ihr?

    • Etwas Ahnung von Pawn und MySQL
    • Natürlich wie oben schon genannt, MySQL oder andere Datenbanken (Dieses Tutorial basiert auf MySQL)
    • Ein bisschen Verständnis was ihr eigentlich tut



    Nun fangen wir doch eigentlich mit dem an was wir benötigen, im sinne von MySQL.
    Ihr solltet eine Tabelle mit mindestens 2 Spalten haben für "Password" und "Salt".


    Wir überlegen nun, wie können wir denn eigentlich das Passwort mit dem Salt in Verbindung bringen.
    Als erstes sollten wir den Salt generieren und allgemein einen Account erstellen lassen.


    Das ist der Schritt in dem wir den Salt in der Datenbank speichern und das Passwort sozusagen mit dem Salt verschlüsseln.
    Dadurch das wir das eigentliche Passwort garnicht in der Datenbank abspeichern, ist es sozusagen unmöglich das Resultat auszulesen.


    Also was benötigen wir für unser Salt? Für mich persönlich reicht es aus einen zufälligen Integer zu verwenden.
    Und kommt dabei das Stichwort "random" in den Kopf, eine Pawnfunktion die uns eine zufällige Ganzzahl zurück gibt.


    Wir lassen uns also mit einem Dialog ein Fenster anzeigen in dem wir unser "Passwort" angeben und verarbeiten.


    if(dialogid == DIALOG_REGISTER){ if(response) { if(strlen(inputtext) > 6) { new Query[256], Salt[64], Password[128]; format(Salt, "%i", random(999999)); //Generieren vom Salt format(Salt, "%s", MD5_Hash(Salt)); //Umwandeln des Salt's in MD5 format(Password, "%s", MD5_Hash(inputtext)); //Passwort in MD5 Hashen format(Password, "%s%s", Salt, Password); //Gehashter Salt und Passwort zusammenfügen format(Password, "%s", MD5_Hash(Password)); //Ingesammt nochmal Hashen mysql_format(Handle, Query, 256, "INSERT INTO users (username, password, salt) VALUES ('%e', '%e', '%e')", Playername(playerid), Password, Salt); mysql_query(Handle, Query, "", ""); //Den Query von oben ausführen } else { SendClientMessage(playerid, -1, "Passwort muss mindestens 6. Zeichen lang sein!"); } } else { Kick(playerid); }}


    Wie im Script mit Kommentaren (//) beschrieben, seht ihr was der Code macht. Wir erstellen unseren Salt mit der Funktion "random".
    Wir fügen den Salt mit dem Passwort zusammen (MD5(Salt) + MD5(Passwort)) und generieren daraus dann noch einmal den Hash. (MD5(MD5(Salt) + MD5(Passwort))
    Das Passwort welches wir mit dem Salt verschlüsselt haben Speichern wir mit dem Salt in die Datenbank.


    Wieso Speichern wir den Salt in die Datenbank? Nun, wir müssen ja auch irgendwie wieder den gleichen Salt zur Authentifizierung bekommen.



    if(dialogid == DIALOG_LOGIN){ if(response) { if(strlen(inputtext) > 6) { new Query[256], Salt[64], Password[128], Final[128]; mysql_format(Handle, strQuery, 256, "SELECT * FROM users WHERE username='%e' LIMIT 1", Playername(playerid)); mysql_query(Handle, strQuery); //Wir holen uns die Spalten des Users in der Datenbank cache_get_field_content(0, "password", Password, Handle, 128); //Lesen das Gesaltete Passwort aus cache_get_field_content(0, "salt", Salt, Handle, 64); //Lesen unseren Salt aus format(Final, 128, "%s%s", Salt, MD5_Hash(inputtext)); //Fügen unser Salt aus der Datenbank mit dem Passwort vom inputtext zusammen format(Final, 128, "%s", MD5_Hash(Final)); //Hashen es ingesammt if(!strcmp(Password, Final)) { /* Wir haben unser Inputtext mit dem Salt aus der Datenbank zusammen gefügt und Gehasht. Nun sollten wir eigentlich den gleichen Hash bekommen der als "Passwort" in der Datenbank steht. Unser Passwort wird sozusagen garnicht erst abgespeichert sondern komplett gehasht. */ } } else { SendClientMessage(playerid, -1, "Passwort muss mindestens 6. Zeichen lang sein!"); } } else { Kick(playerid); }}


    Wir erstellen in dieser Funktion mit unserem Salt aus der Datenbank und unser Inputtext unser Hash der schon in der Datenbank als "Passwort" steht.
    Dadurch das der Salt abgespeichert wurde, können wir diesen Verwenden um das gleiche Endprodukt zu bekommen, welches wir bei der Registration hatten. (Das Passwort)
    Mit diesem Hash machen wir nun den abgleich ob der selbe auch genau in der Datenbank steht. Tut er es, können wir uns erfolgreich einloggen.



    Ich hoffe euch hat das kurze Tutorial gefallen, man sollte es mit etwas Wissen auch ohne Probleme verstehen.
    Bitte lass mir doch ein Feedback da, was ich besser machen kann, und wenn ihr Fragen habt, stellt sie einfach.



    liebe grüße Grab ;)

    Wie Lionel schon gesagt hat, stell einmal die Kompatibilität auf Windows 98 / ME und lösche aus deinen eigenen Dokumenten bei "Grand Theft Auto San Andreas" einmal die "USERSET" oder wie die Datei heißt. (Hab gerade kein GTA Installier)