Problem mit Personalausweis / Geburtsdatum!

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 Leute,


    ich bedanke mich schonmal vorab für die Hilfestellungen und sage, dass ich die ganze Nacht durch gemacht
    habe und etwas müde bin, daher können Rechtschreib- und Verständlichkeitsfehler im Thread entstanden sein.


    ich habe ein kleines Problem mit meinem Antrag für den Personalausweis.
    Ich habe das ganze so gescriptet, dass wenn man das Geburtsdatum leer lässt, folgende Meldung kommen soll:
    "Falsche Angabe beim Tag deines Geburtsdatums!" und der Dialog nochmal erscheinen soll.
    Und wenn man vom Geburtsdatum nur den Tag angibt (z.b.: 12.) folgende Meldung kommen soll:
    "Falsche Angabe beim Monat deines Geburtsdatums!" und der Dialog nochmal erscheinen soll.
    Und wenn man vom Geburtsdatum nur den Tag und den Monat angibt (z.b.: 12.04.) folgende Meldung kommen soll:
    "Falsche Angabe beim Jahr deines Geburtsdatums!" und der Dialog nochmal erscheinen soll.
    Und wenn man das komplette Geburtsdatum angibt (z.b.: 12.04.1994), soll das Geburtsdatum gespeichert werden.


    Es funktioniert auch eigentlich alles, bis auf das, dass wenn man das Jahr auslässt (z.b.: 12.04.), kommt weder die Meldung, noch erscheint der Dialog nochmal.
    Es scheint so, dass der Antrag einfach abgebrochen wird.


    Hier mal die Zeilen, ich weiß momentan kein anderen Rat außer hier nachzufragen.
    case DIALOG_PERSONALAUSWEIS1:
    {
    if(response)
    {
    new day, month, year, DateInfo[3][20], string[256], name[MAX_PLAYER_NAME];
    getdate(year, month, day);
    split(inputtext, DateInfo, '.');
    if(strval(DateInfo[0]) < 01 || strval(DateInfo[0]) > 31 || strval(DateInfo[0]) < 1 || strval(DateInfo[0]) > 31)
    {
    SendClientMessage(playerid,ROT,"Falsche Angabe beim Tag deines Geburtsdatums!");
    ShowPlayerDialog(playerid,DIALOG_PERSONALAUSWEIS1, DIALOG_STYLE_INPUT, "Personalausweis - Antrag [1/2]", "Geben sie wie folgt ihr Geburtsdatum an: dd.mm.yyyy\n(Beispiel: 16.09.1994)!", "Weiter", "Abbrechen");
    return 1;
    }
    if(strval(DateInfo[1]) < 01 || strval(DateInfo[1]) > 12 || strval(DateInfo[1]) < 1 || strval(DateInfo[1]) > 12)
    {
    SendClientMessage(playerid,ROT,"Falsche Angabe beim Monat deines Geburtsdatums!");
    ShowPlayerDialog(playerid,DIALOG_PERSONALAUSWEIS1, DIALOG_STYLE_INPUT, "Personalausweis - Antrag [1/2]", "Geben sie wie folgt ihr Geburtsdatum an: dd.mm.yyyy\n(Beispiel: 16.09.1994)!", "Weiter", "Abbrechen");
    return 1;
    }
    new check = year - strval(DateInfo[2]);
    if(check == year) { return 1; }
    if(strval(DateInfo[1]) > month) { check -= 1; }
    else { if(strval(DateInfo[1]) == month && strval(DateInfo[0]) > day) { check -= 1; } }

    if(strval(DateInfo[2]) < year-100 || strval(DateInfo[2]) > year)
    {
    SendClientMessage(playerid,ROT,"Falsche Angabe beim Jahr deines Geburtsdatums!");
    ShowPlayerDialog(playerid,DIALOG_PERSONALAUSWEIS1, DIALOG_STYLE_INPUT, "Personalausweis - Antrag [1/2]", "Geben sie wie folgt ihr Geburtsdatum an: dd.mm.yyyy\n(Beispiel: 16.09.1994)!", "Weiter", "Abbrechen");
    return 1;
    }
    else
    {
    SpielerInfo[playerid][pBdayTag] = strval(DateInfo[0]);
    SpielerInfo[playerid][pBdayMonat] = strval(DateInfo[1]);
    SpielerInfo[playerid][pBdayJahr] = strval(DateInfo[2]);
    SpielerInfo[playerid][pAlter] = check;
    GetPlayerName(playerid, name, MAX_PLAYER_NAME);
    format(string,sizeof(string),"Bitte überprüfen Sie, ob ihre Angaben korrekt sind!\n\nName: %s\nGeburtsdatum: %d.%d.%d\nAlter %d\n\n\nSind diese Angaben korrekt?",name,strval(DateInfo[0]),strval(DateInfo[1]),strval(DateInfo[2]),check);
    ShowPlayerDialog(playerid,DIALOG_PERSONALAUSWEIS2,DIALOG_STYLE_MSGBOX,"Personalausweis - Antrag [2/2]",string,"Ja","Nein");
    return 1;
    }
    }
    }




    Mit freundlichen Grüßen

    AlphaGen!

    DIVIDE ET IMPERA

  • if(strval(DateInfo[2]) < year-100 || strval(DateInfo[2]) > year || strlen(DateInfo[2]) == 0)
    Probiers mal so

    Funktioniert leider nicht, so hab ichs vorhin schon einmal probiert und gerade eben noch mal. - Aber trotzdem danke.


    Probleme die mit einem Personalausweis bzw. dem Geburtsdatum darauf zutun haben sollte man zum Rathaus gehen bzw. wo du den Perso machst und das dort melden ;)


    Na, heut Morgen mit Peter Lustig geduscht und danach ein Clown gefrühstückt?

    DIVIDE ET IMPERA

  • Funktioniert leider nicht, so hab ichs vorhin schon einmal probiert und gerade eben noch mal. - Aber trotzdem danke.



    Na, heut Morgen mit Peter Lustig geduscht und danach ein Clown gefrühstückt?


    ich hab dir das ganze mal umgeschrieben sollte normal funktionieren

    stock GetAge(playerid,string[])
    {
    new Date[3];
    sscanf(string, "p<.>iii",SpielerInfo[playerid][pBdayTag],SpielerInfo[playerid][pBdayMonat],SpielerInfo[playerid][pBdayJahr] );
    if(SpielerInfo[playerid][pBdayTag] > 31 || SpielerInfo[playerid][pBdayTag] <= 0)return 0;
    else if(SpielerInfo[playerid][pBdayMonat] > 12 || SpielerInfo[playerid][pBdayMonat] <= 0)return 1;
    getdate(Date[0],Date[1],Date[2]);
    if(SpielerInfo[playerid][pBdayJahr] > Date[0] || SpielerInfo[playerid][pBdayJahr] < 1900)return 2;
    SpielerInfo[playerid][pAlter] = (Date[0] - SpielerInfo[playerid][pBdayJahr]) - ((Date[1] < SpielerInfo[playerid][pBdayMonat])? 1 : ((Date[1] == SpielerInfo[playerid][pBdayMonat] && Date[2] < SpielerInfo[playerid][pBdayTag])? 1 : 0));
    return SpielerInfo[playerid][pAlter];
    }


    case DIALOG_PERSONALAUSWEIS1:{
    if(!response)return ShowPlayerDialog(playerid,DIALOG_PERSONALAUSWEIS1, DIALOG_STYLE_INPUT, "Personalausweis - Antrag [1/2]", "Geben sie wie folgt ihr Geburtsdatum an: dd.mm.yyyy\n(Beispiel: 16.09.1994)!", "Weiter", "Abbrechen");
    switch(GetAge(playerid,inputtext)){
    case 0:{
    SendClientMessage(playerid,ROT,"Falsche Angabe beim Tag deines Geburtsdatums!");
    return ShowPlayerDialog(playerid,DIALOG_PERSONALAUSWEIS1, DIALOG_STYLE_INPUT, "Personalausweis - Antrag [1/2]", "Geben sie wie folgt ihr Geburtsdatum an: dd.mm.yyyy\n(Beispiel: 16.09.1994)!", "Weiter", "Abbrechen");
    }
    case 1:{
    SendClientMessage(playerid,ROT,"Falsche Angabe beim Monat deines Geburtsdatums!");
    return ShowPlayerDialog(playerid,DIALOG_PERSONALAUSWEIS1, DIALOG_STYLE_INPUT, "Personalausweis - Antrag [1/2]", "Geben sie wie folgt ihr Geburtsdatum an: dd.mm.yyyy\n(Beispiel: 16.09.1994)!", "Weiter", "Abbrechen");
    }
    case 2:{
    SendClientMessage(playerid,ROT,"Falsche Angabe beim Jahr deines Geburtsdatums!");
    return ShowPlayerDialog(playerid,DIALOG_PERSONALAUSWEIS1, DIALOG_STYLE_INPUT, "Personalausweis - Antrag [1/2]", "Geben sie wie folgt ihr Geburtsdatum an: dd.mm.yyyy\n(Beispiel: 16.09.1994)!", "Weiter", "Abbrechen");
    }
    case default:{
    GetPlayerName(playerid, name, MAX_PLAYER_NAME);
    format(string,sizeof(string),"Bitte überprüfen Sie, ob ihre Angaben korrekt sind!\n\nName: %s\nGeburtsdatum: %d.%d.%d\nAlter %d\n\n\nSind diese Angaben korrekt?",name,SpielerInfo[playerid][pBdayTag],SpielerInfo[playerid][pBdayMonat], SpielerInfo[playerid][pBdayJahr],SpielerInfo[playerid][pAlter]);
    return ShowPlayerDialog(playerid,DIALOG_PERSONALAUSWEIS2,DIALOG_STYLE_MSGBOX,"Personalausweis - Antrag [2/2]",string,"Ja","Nein");
    }
    }
    }


    //edit hab beim splitten mit sscanf die 2 variabeln vergessen

    Einmal editiert, zuletzt von IPrototypeI ()

  • Das hat mich leider auch nicht weiter gebracht, aber danke.
    Ich hab meine Version jetzt noch mal überarbeitet, und scheinbar den Fehler entfernt, nun scheint alles zu klappen.


    Aber trotzdem danke!

    DIVIDE ET IMPERA

    Einmal editiert, zuletzt von [GSD]AlphaGen ()

  • Joar, so sieht das ganze jetzt bei mir aus.
    Ich habs halt noch mal geschrieben und damit wohl den Fehler rausgehauen.


    case DIALOG_PERSONALAUSWEIS1:
    {
    if(response)
    {
    new string[256], day, month, year, DateInfo[3][20], name[MAX_PLAYER_NAME];
    getdate(year, month, day);
    split(inputtext, DateInfo, '.');
    GetPlayerName(playerid, name, MAX_PLAYER_NAME);
    if(strval(DateInfo[0]) < 01 || strval(DateInfo[0]) > 31 || strval(DateInfo[0]) < 1)
    {
    SendClientMessage(playerid,ROT,"Falsche Angabe beim Tag deines Geburtsdatums!"); return ShowPlayerDialog(playerid,DIALOG_PERSONALAUSWEIS1, DIALOG_STYLE_INPUT, "Personalausweis - Antrag [1/2]", "Geben sie wie folgt ihr Geburtsdatum an: dd.mm.yyyy\n(Beispiel: 16.09.1994)!", "Weiter", "Abbrechen");
    } else SpielerInfo[playerid][pBdayTag] = strval(DateInfo[0]);
    if(strval(DateInfo[1]) < 01 || strval(DateInfo[1]) > 12 || strval(DateInfo[1]) < 1)
    {
    SendClientMessage(playerid,ROT,"Falsche Angabe beim Monat deines Geburtsdatums!"); return ShowPlayerDialog(playerid,DIALOG_PERSONALAUSWEIS1, DIALOG_STYLE_INPUT, "Personalausweis - Antrag [1/2]", "Geben sie wie folgt ihr Geburtsdatum an: dd.mm.yyyy\n(Beispiel: 16.09.1994)!", "Weiter", "Abbrechen");
    } else SpielerInfo[playerid][pBdayMonat] = strval(DateInfo[1]);
    if(strval(DateInfo[2]) < year-100 || strval(DateInfo[2]) > year)
    {
    SendClientMessage(playerid,ROT,"Falsche Angabe beim Jahr deines Geburtsdatums!"); return ShowPlayerDialog(playerid,DIALOG_PERSONALAUSWEIS1, DIALOG_STYLE_INPUT, "Personalausweis - Antrag [1/2]", "Geben sie wie folgt ihr Geburtsdatum an: dd.mm.yyyy\n(Beispiel: 16.09.1994)!", "Weiter", "Abbrechen");
    } else SpielerInfo[playerid][pBdayJahr] = strval(DateInfo[2]);
    new check = year - strval(DateInfo[2]);
    if(check == year) { return 1; }
    if(strval(DateInfo[1]) > month) { check -= 1; }
    else { if(strval(DateInfo[1]) == month && strval(DateInfo[0]) > day) { check -= 1; } }
    SpielerInfo[playerid][pAlter] = check;
    format(string,sizeof(string),"Bitte überprüfen Sie, ob ihre Angaben korrekt sind!\n\nName: %s\nGeburtsdatum: %d.%d.%d\nAlter %d\n\n\nSind diese Angaben korrekt?",name,strval(DateInfo[0]),strval(DateInfo[1]),strval(DateInfo[2]),check);
    ShowPlayerDialog(playerid,DIALOG_PERSONALAUSWEIS2,DIALOG_STYLE_MSGBOX,"Personalausweis - Antrag [2/2]",string,"Ja","Nein");
    }
    }

    DIVIDE ET IMPERA