Table array erstellen

Hier ist der ideale Ort um über Scripts und Mods für X Rebirth zu diskutieren.

Moderators: Moderators for English X Forum, Scripting / Modding Moderators

User avatar
Marvin Martian
Posts: 3548
Joined: Sun, 8. Apr 12, 09:40
x4

Table array erstellen

Post by Marvin Martian » Mon, 27. Jul 15, 10:47

Irgendwie bin ich zu doof

wie kann man im XR Skripting eine Tabelle erstellen, ich weiß das geht seit ~3.5 dass man text keys verwenden kann, nur wie

Code: Select all

$my_table.$<{$factions.{$i}.id}>.{1}
oder

Code: Select all

$my_table.{$<{$factions.{$i}.id}>}.{1}
funktioniert nicht

oder wie bekommt man variablen Text als Key?

UniTrader
Moderator (Script&Mod)
Moderator (Script&Mod)
Posts: 14571
Joined: Sun, 20. Nov 05, 22:45
x4

Post by UniTrader » Mon, 27. Jul 15, 12:33

Das Script hier ist nen funktionierendes Beispiel wo diese verwendet werden :
https://github.com/UniTrader/UTCommandA ... aptain.xml
Weitere zum lesen aus der table findest du als ut.cac.com.* (die eigentlichen Kommandos)
if not stated otherwise everything i post is licensed under WTFPL

Ich mache keine S&M-Auftragsarbeiten, aber wenn es fragen gibt wie man etwas umsetzen kann helfe ich gerne weiter ;)

I wont do Script&Mod Request work, but if there are questions how to do something i will GLaDly help ;)

User avatar
Marvin Martian
Posts: 3548
Joined: Sun, 8. Apr 12, 09:40
x4

Post by Marvin Martian » Mon, 27. Jul 15, 14:34

danke, bringt mich irgendwie weiter und dann auch wieder garnicht :S

jedenfalls dünkt mir, dass ich damit nichts anfangen kann

UniTrader
Moderator (Script&Mod)
Moderator (Script&Mod)
Posts: 14571
Joined: Sun, 20. Nov 05, 22:45
x4

Post by UniTrader » Mon, 27. Jul 15, 15:37

So, jetzt hab ich zeit in ruhe zu antworten...
Eine leere table kannst du mit der expression
table[]
erstellen, einzelne Einträge werden so zu Beginn definiert:
table[$key=$value, $key2=$value$]
wobei $key (inklusive $) der schlüsselname ist und $value den Wert von diesem setzt (kann auch ne expression sein - gespeichert wird dann das Ergebnis von dieser.
Lesen kannst du aus der table mit der expression $table.$key
andere Arten von keys, z.B zahlen oder Objekte sind auch möglich aber habe ich noch nicht verwendet
if not stated otherwise everything i post is licensed under WTFPL

Ich mache keine S&M-Auftragsarbeiten, aber wenn es fragen gibt wie man etwas umsetzen kann helfe ich gerne weiter ;)

I wont do Script&Mod Request work, but if there are questions how to do something i will GLaDly help ;)

User avatar
Marvin Martian
Posts: 3548
Joined: Sun, 8. Apr 12, 09:40
x4

Post by Marvin Martian » Mon, 27. Jul 15, 16:22

nur wie erstelle ich den _Key_ automatisch mit Hilfe von Variablen?
table[ ${$list.{$1} = 1337]
geht glaube ich nicht

wenn ich $key = $schlüssel und $content = $var machen muss ist der ganze Table Kram für mich in dem Fall die Steigerung von flüssig

dann kann auch auch gleich verschachtelte Numids verwenden und
$mein_array.{$i}.{1} = $schlüssel
$mein_array.{$i}.{2} = $var
machen, statt $mein_array.$schlüssel ist es dann eben $mein_array.{$i}.{1} == $andere_var

UniTrader
Moderator (Script&Mod)
Moderator (Script&Mod)
Posts: 14571
Joined: Sun, 20. Nov 05, 22:45
x4

Post by UniTrader » Mon, 27. Jul 15, 16:53

hier noch mehr Infos dazu (auch weitere posts im Topic beachten)

und man kann die table auch nachträglich ändern, siehe verlinkter Post (Allerdings ohne konkrete beispiele)

und in meinem beispiel habe ich 2 Schlüssel definiert, $key und $key2, um zu zeigen wie man diese trennt ;)

wenn du objekte oder Zahlen als key verwenden wills machst du das bei der Definition so (beispiel mit allen 3 möglichkeiten für Keys, die resultierenden Values sind alle Strings) - und so wie ich dich verstanden habe willst du nen String als key, was laut o.g. erklärunga auch gehen sollte (4. Eintrag den ich in dieser beispiel-table setze)

<set_value name="$table" exact="table[$key='Key',{$object}='Objekt',{1}='Number',{'$String'}='String']/>

Lesen kannst du diese Werte so (ich nehm jetzt mal show_notification als beispiel, kann auch wo anders her genommen werden)
<show_notification caption="$table.$key"/>
<show_notification caption="$table.{$object}"/>
<show_notification caption="$table.{1}"/>
<show_notification caption="$table.{'$String'}"/>

und nachträgliches modifizieren geht mit <set_value/> und <remove_value/>, hier füg ich mal nen 2. Key als String ein, gebe ihn als notification aus, prüfe ihn auf existenz und wenn ja und entferne ich ihn wieder:
<set_value name="$table.{'$String2'}" exact="'another String'"/>
<show_notification caption="$table.{'$String2'}"/>
<do_if value="$table.{'$String2'}?">
<remove_value name="$table.{'$String2'}"/>
</do_if>

EDIT:Korrektur: Key-Strings müssen mit $ beginnen!
Ausserdem sind $table.{'$key'} und $table.$key gleichbedeutend.. aber das änder ich jetzt nicht mehr..
if not stated otherwise everything i post is licensed under WTFPL

Ich mache keine S&M-Auftragsarbeiten, aber wenn es fragen gibt wie man etwas umsetzen kann helfe ich gerne weiter ;)

I wont do Script&Mod Request work, but if there are questions how to do something i will GLaDly help ;)

Return to “X Rebirth - Scripts und Modding”