- Sachen die das Scripterleben leichter machen (mehr Libs) -
Posted: Tue, 14. Sep 04, 14:02
Hier entsteht grade eine Sammlung nützlicher Libs, die einem das Scripten wesentlich leichter machen können :) :
---INHALT--
I) Schiffe voll ausrüsten / "realistisches" Erstellen/Löschen (allgemein) (von dPM_HeMan)
II) Schiffe erstellen und individuell ausrüsten (spezieller) (von Blacky_BPG)
III) Flugandockroutine, Stationen sortieren, Uhrzeit (von Lucike FZ)
IV) Schiffe im Hangar starten bei Feindkontakt (von Blacky_BPG)
----END----
I)-------------------------Schiffe voll ausrüsten / "realistisches" Erstellen/Löschen-------------------------
1) Eine Lib die das Schiff voll ausrüstet (Waffen, Schilde, Speed, Software, ect.) mit mehreren Optionen:
@ = egal.dummy -> call script 'lib.equip.ship.full' : fully equip this ship=$ship1 give ship this name='tolles Schiff' give pilot this name='total dichter Typ' give specials 1=[TRUE] give specials 2=[TRUE]
Specials1: Sprungantrieb, Steuerdüsenerweiterung, Verkaufspreis Finder, Schnäppchen Finder, Frachtscanner, Landecomputer, Lebenserhaltung für Frachtraum.
Specials2: Tuning Modul MK1, Handelssoftware MK3, BPH-Erweiterungskit MK1, 100 units of Energiezellen, Ionen-Disruptor, Digitales Sichtverbesserungssystem, Ekliptik Projektor
Setzt man Specials2 auf TRUE werden auch Khaakwaffen installiert, falls das Schiff diese "verträgt"
Namen können eingegeben werden oder NULL sein für "Zufall".
2) Eigentlich Teil der 1. aber auch so nützlich, gibt die maximale "normale" Bewaffnung für diesen Geschützturm aus.
@ $laser = $dummy -> call script 'lib.equip.ship.lasers' : lasers for this ship=$new.ship number of turrent=$index allow Khaakweapon=$allow.Khaak
3) Die Libs: "lib.jump.appear" "lib.jump.disappear"
Beispiel:
001 $sec = [PLAYERSHIP] -> get sector
002 @ $ship = $dummy -> call script 'lib.jump.appear' : this sector=$sec shiptype to appear=Argon Titan owner of ship=Player equipment of ship - 1,2 or 3=2 wait till arrive TRUE or FALSE=[TRUE]
003 skip if $ship != null
004 return null
005 @ = wait 30000 ms
006 @ = $dummy2 -> call script 'lib.jump.and.dissapear' : ship=$ship
007 return null
Erzeugt ein Schiff, dass in den Sector springt, 30 Sec. wartet und wieder mit dem Sprungantrieb abhaut (und dann gelöscht wird).
Ich benutze diese Scripte meist wenn ich auf "realistische" Weise Schiffe in einem Sektor erstellen will oder "löschen" will, damit sie nicht einfach auftauchen oder verschwinden vor den Augen des Spielers ;)
Optionen:
"equipment of ship" : 1=default + sprungantrieb; 2=benutzt lib 1) mit specials1; 3=nutzt lib 1) mit specials1 und 2
"wait till ..." : dann wartet das Script halt noch, bis das Schiff im gewünschten Sektor ist (Abbruch bei mehr als 2 Min) bevor es das Schiff übergibt.
Wichtig: man beachte genau, wie die Scripte aufgerufen werden ! 3.1) gibt ein Schiff zurück (return $ship) 2) einen Laser 1) sollte mit "@ = egal.dummy ->" ausgeführt werden niemals mit START ! Das Objekt, auf dem das Script läuft sollte nicht THIS sein sondern ein "dummy" !
II)-------------------------Schiffe erstellen und individuell ausrüsten-------------------------
4) Eine Lib die mehrere Schiffe erstellt und voll ausrüstet, Homebase Zuweisung, Rassenbestimmung
@ $ship = $script.start -> call script 'lib.BPGCreate.Ships' : Schiffstyp waehlen=$subtype Besitzer Rasse=$owner Heimatbasis -Traeger moeglich=$homebase Position=$Position Anzahl waehlen=$Amount
$subtype: Schiffstypen Angabe, zum Beispiel Argon Nova
$owner: Rassenangabe, kann leergelassen werden (null) wenn PLAYER besitzer sein soll
$homebase: Heimatbasisangabe, kann auch ein Trägerschiff sein, kann aber auch leer gelassen werden (null)
$Position: Position des ersten zu erstellenden Schiffes wählen, alle anderen werden um dieses herum platziert
$Amount: Anzahl der gesamt zu erstellen den Schiffe
5) Eine Lib die ein Schiff erstellt und voll ausrüstet, Homebase Zuweisung, Rassenbestimmung (Teil der 4) aber auch einzelnt Nutzbar)
@ $ship = $script.start -> call script 'lib.BPGCreate.Ship' : Schiffstyp waehlen=$subtype Besitzer -Rasse=$owner Heimatbasis -Traeger moeglich=$homebase Position=$Position
$subtype: Schiffstypen Angabe, zum Beispiel Argon Nova
$owner: Rassenangabe, kann leergelassen werden (null) wenn PLAYER besitzer sein soll
$homebase: Heimatbasisangabe, kann auch ein Trägerschiff sein, kann aber auch leer gelassen werden (null)
$Position: Position des zu erstellenden Schiffes wählen, muß angegeben werden
6) Diese Klassen-Lib's Lib's werden von 5) genutzt, müssen also nicht einzelnd aufgerufen werden
$added = $ships -> call script 'lib.BPGM3ausruesten' : Bitte M3Jaeger auswaehlen=$ship Subtype=$subtype
Für M3Jaeger stehen bei den anderen die jeweils zugehörigen Schiffstypen
$ship: das auszurüstende Schiff
$subtype: Schiffstyp, hier könnte es zum Beispiel die "Argon Nova" sein
Der Subtype entspricht dem Schiffstyp der in 5) ausgewählt wird, NICHT der Klasse des Schiffes, also nicht HeavyFighterM3. Diese Klassenzuordnung wird durch 5) ermittelt und übergeben, weshalb auch eine Einzelnutzung dieser Klassen-Lib's nicht vorgesehen aber möglich ist.
Folgende Klassen-Lib's sind enthalten: lib.BPGGPSausruesten; lib.BPGKhaakausruesten; lib.BPGM1ausruesten; lib.BPGM2ausruesten; lib.BPGM3ausruesten; lib.BPGM4ausruesten; lib.BPGM5ausruesten; lib.BPGM6ausruesten; lib.BPGTLausruesten; lib.BPGTPausruesten; lib.BPGTSausruesten
"lib.BPGGPSausruesten" rüstet die PiratenSchiffe und das Goner Schiff aus. Alle anderen sind selbsterklärend.
7) Ein Schiff ausruesten mit Erweiterungen, wird von 8); 4) und 5) und den Klassen-Lib's 6) genutzt
@ = $scriptcall -> call script 'Add.All.Upgrades2' : Please Select Ship=$sh
$sh: Schiff welches ausgerüstet werden soll
Es werden alle Erweiterungen installiert die im Original-Spiel vorkommen + BPH + SDS + TuningModulMKI + HMK3 + ScoutsoftwareMKI.
8) Ein Schiff mit max Schilden, max Laderaum, max Ruder, max Triebwerk ausruesten und anschließend 7) starten, wird von 8); 4) und 5) und den Klassen-Lib's 6) genutzt
@ $du = $shp -> call script 'Add.All.Upgrades3' : Please Select Ship=$shp Schilde updaten 0-nein 1-ja=1 Das wievielfache EngineTuning=1 Ruderoptimierung 0-nein 1-ja=1
Fast selbsterklärend!
$shp: Schiff welches ausgerüstet werden soll
Wenn Schilde nicht eingebaut werden die 0, andernfalls die 1.
Das Enginetunings wird mit 1 auf dem maximal vom Spiel vorgesehen Wert eines Schiffes getuned. Höhere Angaben OVERTUNEN das Schiff. Gleiches gilt für Ruderoptimierung!
III)-------------------------Flugandockroutine, Stationen sortieren, Uhrzeit-------------------------
@ $FlightStatus = [THIS] -> call script 'lib.moveorjump.to.shiporstation' : ShipTarget=$ShipTarget ShipJumpDrive=[TRUE]
ShipTarget = Flugziel, Schiff oder Station
ShipJumpDrive = Sprungantrieb nutzen [TRUE] oder nicht nutzen [FALSE]
FlightStatus=
0 = Am Ziel erfolgreich angedockt
1 = Ziel nicht vorhanden
2 = Schiff kann nicht am Ziel andocken
3 = Schiff darf nicht am Ziel andocken
4 = Am Ziel NICHT erfolgreich angedockt
Flugandockroutine mit Sprungmöglichkeit und intelligenter Energiezellensuche. Ist der Sprungantrieb erlaubt und im aktuellen Sektor ist nicht genug Energie zu bekommen so fliegt das Schiff einen Sektor weiter in Richtung Ziel. Hat das Schiff nicht genügend Laderaum so fliegt es lange in Richtung Ziel bis der Laderaum genügend Energie fassen kann.
@ $Stations = [THIS] -> call script 'lib.station.airlane' : StationList=$Stations OwnerFirst=[TRUE]
StationList = Stations-Array
OwnerFirst = Spielerstation bevorzugen [TRUE] oder nicht bevorzugen [FALSE]
$Stations = sortierte Stations-Array
Aus einer Liste von Stationen wird eine Flugroute berechnet, um Flugzeit und/oder Sprungenergie zu sparen. Dabei können Spielerstationen bevorzugt behandelt werden.
@ $Time = [THIS] -> call script 'lib.system.ingametime' :
$Time = aktuelle InGame-Uhrzeit
Aus der Spieldauer (playing time) wird die Spieluhrzeit berechnet.
IV)--------------------Schiffe im Hangar starten bei Feindkontakt--------------------
1) = $alarm.starter -> call script 'lib.Quick.StartFight' : Reference Position=$this.pos Angriffsreichweite=$range Traeger=[THIS] Feindrasse=$enemyrace Guardian=$guard
Reference Position = aktuelle Position des Trägerschiffes
Angriffsreichweite = Angriffreichweite für Schiffe
Träger = Trägerschiff auf dem nach Angriff wieder gelandet werden soll
Feindrasse = Rasse des entdeckten Feindes
Guardian = Soll eine Escorte bereitgestellt werden oder nicht
Reference Position:
Die Position die das Trägerschiff zum momentanen Zeitpunkt hat. Sollte unmittelbar vor Start abgefragt werden.
Angriffsreichweite:
EMPFEHLUNG: auf >null< setzen weil dies nur in 10% aller Fälle funktioniert obwohl die Schiffe dies sogar im Kommandomenü anzeigen
Guardian:
Wenn eine Guardian Truppe gewünscht muß diese Variable mindestens 1 sein. Wenn keine Escorte gewünscht dann auf >null< oder 0 oder auch -1.
Diese Lib prüft wieviele Schiffe sich im Hangar befinden, die Gegneranzahl im Sektor, das größte gegnerische Schiff im Sektor. Im Hangar befindliche TS oder GO werden übersprungen. Jäger werden je nach Bedrohung ausgesetzt. Escorte besteht bei einem M1 aus 10, TL aus 5 und M2 aus 0 Schiffen. Ist also beim M2 deaktiviert egal welcher Wert bei Guardian eingestellt wird. Es werden nur diese 3 Schiffstypen als Träger anerkannt.
Es wird noch eine zusätzliche Lib benötigt, ist im Download mitgeliefert. Ich habe dafür die lib.mq.getBiggestSecShip von mq erweitert und umbenannt.
---INHALT--
I) Schiffe voll ausrüsten / "realistisches" Erstellen/Löschen (allgemein) (von dPM_HeMan)
II) Schiffe erstellen und individuell ausrüsten (spezieller) (von Blacky_BPG)
III) Flugandockroutine, Stationen sortieren, Uhrzeit (von Lucike FZ)
IV) Schiffe im Hangar starten bei Feindkontakt (von Blacky_BPG)
----END----
I)-------------------------Schiffe voll ausrüsten / "realistisches" Erstellen/Löschen-------------------------
1) Eine Lib die das Schiff voll ausrüstet (Waffen, Schilde, Speed, Software, ect.) mit mehreren Optionen:
@ = egal.dummy -> call script 'lib.equip.ship.full' : fully equip this ship=$ship1 give ship this name='tolles Schiff' give pilot this name='total dichter Typ' give specials 1=[TRUE] give specials 2=[TRUE]
Specials1: Sprungantrieb, Steuerdüsenerweiterung, Verkaufspreis Finder, Schnäppchen Finder, Frachtscanner, Landecomputer, Lebenserhaltung für Frachtraum.
Specials2: Tuning Modul MK1, Handelssoftware MK3, BPH-Erweiterungskit MK1, 100 units of Energiezellen, Ionen-Disruptor, Digitales Sichtverbesserungssystem, Ekliptik Projektor
Setzt man Specials2 auf TRUE werden auch Khaakwaffen installiert, falls das Schiff diese "verträgt"
Namen können eingegeben werden oder NULL sein für "Zufall".
2) Eigentlich Teil der 1. aber auch so nützlich, gibt die maximale "normale" Bewaffnung für diesen Geschützturm aus.
@ $laser = $dummy -> call script 'lib.equip.ship.lasers' : lasers for this ship=$new.ship number of turrent=$index allow Khaakweapon=$allow.Khaak
3) Die Libs: "lib.jump.appear" "lib.jump.disappear"
Beispiel:
001 $sec = [PLAYERSHIP] -> get sector
002 @ $ship = $dummy -> call script 'lib.jump.appear' : this sector=$sec shiptype to appear=Argon Titan owner of ship=Player equipment of ship - 1,2 or 3=2 wait till arrive TRUE or FALSE=[TRUE]
003 skip if $ship != null
004 return null
005 @ = wait 30000 ms
006 @ = $dummy2 -> call script 'lib.jump.and.dissapear' : ship=$ship
007 return null
Erzeugt ein Schiff, dass in den Sector springt, 30 Sec. wartet und wieder mit dem Sprungantrieb abhaut (und dann gelöscht wird).
Ich benutze diese Scripte meist wenn ich auf "realistische" Weise Schiffe in einem Sektor erstellen will oder "löschen" will, damit sie nicht einfach auftauchen oder verschwinden vor den Augen des Spielers ;)
Optionen:
"equipment of ship" : 1=default + sprungantrieb; 2=benutzt lib 1) mit specials1; 3=nutzt lib 1) mit specials1 und 2
"wait till ..." : dann wartet das Script halt noch, bis das Schiff im gewünschten Sektor ist (Abbruch bei mehr als 2 Min) bevor es das Schiff übergibt.
Wichtig: man beachte genau, wie die Scripte aufgerufen werden ! 3.1) gibt ein Schiff zurück (return $ship) 2) einen Laser 1) sollte mit "@ = egal.dummy ->" ausgeführt werden niemals mit START ! Das Objekt, auf dem das Script läuft sollte nicht THIS sein sondern ein "dummy" !
II)-------------------------Schiffe erstellen und individuell ausrüsten-------------------------
4) Eine Lib die mehrere Schiffe erstellt und voll ausrüstet, Homebase Zuweisung, Rassenbestimmung
@ $ship = $script.start -> call script 'lib.BPGCreate.Ships' : Schiffstyp waehlen=$subtype Besitzer Rasse=$owner Heimatbasis -Traeger moeglich=$homebase Position=$Position Anzahl waehlen=$Amount
$subtype: Schiffstypen Angabe, zum Beispiel Argon Nova
$owner: Rassenangabe, kann leergelassen werden (null) wenn PLAYER besitzer sein soll
$homebase: Heimatbasisangabe, kann auch ein Trägerschiff sein, kann aber auch leer gelassen werden (null)
$Position: Position des ersten zu erstellenden Schiffes wählen, alle anderen werden um dieses herum platziert
$Amount: Anzahl der gesamt zu erstellen den Schiffe
5) Eine Lib die ein Schiff erstellt und voll ausrüstet, Homebase Zuweisung, Rassenbestimmung (Teil der 4) aber auch einzelnt Nutzbar)
@ $ship = $script.start -> call script 'lib.BPGCreate.Ship' : Schiffstyp waehlen=$subtype Besitzer -Rasse=$owner Heimatbasis -Traeger moeglich=$homebase Position=$Position
$subtype: Schiffstypen Angabe, zum Beispiel Argon Nova
$owner: Rassenangabe, kann leergelassen werden (null) wenn PLAYER besitzer sein soll
$homebase: Heimatbasisangabe, kann auch ein Trägerschiff sein, kann aber auch leer gelassen werden (null)
$Position: Position des zu erstellenden Schiffes wählen, muß angegeben werden
6) Diese Klassen-Lib's Lib's werden von 5) genutzt, müssen also nicht einzelnd aufgerufen werden
$added = $ships -> call script 'lib.BPGM3ausruesten' : Bitte M3Jaeger auswaehlen=$ship Subtype=$subtype
Für M3Jaeger stehen bei den anderen die jeweils zugehörigen Schiffstypen
$ship: das auszurüstende Schiff
$subtype: Schiffstyp, hier könnte es zum Beispiel die "Argon Nova" sein
Der Subtype entspricht dem Schiffstyp der in 5) ausgewählt wird, NICHT der Klasse des Schiffes, also nicht HeavyFighterM3. Diese Klassenzuordnung wird durch 5) ermittelt und übergeben, weshalb auch eine Einzelnutzung dieser Klassen-Lib's nicht vorgesehen aber möglich ist.
Folgende Klassen-Lib's sind enthalten: lib.BPGGPSausruesten; lib.BPGKhaakausruesten; lib.BPGM1ausruesten; lib.BPGM2ausruesten; lib.BPGM3ausruesten; lib.BPGM4ausruesten; lib.BPGM5ausruesten; lib.BPGM6ausruesten; lib.BPGTLausruesten; lib.BPGTPausruesten; lib.BPGTSausruesten
"lib.BPGGPSausruesten" rüstet die PiratenSchiffe und das Goner Schiff aus. Alle anderen sind selbsterklärend.
7) Ein Schiff ausruesten mit Erweiterungen, wird von 8); 4) und 5) und den Klassen-Lib's 6) genutzt
@ = $scriptcall -> call script 'Add.All.Upgrades2' : Please Select Ship=$sh
$sh: Schiff welches ausgerüstet werden soll
Es werden alle Erweiterungen installiert die im Original-Spiel vorkommen + BPH + SDS + TuningModulMKI + HMK3 + ScoutsoftwareMKI.
8) Ein Schiff mit max Schilden, max Laderaum, max Ruder, max Triebwerk ausruesten und anschließend 7) starten, wird von 8); 4) und 5) und den Klassen-Lib's 6) genutzt
@ $du = $shp -> call script 'Add.All.Upgrades3' : Please Select Ship=$shp Schilde updaten 0-nein 1-ja=1 Das wievielfache EngineTuning=1 Ruderoptimierung 0-nein 1-ja=1
Fast selbsterklärend!
$shp: Schiff welches ausgerüstet werden soll
Wenn Schilde nicht eingebaut werden die 0, andernfalls die 1.
Das Enginetunings wird mit 1 auf dem maximal vom Spiel vorgesehen Wert eines Schiffes getuned. Höhere Angaben OVERTUNEN das Schiff. Gleiches gilt für Ruderoptimierung!
III)-------------------------Flugandockroutine, Stationen sortieren, Uhrzeit-------------------------
@ $FlightStatus = [THIS] -> call script 'lib.moveorjump.to.shiporstation' : ShipTarget=$ShipTarget ShipJumpDrive=[TRUE]
ShipTarget = Flugziel, Schiff oder Station
ShipJumpDrive = Sprungantrieb nutzen [TRUE] oder nicht nutzen [FALSE]
FlightStatus=
0 = Am Ziel erfolgreich angedockt
1 = Ziel nicht vorhanden
2 = Schiff kann nicht am Ziel andocken
3 = Schiff darf nicht am Ziel andocken
4 = Am Ziel NICHT erfolgreich angedockt
Flugandockroutine mit Sprungmöglichkeit und intelligenter Energiezellensuche. Ist der Sprungantrieb erlaubt und im aktuellen Sektor ist nicht genug Energie zu bekommen so fliegt das Schiff einen Sektor weiter in Richtung Ziel. Hat das Schiff nicht genügend Laderaum so fliegt es lange in Richtung Ziel bis der Laderaum genügend Energie fassen kann.
@ $Stations = [THIS] -> call script 'lib.station.airlane' : StationList=$Stations OwnerFirst=[TRUE]
StationList = Stations-Array
OwnerFirst = Spielerstation bevorzugen [TRUE] oder nicht bevorzugen [FALSE]
$Stations = sortierte Stations-Array
Aus einer Liste von Stationen wird eine Flugroute berechnet, um Flugzeit und/oder Sprungenergie zu sparen. Dabei können Spielerstationen bevorzugt behandelt werden.
@ $Time = [THIS] -> call script 'lib.system.ingametime' :
$Time = aktuelle InGame-Uhrzeit
Aus der Spieldauer (playing time) wird die Spieluhrzeit berechnet.
IV)--------------------Schiffe im Hangar starten bei Feindkontakt--------------------
1) = $alarm.starter -> call script 'lib.Quick.StartFight' : Reference Position=$this.pos Angriffsreichweite=$range Traeger=[THIS] Feindrasse=$enemyrace Guardian=$guard
Reference Position = aktuelle Position des Trägerschiffes
Angriffsreichweite = Angriffreichweite für Schiffe
Träger = Trägerschiff auf dem nach Angriff wieder gelandet werden soll
Feindrasse = Rasse des entdeckten Feindes
Guardian = Soll eine Escorte bereitgestellt werden oder nicht
Reference Position:
Die Position die das Trägerschiff zum momentanen Zeitpunkt hat. Sollte unmittelbar vor Start abgefragt werden.
Angriffsreichweite:
EMPFEHLUNG: auf >null< setzen weil dies nur in 10% aller Fälle funktioniert obwohl die Schiffe dies sogar im Kommandomenü anzeigen
Guardian:
Wenn eine Guardian Truppe gewünscht muß diese Variable mindestens 1 sein. Wenn keine Escorte gewünscht dann auf >null< oder 0 oder auch -1.
Diese Lib prüft wieviele Schiffe sich im Hangar befinden, die Gegneranzahl im Sektor, das größte gegnerische Schiff im Sektor. Im Hangar befindliche TS oder GO werden übersprungen. Jäger werden je nach Bedrohung ausgesetzt. Escorte besteht bei einem M1 aus 10, TL aus 5 und M2 aus 0 Schiffen. Ist also beim M2 deaktiviert egal welcher Wert bei Guardian eingestellt wird. Es werden nur diese 3 Schiffstypen als Träger anerkannt.
Es wird noch eine zusätzliche Lib benötigt, ist im Download mitgeliefert. Ich habe dafür die lib.mq.getBiggestSecShip von mq erweitert und umbenannt.