#lightpoint funktioniert im Multiplayer nicht... Exile DMS Mission Script

  • hi leute,
    ´
    ich möchte ein mit einer statischen DMS Mission gespawntes Fahrzeug mit Damage 1 (also buff) dauerhaft brennen lassen. Es handelt sich um einem Exile MP Server. Deshalb benötige ich Rauch, Feuer und Licht. Bis auf das Licht war alles einfach:


    Code
    1. _smoke = "test_EmptyObjectForSmoke" createVehicle _pos;
    2. _smoke attachTo [_vehtest1, [0,0,-1]];
    3. _fire = "#particlesource" createVehicle _pos;
    4. _fire setParticleClass "MediumDestructionFire";
    5. _fire attachTo [_vehtest1, [0,0,-1]];


    aber das Licht will einfach nicht funktionieren. Ich glaube das liegt daran, dass die ganzen Licht-Parameter nur lokal sind und beim Client, der auf dem Server spielt, nicht ankommen?



    Code
    1. _light = "#lightpoint" createVehicle getPos _vehtest1;
    2. _light lightAttachObject [_vehtest1,[0,0,3]];
    3. _light setLightDayLight true;
    4. _light setlightbrightness 1;
    5. _light setlightcolor [255,217,153];
    6. _light setlightambient [255,115,0];
    7. _light setlightintensity 20;


    wie krieg ich es hin, dass das genau so funktioniert wie mit Flammen und Rauch?
    Bitte erklärt es wirklich ausführlich, ich bin ein absoluter Script-Neuling...


    Danke im Voraus für eure Hilfe!!

  • lightpoints sind, auch wenn sie mit createVehicle erstellt werden, nur local. Du mußt es also über das Netzwerk verteilen.
    Nimm einen Trigger, setzte diesen auf "true" und erstelle deinen Lichtpunkt. Das dürfte am schnellsten und einfachsten gehen. Damit hat es jeder, auch JIP.


    Allerdings muss _vehtest1 etwas anderes sein. Ein Objekt was ebenfalls jeder kennt. Nimm das Fahrzeug was du sprengst, gib diesem eine Bezeichnung (z.B. DMS_Firecar) und ersetze _vehtest1 mit DMS_Firecar

  • ok, wie genau mach ich das, dass jeder client das bekommt? bzw was meint ihr mit init vom fahrzeug? sry bin wie gesagt da noch echt ein noob... würds euch was ausmachen, mir ne kleine stepbystep anleitung zu machen? ihr macht das sicher mit links... wäre top!! :)

  • Das Objekt steht auf der Karte. Die Karte & Objekte werden vom Server und jedem Clienten eingelesen, also auch dein Fahrzeug.
    Setze das Fahrzeug. Wenn du dieses anklickst, musst du den Reiter "init" aufmachen. Dort ist eine Input-Box, wo du deinen Code reinschreiben kannst.


    in deinem Fall:

    Code
    1. this spawn {
    2. _light = "#lightpoint" createVehiclelocal getPos _this;
    3. _light lightAttachObject [_this,[0,0,3]];
    4. _light setLightDayLight true;
    5. _light setlightbrightness 1;
    6. _light setlightcolor [255,217,153];
    7. _light setlightambient [255,115,0];
    8. _light setlightintensity 20;
    9. };


    Zur Erklärung: (Beispiel)
    Du setzt ein Trigger auf die Karte der auf blau und mehrfach auslöst. Schreibst du in diesen rein:
    hint "Hallo ich bin ein Trigger, jeder kennt mich und jeder kann es lesen"
    dann bekommt JEDER angeschlossene Client (Spieler) eine Hint-Nachricht, wenn der Trigger ausgelöst wird. Denn jeder kennt den Trigger und bei jedem steht drin:
    -> löse aus wenn blau
    -> bringe eine Hint-Nachricht.
    -> Aktiviere dich erneut


    Hint ist ein lokales Kommando, aber durch den Trigger sieht es jeder.


    Im Umkehrschluss könntest du jetzt den Trigger setzen und den Hacken bei "Nur Server" setzen. Es wird nichts passieren (außer beim Host / Editor), denn der Trigger wird zwar durch jedermann aktiviert, aber nur der Server soll etwas machen. Hint ist lokal, server kann mit dem Hint eh nix anfangen, keine Nachricht an die angeschlossenen Clienten.
    Das ist so der Einstieg.


    Später kannst du auch eine Nachricht nur auf dem Server oder einem Clienten erstellen lassen und dann mit RemoteExec arbeiten: (version mit dem Hacken im Trigger, was eigentlich völlig sinnfrei ist, aber es dir verdeutlicht)
    ["Hallo ich bin ein Trigger den nur der Server ausführt, aber der Hint wird über das Netzwerk geschossen. Dazu benutze ich remoteExec"] remoteExec ["hint", -2]


    Klingt alles kompliziert, wenn man sich eingefuchst hat, geht es aber

  • ich hab doch keine karte offen bzw mach doch nix im mission file :( hab doch nur das mission script für eine statische mission offen, das is nur ne sqf... das vehicle kann an zich orten auf der map spawnen. da kann ich nichts im editor machen. es ist nur ein mission script :(


    oder check ich grad was ganz und gar nicht?


    noch mal. das script ist eine statische dms mission, die entweder spawnt oder nicht. sie kann an den verschiedensten orten spawnen und nur wenn sie spawnt, spawnt halt das defekte vehicle das ewig brennen soll. ich hab für jede andere dms mission noch nie was in der mission.sqm geändert. sicher, dass wir von den gleichen dingen reden?

  • kennst du nicht das defents mission system? hier die mission (nicht wundern über den ein oder anderen komischen parameter, die settings sind vereinfacht zum testen):

  • hier noch das gecallte fn_SpawnNonPersistentVehicle_risingSilence2.sqf (spawnt das kaputte auto):


  • Ich sehe zumindest keine Möglichkeit, die ein reines agieren nur auf dem Server erlauben würde.


    Man könnte maximal über Events in Form von CBA-Events oder per Publicvariable Event arbeiten.
    Jedoch muss man dazu zumindest auch auf Clientseite einige Sachen erstellen.


    Hast du Zugriff auf die Missionsdatei? Und laufen andere Mods neben Exile wie bspw. CBA.

  • Hier mal ohne Gewähr

    Wenn das Licht gelöscht werden soll, wenn das Fahrzeug nicht mehr da ist, muss man dann natürlich noch weiter scripten.

  • remoteExec ["fn_LightpointClient", -2, true];

    Der Server darf remoteExec nutzen?


    EDIT:// gerade gelesen:

    Note: Server doesn’t have any limitations at place, everything is enabled and opened for him. All limitations and rules apply only for client(s).

    Mach das nach der Methode, die Drunken Officer skizziert hat. Ist besser.