Name ändern bei Login

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

Es gibt Neuigkeiten! Ab sofort könnt ihr dem Donators Club auf Lebenszeit beitreten.
Weitere Infos im Thema Donator's Club ab heute wieder verfügbar!

  • Name ändern bei Login

    Guten Abed!

    Und zwar möchte ich wenn man auf den Server joint sofern man einen falschen Namen hat der nicht in der DB gespeichert ist, dass man diesen beim Login auf seinen richtigen Namen der er in der DB gespeichert ist ändern kann, soo das das System erkennt, daer Name zum Passwort gehört.

    We stelle ich das am ebsten an?

    So sieht mein Code momentan aus.

    Quellcode

    1. case DIALOG_REGINFO:
    2. {
    3. if(response)return Kick(playerid);
    4. {
    5. new string[200],string1[80];
    6. format(string,sizeof(string),"{FFFFFF}Es wurde kein Account mit diesem Namen in unserer Datenbank gefunden.\nBitte registriere dich auf auf unserer Website {B90000}""%s""{FFFFFF}.",ServerInfo[server_Website]);
    7. format(string1,sizeof(string1),"{B90000}""%s"" {FFFFFF}- Accountinfo",ServerInfo[server_Name]);
    8. ShowPlayerDialog(playerid, DIALOG_REGINFO, DIALOG_STYLE_MSGBOX, string1, string, "{FFFFFF}Ausloggen", "");
    9. }
    10. }
    11. case DIALOG_LOGIN:
    12. {
    13. if(!response)return Kick(playerid);
    14. if(strcmp(inputtext,UserDaten[playerid][user_Name]) || (strlen(inputtext) == 0))
    15. {
    16. new string[128],string1[200];
    17. format(string,sizeof(string), "Der angegebene Name ist falsch");
    18. format(string1,sizeof(string1),"{B90000}""%s"" {FFFFFF}- Login [1/2]",ServerInfo[server_Name]);
    19. SendErrorMessage(playerid,string);
    20. ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_INPUT, string1, "{FFFFFF}Es wurde ein Account mit diesem Namen in unserer Datenbank gefunden.\nBitte gebe deinen Namen ein.","{FFFFFF}Weiter", "{FFFFFF}Abbrechen");
    21. }
    22. else
    23. {
    24. new string2[80];
    25. format(string2,sizeof(string2),"{B90000}""%s"" {FFFFFF}- Login [1 2]",ServerInfo[server_Name]);
    26. return ShowPlayerDialog(playerid, DIALOG_LOGIN1, DIALOG_STYLE_PASSWORD, "{B90000}Austrian Roleplay {FFFFFF}- Login [2/2]", "{FFFFFF}Bitte gebe dein Passwort ein, um mit dem Login fortfahren zu können.","{FFFFFF}Einloggen", "{FFFFFF}Abbrechen");
    27. }
    28. }
    29. case DIALOG_LOGIN1:
    30. {
    31. if(!response)return Kick(playerid);
    32. if(strlen(inputtext) < 6 || strlen(inputtext) > 24)
    33. {
    34. new string[128];
    35. format(string,sizeof(string), "Das angegebene Passwort ist falsch");
    36. SendErrorMessage(playerid,string);
    37. return ShowPlayerDialog(playerid, DIALOG_LOGIN1, DIALOG_STYLE_PASSWORD, "{B90000}Austrian Roleplay {FFFFFF}- Login [2/2]", "{FFFFFF}Bitte gebe dein Passwort ein, um mit dem Login fortfahren zu können.","{FFFFFF}Einloggen", "{FFFFFF}Abbrechen");
    38. }
    39. new query[500];
    40. mysql_format(handle, query, sizeof(query), "SELECT * FROM `user` LEFT JOIN `user_acc` ON user.user_id = user_acc.user_id WHERE `username` = '%e' AND `passwort` = MD5('%e')",UserDaten[playerid][user_Name], inputtext);
    41. mysql_pquery(handle, query, "OnUserLogin", "d", playerid);
    42. return 1;
    43. }
    Alles anzeigen
    Ich denke, am besten wäre es irgendwas bei Dialog Reginfo einzubauen.

    Danke im Voraus

    Allrounder18
  • Du könntest evt. bei
    DIALOG_REGINFO:

    ihn ein Listen_Dialog geben mit den Optionen

    Namen ändern
    Account erstellen(Dann die Info Box nochmal...)
    Abbrechen
    (oder so.)

    und dann kannst du wenn er Name ändern drückt die
    Variable

    PAWN-Quellcode

    1. UserDaten[playerid][user_Name]

    ändern oder wie das System auf dem Server Funktioniert + mit

    PAWN-Quellcode

    1. SetPlayername()
    noch den Namen dann setzen (denk aber daran das du dan n aber beachten musst das er ja nicht immer den Namens setzen kann siehe
    wiki.sa-mp.com/wiki/SetPlayerName)
    (wie gesagt, wie dein System dazu nunmal ist)


    wäre jetzt meine erste Idee, wenn ich etwas falsch verstanden habe bitte mich korrigieren.
    Mfg. Mogly1
    MFG. Mogly1

    Du willst scripten Lernen hier...

    (Grundwissen)TuTorial
    (RP-Server)TuTorial

    (vom Register und Login bis zum eigenen Multichar-system)
  • @Jeffry
    Danke, für die rasche Antwort! Ja, der Spieler soll seinen Namen eingeben mit dem er sich registriert hat. (Registrierung via Forum).

    So nach dem Motto, das System soll merken, wenn der im Serverbrowser eingegebene Name nicht in der DB steht, dass dann ein Feld kommt wo man seinen richtigen Namen eingibt und dieser sich dann aber auch im TAB ändert.

    @Mogly1
    Dein System hört sich zwar Interessant an, passt aber icht ganz zu einer Idee. Danke Trotzdem.

    Heißt wenn sich der Name nicht immer ändert ist mein Vorhaben für die Katz?
  • Allrounder18 schrieb:

    Heißt wenn sich der Name nicht immer ändert ist mein Vorhaben für die Katz?
    Naja, ja und nein da du möchtest das er unter Tab InGame angezeigt wird, musst du irgendwann SetPlayerName nutzen.

    Allrounder18 schrieb:

    wo man seinen richtigen Namen eingibt und dieser sich dann aber auch im TAB ändert.
    ---------------------
    Du kannst ihn aber auch einfach anstatt die DIALOG_REGINFO
    Ein DIALOG_STYLE_INPUT geben wo er sein namen nochmal ändern kann dort dann gleich verglichen wird ob Acc vorhanden wenn ja dann den namen setzen(falls noch nicht auf den Server)

    Aber ich denke es wäre auch nicht schlimm, wenn die Leute neu connecten müssten wenn sie ein falschen Namen haben?(einfach um evt. Bugs dann zu vermeiden :thumbup: )
    Mfg. Mogly1
    MFG. Mogly1

    Du willst scripten Lernen hier...

    (Grundwissen)TuTorial
    (RP-Server)TuTorial

    (vom Register und Login bis zum eigenen Multichar-system)
  • PAWN-Quellcode

    1. case DIALOG_REGINFO:
    2. {
    3. if(response)return Kick(playerid);
    4. {
    5. new string[200],string1[80];
    6. format(string,sizeof(string),"{FFFFFF}Es wurde kein Account mit diesem Namen in unserer Datenbank gefunden.\nBitte registriere dich auf auf unserer Website {B90000}""%s""{FFFFFF}.",ServerInfo[server_Website]);
    7. format(string1,sizeof(string1),"{B90000}""%s"" {FFFFFF}- Accountinfo",ServerInfo[server_Name]);
    8. ShowPlayerDialog(playerid, DIALOG_REGINFO, DIALOG_STYLE_MSGBOX, string1, string, "{FFFFFF}Ausloggen", "");
    9. }
    10. else(strcmp(inputtext,UserDaten[playerid][user_Name]) || (strlen(inputtext) == 0))
    11. {
    12. new string[128],string1[200];
    13. format(string,sizeof(string), "Der angegebene Name ist falsch");
    14. format(string1,sizeof(string1),"{B90000}""%s"" {FFFFFF}- Login [1/2]",ServerInfo[server_Name]);
    15. SendErrorMessage(playerid,string);
    16. ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_INPUT, string1, "{FFFFFF}Es wurde ein Account mit diesem Namen in unserer Datenbank gefunden.\nBitte gebe deinen Namen ein.","{FFFFFF}Weiter", "{FFFFFF}Abbrechen");
    17. SetPlayerName(playerid, UserDaten[playerid][user_Name]);
    18. }
    Alles anzeigen

    Meinst du so ungefähr @Mogly1?
  • PAWN-Quellcode

    1. public OnUserCheck(playerid)
    2. {
    3. new rows;
    4. cache_get_row_count(rows);
    5. ShowLoginScreen(playerid);
    6. if(rows == 0)
    7. {
    8. new string[80],string1[80];
    9. format(string,sizeof(string),"{FFFFFF}Es wurde kein Account mit diesem Namen in unserer Datenbank gefunden.\nBitte registriere dich auf auf unserer Website {B90000}""%s""{FFFFFF}.",ServerInfo[server_Website]);
    10. format(string1,sizeof(string1),"{B90000}""%s"" {FFFFFF}- Accountinfo",ServerInfo[server_Name]);
    11. format(string1,sizeof(string1),"{B90000}""%s"" {FFFFFF}- Login [1/2]",ServerInfo[server_Name]);
    12. ShowPlayerDialog(playerid, DIALOG_REGINFO, DIALOG_STYLE_MSGBOX, string1, string, "{FFFFFF}Ausloggen", "");
    13. }
    14. else
    15. {
    16. new string2[80];
    17. format(string2,sizeof(string2),"{B90000}""%s"" {FFFFFF}- Login [1/2]",ServerInfo[server_Name]);
    18. ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_INPUT, string2, "{FFFFFF}Es wurde ein Account mit diesem Namen in unserer Datenbank gefunden.\nBitte gebe deinen Namen ein.","{FFFFFF}Weiter", "{FFFFFF}Abbrechen");
    19. }
    20. return 1;
    Alles anzeigen
    Hier nutze ic es als erstes.

    Welche Bugs könnten auftreten bei dem System wie du oben meintest?
  • Allrounder18 schrieb:

    Welche Bugs könnten auftreten bei dem System wie du oben meintest?
    Tja aufgrund von SetPlayerName könnte es zu Crashes kommen ausser du beugst dagegen vor mit if abfragen.
    Auch kann nicht jemand auf dem server dann dauernt einen namen prüfen und somit (die datenbank dauernd belasten :) )
    Also ich würde es einfach über das reconencten regeln. Um Bugs vorzubeugen.
    Mfg. Mogly1
    -------------------------------------

    Also, das wäre jetzt meine Grundidee dazu...

    Ob das nun auch so funktioniert ist eine andere Sache
    Spoiler anzeigen

    PAWN-Quellcode

    1. public OnUserCheck(playerid)
    2. {
    3. new rows;
    4. cache_get_row_count(rows);
    5. ShowLoginScreen(playerid);
    6. if(rows == 0)
    7. {
    8. new string[80],string1[80];
    9. format(string,sizeof(string),"{FFFFFF}Es wurde kein Account mit diesem Namen in unserer Datenbank gefunden.\nHast du dich evt. verschrieben? Teste es nochmal ansonsten.\nBitte registriere dich auf auf unserer Website {B90000}""%s""{FFFFFF}.",ServerInfo[server_Website]);
    10. format(string1,sizeof(string1),"{B90000}""%s"" {FFFFFF}- Accountinfo",ServerInfo[server_Name]);
    11. format(string1,sizeof(string1),"{B90000}""%s"" {FFFFFF}- Login [1/2]",ServerInfo[server_Name]);// du überschreibst das 1 format von string1?
    12. SetPVarInt(playerid,"Name_Test",1);
    13. ShowPlayerDialog(playerid, DIALOG_REGINFO, DIALOG_STYLE_INPUT, string1, string, "{FFFFFF}Name prüfen", "{FFFFFF}Ausloggen");
    14. }
    15. else
    16. {
    17. new bool:login=true;
    18. if(GetPVarInt(playerid,"Name_Test"))
    19. {
    20. new name[MAX_PLAYER_NAME+1];
    21. GetPVarString(playerid,"Name_Test_Name",name,sizeof(name));
    22. switch(SetPlayerName(playerid,name)
    23. {
    24. case -1:login=false;
    25. }
    26. }
    27. DeletePVar(playerid,"Name_Test");
    28. DeletePVar(playerid,"Name_Test_Name");
    29. if(login)
    30. {
    31. new string2[80];
    32. format(string2,sizeof(string2),"{B90000}""%s"" {FFFFFF}- Login [1/2]",ServerInfo[server_Name]);
    33. ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_INPUT, string2, "{FFFFFF}Es wurde ein Account mit diesem Namen in unserer Datenbank gefunden.\nBitte gebe deinen Namen ein.","{FFFFFF}Weiter", "{FFFFFF}Abbrechen");
    34. }
    35. else
    36. {
    37. Kick(playerid);//name ist schon auf dem Server Connectet
    38. }
    39. }
    40. return 1;
    41. }
    42. case DIALOG_REGINFO:
    43. {
    44. if(!response)return Kick(playerid);
    45. if(strlen(inputtext)<1 && strlen(inputtext)>MAX_PLAYER_NAME+1)// auch überprüfen The name to set. Must be 1-24 characters long and only contain valid characters (0-9, a-z, A-Z, [], (), $ @ . _ and = only).
    46. {
    47. new string[80],string1[80];
    48. format(string,sizeof(string),"{FFFFFF}Es wurde kein Account mit diesem Namen in unserer Datenbank gefunden.\nHast du dich evt. verschrieben? Teste es nochmal ansonsten.\nBitte registriere dich auf auf unserer Website {B90000}""%s""{FFFFFF}.",ServerInfo[server_Website]);
    49. format(string1,sizeof(string1),"{B90000}""%s"" {FFFFFF}- Accountinfo",ServerInfo[server_Name]);
    50. format(string1,sizeof(string1),"{B90000}""%s"" {FFFFFF}- Login [1/2]",ServerInfo[server_Name]);// du überschreibst das 1 format von string1?
    51. ShowPlayerDialog(playerid, DIALOG_REGINFO, DIALOG_STYLE_INPUT, string1, string, "{FFFFFF}Name prüfen", "{FFFFFF}Ausloggen");
    52. }
    53. else
    54. [
    55. SetPVarString(playerid,"Name_Test_Name",inputtext);
    56. //ein OnUserCheck mit den inputtext durch führen...
    57. }
    58. }
    Alles anzeigen

    MFG. Mogly1

    Du willst scripten Lernen hier...

    (Grundwissen)TuTorial
    (RP-Server)TuTorial

    (vom Register und Login bis zum eigenen Multichar-system)

  • Mein code war nur mein Gedanken gang, da ich dein Script nicht ganz kenne wird dieser code schnipsel nicht Funktionieren :saint:
    (musst noch ausbauen, wenn überhaupt musst ihn nicht mal nutzen, es war nur eine Idee es so zu versuchen :thumbup: )

    Allrounder18 schrieb:

    Wie meinst du das?
    Damit meinte ich, das man wenn man auf namen prüfen klickt immer wieder via. mysql abfragt ob der user schon existiert.

    hehe
    pass das mal bitte so an

    PAWN-Quellcode

    1. if(strlen(inputtext)<1 || strlen(inputtext)>MAX_PLAYER_NAME+1)
    MFG. Mogly1

    Du willst scripten Lernen hier...

    (Grundwissen)TuTorial
    (RP-Server)TuTorial

    (vom Register und Login bis zum eigenen Multichar-system)