Portal-Zone Gothic-Zone Gothic II-Zone Gothic 3-Zone Gothic 4-Zone Modifikationen-Zone Download-Zone Foren-Zone RPG-Zone Almanach-Zone Spirit of Gothic

 

Ergebnis 1 bis 4 von 4
  1. Beiträge anzeigen #1 Zitieren
    Schwertmeister Avatar von Inspirate
    Registriert seit
    Aug 2012
    Beiträge
    959
     
    Inspirate ist offline

    Bitte um eine kurze Scripterklärung

    Was bedeuten diese Zuweisungen:

    CONST INT NPC_FLAG_FRIEND = 1 << 0;
    CONST INT NPC_FLAG_IMMORTAL = 1 << 1;

    Ich kenne es eigentlich z.B. so:

    CONST INT NPC_FLAG_FRIEND = 1;
    CONST INT NPC_FLAG_IMMORTAL = 2;

  2. Beiträge anzeigen #2 Zitieren
    Knight
    Registriert seit
    Aug 2009
    Ort
    Hessen
    Beiträge
    1.487
     
    Cryp18Struct ist offline
    https://de.wikipedia.org/wiki/Bitwei...Verschiebungen
    1 << 0 heißt: Nimm die Zahl eins und verschiebe die bits nicht
    1 << 1 heißt: Nimm die Zahl eins und verschiebe alle bits um eine Position nach links
    1 << 2 heißt: Nimm die Zahl eins und verschiebe alle bits um zwei Positionen nach links

    Eine Verschiebung der bits nach links um eins entspricht einer Verdopplung/Multiplikation mit 2.

  3. Beiträge anzeigen #3 Zitieren
    Dea
    Registriert seit
    Jul 2007
    Beiträge
    10.447
     
    Lehona ist offline
    >> und << sind sogenannte Bitshift-Operatoren und gehören zu den Bitoperatoren, d.h. sie verändern die binäre Darstellung eines Wertes. << ist "bitshift-left" (auch "logical shift left"), d.h. bei a << 3 werden alle Bits von a um 3 Stellen nach links geschoben. Von rechts wird dabei mit Nullen aufgefüllt. Hier mal ein paar Beispielwerte:

    7 = 1112 => 7 << 3 = 1110002 = 56
    5 = 1012 => 5 << 3 = 1010002 = 40

    Man sieht hier auch, dass a << b == a * 2b, aber es gibt natürlich keinen Potenz-Operator in Daedalus. (a wird allerdings immer als vorzeichenlose Zahl betrachtet - also am besten einfach auf die binäre Darstellung achten, die ist eindeutig in Bezug auf die Bit-Operatoren).

    Diese Operatoren sind vor allem für Bitfelder nützlich. Durch die Konstanten wird abgesteckt, welche Bits einer Zahl für welchen Einzelwert zuständig sind, damit kann man viele kleine Werte parallel in einer einzigen Zahl speichern. Zum Beispiel könnte man die beiden Konstanten kombinieren:

    Code:
    npc.flags = NPC_FLAG_FRIEND | NPC_FLAG_IMMORTAL; // Bitfeld-Konstanten kombiniert man mit |
    Dann wäre der NPC sowohl ein Freund als auch unsterblich.

    Ob das Bitfeld einen bestimmten Wert speichert, prüft man dann so:

    Code:
    if ((npc.flags & NPC_FLAG_IMMORTAL) == NPC_FLAG_IMMORTAL) {};

  4. Beiträge anzeigen #4 Zitieren
    Schwertmeister Avatar von Inspirate
    Registriert seit
    Aug 2012
    Beiträge
    959
     
    Inspirate ist offline
    Dank an euch, hab es nun verstanden.

    Sehr hilfreich ist auch das Beispiel zur Kombination und Prüfung. Das werde ich übernehmen.

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
Impressum | Link Us | intern
World of Gothic © by World of Gothic Team
Gothic, Gothic 2 & Gothic 3 are © by Piranha Bytes & Egmont Interactive & JoWooD Productions AG, all rights reserved worldwide