Beiträge von JanFxtw

    Kleiner Tipp: Du kannst an einem vorherigen Punkt abfragen, ob der Spieler im Tutorial oder eingeloggt ist.
    Ich vermute mal ganz wild, dass dieser Beffehl für einen Roleplay Server ist, weshalb das meiste Dialog oder TD -basiert ist, besonders vor dem Login/ während der Registration. So kann man einige Zeilen sparen, auch wenn einige gerne mit ihrer Scriptgröße um ihre Qualitäten werben :P


    Zurück zum Problem,


    Zitat von wiki.sa-mp.com
    • Changing the players' name to the same name but with different character cases (e.g. "John" to "JOHN") will not work.
    • If used in OnPlayerConnect, the new name will not be shown for the connecting player.
    • Passing a null string as the new name will crash the server.
    • Player names can be up to 24 characters when using this function, but when joining the server from the SA-MP server browser, players' names must be no more than 20 and less than 3 characters (the server will deny entry). This allows for 4 characters extra when using SetPlayerName.

    Schau am besten nach, ob "Spieler[playerid][pDeckname]" tatsächlich kein Integer, sondern ein String ist und nicht dem originalen Spielernamen entspricht. Eventuell ist der Server genau deswegen abgestürzt bzw. wird keine Änderung angezeigt.
    Du kannst ja mal eine Clientmessage an dich selbst versenden. Beim DEBUG erfährst du immer Dinge,.. meine Güte.

    Code
    new debugString[128];
    format(debugString), sizeof(debugString), "[DEBUG] Name: %s Skin: %i", Spieler[playerid][pDeckname], Spieler[playerid][pFraktSkin]);
    SendClientMessage(playerid, WEISS, debugString); 
    //alternativ: print(debugString); oder printf(..) verwenden :)

    Jetzt habe ich schon so viel geschrieben, da hab ich doch glatt was übersehen.
    Ich verwende nicht das Query-basierte MYSQL-Zeug von BlueG, auch wenn es sinnvoller wäre, aber ich vermute, dass du den Namen erst nach dem festlegen des Namens lädst. Setze einfach mal das SetPlayerName(blabla..) hinter den mysql_function_query.


    Sorry für die Verwirrung c:
    Trotzdem kannst du dir das mit dem DEBUG zu Herzen nehmen. Kannst du auch in der Konsole ausgeben, macht kein Unterschied, musst du nur immer das Spiel verlassen :)

    Wenn du möchtest, dass es in deiner Variable gespeichert wird (PlayerInfo[playerid][pMail]), musst du unter "enum {...}" einfach der pMail eine maximale Zeichenlänge zuweisen (z.B. pMail[128]) und unter OnDialogResponse dieser Variable den inputtext zuordnen.
    Ich arbeite nicht mit DINI, aber habe mal in den letzten 5Minuten etwas dazu heraus gesucht. Sinnvoll wäre es ebenfalls, pMail darauf zu untersuchen, ob kein Zeichen beinhält(Stichwort isnull), aber möchte dir keine Funktionen in den Script bringen, die du nicht möchtest bzw. nach denen du nicht gefragt hast.


    Code
    public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]) {
        switch(dialogid) {
            case: DIALOG_REGSTEP_3: {
                if(response) {
                    strcat(PlayerInfo[playerid][pMail], inputtext);
                    dini_Set("diespielerdatei.ini", festgelegter Emailspeicherort, PlayerInfo[playerid][pMail]);
                }
            }
        }
    }

    Du kannst gerne etwas probieren, sei kreativ. Du kannst auch erst die Email einspeichern und später laden, z.B. wenn der Spieler das Tutorial beendet. Alternativ eben nur bei Bedarf laden, da eine Email ja nicht jeden Tag und bei jedem Login benötigt und geändert wird.


    Auch würde ich überprüfen, ob ein @ vorhanden ist, aber darüber gab es ja die Tage ein Thema.