Teleport bei remote execution

  • Hallo, ich verzweifel derzeit an einem Problem mit remoteExec.


    Erreichen möchte ich folgendes: Die Spieler bekommen ein Briefing und rüsten sich aus. Anschließend geht löst einer der Spieler per Mausrad Befehl den Transport in die AO (bzw. in das Flugzeug, das die Spieler zur AO bringt) aus.


    Die Mausradoption löst folgendes aus:

    Code
    1. incursion = true;
    2. publicVariable "incursion";


    Ein Trigger, der als Bedingung "insursion" hat und nur auf dem Server auslöst, startet dann folgendes Script:

    Code
    1. [["", "BLACK OUT",2]] remoteExec ['titleText',0,false];
    2. sleep 2;
    3. [airplane,{player moveInCargo _this}] remoteExec ['call',0,false];
    4. sleep 2;
    5. skipTime 4;
    6. [["4 Stunden später...","BLACK IN",7]] remoteExec ['titleText', 0,false];


    Das Problem ist: Die Zeilen 1,5 und 6 haben bei allen Spielern den gewünschten Effekt. Nur die Zeile 3 funktioniert nicht. Bei einem Test mit 8 Spielern saßen 4 im Flugzeug, während der Rest noch am Startpunkt stand.


    Ich hoffe mir kann jemand helfen.

  • Machs doch ganz "dumm":
    remoteExec ["deinTag_fnc_reinda", 0];


    und in der funktion haste dann das drinne stehen


    x moveInCargo y;


    Wär jetzt auf anhieb genau das was funzt. X ist halt dann der jeweilige Spieler.



    Edit:
    remoteExec "call" ist jetzt nicht so toll. Hat man mir auch auf die Pfötchen gehauen. Hat weh getan, mach ich seitdem nicht mehr.


    Ich habs jetzt nicht nachgeprüft und ich test ja auch alles immer irgendwie tausendfach aber müsstest du das nicht eigentlich
    ["dein\pfad\zum\script.sqf"] remoteExec ["execVM", 0]; schreiben? Weil wenn deine Funktion "airplane" heißt, fehlt da "deinTag_fnc" davor, danach käme ein Code - was du ja da nicht bräuchtst. Demnach müsstest du wenn dann


    ["deinTag_fnc_airplane"] remoteExec ["call", 0]; heißen, das aber schreibst mann dann eher so:
    [_sende, _deine, _sachen, _mit] remoteExec ["deinTag_fnc_airplane", 0];


    Ich hoffe ich habe dich jetzt maximal verwirrt, falls ja, schreib mich an, dann kritzel ich dir das schnell zusammen.

  • Wie ich Funktionen definiere habe ich noch nicht herausgefunden. Ich steige bei der Struktur leider absolut nicht durch.


    "airplane" ist keine Funktion, sondern der im 3den vergebene Name für die Osprey, in welche die Spieler teleportiert werden sollen.


    Den Aufbau der Zeile 3 habe ich direkt aus dem Arma 3 Wiki, dadurch sollte der vor "remoteExec" als Parameter übergebene Code doch ausgeführt werden, oder?

  • Ersetze:

    Code
    1. [airplane,{player moveInCargo _this}] remoteExec ['call',0,false];

    mit:

    Code
    1. {
    2. [_x, [airplane, _forEachIndex]] remoteExec ["moveInCargo", _x];
    3. } forEach (allUnits select {isPlayer _x});


    Warum ist das ganze überhaupt ein Trigger? Wenn du die Variable schon auf dem Clienten mit der user action setzt, dann kannst du dein Skript auch gleich von dort ausführen und den Trigger löschen.

  • Ich denke, dass es problematisch ist die Spieler im Multiplayer nach dem ausrüsten per Action alle gleichzeitig in ein Flugzeug zu teleportieren, da es evtl dazu führt das versucht wird eine Cargoposition mit mehreren Spielern gleichzeitig zu besetzen... Letztendlich knallt es dann nur noch....


    commy2:


    Versteh ich das grad richtig, dass du für jeden Spieler auf dem Server einen Remote ausführst?Dieser halt nur bei dem jeweiligen Spieler auslöst, aber trotzdem Performant?

    "Es ist nicht so, dass ich besonders schlau/intelligent bin, es ist einfach so, dass ich mich länger mit den Problemen beschäftige." Zitat Albert Eintein

    Einmal editiert, zuletzt von Codar ()

  • Vielen Dank für die Antworten. Ich werde das morgen mal testen.


    @commy2 : Die Lösung mit dem Trigger stammt noch von der Zeit, bevor ich angefangen habe, mich mit remoteExec zu beschäftigen. Da war die Lösung mit der Variable und dem Trigger halt mein go to workaround. Aber du hast Recht, bei remoteExec kann ich darauf verzichten.