- Neue Lib.: Kapern und Schleudersitz [Update] -

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

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

Arsenal
Posts: 148
Joined: Tue, 3. Feb 04, 23:28
x4

Post by Arsenal »

Na eigentlich müsste ich jetzt ja sagen. Aber mach ich nich weil ich nie aus meinem Schiff aussteige.

Wie istn das jetzt, ist es mit dem Script dann eigentlich auch möglich ein M6 oder noch größer zu kapern?
User avatar
dPM_HeMan
Posts: 820
Joined: Mon, 16. Feb 04, 13:08
x3

Post by dPM_HeMan »

ja :) einfach das Script auf einem beliebigen Schiff starten
MichaRose
Posts: 328
Joined: Sat, 28. Feb 04, 19:25
x3

Post by MichaRose »

Hey
Ich hätte es halt so gemacht, dass man das Ziel des Spielers überprüft (wie du es gemacht hast) und dann das Script startet (1mal) und fertig.
Habe da nur ein Haken entdeckt. Es ist möglich, ein Schiff anzuvisieren und abzuwarten, bis die Schilde von einem anderem Schiff runtergeschossen werden um dann erst mit meiner Attacke zu beginnen. Die Lib wird gestartet und mit (wenig) Glück hat man das Schiff gekapert. Das ist etwas zu leicht, gerade wenn man sich in einen Fight einmischt.
(oder man lässt es einfach weiterlaufen und wartet ob jemand Anderes das Schiff kapert :D ).
Es gibt eine Möglichkeit, das 'signal_attacked' abzufangen und die Lib zu Starten. Habe damit auch Versuche unternommen. Doch dann muß man noch die Scripte mit einbinden, die eigentlich für dieses Signal geschrieben wurden. Ansonsten werden sich die Angegriffenen Schiffe nicht verteidigen.

Ist ein wenig Arbeit diese ganzen Scripte rauszusuchen und dann den jeweiligen Schiffen das passende Script zuzuordnen, aber nicht schwer.

Wenn man darauf aufbaut, sind alle Schiffe im Universum in der Lage zu Kapern und nicht nur der Spieler. Es würde dann auch keine Endlosschleife laufen und das Script nur aufgerufen, wenn es gebraucht wird.

Soweit mir bekannt geworden ist, wird das Spielerschiff dieses Signal nicht senden. Ist somit auch nicht zu Kapern. Werde ich mal Testen.
Also ich fänd's jedenfalls gut wenn du das Script noch weitermachst.
Gerne, ich werde mal versuchen die Lib Spieler unabhängig in X2 einzubinden.

Gruß,
Micha
User avatar
dPM_HeMan
Posts: 820
Joined: Mon, 16. Feb 04, 13:08
x3

Post by dPM_HeMan »

Update

- Khaak können ab sofort keine Schiffe kapern

Proteste bitte hier :)
MichaRose wrote:Es gibt eine Möglichkeit, das 'signal_attacked' abzufangen und die Lib zu Starten. Habe damit auch Versuche unternommen. Doch dann muß man noch die Scripte mit einbinden, die eigentlich für dieses Signal geschrieben wurden. Ansonsten werden sich die Angegriffenen Schiffe nicht verteidigen.
da kenn ich mich leider nicht aus :(
User avatar
Furthark
Posts: 317
Joined: Mon, 9. Feb 04, 18:12
x2

Post by Furthark »

Wieso sollten Khaak keinen schiffe Kapern ?? Wäre doch die Tarnung um unruhe zu schaffen unter den Völkern, fliegt dan nur audf wen man das Schiff Scannt (Frachtscanner oder den Statscaner von Kalric anpassen
MichaRose
Posts: 328
Joined: Sat, 28. Feb 04, 19:25
x3

Post by MichaRose »

dPM_HeMan:

Habe ich geschafft! Das Signal wird abgefangen, die lib gestartet und danach sofort zum offiziellen Script gesprungen. Das ganze wird dann durch eine ini. Datei bei Programmstart geladen.

Derzeit bin ich in der lib selber am machen. Wenn sie meiner Meinung nach einwandfrei Funktioniert, dann werde ich dir die lib und meine Vorstellungen, was man noch einfügen könnte, mailen. Was meinst Du dazu?

Testen konnte ich das gestern Abend nur ganz kurz, aber ich habe festgestellt, das wenn ein Schiff mit einem einzigen Schuß zerstört wird, der Pilot aussteigt. Leider wurden bei anderen Schlachten die Fight Commandos des Angreifers beendet und die lib dafür gestartet. Nach dem ersten Schuß! Muß ich noch ein wenig dran Arbeiten und das Problem lösen!

Ich habe auch die lib ein wenig (viel) umgeschrieben, die Grundfunktionen und Vorraussetzungen sind aber immer noch die selben. Die lib ist jetzt gradliniger, sie fängt oben an und arbeitet sich dann Funktion um Funktion nach unten durch. Es macht es so auch einfacher neue Funktionen hinzuzufügen, Änderungen vorzunehmen oder Bugs zu beseitigen.

Zu den Änderungen:
1. Es wird der lib auch der attacker übergeben.
2. Passagiere werden nicht als Namensarray, sondern als Anzahl angegeben.
3. Passagier- und Pilotennamen werden Rassenabhängig zufällig ausgewählt.
4. Das gekaperte Schiff fliegt wenn möglich zur nächsten Station oder entfehrnt sich aus dem Schlachtgetümmel.
5. Ist das Schiff nach einer Minute wieder Kampffähig (Schild, Hülle, Laser), wird es dich Unterstützen.
6. Das Abbrechen der While Schleife wurde verbessert.
7. Das wichtigste: Jede Rasse kann Kapern, oder gekapert werden. Bei den Khaak muß mans noch testen.
- Khaak können ab sofort keine Schiffe kapern
Warum eigentlich nicht? Das macht es doch noch spannender. Man könnte auch ein Array übergeben in dem steht wer (nicht) kapern darf. Als Ersatz für den Parameter 'Capture possible'.

Schiffe, die mit der MK3 Arbeiten haben da eine eigene Behandlung des Signals und werden daher auch nicht an die lib gebunden. Soviel steht fest!
fliegt dan nur audf wen man das Schiff Scannt
Sau schwer umzusetzen! Aber eine gute Idee für ein eigenes 'Khaak Spionage' Script.

Gruß,
Micha
User avatar
dPM_HeMan
Posts: 820
Joined: Mon, 16. Feb 04, 13:08
x3

Post by dPM_HeMan »

MichaRose wrote:Derzeit bin ich in der lib selber am machen. Wenn sie meiner Meinung nach einwandfrei Funktioniert, dann werde ich dir die lib und meine Vorstellungen, was man noch einfügen könnte, mailen. Was meinst Du dazu?
klar, mach das :)
MichaRose wrote:Zu den Änderungen:
1. Es wird der lib auch der attacker übergeben.
2. Passagiere werden nicht als Namensarray, sondern als Anzahl angegeben.
3. Passagier- und Pilotennamen werden Rassenabhängig zufällig ausgewählt.
4. Das gekaperte Schiff fliegt wenn möglich zur nächsten Station oder entfehrnt sich aus dem Schlachtgetümmel.
5. Ist das Schiff nach einer Minute wieder Kampffähig (Schild, Hülle, Laser), wird es dich Unterstützen.
6. Das Abbrechen der While Schleife wurde verbessert.
7. Das wichtigste: Jede Rasse kann Kapern, oder gekapert werden. Bei den Khaak muß mans noch testen.
zu 1. 2. 4. 5. :
das entfremdet ein wenig den Sinn und Zweck, zu dem ich dass eigentlich gemacht habe, besonders Punkt 1. ,da der Sinn ja war ein Schiff zu erstellen, dass von jedem Angreifer gekapert werden kann, der grade vorbeikommt. Man erstellt halt ein Schiff, startet das Script und wartet ab was passiert; sollte es irgendwann z.B. von Piraten angegriffen werden, ham die halt ne Chance das zu erobern (oder der Pilot ne Chance sich zu retten, z.B nützlich beim Universumshändler). Punkt 2 ist insofern ungünstig, weil ich die Passagiere auch teilweise auf andere schiffe übertragen möchte, aber na gut mach du mal und ich guck mir das dann an :D
MichaRose wrote:
- Khaak können ab sofort keine Schiffe kapern
Warum eigentlich nicht? Das macht es doch noch spannender. Man könnte auch ein Array übergeben in dem steht wer (nicht) kapern darf.
ja schon, der Grund wieso ich das jetzt aber erstmal so gemacht habe ist, damit nicht zufällig irgendwelche gekaperten Khaak-Schiffe rumfliegen, bei allen anderen Rasse ist das egal, da der Computer dann einfach die Kontrolle übernimmt (wie, wenn man z.B. ein Argon Schiff ohne Befehl erstellt und n paar Sekunden wartet, dann nimmt die KI die Steuerung in die Hand -> "race logic control" nur ich weiß nicht was die Khaak mit Transportern machen würden ect. ...)

*phu* ich glaub wir machen besser 2 Libs daraus, für die verschiedenen Ansprüche :D

mfg

HeMan
User avatar
dPM_HeMan
Posts: 820
Joined: Mon, 16. Feb 04, 13:08
x3

Post by dPM_HeMan »

P.S.: ich glaub ich mach aus den Passagieren ne lokale Variable, dann krieg ich das vielleicht auch den Schleudersitz für BPH und Univ.Händler hin :roll:
MichaRose
Posts: 328
Joined: Sat, 28. Feb 04, 19:25
x3

Post by MichaRose »

dPM_HeMan wrote: zu 1. 2. 4. 5. :
das entfremdet ein wenig den Sinn und Zweck, zu dem ich dass eigentlich gemacht habe, besonders Punkt 1. ,da der Sinn ja war ein Schiff zu erstellen, dass von jedem Angreifer gekapert werden kann, der grade vorbeikommt. Man erstellt halt ein Schiff, startet das Script und wartet ab was passiert; sollte es irgendwann z.B. von Piraten angegriffen werden, ham die halt ne Chance das zu erobern (oder der Pilot ne Chance sich zu retten, z.B nützlich beim Universumshändler).
Der Nachteil ist, das das Script ständig am laufen ist, auch wenn es nicht gebraucht wird. Der Sinn bleibt genau der gleiche, wie Du eben Beschrieben hast. Die lib wird auf dem Schiff ausgeführt, das gerade angegriffen wird. Ausgelöst dadurch, wenn darauf geschossen wird. Der Kumpel muß natürlich wissen, wer ihn in diesem Moment gerade Angreift und bekommt das mitgeteilt. Wenn Du den Angriff unterbrichst, um Schilde aufzuladen und z.B. ein Argone den Angriff weiterführt, ist dieser dann Kaperberechtigt. Ausschlaggebend ist, wer da gerade aufs Schiff feuert. Wenn der Bandit entkommt wird die lib beendet und später, wenn er wieder angegriffen wird, von einem Piraten, wird sie erneut gestartet. Die lib ist also nur bei Bedarf aktiv. Der Sinn und Zweck ist also Haargenau der gleiche. Nur ein wenig anders umgesetzt.

Der attacker wird bei einem Angriff vom Programm gleich mitgeliefert. Diese Variable gleich zu nutzen, ist die sicherste Methode den attacker festzustellen.
dPM_HeMan wrote:Punkt 2 ist insofern ungünstig, weil ich die Passagiere auch teilweise auf andere schiffe übertragen möchte
Werden Passagiere Namentlich in den Schiffsinfos angezeigt? Keine Ahnung! Aber ich denke mal, das Du es mit deinem Sklavenhändler Script Kompatibel halten und die dort generierten Namen verwenden möchtest. Kein Problem! Mir fällt eh gerade auf, das in einem M5 nicht 500 Passagiere reinpassen!

Punkt 4 und 5 kann mit eingeschaltet werden, wenn der Astronaut auch in die nächste Station flüchten darf.

Der Unihändler (MK3) wird nicht warten, bis die Schilde unten sind. Der macht sich sofort aus dem Staub, wenn er angegriffen wird. Entweder in die nächste Station oder mit dem Sprungantrieb. Habe ich Live miterlebt, wie dieses Script arbeitet. Wirklich Live!

dPM_HeMan wrote:P.S.: ich glaub ich mach aus den Passagieren ne lokale Variable, dann krieg ich das vielleicht auch den Schleudersitz für BPH und Univ.Händler hin :roll:
Machst Du offiziell einen Schleudersitz für die beiden. Ich habe das so gemacht, das der Pilot aussteigt, wenn das Schiff zerstört wird. Mit gleichen Namen.
Gruß,
Michael
Arsenal
Posts: 148
Joined: Tue, 3. Feb 04, 23:28
x4

Post by Arsenal »

dPM_HeMan wrote:
MichaRose wrote:
MichaRose wrote:
- Khaak können ab sofort keine Schiffe kapern
Warum eigentlich nicht? Das macht es doch noch spannender. Man könnte auch ein Array übergeben in dem steht wer (nicht) kapern darf.
ja schon, der Grund wieso ich das jetzt aber erstmal so gemacht habe ist, damit nicht zufällig irgendwelche gekaperten Khaak-Schiffe rumfliegen, bei allen anderen Rasse ist das egal, da der Computer dann einfach die Kontrolle übernimmt (wie, wenn man z.B. ein Argon Schiff ohne Befehl erstellt und n paar Sekunden wartet, dann nimmt die KI die Steuerung in die Hand -> "race logic control" nur ich weiß nicht was die Khaak mit Transportern machen würden ect. ...)

*phu* ich glaub wir machen besser 2 Libs daraus, für die verschiedenen Ansprüche :D

mfg

HeMan
Ist doch klar, die Transporter vesuchen Schiffe zu töten, in Ermangelung derer Fliegen sie wahrscheinlich extrem nervend um die Schiffe rum. Also eigentlich witzig...
User avatar
dPM_HeMan
Posts: 820
Joined: Mon, 16. Feb 04, 13:08
x3

Post by dPM_HeMan »

MichaRose wrote:Der Nachteil ist, das das Script ständig am laufen ist, auch wenn es nicht gebraucht wird. Der Sinn bleibt genau der gleiche, wie Du eben Beschrieben hast. Die lib wird auf dem Schiff ausgeführt, das gerade angegriffen wird. Ausgelöst dadurch, wenn darauf geschossen wird.
versteh ich das jetzt richtig, dass du es geschafft hast, dass Script automatisch zu starten, wenn jemand angeriffen wird ? also ohne konkreten Aufruf ?
Der attacker wird bei einem Angriff vom Programm gleich mitgeliefert. Diese Variable gleich zu nutzen, ist die sicherste Methode den attacker festzustellen.
da hast du wahrscheinlich recht. Ich frag mich ja wer als attacker angegeben wird, wenn es mehrere gibt, der Letzte ?
Machst Du offiziell einen Schleudersitz für die beiden. Ich habe das so gemacht, das der Pilot aussteigt, wenn das Schiff zerstört wird. Mit gleichen Namen.
ne nicht offiziell, zumindest noch nicht :D Ich versuche nur die lokalen Variablen des Piloten mit zu speichern und ihn wiederverwendbar zu machen, wenn man ihn aufsammelt.
MichaRose
Posts: 328
Joined: Sat, 28. Feb 04, 19:25
x3

Post by MichaRose »

dPM_HeMan wrote:versteh ich das jetzt richtig, dass du es geschafft hast, dass Script automatisch zu starten, wenn jemand angeriffen wird ? also ohne konkreten Aufruf ?
Richtiger gehts nicht! Es gibt drei Dateien, die man sich nur ins Script Verzeichnis kopieren und das Spiel starten muß. Läuft alles von alleine! Die Offiziellen Verteidigungsscripte werden dabei in keinster Weise beeinflußt. Du wirst begeistert sein, was aus deiner Idee geworden ist!

Paralell dazu kann man ja die Lib aus anderen Scripten auch starten, für dein Sklavenhändler Script. Die beiden Methoden behindern sich nicht. Da habe ich etwas mit Globalen Variablen gemacht um abzufragen ob das Schiff A schon von Schiff B angegriffen wird. Falls Schiff C auch Schiff A angreifen sollte, hat er dieselben Kapermöglichkeiten wie Schiff B. Da laufen dann zwei Libs paralell. Durch eine ausgeklügelte Kontrolle werden die Libs nach gebrauch auch wieder beendet. Bei meinen Beobachtungen der KI Schiffen liefen maximal 35 Libs gleichzeitig.

Das mit der Übergabe der Namen für die Passagiere habe ich auch wieder rückgängig gemacht und dafür einen Zufallsgenerator eingebaut, falls keine Namen übergeben werden. Abhängig für die Anzahl der Survivor ist die größe des zerstörten oder gekaperten Schiffes. Die Piloten werden immer das Schiff verlassen, auch Xenon und Khaak! Für die beiden musste ich mir etwas nettes für die Pilotennamen ausdenken.

Allerdings weiß ich noch nicht, ob das mit den Passagieren so hinhaut. Das einsacken der automatisch generierten Passagiere darf nämlich nur der Spieler und bleibt für die KI ausgeschaltet.

Ob die Pilotenkontrolle funktioniert weiß ich auch noch nicht. Zu diesen Tests bin ich noch nicht gekommen.
dPM_HeMan wrote:da hast du wahrscheinlich recht. Ich frag mich ja wer als attacker angegeben wird, wenn es mehrere gibt, der Letzte ?
Ja, funktioniert sehr zuverlässig und wer alles als attacker angegeben wird habe ich ja oben schon beschrieben. War heute schon fett am Testen. Dazu habe ich eine Logging Funktion eingebaut. Das Logfile wird im X2 Ordner gespeichert wenn die Debug Variable in der Lib auf TRUE gesetzt wird.
dPM_HeMan wrote:Ich versuche nur die lokalen Variablen des Piloten mit zu speichern und ihn wiederverwendbar zu machen, wenn man ihn aufsammelt.
Sehr gute Idee. Und der Pilot, wenn dieser nicht auch abgeschossen wird, wartet in der nächsten Station auf einen neuen Transporter.

Arsenal wrote:Ist doch klar, die Transporter vesuchen Schiffe zu töten, in Ermangelung derer Fliegen sie wahrscheinlich extrem nervend um die Schiffe rum. Also eigentlich witzig...
Das tun sie nicht. Ich habe das mal getestet. Transporter (voll kampffähig), die Khaak gehören werden auf Kommando Idle gesetzt und Eiern wie blöde durch den Sektor. Die Jäger der anderen Rassen stürzen sich sofort auf den Transporter. Musst also sehr schnell sein, wenn Du den TS einsacken willst.


Zur neuen Version der Lib:
HeMan wird noch heute einen Download Link von mir bekommen, damit er es Testen und seine Meinung dazu äußern kann. Ewentuell sind dann noch Korrekturen und weitere Tests nötig. Wenn dann alles soweit klar ist, obliegt es HeMan, diese Lib hier zum Download anzubieten.
Gruß,
Michael
duenenstampfer
Posts: 91
Joined: Sun, 25. Jul 04, 04:57
x2

Post by duenenstampfer »

Kommt denn da noch eine version wo ich nicht den editor starten muss?
ich krig das nicht gebacken mit dem editor
User avatar
dPM_HeMan
Posts: 820
Joined: Mon, 16. Feb 04, 13:08
x3

Post by dPM_HeMan »

@Micha: *phu* ganz schön harte Kost ;) , ich guck's mir auf jeden Fall an und dann sag ich bescheid
MichaRose
Posts: 328
Joined: Sat, 28. Feb 04, 19:25
x3

Post by MichaRose »

duenenstampfer wrote:Kommt denn da noch eine version wo ich nicht den editor starten muss?
ich krig das nicht gebacken mit dem editor
Der Script Editor muß schon gestartet werden, wenn Du unsegnierte Scripte nutzen möchtest. Extra ein Script starten oder in einem etwas einstellen brauchst Du nicht.

Im Weltraum einfach Thereshallbewings eintippen um den Editor zu freizuschalten. Darauf achten, das dieses T am Anfang großgeschrieben wird und der Rest klein. Ob der Editor aktiv ist, siehst Du am oberen linken Bildschirmrand. Dort steht dann Modified.

Mehr ist nicht nötig!
Gruß,
Michael
duenenstampfer
Posts: 91
Joined: Sun, 25. Jul 04, 04:57
x2

Post by duenenstampfer »

das versteh ich nicht ich hab z.b die raketenabwehr geschichte am laufen die ist doch auch nicht signiert und trotzdem muss ich keinen editor starten :? oder die sache mit den piraten die TPs überfallen das ding ist noch nicht mal fertig und das geht oder vetu ich mich da?
gruss
MichaRose
Posts: 328
Joined: Sat, 28. Feb 04, 19:25
x3

Post by MichaRose »

Welche Version von X2 hast Du denn? Ab 1.3 laufen nicht signierte Scripte eigentlich nur im Modified Modus. Wenn Du noch 1.2 benutzt, ist das mit dem Editor Wurst!
Gruß,
Michael
duenenstampfer
Posts: 91
Joined: Sun, 25. Jul 04, 04:57
x2

Post by duenenstampfer »

ich hab 1.4 und die laufen alle so ohne editor der no modified tag kann daran ja wohl nix geändert haben oder?
laprican
Posts: 196
Joined: Fri, 13. Feb 04, 16:56
x2

Post by laprican »

ähm, wie "no modified tag"? das modified zeichen hast du aus dem archiv gelöscht?
wenn ja, dann ist das spiel dadurch modified, also laufen auch unsignierte scripte
MichaRose
Posts: 328
Joined: Sat, 28. Feb 04, 19:25
x3

Post by MichaRose »

Wie auch immer. Wenn unsegnierte Scripte bei dir laufen, dann dieses auch!
Gruß,
Michael

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