Beiträge von Jeffry

    new query;
    zu:
    new query[256];


    format(huan,sizeof(huan),"[MULTIACCOUNT] Der Spieler %s betreibt Multiaccounting! IP: %s (Übereinstimmung mit %s)", PlayerName(playerid), GetIP(playerid), name);
    zu:
    format(huan,sizeof(huan),"[MULTIACCOUNT] Der Spieler %s betreibt Multiaccounting! IP: %s (Übereinstimmung mit %s (ID: %d))", PlayerName(playerid), GetIP(playerid), name, id);

    Dann solltest du es dringendst lernen.
    Es bringt ja nichts, wenn dir dein Server von jemand anderem geschrieben wird.


    Der Code sollte so aussehen:
    new huan[145];
    for(new i=0, j = GetPlayerPoolSize(); i <= j; i++)
    {
    if(!IsPlayerConnected(i))continue;
    if(IsPlayerNPC(i))continue;
    if(strcmp(GetIP(playerid), GetIP(i), true))continue; // Wenn ip_address noch nicht auf dem Server gefunden wurde!
    //ip_address stimmt mit bereits verbundener IP überein
    format(huan,sizeof(huan),"[MULTIACCOUNT] %s(%d) (IP: %s) wurde vom System erkannt! Multiaccount mit der ID %d (Name: %s, IP: %s)", PlayerName(playerid), playerid, GetIP(playerid), i, PlayerName(i), GetIP(i));
    SendClientMessageToAdmins(huan, GELB);
    print(huan);
    }
    //Check für offline accounts
    format(query, sizeof(query), "SELECT id, name FROM spieler WHERE last_ip = '%s' AND name != '%s' ORDER BY id DESC;", PlayerName(playerid), GetIP(playerid));
    mysql_query(query);
    mysql_store_result();
    new rows = mysql_num_rows(), id, name[MAX_PLAYER_NAME];
    for(new i=0; i<rows; i++)
    {
    mysql_retrieve_row();
    mysql_fetch_field_row(huan,"id"); id = strval(huan);
    mysql_fetch_field_row(name,"name");
    format(huan,sizeof(huan),"[MULTIACCOUNT] Der Spieler %s betreibt Multiaccounting! IP: %s (Übereinstimmung mit %s)", PlayerName(playerid), GetIP(playerid), name);
    SendClientMessageToAdmins(huan, GELB);
    print(huan);
    }
    mysql_free_result();

    Den Text für SendMail musst du noch mit format formatieren, damit der Code drin steht.
    new str[256];
    format(str, sizeof(str), "Vielen Danke für deine Registrierung, um deinen Account zu aktivieren, gib bitte nachfolgenden Code ein : %d", PlayerInfo[playerid][pRegCode]);
    SendMail( "account@script-devilz.to", "account@script-devilz.to", "Script Devilz Account Validierung", "Bitte verifiziere deinen Account", str );


    In die Datenbank musst du den Wert nicht mal speichern, weil der Code ja direkt danach geprüft wird.


    Das anlegen des Kontos darfst du aber erst nach Eingabe des korrekten Codes machen:
    mysql_format(handle, query, sizeof(query), "INSERT INTO spieler_accounts (name, password) VALUES ('%e', MD5('%e'))", PlayerInfo[playerid][pName], inputtext);

    Natürlich sollst du das Query nicht einfach nur in den Code einfügen, das macht ja keinen Sinn.


    format(query, sizeof(query), "SELECT id, name FROM spieler WHERE last_ip = '%s' AND name != '%s' ORDER BY id DESC;", GetName(playerid), GetIP(playerid));
    mysql_query(query);
    mysql_store_result();
    new rows = mysql_num_rows();
    //...Result hier auslesen.


    Beispiel hier:
    http://wiki.sa-mp.com/wiki/MySQL#mysql_retrieve_row


    Das solltest du aber auch bereits in deinem Code an anderen Stellen so oder ähnlich haben, du lässt ja die Stats auch laden.

    Den Code per Random genieren.
    PlayerInfo[playerid][pRegCode] = random(900000) + 100000;


    Das per Query speichern, wie normal auch
    UPDATE spieler SET pregcode = '%d' WHERE name = '%s';


    Und dann im Dialog eingeben lassen und prüfen
    SELECT * FROM spieler WHERE pregcode = '%d' AND name = '%s';

    so wie füge ich ein wen er ihn Checkpoint dann reinfährt das er 10 Sekunden gefreezt wird und die Nachricht bekommt: Das Fahrzeug wird nun entladen.

    Starte bei OnPlayerEnterCheckpoint (Position prüfen / Checkpoint ID falls mit Streamer) einen Timer (SetTimerEx) und zeige die Nachricht entsprechend an.



    so aber 1 Kubikmeter bringt 1.000$ 0.1 Kubikmeter sollten 100$ wert sein.

    gehalt = kubikmeter[playerid] * 100;

    Wenn du mal 10000 registrierte User hast, dann schmiert dir bei diesem Code der Server ab, ob steht für einige Zeit, da du dann beim Connect des Users mindestens 30000 Queries absendest. Selbst wenn jedes Query nur 10ms braucht um zu antworten (was sehr gut wäre), würde der Server 300 Sekunden lang stehen (5 Minuten).
    Danach fliegen wahrscheinlich alle User vom Server wegen Timeout oder ähnlichem.


    Selbst bei 300 registrierten Usern wären es schon mindestens 10 Sekunden Stillstand.



    Du kannst das ganze mit einem einzigen Query abfragen, anstatt jeden Spieler in der Datenbank zu prüfen.

    SQL
    SELECT id, name FROM spieler WHERE last_ip = '%s' AND name != '%s' ORDER BY id DESC;


    So bekommst du alle Konten mit der gleichen IP zurück, das neuste als erstes.

    Schwer zu sagen, was hier der Fehler sein könnte.


    Hast du es mal auf einem leeren Gamemode versucht?
    Sprich, du lädst dir den SA-MP Server nochmal komplett neu runter und fügst in einen leeren Gamemode bei OnPlayerConnect nur das Query ein. Wird das dann aufgerufen?