Scripting
===========================================
===========================================
Beispiel 1
Starten von Scripten die nicht im Scriptordner enthalten sind:
Code: Select all
@ START [THIS] -> call script 'Script.bsp' :
wobei Script.bsp nicht existiert
CTD von
SuperVegeta
===========================================
===========================================
Beispiel 2
Endlosschleifen ohne TimeWait:
Code: Select all
while [TRUE]
end
oder
loop:
goto labal loop
Freeze von
SuperVegeta
===========================================
===========================================
Beispiel 3
Globale Scripts nicht darauf überprüfen, ob sie schon mal laufen:
Code: Select all
Hauptsächlich bei setup, init, al.plugin; den Startdatein die dann die eigendliche Plugin aktivieren.
Wenn nun Script-2 gestartet wird ohne auf einen bereits bestehenden Prozess geprüft zu werden, kann es quasi unbegrenzt oft, gleichzeitig aktiviert werden.
Ist Script-2 zusätzlich noch eine Endlosschleife ist die Beschärung
perfekt.
Script-1 (setup, init, al.plugin, startendes Script)
001 $null = null
002 @ START $null -> call script 'Script-2' :
003 return null
Script-2
001 While [TRUE]
002 end
003 return null
Hier ein Lösungsvorschlag:
(die GlobalVar muß natürlich bei jedem anders heißen)
Script-1 (setup, init, al.plugin, startendes Script)
001 $null = null
002 @ START $null -> call script 'Script-2' :
003 return null
Script-2
001 $GV get global variable: name='CHECK'
002 skip if $GV == 1
003 return null
004 set global variable: name='CHECK' value=[TRUE]
Scripts akkumulieren sich und die Performance ist im Keller von
rubbel4
===========================================
===========================================
Beispiel 4
Objekte direkt an Befehle binden:
Code: Select all
Wie ist das gemein:
Wenn man ein bestimmtes Objekt im SE direck über die Galaxy/Sektor Map sich aus dem Uni fischt:
001 $Var = Argon Buster (Select Ship / Galaxymap / Sektormap / Ship)
002 = $Var -> Install 5 Triebwerkstung
Script wird nur temporär gespeichert (solang X3 aktiv ist) von
rubbel4
===========================================
===========================================
Beispiel 5
Entfernen von Objekten ohne Existesprüfung:
Code: Select all
$Object -> destruct: show no explosion=[TRUE/FALSE]
CTD von
SuperVegeta
===========================================
===========================================
Beispiel 6
Selbstzerstörung:
Code: Select all
[PLAYERSHIP]-> destruct: show no explosion=[TRUE/FALSE]
Game Over von
SymTec ltd.
===========================================
===========================================
Beispiel 7
Diese Abschschaltund geht nicht:
Code: Select all
skip if [TRUE]
return null
(wenn das return null die letzte position im Script bildet)
Crash von
SymTec ltd.
===========================================
===========================================
Beispiel 8
setup/init/al.plugin mit Endlosschleifen:
Code: Select all
while [TRUE]
end
oder
loop:
goto labal loop
blockieren das laden weiterer setup init AL Scripte, was wiederum zu fehlen von Kommandos usw führt von
SuperVegeta
===========================================
===========================================
Beispiel 9
Das Spielerschiff in etwas hinein zaubern:
Code: Select all
[PLAYERSHIP]-> put into environment [Objeck ODER anderer Sektor]
HUD Fehler, Unspielbarkeit von
SymTec ltd.;
Fix von
X-Freak Cartman 11.02.2008
===========================================
===========================================
Beispiel 10
Falsche Zahlenberechnungen:
Code: Select all
$i == random value from 0 to 5 -1
$k = 2500 / $i
$i kann also 0,1,2,3,4 sein
$k = ist Nicht Lösbar, wenn $i = 0
vareabel, vom CTD bis garnix, kommt darauf an was mit $k gemacht wird von
SymTec ltd.
===========================================
===========================================
Beispiel 11
Zuviele if <expression> OR/AND <expression>:
Code: Select all
if <expression> OR <expression> OR <expression> OR <expression> OR <expression> OR <expression> OR <expression> OR <expression>
führt zu Problemen, ggf CTD von
SymTec ltd.
===========================================
===========================================
Beispiel 12
Steuerzeichen in Kommentartexten:
005 * Diese Zeichen sind im Comment Text nicht zulaessig:
006 * ><
CTD beim laden von
rubbel4
===========================================
===========================================
Beispiel 13
Globale /Lokale Variabeln setzen und auslesen:
Code: Select all
Der name der Variable wird mit einem "String" festgelegt nicht mit einer Variable
so ist es falsch:
001 $result = get global variable: name=$ship.test
-ein String einfach aus der T-File gelesen, auch falsch
001 $ship.test = sprintf: pageid=$P.ID textid=$T.ID, null, null, null, null, null
002 $result = get global variable: name=$ship.test
so ist es richtig:
001 $result = get global variable: name='ship.test'
oder wenn mit Variable dann:
-einen String in eine Variable stecken
001 $ship.test = 'ship.test'
002 $result = get global variable: name=$ship.test
der Name der Var ist sonst immer null oder soger unbekannt von
Gazz
String aus T-File, bei LoadGame ggf ReadText.... von
SuperVegeta
===========================================
===========================================
Beispiel 14
Schiffe in Stationen/Schiffe stecken OR spawnen:
Code: Select all
26 x {TS} put into environment: {HQ}
26 x {TS} create ship ????; addto (if here a Station or Ship) ........
(mehr als 25 TS an HQ andocken. Die ersten 25 docken an die Klammern, alle anderen intern.
Selbiges gilt für einige GKS, die mehrere Schiffsklassen andocken lassen können, sowie für Werften und ADs)
Es geht darum hierbei vorher die maximalen und momentanen, freien Andockplatze der zu steckenden/spawnenden Schiffs-Classe-Type,
auszulesen und den Kommandoauftrag darauf abzustimmen
Die letzten Schiffe können nicht mehr abdocken von
X-Freak Cartman
===========================================
===========================================