ACIM Script - Advanced Civilian Interaction - ACE extension - Probleme im MP

  • Sonstiges

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

  • ACIM Script - Advanced Civilian Interaction - ACE extension - Probleme im MP

    Moin,

    ich möchte dem in die Jahre gekommenen Script ACIM (armaholic.com/page.php?id=27355) gerne eine ACE-Extension verpassen und die einzelnen Menüpunkte in die entsprechenden ACE Menüs hinzufügen.

    Im Singleplayer / Editor funktioniert das Script schon wunderbar und Fehlerfrei... doch sobald ich das ganze nicht als Host (Multiplayer) starte geht gar nichts mehr.
    Ich hoffe einfach mal, dass ich vor einem wirklich wirklich dummen Fehler sitze und nur zu blind bin ihn zu finden.

    Mein RPTlog gibt mir folgende Fehlermeldung:

    Spoiler anzeigen

    Quellcode

    1. _namespace setVariable [_objectType, _actions];
    2. >
    3. Error position: <setVariable [_objectType, _actions];
    4. >
    5. Error Reserved variable in expression
    6. File z\ace\addons\interact_menu\functions\fnc_compileMenuSelfAction.sqf, line 117
    7. Error in expression <") then {
    8. _actionTrees = [];
    9. _namespace setVariable [_objectType, _actionTrees];>
    10. Error position: <setVariable [_objectType, _actionTrees];>
    11. Error Reserved variable in expression
    12. File z\ace\addons\interact_menu\functions\fnc_addActionToClass.sqf, line 39
    13. [ACE] (interact_menu) ERROR: Failed to add action - action (civ_stop) to parent ["ACE_SelfActions","CivIntself"] on object [1] z\ace\addons\interact_menu\functions\fnc_addActionToClass.sqf:67
    14. Mission id: f792af12e2d2992a964a4332ec3f9c8aa1b04eee
    15. Warning: Cleanup player - person 2:377 not found
    Alles anzeigen


    Meine SQF zum hinzufügen der einzelnen Befehle zum ACE Menü ist:
    Spoiler anzeigen

    Quellcode: ace_actions.sqf

    1. //Interaction with CIV
    2. _action = ["CivInt", "Civilian Interaction", "\z\ace\addons\interaction\UI\team\team_management_ca.paa",{}, {true}] call ace_interact_menu_fnc_createAction;
    3. ["C_man_w_worker_f", 0, ["ACE_MainActions"], _action, true] call ace_interact_menu_fnc_addActionToClass;
    4. _action = ["checkid", "Pass kontrolieren", "", {createDialog "ACIM_Info"}, {true}] call ace_interact_menu_fnc_createAction;
    5. ["C_man_w_worker_f", 0, ["ACE_MainActions","CivInt"], _action, true] call ace_interact_menu_fnc_addActionToClass;
    6. _action = ["Befragen", "Befragen", "", {execVM "CW_ACIM\Scripts\Question\question_civ.sqf"}, {true}] call ace_interact_menu_fnc_createAction;
    7. ["C_man_w_worker_f", 0, ["ACE_MainActions","CivInt"], _action, true] call ace_interact_menu_fnc_addActionToClass;
    8. _action = ["search", "Durchsuchen", "", {execVM "CW_ACIM\Scripts\Search\checkshirt.sqf"}, {true}] call ace_interact_menu_fnc_createAction;
    9. ["C_man_w_worker_f", 0, ["ACE_MainActions","CivInt"], _action, true] call ace_interact_menu_fnc_addActionToClass;
    10. //Selfinteraction
    11. _action = ["CivIntself", "Civilian Interaction", "\z\ace\addons\interaction\UI\team\team_management_ca.paa", {}, {true}] call ace_interact_menu_fnc_createAction;
    12. [typeOf player, 1, ["ACE_SelfActions"], _action] call ace_interact_menu_fnc_addActionToClass;
    13. _actionmain = ["civ_ground", "Auf den Boden!", "", {[_player] execVM "CW_ACIM\Scripts\Movement\getdown.sqf"}, {true}] call ace_interact_menu_fnc_createAction;
    14. [typeOf player, 1, ["ACE_SelfActions", "CivIntself"], _actionmain] call ace_interact_menu_fnc_addActionToClass;
    15. _actionmain = ["civ_surrender", "Hände hoch!", "\z\ace\addons\captives\UI\Surrender_ca.paa", {[_player] execVM "CW_ACIM\Scripts\Movement\surrender.sqf"}, {true}] call ace_interact_menu_fnc_createAction;
    16. [typeOf player, 1, ["ACE_SelfActions", "CivIntself"], _actionmain] call ace_interact_menu_fnc_addActionToClass;
    17. _actionmain = ["civ_stand_up", "Aufstehen!", "", {[_player] execVM "CW_ACIM\Scripts\Movement\getup.sqf"}, {true}] call ace_interact_menu_fnc_createAction;
    18. [typeOf player, 1, ["ACE_SelfActions", "CivIntself"], _actionmain] call ace_interact_menu_fnc_addActionToClass;
    19. _actionmain = ["civ_stop", "Stehenbleiben!", "", {[_player] execVM "CW_ACIM\Scripts\Movement\stop.sqf"}, {true}] call ace_interact_menu_fnc_createAction;
    20. [typeOf player, 1, ["ACE_SelfActions", "CivIntself"], _actionmain] call ace_interact_menu_fnc_addActionToClass;
    21. _actionmain = ["civ_go", "Sie können gehen!", "", {[_player] execVM "CW_ACIM\Scripts\Movement\go.sqf"}, {true}] call ace_interact_menu_fnc_createAction;
    22. [typeOf player, 1, ["ACE_SelfActions", "CivIntself"], _actionmain] call ace_interact_menu_fnc_addActionToClass;
    23. //Admin Menu
    24. AdminUIDs = [];
    25. if ((getPlayerUID player) in AdminUIDs) then
    26. {
    27. _actionmain = ["admin_console", "Admin Konsole", "", {createDialog "ACIM_ADMIN_MENU"}, {true}] call ace_interact_menu_fnc_createAction;
    28. [typeOf player, 1, ["ACE_SelfActions", "CivIntself"], _actionmain] call ace_interact_menu_fnc_addActionToClass;
    29. };
    Alles anzeigen
    Ich weis, dass der Code sehr rudimentär ist, aber ich möchte diesen aktuell so simpel wie möglich halten um andere Fehlerquellen zu vermeiden.

    Im Anhang findet Ihr die Mission an sich (ACE / CBA).

    Wie bereits gesagt, hoffe ich dass es wirklich nur ein kleiner Denkfehler oder sonstiger Arma Shiiiit ist und man mir hier helfen kann. (Das fertige Script würde ich natürlich auch hier releasen)

    Grüße Gangolf
    Dateien

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

  • Moin,

    ich habe das Problem weiter eingrenzen können. Es ist nicht (wie ich dachte) das ACE Interactionmenü das Probleme macht, sondern das auszuführende Script um die KI machen zu lassen was ich möchte.

    Ich rufe die Prozedur mit folgendem Befehl über ACE auf:
    [_player] execVM "CW_ACIM\Scripts\Movement\stop.sqf" // _player wird von ACE mit dem Spieler ersetzet

    das Script führt folgende Zeilen aus:

    _caller = _this select 0;
    _pos = getpos _caller;
    _nearZiv = _pos nearObjects ["civilian",50];
    { _x disableAI "Move"}forEach _nearZiv;

    Dies funktioniert nicht! Während

    _caller = _this select 0;
    _pos = getpos _caller;
    _nearZiv = _pos nearObjects ["civilian",50];
    { _x setdammage 1}forEach _nearZiv;

    problemlos alles in der Umgebung killt.

    Jemand eine Idee? Das gleiche gilt übrigens für [_x,true] call ace_captives_fnc_setSurrendered

    BTW:Ich erhalte keinen Scripterror beim ausführen?
  • Moin,

    das Thema hat sich erledigt.

    Per ACE ausgeführte Scripts werden nur local gestartet.... einfach statt einem ExeC
    [[[_player], "CW_ACIM\Scripts\Movement\surrender.sqf"], "BIS_fnc_execVM", true] call BIS_fnc_MP;

    eingetragen und läuft wunderbar.

    @Fabi Das Ziel ist ein Rework des ACIM - Scriptes, mit dem man mit KIs interagieren kann ohne ständig irgendwelche Ace Menüs oder AddAction Menüs zu suchen....

    Szenario:
    Du sollst einen Compound auf Takistan räumen, in diesem befinden sich Zivilisten. Du kannst die dann quasi schon vom Tor her anschreien "Hände hoch" oder "auf den Boden".

    Mein Ziel jetzt ist es das ganze ein wenig mehr auszubauen und so mehr Interaktion zu ermöglich.

    Vielen Dank trotzdem für deine Nachricht!
    Thread kann geschlossen werden... eine Mütze Schlaf kann echt wunder bewirken.

    Grüße Gangolf
  • Ich hab das ganze aus Faulheit in nen Mod gepackt (lässt sich für mich besser händeln).

    Aktuell kann ich aus irgendeinem Grund die Init SQF mit [[60,[ADMINUID]],"fn_ACIM_init",true] call BIS_fnc_MP; nicht abrufen und hau mich jetzt auch ins Bett.

    Ihr könnt den Mod mit:
    duration = 60
    adminuid = [ADMINUID,ADMINUID]
    [duration] execVM "\CW_ACIM_002\CW_ACIM\Functions\fn_updateciv.sqf";
    [adminuid] execVM "\CW_ACIM_002\CW_ACIM\ace_actions.sqf";
    execVM "\CW_ACIM_002\CW_ACIM\ACIM_init.sqf";

    Aus eurer Init.sqf ausführen.

    Warum? Weil man einen solchen Mod nicht in jeder Mission braucht und ihn so einfach an schalten kann.

    Duration
    Damit auch nächträglich (per Zeus oder per Script) generierte Zivis die ACE Add Action Menüs erhalten, läuft hier ein Timer (60sec).
    Ich habe noch keine Ahnung wie viel Leistung das Frist, kann mir aber vorstellen bei viel KI viel (Ich überleg mir da noch ne bessere Lösung).

    AdminUID
    Dreimal darfst du raten, wass du damit kannst :P

    Wenn hier wirklich Interesse an dem fertigen Mod herrscht, halte ich euch gerne auf dem laufenden.

    Vorschläge und Ideen nehme ich mich gerne an @Fabi

    Grüße ein müder Gangolf
    Dateien
  • @Gangolf Danke Dir!

    Interesse auf jeden Fall. Und Ideen und wünsche habe ich auch :) Ich wollte in Zukunft an einem Dienstausweis/Personalausweis basteln, deswegen beobachte ich dieses Thema hier sehr genau und freue mich das du das hier weiterführen möchtest. In Kombination mit den Actions ist das richtig gut.

    Wir haben in unserem Clan eine Kaserne und ich würde dort gerne für die Checkpoint/Gesprächsaufklärung etc Dienstausweise einführen welche an die ID der Spieler gekoppelt sind. Dazu wäre es halt super wenn:
    • bei Soldaten ein Dienstausweis (Vorlage kannst du von mir haben) und bei Zivilisten ein (Personalausweis) angezeigt wird
    • Name, Alter und Bild von der ID automatisch auf den Ausweis projeziert werden (evtl noch Dienstgrad)
    • Der Ausweis ein Objekt ist was im Inventar Platz findet und auch getauscht werden kann (Daten müssen am Objekt erhalten bleiben, heißt: beim Join auf dem Server einmal einen Ausweis im Inventar hinzufügen, und dieser behält die Daten bis zum Schluß) - evtl kann ich dir ein Modell zur Ausweis-Verfügung stellen
    • Eine Self-Interaktion - Ausweis zeigen - und andere Spieler in 1-2m Nähe sehen diesen (Also auch den Ausweis freiwillig zeigen können :) )


    Ja...das wäre zumindest mal das grobe was einen so vorschwebt :)
  • Gangolf schrieb:

    Duration
    Damit auch nächträglich (per Zeus oder per Script) generierte Zivis die ACE Add Action Menüs erhalten, läuft hier ein Timer (60sec).
    Ich habe noch keine Ahnung wie viel Leistung das Frist, kann mir aber vorstellen bei viel KI viel (Ich überleg mir da noch ne bessere Lösung).
    Ich kenne mich damit halt auch nicht aus, aber denke mal schon das da ne Menge Performance gebraucht wird.

    Genial wäre es ja, wenn man die ACE Action im Menü der Person (Attribute) an und abschalten könnte und auch gleich dort die Daten für Asuweis eintragen kann. So kann man Zivis spawnen und gleich sagen - hat ACE Menü...hab halt keine AHnung wie Aufwendig das ist. Habe dies aber schon bei einigen Mods gesehen - z.B. bei dem CH53 dort kann man Zahlen für die Beschriftung eingeben, Die Rotoren falten usw. Dort versteckt sich zumindest der Code für diese Menüeinträge :)
  • Moin,

    hier bin ich wieder mit ein wenig Käse.... und nem großen Fragezeichen..

    C-Quellcode

    1. while {true} do {
    2. {
    3. if ((side _x) == civilian) then {
    4. if (!(_x getVariable ["isSetup", false])) then {
    5. _x setVariable ["isSetup", true];
    6. _action = ["CivInt", "Civilian Interaction", "\z\ace\addons\interaction\UI\team\team_management_ca.paa",{}, {true}] call ace_interact_menu_fnc_createAction;
    7. [_x, 0, ["ACE_MainActions"], _action, true] call ace_interact_menu_fnc_addActionToObject;
    8. _action = ["checkid", "Pass kontrolieren", "", {createDialog "ACIM_Info"}, {true}] call ace_interact_menu_fnc_createAction;
    9. [_x, 0, ["ACE_MainActions","CivInt"], _action, true] call ace_interact_menu_fnc_addActionToObject;
    10. _action = ["Befragen", "Befragen", "", {execVM "\CW_ACIM_002\CW_ACIM\Scripts\Question\question_civ.sqf"}, {true}] call ace_interact_menu_fnc_createAction;
    11. [_x, 0, ["ACE_MainActions","CivInt"], _action, true] call ace_interact_menu_fnc_addActionToObject;
    12. _action = ["search", "Durchsuchen", "", {execVM "\CW_ACIM_002\CW_ACIM\Scripts\Search\checkshirt.sqf"}, {true}] call ace_interact_menu_fnc_createAction;
    13. [_x, 0, ["ACE_MainActions","CivInt"], _action, true] call ace_interact_menu_fnc_addActionToObject;
    14. };
    15. };
    16. } forEach allUnits;
    17. sleep _duration;
    18. };
    Alles anzeigen
    Und Zar erhalte ich in für Zeile 20.. also den Sleep Befehl.
    "Error: Allgemeiner Fehler in Ausdruck"

    Unabhängig ob ich mit einer Variable oder mit "sleep 60;" arbeite.

    Jemand eine Idee? Ich wüsste nicht was man mit "Sleep" falsch machen könnte 8|

    Grüße Gangolf
  • C-Quellcode

    1. ["CAManBase", "Init", {
    2. params ["_unit"];
    3. if (side _unit != civilian) exitWith {};
    4. // your code
    5. }] call CBA_fnc_addClassEventHandler;
    so würde das mit dem CBA classen event system gehen und sollte dazu auch noch einiges an performance einsparen
    SIGNATUR START
    Wer Rechtschreibfehler findet darf sie behalten
    ACE3 Core Developer
    CBA A3 Developer
    Developer of Dynasound, Enhance SoundScape, Immerse, Suppress and Align
    SIGNATUR ENDE
  • Kurzes Update:
    Mod läuft!

    Sobald der Spieler der Mission beigetreten ist und am Leben ist { waituntil (alive player); } wird für alle platzierten Zivilisten die entsprechenden Menüs hinzugefügt... Alle von Zeus gesetzten Einheiten erhalten mittels eines Event Handlers Ihre Menü-Punkte.

    Auch die von TaskForce Radio abhängige Hörreichweite funktioniert bereits. Aktuelle Einstellungen sind:
    Flüstern 2,5m
    Normal 5m
    Schreien 30m

    Ich werde den Mod aktuell noch weiter testen und anschließend Anfangen ein paar Features / zusätzliche Optionen hinzufügen.

    Grüße Gangolf
  • Moinsens,

    ein kleines Update und mal wieder meine Unwissenheit...

    Wir haben den Mod jetzt bei einer Mission testen können, dabei ist mir folgendes Problem aufgefallen:

    In einer Multiplayersession ist es mir nur möglich per Zeus erzeugte Zivilisten Befehle zu geben (Hände hoch / Auf den Boden), während vorgesetzte Zivilisten nicht reagieren.

    Folgender Code wird zum Ausführen von Befehlen verwendet:

    C-Quellcode

    1. _caller = _this select 0; //Ausführender Spieler
    2. _pos = getpos _caller;
    3. _nearZiv = _caller nearObjects ["civilian",(TF_speak_volume_meters / 2)];
    4. {[_x,true] call ace_captives_fnc_setSurrendered}forEach _nearZiv;
    Jemand eine Idee, warum die AI so reagiert?


    Grüße Gangolf
    Dateien
    • @CW_ACIM.zip

      (1,13 MB, 46 mal heruntergeladen, zuletzt: )