Signale

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

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

User avatar
Reflexer
Posts: 863
Joined: Sat, 21. Feb 09, 12:54
x4

Signale

Post by Reflexer »

Hey Leute,

ich habe immer noch Verständnisprobleme mit den Signalen. Vielleicht kann mir da mal jemand auf die Sprünge helfen bzw. es jemand erklären.

Ich hab mal irgendwo gelesen, dass man alle Signale irgendwie abfangen kann. Ich bräuchte ein Signal, wenn ein Schiff angedockt hat. Das ist nicht auf das Spielerschiff bezogen sondern ganz allgemein. Jedes Schiff setzt doch (meines Wissens) irgendwo ein Flag, wenn es angedockt hat, oder?

Wie komme ich an das Signal ran? Und wie weiß ich, welches Schiff angedockt hat?

Das ganze scriptseitig - versteht sich ;)

Wie verhält es sich grundsätzlich mit den SIgnalen? Thema Eventhandling. Eine Aufstellung aller Signale, die gesetzt werden wäre ganz schick, damit man weiß womit man arbeiten kann :)

Gruß
Reflexer
merlinschmidt
Posts: 473
Joined: Tue, 24. Feb 04, 08:17
x4

Post by merlinschmidt »

Im Scripteditor findet man unter "Constants" alle Signale, die es so gibt, aufgelistet. (unter anderem).
Ansonsten gibt es da einen Befehl, mit dem man die Signale mit Scripten verbinden kann, ist relativ simpel.
Wissen ist Macht - weiß nichts macht nichts
Handelsstationsvertreter
User avatar
Reflexer
Posts: 863
Joined: Sat, 21. Feb 09, 12:54
x4

Post by Reflexer »

ich brauche eine generellen listener für ALLE Schiffe, der sobald ein Schiff angedockt hat, dinge prüft und ggf. auf dem jeweiligen schiff ein script startet.

ich weiß aktuell nicht, wie ich das am besten angehe. daher die frage nach dem signal-stack.... irgendwo laufen die signale doch auf, oder?

die ausgangslage ist folgende. irgendwo dockt irgendein schiff an. und genau das möchte ich mitbekommen. geht das global? ich möchte (aus performancegründen) weder auf allen schiffen, noch auf allen stationen ein permanentes script laufen haben, das prüft ob irgend wer angedockt hat. das wäre äußerst inperformant.
merlinschmidt
Posts: 473
Joined: Tue, 24. Feb 04, 08:17
x4

Post by merlinschmidt »

Siehe oben. Schau doch mal im Scripteditor nach, die Befehle dafür erklären sich fast von selbst.
Z.b. findet man da
global secondary signal map: add signal=<Object Signal> race=<Var/Race> class=<Var/Class> script=<Script Name> prio=<Var/Number> name=<Var/String>

Die Signale kann man unter "constant" im Scripteditor auswählen.

Ansonsten wäre selbst manuelles prüfen nicht wirklich so umständlich oder Ressourcenfressend. Man muss doch nicht 1000 mal in der Sekunde nachschauen, alle soundsoviele Sekunden reicht doch aus.
Wissen ist Macht - weiß nichts macht nichts
Handelsstationsvertreter
User avatar
Reflexer
Posts: 863
Joined: Sat, 21. Feb 09, 12:54
x4

Post by Reflexer »

muss ich eine rasse angeben?
UniTrader
Moderator (Script&Mod)
Moderator (Script&Mod)
Posts: 14571
Joined: Sun, 20. Nov 05, 22:45
x4

Post by UniTrader »

meines wissens reicht da null für race und class, ausser du willst eh filtern ^^
User avatar
Reflexer
Posts: 863
Joined: Sat, 21. Feb 09, 12:54
x4

Post by Reflexer »

ok - jetzt sinds nur noch 2 fragen... wozu ist daas "name" am ende?

wie bekomme ich den caller mit? wenn das script gestartet wird, das ich da angebe, dann muss ich wissen welches object das signal ausgelöst hat.
merlinschmidt
Posts: 473
Joined: Tue, 24. Feb 04, 08:17
x4

Post by merlinschmidt »

Das Script wird auf dem Objekt ausgeführt, denke ich mal (bei Zerstörung etwas unpraktisch), der Name passt dazu:
<RefObj> remove secondary signal: signal=<Object Signal>, name=<Var/String>
Wissen ist Macht - weiß nichts macht nichts
Handelsstationsvertreter
User avatar
Reflexer
Posts: 863
Joined: Sat, 21. Feb 09, 12:54
x4

Post by Reflexer »

so langsam wird es Tag :)

ich teste das mal in ruhe :)
UniTrader
Moderator (Script&Mod)
Moderator (Script&Mod)
Posts: 14571
Joined: Sun, 20. Nov 05, 22:45
x4

Post by UniTrader »

merlinschmidt wrote:Das Script wird auf dem Objekt ausgeführt, denke ich mal (bei Zerstörung etwas unpraktisch)
richtig, [THIS] ist das Objekt das das Signal ausgelöst hat ;) und bis das Script, welches direkt an das SIGNAL_KILLED gekoppelt ist ausgeführt ist bleibt ein "zerstörtes" Objekt auch erhalten (kA wie es mit secondary Signals aussieht..) (da dieses Script aber normalerweise kein wait hat ist dies kein problem ^^)
User avatar
Reflexer
Posts: 863
Joined: Sat, 21. Feb 09, 12:54
x4

Post by Reflexer »

ich bin bisher davon ausgegangen, dass sich die signale so ähnlich wie events in anderen prog-sprachen verhalten. ganz abstrakt betrachtet isses auch ähnlich - aber eben nur ähnlich. ich glaube jetzt verstanden zu haben wie das ganze hier abläuft :)

danke männer :)

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