Random macht Probleme.

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 Leute ich beginne seit 3 Tagen mit Pawn scripting und habe mir die Include ocmd und sscanf2 auch dazu besorgt was die Befehlserstellung erleichtert.


    Ich habe bei folgenden Befehl ein problem:

    Code
    ocmd:nummer(playerid,params[])
    {
        new nummer = random(609) + 400;
        new string[128];
        format(string,sizeof(string),"Die Zufallszahl lautet: %i",nummer);
        SendClientMessage(playerid,COLOR_RED,string);
        return 1;
    }

    Die Obengenannte Variable nummer sofern ich diesen Thread hier verstehe: RE: Zufällige Zahlen
    Sollte mir eigentlich eine Zufallszahl im Bereich 400-609 erstellen...


    Nur leider passiert das Komplette gegenteil Siehe Bild:


    sa-mp-000.jpg


    Im Bild geht er über die 609 etc..

    Mein Problem ist ich möchte eine Zufallszahl von 400-609 erstellen.


    Ich habe auch mal dies probiert

    Code
    new nummer = random(609) - 200;

    Dort geht er sogar ins negative.


    Meine Frage ist hierbei:

    Wie kann ich eine Zufallszahl zwischen 400 und 609 ermitteln.

    Ich hoffe ihr versteht mein Problem und könnt helfen.

    Klartext Passwörter sind immer leicht zu knacken.
    Deswegen gibt es ja Zahlreiche Verschlüsselungsmethoden.

  • random(609) + 400

    Das gibt dir eine Zahl zwischen:


    (0-608)+400...also wird dein Wert zwischen: 400-1008 sein.


    400-609

    Dann musst du:

    400+random(210) verwenden.


    Oder du definierst dir eine einfacherer Funktion (tust du ganz oben ins Skript):


    #define randomEx(%0,%1) (random((%1) - (%0) + 1) + (%0))



    Da kannst du einfach:

    randomEx(400, 609)


    verwenden :)

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • Das würde natürlich helfen ja,
    Dann besteht aber ein weiteres Problem was vllt auftauchen könnte...

    Einige dieser Zahlen sind VehicleID's von Flugzeugen diese sollen natürlich nicht erstellt werden...

    Aber es ist auch schwer diese herauszufiltern oder?


    Erstmal danke :)

    Klartext Passwörter sind immer leicht zu knacken.
    Deswegen gibt es ja Zahlreiche Verschlüsselungsmethoden.

  • Einige dieser Zahlen sind VehicleID's von Flugzeugen diese sollen natürlich nicht erstellt werden

    Nur Flugzeuge oder auch Helikopter?

    Was ist mit Booten?

    Was ist mit Zügen?

    Was ist mit Anhängern? 😅


    Es gibt Utils-Funktionen, da hatte jemand Langeweile und hat das mal alles rausgeschrieben: https://github.com/WoutProvost/samp-util/tree/master


    samp-util/vehicle.inc at master · WoutProvost/samp-util
    A set of useful utility functions for SA-MP. Contribute to WoutProvost/samp-util development by creating an account on GitHub.
    github.com


    C
    new model, type;
    for(;;) { //Dirty
        model = randomEx(400, 609);
        type = GetVehicleModelType(model);
        if(type != VEHICLE_TYPE_PLANE) break;
    }
    //Hier kannst dann model nutzen

    Endlosschleifen sind immer bisschen dirty.

    Besser wäre es, einfach ein konstantes Array zu haben, wo du alle modelids, welche gültig sind speicherst und daraus dann eine zufällige ID wählst.


    Zum Beispiel:


    C
    stock const ValidVehicles[] = {400, 401, 402, 403}; //Oben im Skript
    
    //Dann im Befehl:
    new model = ValidVehicles[random(sizeof(ValidVehicles))];
    //Bekommst direkt ein zufälliges Modell aus dem Array

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • Der Link ist gut denn werd ich mal notieren...

    Mit der Jetzigen funktion die ich habe würde er aber auch Flugzeuge generieren da sie ja im Bereich von 400-609 befinden

    Beispiel bei /nummer erstellt er zb 509 die 509 ist aber ein Flugzeug..


    Warum Brauche ich diese Ermittlung:

    Ich möchte später auf den Server an Zufälligen Positionen Autos erstellen.

    Dies Mach ich ja mit AddStaticVehilceEx


    Nun möchte ich aber nicht für jedes Auto eine ID eintragen sodern er soll sich eine ZufallsID von 400-609 Ermitteln und diese dann in AddStaticVehicle eintragen.

    Wenn aber die erstellte Nummer eine FlugzeugID ist bringt mir das nichts...


    Ich müsste also für jede Flugzeug ID eine separate if bedingung schreiben welches die Nummer auf ein neuen Zufallswert setzt oder so..

    Das wäre zu Umständlich glaub ich..


    Deswegen will ich flugzeuge ausgrenzen etc..


    Upps ihr wart alle Schneller :)


    Das mit dem Stock ist ja richtig nett kann man die IDS auch unterhalb schreiben also sprich


    Code
    stock const ValidVehicles[] = {
    400,
    401,
    402,
    403
    };

    Wäre übersichtlicher als alles in eine Zeile zu packen oder?


    Andere Frage kann ich mit random auch Zufällige Buchstaben erzeugen oder gibs dafür eine Andere Methode?

    Klartext Passwörter sind immer leicht zu knacken.
    Deswegen gibt es ja Zahlreiche Verschlüsselungsmethoden.

    2 Mal editiert, zuletzt von [S4YRP]Nico () aus folgendem Grund: Ein Beitrag von Squall mit diesem Beitrag zusammengefügt.


  • Das mit dem Stock ist ja richtig nett kann man die IDS auch unterhalb schreiben also sprich


    Code
    stock const ValidVehicles[] = {
    400,
    401,
    402,
    403
    };

    Wäre übersichtlicher als alles in eine Zeile zu packen oder?


    Ja es würde auch so gehen :)

  • Gut dann ist das Thema erledigt und ich kann ein Neues erstellen.. :)


    Wenn ich nur wüsste wie ich diesen Thread als erledigt kennzeichnen kann :D

    Klartext Passwörter sind immer leicht zu knacken.
    Deswegen gibt es ja Zahlreiche Verschlüsselungsmethoden.

  • Ganz oben rechts Tehma Bearbeiten ist es dabei.