[DISKUSSION] Allgemeine S&M-Fragen
Moderators: Scripting / Modding Moderators, Moderatoren für Deutsches X-Forum
-
- Posts: 12969
- Joined: Sun, 9. May 04, 21:26
Code: Select all
481 $Array.Station = [THIS] -> get local variable: name='com.agent.station.list'
483
484 skip if $Array.Station
485 |$Array.Station = array alloc: size=0
488
489 $While = size of array $Array.Station
490 while $While
491 |dec $While =
492 |$Station = $Array.Station[$While]
493 |skip if $Station -> exists
494 ||remove element from array $Array.Station at index $While
495 end
Gruß
Lucike

-
- Posts: 1962
- Joined: Tue, 8. Jan 08, 18:19
-
- Posts: 12969
- Joined: Sun, 9. May 04, 21:26
Richtig, es passiert gar nichts. Ich arbeite nur so. Das Problem dabei ist, dass die Debug-Ausgabe bei Egosoft einen Fehler anzeigt und ich nun alle "nicht-kritischen" Arrays des HVT und WLS nacharbeiten soll bzw. muss. Bäh ... ist das lästig. Ein Grund mehr meine Skripte im S&M-Forum zu lassen.ScRaT_GER wrote:Bei <RetVar> size of array <Var/Array>
ist <RetVar> immer gleich "0" wenn <Var/Array> kein Array ist (z.B. null oder Integer) oder natürlich wenn der Array wirklich die Größe "0" hat.
Von daher sollte es eigentlich kein Problem sein die beiden Zeilen zu entfernen.
Gruß
Lucike

-
- Posts: 691
- Joined: Mon, 27. Aug 07, 12:34
kurze Frage: Wie finde ich am besten mehrere Objekte in einem Sektor, z.B. alle Marines in einem Sektor? Bei einem loop findet er immer das gleiche object.
Also bräuchte ich entweder eine Möglichkeit ein bereits gefundenes Objekt von der Suche auszuschließen (ohne es zu zerstören
),
oder ich bräuchte ein Array. Laut MSCI Onlinereferenz müsste der Befehl: find ship in sector (...) flag Find.Multiple ... ja ein array aller Schiffe ausgeben, auf die die Kriterien passen (in meinem Fall lediglich CLass-Raumanzug). Die Size des Arrays ist aber 0.
Andererseits scheint er ja ein Array auszugeben, sonst dürfte der Befehl get size of Array ja gar nicht gehen. Was ist da falsch?
Also bräuchte ich entweder eine Möglichkeit ein bereits gefundenes Objekt von der Suche auszuschließen (ohne es zu zerstören

oder ich bräuchte ein Array. Laut MSCI Onlinereferenz müsste der Befehl: find ship in sector (...) flag Find.Multiple ... ja ein array aller Schiffe ausgeben, auf die die Kriterien passen (in meinem Fall lediglich CLass-Raumanzug). Die Size des Arrays ist aber 0.
Andererseits scheint er ja ein Array auszugeben, sonst dürfte der Befehl get size of Array ja gar nicht gehen. Was ist da falsch?
-
- Moderator (Script&Mod)
- Posts: 14571
- Joined: Sun, 20. Nov 05, 22:45
ist die size 0 oder null (das ist nicht dasselbe, auch wenn es gerne gleich gesetzt wird
)?? und mit welchen Parametern hast du den Befehl bisher verwendet??

if not stated otherwise everything i post is licensed under WTFPL
Ich mache keine S&M-Auftragsarbeiten, aber wenn es fragen gibt wie man etwas umsetzen kann helfe ich gerne weiter
I wont do Script&Mod Request work, but if there are questions how to do something i will GLaDly help
Ich mache keine S&M-Auftragsarbeiten, aber wenn es fragen gibt wie man etwas umsetzen kann helfe ich gerne weiter

I wont do Script&Mod Request work, but if there are questions how to do something i will GLaDly help

-
- Posts: 1962
- Joined: Tue, 8. Jan 08, 18:19
Ja, wobei das schade wäre! Ohne deine Skripts wäre das Bonuspack ja ziemlich "leer".Lucike wrote:Ein Grund mehr meine Skripte im S&M-Forum zu lassen.
@Cronos988
D.h. folgender Befehl liefert nicht das richtige Ergebnis:
$array = find ship: sector=[SECTOR] class or type={Astronaut 2064} race=null flags=[Find.Multiple] refobj=null maxdist=null maxnum=null refpos=null
Anm.: Mit Exscriptor erstellt. {Astronaut 2064} dürfte im Spiel nur Astronaut heißen
Wenn ja, wüsste ich auch nicht weiter. Du könntest vielleicht noch etwas mit den Suchwerten experimentieren.
Sonst könntest du es vllt. mit
<RetVar/IF> <RefObj> -> get incoming marines
versuchen. Eventuell liefert das das gewünschte Ergebnis - ich weiß ja nicht was du vorhast.
Cronos988 wrote:Andererseits scheint er ja ein Array auszugeben, sonst dürfte der Befehl get size of Array ja gar nicht gehen. Was ist da falsch?
Ich denke mal, letzteres ist der Fall.ScRaT_GER wrote:Bei <RetVar> size of array <Var/Array>
ist <RetVar> immer gleich "0" wenn <Var/Array> kein Array ist (z.B. null oder Integer) oder natürlich wenn der Array wirklich die Größe "0" hat.
MfG,
ScRaT
-
- Posts: 691
- Joined: Mon, 27. Aug 07, 12:34
Der Befehl sieht so aus wie du ihn geschrieben hast. Class ist Raumanzug. Dass stimmt aber denn ohne find.multiple findet er einen Raumanzug, nur halt immer den gleichenScRaT_GER wrote: @Cronos988
D.h. folgender Befehl liefert nicht das richtige Ergebnis:
$array = find ship: sector=[SECTOR] class or type={Astronaut 2064} race=null flags=[Find.Multiple] refobj=null maxdist=null maxnum=null refpos=null
Anm.: Mit Exscriptor erstellt. {Astronaut 2064} dürfte im Spiel nur Astronaut heißen
Wenn ja, wüsste ich auch nicht weiter. Du könntest vielleicht noch etwas mit den Suchwerten experimentieren.
Sonst könntest du es vllt. mit
<RetVar/IF> <RefObj> -> get incoming marines
versuchen. Eventuell liefert das das gewünschte Ergebnis - ich weiß ja nicht was du vorhast.
Cronos988 wrote:Andererseits scheint er ja ein Array auszugeben, sonst dürfte der Befehl get size of Array ja gar nicht gehen. Was ist da falsch?Ich denke mal, letzteres ist der Fall.ScRaT_GER wrote:Bei <RetVar> size of array <Var/Array>
ist <RetVar> immer gleich "0" wenn <Var/Array> kein Array ist (z.B. null oder Integer) oder natürlich wenn der Array wirklich die Größe "0" hat.
MfG,
ScRaT

Get incoming Marines, geht, genauso wie get Marine Array of ship, nicht. Das gibt nur die Namen der Marines als array aus. Und einen Befehl um ein Schiff anhand eines Pilotennamens zu finden hab ich nicht gefunden.
Also der Befehl gibt "0" nicht "null" aus. Aber wenn dass bei dem Befehl keinen Unterschied macht, dann kriege ich vielleicht aus irgendeinem Grund kein Array.
Hier mal mein Code:
Code: Select all
$arr.marineobjects = find ship: sector=$sect.target class or type={Argon Space Suit} race=null flags=[Find.Multiple] refobj=[PLAYERSHIP] maxdist=2000 maxnum=null refpos=null
$int.marineobjects.size = size of array $arr.marineobjects
write to player logbook $int.marineobjects.size
-
- Posts: 1962
- Joined: Tue, 8. Jan 08, 18:19
Habe es gerade getestet. Allerdings nur mit Astronauten, also nicht der Schiffstyp Argon Raumanzug, sondern die Objektklasse Astronaut.
Hier der Code:
$array = find ship: sector=[SECTOR] class or type={Astronaut 2064} race=Neutrale flags=[Find.Multiple] refobj=null maxdist=null maxnum=$max.num refpos=null
$max.num muss wohl in Verbindung mit [Find.Multiple] angegeben werden, d.h. eine ausreichend hohe Zahl sollte immer funktionieren.
Ob race=Neutrale verwendet werden muss weiß ich nicht. Das herauszufinden ist allerdings nichts schwierig.
MfG,
ScRaT
Hier der Code:
$array = find ship: sector=[SECTOR] class or type={Astronaut 2064} race=Neutrale flags=[Find.Multiple] refobj=null maxdist=null maxnum=$max.num refpos=null
$max.num muss wohl in Verbindung mit [Find.Multiple] angegeben werden, d.h. eine ausreichend hohe Zahl sollte immer funktionieren.
Ob race=Neutrale verwendet werden muss weiß ich nicht. Das herauszufinden ist allerdings nichts schwierig.
MfG,
ScRaT
-
- Posts: 706
- Joined: Tue, 5. Apr 05, 16:34
Moin Moin
Ich habe da mal eine Frage.
Wie kann ich terranische Marines zu einer neu erstellten Station hinzufügen?
Ich habe bisher nur geschafft sie als Ware hinzuzufügen.
Cheers SoF
Ich habe da mal eine Frage.
Wie kann ich terranische Marines zu einer neu erstellten Station hinzufügen?
Ich habe bisher nur geschafft sie als Ware hinzuzufügen.
Cheers SoF
{C'mon}, sing with me, {sing}, sing for the years
{Sing it}, sing for the laughter, sing for the tears, {c'mon)
Sing it with me, just for today, maybe tomorrow the good Lord will take you
away... Eminem - Sing for the Moment
{Sing it}, sing for the laughter, sing for the tears, {c'mon)
Sing it with me, just for today, maybe tomorrow the good Lord will take you
away... Eminem - Sing for the Moment
-
- Posts: 293
- Joined: Mon, 19. Jan 09, 17:30
Kleine Frage....glaub ich.
Wenn ein Script auf einem Schiff läuft und in x min. ein Produkt y auf selbigem erzeugt, und dieses mit der Logbuchmeldung "abc" bestätigt - ich im Betrieb aber die Meldung in "def" ändere...kann es dann sein (oder ist es so) das das Script noch in der "alten" Form auf dem 1 Schiff weiterläuft, auf anderen Schiffen (wo es neu gestartet wurde) aber in der neuen ?
Sorry wenn lächerlich, aber von Struktur habe ich noch nicht so viel Ahnung.
Wenn ein Script auf einem Schiff läuft und in x min. ein Produkt y auf selbigem erzeugt, und dieses mit der Logbuchmeldung "abc" bestätigt - ich im Betrieb aber die Meldung in "def" ändere...kann es dann sein (oder ist es so) das das Script noch in der "alten" Form auf dem 1 Schiff weiterläuft, auf anderen Schiffen (wo es neu gestartet wurde) aber in der neuen ?
Sorry wenn lächerlich, aber von Struktur habe ich noch nicht so viel Ahnung.
***modified*** und............geht auch nicht anders.
-
- Moderator (Script&Mod)
- Posts: 14571
- Joined: Sun, 20. Nov 05, 22:45
ganz einfach: so lange ein Script läuft wird es für die Instanz in der es läuft zwischengespeichert, bis es beendet ist.. deswegen reicht es teilweise auch nicht ein Script zu entfernen um es zu deinstallieren.. das hat den Hintergrund dass von einer Version auf die nächste teilweise massive Änderungen passieren können und bei einer solchen änderung weiss das Aktive Script nicht, wo es weiter machen soll.. (auch wennn die änderung nur minimmal wäre -> der aufwand sowas einzubauen ist schlicht und einfach zu hoch)Draguun wrote:Kleine Frage....glaub ich.
Wenn ein Script auf einem Schiff läuft und in x min. ein Produkt y auf selbigem erzeugt, und dieses mit der Logbuchmeldung "abc" bestätigt - ich im Betrieb aber die Meldung in "def" ändere...kann es dann sein (oder ist es so) das das Script noch in der "alten" Form auf dem 1 Schiff weiterläuft, auf anderen Schiffen (wo es neu gestartet wurde) aber in der neuen ?
Sorry wenn lächerlich, aber von Struktur habe ich noch nicht so viel Ahnung.
if not stated otherwise everything i post is licensed under WTFPL
Ich mache keine S&M-Auftragsarbeiten, aber wenn es fragen gibt wie man etwas umsetzen kann helfe ich gerne weiter
I wont do Script&Mod Request work, but if there are questions how to do something i will GLaDly help
Ich mache keine S&M-Auftragsarbeiten, aber wenn es fragen gibt wie man etwas umsetzen kann helfe ich gerne weiter

I wont do Script&Mod Request work, but if there are questions how to do something i will GLaDly help

-
- Posts: 293
- Joined: Mon, 19. Jan 09, 17:30
-
- Posts: 13244
- Joined: Fri, 13. Jan 06, 16:39
Jo, dat is normal.Draguun wrote:Wenn ein Script auf einem Schiff läuft und in x min. ein Produkt y auf selbigem erzeugt, und dieses mit der Logbuchmeldung "abc" bestätigt - ich im Betrieb aber die Meldung in "def" ändere...kann es dann sein (oder ist es so) das das Script noch in der "alten" Form auf dem 1 Schiff weiterläuft, auf anderen Schiffen (wo es neu gestartet wurde) aber in der neuen ?
Das Setup script schreibt für gewöhnlich die Version in eine globale Variable.
Die Arbeitsscripts fragen die regelmäßig ab und wenn die Version eine andere ist als die, mit der das Script gestartet wurde, startet sich das Arbeitsscript neu.
Mit "der" Version des Arbeitsscripts zu arbeiten geht auch, aber flexibler ist es, bei Scriptstart die globale version abzufragen und bei Änderung: Neustart.
Ganz egal welche scriptversion es war oder ist oder ob das Arbeitsscript überhaupt eine Version hatte... damit erwischt man sie alle.
Und man hat die Scriptversion ganz zentral nur im setup script, spart sich also das Umhergetippe in sämtlichen Scripts.
Es kann also nicht passieren daß das eine Script sich updated, ein anderes aber nicht.
Wenn schon, dann alle. Das spart langfristig einiges an Kopfschmerzen. =)
My complete script download page. . . . . . I AM THE LAW!
There is no sense crying over every mistake. You just keep on trying till you run out of cake.
There is no sense crying over every mistake. You just keep on trying till you run out of cake.
-
- Posts: 1962
- Joined: Tue, 8. Jan 08, 18:19
Ich experimentiere momentan (gedanklich) etwas mit dem Wirtschaftssystem von X.
Dabei ist mir aufgefallen, dass einer NPC Fabrik immer 2 Mill. Cr zur Verfügung stehen - diesem Wert konnte ich bisher mit keinem Befehl beeinflussen.
Wird evtl. in irgendeinem Skript der Wert ständig auf 2 Mill. gesetzt oder ist es wieder so ein berühmter "hardcoded" Fall?
Anders gefragt: Ist es auf eine einfache Art und Weise möglich, dass eine NPC Station nicht ständig 2 Mill. Cr besitzt?
MfG,
ScRaT
Dabei ist mir aufgefallen, dass einer NPC Fabrik immer 2 Mill. Cr zur Verfügung stehen - diesem Wert konnte ich bisher mit keinem Befehl beeinflussen.
Wird evtl. in irgendeinem Skript der Wert ständig auf 2 Mill. gesetzt oder ist es wieder so ein berühmter "hardcoded" Fall?
Anders gefragt: Ist es auf eine einfache Art und Weise möglich, dass eine NPC Station nicht ständig 2 Mill. Cr besitzt?
MfG,
ScRaT
-
- Moderator (Script&Mod)
- Posts: 14571
- Joined: Sun, 20. Nov 05, 22:45
soweit ich weiss hat die KI immer unendlich Geld, ich tippe deswegen auf Hardcode.. (genau genommen bezweifle ich, dass es bei KI-Stationen sowas wie nen Konto gibt.. der befehl gibt dir warscheinlich nur 2 milliarden zurück, damit man per script immer feststellen kann dass die Station genug Geld hat um alles zu machen..)
PS mal nen kleiner Versuch den du machen kannst, vielleicht funktionierts ja ^^:
beliebige Spielerstation erstellen
1 Mio. auf das Konto von dieser gutschreiben
Kontostand der Station loggen
Besitzer auf Argonen oder so ändern
Kontostand der Station loggen
Besitzer wieder zurück auf Spieler ändern
Kontostand der Station loggen
PS mal nen kleiner Versuch den du machen kannst, vielleicht funktionierts ja ^^:
beliebige Spielerstation erstellen
1 Mio. auf das Konto von dieser gutschreiben
Kontostand der Station loggen
Besitzer auf Argonen oder so ändern
Kontostand der Station loggen
Besitzer wieder zurück auf Spieler ändern
Kontostand der Station loggen
if not stated otherwise everything i post is licensed under WTFPL
Ich mache keine S&M-Auftragsarbeiten, aber wenn es fragen gibt wie man etwas umsetzen kann helfe ich gerne weiter
I wont do Script&Mod Request work, but if there are questions how to do something i will GLaDly help
Ich mache keine S&M-Auftragsarbeiten, aber wenn es fragen gibt wie man etwas umsetzen kann helfe ich gerne weiter

I wont do Script&Mod Request work, but if there are questions how to do something i will GLaDly help

-
- Posts: 1962
- Joined: Tue, 8. Jan 08, 18:19
-
- Posts: 706
- Joined: Tue, 5. Apr 05, 16:34
Song of Freedom wrote:Moin Moin
Ich habe da mal eine Frage.
Wie kann ich terranische Marines zu einer neu erstellten Station hinzufügen?
Ich habe bisher nur geschafft sie als Ware hinzuzufügen.
Cheers SoF
{C'mon}, sing with me, {sing}, sing for the years
{Sing it}, sing for the laughter, sing for the tears, {c'mon)
Sing it with me, just for today, maybe tomorrow the good Lord will take you
away... Eminem - Sing for the Moment
{Sing it}, sing for the laughter, sing for the tears, {c'mon)
Sing it with me, just for today, maybe tomorrow the good Lord will take you
away... Eminem - Sing for the Moment
-
- Moderator (Script&Mod)
- Posts: 14571
- Joined: Sun, 20. Nov 05, 22:45
ich tippe mal darauf, dass der Wert auch bei KI-Stationen existiert, aber es in dem Befehl zur abfrage des Guthabens ne abfrage in dieser art gibt:ScRaT_GER wrote:Ah, interessantes Ergebnis:
Der Kontostand wird bei der NPC Station direkt auf 2 Mill. angehoben. Gibt man die Station zurück in Spielerbesitz wird allerdings der ursprüngliche Kontostand wieder hergestellt. Irgendwo muss also der "richtige" Kontostand gespeichert sein.
Nur wo...
MfG,
ScRaT
if [OWNER] != player
| return 2.000.000.0000
else
| return real money
es wäre mal interresant zu wissen, ob es vielleicht bei anderen Rassen klappt.. (ich meine eher bisher für Stationen ungenutze wie Yaki, Piraten, Race1, Race2)
Ausserdem könnte man mal versuchen, den Lagerstand der Ware Credits abzufragen, wobei ich eher bezweifle dass es funktioniert aber einen versuch ist es wert ^^
if not stated otherwise everything i post is licensed under WTFPL
Ich mache keine S&M-Auftragsarbeiten, aber wenn es fragen gibt wie man etwas umsetzen kann helfe ich gerne weiter
I wont do Script&Mod Request work, but if there are questions how to do something i will GLaDly help
Ich mache keine S&M-Auftragsarbeiten, aber wenn es fragen gibt wie man etwas umsetzen kann helfe ich gerne weiter

I wont do Script&Mod Request work, but if there are questions how to do something i will GLaDly help

-
- Posts: 1962
- Joined: Tue, 8. Jan 08, 18:19
@ Song of Freedom
Ich vermute mal, das weiß hier keiner, sonst hätte man dir sicher schon geantwortet. Du könntest es im englischen Forum versuchen - vielleicht weiß Cycrow etwas mehr darüber.
, funktioniert aber leider nicht.
Mit Race 1 und 2 ist es das gleiche.
Eine andere Idee wäre, die Station dann eben ganz kurz in Spielerbesitz zu geben, also so in der Richtung:
$owner = $station -> get owner race
$station -> set owner race to {Player}
$money = $station -> get money
$station -> set owner race to $owner
Könnte das zu irgendwelchen "Komplikationen" führen, sodass z.B. irgendwelche Skripts unterbrochen werden?
Oder man macht es auf einem kleinen Umweg, indem man immer statt dem normalen Befehl eine lokale Variable abfragt. Das ist nur so "unschön"...
MfG,
ScRaT
EDIT: Wie kann man eigentlich die Rotationswerte aus dem Spiel interpretieren. Die reichen ja von 0 bis 65536, d.h. 1° entspricht 65535/360° ?
Ich vermute mal, das weiß hier keiner, sonst hätte man dir sicher schon geantwortet. Du könntest es im englischen Forum versuchen - vielleicht weiß Cycrow etwas mehr darüber.
Lustige VorstellungUniTrader wrote:Ausserdem könnte man mal versuchen, den Lagerstand der Ware Credits abzufragen, wobei ich eher bezweifle dass es funktioniert aber einen versuch ist es wert ^^

Mit Race 1 und 2 ist es das gleiche.
Eine andere Idee wäre, die Station dann eben ganz kurz in Spielerbesitz zu geben, also so in der Richtung:
$owner = $station -> get owner race
$station -> set owner race to {Player}
$money = $station -> get money
$station -> set owner race to $owner
Könnte das zu irgendwelchen "Komplikationen" führen, sodass z.B. irgendwelche Skripts unterbrochen werden?
Oder man macht es auf einem kleinen Umweg, indem man immer statt dem normalen Befehl eine lokale Variable abfragt. Das ist nur so "unschön"...
MfG,
ScRaT
EDIT: Wie kann man eigentlich die Rotationswerte aus dem Spiel interpretieren. Die reichen ja von 0 bis 65536, d.h. 1° entspricht 65535/360° ?