Personalausweisnummer mit Buchstaben und - Erstellen

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 wie mach ich das bei meiner personummer auch buchstaben stehen ?


    In form von:




    S4Y-zufälligerbuchstabe-nummer-zufälligerbuchstabe




    Hab das erstmal so aber kp ob das so geht..




    if (strcmp("/persokaufen", cmd, true) == 0)


    {


    if(PlayerInfo[playerid][pPersoStop] == 1)


    {


    SendClientMessage(playerid, COLOR_GRAD2,"Dein Antrag auf einen Personalausweiß ist nocht nicht fertig. Bitte komm später wieder!");


    return 1;


    }


    if(PlayerToPoint(4.0,playerid,365.2113,173.7801,1008.3828))


    {


    if(AllowPerso[playerid] == 1)


    {


    new PersoZahl = S4Y-+random(z)+random(100000000)+-+random(Z); // Könnte nicht funktionieren ?


    SendClientMessage(playerid, COLOR_NEWS, ".:PersonalAusweis erfolgreich erstellt:.");


    SendClientMessage(playerid, COLOR_GREY, "Tipp /showperso um ihn vorzuzeigen!");


    SendClientMessage(playerid, COLOR_GREY, "Kosten: 500$");


    GivePlayerMoney(playerid,-500);


    PlayerInfo[playerid][pOwnPerso] = 1;


    PlayerInfo[playerid][pPerSonum] = PersoZahl;


    TogglePlayerControllable(playerid, 1);


    return 1;


    }


    else if(AllowPerso[playerid] == 0)


    {


    SendClientMessage(playerid, COLOR_WHITE,"Dein Antrag wurde erfolgreich gestellt. In 15 Minuten wird er fertig sein!");


    SetTimerEx("PersoAntrag", 900000, 0, "d", playerid);


    PlayerInfo[playerid][pPersoStop] = 1;


    TogglePlayerControllable(playerid, 1);


    //SetPlayerPos(playerid, 366.7451,173.8046,1008.3828);


    return 1;


    }


    else


    {


    SendClientMessage(playerid, COLOR_WHITE, "Du bist nicht im Rathaus!");


    return 1;


    }


    }


    return 1;


    }

  • /**
    * Gibt einen String im Format
    * S4Y-{BUCHSTABE}-{ZAHL}-{BUCHSTABE}
    * zurück.
    */
    stock getRandomPersoDingsbums() {
    new output[18];
    format(output, 18, "S4Y-%c-$i-$c", randomChar(), random(100000000), randomChar());
    return output;
    }
    /**
    * Gibt einen zufälligen Buchstaben aus dem Alphabet zurück
    */
    stock randomChar() {
    new charset[53] = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
    return charset[rand(53)];
    }
    Beide funktionen sind völlig ungetestet. Also sag bescheid wenns nicht das gewünschte ergebniss bringt.
    Und denk dran, es wird ein String zurück gegeben, also nutze format o.ä ums in einem anderen String zu speichern.

    The fact is, I am right. And if you think I'm wrong, you are wrong.

  • kleiner trick, damit du immer eine 8 stellige nummer hast:


    statt random(100000000)


    random(90000000) + 10000000

    nanosMalte


    Zitat

    Zitat von Goldkiller




    Obwohl MiniYoda das Wörtchen "Dynamisch" in der Deutschen SA-MP szene mit durchaus fatalen Folgen verbreitete, so hat er dennoch bewiesen, dass er das Handwerk PAWN hervorragend beherrscht. Er gehört definitiv zu den kompetentesten Scriptern die man bei SA-MP.DE finden kann.

  • Geht das auch einfacher inform mit random(z) ? ich bin noch recht neu bzw wieder raus ausm coden




    deswegen weis ich nicht wie ich das da einbinden soll




    Muss ich dann bei meinem code




    new PersoZahl = getRandomPersoDingsbums; // ?

  • getRandomPersoDingsbums gibt einen string zurück, also musst du es so machen:
    new PersoZahl[] = getRandomPersoDingsbums();
    format(PlayerInfo[playerid][pPerSonum], sizeof(PlayerInfo[playerid][pPerSonum]), "%s", PersoZahl);

    The fact is, I am right. And if you think I'm wrong, you are wrong.

  • Wieso geht das nicht ?


    new PersoZahl = random(sizeof(Persoletters)) + random(10000000000000) + random(sizeof(Persoletters2));


    Die augabe sollte dann so sein S4Y-A-39389378-B


    Die werte sind so definiert



    new Persoletters[][27] =
    {
    "S4Y-A-",
    "S4Y-B-",
    "S4Y-C-",
    "S4Y-D-",
    "S4Y-E-",
    "S4Y-F-",
    "S4Y-G-",
    "S4Y-H-",
    "S4Y-I-",
    "S4Y-J-",
    "S4Y-K-",
    "S4Y-L-",
    "S4Y-M-",
    "S4Y-N-",
    "S4Y-O-",
    "S4Y-P-",
    "S4Y-Q-",
    "S4Y-R-",
    "S4Y-S-",
    "S4Y-T-",
    "S4Y-U-",
    "S4Y-V-",
    "S4Y-W-",
    "S4Y-X-",
    "S4Y-Y-",
    "S4Y-Z-"
    };


    new Persoletters2[][27] =
    {
    "-A",
    "-B",
    "-C",
    "-D",
    "-E",
    "-F",
    "-G",
    "-H",
    "-I",
    "-J",
    "-K",
    "-L",
    "-M",
    "-N",
    "-O",
    "-P",
    "-Q",
    "-R",
    "-S",
    "-T",
    "-U",
    "-V",
    "-W",
    "-X",
    "-Y",
    "-Z"
    };