[DISKUSSION] Allgemeine S&M-Fragen III
Moderators: Moderatoren für Deutsches X-Forum, Scripting / Modding Moderators
-
- Posts: 1664
- Joined: Thu, 4. Mar 04, 16:14
[DISKUSSION] Allgemeine S&M-Fragen III
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.
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
[ external image ]
"Probleme kann man niemals mit derselben Denkweise lösen, durch die sie entstanden sind." Albert Einstein
-
- Posts: 383
- Joined: Mon, 22. Nov 10, 20:26
-
- Posts: 12969
- Joined: Sun, 9. May 04, 21:26
Es gibt sogar mehrere. Hier zwei davon:Reacecor wrote:Frage: Gibt es einen Befehl, welcher die Waren in einem Frachtraum als Array zurückgibt? Meine Suche lief bis jetzt erfolglos...
$Array.Ware = [THIS] -> get tradeable ware array from ship
$Array.Ware = [THIS] -> get ware array from ship
In den Trade-Commands...
Gruß
Lucike
-
- Posts: 915
- Joined: Fri, 26. Mar 10, 21:15
Frage: Gibt es einen Befehl, welcher die Waren in einem Frachtraum als Array zurückgibt?
Code: Select all
<RetVar> = get warearray for <Var/Ship>
mfg
Striker
-
- Posts: 383
- Joined: Mon, 22. Nov 10, 20:26
Lucike wrote:$Array.Ware = [THIS] -> get ware array from ship
Den Befehl hab ich schon gefunden. Jedoch funktioniert er nur bei NPC-Schiffen und nicht bei Spielerschiffen.Striker304 wrote:Code: Select all
<RetVar> = get warearray for <Var/Ship>
Der Befehl funktioniert, so wie es brauche. Danke Lucike und Striker.Lucike wrote:$Array.Ware = [THIS] -> get tradeable ware array from ship
Gruß
-
- Posts: 383
- Joined: Mon, 22. Nov 10, 20:26
-
- Posts: 12969
- Joined: Sun, 9. May 04, 21:26
Ne, ich hatte den Befehl aus'm Kopf geschrieben. War natürlich falsch. Es gibt noch zwei Befehle ausschließlich für NPC-Schiffe.ScRaT_GER wrote:Gibt dieser Befehl nicht nur an, welche Waren für das Schiff in der Warelist.txt eingetragen sind?$Array.Ware = [THIS] -> get ware array from ship
$Array.Ware = [THIS] -> get ship hardware as array
$Array.Ware = get warearray for [THIS]
Gruß
Lucike
-
- Posts: 1962
- Joined: Tue, 8. Jan 08, 18:19
Und was ist jetzt was?$Array.Ware1 = [THIS] -> get ship hardware as array
$Array.Ware2 = get warearray for [THIS]
$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>
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
MfG,
ScRaT
-
- Posts: 269
- Joined: Fri, 24. Dec 10, 16:30
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.
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.
-
- Posts: 12969
- Joined: Sun, 9. May 04, 21:26
$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
-
- Posts: 269
- Joined: Fri, 24. Dec 10, 16:30
-
- Posts: 2764
- Joined: Thu, 31. May 07, 18:07
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 = 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
Fairer weise sollte man sagen das es effizientere Möglichkeiten gibt entweder über$Ware == Merkur
$Station -> add product to factory or dock: $Ware
$Station -> add 10 units of $Ware (Menge 1 bei GKS)
$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
-
- Posts: 12969
- Joined: Sun, 9. May 04, 21:26
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.Generalwest wrote:Fairer weise sollte man sagen das es effizientere Möglichkeiten gibt entweder über$Ware == Merkur
$Station -> add product to factory or dock: $Ware
$Station -> add 10 units of $Ware (Menge 1 bei GKS)
$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 mit der Menge, da hast du Recht. Ich kann mich erinnern, dass man bei X2 oder X3R darauf achten musste.
Gruß
Lucike
-
- Posts: 2764
- Joined: Thu, 31. May 07, 18:07
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.
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.
-
- Moderator (Script&Mod)
- Posts: 14571
- Joined: Sun, 20. Nov 05, 22:45
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...
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
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: 2764
- Joined: Thu, 31. May 07, 18:07
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.
Nun meene Question: Gibts das auch mit Docks? Ich mein es ist doof ne Station zu Basteln damit ich Erweiterungen kaufen kann per Script.
-
- Posts: 1962
- Joined: Tue, 8. Jan 08, 18:19
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.
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
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
MfG,
ScRaT
-
- Posts: 12969
- Joined: Sun, 9. May 04, 21:26
So weit ich weiß funktionieren nicht alle Kommandos. Funktionieren tut zumindest "COMMAND_DOCKAT". Die Argumente nicht vergessen.ScRaT_GER wrote:Wie funktioniert eigentlich folgender Befehl:Code: Select all
START <RefObj> -> command <Object Command>: arg1=<Value>, arg2=<Value>, arg3=<Value>, arg4=<Value>
START $Ship -> command COMMAND_DOCKAT : arg1=$Station, arg2=null, arg3=null, arg4=null
Dieses nutze ich ab und zu.
ich nutze das ähnlich, wie hier beim SGS: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.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.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
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
Lucike
-
- Posts: 1962
- Joined: Tue, 8. Jan 08, 18:19
Ah, okay. Und hat das irgendeinen Vorteil gegenüber dem direkten Aufruf des Skripts?START $Ship -> command COMMAND_DOCKAT : arg1=$Station, arg2=null, arg3=null, arg4=null
Dieses nutze ich ab und zu.
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