Erstes Script - Anlegen einer Variable
Moderators: Moderatoren für Deutsches X-Forum, Scripting / Modding Moderators
Hallo
also ich versuche mich grade an meinem ersten script
und habe direkt das erste problem.
Wie lege ich eine einfache Variable an und weise Ihr einen Wert zu?
gibt es eventuell eine möglichkeit das ganze in ner entwicklungsumgebung/ms editor zu schreiben zu speichern und dann einfahc nur noch einzubinden?
Gruß
also ich versuche mich grade an meinem ersten script
und habe direkt das erste problem.
Wie lege ich eine einfache Variable an und weise Ihr einen Wert zu?
gibt es eventuell eine möglichkeit das ganze in ner entwicklungsumgebung/ms editor zu schreiben zu speichern und dann einfahc nur noch einzubinden?
Gruß
- X2-Illuminatus
- Moderator (Deutsch)
- Posts: 24965
- Joined: Sun, 2. Apr 06, 16:38
Ich habe deinen Beitrag aus dem Thema X2 - Script Befehlsliste - Stand: 1.4 abgetrennt und in ein eigenes geschoben. Bitte keine so alten Themen ausgraben.
***verschoben***
Eine Variable legst du über den Befehl <RetVar/IF><Expression> an, zu finden in den General Commands.
***verschoben***
Eine Variable legst du über den Befehl <RetVar/IF><Expression> an, zu finden in den General Commands.
Nein. Es gibt zwar einen externen Script Editor für X3, ich glaube aber nicht, dass der auch für X2 funktioniert.TrInAdE wrote:gibt es eventuell eine möglichkeit das ganze in ner entwicklungsumgebung/ms editor zu schreiben zu speichern und dann einfahc nur noch einzubinden?
Nun verfügbar! X3: Farnham's Legacy - Ein neues Kapitel für einen alten Favoriten
Die komplette X-Roman-Reihe jetzt als Kindle E-Books! (Farnhams Legende, Nopileos, X3: Yoshiko, X3: Hüter der Tore, X3: Wächter der Erde)
Neuauflage der fünf X-Romane als Taschenbuch
The official X-novels Farnham's Legend, Nopileos, X3: Yoshiko as Kindle e-books!
Die komplette X-Roman-Reihe jetzt als Kindle E-Books! (Farnhams Legende, Nopileos, X3: Yoshiko, X3: Hüter der Tore, X3: Wächter der Erde)
Neuauflage der fünf X-Romane als Taschenbuch
The official X-novels Farnham's Legend, Nopileos, X3: Yoshiko as Kindle e-books!
Danke für die schnelle antwort und hilfe
Eine Frage hab ich allerdings noch
folgendes script will ich schreiben:
$x=138
$station = xenonhub
while $x>0
$station -> add 1000 units of Teladianium
wait 5000 ms
dec $ x
end
kann ich das "xenonhub" einfach so hinschreiben oder muss das irgendwo ausgewählt werden -> wenn ja wo
und das "end" wo findet sich das?
Eine Frage hab ich allerdings noch
folgendes script will ich schreiben:
$x=138
$station = xenonhub
while $x>0
$station -> add 1000 units of Teladianium
wait 5000 ms
dec $ x
end
kann ich das "xenonhub" einfach so hinschreiben oder muss das irgendwo ausgewählt werden -> wenn ja wo
und das "end" wo findet sich das?
- X2-Illuminatus
- Moderator (Deutsch)
- Posts: 24965
- Joined: Sun, 2. Apr 06, 16:38
Welches Spiel spielst du eigentlich? Den Xenon HUB gibt es nicht in X2 dafür aber in X3:TC.
Nachdem du über <RetVar/IF><Expression> den Variablennamen festgelegt hast, kannst du als nächste Eingabe den Inhalt bzw. Wert der Variable festlegen. Dabei kannst du nahezu alle Objekte oder Werte nutzen. Über Var/Station solltest du somit auch den Xenon HUB über die Sektorkarte auswählen können (vorausgesetzt du spielst X3TC).
Das "end" findet sich in den General Commands unter "Flow Control".
Nachdem du über <RetVar/IF><Expression> den Variablennamen festgelegt hast, kannst du als nächste Eingabe den Inhalt bzw. Wert der Variable festlegen. Dabei kannst du nahezu alle Objekte oder Werte nutzen. Über Var/Station solltest du somit auch den Xenon HUB über die Sektorkarte auswählen können (vorausgesetzt du spielst X3TC).
Das "end" findet sich in den General Commands unter "Flow Control".
Nun verfügbar! X3: Farnham's Legacy - Ein neues Kapitel für einen alten Favoriten
Die komplette X-Roman-Reihe jetzt als Kindle E-Books! (Farnhams Legende, Nopileos, X3: Yoshiko, X3: Hüter der Tore, X3: Wächter der Erde)
Neuauflage der fünf X-Romane als Taschenbuch
The official X-novels Farnham's Legend, Nopileos, X3: Yoshiko as Kindle e-books!
Die komplette X-Roman-Reihe jetzt als Kindle E-Books! (Farnhams Legende, Nopileos, X3: Yoshiko, X3: Hüter der Tore, X3: Wächter der Erde)
Neuauflage der fünf X-Romane als Taschenbuch
The official X-novels Farnham's Legend, Nopileos, X3: Yoshiko as Kindle e-books!
-
- Posts: 132
- Joined: Sat, 22. Jan 11, 19:56
Ich hab auch zwei Fragen:
1. Ich will n Skript schreiben, ähnlich wie Teemetalls Flotte, aber ausführlicher und flexibler.
Dazu gehört z.B. auch dass, wenn das gewählte Schiff ein Träger ist, dass dieses dann auch gleich mit Schiffen beladen wird. Ich möchte, dass man bis zu 5 versch. Schiffstypen im M1 per Script geladen haben und diese auswählen kann. Um auf die Anzahl der Schiffe im M1 pro schifftyp zu kommen teile ich die Hangargröße durch die vorher festgelegte Anzahl an Schifftypen im M1.
Genau da liegt mein Problem: Wenn man jetzt z.B. die Argon Colossus als M1 nimmt und dann 3 versch. Sciffstypen gelandet haben will, dann kommt man auf 43,333333 usw. Schiffe pro Schifftyp. Ich will aber, das der Script abrundet sollte das eintreten.
Wie heißt dann die Zeile in der das Steht ?
2. Fragt der Script nach seiner Aktivierung immer nach dem Wert einer Variablen, wenn dieser offen ist ?
1. Ich will n Skript schreiben, ähnlich wie Teemetalls Flotte, aber ausführlicher und flexibler.
Dazu gehört z.B. auch dass, wenn das gewählte Schiff ein Träger ist, dass dieses dann auch gleich mit Schiffen beladen wird. Ich möchte, dass man bis zu 5 versch. Schiffstypen im M1 per Script geladen haben und diese auswählen kann. Um auf die Anzahl der Schiffe im M1 pro schifftyp zu kommen teile ich die Hangargröße durch die vorher festgelegte Anzahl an Schifftypen im M1.
Genau da liegt mein Problem: Wenn man jetzt z.B. die Argon Colossus als M1 nimmt und dann 3 versch. Sciffstypen gelandet haben will, dann kommt man auf 43,333333 usw. Schiffe pro Schifftyp. Ich will aber, das der Script abrundet sollte das eintreten.
Wie heißt dann die Zeile in der das Steht ?
2. Fragt der Script nach seiner Aktivierung immer nach dem Wert einer Variablen, wenn dieser offen ist ?
*hat Heute frei*
Der Scripteditor kennt nur Ganzzahlen, also erhälst Du bei der obigen Rechnung als Ergebnis 43.Wenn man jetzt z.B. die Argon Colossus als M1 nimmt und dann 3 versch. Sciffstypen gelandet haben will, dann kommt man auf 43,333333 usw.
Die Nachkommazahlen werden einfach abgeschnitten, nicht gerundet. Also ein rechnerischer Wert von 43,999999 ist im Scripteditor dann auch 43!
Sorry, ich verstehe die Frage nicht.Fragt der Script nach seiner Aktivierung immer nach dem Wert einer Variablen, wenn dieser offen ist ?
-
- Posts: 132
- Joined: Sat, 22. Jan 11, 19:56
Chris Gi wrote:Sorry, ich verstehe die Frage nicht.
Ich wollte Wissen ob das immer so ist, dass wenn der Wert einer Variablen offen ist (z.B. die Variable X nicht definiert), dass dann der Script von einem verlangt, dass man den Wert festlegt.
In manchen Scripts kann man nach der Aktivierung den Wert einer Variablen festlegen (z.B. In Teemetalls Flotte: Schiffstyp und Anzahl) ohne das dabei der Script geändert wird.
Inzwischen frage ich mich, wie man das hingriegt, dass man offene Variablen nach Aktivierung des Scripts in dem sie stehen festlegen kann.
*hat Heute frei*
Argumente oder (neu in TC) get user input bzw. Custom Menus ^^
PS wenn du TC spielst sollte das hier auch ins entsprechende Forum - denn im SE sind seit X2 viele möglichkeiten dazugekommen (und einige wurden weg gekürzt..)
PS wenn du TC spielst sollte das hier auch ins entsprechende Forum - denn im SE sind seit X2 viele möglichkeiten dazugekommen (und einige wurden weg gekürzt..)
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
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
Wie UniTrader sagt: damit das Script einen nach dem Wert einer Variablen sagt, muss man Argumente anlegen, die dann bei jedem Start des Scripts abgefragt werden (sofern das Script nicht von einem anderen Script aufgerufen wird, da muss das aufrufende Script die Argumente füllen).
Scripte werden nie von selbst nach Variablen fragen, die nicht definiert sind. Sie werden einfach mit dem Wert arbeiten, der dann null (=0) ist.
Wenn man z.B. ein Schiff über den create ship Befehl erzeugen will, indem man z.B. sagt:
hat aber die Variable "Schiffstyp" nicht gefüllt, dann wird das Script dich nicht fragen, was du für ein Schiffstyp willst, sondern einfach mit dem Wert arbeiten. Das resultiert dann darin, dass du einen Argon Mammuth erhälst...
Daher empfiehlt es sich im Allgemeinen, die Argumente, die an ein Script übergeben werden, auch zu prüfen.
Wenn ich also ein Script habe, das ein Schiff erzeugen soll, dann definiere ich den Schiffstyp als Argument Arg.ShipType und beginne mein Script mit:
Damit wird das Script nicht ausgeführt, wenn nicht ein ordentlicher Wert eingeben wird, und es wird auch nicht versehentlich ein Argon Mammut erzeugt, das ich nicht haben will.
Scripte werden nie von selbst nach Variablen fragen, die nicht definiert sind. Sie werden einfach mit dem Wert arbeiten, der dann null (=0) ist.
Wenn man z.B. ein Schiff über den create ship Befehl erzeugen will, indem man z.B. sagt:
Code: Select all
$schiff = create ship: type="Schiffstyp" ...
Daher empfiehlt es sich im Allgemeinen, die Argumente, die an ein Script übergeben werden, auch zu prüfen.
Wenn ich also ein Script habe, das ein Schiff erzeugen soll, dann definiere ich den Schiffstyp als Argument Arg.ShipType und beginne mein Script mit:
Code: Select all
skip if $Arg.ShipType
return null
-
- Posts: 132
- Joined: Sat, 22. Jan 11, 19:56
Ich Spiel X2UniTrader wrote:Argumente oder (neu in TC) get user input bzw. Custom Menus ^^
PS wenn du TC spielst sollte das hier auch ins entsprechende Forum - denn im SE sind seit X2 viele möglichkeiten dazugekommen (und einige wurden weg gekürzt..)
Unter den Argumenten gibt es bestimmt Regeln, damit ein solches auch ausgeführt wird, oder ?Chris Gi wrote:Wie UniTrader sagt: damit das Script einen nach dem Wert einer Variablen sagt, muss man Argumente anlegen, die dann bei jedem Start des Scripts abgefragt werden (sofern das Script nicht von einem anderen Script aufgerufen wird, da muss das aufrufende Script die Argumente füllen).
Scripte werden nie von selbst nach Variablen fragen, die nicht definiert sind. Sie werden einfach mit dem Wert arbeiten, der dann null (=0) ist.
Wenn man z.B. ein Schiff über den create ship Befehl erzeugen will, indem man z.B. sagt:
Code:
$schiff = create ship: type="Schiffstyp" ...
hat aber die Variable "Schiffstyp" nicht gefüllt, dann wird das Script dich nicht fragen, was du für ein Schiffstyp willst, sondern einfach mit dem Wert arbeiten. Das resultiert dann darin, dass du einen Argon Mammuth erhälst...
Daher empfiehlt es sich im Allgemeinen, die Argumente, die an ein Script übergeben werden, auch zu prüfen.
Wenn ich also ein Script habe, das ein Schiff erzeugen soll, dann definiere ich den Schiffstyp als Argument Arg.ShipType und beginne mein Script mit:
Damit wird das Script nicht ausgeführt, wenn nicht ein ordentlicher Wert eingeben wird, und es wird auch nicht versehentlich ein Argon Mammut erzeugt, das ich nicht haben will.Code: Select all
skip if $Arg.ShipType return null
Worauf muss man achten ?
*hat Heute frei*
Eigentlich nicht. Die einzige Regel, die es wirklich gibt, ist, dass nur 10 Argumente übergeben werden.
Natürlich hängt da ein bißchen mehr dran: so ist es sinnvoll, genau zu überlegen, welche Variablen ein Script braucht. Insbesondere wenn das Script vom Spieler aus dem Commandomenü heraus aufgerufen werden soll...
Natürlich hängt da ein bißchen mehr dran: so ist es sinnvoll, genau zu überlegen, welche Variablen ein Script braucht. Insbesondere wenn das Script vom Spieler aus dem Commandomenü heraus aufgerufen werden soll...
-
- Posts: 132
- Joined: Sat, 22. Jan 11, 19:56
poste mal bitte den Code (einfach das Script in nem beliebigen Browser öffnen, da kannst du diesen raus kopieren )
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
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
-
- Posts: 132
- Joined: Sat, 22. Jan 11, 19:56
ok:
Nichts großes, aber das kommt noch...
Code: Select all
Script AAA
Version: 1
for Script Engine Version: 25
Description
Description
Arguments
1: Argument , Var/Ship Type , 'Type'
Source Text
001 $plship = get player ship
002 $plship = $sector -> get sector
003 $xpos = $plship -> get x position
004 $zpos = $plship -> get z position
005 $setypos = $plship -> get y position
006 $ypos = $setypos + 10000
007 $selectedship = create ship: type=$Type owner=Player addto=$sector x=$xpos y=$ypos z=$zpos
008 $maxtradeupgrades = $selectedship -> get max upgrades for upgrade Laderaumerweiterung
009 $numberofshields = $selectedship -> get number of shield bays
010 $maxshieldtype = $selectedship -> get max. shield type that can be installed
011 $maxdriveupgrades = $selectedship -> get max upgrades for upgrade Ruder-Optimierung
012 if $maxdriveupgrades < 10
013 $maxdriveupgrades = 10
014 end
015 $insallations = $selectedship -> install $maxtradeupgrades units of Laderaumerweiterung
016 $insallations = $selectedship -> install $numberofshields units of $maxshieldtype
017 $insallations = $selectedship -> install $maxdriveupgrades units of Ruder-Optimierung
018 return $selectedship
*hat Heute frei*
passiert nichts oder bekommst du vielleicht eher nen Mammut im Sektor null statt des gewählten Schiffes? (wenn es so war -> bitte in zukunft GENAU SO sagen, ungenaue fehlerbeschreibungen ("funktioniert nicht" ) erschweren die Fehlersuche unnötig bzw. machen sie unmöglich..)
Script AAA
Version: 1
for Script Engine Version: 25
Description
Description
Arguments
1: Argument , Var/Ship Type , 'Type'
Source Text
001 $plship = get player ship
002 $plship = $sector -> get sector
003 $xpos = $plship -> get x position
004 $zpos = $plship -> get z position
005 $setypos = $plship -> get y position
006 $ypos = $setypos + 10000
007 $selectedship = create ship: type=$Type owner=Player addto=$sector x=$xpos y=$ypos z=$zpos
008 $maxtradeupgrades = $selectedship -> get max upgrades for upgrade Laderaumerweiterung
009 $numberofshields = $selectedship -> get number of shield bays
010 $maxshieldtype = $selectedship -> get max. shield type that can be installed
011 $maxdriveupgrades = $selectedship -> get max upgrades for upgrade Ruder-Optimierung
012 if $maxdriveupgrades < 10
013 $maxdriveupgrades = 10
014 end
015 $insallations = $selectedship -> install $maxtradeupgrades units of Laderaumerweiterung
016 $insallations = $selectedship -> install $numberofshields units of $maxshieldtype
017 $insallations = $selectedship -> install $maxdriveupgrades units of Ruder-Optimierung
018 return $selectedship
das rot markierte muss gleich sein. (oder besser: die erste Eingabe beim Argument definiert den Variablennamen der zu beginn gesetzt wird..)
ausserdem solltest du die beiden grün markierten Variablennamen mal vertauschen...
Script AAA
Version: 1
for Script Engine Version: 25
Description
Description
Arguments
1: Argument , Var/Ship Type , 'Type'
Source Text
001 $plship = get player ship
002 $plship = $sector -> get sector
003 $xpos = $plship -> get x position
004 $zpos = $plship -> get z position
005 $setypos = $plship -> get y position
006 $ypos = $setypos + 10000
007 $selectedship = create ship: type=$Type owner=Player addto=$sector x=$xpos y=$ypos z=$zpos
008 $maxtradeupgrades = $selectedship -> get max upgrades for upgrade Laderaumerweiterung
009 $numberofshields = $selectedship -> get number of shield bays
010 $maxshieldtype = $selectedship -> get max. shield type that can be installed
011 $maxdriveupgrades = $selectedship -> get max upgrades for upgrade Ruder-Optimierung
012 if $maxdriveupgrades < 10
013 $maxdriveupgrades = 10
014 end
015 $insallations = $selectedship -> install $maxtradeupgrades units of Laderaumerweiterung
016 $insallations = $selectedship -> install $numberofshields units of $maxshieldtype
017 $insallations = $selectedship -> install $maxdriveupgrades units of Ruder-Optimierung
018 return $selectedship
das rot markierte muss gleich sein. (oder besser: die erste Eingabe beim Argument definiert den Variablennamen der zu beginn gesetzt wird..)
ausserdem solltest du die beiden grün markierten Variablennamen mal vertauschen...
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
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
-
- Posts: 132
- Joined: Sat, 22. Jan 11, 19:56
-
- Posts: 132
- Joined: Sat, 22. Jan 11, 19:56
Ich hab noch ne Frage:
Wenn man ein Schiff per Script ausstatten will sieht das ja z.B. aus:
installations = ship -> add 1 units of "Transporter"
installations = usw...
Ich hab ja "installations" definiert dewegen sollte es eig. kein prob. darstellen, die Liste der Items zu wiederholen, indem man nur die Variable nennt (in diesem Fall "installations").
Wie sieht das dann genau aus ?
Oder geht das doch nicht ?
Wenn man ein Schiff per Script ausstatten will sieht das ja z.B. aus:
installations = ship -> add 1 units of "Transporter"
installations = usw...
Ich hab ja "installations" definiert dewegen sollte es eig. kein prob. darstellen, die Liste der Items zu wiederholen, indem man nur die Variable nennt (in diesem Fall "installations").
Wie sieht das dann genau aus ?
Oder geht das doch nicht ?
*hat Heute frei*
der inhalt von $installations gibt in diesem fall lediglich an ob das Hinzufügen erfolgreich war und wenn ja evtl. noch in welchem Umfang... und dazu noch nur für den letzen Befehl zum hinzufügen, da die Var ja jedes mal überschrieben wird
willst du eine Warenliste zum Hinzufügen erstellen musst du mit Arrays und Schleifen arbeiten..
willst du eine Warenliste zum Hinzufügen erstellen musst du mit Arrays und Schleifen arbeiten..
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
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