Registrierungsproblem - Dialog erscheint immer wieder

Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!

Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
  • Hallo liebe Skripter/-innen,


    Ich habe nun mein Selfmade Reallife Skript angefangen und wollte das jeder User beim Registrieren ein paar Daten über sich angibt. Am anfang geht alles so wie es soll, aber dann komme ich beim Geburtstag nicht Weiter.
    Außerdem habe ich noch ein Problem wobei ich euch aber danach erst fragen werde, hier erstmal das Register Problem.


    Code:

    if(dialogid == Dia_Register2)
    {
    if(response == 0)
    {
    ShowPlayerDialog(playerid,Dia_RegAbbruch2,DIALOG_STYLE_MSGBOX,"Registrierungsabbruch","Bist du sicher dass du den Registrierungsvorgang Abbrechen möchtest?\n{B90000}Info:{FFFFFF} Somit werden alle Daten gelöscht und du musst dir einen neuen Account erstellen!","Bestätigen","Abbruch");
    }
    if(response == 1)
    {
    new Tag,Monat,Jahr,Year,Month,Day;
    getdate(Year,Month,Day);
    sscanf(inputtext, "p<.>iii" , Tag, Monat, Jahr);
    if(!strlen(inputtext)) return ShowPlayerDialog(playerid,Dia_Register2,DIALOG_STYLE_INPUT,"Registrierungsvorgang 2 |5","Bitte gib nun dein Geburtsdatum an(TT.MM.JJJJ).","Weiter","Abbruch");
    if(!strlen("dd.dd.dddd")) return ShowPlayerDialog(playerid,Dia_Register2,DIALOG_STYLE_INPUT,"Registrierungsvorgang 2 |5","Bitte gib nun dein Geburtsdatum an(TT.MM.JJJJ).","Weiter","Abbruch");
    if(Monat == 1 || 3 || 5 || 7 || 8 || 10 || 12 && Tag > 31) return ShowPlayerDialog(playerid,Dia_Register2,DIALOG_STYLE_INPUT,"Registrierungsvorgang 2 |5","Bitte gib nun dein Geburtsdatum an(TT.MM.JJJJ).","Weiter","Abbruch");
    if(Monat == 4 || 6 || 9 || 11 && Tag > 30) return ShowPlayerDialog(playerid,Dia_Register2,DIALOG_STYLE_INPUT,"Registrierungsvorgang 2 |5","Bitte gib nun dein Geburtsdatum an(TT.MM.JJJJ).","Weiter","Abbruch");
    if(Monat == 2 && Tag > 28) return ShowPlayerDialog(playerid,Dia_Register2,DIALOG_STYLE_INPUT,"Registrierungsvorgang 2 |5","Bitte gib nun dein Geburtsdatum an(TT.MM.JJJJ).","Weiter","Abbruch");
    if(Monat > 12 || Monat < 1) return ShowPlayerDialog(playerid,Dia_Register2,DIALOG_STYLE_INPUT,"Registrierungsvorgang 2 |5","Bitte gib nun dein Geburtsdatum an(TT.MM.JJJJ).","Weiter","Abbruch");
    ShowPlayerDialog(playerid,Dia_Register3,DIALOG_STYLE_LIST,"Registrierungsvorgang 3 |5","Deutschland\nÖsterreich\nSchweiz","Weiter","Abbruch");
    new Spieler[65],SName[MAX_PLAYER_NAME],SMsg[100],SMsg1[100];
    GetPlayerName(playerid,SName,sizeof(SName));
    format(Spieler,65,"/Accounts/%s.Acc",SName);
    dini_Set(Spieler,"Geburtstag",inputtext);
    format(SMsg1,100,"| Ok, du hast also am %s Geburtstag. |",inputtext);
    SendClientMessage(playerid,Weiß,SMsg1);
    if(Monat < Month)
    {
    new sAlter = Year - Jahr;
    dini_IntSet(Spieler,"Alter",sAlter);
    format(SMsg,100,"| Ok, du bist also %d Jahre alt. |",sAlter);
    SendClientMessage(playerid,Weiß,SMsg);
    }
    if(Monat > Month)
    {
    new SAlter = Year - Jahr - 1;
    dini_IntSet(Spieler,"Alter",SAlter);
    format(SMsg,100,"| Ok, du bist also %d Jahre alt. |",SAlter);
    SendClientMessage(playerid,Weiß,SMsg);
    }
    if(Monat == Month && Tag > Day)
    {
    new sGAlter = Year - Jahr;
    dini_IntSet(Spieler,"Alter",sGAlter);
    format(SMsg,100,"| Ok, du bist also %d Jahre alt. |",sGAlter);
    SendClientMessage(playerid,Weiß,SMsg);
    }
    ShowPlayerDialog(playerid,Dia_Register3,DIALOG_STYLE_LIST,"Registrierungsvorgang 3 |5","Deutschland\nÖsterreich\nSchweiz","Weiter","Abbruch");
    }
    }


    Wisst ihr warum andauernd dieser Dialog erscheint?:



    ShowPlayerDialog(playerid,Dia_Register2,DIALOG_STYLE_INPUT,"Registrierungsvorgang 2 |5","Bitte gib nun dein Geburtsdatum an(TT.MM.JJJJ).","Weiter","Abbruch");


    Inputtext ist doch ein String oder habe ich da was falsch Verstanden?


    Meine zweite Frage wäre - Wie kann ich in die Spielerdatei einen String speichern? Also das mit dem Passwort weiß ich bereits. Dafür steht im stock (Hier als Bsp.) Register(playerid,key[])
    Aber wenn ich nun auch das Geschlecht gespeichert haben möchte, wie kann ich das dann dort Speichern und natürlich weiter unten wieder Reseten usw. ? Als ich "Register(playerid,key[],Geschlecht[])" gemacht habe und im Dialog angewendet habe, bekam ich den Error dass das Unvollständig sei. Allerdings kann der Spieler nur eins angeben. Wer weiß dort Rat?


    Ich hoffe das mir jemand Helfen kann und sich die Zeit genommen hat das alles hier durch zu Lesen.



    Mit freundlichen Grüßen
    Famacertech


    Edit: Code eingerückt.

  • if(!strlen(inputtext)) return ShowPlayerDialog(playerid,Dia_Register2,DIALOG_STYLE_INPUT,"Registrierungsvorgang 2 |5","Bitte gib nun dein Geburtsdatum an(TT.MM.JJJJ).","Weiter","Abbruch");
    if(!strlen("dd.dd.dddd")) return ShowPlayerDialog(playerid,Dia_Register2,DIALOG_STYLE_INPUT,"Registrierungsvorgang 2 |5","Bitte gib nun dein Geburtsdatum an(TT.MM.JJJJ).","Weiter","Abbruch");
    if(Monat == 1 || 3 || 5 || 7 || 8 || 10 || 12 && Tag > 31) return ShowPlayerDialog(playerid,Dia_Register2,DIALOG_STYLE_INPUT,"Registrierungsvorgang 2 |5","Bitte gib nun dein Geburtsdatum an(TT.MM.JJJJ).","Weiter","Abbruch");
    if(Monat == 4 || 6 || 9 || 11 && Tag > 30) return ShowPlayerDialog(playerid,Dia_Register2,DIALOG_STYLE_INPUT,"Registrierungsvorgang 2 |5","Bitte gib nun dein Geburtsdatum an(TT.MM.JJJJ).","Weiter","Abbruch");


    Guck dir mal GANZ GENAU an, was du hier für eine scheiße fabriziert hast.


    Dieses "Fehler" passieren, wenn man nicht weiß was man tut.


    Wenn inputtext leer ist -> kommt der Dialog
    Wenn "dd.dd.dddd" = 0 ist, was nie sein kann, kommt der Dialog
    Wenn Monat = 1 ist oder 3 nicht 0 oder 5 nicht 0 oder 7 nicht 0 oder 8 nicht 0 ider 10 nicht 0 oder 12 nicht 0 ist und Tag über 31 ist, kommt der Dialog
    Wenn der Monat = 4 oder 6 nicht 0 oder 9 nicht 0 oder 11 nicht 0 ist und Tag größer 30 ist kommt der Dialog.


    Was also IMMER wirklich IMMER der fall ist.
    Denn 3 etc > 0
    logisch oder?


    halte deine Abfrage die du machst Sinnvoll und denk über deinen Code nach

    "Bevor ich mir Informationen aus der "Bild" hole,
    werde ich anfangen, Wahlergebnisse danach vorauszusagen,
    neben welchen Busch unsere Katze gepinkelt hat."

    Margarete Stokowski

  • Ich fühle mich geohrfeigt!
    Ich war irgendwie abweisend aber habe mir den Code inzwischen 10 bis 20 mal angeschaut, stimmt ist logisch!
    Das liegt warscheinlich an meinen Ferien, 3 Wochen keine Schule und mein Hirn setzt aus.


    Ich bedanke mich recht Herzlich! Und irgendwie ist mir das auch schon peinlich... aber naja, jeder fängt mal klein an :)


    Mit freundlichen Grüßen
    Famacertech