auszuführender Befehl im Multiplayer mode

auszuführender Befehl im Multiplayer mode

Beitragvon Sanni » Do Jul 27, 2017 9:26 pm

Hallo Ihrs,

wie kann ich es erreichen, dass im Multiplayer mode ein Nasal-Script gestartet wird?
Ist das überhaupt möglich? Oder kann ich irgendein anderes Script eines Fliegers starten?

Liebe Grüsse,
Sanni
I failed the Turing test
Benutzeravatar
Sanni
 
Beiträge: 418
Registriert: Do Sep 26, 2013 9:05 am
Wohnort: Niedersachsen
Callsign: D-Sanni

Re: auszuführender Befehl im Multiplayer mode

Beitragvon rollershutter » Fr Jul 28, 2017 9:31 am

Hallo Sanni,
Willst du Nasal für ein MP-Aircraft ausführen (dem du in deinem "Gefährt" dann begegnest) oder für das Gefährt, in dem du selbst sitzt (EDIT:), aber nur, wenn ein Mitflieger drinsitzt?

-für ein MP-Aircraft kannst du ein Skript laden in dem Teil in der model-XML, welcher den "onload"-Nasal aufruft...

Gruß, Sebastian
i5-2400 - 8GB DDR3 - integrated Graphics - Ubuntu 14.04.5 64bit lubuntu-desktop - FG: stable | next (wiki.flightgear.org/Scripted_Compilation_on_Linux_Debian/Ubuntu)
rollershutter
 
Beiträge: 107
Registriert: Mi Okt 21, 2015 8:40 pm
Callsign:

Re: auszuführender Befehl im Multiplayer mode

Beitragvon rollershutter » Fr Jul 28, 2017 2:59 pm

Hallo nochmal,

nachdem ich nach Hause gekommen bin, konnte ich nochmal nachschauen:

ich habe in einem normal in der -set.xml eingebundenen Nasalskript eine Funktion "mp_model_load" und eine "mp_model_unload":
z.B. mp_model_init.nas:
Code: Alles auswählen
var mp_model_load = func () {
   ## do something
}

im Abschnitt der "AIRCRAFT-set.xml":
Code: Alles auswählen
<nasal>
  <bf109>
    [...]
    <file>Aircraft/bf109/Nasal/mp_model_init.nas</file>
    [...]
  </bf109>
</nasal>

die können dann in der besagten Model-XML im Abschnitt: <nasal><load> bzw. <unload> unter dem Namespace, in dem du sie eingebunden hast aufgerufen werden:
Code: Alles auswählen
<nasal>
  <load>
    <![CDATA[
      bf109.mp_model_load();
    ]]>
  </load>
  <unload>
    <![CDATA[
      bf109.mp_model_unload();
    ]]>
  </unload>
</nasal>


oder du schreibst deinen Nasalschnipsel einfach in den Abschnitt <load> der Model-XML direkt rein... ;)

Gruß
i5-2400 - 8GB DDR3 - integrated Graphics - Ubuntu 14.04.5 64bit lubuntu-desktop - FG: stable | next (wiki.flightgear.org/Scripted_Compilation_on_Linux_Debian/Ubuntu)
rollershutter
 
Beiträge: 107
Registriert: Mi Okt 21, 2015 8:40 pm
Callsign:

Re: auszuführender Befehl im Multiplayer mode

Beitragvon Sanni » Fr Jul 28, 2017 9:10 pm

Der Schnipsel ist ein bisschen größer und soll natürlich geladen werden wenn der Flieger von einem anderen Mitlieger gesehen wird. Deshalb Multiplayer.
Die Scripte in meinem Flieger werden natürlich geladen (Nasal-Abschnitt).

Ich möchte es erreichen, dass das Nasal-Lichtpaket (habe ich in der Gazelle 'geklaut') geladen wird, um die Blinkelichter über Multiplayer steuern zu können. Für jedes einzelne Blitzen ist der Mode ja doch nicht so wirklich geeignet, da zu langsam...

Wenn ich dein Geschreibsel richtig interpretiere wird der Nasal-Abschnitt der *-set.xml Datei ausgeführt?
I failed the Turing test
Benutzeravatar
Sanni
 
Beiträge: 418
Registriert: Do Sep 26, 2013 9:05 am
Wohnort: Niedersachsen
Callsign: D-Sanni

Re: auszuführender Befehl im Multiplayer mode

Beitragvon rollershutter » Mo Jul 31, 2017 8:14 am

Hi,
der Abschnitt <nasal><load> der Model-XML ist genau dazu da Dinge für den Multiplayer-Mitspieler zu auszuführen, bei dem das Model geladen wird wenn er auf Dich trifft.
Mein Beispiel ist vermutlich ein bischen verwirrend was die Platzierung der Abschnitte betrifft, denn ich lade die Funktionen bezüglich MP im "normalen Bereich" <nasal> in der -set-XML:
Wenn du vorher deinen Schnipsel als Funktion einbindest ohne diese aufzurufen kannst du sie dann (so wie oben beschr.) ausschließlich für MP aufrufen.

Wenn der MP-Teilnehmer allerdings bei Dir Funktionen bedienen können soll, musst du noch ein bischen mehr vorbereiten (-> dual control)

EDIT: Hmm -sry, normalerweise würde man das wohl auch nicht so machen, sondern eher wie oben abschließend erwähnt: Nasal direkt dort hineinschreiben, denn ein anderes Gefährt wird nicht für jedes Gefährt die Nasal-Skripte vorladen... (das Bsp. kommt von meinen dual-control Schnipseln und da muss ich nochmal schauen das ich das anders mache)

EDITER:
also doch einfach so:
in der besagten Model-XML im Abschnitt: <nasal><load> bzw. <unload> Dinge für MP ausführen:
Code: Alles auswählen
<nasal>
  <load>
    <![CDATA[
      ## hier irgendwas machen
    ]]>
  </load>
  <unload>
    <![CDATA[
      ## hier irgendwas machen
    ]]>
  </unload>
</nasal>


...funktioniert denn das Lichtpack in deinem Modell ohne MP? ich habe mal kurz geschaut in der Gazelle, du könntest ja erstmal alles, was mit Lichtern zu tun hat im NASAL-LOAD/UNLOAD der Model-XML: Gazelle.XML in dein Modell kopieren und ggf. anpassen...

Gruß
i5-2400 - 8GB DDR3 - integrated Graphics - Ubuntu 14.04.5 64bit lubuntu-desktop - FG: stable | next (wiki.flightgear.org/Scripted_Compilation_on_Linux_Debian/Ubuntu)
rollershutter
 
Beiträge: 107
Registriert: Mi Okt 21, 2015 8:40 pm
Callsign:


Zurück zu Sonstiges

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast