Xenon Invasions Script

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

ticaki
Posts: 4861
Joined: Wed, 6. Nov 02, 20:31
x3

Post by ticaki »

Devidian wrote:Ja gut dann habe ich die Zahl der gelandeten schiffe ;) und was soll ich damit machen wenn ich denen nicht den Befehl geben kann zu invasieren weil wenn ich das inva ding auf die werft mache nix passiert und ich die einzelnen schiffe ja nicht bekomme :p

Nocwas: ich hoffe EGOSOFT behebt auch den sch**** das wenn X2 sich aufhängt im windows keine tastatur / maus mehr geht. Hab grad wieder bockmist gebaut und durfte wieder neustarten obwohl nur 50% CPU last :( weil ich X2 net beenden konnte.

mfg
Devidian
1. Kannst du nach dem erstellen direkt den Befehl geben und ein überwachungs Script schaut nach sind Schiffe gestartet, wenn ja Schiffsbauscript starten wenn nein goto anfang.

2. falls du den aufhänger meinst der im zusammenhang mit while schleifen entsteht, benutze das

Code: Select all

1.040 infinite loop detection enabled=<Var/Number>
Gruß ticaki
Zur Zeit nicht aktiv
Devidian
Posts: 156
Joined: Thu, 25. Mar 04, 18:38
x4

Post by Devidian »

ticaki wrote:
Devidian wrote:Ja gut dann habe ich die Zahl der gelandeten schiffe ;) und was soll ich damit machen wenn ich denen nicht den Befehl geben kann zu invasieren weil wenn ich das inva ding auf die werft mache nix passiert und ich die einzelnen schiffe ja nicht bekomme :p

Nocwas: ich hoffe EGOSOFT behebt auch den sch**** das wenn X2 sich aufhängt im windows keine tastatur / maus mehr geht. Hab grad wieder bockmist gebaut und durfte wieder neustarten obwohl nur 50% CPU last :( weil ich X2 net beenden konnte.

mfg
Devidian
1. Kannst du nach dem erstellen direkt den Befehl geben und ein überwachungs Script schaut nach sind Schiffe gestartet, wenn ja Schiffsbauscript starten wenn nein goto anfang.

2. falls du den aufhänger meinst der im zusammenhang mit while schleifen entsteht, benutze das

Code: Select all

1.040 infinite loop detection enabled=<Var/Number>
Gruß ticaki
Jo klar so hab ich es ja bisher gehabt. bauen -> abschicken -> warten -> nächstes bauen -> .... aber dann haben die sich drin gestapelt und einige sind auch nach beenden des bau scripts nicht losgeflogen obwohl sie doch eigentlich immernoch den inva befehl gehabt haben müßten oder nicht ? Anscheind haben sie durch den stau dann den inva befehl abgebrochen. So wie das Skript jetzt oben ist scheint es zu funktionieren.
Devidian
Posts: 156
Joined: Thu, 25. Mar 04, 18:38
x4

Post by Devidian »

Wenn ich eine Skip bedingung vor eine While schleife hänge , bricht er dann die ganze schleife ab ? (sollte er ja normal aber bei dem was mir bisher hier begegnet ist bin ich lieber vorsichtig :D)

€DIT: dieses Loop detection muss ich in jede while schleife packen die es überwachen soll oder reicht es einmal am anfang des skripts ?

mfg
Devidian
Devidian
Posts: 156
Joined: Thu, 25. Mar 04, 18:38
x4

Post by Devidian »

So klappt schon ganz gut, sollte nur mal verschiedene schwierigkeitsgrade einbauen da es im mom echt krasser X-TREME kampf ist :twisted:
Sobald ein Sektor leergeräumt ist was stationen angeht wird die produktion neuer schiffe gestoppt und ein TL ausgesandt (im moment Argon lol weils kein Xenon TL gibt) solange der lebt wird geprüft ob er im zielsektor ist und wenn er mal da ist baut er 1 schiffswerft und 2 SKWs und zerstört sich dann (bzw. die stationen werden aus dem material des TL's gebaut :p) So bis dahin klappt alles 1. Sahne. Jetzt weise ich die neue Werft an eine neue Invasion zu starten ->

Code: Select all

076   * Weise neue Werft an Invasion zu starten
077 @     = $neuewerft -> call script 'xenon.shipyard.invasion' :  Station=$neuewerft
Auch kein Thema klappt... aaaber dann scheint er das skript auf der alten werft zu beenden. Kann es sein das bei diesem aufruf ein skript nicht mehrmals laufen kann ? Würde auch erklären warum sich die schiffe zu anfang in der werft gestapelt haben weil immer direkt wieder das inva script aufgerufen wurde. Und es würde erklären warum einige Schiffe der Xenon meinen *och nöööö heut bleib ich ma zuhause und bewach meinen heimatsektor - weil auf invaaaaaa hab ichhh jetzzz nätt sooo ... lust ... ne*

:D

mfg
Devidian

PS: sind immernoch paar fragen offen ... bunter Text... einbindung ins Optionsmenü wie piratenbasen...
ticaki
Posts: 4861
Joined: Wed, 6. Nov 02, 20:31
x3

Post by ticaki »

Devidian wrote:So klappt schon ganz gut, sollte nur mal verschiedene schwierigkeitsgrade einbauen da es im mom echt krasser X-TREME kampf ist :twisted:
Sobald ein Sektor leergeräumt ist was stationen angeht wird die produktion neuer schiffe gestoppt und ein TL ausgesandt (im moment Argon lol weils kein Xenon TL gibt) solange der lebt wird geprüft ob er im zielsektor ist und wenn er mal da ist baut er 1 schiffswerft und 2 SKWs und zerstört sich dann (bzw. die stationen werden aus dem material des TL's gebaut :p) So bis dahin klappt alles 1. Sahne. Jetzt weise ich die neue Werft an eine neue Invasion zu starten ->

Code: Select all

076   * Weise neue Werft an Invasion zu starten
077 @     = $neuewerft -> call script 'xenon.shipyard.invasion' :  Station=$neuewerft
Auch kein Thema klappt... aaaber dann scheint er das skript auf der alten werft zu beenden. Kann es sein das bei diesem aufruf ein skript nicht mehrmals laufen kann ? Würde auch erklären warum sich die schiffe zu anfang in der werft gestapelt haben weil immer direkt wieder das inva script aufgerufen wurde. Und es würde erklären warum einige Schiffe der Xenon meinen *och nöööö heut bleib ich ma zuhause und bewach meinen heimatsektor - weil auf invaaaaaa hab ichhh jetzzz nätt sooo ... lust ... ne*

:D

mfg
Devidian

PS: sind immernoch paar fragen offen ... bunter Text... einbindung ins Optionsmenü wie piratenbasen...
So:

Code: Select all

076   * Weise neue Werft an Invasion zu starten
077 @     START $neuewerft -> call script 'xenon.shipyard.invasion' :  Station=$neuewerft

Gruß ticaki

P.S. lade dir ein paar Scripte runter dann kannst du nachschlagen :wink:
Zur Zeit nicht aktiv
ticaki
Posts: 4861
Joined: Wed, 6. Nov 02, 20:31
x3

Post by ticaki »

Devidian wrote:Wenn ich eine Skip bedingung vor eine While schleife hänge , bricht er dann die ganze schleife ab ? (sollte er ja normal aber bei dem was mir bisher hier begegnet ist bin ich lieber vorsichtig :D)

€DIT: dieses Loop detection muss ich in jede while schleife packen die es überwachen soll oder reicht es einmal am anfang des skripts ?

mfg
Devidian
:nö: in jedes Script
Zur Zeit nicht aktiv
Devidian
Posts: 156
Joined: Thu, 25. Mar 04, 18:38
x4

Post by Devidian »

hrhr also das mit dem skript hab ich ebend auch selber rausgefunden hatte das START davor vergessen -.- nu funzt das auch. Gut dann kommt das while check ding an den anfang jedes scripts :D

So nun muss ich aber erstmal nen baustopp erzeugen wenn mehr als hmm mal gucken erstmal 100 Xenon schiffe im zielsektor sind. Weil grad waren an die 500 Xenon schiffe im Sektor und es hat so leicht geruckelt *hust* wenn du verstehst :D

Und ich glaub ich brauch nen neues Invasions Script für die Schiffe... 500 Schiffe im Sektor alle ballern wild durch die gegend aber nix geht kaputt (ich selbst bin in der station weil draussen bin ich gleich matsch mit nem M5 :D)
Devidian
Posts: 156
Joined: Thu, 25. Mar 04, 18:38
x4

Post by Devidian »

Gasar324648ffdgdf :evil: Ich hab jetzt 2h lang jeden sch**** tuto durchgelesen und alles ausprobiert aber ich krieg beim abfragen wieviele xenon schiffe im sektor sind immer 0 ausgegeben ARGH ! glaub ich brauch mal pause .... . .. .

mfg
Devidian
Mr.Gee
Posts: 207
Joined: Wed, 6. Nov 02, 20:31
x3

Post by Mr.Gee »

erstelle ein array, das Dir die Schiffe zurück gibt. Die größe des Arrays ist dann die Anzahl der Schiffe :wink:

probier mal meine lib-datei dafür. Kannst dann auch gleich ein array erhalten, das die feindschiffe nach stärke sortiert ausgibt.

siehe hier http://www.egosoft.com/x2/forum/viewtopic.php?t=39949
Devidian
Posts: 156
Joined: Thu, 25. Mar 04, 18:38
x4

Post by Devidian »

du meinst
$bla array size set 0
$bla = find ship ... [find.multiple]...
$num = size of array $bla

ausgabe von $num ins logbuch

?? wenn ja schon gemacht kommt immer 0 raus egal was ich wo warum überhaupt und ach ... sag jaa hab schon so gut wie alles ausprobiert

aber ich schau mal in deinem thema da... ich brauch aber nur die anzahl xenon schiffe .. welche is shit egal sollen nur net zu viele werden.

mfg
Devidian
ticaki
Posts: 4861
Joined: Wed, 6. Nov 02, 20:31
x3

Post by ticaki »

Devidian wrote:du meinst
$bla array size set 0
$bla = find ship ... [find.multiple]...
$num = size of array $bla

ausgabe von $num ins logbuch
Das in den Punkten wäre schon wichtig zu wissen um zu helfen und Mr.Gee's lib ist wirklich effektiv...
Zur Zeit nicht aktiv
Devidian
Posts: 156
Joined: Thu, 25. Mar 04, 18:38
x4

Post by Devidian »

na überall null ausser bei Rasse halt Xenon klappt doch bei find stations auch....

Code: Select all

002   $ships =  array alloc: size=0
003   $ships =  find ship: sector=Ringo Mond class or type=Xenon N race=Xenon flags=null refobj=null maxdist=null maxnum=1000 refpos=null
004   $num =  size of array $ships
005   send incoming message $num to player: display it=[TRUE]
bei sektor kommt normal variabel rein und bei class type NULL aber funzt beides nicht gibt mir immer 0 ins Log.

mfg
Devidian
Last edited by Devidian on Sat, 10. Apr 04, 21:54, edited 1 time in total.
ticaki
Posts: 4861
Joined: Wed, 6. Nov 02, 20:31
x3

Post by ticaki »

Und beim Sektor????
oder
versuchs mal damit MaxNum = 99999
Zur Zeit nicht aktiv
Devidian
Posts: 156
Joined: Thu, 25. Mar 04, 18:38
x4

Post by Devidian »

Siehe oben ^^ zu lang für den edit gebraucht :p

Bei obigem skript hätten mindestens 1 raus kommen müssen eher 100

mfg
Devidian
ticaki
Posts: 4861
Joined: Wed, 6. Nov 02, 20:31
x3

Post by ticaki »

Devidian wrote:na überall null ausser bei Rasse halt Xenon klappt doch bei find stations auch....

Code: Select all

002   $ships =  array alloc: size=0
003   $ships =  find ship: sector=Ringo Mond class or type=Xenon N race=Xenon flags=null refobj=null maxdist=null maxnum=1000 refpos=null
004   $num =  size of array $ships
005   send incoming message $num to player: display it=[TRUE]
bei sektor kommt normal variabel rein und bei class type NULL aber funzt beides nicht gibt mir immer 0 ins Log.

mfg
Devidian
Das da ^^^^ oben kann nicht gehen entweder steht bei Flags [Find.Multiple] oder aber du mußt die $NUM = size of Array weglassen... Wenn du es so machst erzeugt die find ship routine einen verweis auf ein Schiff und da kommt bei array size 0 raus.

Verstanden was ich meine :idea:

Gruß ticaki
Zur Zeit nicht aktiv
Devidian
Posts: 156
Joined: Thu, 25. Mar 04, 18:38
x4

Post by Devidian »

ähm ja das stand da vorher.. beim letzten versuch hab ichs mit NULL probiert und abgespeichert danach hab ich X ja beendet weil nix ging...

So sah das vorher aus:

Code: Select all

030   *$shiplist =  array alloc: size=0
031   *$shiplist =  find ship: sector=$InvSektor class or type=null race=Xenon flags=[Find.Multiple] refobj=$InvSektor maxdist=null maxnum=1000 refpos=null
032   *$xenonships =  size of array $shiplist
033   *send incoming message $xenonships to player: display it=[FALSE]
dann hatte ichs wie man sieht auskommentiert und nen extra skript gemacht wo nur erstmal nach der Zahl gesucht wird

mfg
Devidian
Last edited by Devidian on Sat, 10. Apr 04, 22:41, edited 1 time in total.
ticaki
Posts: 4861
Joined: Wed, 6. Nov 02, 20:31
x3

Post by ticaki »

Benutze die lib von Mr.Gee gibst du einfach überall null ein und bei der Race Xenon, dann bekommste alles was im Sektor ist.

Ist auch ein Testtool dabei! Ehrlich ich kann dir nicht helfen das liegt wieder an einem ganz dämlichen Fehler... Man was haben die mich schon stunden gekostet.
Zur Zeit nicht aktiv
Devidian
Posts: 156
Joined: Thu, 25. Mar 04, 18:38
x4

Post by Devidian »

ticaki wrote:Benutze die lib von Mr.Gee gibst du einfach überall null ein und bei der Race Xenon, dann bekommste alles was im Sektor ist.

Ist auch ein Testtool dabei! Ehrlich ich kann dir nicht helfen das liegt wieder an einem ganz dämlichen Fehler... Man was haben die mich schon stunden gekostet.
Oh ja die kenn ich zu hauf .. . bisher hab ich ja hauptsächlich PHP gescripted für meine webseiten.. manchmal brauch man echt pause dann startet man wieder und wunderweise funzt es dann auf einmal obwohl alles schonmal so war :evil:
Oder so dumme fehler wie gestern wo ich mich gewundert hab das immer nur Xenon N gebaut wurden tja wenn man die durchlaufnummer nicht incrementiert passiert das schonmal ^^ ist mir heut morgen beim aufstehen wien blitzgedanke eingefallen :D

Naja nochn bissle DAoC bis alle im bettchen sind aus Gilde dann nochmal gucken dann funzt es sicher.... *hoff*

mfg
Devidian
Devidian
Posts: 156
Joined: Thu, 25. Mar 04, 18:38
x4

Post by Devidian »

BOAAAAAA ich fress nen besen das is ja ncih wahr ey :lol: :lol: :lol:

So gehts:

Code: Select all

002   $ships =  array alloc: size=0
003   $ships =  find ship: sector=Argon Prime class or type=null race=Xenon flags=[Find.Multiple] refobj=null maxdist=null maxnum=1000 refpos=null
004   $num =  size of array $ships
005   $text = sprintf: fmt='Schiffe im Sektor -%s-', $num, null, null, null, null
006   send incoming message $text to player: display it=[TRUE]
007   return null
Na wo is der Fehler ? Der Penner hats nicht angenommen wenn ich als messi direkt $num rein gepackt hab.... muss erst formatiert werden wie oben damit ers anzeigt in der messi.... ergo gefunzt hats schon nur ausgeben wollte er nicht (was ja eigentlich dafür gedacht sein sollte um zu testen obs geht ...)

Fakt: maxnum darf net 0 sein und flags muss Find.Multipe sein alles andere is wurst wie Hose ;)

mfg
Devidian
Devidian
Posts: 156
Joined: Thu, 25. Mar 04, 18:38
x4

Post by Devidian »

Gut das funzt zwar aber ist nicht grad prikelnd weil -> wenn 10 schiffe im zielsektor = baustop -> schiffe die noch unterwegs sind kommen irgendwann an -> boom sektor unspielbar.

Andere Idee: allen schiffen die Werft als heimat zuweisen und immer überprüfen wieviele schiffe zu dieser werft gehören.
Problem 1: Nach vollendeter Invasion entweder alle Schiffe keine heimat zuweisen oder in neuen sektor schicken lassen.
Problem 2: Alle schiffe finden die als heimat die entsprechende Werft haben.

Mal sehen ob ich die Lösung finde bevor mir einer zuvor kommt ;)

mfg
Devidian

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