KI Befehle des Kommandeurs Deaktivieren

  • Vanilla
  • KI Befehle des Kommandeurs Deaktivieren

    Hallo Liebe Arma World Community...


    Hab folgendes Problem.

    Und zwar würde ich gerne wissen wie ich den Truppenführer die Befehlsgewalt entziehen kann wen ich im Editor zu einer anderen Person switche.

    Weil ich bau mir immer mal gerne kleinere Missionen im Editor zusammen und da die KI von den einzelnen Spielern nicht die hellste ist switche ich gerne um den Part selber zu übernehmen, besonders wen es ums fliegen geht ist die KI nicht zu gebrauchen.

    Nur das Problem ist wen ich meine Truppe den befehl erteile in ein Fahrzeug einzusteigen und dann zum piloten switche, der Kommandeur immer den befehl gibt auszusteigen was mich ein wenig frustriert. ;(

    Hab jetzt echt alles versucht 8 std 2 Nächte im Internet gesucht und nix gefunden. (Ja ich weis Wiki mit insgesamt 2047 Script befehlen, :S wo mein englisch leider nicht gut genug ist und ich nicht wirklich plan vom Skripten habe oder die zeit)

    Hab schon versucht die AI komplett auszustellen ( Player disableAI "All"; ) der junge hat nicht mal mehr geatmet, versucht die Kommunikation zu unterbrechen oder den dauer befehl stop ( commandStop (units player); ) aber irgendwie hat nix geholfen. X(

    Bin jetzt wirklich am verzweifeln da ich nicht wegen einen kleinen Script text jetzt das Scripten lernen will ( ich will doch nur spielen ^^ )

    Ich hoffe ihr könnt mir da weiter helfen. :rolleyes:

    Hab noch auf nen anderen block das selbe Problem gefunden, ( hx3.de/editing-scripting-187/k…spieler-abschalten-25527/ )
    was aber leider nicht bis zu ende kommentiert wurde da der betroffene wahrscheinlich die Lösung schon gefunden hat, wie er selber sagt soll es ja nur ein kurzer befehl sein... ?(

    Ich danke euch schon mal im voraus :thumbup:

    Hier noch fix nen video zum Proplem ( )

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

  • wie genau switchst du denn deine Einheit?

    Weil ich denke das Problem liese sich lösen, wenn man einfach immer die aktuelle Spielereinheit im Rang über alle anderen hebt. Somit wäre der Spieler immer der Anführer der Gruppe und das Problem sollte sich erledigt haben. Um das allerdings zu gewährleisten müsste man iregendeinen EventHandler finden, der ausgelöst wird, wenn der einheitenwechsel stattfindet und dann setRank ausführen :)

    PS: Verwendest du CBA in der entsprechenden Mission?
    Entwickler von SQDev
    Co-Entwickler von OurAltis
    "Nur Event-Team" Mitglied bei ArmAWorld
  • Bzw eine einfache Brute-Force Lösung wäre in deinem Missionsordner eine neue Datei mit dem Namen init.sqf einzufügen (Im sleben Verzeichnis, in dem auch die mission.sqm liegt) und da folgendes rein zu schreiben:

    C-Quellcode: inti.sqf

    1. CURRENT_PLAYER = player;
    2. CURRENT_PLAYER_RANK = rank player;
    3. addMissionEventHandler [
    4. "EachFrame",
    5. {
    6. if(!(player isEqualTo CURRENT_PLAYER)) then {
    7. // restore unit's rank
    8. CURRENT_PLAYER setRank CURRENT_PLAYER_RANK;
    9. // get player's original rank
    10. CURRENT_PLAYER_RANK = rank player;
    11. // promote player to highest rank possible
    12. player setRank "COLONEL";
    13. };
    14. }
    15. ];
    Alles anzeigen

    Damit solltest du zu jedem Zeitpunkt der Anführer der Gruppe sein (es sei denn du hast eine Einheit in der Gruppe die Ebenfalls den Rang eines Colonels hat, aber ich glaube default-mäßig hat keine platzierte Einheit einen so hohen Rang.
    Entwickler von SQDev
    Co-Entwickler von OurAltis
    "Nur Event-Team" Mitglied bei ArmAWorld
  • Bzw. vllt geht's noch eleganter:
    Versuche mal in die init.sqf folgendes rein zu schreiben:

    Quellcode: init.sqf

    1. addMissionEventHandler ["TeamSwitch", {hint "Just switched unit!"; nil;}];

    Dann sag Bescheid ob du nach dem Wechsel deiner Einheit oben rechts die Nachricht "Just switched unit!" angezeigt bekommst :music_whistling:
    Entwickler von SQDev
    Co-Entwickler von OurAltis
    "Nur Event-Team" Mitglied bei ArmAWorld
  • Moin also erst mal danke für die schnelle Antwort...

    Also zum switchen der Einheiten weis ich jetzt nicht genau wie du das meinst, ich drück u bei Szenario spielen. :huh: CBA verwende ich auch nicht nur die Standards, Debug-Konsole und init...
    Wie gesagt bin da jetzt nicht so der meister im Skripten und Kenn mich da auch leider nicht mit den ganzen Konsolen so aus, da es bis jetzt auch so funktioniert hatte wie ich es wollte.

    so hab jetzt mal dein Quellcode versucht ( addMissionEventHandler ["TeamSwitch", {hint "Just switched unit!"; nil;}]; ) und ja oben rechts erscheint die nachricht "Just switched unit!" ^^ Nur leider ohne eine Auswirkung ||
    Hab das Gefühl das es doch eine härtere Nuss wird als ich dachte :thumbdown:

    Was ich verdammt schade finde weil mir da schon eins zwei Missionen im Kopf rumschwirren die ich unbedingt spielen will es aber so nicht kann... X/
  • mck schrieb:

    so hab jetzt mal dein Quellcode versucht ( addMissionEventHandler ["TeamSwitch", {hint "Just switched unit!"; nil;}]; ) und ja oben rechts erscheint die nachricht "Just switched unit!" Nur leider ohne eine Auswirkung
    Das ist auch gut so, denn in dem Code, mit dem "TeamSwitch" hab ich auch keine Auswirkung rein gebastelt ^^

    Aber da wir jetzt wissen, dass der TeamSwitched EH feuert, wenn du wechselst, kann man die Lösung mit dem EachFrame-EH elegeant darauf umschustern. Das bedeutet du schreibst jetzt folgendes in die init und dann solltest du hoffentlich eine Auswirkung haben:

    C-Quellcode: init.sqf

    1. ORIGINAL_UNIT_RANK = rank player;
    2. addMissionEventHandler [
    3. "TeamSwitch",
    4. {
    5. params["_oldUnit", "_newUnit"];
    6. // restore unit's rank
    7. _oldUnit setRank ORIGINAL_UNIT_RANK;
    8. // get unit's original rank
    9. ORIGINAL_UNIT_RANK = rank _newUnit;
    10. // promote unit to highest rank possible
    11. _newUnit setRank "COLONEL";
    12. }
    13. ];
    Alles anzeigen
    Entwickler von SQDev
    Co-Entwickler von OurAltis
    "Nur Event-Team" Mitglied bei ArmAWorld
  • Hmm bei mir kommt intit Ungültige Zahl in Ausduck wen ich das so einfüge. ?(

    ORIGINAL_UNIT_RANK = rank player; addMissionEventHandler ["TeamSwitch",{params["_oldUnit", "_newUnit"]; // restore unit's rank _oldUnit setRank ORIGINAL_UNIT_RANK; // get unit's original rank ORIGINAL_UNIT_RANK = rank _newUnit; // promote unit to highest rank possible _newUnit setRank "COLONEL";}];
  • ich möchte nun auch etwas helfen und habe dir die Datei erstellt.
    Hier kannst du die Datei runterladen Gerne sagt ich dir auch wie du so eine Datei erstellt.
    viel spaß beim benutzen und Spielen.

    du muss die Datei bei deinen Mission Orndern rein tun also flogern Pfad: C:\Users\PC Name\Documents\Arma 3 - Other Profiles/Nickname\missions/deine Mission.
    Wenn fragen bestehen lass hören:)
    grüße
    JW