Selbstausführende Scripts: Unterschied zwischen den Versionen

Aus X-Lexikon
Zur Navigation springenZur Suche springen
KKeine Bearbeitungszusammenfassung
KKeine Bearbeitungszusammenfassung
Zeile 14: Zeile 14:
===Nur einmal ausführen===
===Nur einmal ausführen===
Manchmal müssen selbstausführende Scripts zwar jedes Mal starten, aber bestimmte Aktionen nur einmal vornehmen, zum Beispiel das Definieren eines Hotkeys. <br>
Manchmal müssen selbstausführende Scripts zwar jedes Mal starten, aber bestimmte Aktionen nur einmal vornehmen, zum Beispiel das Definieren eines Hotkeys. <br>
Dafür nutzt man normalerweise globale Variablen. Das selbstausführende Script fragt zunächst eine bestimmte globale Variable ab, und prüft deren Wert. Ist er nicht '''"[TRUE]"''', so wird die Aktion ausgeführt und der Wert anschließend auf '''"[TRUE]"''' gesetzt. '''<br>Wie klappt das?<br>'''
Dafür nutzt man normalerweise globale Variablen. Das selbstausführende Script fragt zunächst eine bestimmte globale Variable ab, und prüft deren Wert. Ist er nicht '''"[TRUE]"''', so wird die Aktion ausgeführt und der Wert anschließend auf '''"[TRUE]"''' gesetzt.
 
====Wie klappt das?====
 
Beim ersten Mal ergibt die Abfrage nicht '''"[TRUE]"''', sondern '''"null"''', da es die Globale Variable am Anfang noch gar nicht gibt. Anschließend wird die Globale Variable auf '''"[TRUE]"''' gesetzt.<br>
Beim ersten Mal ergibt die Abfrage nicht '''"[TRUE]"''', sondern '''"null"''', da es die Globale Variable am Anfang noch gar nicht gibt. Anschließend wird die Globale Variable auf '''"[TRUE]"''' gesetzt.<br>
Beim nächsten Mal ergibt die Abfrage '''"[TRUE]"''', da die globale Variable ja eben auf '''"[TRUE]"''' gesetzt wurde. Somit wird das ganze nur einmal ausgeführt, es sei denn, ein anderes Script verändert den Wert der globalen Variable wieder.
Beim nächsten Mal ergibt die Abfrage '''"[TRUE]"''', da die globale Variable ja eben auf '''"[TRUE]"''' gesetzt wurde. Somit wird das ganze nur einmal ausgeführt, es sei denn, ein anderes Script verändert den Wert der globalen Variable wieder.

Version vom 26. Februar 2011, 16:28 Uhr


Es ist eigentlich bei fast jedem Scriptpaket notwendig, ein Script zu haben, dass sich selbst bei Spielbeginn ausführt. Sonst würde keines der Scripte in diesem Scriptpaket wahrscheinlich je ausgeführt werden. Zudem ist es sehr schlecht, dem Benutzer des Scripts später erst einmal erklären zu müssen, wie man ein Script überhaupt aufruft.

Ob Scripte sich selbst ausführen, hängt von ihrem Namen, bzw. von dessen Präfix ab. Folgende Präfixe führen zu einem selbstausführenden Script:

  • setup.
  • init.
  • !setup.
  • !init.

So würde zum Beispiel ein Script namens "init.rassenkonflikte" von selbst ausgeführt werden. So einfach ist das. Es gibt aber noch einige...

Wichtige Hinweise

Nur einmal ausführen

Manchmal müssen selbstausführende Scripts zwar jedes Mal starten, aber bestimmte Aktionen nur einmal vornehmen, zum Beispiel das Definieren eines Hotkeys.
Dafür nutzt man normalerweise globale Variablen. Das selbstausführende Script fragt zunächst eine bestimmte globale Variable ab, und prüft deren Wert. Ist er nicht "[TRUE]", so wird die Aktion ausgeführt und der Wert anschließend auf "[TRUE]" gesetzt.

Wie klappt das?

Beim ersten Mal ergibt die Abfrage nicht "[TRUE]", sondern "null", da es die Globale Variable am Anfang noch gar nicht gibt. Anschließend wird die Globale Variable auf "[TRUE]" gesetzt.
Beim nächsten Mal ergibt die Abfrage "[TRUE]", da die globale Variable ja eben auf "[TRUE]" gesetzt wurde. Somit wird das ganze nur einmal ausgeführt, es sei denn, ein anderes Script verändert den Wert der globalen Variable wieder.

Beispielcode:


Nicht zu lange dauern

Wichtig ist auch, dass alle selbstausführenden Scripts nacheinander laufen. Um nicht andere Scripts aufzuhalten, sollte euer Setup script nicht lange von der Ausführung her dauern. Sobald es länger als 2 Sekunden läuft, empfiehlt sich eher, ein anderes Script aufzurufen, und den Code, der viel Zeit beansprucht, dorthin zu verlagern.