Erstes Script - Anlegen einer Variable

Hier ist der ideale Ort um über Scripts und Mods für X²: Die Bedrohung zu diskutieren.

Moderators: Moderatoren für Deutsches X-Forum, Scripting / Modding Moderators

TrInAdE
Posts: 349
Joined: Tue, 29. Nov 05, 13:18
x3

Post by TrInAdE » Wed, 9. Feb 11, 22:37

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ß

User avatar
X2-Illuminatus
Moderator (Deutsch)
Moderator (Deutsch)
Posts: 24965
Joined: Sun, 2. Apr 06, 16:38
x4

Post by X2-Illuminatus » Wed, 9. Feb 11, 23:01

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.

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?
Nein. Es gibt zwar einen externen Script Editor für X3, ich glaube aber nicht, dass der auch für X2 funktioniert.
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!

TrInAdE
Posts: 349
Joined: Tue, 29. Nov 05, 13:18
x3

Post by TrInAdE » Wed, 9. Feb 11, 23:13

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?

User avatar
X2-Illuminatus
Moderator (Deutsch)
Moderator (Deutsch)
Posts: 24965
Joined: Sun, 2. Apr 06, 16:38
x4

Post by X2-Illuminatus » Wed, 9. Feb 11, 23:19

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".
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!

TrInAdE
Posts: 349
Joined: Tue, 29. Nov 05, 13:18
x3

Post by TrInAdE » Thu, 10. Feb 11, 00:44

ich spiele x3 tc habe anfangs in den x2 bereich gepostet da dort die liste war zu der ich fragen hatte

TrInAdE
Posts: 349
Joined: Tue, 29. Nov 05, 13:18
x3

Post by TrInAdE » Thu, 10. Feb 11, 01:05

ah wunderbar das script funktioniert so langsam versteh ich den script editor
ist doch schon bisschen was anderes als c++ oder assembler

nochmals danke

Couchracer
Posts: 132
Joined: Sat, 22. Jan 11, 19:56

Post by Couchracer » Tue, 22. Feb 11, 19:11

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 ?
*hat Heute frei*

User avatar
Chris Gi
Posts: 960
Joined: Wed, 20. Sep 06, 09:57
x3tc

Post by Chris Gi » Wed, 23. Feb 11, 17:17

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.
Der Scripteditor kennt nur Ganzzahlen, also erhälst Du bei der obigen Rechnung als Ergebnis 43.
Die Nachkommazahlen werden einfach abgeschnitten, nicht gerundet. Also ein rechnerischer Wert von 43,999999 ist im Scripteditor dann auch 43!
Fragt der Script nach seiner Aktivierung immer nach dem Wert einer Variablen, wenn dieser offen ist ?
Sorry, ich verstehe die Frage nicht.
--------------------------------

[ external image ]

Couchracer
Posts: 132
Joined: Sat, 22. Jan 11, 19:56

Post by Couchracer » Wed, 23. Feb 11, 19:00

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*

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

Post by UniTrader » Wed, 23. Feb 11, 19:50

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..)
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
Chris Gi
Posts: 960
Joined: Wed, 20. Sep 06, 09:57
x3tc

Post by Chris Gi » Thu, 24. Feb 11, 10:57

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: Select all

$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:

Code: Select all

skip if $Arg.ShipType
    return null
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.
--------------------------------

[ external image ]

Couchracer
Posts: 132
Joined: Sat, 22. Jan 11, 19:56

Post by Couchracer » Thu, 24. Feb 11, 16:35

UniTrader 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..)
Ich Spiel X2 :P
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:

Code: Select all

skip if $Arg.ShipType
    return null
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.
Unter den Argumenten gibt es bestimmt Regeln, damit ein solches auch ausgeführt wird, oder ?

Worauf muss man achten ?
*hat Heute frei*

User avatar
Chris Gi
Posts: 960
Joined: Wed, 20. Sep 06, 09:57
x3tc

Post by Chris Gi » Fri, 25. Feb 11, 08:58

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...
--------------------------------

[ external image ]

Couchracer
Posts: 132
Joined: Sat, 22. Jan 11, 19:56

Post by Couchracer » Thu, 3. Mar 11, 17:51

Ich habe den Schiffstyp in einem Script als Variable angegeben, und diese mit einem Argument verknüpft.

Nachdem ich den Script aktiviert und den Schifftyp ausgesucht hatte, passierte trotzdem nichts. :?
*hat Heute frei*

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

Post by UniTrader » Thu, 3. Mar 11, 18:24

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 ;)

Couchracer
Posts: 132
Joined: Sat, 22. Jan 11, 19:56

Post by Couchracer » Sat, 5. Mar 11, 14:05

ok:

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

Nichts großes, aber das kommt noch...
*hat Heute frei*

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

Post by UniTrader » Sat, 5. Mar 11, 14:45

passiert nichts oder bekommst du vielleicht eher nen Mammut im Sektor null statt des gewählten Schiffes? :roll: (wenn es so war -> bitte in zukunft GENAU SO sagen, ungenaue fehlerbeschreibungen ("funktioniert nicht" :roll: ) 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...
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 ;)

Couchracer
Posts: 132
Joined: Sat, 22. Jan 11, 19:56

Post by Couchracer » Sat, 5. Mar 11, 16:07

Das grüne war ein Leichtsinnsfehler.

Das rote wusst ich nicht besser.

Genau gesagt ist kein Schiff aufgetaucht, aber wenn ich die Besitztümerliste einsehen wollte, hat sich das Spiel aufgehängt.
:arrow: Darraus schließ ich, dass es hauptsächlich am grünen lag.

Danke
*hat Heute frei*

Couchracer
Posts: 132
Joined: Sat, 22. Jan 11, 19:56

Post by Couchracer » Wed, 16. Mar 11, 20:05

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 ?
*hat Heute frei*

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

Post by UniTrader » Wed, 16. Mar 11, 20:20

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 :roll:

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 ;)

Post Reply

Return to “X²: Die Bedrohung - Scripts und Modding”