Selbstausführende Scripts: Unterschied zwischen den Versionen

Aus X-Lexikon
Zur Navigation springenZur Suche springen
K (Die Seite wurde neu angelegt: „{{TutorialBar2|Globale und lokale Variablen| "X3:Terran Conflict Scripting-Tutorial"|Arrays}} Es ist eigentlich bei fast jedem Scriptpaket notwendig,…“)
 
KKeine Bearbeitungszusammenfassung
Zeile 11: Zeile 11:
So würde zum Beispiel ein Script namens "init.rassenkonflikte" von selbst ausgeführt werden. So einfach ist das. Es gibt aber noch einige...
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===
==Wichtige Hinweise==
====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. '''<br>Wie klappt das?<br>'''
Zeile 25: Zeile 25:
end<br>
end<br>
''<nowiki>*Hier kommen die Aktionen hin, die immer ausgeführt werden sollen.</nowiki>''}}
''<nowiki>*Hier kommen die Aktionen hin, die immer ausgeführt werden sollen.</nowiki>''}}
===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.

Version vom 26. Februar 2011, 16:27 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.