wie ihr wisst scripte ich jetzt schon seit einigen Jahren für die X-Reihe.
Was mir bisher noch nie aufgefallen ist bzw. was ich gestern durch Zufall bemerkt habe ist, dass die globalen Variablen immer Referenzen sind. Ich glaube nicht, dass das alle wissen.
Für alle, die nur so nebenbei scripten eine kurze Erklärung.
Wenn ihr eine globale Variable lokal verarbeitet, werden Änderungen an der "lokalen" Variablen automatisch in der gV gespeichert.
Hierzu ein kurzes Beispiel:
Ihr erzeugt euch an irgend einer Stelle ein Array und speichert dies in einer gV:
Code: Select all
$Testarray = create new array, arguments='Wert1', 'Wert2', 'Wert3', null, null
set global variable: name='xxx.Test.gV' value=$Testarray
Code: Select all
$DatagV = get global variable: name='xxx.Test.gV'
* Ändern der lokalen Werte:
insert 'Neuer erster Wert' into array $DatagV at index 0
Code: Select all
0=Neuer erster Wert
1=Wert1
2=Wert2
3=Wert3
Ein einfaches
Code: Select all
$WorkerArray = $gVArray
Ihr müsst euch eine Arbeitskopie folgendermaßen erzeugen:
Code: Select all
$tmpRacesgV = get global variable: name='plugin.ship.database.races'
$tmpRacesgVCount = size of array $tmpRacesgV
* Array klonen:
dec $tmpRacesgVCount =
$tmpRacesAll = clone array $tmpRacesgV : index 0 ... $tmpRacesgVCount
* Der Eintrag "alle" wird an Position 0 eingefügt:
insert $TextAll into array $tmpRacesAll at index 0

Ich hoffe, dass diese Erklärung den Leuten was bringt, die das erste Mal über diesen "Fallstrick" stolpern. Wie bereits gesagt - mir viel das erst nach mehreren Jahren auf

Gruß
Reflexer