[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
User avatar
Iifrit Tambuur-san
Posts: 1664
Joined: Thu, 4. Mar 04, 16:14
x3tc

[DISKUSSION] Allgemeine S&M-Fragen III

Post by Iifrit Tambuur-san » Tue, 28. Dec 10, 18:13

Allgemeine S&M-Fragen III

All jene, die nur kurze, einfach zu beantwortende Fragen zu SE, oder Modding haben, posten diese bitte hier, statt ein neues Topic aufzumachen, um zur Übersichtlichkeit des Forums beizutragen. Wer Fragen zum MD hat, stellt diese bitte hier.

Dies ist der Folgethread von Teil I und Teil II.
Passierschein A38.5 gefunden!
[ external image ]
"Probleme kann man niemals mit derselben Denkweise lösen, durch die sie entstanden sind." Albert Einstein

User avatar
Reacecor
Posts: 383
Joined: Mon, 22. Nov 10, 20:26
x3tc

Post by Reacecor » Tue, 28. Dec 10, 18:22

Also, Episode III.

Frage: Gibt es einen Befehl, welcher die Waren in einem Frachtraum als Array zurückgibt? Meine Suche lief bis jetzt erfolglos...

Gruß

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

Post by Lucike » Tue, 28. Dec 10, 18:25

Reacecor wrote:Frage: Gibt es einen Befehl, welcher die Waren in einem Frachtraum als Array zurückgibt? Meine Suche lief bis jetzt erfolglos...
Es gibt sogar mehrere. ;) Hier zwei davon:

$Array.Ware = [THIS] -> get tradeable ware array from ship
$Array.Ware = [THIS] -> get ware array from ship

In den Trade-Commands...

Gruß
Lucike
Image

Striker304
Posts: 915
Joined: Fri, 26. Mar 10, 21:15
x3tc

Post by Striker304 » Tue, 28. Dec 10, 18:26

Frage: Gibt es einen Befehl, welcher die Waren in einem Frachtraum als Array zurückgibt?

Code: Select all

<RetVar> = get warearray for <Var/Ship> 
Trade Commands -> for Ships

mfg
Striker

User avatar
Reacecor
Posts: 383
Joined: Mon, 22. Nov 10, 20:26
x3tc

Post by Reacecor » Tue, 28. Dec 10, 18:53

Lucike wrote:$Array.Ware = [THIS] -> get ware array from ship
Striker304 wrote:

Code: Select all

<RetVar> = get warearray for <Var/Ship>
Den Befehl hab ich schon gefunden. Jedoch funktioniert er nur bei NPC-Schiffen und nicht bei Spielerschiffen. :wink:
Lucike wrote:$Array.Ware = [THIS] -> get tradeable ware array from ship
Der Befehl funktioniert, so wie es brauche. Danke Lucike und Striker.

Gruß

User avatar
ScRaT_GER
Posts: 1962
Joined: Tue, 8. Jan 08, 18:19
x3tc

Post by ScRaT_GER » Tue, 28. Dec 10, 19:33

$Array.Ware = [THIS] -> get ware array from ship
Gibt dieser Befehl nicht nur an, welche Waren für das Schiff in der Warelist.txt eingetragen sind?

MfG,
ScRaT

User avatar
Reacecor
Posts: 383
Joined: Mon, 22. Nov 10, 20:26
x3tc

Post by Reacecor » Tue, 28. Dec 10, 19:49

ScRaT_GER wrote:$Array.Ware = [THIS] -> get ware array from ship
Wohl eher...
$Array.Ware = [THIS] -> get tradeable ware array from ship
..., oder? :wink:

Egal, mein Testscript hat jedenfalls immer die geladenen Waren ausgegeben.

Gruß

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

Post by Lucike » Tue, 28. Dec 10, 20:01

ScRaT_GER wrote:
$Array.Ware = [THIS] -> get ware array from ship
Gibt dieser Befehl nicht nur an, welche Waren für das Schiff in der Warelist.txt eingetragen sind?
Ne, ich hatte den Befehl aus'm Kopf geschrieben. War natürlich falsch. Es gibt noch zwei Befehle ausschließlich für NPC-Schiffe.

$Array.Ware = [THIS] -> get ship hardware as array
$Array.Ware = get warearray for [THIS]

Gruß
Lucike
Image

User avatar
ScRaT_GER
Posts: 1962
Joined: Tue, 8. Jan 08, 18:19
x3tc

Post by ScRaT_GER » Wed, 29. Dec 10, 11:57

$Array.Ware1 = [THIS] -> get ship hardware as array
$Array.Ware2 = get warearray for [THIS]
Und was ist jetzt was?
$Array.Ware1 ist doch eine Liste der vorinstallierten Waren, oder?
Im Gegensatz dazu ist $Array.Ware2 eine Liste der Waren aus der Warelist.txt, oder verwechsele ich das jetzt?

Andere Frage:

Wie funktioniert eigentlich folgender Befehl:

Code: Select all

START <RefObj> -> command <Object Command>: arg1=<Value>, arg2=<Value>, arg3=<Value>, arg4=<Value>
Ich habe versucht ihn irgendwie zum Laufen zu bringen, aber nichts passierte. Hier mal mein Testcode:

Code: Select all

* a.setupcmd

001   global script map: set: key=COMMAND_TYPE_FIGHT_0, class=Schiff, race=Player, script=a.0test, prio=0
002   set script command upgrade: command=COMMAND_TYPE_FIGHT_0  upgrade=[TRUE]
003   return null

Code: Select all

* a.00test

001   START [PLAYERSHIP] -> command COMMAND_TYPE_FIGHT_0: arg1=null, arg2=null, arg3=null, arg4=null
002   return null

Code: Select all

* a.0test
 
001   write to player logbook 'TEST'
002   return null
Zuerst führe ich a.setupcmd und dann a.00test aus. Allerdings wird 'TEST' nicht ins Logbuch geschrieben. Wenn ich hingegen das Kommando aus der Kommandokonsole starte (deswegen Zeile 2 in a.setupcmd) funktioniert es...

MfG,
ScRaT

Cpt.Falcon
Posts: 269
Joined: Fri, 24. Dec 10, 16:30
x3tc

Post by Cpt.Falcon » Fri, 31. Dec 10, 11:40

So, dann hab ich jetzt auch mal ein paar Fragen.
Bin dabei mein erstes Script zu schreiben, hab einige Tutorials gelesen, ist aber insgesamt nicht allzu schwer.

Dennoch:
Hab mir eine Schiffswerft ins Spiel gescriptet, die jetzt ziemlich "nackt" in AP steht. Sie hat keine Schilde und keinerlei Waren. Die Waren/Schiffe sollen zwar dort nicht verkauft werden, aber eine Reparatur soll möglich sein (unter Umständen für lau, aber das kommt später) und Schilde braucht sie auch.

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

Post by Lucike » Fri, 31. Dec 10, 11:52


$Station -> add default wares to station/dock (Damit werden nicht nur die Standardwaren hinzugefügt, sondern auch die passenden Schilde)
$Station -> station trade and production tasks: on=[TRUE]
$ShieldMax = $Station -> get maximum shield strength
$Station -> set current shield strength to $ShieldMax

Die Schiffe und Stationen musst du einzeln hinzufügen.

$Ware == Merkur
$Station -> add product to factory or dock: $Ware
$Station -> add 10 units of $Ware (Menge 1 bei GKS)

Gruß
Lucike
Image

Cpt.Falcon
Posts: 269
Joined: Fri, 24. Dec 10, 16:30
x3tc

Post by Cpt.Falcon » Fri, 31. Dec 10, 14:24

Dankeschön :roll:
Hab mir jetzt aufgeschrieben was ich in welcher Reihenfolge brauche, wenn man aber die Befehle nicht genau kennt ist das Suchen nach dem passenden Befehl, auf gut wienerisch gesagt, eine
Spoiler
Show
oasch hockn

User avatar
Generalwest
Posts: 2764
Joined: Thu, 31. May 07, 18:07
x4

Post by Generalwest » Fri, 31. Dec 10, 16:32

isses nich egal wie hoch die menge ist? (ja gut außer 0 oder null) ich mein mit produ task=1 werden zu wenig schiffe "Nach gebaut" und zu viel Ignoriert X eh.
$Ware == Merkur
$Station -> add product to factory or dock: $Ware
$Station -> add 10 units of $Ware (Menge 1 bei GKS)
Fairer weise sollte man sagen das es effizientere Möglichkeiten gibt entweder über

$ware = get ware from maintype '7' and subtype $subtype

"einfacher" zu lösen ist falls man mehr als ein Schiff hinzufügen will deren Listen Ids in der TShip aufeinander folgen. Alternativ addend 'Merkur' to array $ich.füge.das.in.die.sw

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

Post by Lucike » Fri, 31. Dec 10, 17:37

Generalwest wrote:
$Ware == Merkur
$Station -> add product to factory or dock: $Ware
$Station -> add 10 units of $Ware (Menge 1 bei GKS)
Fairer weise sollte man sagen das es effizientere Möglichkeiten gibt entweder über

$ware = get ware from maintype '7' and subtype $subtype

"einfacher" zu lösen ist falls man mehr als ein Schiff hinzufügen will deren Listen Ids in der TShip aufeinander folgen. Alternativ addend 'Merkur' to array $ich.füge.das.in.die.sw
Das kann ich tun, wenn ich weiß, was und wie viel er hinzufügen will. Alles andere wäre für den Anfänger, wenn er denn ein Anfänger ist, zu viel.

Das mit der Menge, da hast du Recht. Ich kann mich erinnern, dass man bei X2 oder X3R darauf achten musste.

Gruß
Lucike
Image

User avatar
Generalwest
Posts: 2764
Joined: Thu, 31. May 07, 18:07
x4

Post by Generalwest » Fri, 31. Dec 10, 17:51

hmm bei X3R hatt ich nie das gefühl das ich drauf achten musste ist mir auch nich aufgefallen.


Das mit den Vorschlagenden Ergänzungen hab ich gebracht da es weiterführend ist, nur um zu zeigen das es auch noch andere Möglichkeiten gibt. Soll nur Helfen wenn er es mal Leid sein sollte 40 mal sein Schiffs und Stationstype in verschiedene Variablen zu hauen und denkt das es dafür keine Alternativen gäbe da so mal vorgeschlagen / aufgezeigt.

Ich selbst kann mich dran erinnern das ich lange gedacht habe es gäbe dafür keine alternative. :wink:

UniTrader
Moderator (Script&Mod)
Moderator (Script&Mod)
Posts: 14571
Joined: Sun, 20. Nov 05, 22:45
x4

Post by UniTrader » Fri, 31. Dec 10, 17:52

bezüglich Menge von Schiffen/Stationen in SWs:

ich hatte mal kurz damit experimentiert.. man kann darüber einen kleinen Rabatt auf Stationen geben und vielleicht sogar auf Schiffe, indem man mehr als 1 bzw. 10 ins Lager tut - und um die Produktionstasks muss man sich in diesem fall auch nicht kümmern, das Lager leert sich beim Einkauf sowieso nicht.. lediglich per Script kann die Lagermenge geändert werden...
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 ;)

User avatar
Generalwest
Posts: 2764
Joined: Thu, 31. May 07, 18:07
x4

Post by Generalwest » Fri, 31. Dec 10, 18:39

mal was anderes: $ship -> find station: product $waren with best price: max.price=null, amount=$s.units, max.jumps=$jumps, startsector=$sektor, trader=$ship, exclude array=null übergibt mir eine Station (Fac) für das Produkt aber offenbar keine Docks.

Nun meene Question: Gibts das auch mit Docks? Ich mein es ist doof ne Station zu Basteln damit ich Erweiterungen kaufen kann per Script.

User avatar
ScRaT_GER
Posts: 1962
Joined: Tue, 8. Jan 08, 18:19
x3tc

Post by ScRaT_GER » Sat, 1. Jan 11, 12:13

Weiß echt keiner wie der Befehl "start command" funktioniert? Hier hatte ich danach gefragt.
Ich habe auch schon in den ES Skripts gesucht, habe aber noch keine Verwendung dieses Befehls gesehen.
Nun meene Question: Gibts das auch mit Docks? Ich mein es ist doof ne Station zu Basteln damit ich Erweiterungen kaufen kann per Script.

Code: Select all

038   |$factory = find station: product $ware with min. jumps: max.price=$maxPrice, amount=$amount, max.jumps=200, startsector=$startSec, trader=$refObject, exclude array=$exclude
039   |$dock = find station sells: resource $ware with min. jumps: max.price=$maxPrice, amount=$amount, max.jumps=200, startsector=$startSec, trader=$refObject, exclude array=$exclude
Ich benutze diesen Code. Irgendwann habe ich das mal getestet, also gehe mal davon aus, dass "find station sells" Docks findet, während das normale "find station" Fabriken findet.

MfG,
ScRaT

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

Post by Lucike » Sat, 1. Jan 11, 13:00

ScRaT_GER wrote:Wie funktioniert eigentlich folgender Befehl:

Code: Select all

START <RefObj> -> command <Object Command>: arg1=<Value>, arg2=<Value>, arg3=<Value>, arg4=<Value>
So weit ich weiß funktionieren nicht alle Kommandos. Funktionieren tut zumindest "COMMAND_DOCKAT". Die Argumente nicht vergessen.

START $Ship -> command COMMAND_DOCKAT : arg1=$Station, arg2=null, arg3=null, arg4=null

Dieses nutze ich ab und zu.
ScRaT_GER wrote:
Nun meene Question: Gibts das auch mit Docks? Ich mein es ist doof ne Station zu Basteln damit ich Erweiterungen kaufen kann per Script.

Code: Select all

038   |$factory = find station: product $ware with min. jumps: max.price=$maxPrice, amount=$amount, max.jumps=200, startsector=$startSec, trader=$refObject, exclude array=$exclude
039   |$dock = find station sells: resource $ware with min. jumps: max.price=$maxPrice, amount=$amount, max.jumps=200, startsector=$startSec, trader=$refObject, exclude array=$exclude
Ich benutze diesen Code. Irgendwann habe ich das mal getestet, also gehe mal davon aus, dass "find station sells" Docks findet, während das normale "find station" Fabriken findet.
ich nutze das ähnlich, wie hier beim SGS:

Code: Select all

$Station =  find station: product $Ware with best price:  max.price=$WarePrice, amount=$WareBuy, max.jumps=$HomeJumps, startsector=$HomeSector, trader=[THIS], exclude array=$Array.Sector.Closed
$Dock =  find station sells: resource $Ware with best price: max.price=$WarePrice, amount=$WareBuy, max.jumps=$HomeJumps, startsector=$HomeSector, trader=[THIS], exclude array=$Array.Sector.Closed
  
if $Station -> exists
|if $Dock -> exists
||$WarePriceStation = $Station -> get price of ware $Ware
||$WarePriceDock = $Dock -> get price of ware $Ware
||$WareCargoStation = $Station -> get amount of ware $Ware in cargo bay
||$WareCargoDock = $Dock -> get amount of ware $Ware in cargo bay
||if $WarePriceDock < $WarePriceStation AND $WareCargoDock > $WareCargoStation
|||$Station = $Dock
|||$Dock = null
||end
|end
else if $Dock -> exists
|$Station = $Dock
|$Dock = null
end
Gruß
Lucike
Image

User avatar
ScRaT_GER
Posts: 1962
Joined: Tue, 8. Jan 08, 18:19
x3tc

Post by ScRaT_GER » Sat, 1. Jan 11, 14:34

START $Ship -> command COMMAND_DOCKAT : arg1=$Station, arg2=null, arg3=null, arg4=null

Dieses nutze ich ab und zu.
Ah, okay. Und hat das irgendeinen Vorteil gegenüber dem direkten Aufruf des Skripts?

Ich hatte ja gehofft, man könnte darüber irgendwie elegant verschiedene Skripts für unterschiedliche Schiffsklassen ausführen.
D.h. man registriert in einem Setup-Skript für verschiedene Schiffklassen verschiedene Skripts für ein bestimmtes Kommando. Über diesen Befehl (start command) könnte man dann einfach im Benutzercode, ohne die Schiffsklasse zu beachten, das Kommando starten und das richtige (vorher registrierte Skript) wird aufgerufen.

Wenn das nicht geht, wäre wohl die normale Vorgehensweise ein Skript für alle Schiffsklassen zu registrieren und dann in diesem Skript die Unterscheidung zu machen, oder?

MfG,
ScRaT

Post Reply

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