1. News
  2. Community
    1. Dashboard
    2. Mitglieder
      1. Mitgliedersuche
      2. EM-Hub Team
    3. FAQ
  3. Filebase
  4. Lexikon
  5. Img-Upload
  • Anmelden
  • Registrieren
  • Suche
Scripting
  • Alles
  • Scripting
  • Artikel
  • Seiten
  • Forum
  • Dateien
  • Lexikon
  • FAQ
  • Galerie
  • Modding Team
  • Modding Teamseiten
  • Erweiterte Suche
  1. Emergency Hub
  2. Lexikon
  3. EMERGENCY 4
  4. Scripting

Fortgeschrittener Using-Direktiven vereinfachen

  • core.bee
  • 7. Juli 2026 um 23:14
  • 7. Juli 2026 um 23:25
  • 30 mal gelesen
  • 2 Kommentare
  • 1 Using-Direktiven über multiclass inheritance einbinden statt direkt zu callen:

    Beim Thema Scripting gibt es oftmals die Schreibweise von "<Namespace>::<Methode>" --> zum Beispiel: "Game::GetTime()". Mir ist das über die Zeit hinweg ziemlich aufn Zeiger gegangen und deshalb habe ich ein wenig C++-Wissen genutzt und dachte mir einfach den Namespace direkt einzubinden per "using namespace <Name>;". Das ging bis zu einem gewissen Grat, aber dann kam die Emergency 4 interne Problematik dazu, dass das scheinbar nicht unendlich geht. Hier eine generische Funktion mit der einzelnen Vererbung der CommandScript-Klasse inkl using-Anweisung:

    Somit wird aus der vorherigen Schreibweise:

    ... die "neue" Schreibweise ohne den Namespace davor:


    Da aber die neue Schreibweise inklusive Einbindung der Using-Direktive zu dem oben benannten Fehler führt, müssen wir diesen mitigieren. Lange Zeit habe ich das getestet und eine Lösung gefunden:

    Man kann eine Extra-Klasse errichten, die bereits die using-Direktiven in sich trägt und durch multiple Klassenvererbung in C++ ist es möglich diese zu nutzen:

    Vorteil:

    • Ihr müsst nicht ständig <Namespace>::<Methode> eintippen, sondern könnt die neue Schreibweise (s.o.) nutzen.
    • Der Fehler von zu vielen Using-Direktiven taucht nicht mehr auf (zumindest bei meinem mehrfachen extensiven Testing mit rund 10.000 Calls*)**

    :!: ACHTUNG:
    JEDES Script checkt nur innerhalb seiner eigenen Datei, ob diese Klasse vorhanden ist und kann auch nur innerhalb der eigenen Datei diese Klasse finden. Es ist also zwar ein wenig Arbeit alles zusammenzufassen und vielleicht nicht der extrem beste Codingstyle, jedoch spart man sich Arbeit beim Schreiben und jedes object (Methode) kann sowohl von CommandScript als auch eurer eigenen Klasse vererben (siehe oben).

    ** = Ob das bei multiplen .script-Dateien nicht irgendwann doch zu einer Querelei kommt, kann ich zum aktuellen Zeitpunkt noch nicht abschätzen, wird sich aber in meiner Entwicklungsarbeit an Hamburg relativ zügig zeigen. 8|

    Tante EDIT: Dank Antiphonist es möglich über den Pre-Compiler die Klasse sogar global zugreifbar zu machen, d.h. ihr müsst gar nicht einen hässlichen Codingstyle oder eine wilde Einzeldatei erstellen. Es ist somit machbar diese Struktur nun über mehrere Scripte zur Verfügung zu stellen. Bitte meldet euch mal, wenn ihr das ausgiebig getestet habt, ob es nochmal zu einem Fehler kommt!


    * = Sollte das dennoch auftreten, bitte sofort Bescheid geben, denn dann muss ich nochmal schauen, wie man diese Problematik weiter umgehen kann. Vielleicht per Injection oder Sideload oder wie auch immer. :saint:


    LG Korbi

    • Emergency 4
    • EM4
    • Scripting
    • Scripts
    • class
    • namespace
    • using
    • Direktiven
    • CommandScript
    • Vererbung
  • Vorheriger Eintrag Allgemeine CommandScript-Struktur

Kommentare 2

Antiphon
7. Juli 2026 um 23:18

Sehr gut!

Wenn du jetzt den heute veröffentlichten precompiler nutzt kannst du die Klasse in ein .lib Script packen und mittles des default Imports in jedes Script importieren

core.bee
7. Juli 2026 um 23:21

Dann bist du genau der Anteil meines Testings, den ich gebraucht habe - danke für den Hinweis! :D

  • PDF

Inhaltsverzeichnis

  • 1 Using-Direktiven über multiclass inheritance einbinden statt direkt zu callen:

Kategorien

  1. EMERGENCY 5 / 2016 / 2017 / 20 11
    1. Allgemeines 6
    2. Assets 1
    3. Mapping 1
    4. Prefabs 3
    5. Scripting 0
  2. EMERGENCY 4 49
    1. Allgemeines 10
    2. Assets 6
    3. Mapping 4
    4. Prototypes 1
    5. Scripting 2
    6. SDK 26
  3. EMERGENCY 8
    1. Hilfestellungen 7
    2. Problemlösungen 1
  4. Emergency Hub 0
    1. Features 3
      1. Modding Teams 3

Informationen

  1. FAQ
  2. Datenschutzerklärung
  3. Impressum

Community

  1. Letzte Aktivitäten
  2. Mitgliedersuche
  3. Mitglieder
  4. Team

Über uns

Ein Communityprojekt von vielen bekannten Gesichtern aus der EMERGENCY-Szene, bestehend aus ehem. Mitgliedern des Forums, Moddern und Streamern.

Von der Community, für die Community!

Emergency Hub
Lexikon, entwickelt von www.viecode.com
Community-Software: WoltLab Suite™
Style by Foxly