[SCR][V1.0.7][21.11.09] Pirates Revenge

Hier ist der ideale Ort um über Scripts und Mods für X³: Terran Conflict und X³: Albion Prelude zu diskutieren.

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

User avatar
Wolf 1
Posts: 6126
Joined: Tue, 18. Mar 08, 23:17
x4

Re: [SCR][V1.0.5][14.11.09] Pirates Revenge

Post by Wolf 1 »

alles wrote:Mit diesem Script ändert sich das. Nur, das jetzt die Piraten Vergeltung für die Zerstörung von all ihrem Besitz fordern.
Erstmal ein sehr interessantes Script. :wink:

Was ist mit der Zerstörung von all ihrem Besitz eigentlich gemeint. Ich sag mal so, mein Universum ist größtenteils durch Sektorwachen gesichert, meine Händler sind auch in allen Ecken unterwegs und da bleiben kleinere Reibereien mit umherstreunenden Piratengruppen auch nicht aus.

Wenn jetzt eines meiner Wachschiffe sozusagen in Notwehr zwei, drei Piraten tötet die es vorher auf einen Händler abgesehen hatten startet dann gleich ein "Rachekommando" oder wie muß ich mir das vorstellen.
alles
Posts: 912
Joined: Sat, 1. Oct 05, 14:42
x4

Re: [SCR][V1.0.5][14.11.09] Pirates Revenge

Post by alles »

Wolf 1 wrote:
Wenn jetzt eines meiner Wachschiffe sozusagen in Notwehr zwei, drei Piraten tötet die es vorher auf einen Händler abgesehen hatten startet dann gleich ein "Rachekommando" oder wie muß ich mir das vorstellen.
:roll: Bisher greift das Script nur wenn der Player aktiv eine Station, ein Schiff eine Basis der Piraten zerstört.

In wie weit sich das, nach Lucikes Anregung, ändern wird, muß ich dann erst mal selber testen. Vielleicht wird der Player dann auch Opfer, wenn er bei so einer "Notwehr"-Situation grade mit im Sektor war.

cu
alles
Old Man II
Posts: 1913
Joined: Wed, 6. Nov 02, 20:31
x3ap

Post by Old Man II »

Hallo,

nach meinen heutigen Erfahrungen, würde ich vorschlagen das die "Rache" pro Sektor irgendwie begrenzt wird. Was ist passiert.

Ich war mit einem M7 im Sektor. Piraten kaputt, Rache erfolgt. Da ich die Nase voll hatte habe ich meinen CODEA Verband hergerufen. Blöderweise kamen dann auch noch 2 SRD in den Sektor. Das ganze führte dazu, das am Ende der Sektor brannte. Leider hat das aber kein Ende. Durch meine Kampfstärke versuchte das Script immer auszugleichen und hörte nie auf. Ich konnte zerstören was ich wollte, es ging immer weiter. Ich habe das fast eine Stunde mit angesehen. Über Performance reden wir da nicht mehr......... Das ganze wird dann zur Endlosschleife!

CU Tom
alles
Posts: 912
Joined: Sat, 1. Oct 05, 14:42
x4

Post by alles »

Old Man II wrote:Das ganze wird dann zur Endlosschleife!

CU Tom
:gruebel: Ich habe mal versucht dein Problem nachzustellen. Bei mir hatte ich das Problem nicht. Damit dies überhaupt möglich ist, müssen erstmal alle Schiffe von der gestarteten "Rache" zerstört sein, dann muß erst wieder irgendetwas von den Piraten zerstört werden, bevor wieder ne Flotte entsprechend der Spielerkampfkraft erstellt wird.

Wenn dem so war, dass da ausversehen grade wieder ein Pirat vorbeikam, hat das Script natürlich auf deinen M7, deinen Träger und deinem SRD reagiert.

Und was eine Begrenzung angeht. Wie? Wieviele Gegner? Begrenzung bedeutet letztendlich nichts anderes, als das da ein paar Pirischiffe zum Tontaubenschießen antreten dürfen.

cu
alles
Old Man II
Posts: 1913
Joined: Wed, 6. Nov 02, 20:31
x3ap

Post by Old Man II »

Hallo,

ja kann schon so gewesen sein. Ich war im Sektor oberhalb des Piratenhafens., was ist das Ceos irgendwas ............ ? Da kommen immer mal Piraten durch. Aber bei der Menge Schiffe und Raketen konnte ich nicht mal mehr die Sektorkarte aufmachen. Am Ende haben sich die Schiffe gar nicht mehr bewegt. Diashow!

Begrenzung. Ja schwierig. Das Problem entsteht ja durch die ständige Erhöhung der Angriffsstärke. Ich meine von der logischen Seite ist es ja auch real wenn den Piraten mal die Puste ausgeht. Also ich hatte gestern Wellen mit 3-5 Galeonen. Die "kleineren" Schiffe wie M6 konnte ich nicht zählen. Eventuell könnte man die Begrenzug so einbauen, das nur eine bestimmte Anzahl Großkampfschiffe in einer bestimmten Zeit in einen bestimmten Sektor "nachrücken". Alles ab M6 abwärts würde ich nicht beschränken.

Nachstellen? Also mit einer Hyperion rein und einen CODEA Kampfverband (Träger plus 4 KRV, 1 FRG, 1 ZER) nachholen nachdem der letzte Pirat weg ist. Wie gesagt, dann noch SRD.
Ich hab das gleiche erlebt als ich in einem Sektor mit Sektorwache (CODEA) war. Das endet nie!

CU Tom
alles
Posts: 912
Joined: Sat, 1. Oct 05, 14:42
x4

Post by alles »

Old Man II wrote:Also mit einer Hyperion rein und einen CODEA Kampfverband (Träger plus 4 KRV, 1 FRG, 1 ZER) nachholen nachdem der letzte Pirat weg ist. Wie gesagt, dann noch SRD.
Ich hab das gleiche erlebt als ich in einem Sektor mit Sektorwache (CODEA) war. Das endet nie!

CU Tom
:oops: hab da doch nen kleinen Fehler drin. Dein Zerstörer wars. Da ich immer nur mit nem Träger teste, fiel mir das nicht weiter auf. Also dein Zerstörer hatte 1x M2 2x M7 4x M6 und 4xTM (also 12x M3-M5) schon alleine angelockt. Das ändere ich sofort.

Nun zum Träger: Da ich mal davon ausgehen muß, das man einen M1 mit mind. 40 Jägern mit hat, wollte ich den Piris was gutes tun, und die etwas ebenbürtig setzen. Da den ihr M1 nur 25 Jäger fast habe ich halt 1 Player-M1 = 2 Piri-M1 gesetzt.

Werde mal alles ein bischen runtersetzen.

:sceptic: Wie es ausschaut, bist du der einzige, der mein Script nutz (ausser mir natürlich), oder der einzige, der solch eine Streitmacht zu Felde führt. :wink:

Naja, Änderungen folgen gleich.

cu
alles

EDIT: Version 1.0.6 online

Änderung 16.11.09

-Feindaufkommen verringert
-Raketenabschußhäufigkeit der Piraten etwas reduziert
Old Man II
Posts: 1913
Joined: Wed, 6. Nov 02, 20:31
x3ap

Post by Old Man II »

Hallo,

ach na ja........ nutzen werden es schon einige. aber nutzen, was merken und posten ist für viele zu viel :-)

Ne im Ernst. Danke für die Änderungen. Bin derzeit unterwegs auf einem Kongress und kann erst Mittwoch testen. Mein Laptop hält das nicht aus !

Bis dann..........

CU Tom
User avatar
Mishbone
Posts: 317
Joined: Wed, 21. Dec 05, 18:49
x4

Post by Mishbone »

hi,
also ich nutze es auch und muss sagen, dass es ne feine Sache ist! Habe schon ewig keine Galleonen mehr gesehen und auch noch keine TPM in Action!

Hatte gestern während einer Patroulien-Missi ausversehen einen Korsaren zerstört, da kamen die alle an. Haben dann noch gegen die Khaak mitgekämpft, war echt nett anzusehen! :thumb_up:
Was ist der Unterschied zwischen einem Huhn?

[ external image ]
User avatar
Lucike
Posts: 12969
Joined: Sun, 9. May 04, 21:26
x4

Post by Lucike »

Code: Select all

001   global script map: set: key=SIGNAL_KILLED, class=Piratendock, race=Piraten, script='plugin.as.rotp.attacked', prio=0
002   global script map: set: key=SIGNAL_KILLED, class=Station, race=Piraten, script='plugin.as.rotp.attacked', prio=0
003   global script map: set: key=SIGNAL_KILLED, class=Schiff, race=Piraten, script='plugin.as.rotp.attacked', prio=0
004   return null
@alles

Du leitest die Hauptsignale um. Das ist nicht gut. Warum nutzt du nicht die "Secondary" Signale?

Code: Select all

global secondary signal map: add signal=SIGNAL_KILLED race=Piraten class=Station script='plugin.as.rotp.attacked' prio=100 name='ROTP KILLED STATION'
Zudem wird das Signal zweimal gesendet, wenn der Spieler einen Hafen zerstört, da der Hafen auch zur Klasse "Station" gehört. Ich würde nur "Station" nutzen und im Killed-Skript ausfiltern.

Aber ich habe wieder was gelernt. In Reunion haben die Killed-Signale auf Stationen nicht funktioniert. ;)

Ach so, darf ich noch weitere Tipps geben? Ich habe da noch einiges gefunden. :D

Gruß
Lucike
Image
alles
Posts: 912
Joined: Sat, 1. Oct 05, 14:42
x4

Post by alles »

Lucike wrote:
Warum nutzt du nicht die "Secondary" Signale?

Code: Select all

global secondary signal map: add signal=SIGNAL_KILLED race=Piraten class=Station script='plugin.as.rotp.attacked' prio=100 name='ROTP KILLED STATION'
:oops: Versuch ich es mal mit Fragen zu beantworten:

Kann ich das einfach ins init-Script nehmen, oder brauch ich da ein Setupscript noch?

Wenn ich dem Signal nen Namen gebe, wofür ist der? Was kann man damit machen?

Frage beantwortet :wink:
Lucike wrote:Zudem wird das Signal zweimal gesendet, wenn der Spieler einen Hafen zerstört, da der Hafen auch zur Klasse "Station" gehört.
:roll: man lernt immer was neues.
Lucike wrote:Ach so, darf ich noch weitere Tipps geben? Ich habe da noch einiges gefunden. :D
Sicher doch, es soll ja nachher auch richtig funktionieren.

cu
alles
User avatar
Lucike
Posts: 12969
Joined: Sun, 9. May 04, 21:26
x4

Post by Lucike »

alles wrote:Kann ich das einfach ins init-Script nehmen, oder brauch ich da ein Setupscript noch?
Ich würde generell ein Setup-Skript empfehlen. Nicht, dass dir ein anderes Init-Skript die Signale klaut. Init wird vor Setup ausgeführt.
alles wrote:Wenn ich dem Signal nen Namen gebe, wofür ist der? Was kann man damit machen?
Wenn du nun ein Zweitsignal erstellst für alle Piratenstationen und ein andere Scripter auch. Was dann? Durch den Namen sind mehrere Signale auf den gleichen Objekten möglich.

Die ersten zwei Sachen:

Jedes Mal, wenn ein Piratenschiff zerstört wird durchläuft dein Skript zweimal das ganze Universum auf der Suche nache Schiffen. Da sind Ruckler vorprogrammiert. Hier die erste Optimierung:

Das Skript "plugin.as.rotp.angel.destroy" scheint für das Zerstören der Sats zuständig zu sein. Das geht einfacher.

Code: Select all

Script plugin.as.rotp.angel.destroy
Version: 101
for Script Engine Version: 44

Description
RotP - Angel zerstören
Arguments
Source Text

001   $ship.array =  get ship array: of race Piraten class/type=Alle Satelliten
002   
003   $i =  size of array $ship.array
004   while $i > 0
005   |dec $i = 
006   |$ship = $ship.array[$i]
007   |if $ship -> get local variable: name='ANGEL'
008   ||$ship -> destruct: show no explosion=[TRUE]
009   |end
010   end
011   
012   return null
Das Skript "plugin.as.rotp.attacked" sollte den Sektor auf Existenz überprüfen. Vorsicht: Es gibt einen Sektor "null".

Code: Select all

001 @ $return = [THIS] -> call script 'plugin.as.rotp.revange' :  Sector=$sector
002   skip if not $return == 1
003   |goto label Ende
004   
005 @ = [THIS] -> call script 'plugin.as.rotp.angel.destroy' : 
006 @ = wait 300 ms
007   
008   $targetsector = $attacker -> get sector
009   $angel =  find a random sector: startsector=$targetsector, jumps=10, owner=Piraten


skip if $angel -> exists
return null


010   $angel.start =  create ship: type=Erweiterter Satellit owner=Piraten addto=$angel x=0 y=50000 z=0
011   $angel.start -> set local variable: name='ANGEL' value='Angel'
012   skip if not $attacker == [PLAYERSHIP]
013 @ |START $angel.start -> call script 'plugin.as.rotp.gegnerstaerke' :  attacker=$attacker
014   $homebase = $attacker -> get homebase
015   $player = [PLAYERSHIP]
016   skip if not $homebase == $player
017 @ |START $angel.start -> call script 'plugin.as.rotp.gegnerstaerke' :  attacker=$homebase
018   
019   Ende:
020   return null
Gruß
Lucike
Last edited by Lucike on Mon, 16. Nov 09, 23:10, edited 1 time in total.
Image
alles
Posts: 912
Joined: Sat, 1. Oct 05, 14:42
x4

Post by alles »

Lucike wrote: Wenn du nun ein Zweitsignal erstellst für alle Piratenstationen und ein andere Scripter auch. Was dann? Durch den Namen sind mehrere Signale auf den gleichen Objekten möglich.
:oops: Das wird ja peinlich, auf sowas sollte man schon selber kommen.

cu
alles
User avatar
Lucike
Posts: 12969
Joined: Sun, 9. May 04, 21:26
x4

Post by Lucike »

alles wrote: :oops: Das wird ja peinlich, auf sowas sollte man schon selber kommen.
Ich nenne das Erfahrungen sammeln. Ich haben meinen Beitrag vor dir noch mal editiert. ;)

Gruß
Lucike
Image
alles
Posts: 912
Joined: Sat, 1. Oct 05, 14:42
x4

Post by alles »

Lucike wrote: Die ersten zwei Sachen:
:?

Schon geändert.

cu
alles
User avatar
Lucike
Posts: 12969
Joined: Sun, 9. May 04, 21:26
x4

Post by Lucike »


Du könntest auch den Sat sich selbst nach getaner Arbeit zerstören lassen.

Das Skript "Script plugin.as.rotp.revange" scheint zu prüfen, ob schon Rächer unterwegs sind. Hier würde ich einfach alle Piratenschiffe durchgehen. Ähnlich wie bei den Sats:

Code: Select all

$ship.array =  get ship array: of race Piraten class/type=null
Auch noch ein wenig Kosmetik. Skript "plugin.as.rotp.attacked":

Code: Select all

014   $homebase = $attacker -> get homebase
016   skip if not $homebase == [PLAYERSHIP]
Gruß
Lucike
Image
alles
Posts: 912
Joined: Sat, 1. Oct 05, 14:42
x4

Post by alles »

Lucike wrote: Du könntest auch den Sat sich selbst nach getaner Arbeit zerstören lassen.
:gruebel: Müsste da aber nicht ein Script ständig prüfen ob noch paar Piraten unterwegs sind?


Es ist schon interessant wie schnell man bei einem Script die Zeilenanzahl halbiert.

cu
alles
User avatar
Lucike
Posts: 12969
Joined: Sun, 9. May 04, 21:26
x4

Post by Lucike »

alles wrote:
Lucike wrote: Du könntest auch den Sat sich selbst nach getaner Arbeit zerstören lassen.
:gruebel: Müsste da aber nicht ein Script ständig prüfen ob noch paar Piraten unterwegs sind?
Der Sat ist doch nur für das Erstellen der Flotte zuständig, oder?

Ach, die Angriffsroutine kommt mir irgendwie bekannt vor. :D

Gruß
Lucike
Image
alles
Posts: 912
Joined: Sat, 1. Oct 05, 14:42
x4

Post by alles »

Lucike wrote: Der Sat ist doch nur für das Erstellen der Flotte zuständig, oder?
Jo.
Lucike wrote:Ach, die Angriffsroutine kommt mir irgendwie bekannt vor. :D
:oops: Erst da haben die Piris gemacht was sie sollten.

Wenn ich jetzt noch rausbekomme, wie die Träger ihre Jäger in Gruppen rausschicken... Jetzt startet ja jedes Schiff einzeln.

cu
alles
User avatar
Lucike
Posts: 12969
Joined: Sun, 9. May 04, 21:26
x4

Post by Lucike »

alles wrote:Wenn ich jetzt noch rausbekomme, wie die Träger ihre Jäger in Gruppen rausschicken... Jetzt startet ja jedes Schiff einzeln.
Nimm den "Wait" raus.

Code: Select all

056 @ |||= wait 300 ms
Aber vorher nimmt du diesen Befehl um die eigenen Schiffe zu ermitteln:

Code: Select all

$ship.array = [THIS] -> get owned ships: class/type=null
Nicht das ohne diesen "Wait" alle Schiffe im Sektor durchlaufen werden.

Gruß
Lucike
Image
Old Man II
Posts: 1913
Joined: Wed, 6. Nov 02, 20:31
x3ap

Post by Old Man II »

Moin,

@alles

wieso peinlich? Mir gefällt das. Das script wird besser und du kannst es weiter ausbauen :-)

Wie wäre es denn mit ein wenig Konkurenz auf dem Handelssektor? Wieso stellt denn die KI der Völker verbotene Ware her? Ist das nicht der Job der Piraten?

CU Tom

Return to “X³: Terran Conflict / Albion Prelude - Scripts und Modding”