setCaptive Problem

  • Ich versuche mich gerade an einem Undecover Modul für unsere Missionen auf dem Server.

    Leider funktioniert player setCaptive true; auf dem Server nicht so, wie es sollte. Lokal läuft es.

    Trotz captive = true werde ich vom Feind beschossen und ich verstehe einfach nicht wieso.

    Auch mit ZEUS sehe ich mich als captive in der zivilen Gruppe und nicht als Bluefor.

    Trotzdem funktioniert es nicht.



    initPlayerLocal.sqf

    Code
    1. player setVariable ["iV_isUndercover", 1];
    2. player setCaptive true;
    3. hint "Undercover!";


    Der hint kommt auch.

    Die Variable wird gesetzt

    Und captive bin ich auch.

  • Wäre mir neu, dass setCaptive ein lokal wirkender command ist. Dennoch, hier ein Lösungsansatz, der sogar JIP-kompatibel ist. Du musst lediglich CBA und ACE nutzen dafür.

    Es gibt folgendes Event, welches durch das Addon ace_common auf allen Maschinen gehandled wird:


    Code
    1. [QGVAR(setCaptive), {
    2. params ["_object", "_set"];
    3. TRACE_2("setCaptive EH",_object,_set);
    4. _object setCaptive (_set > 0);
    5. }] call CBA_fnc_addEventHandler;

    Wir tun also folgendes:

    Code
    1. ["ace_common_setCaptive", [player, 1]]] call CBA_fnc_globalEventJIP;

    Möchtest du den Status resetten auf allen Maschinen, dann einfach:


    Code
    1. ["ace_common_setCaptive", [player, 0]]] call CBA_fnc_globalEventJIP;
  • Das laut BIKI ja AL-EG sein sollte, sollte meiner Meinung nach remoteExec nicht nötig sein.

    Warum es nicht funktioniert, ist mir ein Rätzel, zumal ich in der Console auf dem Server bereits folgendes getestet hatte:


    Code
    1. private _target = player;
    2. [_target, true] remoteExec ["setCaptive", _target];


    Ich hätte wohl noch unser Modset erwähnen sollen. Hab es nämlich nicht pur Vanilla getestet:
    iNTERVENTION - Server



    ACE3 und CBA gehört auch bei uns zum Standard, weshalb ich zeitnah deine Option ausprobieren werde.

    Schonmal danke für die Bereitschaft zu Helfen. Feedback folgt...

  • Moin iV Ghost ,

    weis nicht, ob es bei Dir noch aktuell ist. Ausprobieren kannst Du es ja vielleicht dennoch für die initPlayerLocal.sqf

    Den Inhalt zur fnc kannst ja beliebig anpassen oder ganz weglassen und nach der ersten Zeile es so formulieren.

    Code
    1. _unit = param [0,objNull,[objNull]];
    2. _unit setCaptive true;


    So funzt es jedenfalls in meinen Mission.

  • Hey,


    Ja das Thema ist noch aktuell. Hatte gerade nur Missionsabend

    und deshalb noch keine Zeit um den vorherigen Vorschlag (ACE3-Lösung) zu testen.


    Aber was mir ebend aufgefallen ist, dass Einheiten,

    welche von mir durch ZEUS oder vom Server platziert werden funktionieren.

    Lediglich die, welche unser Headless Client platziert und das sind tatsächlich fast alle, werden nicht als captive anerkannt.



    Mein Script schaut übrigends wie folgt aus...


    fn_startUndercover.sqf (Von initPlayerLocal.sqf)



    fn_undercoverEvents.sqf



    fn_undercoverClothes.sqf

  • Ich hätte wohl noch unser Modset erwähnen sollen. Hab es nämlich nicht pur Vanilla getestet:
    iNTERVENTION - Server

    Ich kann mir gut vorstellen, dass die KI-Mod damit in Konflikt gerät.
    Ich habe dir noch einen Tip. Schau dir mal dieses CBA-Event von ACE3 (wiederum aus ace_common) an:


    Damit kannst du Einheiten/Spieler komplett "vergessen" machen.
    Dazu einfach:


    ["ace_common_setHidden", [player, 1]]] call CBA_fnc_globalEvent;


  • Kann ich "ace_common_setCaptive" serverseitig abfragen?


    Ich habe jetzt eine Patrouillenaufgabe erstellt, welche aber natürlich nicht Undercover zu lösen sein darf.

    Dazu frage ich dann folgendes auf dem Server ab:


    Code
    1. ({alive _x && _x inArea _areaMarker && (getPosATL _x select 2) < 15 && isNull objectParent _x} count (allPlayers - entities "HeadlessClient_F")) > 0;


    Jetzt fehlt mir halt noch die "Spieler ist nicht Undercover"-Abfrage.