[DISKUSSION] Allgemeine S&M-Fragen III

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

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

Post Reply
FritzHugo3
Posts: 4663
Joined: Mon, 6. Sep 04, 17:24
x4

Post by FritzHugo3 » Sat, 8. Sep 18, 23:06

Mal ne gaaanz doofe Frage. Ich weis ja, bei den Vanilla Befehlen wird Nvidium alles andere als bevorzugt behandelt.

Was ich aber nicht ganz verstehe ist

Code: Select all

...$flags = [Find.Nearest] | [Find.Multiple] | 32768
$range = [THIS]-> get scanner range
$warearray = find debris: sector=[SECTOR] resource=null min yield=null flags=$flags refobj=[THIS] num=5 maxdist=$range refpos=null...
Das steht so im orginal Script drinnen. wenn ich jetzt einen Frachter neben Nvidium debris stehen habe, fliegt er von den Debris weg zum Ar**h des Sektors und lässt sich lieber bei den Erz Debris nieder.

Verstehe ich die Zeile denn falsch?

Code: Select all

$warearray = find debris: sector=[SECTOR] resource=null min yield=null flags=$flags refobj=[THIS] num=5 maxdist=$range refpos=null
Ich lese das ganze so, Variablename finde die am nächstgelegendsten Kleinstasteroiden im Sektor xy, ohne spezielle Sorte (also alle Erze, Silizium, Eis und Nividium gleichermaßen ohne etwas zu bevorzugen), ..., ..., Referenz Entfernung zu diesem Schiff, 5 Debris auf einmal, und in Scannerreichweite

Warum aber werden schon jetzt die Nividium Debris ignoriert?
(Also ohne das ein Auschschluss von Nividium definiert wurde) ist das im Hardcode hinterlegt oder wo?
Und warum fliegen die Schiffe irgendwann zu einem entfernteren Debrifeld, obwohl noch in dem gleichen Bereich Debris mit Erzen vorhanden sind (also keine wertlose leere Felsen). Er sucht doch laut Befehlszeile die am naheliegendsten.


(Der gesammte Code ist hier zu finden !ship.cmd.collectrocks.std und !move.collectrocks und nirgends wird Nvidium erwähnt)

Ausserdem ist mir aufgefallen, das die Frachter die Debris in X3 gar nicht mehr berühren zum einsammeln. Mir war so, als hätten die das in X2 noch getan oder täusche ich mich da?


Wenn ich oben statt nach 5, wie das orginalscript nach num=1 bzw. NULL suche und mir das per Logbuch ausgebe, bekomme ich wie gewünscht ein Erz/Silizium... zurück. Aber, wenn ich dann dieses $warearray (mit $warearray) sprengen lasse (destruct), dann verschwinden gleich mehrere Kleinstasteroiden (teilweise auch die nächst größeren, wo drei der ganz kleinen raus kommen). Kann mir das einer Erklären?
Wie bekomme ich nur den einen kleinsten einsammelbaren Asteroiden zur Auswahl in die Suche? (gibt ja die Abfrage, ob das Steinchen einsammelbar ist aber das nützt ja auch nichts, wenn bei destruct gleich ein kleineres Feld abgerissen wird, sattt nur ein einzelnes.
Ich fordere mehr und vorallem gerechtere Verteilung von Keksen und Süßkram für die "Magischen 20"! Daher wählen Sie jetzt die DPFGKV, die Deutsche Partei für gerechtere Keks - Verteilung!

User avatar
JSDD
Posts: 1378
Joined: Fri, 21. Mar 14, 20:51
x3tc

Post by JSDD » Fri, 14. Sep 18, 14:05

die 32768 dort oben sehen zwar komisch aus, aber werden hoffentlich ihren sinn haben (Find.Known ?)

die 5 bedeuten, dass bis zu 5 trümmer gefunden werden ... gib 999999999 ein, und es werden alle trümmer im sektor gefunden (auf die die $flags zutreffen!)

zum einsammeln reicht ein nahes ranfliegen afaik aus

ich seh auch kein code, der explizit nividium ausschließt

deine auffassung des scripts ist soweit richtig

---------------------------------------------------------

sind die nahegelegenen trümmer denn einsammelbar ? (d.h. klein genug)

hardcode sollte da nix sein ...

wenn du es testen willst, dann lass alle trümmer finden (5 ersetzen durch 9999) im separaten script (!!!) und setz bei resource = nividium ein (unter ware -> minerals -> ... suchen, denn es gibt afaik verwirrenderweise 2 verschiedene sorten im game)

dann machst du:

$X = size of array $warearray
write to logbook $X
write to logbook " nividium truemmer gefunden"

guck nach wieviele das game findet ... bei 0 stimmt etwas nicht, falls es tatsächlich nividium gibt ...


nochwas: [SECTOR] ist der sektor des objekts, auf welchem das script läuft, d.h. z.b. das schiff mit dem kommando "sammle astros ein ...". lässt du das script via "R --> enter --> enter" laufen, dann wähl nach "R ..." nicht "null" aus (via enter), sondern DEIN spielerschiff, so sollte es klappen ...
To err is human. To really foul things up you need a computer.
Irren ist menschlich. Aber wenn man richtig Fehler machen will, braucht man einen Computer.


Mission Director Beispiele

FritzHugo3
Posts: 4663
Joined: Mon, 6. Sep 04, 17:24
x4

Post by FritzHugo3 » Fri, 14. Sep 18, 15:29

Danke dir JSDD für dein Antworten, habe vergessen die Frage zu entfernen, meine Scripterweiterung ist bereits veröffentlicht. Scheinbar ist es nicht möglich einen einzelnen Kleinstasteroiden zu erfassen und diesen mit destruct zu sprengen. Es wird immer das ganze Yield mit entfernt, egal ob man nach 1 oder 5 sucht. Rechnerisch macht es im Durchschnitt zwar keinen großen Unterschied mehr, aber dennoch unschön. Was solls, ist, wies ist und funzt so grins.
( https://forum.egosoft.com/viewtopic.php?t=400081 )
Last edited by FritzHugo3 on Sun, 16. Sep 18, 00:12, edited 1 time in total.
Ich fordere mehr und vorallem gerechtere Verteilung von Keksen und Süßkram für die "Magischen 20"! Daher wählen Sie jetzt die DPFGKV, die Deutsche Partei für gerechtere Keks - Verteilung!

User avatar
JSDD
Posts: 1378
Joined: Fri, 21. Mar 14, 20:51
x3tc

Post by JSDD » Sat, 15. Sep 18, 09:04

weiß nicht, was du vor hast, aber destruct nutzt man nicht fürs einsammeln ...

mit:

Code: Select all

if $truemmer -> has collectible rocks
... checkt man, ob die trümmer sammelbar sind
wenn nicht, dann könnt man vesuchen, via:

Code: Select all

$truemmer -> destruct: show no explosion= [FALSE]
... die trümmer zu zerkleinern, sollte das auch nicht gehen, dann halt via MBS laser abfeuern
To err is human. To really foul things up you need a computer.
Irren ist menschlich. Aber wenn man richtig Fehler machen will, braucht man einen Computer.


Mission Director Beispiele

FritzHugo3
Posts: 4663
Joined: Mon, 6. Sep 04, 17:24
x4

Post by FritzHugo3 » Sat, 15. Sep 18, 12:09

Transporter + Debris = keine Kaputten Schiffe mehr. Da das Schiff die nun nicht mehr persönlich einsammelt, sondern direkt in den Frachtraum "gebeamt" werden, müssen die Debris mit destruct zerstört werden. Und das geht, wie gesagt wohl scheinbar leider nicht einzeln, nur per yield.

([TRUE], sonst ist es bissle laut ;-) ).

Aber wie gesagt, das Script ist bereits veröffentlicht und ich bin lediglich noch am Balancen der Wartezeit zwischen den einzelnen "Beamvorgängen", das soll ja kein Cheat werden. Kannst du aber auf der Seite nachlesen, wenn du magst.
Ich fordere mehr und vorallem gerechtere Verteilung von Keksen und Süßkram für die "Magischen 20"! Daher wählen Sie jetzt die DPFGKV, die Deutsche Partei für gerechtere Keks - Verteilung!

User avatar
JSDD
Posts: 1378
Joined: Fri, 21. Mar 14, 20:51
x3tc

Post by JSDD » Sat, 15. Sep 18, 15:50

TRUE = objekt wird rückstandslos vernichtet
FALSE = objekt wird nur kaputt gemacht

FritzHugo3 wrote:Transporter + Debris = keine Kaputten Schiffe mehr. Da das Schiff die nun nicht mehr persönlich einsammelt, sondern direkt in den Frachtraum "gebeamt" werden, müssen die Debris mit destruct zerstört werden.
warum? geht der befehl nicht:

Code: Select all

$gesammelte.menge = [THIS] -> catch ware object $truemmer
IS wirds vanilla wie oben gemacht, OOS wird nur die yield-zahl des trümmers in den frachtraum transferiert, originaler trümmer bleibt unbeführt ...


das vanilla-script sieht so aus:

Code: Select all

Script !move.collectrocks
Version: 1
for Script Engine Version: 43
Description
Let ship collect debris flying around in an active sector
Arguments

    1: wareobj , Value , 'GALOBJ of debris'

Source Text

001 @ = wait randomly from 100 to 200 ms
002   skip if $wareobj -> exists
003   |return null
004   skip if $wareobj -> is of class Debris
005   |return null
006   
007   * check if debris mineral typ is loadable
008   
009   $ware = $wareobj -> get resource waretype of asteroid
010   
011   skip if [THIS] -> can transport ware $ware
012   |return null
013   $free = [THIS] -> get free amount of ware $ware in cargo bay
014   skip if $free
015   |return null
016   
017   * mining hack to speed up the process
018   if not [THIS] -> is in active sector
019   |$mineral.yield = $wareobj -> get asteroid yield
020   |$unit.amount = $wareobj -> get debris count
021   |skip if $unit.amount
022   ||inc $unit.amount = 
023   |$sector = $wareobj -> get sector
024   |$x = $wareobj -> get x position
025   |$y = $wareobj -> get y position
026   |$z = $wareobj -> get z position
027 @ |= [THIS] -> call script '!move.movetoposition' :  sector=$sector  position x=$x  position y=$y  position z=$z  precision=2500
028   |if not [THIS] -> is in active sector
029   ||while $mineral.yield > 0
030   |||dec $mineral.yield = 
031   |||$ret =  = random value from 25000 to 35000 - 1
032 @ |||= [THIS] -> move around $ret ms
033 @ |||= [THIS] -> move to position: x=$x y=$y z=$z with precision 1500 m
034 @ |||= wait 130 ms
035   |||skip if [THIS] -> get free amount of ware $ware in cargo bay
036   ||||break
037   |||skip if not [THIS] -> is in active sector
038   ||||break
039   |||= [THIS] -> add $unit.amount units of $ware
040   ||end
041   |end
042   |return null
043   end
044   
045   * normal collecting routine
046   while 1
047   |skip if $wareobj -> exists
048   ||return null
049   |
050   |skip if $wareobj -> has collectible rocks
051   ||return null
052   |
053   |$sector = $wareobj -> get sector
054   |if $sector != [ENVIRONMENT]
055 @ ||= [THIS] -> call script '!move.movetosector' :  sector=$sector
056 @ ||= wait randomly from 250 to 500 ms
057   ||continue
058   |end
059   |if $ret == FLRET_FIREFREE
060   ||if $wareobj -> has collectible rocks
061   |||$catchedamount = [THIS] -> catch ware object $wareobj
062   |||return $catchedamount
063   ||end
064   ||$ret = FLRET_TIMEOUT
065 @ ||= wait randomly from 100 to 200 ms
066   ||continue
067   |end
068   |
069 @ |$ret = [THIS] -> move to ware object $wareobj for collecting: timeout=60000 ms
070   |if $ret != FLRET_FIREFREE
071   ||skip if $ret == FLRET_INTERRUPTED OR $ret == FLRET_TIMEOUT
072   |||return null
073 @ ||= wait randomly from 100 to 200 ms
074   |end
075   end
076   return null
To err is human. To really foul things up you need a computer.
Irren ist menschlich. Aber wenn man richtig Fehler machen will, braucht man einen Computer.


Mission Director Beispiele

FritzHugo3
Posts: 4663
Joined: Mon, 6. Sep 04, 17:24
x4

Post by FritzHugo3 » Sun, 16. Sep 18, 00:08

Wer sagt denn das der Befehl

Code: Select all

$gesammelte.menge = [THIS] -> catch ware object $truemmer
nicht geht?
Das Schiff muss dazu aber heran fliegen und das ist genau, was ich mit einem installierten Transporter nicht möchte, weil die Schiffe dann gegen die Asteroiden fliegen und zerstört werden.

Und das funktioniert auch wunderbar, wie ich es jetzt habe. wie gesagt, das Thema ist schon erledigt.

Im übrigen habe ich lediglich die vanilla Orginaldatei erweitert. Steht alles auf der Seite, wenn du meinem Link folgst. Es gibt kein Problem mehr (die auf einfachem Wege lösbar wären), das Script funktioniert.
(Wie ich es im meinem zweiten Post bereits geschrieben hatte)

So spare ich mir eine Textdatei, es braucht kein neues Comand, kein Menü oder sonst was. Was ganz schlichtes, was funktioniert. Wer das erweitern möchte, falls ihm was fehlt, darf das gerne machen.

Trotzdem danke für deine Bemühung.
Ich fordere mehr und vorallem gerechtere Verteilung von Keksen und Süßkram für die "Magischen 20"! Daher wählen Sie jetzt die DPFGKV, die Deutsche Partei für gerechtere Keks - Verteilung!

Bigeagle
Posts: 288
Joined: Mon, 15. Jan 07, 21:20
xr

Re: [DISKUSSION] Allgemeine S&M-Fragen III

Post by Bigeagle » Mon, 1. Oct 18, 18:15

Ich bin etwas unsicher was die kompatibilität von TC scripts in AP angeht.

1. Wird der TC scriptordner in AP überhaupt genutzt?
2. Wenn ich TC scripts in den addon\scripts ordner schiebe stimmt doch die versionsnummer nicht. muss ich die ändern, oder akzeptiert AP auch TC scripts?
3. wie sieht die ladereihenfolge bei mods aus? TC 01-xx.cat/dat und danach addon\01-xx.cat/dat?
4. gibt es noch was wichtiges dazu?
^^_^^

FritzHugo3
Posts: 4663
Joined: Mon, 6. Sep 04, 17:24
x4

Re: [DISKUSSION] Allgemeine S&M-Fragen III

Post by FritzHugo3 » Mon, 1. Oct 18, 18:44

Zu 1 und 2
Soweit ich weis, kannst du die Scripte von X2, X3, X3:TC in den Ordner X3:AP-Addon (Scripte, t) kopieren.
(es wurden nur einige wenige Befehlszeilen verändert, die in AP etwas anders heißen)
(Umgekehrt ist aber nicht alles Abwärtskompatiebel, Scripte für AP werden größtenteils nicht in X2 funktionieren)

Savegameordner Sichern, vanilla Scriptordner sichern und dann einfach ausprobieren oder im einzelnen Thread der Erweiterung nachfragen, wenn du ganz sicher gehen möchtest.

Zu 3, habe ich nie benutzt diese Variante der Modifikation.
Bei ganzen Modpacks, würde ich einfach nachfragen, wenn nichts in den Installationsanweisungen steht.

4. Mit Backups kann dir ja nicht viel passieren
(Bei Steam vielleicht die Savegamecloud aus machen, damit da nichts durcheinander kommen kann. Hab ich bei mir grundsätzlich aus bei allen Spielen, da ich mit nur einem PC keinen Mehrnutzen sehe).

Schönen Tag dir.
Ich fordere mehr und vorallem gerechtere Verteilung von Keksen und Süßkram für die "Magischen 20"! Daher wählen Sie jetzt die DPFGKV, die Deutsche Partei für gerechtere Keks - Verteilung!

Gamefreak
Posts: 360
Joined: Sat, 7. Nov 09, 12:19

Re: [DISKUSSION] Allgemeine S&M-Fragen III

Post by Gamefreak » Sun, 28. Oct 18, 13:08

Seit sehr langer Zeit spiele ich mal wieder X3TC. Liegt auch daran, dass ich mir per GOG (mag kein Steam) X3TC+AP geholt habe.

Ich will mir ein Skript zusammen bauen, dass einer Schiffswerft alle Stationen einer Rasse hinzufügt. Bei den Schiffen habe ich eine entsprechende Vorlage gefunden die funktioniert, bei den Stationen allerdings nicht und die Schiffsvorlage für die Stationen zu modifizeren hat auch nichts gebracht :evil: . Um ehrlich zu sein, bin auch nicht gut darin zu scripten :roll: .

Ist es überhaupt möglich? Gibt es vielleicht schon ein Skript, dass genau dies macht?

FritzHugo3
Posts: 4663
Joined: Mon, 6. Sep 04, 17:24
x4

Re: [DISKUSSION] Allgemeine S&M-Fragen III

Post by FritzHugo3 » Sun, 28. Oct 18, 14:50

Gamefreak wrote:
Sun, 28. Oct 18, 13:08
Seit sehr langer Zeit spiele ich mal wieder X3TC. Liegt auch daran, dass ich mir per GOG (mag kein Steam) X3TC+AP geholt habe.

Ich will mir ein Skript zusammen bauen, dass einer Schiffswerft alle Stationen einer Rasse hinzufügt. Bei den Schiffen habe ich eine entsprechende Vorlage gefunden die funktioniert, bei den Stationen allerdings nicht und die Schiffsvorlage für die Stationen zu modifizeren hat auch nichts gebracht :evil: . Um ehrlich zu sein, bin auch nicht gut darin zu scripten :roll: .

Ist es überhaupt möglich? Gibt es vielleicht schon ein Skript, dass genau dies macht?
Bin jetzt nicht im Spiel und mach das nur mal eben gut dünkend aus dem Kopf.
Soweit ich mich erinnere werden Stationen wie Produkte bei den AD's hinzugefügt.
Irgendwas mit
Set product to Station
add product to Station
An für sich sollte es bei den Schiffen nicht viel anders gewesen sein.

Zeig uns doch mal dein bisheriges Script
[.spoiler][.code]Hier Code (ohne die Punkte)[./code][./spoiler]
Ich fordere mehr und vorallem gerechtere Verteilung von Keksen und Süßkram für die "Magischen 20"! Daher wählen Sie jetzt die DPFGKV, die Deutsche Partei für gerechtere Keks - Verteilung!

Gamefreak
Posts: 360
Joined: Sat, 7. Nov 09, 12:19

Re: [DISKUSSION] Allgemeine S&M-Fragen III

Post by Gamefreak » Sun, 28. Oct 18, 15:49

Damit ich nicht falsch verstanden werde: Wie ich eine einzelne Station einer Werft hinzufügen kann hab ich schon geschafft. Aber ich will nicht jede einzelne Station auswählen müssen.

Mein bisheriges Skript für die Schiffe:
Spoiler
Show

Code: Select all

Argument1: station, Var/Station, 'Wähle Werft'

$ships = get ship type array: maker race=ATF class=Bewegliches Schiff
  $i = size of array $ships
  while $i
    dec $i = 
    $ware = $ships[$i]
    $station ->add product to factory or dock: $ware
    = $station -> add 1 units of $ware
  end
  return null
Das bisherige Skript für die Stationen:
Spoiler
Show

Code: Select all

Argument1: station, Var/Station, 'Wähle Werft'

$station.array =  get station array: of race Argonen class/type=Fabrik
  $i = size of array $station.array
  while $i
    dec $i = 
    $ware = $station.array[$i]
    $station ->add product to factory or dock: $ware
    = $station -> add 1 units of $ware
  end
  return null
Bei den Schiffen geht es wunderbar. Nur bei den Stationen bin ich derzeit planlos.
Habe es jetzt vom Skript Editor abgeschrieben, da ich sonst nicht wüsste wie es anders geht. Hoffentlich korrekt.

EDIT: Code direkt aus der XML rauskopiert.
Last edited by Gamefreak on Sun, 28. Oct 18, 17:16, edited 3 times in total.

FritzHugo3
Posts: 4663
Joined: Mon, 6. Sep 04, 17:24
x4

Re: [DISKUSSION] Allgemeine S&M-Fragen III

Post by FritzHugo3 » Sun, 28. Oct 18, 16:56

Ah ok, dann hab ich dich in der Tat falsch verstanden, du möchtest quasi ein Wildcard ala suche selber alle Stationstypen heraus und schmeiß sie nach einander in die Station rein. Mit Tablen/Arrays kann ich dir leider nicht wirklich helfen, auch weiß ich nicht, ob das bei Stationen (dazu noch rassenspezifisch) überhaupt möglich und sinnvoll ist. Ich hab das bei meinen Scripten immer händisch gemacht.

Abschreiben musst du keine Scripte. Das sind normale Textfiles, die du mit notepad++ (oder was anderem) in Windows öffnen kannst.
Es gibt auch einen externen Scripteditor zum Spiel, ich persönlich nutze den aber höchstens um was innerhalb der Scripte zu kopieren/verschieben und so zeugs.
Ich fordere mehr und vorallem gerechtere Verteilung von Keksen und Süßkram für die "Magischen 20"! Daher wählen Sie jetzt die DPFGKV, die Deutsche Partei für gerechtere Keks - Verteilung!

User avatar
X2-Illuminatus
Moderator (Deutsch)
Moderator (Deutsch)
Posts: 24961
Joined: Sun, 2. Apr 06, 16:38
x4

Re: [DISKUSSION] Allgemeine S&M-Fragen III

Post by X2-Illuminatus » Sun, 28. Oct 18, 17:18

Gamefreak wrote:
Sun, 28. Oct 18, 15:49
Habe es jetzt vom Skript Editor abgeschrieben, da ich sonst nicht wüsste wie es anders geht. Hoffentlich korrekt.
Auf das entsprechende Script im scripts-Order (oder jedem anderen Ordner, in dem die x2script.xsl liegt) doppelklicken. Anschließend sollte sich die Browseransicht des Scripts öffnen, und du kannst den Scripttext in code-tags in deinen Forenbeitrag kopieren.

Der Grund, warum dein Script nicht funktioniert, liegt indes am verwendeten Befehl:

Code: Select all

$station.array = get station array: of race = Argonen class/type = Fabrik
Im Gegensatz zu "get ship type" bei Schiffen erhältst du hier nicht ein Array mit Stationstypen sondern mit existierenden Stationen im Universum. Wenn du dir den Inhalt von $station.array ins Logbuch ausgibst, sollte das klar werden. Einen Befehl, um Stationstypen zu erhalten, gibt es wohl nicht. Es gibt einige Möglichkeiten, was du alternativ machen kannst:
1) Du erweiterst dein bisheriges Script, um die Abfrage nach dem Stationstyp. Diesen erhältst du mithilfe von <RetVar><RefObj> get ware type code of object. Problem hierbei: Nicht alle NPC-Stationen sind für den Spieler gedacht.
2) Du lässt eine Schleife über alle Subtypes von Maintype 6 (Factories) laufen. Mit dem Befehl <RetVar> = get ware from maintype <Var/Number> and subtype <Var/Number> erhältst du den entsprechenden Stationstyp. Anschließend könntest du prüfen, ob die Station von einer bestehenden Schiffswerft als Ware angeboten wird, und wenn ja, diese deiner gewählten Schiffswerft hinzufügen.
3) Du prüfst direkt, welche Stationen von Schiffswerften verkauft werden und fügst diese deiner gewählten Schiffswerft hinzu.
Last edited by X2-Illuminatus on Fri, 2. Nov 18, 18:48, edited 1 time in total.
Reason: Zwei Rechtschreibfehler beseitigt
Nun verfügbar! X3: Farnham's Legacy - Ein neues Kapitel für einen alten Favoriten

Die komplette X-Roman-Reihe jetzt als Kindle E-Books! (Farnhams Legende, Nopileos, X3: Yoshiko, X3: Hüter der Tore, X3: Wächter der Erde)

Neuauflage der fünf X-Romane als Taschenbuch

The official X-novels Farnham's Legend, Nopileos, X3: Yoshiko as Kindle e-books!

Gamefreak
Posts: 360
Joined: Sat, 7. Nov 09, 12:19

Re: [DISKUSSION] Allgemeine S&M-Fragen III

Post by Gamefreak » Fri, 2. Nov 18, 18:36

Lösung 1 hat geklappt, auch wenn ich einige der Stationen dann halt manuell entfernen muss.

Lösung 2 und 3 sind mir doch etwas zu kompliziert :? . Wie schon gesagt, so gut bin ich im Scripten nicht.

Danke für die Hilfe.

Gamefreak
Posts: 360
Joined: Sat, 7. Nov 09, 12:19

Re: [DISKUSSION] Allgemeine S&M-Fragen III

Post by Gamefreak » Sun, 4. Nov 18, 14:52

Ich hab mal wieder ein kleines Problem.

Derzeit arbeite ich an einem Skript, dass eine Station klonen soll. Die Gedanke dahinter ist eigene Stationen mit Produkten und Ressourcen etc zu kreieren und diese dann im Universum durch das Skript zu verteilen.
Spoiler
Show

Code: Select all

Argument1: Stationstyp , Var/Station, 'Type der Station auswählen'
Argument2: Position, Var/Sector Position, 'Position wählen'

 $Sektor = $Position[3]
  $Z = $Position[2]
  $X = $Position[1]
  $Y = $Position[0]
  $Race = $Stationstyp -> get owner race
  $Type = $Stationstyp -> get ware type code of object
  $Ware = $Stationstyp -> get products
  $name = $Stationstyp -> get name
  $ressourcen = $Stationstyp -> get tradeable ware array from station
  $station = create station: type=$Type owner=$Race addto=$Sektor x=$X y=$Y z=$Z
  $array = size of array $Ware
  while $array
    dec $array = 
    $product = $Ware[$array]
    $station ->add product to factory or dock: $product
  end
  $array2 = size of array $ressourcen
  while $array2
    dec $array2 = 
    $res = $ressourcen[$array2]
    if $Stationstyp -> uses ware $res as primary resource
      $station ->add primary resource to factory: $res
    else if $Stationstyp -> uses ware $res as secondary resource
      $station ->add second resource to factory: $res
    end
  end
  $station ->set name to $name
  $schildtyp = $station -> get max. shield type that can be installed
  $anzahl = $station -> get number of shield bays
  = $station -> install $anzahl units of $schildtyp
  $maxshield = $station -> get maximum shield strength
  $station ->set current shield strength to $maxshield
  $station ->factory production task: on=[TRUE]
  $station ->station trade and production tasks: on=[TRUE]
  return null
An sich klappt es auch, allerdings werden die neuen Stationen ohne Schilde erzeugt.

User avatar
X2-Illuminatus
Moderator (Deutsch)
Moderator (Deutsch)
Posts: 24961
Joined: Sun, 2. Apr 06, 16:38
x4

Re: [DISKUSSION] Allgemeine S&M-Fragen III

Post by X2-Illuminatus » Sun, 4. Nov 18, 18:25

Wenn ich mich richtig erinnere, kann man in Stationen beliebig viele Schilde beliebiger Größe installieren. Die von dir verwendeten Befehle, um die passenden Schilde und Schildanzahlen zu erhalten, werden daher nur bei Schiffen vernünftige Werte ausgeben. (Das kannst du aber auch selbst teste, indem du dir die Werte einfach ins Logbuch oder eine Logdatei ausgeben lässt.)
Nun verfügbar! X3: Farnham's Legacy - Ein neues Kapitel für einen alten Favoriten

Die komplette X-Roman-Reihe jetzt als Kindle E-Books! (Farnhams Legende, Nopileos, X3: Yoshiko, X3: Hüter der Tore, X3: Wächter der Erde)

Neuauflage der fünf X-Romane als Taschenbuch

The official X-novels Farnham's Legend, Nopileos, X3: Yoshiko as Kindle e-books!

Gamefreak
Posts: 360
Joined: Sat, 7. Nov 09, 12:19

Re: [DISKUSSION] Allgemeine S&M-Fragen III

Post by Gamefreak » Tue, 13. Nov 18, 17:10

Gibt es eine Möglichkeit per Skriptbefehl Zahlen/Werte in der Ausgabe besser darzustellen? Also nicht 123456789, sondern 123,456,789 oder 123.456.789.

Derzeit arbeite ich an einem Skript, dass eine Asteroid der Wahl mit einer beliebigen Ausbeute erzeugt und dem Spieler Geld (nach einer Formel) abzieht.

Bevor dieser allerdings erzeugt werden soll, soll der Spieler gefragt werden, ob er auch den Betrag bezahlen möchte und bei Werten wie z.B. 750350 oder höher ist der Preis auf der ersten Blick nicht gerade ersichtlich :roll: .

Edit: Danke X2-Illuminatus wegen den Schilden.
Last edited by Gamefreak on Tue, 13. Nov 18, 18:26, edited 2 times in total.

User avatar
Klaus11
Posts: 859
Joined: Mon, 13. Feb 12, 17:23
x3ap

Re: [DISKUSSION] Allgemeine S&M-Fragen III

Post by Klaus11 » Tue, 13. Nov 18, 17:57

Versuche mal dieses Beispiel:

Code: Select all

$TextN = format large number pair as string: billions null, units $Credits, include separators 3, use millions suffix for very large numbers [FALSE]
[ external image ] Dif-tor heh smusma (Lebet lang und in Frieden – vulkanischer Gruß), Cockpitsammlung, Spieler HQ aktivieren, XENON-DAE

Gamefreak
Posts: 360
Joined: Sat, 7. Nov 09, 12:19

Re: [DISKUSSION] Allgemeine S&M-Fragen III

Post by Gamefreak » Tue, 13. Nov 18, 18:23

Danke Klaus11 :) . Hat geklappt.

Post Reply

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