Diese Seite wurde maschinell übersetzt, sie kann einige Ungenauigkeiten enthalten. Du kannst helfen, indem du eine Übersetzung beisteuerst, alternativ kannst du zur englischen Version.

Einschränkungen des T6 GSC-Compilers#

Der für BO2 verwendete Compiler weist einige Einschränkungen und Fehler auf, auf die Sie höchstwahrscheinlich an einem Punkt stoßen werden. Die meisten davon sind dokumentiert und leicht zu umgehen, wenn Sie nur dem richtigen Weg folgen, um das zu tun, was Sie tun. Schauen wir uns also einige an.

(Credits an JezuzLizard zur Dokumentation dieser)

Endlosschleifen#

  • Sie können keine verschachtelten foreach da es eine Endlosschleife verursachen wird.
  • Sie können nicht verwenden continue; in foreach oder for Schleifen, da dies eine Endlosschleife verursacht.

Betriebspersonal#

Sie sollten beim Vergleichen von Werten, die Bedingungen verwenden, und beim Verwenden von Operatoren immer Klammern verwenden. P.E.M.D.A.S und grundlegende Mathematik wird immer noch wichtig sein, wenn man GSC macht. Wenn Sie sich nicht daran erinnern, kann Ihr Skript durcheinander geraten, je nachdem, was Sie tun.

  • (0 - 1) < 1 ist nicht dasselbe wie 0 - 1 < 1. Der Compiler erkennt und kompiliert es als 0 - (1 < 1).
  • (0 - 1) < 1 wird zurückkehren true (oder 1), weil 1 größer als -1 ist
  • 0 - 1 < 1 wird zurückkehren false (oder 0), weil es die Werte vergleicht und dann subtrahiert.

Wenn Sie es immer noch nicht verstehen, verwenden Sie einfach Klammern, wenn Operatoren beteiligt sind.

Ternary Operators kompiliert, funktioniert aber nicht wie erwartet.
Anstatt einen der beiden angegebenen Werte zurückzugeben, kompiliert der Compiler ihn, um stattdessen Bools zurückzugeben.

If-Anweisungen#

  • Sie können nicht mehr als 2 Bedingungen in einem if Anweisung verbunden durch OR (||) in Klammern eingeschlossene Operatoren.

    Beispiel:

    if ((a || b || c) && d)
    

    Dies wird nicht kompiliert. Sie können dies jedoch als eine der beiden umschreiben:

    if ((a || b) && d || c && d)
    if (a && d || b && d || c && d)
    
  • Sie können OR (||) Operatoren in einem if -Anweisung und in Klammern, wenn sich die Zeichenfolge der Bedingungen nicht auf der linken Seite der if-Anweisung befindet und die Anzahl der Bedingungen auf der rechten Seite nicht mindestens 2 beträgt.

    Beispiel:

    if (a && (b || c))
    

    Dies wird nicht kompiliert. Aber

    if ((b || c) && a)
    

    wird kompiliert in den Fällen:

    if ((a || b) && (c || d))
    

Variablen#

  • Sie können keine variablen Benachrichtigungen/Waittills mit zusätzlichen Ein-/Ausgängen verwenden.

    Beispiel:

    var = "connected";
    level notify(var, player);
    level waittill(var, player);
    

    Dies wird kompiliert. Das Notify/Waittill funktioniert jedoch nicht. Dies ist der einzige Weg, dies zu tun:

    level notify("connected", player);
    level waittill("connected", player);
    

Animtree#

Leider für bestimmte Skripte, die Folgendes tun:
#using_animtree( "animtree" );
ist erforderlich, damit das Skript funktioniert. Skripte, die es enthalten, stürzen beim Start / während der Ausführung ab. Es gibt eine Problemumgehung mit Skriptnamen wie maps/mp/gametypes_zm/_globalentities.gsc und benennen Sie ein extrahiertes, aber nicht dekompiliertes Skript.