[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
Slayer X3-Fan
Posts: 63
Joined: Sun, 24. Aug 08, 16:47
x3tc

Post by Slayer X3-Fan » Tue, 26. Jul 11, 03:12

Hallo,

Da ich selber jetzt nur ungern den ganzen Moddingbereich durchsuchen will, frage ich einfach mal.

Gibt es (für TC) eine Art Modding/Scripter Crashkurs, bei dem man so gänige Allgemeinsachen kennen lernen kann und man ebenso einen einfachen "Einstieg" ins selbstständige Scripten/Modden bekommt?

Zurzeit finde ich mich selber mit den ganzen Codes und Kommandos usw... gar nicht wirklich zu recht.

Danke im Vorraus ;)

User avatar
o1ofco2
Posts: 1032
Joined: Mon, 2. Feb 04, 20:30
x4

Post by o1ofco2 » Tue, 26. Jul 11, 08:04

Hiho Leute :)

mal wieder ne kleine Frage:

OOS und Raketen!... "uff" denken einige wieder "geht nicht, weil oos keine Raketen genutzt werden..."
Ja, aber:
Ich hab gelesen, das OOS die Raketen "simuliert" werden.?!
Was kann man darunter verstehen?
Wenn ich nen Schiff als Bomber scripte, ihm keinerlei Laser verpasse und die Raketenabschussbefehle per script quasi "erzwinge", kann er dann OOS etwas vernichten?
Stimmen die Entfernungsangaben der Raketen (Flugweite) OOS auch noch oder muss der Bomber nen bestimmten Mindestabstand zum Ziel einhalten?

Danke und LG
-o1 :)


@Slayer X3-Fan
siehe Google mit "x3 scripttutorial" -> 1.Eintrag:
http://forum.egosoft.com/viewtopic.php?t=157899
viel spass :)
achja... hier noch ne Befehlsreferenz zum nachlesen was einzelne Befehle bewirken: http://madxhawk.com/kb.php?mode=cat&cat=21

User avatar
Gazz
Posts: 13244
Joined: Fri, 13. Jan 06, 16:39
x4

Post by Gazz » Tue, 26. Jul 11, 12:11

o1ofco2 wrote:Wenn ich nen Schiff als Bomber scripte, ihm keinerlei Laser verpasse und die Raketenabschussbefehle per script quasi "erzwinge", kann er dann OOS etwas vernichten?
Ja.



Stimmen die Entfernungsangaben der Raketen (Flugweite) OOS auch noch oder muss der Bomber nen bestimmten Mindestabstand zum Ziel einhalten?
OOS ist die Entfernungs-Begrenzung bei Lasern und Raketen völlig freiwillig.
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.

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

Post by X2-Illuminatus » Tue, 26. Jul 11, 13:32

Slayer X3-Fan wrote:Gibt es (für TC) eine Art Modding/Scripter Crashkurs, bei dem man so gänige Allgemeinsachen kennen lernen kann und man ebenso einen einfachen "Einstieg" ins selbstständige Scripten/Modden bekommt?
Nein. Es gibt aber verschiedene Tutorials zum Scripten und Modden von TC. Beim Scripten mit dem Script Editor kannst du quasi alles verwenden, dass seit X2 geschrieben wurde. Mit X2 wurde der Script Editor (SE) eingeführt, die Logik des SEs ist seitdem gleichgeblieben. Es sind nur neue Befehle hinzukommen. Als Basiseinführung in den SE kann man das MSCI Programmer's Handbook nutzen, das man im Downloadbereich (X2 -> Bonusmaterial) herunterladen kann. Zur Erklärung der einzelnen Befehle solltest du dich an die verschiedenen MSCI-Referenzen halten. Die Referenz im Egosoft-Forum ist in meiner Signatur verlinkt. Ansonsten gibt es noch die Referenz auf madxhawk.com sowie die auf xai-corp.net.
Zum Mission Director, der zum Ende von X3:R eingeführt wurde, findet sich eine Anleitung hier.
Das Modding Feld ist insgesamt etwas größer und komplexer. Insofern musst du halt schauen, was du verändern möchtest und dir dementsprechend Anleitungen suchen. enenra hat hier auf englisch die Grundlagen des Moddens erklärt.

Ansonsten solltest du dich an die verschiedene Tutorial und Toolsammlungen in den verschiedenen Scripts und Modding Foren halten. Darin findest du verschiedene Erklärungen und Anleitungen zum Scripten und Modden. Ansonsten hilft das Anschauen bestehender Scripte und/oder Mods - und wie so oft das Stellen von Fragen.
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!

User avatar
Slayer X3-Fan
Posts: 63
Joined: Sun, 24. Aug 08, 16:47
x3tc

Post by Slayer X3-Fan » Tue, 26. Jul 11, 13:47

Nach wie vor, ein ziemlich Komplexer Umfang, um's scripten.
Ich Versuche mich mal ein wenig durch deine ganzen verlinkten Infos zu wühlen, und ich hoffe, dass ich einen guten Anfangspunkt bekomme.

Danke sehr!

User avatar
o1ofco2
Posts: 1032
Joined: Mon, 2. Feb 04, 20:30
x4

Post by o1ofco2 » Tue, 26. Jul 11, 14:14

Gazz wrote:
o1ofco2 wrote:Stimmen die Entfernungsangaben der Raketen (Flugweite) OOS auch noch oder muss der Bomber nen bestimmten Mindestabstand zum Ziel einhalten?
OOS ist die Entfernungs-Begrenzung bei Lasern und Raketen völlig freiwillig.
aha... könnte dann ein GKS nahe des Nordtores einen Jäger, der sich am anderen ende des Sektors befindet (Südtor) einfach so abschießen ohne sich ihm nähern zu müssen?

LG
-o1 :)

User avatar
Gazz
Posts: 13244
Joined: Fri, 13. Jan 06, 16:39
x4

Post by Gazz » Tue, 26. Jul 11, 16:43

Könnte schon, aber GKS sind dafür viel zu sehr von sich eingenommen.
Wenn der Jäger was will, dann muß er sich schon hierher bemühen!

Wie nahe genau... steht in den !fight scripts.
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.

User avatar
o1ofco2
Posts: 1032
Joined: Mon, 2. Feb 04, 20:30
x4

Post by o1ofco2 » Tue, 26. Jul 11, 18:01

ok :)
oder aber, der Jäger schickt aus sicherem Abstand liebe Grüße per Hornisse(n) und das GKS darf dann in den "ewigen Jagdgründen" nochmal über seine Überheblichkeit nachdenken :D

ja, ich glaube ich habs gerafft, was du mir damit sagen möchtest ;)

Danke und LG
-o1 :)

PS:
ich glaube das hier von Lucike (4. Post) wäre der richtige Text für die "lieben Grüße" :twisted:

User avatar
o1ofco2
Posts: 1032
Joined: Mon, 2. Feb 04, 20:30
x4

Post by o1ofco2 » Wed, 27. Jul 11, 19:12

so, nach laaanger und vergeblicher Suche brauch ich mal bissl Hilfe beim: "SIGNAL_SCANNED"

was möchte ich per script erreichen:
- NPC-Schiff (getarnter Xenon) wird von der Polizei gescannt
- SIGNAL_SCANNED wird ausgelöst (glaube/hoffe ich zumindest)
- NPC-Schiff soll die Rasse ändern (meinetwegen auch durch $ship -> set pirate coverstate [FALSE])
- NPC-Schiff wird von der Polizei abgeknallt, weil Feindlich (getarnter Xenon gewesen)

mein Problem ist, dass ich keinen blassen Schimmer von den ganzen SIGNAL's_"wasauchimmer" habe und wie ich das verwenden sollte :(
lacht bitte nicht über die erste Zeile im code - ich kann mir vorstellen, dass das totaler blödsinn ist :oops:

meine bisherige Überlegung: (nicht im SE, momentan nur auf papier)

Code: Select all

if SIGNAL_SCANNED == True
  $Leader -> set pirate coverstate = FALSE
  $Leader -> set owner race to Xenon
  $Wing.Arr = $Leader get formation ships
  $Size.Arr = size of Array $Wing.Arr
  while $Size.Arr > 0
    $Member = $Wing.Arr[$Size.arr]
    $Member -> set pirate coverstate = FALSE
    $Member -> set owner race to Xenon
    dec $Size.Arr
@   wait 100ms
  end
end
ich kann mir vorstellen, dass das nicht funzen wird… daher brauche ich eure hilfe :roll:

LG und thx
-o1

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

Post by ScRaT_GER » Wed, 27. Jul 11, 19:38

lacht bitte nicht über die erste Zeile im code - ich kann mir vorstellen, dass das totaler blödsinn ist Embarassed
Hihi, ja ist es. (nicht böse gemeint ;) )

Schau dir mal das hier an. Wie dort auch steht, ist es allerdings in den meisten Fällen besser nicht Primärsignale, sondern Sekundärsignale zu verwenden. Diese werden über den Befehl
<RefObj> add secondary signal: signal=<Object Signal>, script=<Script Name>, prio=<Var/Number>, name=<Var/String>
mit einem Skript verbunden.

MfG,
ScRaT

User avatar
o1ofco2
Posts: 1032
Joined: Mon, 2. Feb 04, 20:30
x4

Post by o1ofco2 » Wed, 27. Jul 11, 19:59

hehe :)

ok, also wenn ich das richtig verstanden habe starte ich nen kleines script auf dem NPC-Schiff (um nicht zu stören Task 40 meinetwegen), indem ich das secondary signal SIGNAL_SCANNED mit einem weiteren script plugin.npcship.gescanntundaufgeflogen verbinde.
in dem plugin-script kann ich dann all das machen, was in meinem code stand (ab zeile2).

muss das script auf dem NPC (task 40) eine schleife haben oder reicht ein einmaliges durchlaufen und quasi "anmelden" des 2. scriptes bei auslösen vom Signal?

danke und LG
-o1 :)

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

Post by UniTrader » Wed, 27. Jul 11, 20:06

das Signal-script wird immer gestartet wenn das zugeordnete Signal ausgelöst wird - kein bedarf das selber abzufragen..
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
Gazz
Posts: 13244
Joined: Fri, 13. Jan 06, 16:39
x4

Post by Gazz » Thu, 28. Jul 11, 01:16

o1ofco2 wrote:- NPC-Schiff (getarnter Xenon) wird von der Polizei gescannt
- SIGNAL_SCANNED wird ausgelöst (glaube/hoffe ich zumindest)
- NPC-Schiff soll die Rasse ändern (meinetwegen auch durch $ship -> set pirate coverstate [FALSE])
- NPC-Schiff wird von der Polizei abgeknallt, weil Feindlich (getarnter Xenon gewesen)
Erstmal wird dem Schiff ein (secondary wenns geht) SIGNAL und Signal Script zugewiesen.
(ScRaT_GER's Post)

Das Signal script an sich sieht dann so aus:

Code: Select all

001 THIS-> set pirate coverstate = FALSE
002 THIS -> set owner race to Xenon
003 return null
   Das IST alles.
Statt THIS könnten darin auch automatisch generierte Argumente 1,2,3... in Frage kommen.
Ist bei diversen Signals unterschiedlich. Einfach mal ausdrucken lassen, was so an Argumenten mitgeliefert wird.


Auf keinen Fall sollte ein SIGNAL Script selbst jemals ein Wait enthalten oder irgendetwas, was danach permanent läuft.
Ist ganz schlechtes Voodoo.

Oh, und Priorität sollte deutlich über 100 sein.

o1ofco2 wrote:reicht ein einmaliges durchlaufen und quasi "anmelden" des 2. scriptes bei auslösen vom Signal?
Ja.

Signale können aber recht eigen sein. Immer gründlich testen was wirklich passiert - und wann genau.

Secondary signal attacked z.B. funzt nur sehr... sporadisch.
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.

User avatar
o1ofco2
Posts: 1032
Joined: Mon, 2. Feb 04, 20:30
x4

Post by o1ofco2 » Thu, 28. Jul 11, 11:43

ok, danke an alle, ich glaub jetzt hab ichs gerafft, wie das mit den SIGNAL's funzt :)

also packe ich nur die Zeile

Code: Select all

$NPCship add secondary signal: signal=SIGNAL_SCANNED, script=plugin.npcship.gescanntundaufgeflogen, prio=299, name=<Var/String> 
in eine der ersten Zeilen des scriptes, welches auf dem $npcship auf task 0 läuft (und das schiff seine Aufgabe erfüllen lässt) und damit hab ich festgelegt, was genau passiert wenn das schiff gescannt wird -> nämlich das, was im script plugin.npcship.gescanntundaufgeflogen drinsteht.

meine Frage ist nun nurnoch, was ich bei name=<Var/String> eingeben soll?! ..den reinen Namen des auszuführenden Scriptes das bei "SIGNAL Fired" ausgeführt wird?


gefunden hab ich leider nichts dazu im netz :(

danke und LG
-o1 :)

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

Post by ScRaT_GER » Thu, 28. Jul 11, 15:16

in eine der ersten Zeilen des scriptes, welches auf dem $npcship auf task 0 läuft (und das schiff seine Aufgabe erfüllen lässt) und damit hab ich festgelegt, was genau passiert wenn das schiff gescannt wird -> nämlich das, was im script plugin.npcship.gescanntundaufgeflogen drinsteht.
Also normalerweise macht man soetwas in einem Setup-Skript. Ich habe dir da auch nicht ganz den richtigen Befehl gezeigt um das komfortabel für alle Schiffe einer Klasse (in deinem Fall Xenon Schiffe, denke ich mal) machen zu können. Der Befehl lautet:
global secondary signal map: add signal=<Object Signal> race=<Var/Race> class=<Var/Class> script=<Script Name> prio=<Var/Number> name=<Var/String>

Sollte eigentlich selbsterklärend sein. "name" ist dabei ein String, den du angibst, damit du das Signal später über den entsprechenden "remove signal"-Befehl in einem Uninstall-Skript wieder entfernen kannst.

MfG,
ScRaT

User avatar
o1ofco2
Posts: 1032
Joined: Mon, 2. Feb 04, 20:30
x4

Post by o1ofco2 » Thu, 28. Jul 11, 15:46

nene, ScRaT, ich glaube, der "secondary"-Befehl ist schon der richtige.

also, ich möchte gern folgendes realisieren (nach einer Idee von Gazz, der mir diese freundlicherweise zur Verfügung gestellt hat):

Ich möchte eine Navigationsbake in einem zufällig gewählten sektor errichten, die als "Zielkoordinatensender" für eine Gruppe Xenondickschiffe herhalten soll.
Diese Bake möchte ich aber nicht in den Zielsektor hineincheaten, sondern per getarnten Xenonjäger (am besten ein N, da schnell) konventionell in den Zielsektor gebracht werden.
Mit dieser Aktion wird auch dem jungen Discovererpiloten (Spieler beim Spielstart) die Möglichkeit eröffnet, aktiv auch mit seinem "Pups-schiff" auf die ganze Geschichte Einfluss zu nehmen - indem er die Aussendung dieser Navigationsbaken verhindern kann.

Da das "Aussetzer-Xenon N" aber der Rasse Xenon angehört, ist es gegenüber allen anderen Rassen feindlich eingestellt und wird zu 90% abgeschossen, bevor es seinen Auftrag erfüllen kann.
Deshalb möchte ich es "tarnen" - per "set pirate coverstate [TRUE]" o.ä., je nachdem wie mir das am besten gelingt.
Und genau diese Tarnung soll auffliegen, sobald das N gescannt wird. Auch von normalen Polizeischiffen (ich geh mal davon aus, das nicht nur das spielerschiff gescannt wird und auch oos gescannt wird *hoff*)
Somit sollte/muss das script, welches das N enttarnt auch nur für dieses N ausgeführt werden - nicht für alle N's die unterwegs sind.
Das N soll nur diesen einen Zweck erfüllen und somit keine große sache werden ;)


Leider hab ich keine ahnung von "deinstallations"-scripten, weshalb ich auch keine deinstallationsroutine für mein script schreiben kann.
Da es ein AL-Script wird/ist, kann der spieler das ganze auch kurzerhand abstellen und den verbliebenen Rest der "ScriptXenons" konventionell mit feuerkraft aus seinem Universum entfernen.

LG
-o1 :)

User avatar
Gazz
Posts: 13244
Joined: Fri, 13. Jan 06, 16:39
x4

Post by Gazz » Thu, 28. Jul 11, 16:47

o1ofco2 wrote:nene, ScRaT, ich glaube, der "secondary"-Befehl ist schon der richtige.
Denke ich auch, da die Funktion ja einen ganz bestimmten "job" betrifft.

o1ofco2 wrote:Deshalb möchte ich es "tarnen" - per "set pirate coverstate [TRUE]" o.ä., je nachdem wie mir das am besten gelingt.
Bei create ship die Rasse pirate angeben.
Muß dafür evtl. in einem nicht-Xenonsektor sein. Hab ich noch nicht probiert.
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.

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

Post by ScRaT_GER » Thu, 28. Jul 11, 17:48

nene, ScRaT, ich glaube, der "secondary"-Befehl ist schon der richtige.

also, ich möchte gern folgendes realisieren
Achso, konnte ich ja nicht wissen. ^^

In dem Fall ist der vorher genannte Befehl tatsächlich der richtige.
Leider hab ich keine ahnung von "deinstallations"-scripten, weshalb ich auch keine deinstallationsroutine für mein script schreiben kann.
Ist eigentlich auch nicht zwingend nötig, wenn es nur einzelne Schiffe betrifft. Ansonsten ist ein Deinstalltionskript ein ganz normales Skript - es hat halt nur die Aufgabe das eigentliche Skript zu deinstallieren, also Dinge wie globale Variablen, Signale, etc. wieder auf ihren Anfangszustand zurückzusetzen.
Das könntest du in deinem Fall so realisieren, dass du dir die getarnten Schiffe merkst (machst du wahrscheinlich eh schon in einem Array) und dann bei der Deinstallation (oder bei der Deaktivierung des AL-Plugins) bei jedem Schiff in diesem Array das Signal wieder entfernst.
(ich geh mal davon aus, das nicht nur das spielerschiff gescannt wird und auch oos gescannt wird *hoff*)
Ja, sieht zumindest danach aus, wenn du dir das entsprechende Skript ansiehst (!move.scanpatrol.xml).

MfG,
ScRaT

User avatar
Gazz
Posts: 13244
Joined: Fri, 13. Jan 06, 16:39
x4

Post by Gazz » Thu, 28. Jul 11, 18:07

ScRaT_GER wrote:Das könntest du in deinem Fall so realisieren, dass du dir die getarnten Schiffe merkst (machst du wahrscheinlich eh schon in einem Array) und dann bei der Deinstallation (oder bei der Deaktivierung des AL-Plugins) bei jedem Schiff in diesem Array das Signal wieder entfernst.
Die einfachste Deinstallation ist immer noch:

1 Schleife durch sämtliche Sektoren. (kein wait)
Alle Schiffe, die (per local var gekennzeichnet) von dem Script erstellt worden siden, machen bummskrawumms.


Keine Schiffe / bojen / etc. mehr... also auch keine Scripts oder Signals. Deinstallation feddich.

Ich geb zu, das kann man eleganter lösen, aber Holzhammer funktioniert auch gut. =)

So ne Routine ist auch während des Schreibens recht nützlich.
Wenn irgendwas nicht funzt und plötzlich tausende von Schiffen generiert werden... dann läßt sich das schnell wieder aufräumen.
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.

User avatar
o1ofco2
Posts: 1032
Joined: Mon, 2. Feb 04, 20:30
x4

Post by o1ofco2 » Fri, 29. Jul 11, 00:07

Danke euch mal wieder für die wertvollen Tips :D

Jetzt sitze ich endlich wieder am heimischen Rechner und werde gleich mal drauflos probieren ;)

LG
-o1 :)

Post Reply

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