Frage zu verschiedenen Dingen

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 miteinander,
    nach längerer Pause wollt ich mal wieder ein wenig scripten. Nun bin ich im Wiki über verschiedene Dinge gestolpert, die ich noch nie gesehen habe und auch nicht verstehe.
    enum E_EXAMPLE (>>>= 1)
    {
    E_EXAMPLE_0 = 31,
    E_EXAMPLE_1,
    E_EXAMPLE_2
    }

    Was bedeutet das ">>>="?


    Ein weiterer Punkt: Was bringt mir eine native function?


    Und zum Schluss:
    stock BigEndian:operator=(b)
    {
    return BigEndian:(((b >>> 24) & 0x000000FF) | ((b >>> 8) & 0x0000FF00) | ((b << 8) & 0x00FF0000) | ((b << 24) & 0xFF000000));
    }

    main()
    {
    new
    BigEndian:a = 7;
    printf("%d", _:a);
    }

    stock BigEndian:operator+(BigEndian:a, BigEndian:b)
    {
    return BigEndian:42;
    }

    main()
    {
    new
    BigEndian:a = 7,
    BigEndian:b = 199;
    printf("%d", _:(a + b));
    }

    Da gings ums "overloaden" von Operatoren. Was bringt mir das?
    Hier der Link im Wiki: http://wiki.sa-mp.com/wiki/Keywords:Initialisers
    Danke schon mal im Vorraus für Hilfe und Bemühungen :)

  • Bin nun schon etwas weiter gekommen, mit dem Operator "<<=1" verdopple ich vom Ausgangswert ausgehend.


    enum E_MY_TAG (<<= 1)
    {
    E_MY_TAG_NONE,
    E_MY_TAG_MASK = 0xFF,
    E_MY_TAG_VAL_1 = 0x100,
    E_MY_TAG_VAL_2,
    E_MY_TAG_VAL_3,
    E_MY_TAG_VAL_4
    }

    new
    E_MY_TAG:gMyTagVar = E_MY_TAG_VAL_2 | E_MY_TAG_VAL_3 | (E_MY_TAG:7 & E_MY_TAG_MASK);

    Könnt mir jetzt vllt noch jemand das hier erklären? Wie genau setzt sich hier die Variable gMyTagVar zusammen? Werden einfach alle Werte addiert? Und speziell dieser Teil hier (E_MY_TAG:7 & E_MY_TAG_MASK)Was geschieht hier?
    gMyTagVar beträgt am Schluss übrigens 1543 (0x0607).