Verständnissfrage zum Ort der Ausführung bei remoteExecCall

  • Multiplayer

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Verständnissfrage zum Ort der Ausführung bei remoteExecCall

    Hallo,

    stehe bei folgendem Problem grad irgendwie aufm Schlauch:
    Mit folgendem Code sollte die Funktion nach meinem Verständnis immer nur bei allen Clients ausgeführt werden. Egal ob SP, Self-Hosted oder Dedicated. Der Code selbst kann vom Client als auch vom Server/Dedi ausgeführt werden. (immer dort wo die _unit lokal ist)

    Quellcode

    1. // animation and other actions across the network to all players
    2. [_unit, true] remoteExecCall ["AIS_System_fnc_unconcsiousRemote", [0,-2] select isDedicated, false];


    Macht es aber nicht. Habe mir folgenden simplen Code zum prüfen rein geschrieben in die Funktion. Und das finde ich dann auch immer im .rpt file des Dedicated Servers.

    Quellcode

    1. if (isDedicated) then {
    2. diag_log format ["AIS_uncRemote - Server has called. Unit: %1 --- Owner: %2", _unit, owner _unit];
    3. };


    Kann mir jamnd erklären warum das so ist?




    Grüße

    ___<<<my A2 Missions>>>___<<<A3 Wounding System>>>___
  • isDedicated gibt nur auf einem Dedicated Server true zurück. Damit wird der Code auch auf dem Dedicated Server ausgeführt, wenn der remoteExec(Call) Befehl selbst nicht auf dem Dedicated Server ausgeführt wurde.
    Ich glaube du hast die Annahme gemacht, dass isDedicated auch auf den Clients true zurück gibt, wenn die Mission auf einem Dedicated Server läuft. Und das ist wie gesagt nicht der Fall.
    Im Allgemeinen ist es selten sinnvoll den isDedicated-Befehl zu nutzen. Normalerweise möchte man Code auf dem Server ausführen (isServer), oder auf allen Maschinen mit Interface (hasInterface - alles außer Dedicated Server und Headless Clients).
    Ich würde das so machen:

    Quellcode

    1. [[_unit, true], {
    2. if (!isDedicated) then {
    3. _this call AIS_System_fnc_unconcsiousRemote;
    4. };
    5. }] remoteExec ["call"];
    Allerdings sollte !isDedicated höchstwahrscheinlich hasInterface sein.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von commy2 ()

  • isDedicated gibt nur auf einem Dedicated Server true zurück. Damit wird der Code auch auf dem Dedicated Server ausgeführt, wenn der remoteExec(Call) Befehl selbst nicht auf dem Dedicated Server ausgeführt wurde.

    Ah, ja ok verstehe. Wenn der Code aufm Dedi von einem Client ausgeführt wird, wird die Funktion dann natürlich auch an den Dedi gesendet. Das war mein Denkfehler. Danke
    Habe dein Beispiel mal so übernommen.


    Grüße

    ___<<<my A2 Missions>>>___<<<A3 Wounding System>>>___