[script] T8 Units - AI Spawn Script

  • Sonstiges

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

  • [script] T8 Units - AI Spawn Script




    Orginal Topic im BIF: T8 Units - a less dynamic AI creator
    Meine Homepage zum Script: hummelhummel-ag.de


    ___ Changelog ______

    # 27-JAN-2017 | update to V.070
    + moved all CONFIG things to A3 config type definitions and syntax
    + T8U_fnc_loadConfig:
    | parse the new config

    + T8U_fnc_handleGroups:
    | all groups are now controlled from one single handle / loop!
    | now only one spawned function controlls all groups, and not a spawned function for each group.

    + T8U_fnc_teleportGroupToCurrentWaypoint
    | teleport group to first waypoint id desired

    + T8U_fnc_createUnitContainer
    | create randomized unit selection based on config

    + FIXES and CHANGHES EVERYWHERE ...

    # 25.01.2016 | update auf V.061
    - neue Aufgabe: Occupy
    - "PATROL" Aufgaben über mehrere marker
    - verbesserungen bei der positions generierung

    # 10.12.2015 | update auf V.060
    - cfgFunctions
    - file structure
    - param / params
    - includes
    - basic macros
    - auto post init
    - better waypoint creation
    - ...

    # 17.10.2014 - update auf Version 052
    - pushback/count Error fix
    - man kann eine eigene Funktion für jede Gruppe definieren, die für jedes einheit der Gruppe ausgeführt wird (in der Funktion _this = die einzelne Einheit)
    - Kommunikations Array jetzt 3 Teilig
    - in der CONFIG: T8U_var_ZeusModul -> T8U_var_ZeusModules (jetzt ein Array, man kann mehrere Zeus Module einfügen)
    - ...

    # 16.09.2014 - update script auf Version 051




    ___ Einführung ______
    Die Grundidee vom Script war mir das platzieren von Einheiten zu erleichtern, also um beispielsweise eine Feindbasis zu bevölkern. Mit dem Script platziere ich nur noch einen Marker im Editor da wo ich Einheiten spawnen möchte, und im Script definiere ich dann welche Einheiten ich mir welcher Aufgabe spawnen möchte.

    Verfügbare Aufgaben:
    ATTACK: Gruppe greift gegebenen Marker an. (Spawn bei -A-, bewegt sich nach -B-, führt auf -B- SAD Wegpunkt aus)
    PATROL: Einfach Patroullie innerhalb eines Markers, Chance auf anderen zufälligen Wegpunkt.
    PATROL_AROUND: Einfache Patroullie um einen Marker herum (mit dem oder gegen den Uhrzeiger), geringe Chance auf anderen zufälligen Wegpunk.
    PATROL_MARKER: Patroullie läuft mehrer Marker ab, wahlweise mit SAD Wegpunkt auf den Markern.
    PATROL_URBAN: Patroullie inerhalb eines Markers, sehr hohe Chance auf anderen zufälligen Wegpunk, Wegpunkte liegen immer auf der Strasse.
    PATROL_GARRISON: Patroullie inerhalb eines Markers, an ihren Wegpunkten gehen die Einheiten in Häuser.
    GARRISON: Einheiten gehen in Häuser in der Marker "Zone"
    OCCUPY: Einheiten besetzten Häuser in der Marker "Zone"
    DEFEND: Einheiten bemannen leere statische Geschütze oder den Schützenplatz in leeren Fahrzeugen.
    DEFEND_BASE: Einheiten bemannen leere statische Geschütze oder umliegende Militärgebäude.
    LOITER: Einheiten lungern in der nähe eines Markers herum, stehen in Grüppchen, wenn Lagerfeuer oder Camping Zelt vorhanden, setzen sie sich in deren nähe hin (nicht MP optimiert).
    OVERWATCH: Die Einheiten "suchen" einen erhöten Punkt von dem aus sie den gegebenen Marker einsehen Können.

    Kommunikation:
    Beim definieren der Einheiten kann man festlegen ob eine Einheit mit anderen Einheiten kommunizieren kann/um Hilfe rufen kann und/oder ob sie anderen Einheiten zur Hilfe kommen kann.

    Um Hilfe rufen:
    Gerät eine Einheit unter Beschuss bzw schiesst zurück wird geschaut wieviele Gegner in Reichweite bekannt sind, wenn die Einheit nicht um einen gesetzten Faktor überlegen ist ruft sie um Hilfe. Einheiten in einer Entfernung bis zu 1000m werden angefunkt. Ausserdem werden allen anderen Einheiten im Nahbereich ( 250m ) die bekannten Ziele mitgeteilt. Eine Einheit kann nur 1x alle n Sekunden nach Hilfe rufen! Eine Einheit ruft nur jeweils eine andere Einheit zu Unterstützung!
    Dank "FiredNear" können Einheiten, falls sie nicht grade einer anderen Einheit zu Hilfe kommen, Schüssen im Nahbreich nachgehen. Wenn also eine unbekannte einheit im im Radius von ~65m um den Gruppenführer schiesst, bekommt die Gruppe einen SAD Wegpunkt auf diese Position.

    Zur Hilfe kommen:
    Wenn eine Einheit zur Hilfe gerufen wird, wird ein SAD Wegpunkt an der mittgeteilten Feindposition erstellt, und ein Wegpunkt zum Flankieren wird generiert. Sollte die die Entferung der zwischen helfender und zu helfender Einheit größer als 500m sein, sucht die helfende einheit nach einem geeigneten unbenutzen Transportfahrzeug. ( Zamak, HEMT, Ifrit, Offroad usw.)
    Sollte eine Einheit, die zur Hilfe gekommen ist, nun nicht auf Feinde treffen, wird sie sobald der SAD Wegpunkt abgeschlossen ist zur ihrer ursprünglichen Aufgabe zurückkehren.

    DAC:
    Eineheiten können mit "dem DAC kommunizieren / um Hilfe rufen"

    Headless Client:
    ungetestet, sollte aber theo. möglich sein

    andere AI mods / Scripte:
    Bis auf @bCombat ungetestet


    ___ Download / Dokumentation ______
    Leider alles auf Englisch...

    T8U - Inroduction - First Steps (V.061)
    PDF: Schrittweise einführung ins Script.
    Mission zur Einleitung. (V.061)

    T8U - CONFIG (V.061)
    PDF: Erklärung der Einträge in der T8_UnitsCONFIG.sqf Datei

    T8U - FUNCTIONS (V.061)
    PDF: Erklärung der "Spawn" Funktionen.

    T8U - UNIT DEFINITIONS (V.061)
    PDF: Erklärung der verschiedenen Aufgaben die Einheiten ausführen können, und wie sie definiert werden.

    Group Configs @ GitHub von SavageCDN


    T8 Units Showcase Mission (V.070)

    T8 Units Script (V.070)

    T8 Units x DAC - Demo Mission (V.061)


    ___ GitHub ______
    T8_Units - current V.070


    ___ Special Thanks ______
    Silola !!!
    MCPXXL, Lester, MemphisBelle, Darcy, SKH|Flip, SKH|Cyborg, SKH|Hydra und dem 1PARA
    KillzoneKid - für die debug console extension
    fabrizio_T
    Zorilya
    BIS


    ___ Disclaimer und Lizens ______
    This script is provided as is, without warranty of any kind. The author is not responsible for any direct, indirect, incidental or consequential damage of any kind, without limitation.

    This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.
    To view a copy of this license, visit creativecommons.org/licenses/by-nc-sa/4.0/ or send a letter to
    Creative Commons, 444 Castro Street, Suite 900, Mountain View, California, 94041, USA.

    You are free to:
    Share — copy and redistribute the material in any medium or format
    Adapt — remix, transform, and build upon the material
    The licensor cannot revoke these freedoms as long as you follow the license terms.

    Under the following terms:
    Attribution — You must give appropriate credit, provide a link to the license, and indicate if changes were made. You may do so in any reasonable manner, but not in any way that suggests the licensor endorses you or your use.
    NonCommercial — You may not use the material for commercial purposes.
    ShareAlike — If you remix, transform, or build upon the material, you must distribute your contributions under the same license as the original.
    No additional restrictions — You may not apply legal terms or technological measures that legally restrict others from doing anything the license permits.

    Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von T-800a () aus folgendem Grund: update auf V.070

  • Hey Danke T-800a für teilen und somit auch für die Unterstützung unserer Idee hier. :1_smile:
    Passwords are like underwear. You should change them often (okay, maybe not every day). Don’t share them. Don’t leave them out for others to see (no sticky notes!). Oh, and they should be sexy. Wait, sorry, I mean they should be mysterious. In other words, make your password a total mystery to others.
    :thumbsup:
  • ja, da hatte ich auch schon dran überlegt.
    habe ich aber noch nicht weiter verfolgt weil es für mich persönlich so erst mal keinen mehrwert hat und ich auch nicht zusätzliche abhängigkeiten in meine mission bringen will. hat natürlich den vorteil das mit den modulen das ganze etwas einsteigerfreundlicher gestalten kann, aber sobald man ja mit den modulen (die ja eigentlich nur der server bräuchte) arbeitet muss ja doch jeder der die mission spielen will das addon installiert haben.
  • T-800a schrieb:

    .... aber sobald man ja mit den modulen (die ja eigentlich nur der server bräuchte) arbeitet muss ja doch jeder der die mission spielen will das addon installiert haben.

    Genau das ist der Grund warum ich auch der Meinung bin es muss nicht immer ein Modul/ Addon sein.
    Passwords are like underwear. You should change them often (okay, maybe not every day). Don’t share them. Don’t leave them out for others to see (no sticky notes!). Oh, and they should be sexy. Wait, sorry, I mean they should be mysterious. In other words, make your password a total mystery to others.
    :thumbsup:
  • Doc schrieb:

    Genau das ist der Grund warum ich auch der Meinung bin es muss nicht immer ein Modul/ Addon sein.

    die einführung des modul systems war um missionen mit noch weniger script kenntnissen "zusammen klicken" zu können (was am ende auch eine größere zielgruppe bedeutet)
    darum ist das ganze so komplex und deshalb ist es sinnvoll sowas wie hier auch auf module "abzuwelzen" (die wirken im endeffekt ja nur als schnittstelle und können daher "seperat" entwickelt werden)
    [hr][/hr]
    wenn du hilfe beim erstellen der module brauchen solltest, scheu dich nicht mich zu fragen
  • X39 schrieb:

    wenn du hilfe beim erstellen der module brauchen solltest, scheu dich nicht mich zu fragen

    danke aber ich schon so meine erfahrungen mit modulen.
    Spoiler anzeigen

    PHP-Quellcode

    1. class ASC_mapMarker : Module_F
    2. {
    3. scope = 2;
    4. displayName = "Friendly Map Marker";
    5. icon = "\ASC\ASC_mapMarker\i\icon_module.paa";
    6. category = "ASC_modules";
    7. function = "ASC_MM_fnc_moduleINIT";
    8. functionPriority = 1;
    9. isGlobal = 1;
    10. isTriggerActivated = 0;
    11. class Arguments : ArgumentsBaseUnits
    12. {
    13. class DEBUG
    14. {
    15. displayName = "DEBUG";
    16. description = "Allow DEBUG of Map Markers.";
    17. typeName = "BOOL";
    18. };
    19. };
    20. class ModuleDescription
    21. {
    22. description = "If this module is placed, map marker are enabled in the mission";
    23. sync[] = {};
    24. };
    25. };
    Alles anzeigen


    X39 schrieb:

    die einführung des modul systems war um missionen mit noch weniger script kenntnissen "zusammen klicken" zu können (was am ende auch eine größere zielgruppe bedeutet) darum ist das ganze so komplex und deshalb ist es sinnvoll sowas wie hier auch auf module "abzuwelzen" (die wirken im endeffekt ja nur als schnittstelle und können daher "seperat" entwickelt werden)

    wo ich dir auch voll und ganz zustimme! bleibt nur die frage der zielgruppe und ob der autor auch zeit und lust hat :D
  • Nach einigen Tests finde ich dein KI Script sehr ansprechend und wird demnächst bei uns verwendung finden!
    Was mich jedoch etwas enttäuscht hat, bzw. nicht meinen erwartungen entsprach, war die Definition von "GARRISON".

    Ich hätte erwartet das die KI in die Häuser geht und dort BLEIBT.
    Stattdessen verstreut sich das Team sehr weitläufig, nur eine KI pro Haus, und nacheinander wechselt die KI ihre Stellung.
    Im Kampf verlässt die KI auch die Häuser was ich sehr Schade finde.

    Die Hoffnung die ich hatte war das die KI ihre Stellungen sucht und behält, insbesondere wenn draußen gepanzerter Feind wartet.
    Gerade der OHK ist doch was wirklich tolles und jedes Haus mit Schwung und Krawall zu nehmen was wirklich Spaß macht! Aber das immer nur eine KI pro Haus besetzt ist wirklich extrem mager.

    Was mich freuen würde wäre ein "GARRISON_DEFENSE" bei dem die KI im Haus bleibt, egal was draußen los ist, mehrere KI pro Haus die ihre Sicherungsbereiche einhalten und das Haus zu nehmen zu einer Herausforderung machen.
  • Voller Eifer habe ich das Occupy getestet.
    Zwar mit einigen Mods geladen und auf der Karte Reshmaan, jedoch ohne KI Mods.

    Das erste was mir aufgefallen ist das gespawnte Gebäude nicht beachtet werden.
    Gerade auf Reshmaan habe ich sehr viele Gebäude bei Temirah gesetzt um die Ortschaft für den OHK etwas
    Dichter und verwinkelter zu machen. Die Feind geht aber nur in existierende Gebäude.

    In der Reihenfolge werden erst die Häuser gespawnt und danach erst T8_missionEXEC

    Was ich noch beobachten konnte ist das zwar die Positionen in Häusern genutzt wird aber mit wenig Raffinesse.
    z.b. Habe ich einen Panzer in die nähe von einigen Gebäuden gestellt und gewartet was passiert.

    Der AT-Schütze lief zwischen einigen Häusern umher aber prüfte nicht jede Position im Haus ob er von dort aus Schiessen kann.
    Und an einigen Positionen hätte er das durchaus tun können! Zwischen zwei Häusern dann konnte er ebenfalls schiessen, tat es aber nicht.

    Ich werde Dienstag noch ein bisschen mehr Testen.
  • Astrell schrieb:

    Was ich noch beobachten konnte ist das zwar die Positionen in Häusern genutzt wird aber mit wenig Raffinesse.
    z.b. Habe ich einen Panzer in die nähe von einigen Gebäuden gestellt und gewartet was passiert.

    Der AT-Schütze lief zwischen einigen Häusern umher aber prüfte nicht jede Position im Haus ob er von dort aus Schiessen kann.
    Und an einigen Positionen hätte er das durchaus tun können! Zwischen zwei Häusern dann konnte er ebenfalls schiessen, tat es aber nicht.
    Dann muss ich dich leider enttäuschen, micromanagement der einzelnen Einheiten betreibt das script nicht, und den Hut will ich mir auch nicht aufsetzten. (Das sollen schlauere Leute machen -> bCombat, ASRai, ...)
  • Bei dem Versuch habe ich mir auch schon die Zähne ausgebissen.

    Das Problem dahinter ist eben, dass man nicht vorher sagen kann: "Building Pos xy ist an einem Fenster o.ä." und dann dafür zu sorgen das der Schütze auch wirklich da raus guckt. Und im Idealfall nicht in den Gemüsegarten guckt sondern wirklich vor auf die Straße... alles machbar aber extrem aufwändig. Grundlage wäre so eine Art Datenbank. In der müßte gespeichert sein welche Building Pos von welchem Gebäude eine markante Position darstellt. (also Gebäude xyz, Pos 3,6 u. 7 sind Fensterplätze, Pos. 2 bewacht dein Haupteingang)

    Wenn sich jemand den Spass machen würde und da die Zeit rein steckt wäre das schon ein großer Schritt nach vorne.



    Grüße

    p.s.: Habe das Script noch nicht probiert weil ich mein eigenen AI Spawner verwende der so ähnlich funktioniert. Werde das hier demnächst aber auch einmal testen da es seit dem "Occupy" eine Funktion mehr hat als meines.

    ___<<<my A2 Missions>>>___<<<A3 Wounding System>>>___
  • Ich stand vor einem ähnlichem Problem, und bin es fast so wie du geschrieben hast angegangen. Ich habe mir dazu den Gebäudetyp ausgelesen und ihn meiner Gruppe eine KI gehabt. Dann die einzelnen BuildingPos aufgeschrieben.
    Ist wirklich sehr viel Arbeit und teilweise ist der Aufbau nicht nachvollziehbar.
    Gehirn ist keine Seife. Es wird nicht weniger, wenn man es benutzt!

    Beste Band der Welt
  • Ich hatte mir ein Script geschrieben, welches eine Bibliothek der Gebäude erstellt (Positionen, Richtung, Türen).

    Die Fensterpositionen bekommt man über die Position der Effekte heraus, welche auftreten, wenn ein Fenster kaputt geht. Dannach ist es nur noch ein kleines Hindernis das jeweils nächste Fenster an einer Position auszulesen und darüber die Richtung zu ermitteln. Filtern kann man das noch über den jeweiligen Abstand der Fenster und die Etage.

    Um dass dann noch performat zu machen, sollte man die Positionen in einer cfg ablegen und dann daraus auslesen.

    Was ich noch nicht gemacht hatte sind die Positionen für die beschädigten Gebäude aus den unbeschädigten abzuleiten. Das sollte aber auch machbar sein.


    Und Falls jemand mal eine Idee hat, wie ich bei den Arma 2 Gebäuden die Richtung der Türen rausbekommen, der gebe mir bitte einen Tipp. :)
  • Ich habe mal wieder Lust Missionen zu bauen, krame in meinen Unterlagen und Scripten, Entdecke sofort T8_Units und freue mich auf Simples Missionenbauen ...

    ... bis ich folgenden Bug entdeckte:
    drive.google.com/open?id=0B6B-jvx_mW4FNDRRU2t4MnZta3c

    Missionsdateien sind hier:
    drive.google.com/open?id=0B6B-jvx_mW4FTk9jREEtTm5hVkU

    Nur Einheiten die mit T8 Gespawnt sind heben und senken ihre Waffe ständig!
    Zeus und vorher gesetzte Einheiten sind völlig normal.

    Komplett Vanilla, keine KI Mods.
    Später dann zusammen mit ACE, ACEX, TFAR und CBA_A3. Mehr ist nicht geplant.

    Mission ist nur halb fertig, werde erst weiterbauen wenn du mir sagen kannst ob du den Bug beheben kannst oder willst bzw. wenn er eben behoben ist.

    Wäre nett wenn du dich darum kümmern könntest, gerade mit dem T8_Eden Mod immer einer meiner Lieblinge gewesen!