SetDamage False bedeutet, dass der Player auch nicht die KI töten kann.
Das kann man aber trotzdem mit Event Handlern abfangen.
Hier, habe ich dir mit Kommentaren für jeden einzelnen Schritt gebastelt, bei Fragen hier einfach wieder was posten:
Code:
_aiUnits = []; /// Define a list (Array)
{
if (!isPlayer _x) then { /// If _x (counter, part of foreach loop) is not player
_aiUnits pushback _x; /// add _x to _aiUnits list. We need this array later.
};
} forEach allUnits; /// For each units which has been placed on the map
{
_x addEventHandler ["HandleDamage", /// Add HandleDamage Event Handler to all AI units which we have assigned in _aiUnits
{
_unit = _this select 0; /// _unit is the same as _this select 0 (_this select 0 = unit: Object - Object the event handler is assigned to. Source = https://community.bistudio.com/wiki/Arma_3:_Event_Handlers#HandleDamage)
_shooter = _this select 3, /// this select 3 is the source which caused the damage, so we call it _shooter
if (_shooter isEqualTo player) then { /// here we check if the shooter is equal to the actual player
/// I did it this way, so you can assign a command to what should happen when player hit an AI
}
else {
_unit setDamage 0; /// If AI hits another AI we set the damage to 0 which means the unit is fully "repaired"
}
}
];
} forEach _aiUnits; /// Here we have a forEach loop. Foreach _aiUnits do this.
Jetzt bist du in der Lage die KI zutöten, diese aber sich selbst nicht.
Möchtest du das alle Einheiten sich nicht killen können, einfach { _x allowDamage false;} foreach allUnits eingeben und fertig. So brauchst du es nicht in jeder einzelnen Zeile angeben, falls du Gruppen platziert hast.
PS:
Falls nötig die Beschreibung.
Das Script wird folgendermaßen deployed:
In deinem Missionsordner legst du eine SQF Datei an (neues Textdokument -> speichern unter -> alle Dateitypen auswählen -> script.sqf
Dann, irgendwo im Spiel (Init einer Einheit, Auslöser oder in der Console (ingame Esc drücken)), und
"_nul = [] execVM "script.sqf " eingeben / einfügen. Somit wird das Script, welches in deinem Missionsordner ist, ausgeführt!