[TC]Taktkonforms Scriptschnipsel

Hier können Diskussionen rund ums scripten und modden zu X3 Terran Conflict und Albion Prelude geführt werden.

Moderator: Moderatoren

Benutzeravatar
spacetruckin'
Harmlos
Beiträge: 5
Registriert: Sa 22 Jan, 2011 7:22 am
Lieblings X-Titel:
Wohnort: third stone from the sun

Re: [TC]Taktkonforms Scriptschnipsel

Beitrag von spacetruckin' »

@Taktkonform
vielen Dank fürs erklären.

Eigentlich suche ich nach einer Möglichkeit, in der
Sidebar: Aktuelles Schiff -> Erweiterte Optionen
Ziel -> Erweiterte Optionen

einen Slot für ein eigenes Script zu belegen.

Ja, das Wörtchen 'erweiterte' hat mich komplett auf die falsche Fährte gebracht,
und meine Hoffnung, daß endlich Umzusetzen, mein Denken blockiert.

Meine falsche Aussage zum DL-Link tut mir Leid - hatte ein Problem mit Schadsoftware
und bin seither sehr misstrauisch.

mfG
BERT
Gewalt kann alles - auch kaputt !
Miyamoto
Harmlos
Beiträge: 5
Registriert: Sa 18 Okt, 2014 1:45 pm
Lieblings X-Titel: X3AP

Re: [TC]Taktkonforms Scriptschnipsel

Beitrag von Miyamoto »

Hallo,
ich bin mal wieder fleissig gewesen und habe im Skripteditor ein wenig rum gewustelt und probiert. Ich stiess dann auf den Befehl unter General Object Commands

001 <?><?> -> turret <?> can use laser <?>

da es ja noch recht neu für mich ist zu skripten habe ich ein wenig probiert und den Lückentext so aufgefüllt

#tmp #PLAYERSHIP -> turret 0(hier habe ich den Wahlpunkt Numbers gewählt und es auch mit 1 bis 4 probiert) can use laser Energieplasmawerfer

Also ich es dann ausprobierte passierte natürlich... richtig... nix!
Das Schiff hat aber 2 Kanzeln. Eine vorne eine hinten. Kann wer mir erklären wie dieser Befehl funktioniert und wie er korrekt angewand wird?
Benutzeravatar
Taktkonform
Feldwebel
Beiträge: 3119
Registriert: Di 24 Jun, 2008 4:28 pm
Lieblings X-Titel:
Wohnort: Saxonia

Re: [TC]Taktkonforms Scriptschnipsel

Beitrag von Taktkonform »

<RetVar/IF> <RefObj> turret <Var/Number> can use laser <Var/Ware>

Übergibt einen Wahrheitswert (true, false), wenn der angegebene Turm die angegebene Waffe tragen kann, oder eben nicht. :)
Kurz gesagt, dieser Befehl ist dazu da, ob überhaupt erstmal zu überprüfen, ob das gewünschte Turret die gewünschte Waffe installieren kann.

Um dem Ganzen mal einen Sinn zu geben:

Code: Alles auswählen

$Turret = 0
$TurretMax = $cship -> get number of turrets
while $Turret < $TurretMax

$Lasermax = $cship -> get max. number of lasers in turret $Turret

if $cship turret $Turret can use laser Energieplasmerwerfer
    =$cship -> install $LaserMax units of Energieplasmawerfer
else
    return
inc $Turret
end
Zuerst einmal muss ich wissen, wieviele Türme das Schiff hat. Das mache ich mit einer Schleife und dem Befehl <get number of turrets>.
Danach muss ich wissen, wieviele Slots der jeweilige Turm hat, hier gelöst über den Befehl <get max number of lasers in turret>.

Habe ich die beiden Daten, dann kann ich überprüfen, ob meine gewünschte Waffe überhaupt in den gewünschten Slot passt. Das macht dann der Befehl <RetVar/IF> <RefObj> turret <Var/Number> can use laser <Var/Ware>.

Kommt bei der Prüfung TRUE raus, dann wird mit dem Befehl <install <Number/Var> units of <Ware/Var>> der gewünschte Laser installiert, und zwar bis alle Slots des entsprechenden Turms damit bestückt sind.

Kommt bei Prüfung FALSE raus, dann spring die IF-Anweisung zur ELSE-Kette und bricht den Befehl ab, macht also nichts (return).

<inc Var> erhöht dann den Zähler um 1, um den nächsten Turm im Schiff zu prüfen, wie oben gesehen. Ist kein neuer Turm mehr da, beendet das Script und übergibt die <end Anweisung>.

Einfacher geht es übrigens so:

Code: Alles auswählen

030   *$Turret = 0
031   *$TurretMax = $cship -> get number of turrets
032   *while $Turret < $TurretMax
033   |
034   *$LaserType1 = null
035   *$LaserType2 = null
036   *$LaserType3 = null
037   *$LaserType4 = null
038   |
039   *skip if not $cship -> fits laser Photonenimpulskanone into turret $Turret
040   *$LaserType1 = Photonenimpulskanone
041   *skip if not $cship -> fits laser Energiepulskanone into turret $Turret
042   *$LaserType1 = Energiepulskanone
043   *skip if not $cship -> fits laser Energieplasmawerfer into turret $Turret
044   *$LaserType2 = Energieplasmawerfer
045   *skip if not $cship -> fits laser Splitterbombenwerfer into turret $Turret
046   *$LaserType2 = Splitterbombenwerfer
047   *skip if not $cship -> fits laser Projektilkanone into turret $Turret
048   *$LaserType3 = Projektilkanone
049   *skip if not $cship -> fits laser Phasenrepetiergeschütz into turret $Turret
050   *$LaserType3 = Phasenrepetiergeschütz
051   *skip if not $cship -> fits laser Ionen-Disruptor into turret $Turret
052   *$LaserType4 = Ionen-Disruptor
053   *skip if not $cship -> fits laser Pulsstrahler into turret $Turret
054   *$LaserType4 = Pulsstrahler
055   *$LaserMax = $cship -> get max. number of lasers in turret $Turret
056   *skip if not $LaserType1
057   *= $cship -> install $LaserMax units of $LaserType1
058   *skip if not $LaserType2 AND ! $LaserType1
059   *= $cship -> install $LaserMax units of $LaserType2
060   *skip if not $LaserType2 AND $LaserType1
061   *= $cship -> install $LaserMax units of $LaserType2
062   *skip if not $LaserType3
063   *= $cship -> install $LaserMax units of $LaserType3
064   *skip if not $LaserType4
065   *= $cship -> install $LaserMax units of $LaserType4
066   *inc $Turret = 
067   *end
Vom Prinzip her das Gleiche wie oben, nur das hier gleich noch Lasergruppen definiert werden und diese mit dem Befehl <skip if not $cship -> fits laser Photonenimpulskanone into turret $Turret> überprüft werden, ob das Turret die Waffe überhaupt tragen kann. Sollte hier FALSE rauskommen, wird in der gleichen Gruppe eine Alternative angegeben, die dann installiert werden kann, bzw. wird.

noch nen netten Tag
Taktkonform
Komm wir essen Oma - Satzzeichen können Leben retten!
Miyamoto
Harmlos
Beiträge: 5
Registriert: Sa 18 Okt, 2014 1:45 pm
Lieblings X-Titel: X3AP

Re: [TC]Taktkonforms Scriptschnipsel

Beitrag von Miyamoto »

Danke... XD

ich hatte die Befehlzeile total falsch interpretiert. Ich bin dabei von einem Befehl ausgegangen und hab nicht im Traum daran gedacht das es sich um eine Abfrage handelt... *lach*
Aber das ist nen echt super Ansatz für einen universalen Ausrüsterskript... :)

Und schon brennt aber auch eine neue Frage auf der Zunge. Kann man sich über die Einschränkung welche Waffe in ein Schiff dürfen hinwegsetzen? Und wie würde man da ansetzten?... :)
Benutzeravatar
Taktkonform
Feldwebel
Beiträge: 3119
Registriert: Di 24 Jun, 2008 4:28 pm
Lieblings X-Titel:
Wohnort: Saxonia

Re: [TC]Taktkonforms Scriptschnipsel

Beitrag von Taktkonform »

Miyamoto hat geschrieben: Und schon brennt aber auch eine neue Frage auf der Zunge. Kann man sich über die Einschränkung welche Waffe in ein Schiff dürfen hinwegsetzen? Und wie würde man da ansetzten?... :)
Das macht keinen Sinn, da man so die kompletten Schiffsklassen und Eigenheiten derselben ad absurdum führt...
...aber mal ganz davon abgesehen, per Script geht so etwas nicht, dazu braucht es dann schon den X-Editor oder Cycrows Plugin-Manager, genauer den Ship Creator, der diesem beiliegt.

Denn um das zu erreichen, was Dir vorschwebt, müsste man die Tships umschreiben, und zwar für jedes Schiff einzeln.

noch nen netten Tag
Taktkonform
Komm wir essen Oma - Satzzeichen können Leben retten!
Miyamoto
Harmlos
Beiträge: 5
Registriert: Sa 18 Okt, 2014 1:45 pm
Lieblings X-Titel: X3AP

Re: [TC]Taktkonforms Scriptschnipsel

Beitrag von Miyamoto »

Oh, ich denke ich werde da grade falsch verstanden. Ich möchte gar nichts in Absurdum führen. Bin nur über die Möglichkeiten des Editors faziniert und bemühe mich derzeit mein Wissen zu mehren. Dazu finde ich gerade herraus was mit dem Skripteditor geht und halt was nicht geht. An dieser Stelle haben wir eben mal eine Grenze aufgetan die ohne Hilfsmittel nicht, oder nur schwer zu lösen ist. Aber sei es drum. Es gibt da ja noch so viele Dinge zu entdecken.... :)
Ich finde es übrigens klasse wie ihr hier die Funktionweise des Skripteditors erklärt. So muss man nicht gleich nen Informatikstudium haben um ein paar kleinere Dinge selber zu erstellen und auch zu verstehen.
So möchte ich mich auch mal dafür bedanen das ihr euch so viel Mühe gebt... :)
Muss ja auch mal gesagt sein... :)
BDA81
Harmlos
Beiträge: 23
Registriert: Sa 13 Nov, 2010 9:05 pm
Lieblings X-Titel:

Re: [TC]Taktkonforms Scriptschnipsel

Beitrag von BDA81 »

Hallo, melde mich nach knapp einen Jahr mal wieder mit einer Frage.

Ist es möglich mehrere Abfragen gleichzeitig zu machen, z.B. wenn die Variable entweder ein M5 oder M4 etc. ist, dann überspringe die nächste Anweisung.

Ich stelle mir das in etwa so vor:

skip if <Var> == M4 OR M5
beliebige Anweisung

Ich bräuchte daher mal einen Schubser in die richtige Richtung.
Benutzeravatar
Taktkonform
Feldwebel
Beiträge: 3119
Registriert: Di 24 Jun, 2008 4:28 pm
Lieblings X-Titel:
Wohnort: Saxonia

Re: [TC]Taktkonforms Scriptschnipsel

Beitrag von Taktkonform »

Ja geht, nur in einer etwas anderen Form:

Code: Alles auswählen

skip if <var> == M4 OR skip if <var> == M5
[...]
Man kann aber auch mit if, else und elseif arbeiten.

Code: Alles auswählen

if  <var>== M4
 tu irgendwas anderes
elseif <var>==M5
 tu irgendwas noch anderes
else
 tu noch was ganz anderes
end
noch nen netten Tag
Taktkonform

P.S.: Die Werte, die sich hier hinter M4 und M5 verstecken müssen entweder definiert werden (ausgelesen oder als Variableninhalt angelegt werden), bzw. ein definiertes Objekt (Schiffstyp, Schiffsklasse, etc.) sein.
Aber ich denke, das ist soweit klar.
Komm wir essen Oma - Satzzeichen können Leben retten!
BDA81
Harmlos
Beiträge: 23
Registriert: Sa 13 Nov, 2010 9:05 pm
Lieblings X-Titel:

Re: [TC]Taktkonforms Scriptschnipsel

Beitrag von BDA81 »

Danke, hatte gehofft das kürzer gestalten zu können, naja, wie bekommt man das mit den Skript Editor Ingame hin,

Also
skip if <var> == M4 OR skip if <var> == M5
[...]
gibt es eine bessere Möglichkeit? Der Punkt ist, das die beliebe Anweisung für die hälfte der Schiffstypen die gleiche Anweisung enthält, während für die andere keine Anweisung entsteht.
Antworten