HX3 Foren

HX3 Foren (https://hx3.de/)
-   Editing & Scripting (https://hx3.de/editing-scripting-167/)
-   -   Stärke der KI-Einheiten (https://hx3.de/editing-scripting-167/staerke-ki-einheiten-20470/)

Vienna 09.03.2011 12:29

Stärke der KI-Einheiten
 
Liste der Anhänge anzeigen (Anzahl: 1)
Stellt man zwei feindliche Infanterie KI-Gruppen gegenüber auf, dann wird meist die Gruppe siegen, in welcher sich der Spieler befindet.

Das weist darauf in, das ArmA sichtlich einer Gruppe, in welcher sich der Spieler befindet, bessere Eigenschaften zuweist.

Für diese Einstellungen gibt es mehrere Parameter. Hier ein Skript, mit welchem alle Eigenschaften einzelner KIs auf das Maximum gestellt wird.

Code:

//Setzt bei einer Gruppe alle Skills auf Maximum [Vienna  09.03.2011]
//
//Aufruf: Gruppe execVM "GruppenSkill.sqf";
//  Beispiel für Auslöser: temp1 = Gruppe1 xecVM "GruppenSkill.sqf"
//
// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
// Beim gleichzeitigen Aufrufen des Skripts ist zu beachten, dass die vorgestellte
// Variable (hier temp1) jeweils einen anderen Namen hat!! Sonnst kommt es zu Fehlern!!!
// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

private ["_gruppe","_skillsMax"];

_gruppe = _this;

//Funktion alle Skills auf Maximum. Aufruf: Unit call _skillsMax;
_skillsMax =
  {
    {_this setSkill [_x, 1]}
    forEach
    [
      "aimingAccuracy",
      "aimingShake",
      "aimingSpeed",
      "endurance",
      "spotDistance",
      "spotTime",
      "courage",
      "reloadSpeed",
      "commanding",
      "general"
    ]
  };

{_x call  _skillsMax} forEach units _gruppe

Hiermit wird allen Einheiten einer Gruppe die maximale Stärke zugewiesen. Ich habe nicht getestet, ob es reichen würde die Funktion nur für den Leader einer Gruppe aufzurufen.

Im Anhang eine Testmission, in welcher vorerst die vom System vorgegebene Stärke in den Gruppen vorhanden ist. Damit kann getestet werden, wie im überwiegenden Anteil die Gruppe des Spielers gewinnt, egal auf welcher Seite er spielt.

Wenn danach der Auslöser, der das Skript aktiviert, auf true gestellt wird. Dann ist zu sehen, dass die Gruppen eine ausgeglichene Gewinnwahrscheinlichkeit haben.

Vienna 09.03.2011 14:29

Ich habe das Skript so abgeändert, dass man als Parameter auch den Wert (0-1) einstellen kann. So ist es möglich den Gruppen unterschiedliche Werte zu geben.

Am besten sieht man wie enorm die Auswirkungen sind, wenn man einer Gruppe den Wert 1 und der anderen den Wert 0 gibt.

Code:

//Setzt bei einer Gruppe alle Skills auf einen Wert (0-1)              [Vienna  09.03.2011]
//
//Aufruf: [Gruppe,Wert von 0-1] execVM "GruppenSkill.sqf";
//  Beispiel für Auslöser: temp1 = [Gruppe1,1] xecVM "GruppenSkill.sqf"
//
// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
// Beim gleichzeitigen Aufrufen des Skripts ist zu beachten, dass die vorgestellte
// Variable (hier temp1) jeweils einen anderen Namen hat!! Sonnst kommt es zu Fehlern!!!
// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

//"aimingAccuracy" = Zielgenauigkeit
//"aimingShake"    = Verwackeln beim Zielen
//"aimingSpeed"    = Zielerfassung
//"endurance"      = Ausdauer
//"spotDistance"  = Feindwahrnehmung
//"spotTime"      = Wahrnehmungszeit
//"courage"        = Mut
//"reloadSpeed"    = Nachladegeschwindigkeit
//"commanding"    = Kommandierfähigkeit
//"general"        = allgemeine Spielstärke

private ["_gruppe","_wert","_skillsMax"];

_gruppe = _this select 0;
_wert  = _this select 1;

//Funktion alle Skills auf Maximum. Aufruf: Unit call _skillsMax;
_skillsMax =
  {
    {_this setSkill [_x, _wert]}
    forEach
    [
      "aimingAccuracy",
      "aimingShake",
      "aimingSpeed",
      "endurance",
      "spotDistance",
      "spotTime",
      "courage",
      "reloadSpeed",
      "commanding",
      "general"
    ]
  };

{_x call  _skillsMax} forEach units _gruppe

Bei entsprechender Abänderung, oder überhaupt Einzelaufruf des Befehls, ist individuelles Einstellen jeder Eigenschaft möglich.

Cyborg11 09.03.2011 14:36

Hab mal detailliert die Skills jeder einzelnen Einheit ausgeben lassen.
Folgendes kam dabei für East raus:
Code:

===================
Unit: O 1-1-A:1
aimingAccuracy: 0.6
aimingSpeed: 0.6
aimingSpeed: any
endurance: 0.6
spotDistance: 0.6
spotTime: 0.6
courage: 0.6
reloadSpeed: 0.6
commanding: 0
general: 0.6
===================

===================
Unit: O 1-1-A:2
aimingAccuracy: 0.466667
aimingSpeed: 0.466667
aimingSpeed: any
endurance: 0.466667
spotDistance: 0.466667
spotTime: 0.466667
courage: 0.466667
reloadSpeed: 0.466667
commanding: 0
general: 0.466667
===================

===================
Unit: O 1-1-A:3
aimingAccuracy: 0.466667
aimingSpeed: 0.466667
aimingSpeed: any
endurance: 0.466667
spotDistance: 0.466667
spotTime: 0.466667
courage: 0.466667
reloadSpeed: 0.466667
commanding: 0
general: 0.466667
===================

===================
Unit: O 1-1-A:4
aimingAccuracy: 0.333333
aimingSpeed: 0.333333
aimingSpeed: any
endurance: 0.333333
spotDistance: 0.333333
spotTime: 0.333333
courage: 0.333333
reloadSpeed: 0.333333
commanding: 0
general: 0.333333
===================

===================
Unit: O 1-1-A:5
aimingAccuracy: 0.333333
aimingSpeed: 0.333333
aimingSpeed: any
endurance: 0.333333
spotDistance: 0.333333
spotTime: 0.333333
courage: 0.333333
reloadSpeed: 0.333333
commanding: 0
general: 0.333333
===================

===================
Unit: O 1-1-A:6
aimingAccuracy: 0.333333
aimingSpeed: 0.333333
aimingSpeed: any
endurance: 0.333333
spotDistance: 0.333333
spotTime: 0.333333
courage: 0.333333
reloadSpeed: 0.333333
commanding: 0
general: 0.333333
===================

===================
Unit: O 1-1-A:7
aimingAccuracy: 0.333333
aimingSpeed: 0.333333
aimingSpeed: any
endurance: 0.333333
spotDistance: 0.333333
spotTime: 0.333333
courage: 0.333333
reloadSpeed: 0.333333
commanding: 0
general: 0.333333
===================

===================
Unit: O 1-1-A:8
aimingAccuracy: 0.333333
aimingSpeed: 0.333333
aimingSpeed: any
endurance: 0.333333
spotDistance: 0.333333
spotTime: 0.333333
courage: 0.333333
reloadSpeed: 0.333333
commanding: 0
general: 0.333333
===================

===================
Unit: O 1-1-A:9
aimingAccuracy: 0.2
aimingSpeed: 0.2
aimingSpeed: any
endurance: 0.2
spotDistance: 0.2
spotTime: 0.2
courage: 0.2
reloadSpeed: 0.2
commanding: 0
general: 0.2
===================

===================
Unit: O 1-1-A:10
aimingAccuracy: 0.2
aimingSpeed: 0.2
aimingSpeed: any
endurance: 0.2
spotDistance: 0.2
spotTime: 0.2
courage: 0.2
reloadSpeed: 0.2
commanding: 0
general: 0.2
===================

===================
Unit: O 1-1-A:11
aimingAccuracy: 0.2
aimingSpeed: 0.2
aimingSpeed: any
endurance: 0.2
spotDistance: 0.2
spotTime: 0.2
courage: 0.2
reloadSpeed: 0.2
commanding: 0
general: 0.2
===================

===================
Unit: O 1-1-A:12
aimingAccuracy: 0.2
aimingSpeed: 0.2
aimingSpeed: any
endurance: 0.2
spotDistance: 0.2
spotTime: 0.2
courage: 0.2
reloadSpeed: 0.2
commanding: 0
general: 0.2
===================

Und für West:
Code:

===================
Unit: B 1-1-A:1
aimingAccuracy: 0.6
aimingSpeed: 0.6
aimingSpeed: any
endurance: 0.6
spotDistance: 0.6
spotTime: 0.6
courage: 0.6
reloadSpeed: 0.6
commanding: 0
general: 0.6
===================

===================
Unit: B 1-1-A:2
aimingAccuracy: 0.466667
aimingSpeed: 0.466667
aimingSpeed: any
endurance: 0.466667
spotDistance: 0.466667
spotTime: 0.466667
courage: 0.466667
reloadSpeed: 0.466667
commanding: 0
general: 0.466667
===================

===================
Unit: B 1-1-A:3
aimingAccuracy: 0.466667
aimingSpeed: 0.466667
aimingSpeed: any
endurance: 0.466667
spotDistance: 0.466667
spotTime: 0.466667
courage: 0.466667
reloadSpeed: 0.466667
commanding: 0
general: 0.466667
===================

===================
Unit: B 1-1-A:4
aimingAccuracy: 0.466667
aimingSpeed: 0.466667
aimingSpeed: any
endurance: 0.466667
spotDistance: 0.466667
spotTime: 0.466667
courage: 0.466667
reloadSpeed: 0.466667
commanding: 0
general: 0.466667
===================

===================
Unit: B 1-1-A:5
aimingAccuracy: 0.333333
aimingSpeed: 0.333333
aimingSpeed: any
endurance: 0.333333
spotDistance: 0.333333
spotTime: 0.333333
courage: 0.333333
reloadSpeed: 0.333333
commanding: 0
general: 0.333333
===================

===================
Unit: B 1-1-A:6
aimingAccuracy: 0.333333
aimingSpeed: 0.333333
aimingSpeed: any
endurance: 0.333333
spotDistance: 0.333333
spotTime: 0.333333
courage: 0.333333
reloadSpeed: 0.333333
commanding: 0
general: 0.333333
===================

===================
Unit: B 1-1-A:7
aimingAccuracy: 0.333333
aimingSpeed: 0.333333
aimingSpeed: any
endurance: 0.333333
spotDistance: 0.333333
spotTime: 0.333333
courage: 0.333333
reloadSpeed: 0.333333
commanding: 0
general: 0.333333
===================

===================
Unit: B 1-1-A:8
aimingAccuracy: 0.333333
aimingSpeed: 0.333333
aimingSpeed: any
endurance: 0.333333
spotDistance: 0.333333
spotTime: 0.333333
courage: 0.333333
reloadSpeed: 0.333333
commanding: 0
general: 0.333333
===================

===================
Unit: B 1-1-A:9
aimingAccuracy: 0.333333
aimingSpeed: 0.333333
aimingSpeed: any
endurance: 0.333333
spotDistance: 0.333333
spotTime: 0.333333
courage: 0.333333
reloadSpeed: 0.333333
commanding: 0
general: 0.333333
===================

===================
Unit: B 1-1-A:10
aimingAccuracy: 0.333333
aimingSpeed: 0.333333
aimingSpeed: any
endurance: 0.333333
spotDistance: 0.333333
spotTime: 0.333333
courage: 0.333333
reloadSpeed: 0.333333
commanding: 0
general: 0.333333
===================

===================
Unit: B 1-1-A:11
aimingAccuracy: 0.2
aimingSpeed: 0.2
aimingSpeed: any
endurance: 0.2
spotDistance: 0.2
spotTime: 0.2
courage: 0.2
reloadSpeed: 0.2
commanding: 0
general: 0.2
===================

===================
Unit: B 1-1-A:12
aimingAccuracy: 0.2
aimingSpeed: 0.2
aimingSpeed: any
endurance: 0.2
spotDistance: 0.2
spotTime: 0.2
courage: 0.2
reloadSpeed: 0.2
commanding: 0
general: 0.2
===================

Hier das Skript:
Code:

private ["_aimingAcc", "_aimingShake", "_aimingSpeed", "_endurance", "_spotDistance",
                "_spotTime", "_courage", "_reloadSpeed", "_commanding", "_general"
                ];

_group = _this select 0;

{
        _aimingAcc = _x skill "aimingAccuracy";
        _aimingShake = _x skill "aimingShake";
        _aimingSpeed = _x skill "aimingSpeed";
        _endurance = _x skill "endurance";
        _spotDistance = _x skill "spotDistance";
        _spotTime = _x skill "spotTime";
        _courage = _x skill "courage";
        _reloadSpeed = _x skill "reloadSpeed";
        _commanding = _x skill "_commanding";
        _general = _x skill "general";

        diag_log text format [""];
        diag_log text format ["==================="];
        diag_log text format ["Unit: %1", _x];
        diag_log text format ["aimingAccuracy: %1", _aimingAcc];
        diag_log text format ["aimingSpeed: %1", _aimingSpeed];
        diag_log text format ["aimingSpeed: %1", _aiminingSpeed];
        diag_log text format ["endurance: %1", _endurance];
        diag_log text format ["spotDistance: %1", _spotDistance];
        diag_log text format ["spotTime: %1", _spotTime];
        diag_log text format ["courage: %1", _courage];
        diag_log text format ["reloadSpeed: %1", _reloadSpeed];
        diag_log text format ["commanding: %1", _commanding];
        diag_log text format ["general: %1", _general];
        diag_log text format ["==================="];
} forEach units _group;

Man sieht hier, dass beide Seiten die gleichen Skills haben.
Und anscheinend wirken die Schwierigkeitsgradskills nicht, sondern die Editorskills.
Ansonsten hätten alle Einheiten einen Skill von 1.
Die Frage ist trotzdem, warum die eigene KI trotz gleichem Skill jedes Mal gewinnt.

Wenn man den Skill auf 1.0 durch dein Skript hochschraubt, dann sind beiden Seiten gleich stark.
Es sieht aber meistens so aus, dass der EastLeader als erstes stirbt, dadurch verliert das East Squad natürlich den besten Mann und die anderen Soldaten haben einen commanding Skill von 0. Kann also schon damit zusammenhängen.
Durch dein Skript setzt du ja auch den commanding Skill von jeder Einheit auf 1, sodass eigentlich fast jeder Soldat ein perfekter Leader ist :D
Vordefinierte Gruppen im Editor ist zu setzen ist doof, da jede Einheit einen unterschiedlichen Skill hat :]
Man müsste das mal mit einzeln gesetzten Einheiten mit jeweils einem Skillwert von 0.5 testen.

Hab den Skill mal manuell auf 1.0 bei jeder Einheit im Editor gesetzt.
Selber Effekt wie mit deinem Skript, denn deins macht ja auch nichts anderes.
Ich sehe das Problem darin, dass vordefinierte Gruppen unterschiedliche Skills haben. Und wenn der Feind es schafft zuerst die "gut geskillten" Soldaten zu erschießen ist es logisch, dass der Feind gewinnt.

Vienna 09.03.2011 15:23

Es kommt auch auf das Gelände an auf denen sich die Einheiten jeweils bewegen. Auch wie schnell die Einheiten eine vorteilhafte Stellung einnehmen. Man weiß ja, wie irr sich die KI z.B. beim Lenken eines Fahrzeuges aufführt. Wenn sich die Soldaten gegenseitig im Weg stehen, oder vielleicht gar einen Busch oder Baum in der unmittelbaren Umgebung haben, dann bringt das einige Verwirrung, die bei einer Gruppe 50% Verluste verursachen kann, bevor sie aktiv am Kampfgeschehen teilnimmt.

Auch ist sicher ein weiterer Zufallsfaktor eingebaut, sonst würde bei Einstellung 1 alles 100% sein.

In den Klassen sind anscheinend noch andere Werte vorhanden, die man mit setSkill gar nicht einstellen kann.
CfgAISkill - Bohemia Interactive Community

Lester 09.03.2011 15:41

Hast du mal manuell (via Texteditor) die Ost- bzw. Westeinheiten ausgetauscht und geguckt ob die Spielerseite dann immer noch die Gewinnerseite ist ?
Kleinste Geländeunterschiede können schon für enorme Vor- bzw. Nachteile sorgen, dies gilt insbesondere weil das Gleichgewicht sehr schnell kippen kann.

Bei 0 Abschüssen werden z.B. Einheiten mit höheren Thread und Cost Werten als Ziele bevorzugt.
Steht ein Soldat mit durchschlagenderer Waffe etwas günstiger für die eine Partei zum Abschuß, ist oftmals der Lavineneffekt bereits losgetreten.
Aufgrund der angesammelten "Abschusskosten" wird dann zb. der Bursche der den gekillt hat wiederum recht schnell bevorzugt aus "Rache" unter Feuer genommen.
Im Gegenzug kann dessen Seite es wiederum schaffen jemand mit stärkerer Waffe abzuschießen der noch deutlicher auf sich aufmerksam gemacht hat. :naughty:


Tauscht man die Einheiten exakt aus sollten wiederum zwar statistisch umgekehrte Ergebnisse dabei herauskommen, aber da ist dann noch Väterchen Waffenqualität am Werk.
Wenn Da nur ein Thread/Cost/etc. Wert besser ist kann es wiederum ständig ungleich enden.

Genaugenommen müßte man identische Truppen mit identischer Ausrüstung wählen und dann die Seite in der Missionsdatei verbiegen um wirklich sicher zu sein. :angel:

$CHLUCKi 09.03.2011 15:46

man muss hierbei auch immer bedenken, dass die Spieler KI auf niederen Schwierigkeitsgraden immer besser ist, als die Gegner KI.
Code:

class Difficulties
{
    class recruit
    {
        class Flags
        {
...
        };
        skillFriendly=1;
        skillEnemy=0.55000001;
        precisionFriendly=1;
        precisionEnemy=0.55000001;
    };
    class regular
    {
        class Flags
        {
...
        };
        skillFriendly=1;
        skillEnemy=0.69999999;
        precisionFriendly=1;
        precisionEnemy=0.69999999;
    };
    class veteran
    {
        class Flags
        {
...
        };
        skillFriendly=1;
        skillEnemy=0.89999998;
        precisionFriendly=1;
        precisionEnemy=0.89999998;
    };
    class mercenary
    {
        class Flags
        {
...
        };
        skillFriendly=1;
        skillEnemy=1;
        precisionFriendly=1;
        precisionEnemy=1;
    };
};

mhh...also nich nur auf niederen, sondern eher immer

INNOCENT&CLUELESS 09.03.2011 15:49

QUOTE]Ich sehe das Problem darin, dass vordefinierte Gruppen unterschiedliche Skills haben. Und wenn der Feind es schafft zuerst die "gut geskillten" Soldaten zu erschießen ist es logisch, dass der Feind gewinnt.[/quote]

Ist doch ok, wie im wahren Leben! Leg den Offizier um und danach knallst du die kopflosen Hühner ab. CommandSkill = 0 ist natürlich sinnlos.

Ist 1-1-A:1 jeweils der Commander oder die erste Einheit unter dem Commander? Weil der auch commanding=0 hat.

Egal wie, normale Einheiten haben immer begrenzte Commandofähigkeiten und dies könnte man ja auch so abbilden.

Cyborg11 09.03.2011 17:03

O/B 1-1 A:1 sind jeweils die Squadleader. Die Leader sind Truppanführer.
Ich glaub, dass der commanding Skill entweder nur bei Offizieren auf 1 oder niemals bei den Standardeinstelllungen auf 1 ist D:
Aber trotzdem dürfte das bei diesem KI Gefecht ja eigentlich egal sein, da beide Leader auf beiden Seiten nicht kommandieren können. :D
Ist der Skill beider Seiten auf 1 sind es spannende Gefechte, die sehr selten gleich ausgehen. Lässt man den Skill aber standardmäßig und lässt die KI gegeneinander kämpfen, dann gewinnt komischerweise immer das Squad, in dem der Spieler ist. Das bezieht sich jetzt aber nur auf die BLUFOR Seite, wenn der Spieler im West Squad ist.
Bin gerade mal dem East Squad beigetreten und jedes Mal wurde mein Squad geschlagen (ohne Skilländerung).

@$CHLUCKi: Man kann den Skill der Einheiten aber auch selber definieren und ist nicht an eine Standardschwierigkeit gebunden.

Vienna 09.03.2011 17:25

Ich habe immer, bei gleichbleibender Aufstellung, die Seite gewechselt und einen einfachen Schützen als Spieler gewählt. Dabei war eben zu bemerken, dass die Seite mit dem Spieler, bei annähernd gleichen Chancen, öfter siegte. Da sowieso immer ein geringfügig anderer Ablauf erfolgt, wird es kaum einen Unterschied machen,wenn man die Seiten im "Missionstext" umdreht. Ich habe auf 10 Meter Plazierungsspielraum eingestellt, um etwaige gleichbleibende Zufälle auszuschließen.

Mit der Skill-Einstellung ist ein erheblicher Einfluss auf das Verhalten der KIs möglich. Aber wie man sieht gibt es noch viele andere unbeeinflussbare Parameter, die oft den Ausgang entscheiden, wenn die Skill-Einstellungen nicht extrem unterschiedlich sind. Diese kleinen unbeeinflussbaren Parameter wirken sich aber anscheinend weniger aus, wenn Skill auf 1 steht.

Vienna 10.03.2011 11:58

Wie sich herausstellte, setzt der Befehl <Unitname> setskill 1 alle oben angeführten Skills auf 1. Die einzelnen Skills anzuführen macht also nur Sinn, wenn man den einzelnen Skills unterschiedliche Werte zu weisen will.

Um die alle Skills aller Seiten auf 1 zu stellen reicht folgende Zeile:

call {{_x setskill 1} foreach allUnits};

Vienna 10.03.2011 13:30

Man kann im Fenster "Einheiten bearbeiten" mit dem Schieberegler die "Fähigkeiten" einer Einheit einstellen. Dabei ergeben sich für alle Skill-Fähigkeiten die gleichen Werte von 0,2 bis 1.

Es ist kein Unterschied gegenüber der Einstellung mit dem Befehl setSkill zu sehen!

Das Skript zum Anzeigen der Werte:

Skill.sqf
Code:

//Auslesen und Anzeigen der Skills einer Einheit mit hintC.
//
//Aufruf in Auslöser: temp = <Unit> execVM "Skill.sqf";

private ["_Ux","_tx"];

_Ux = _this;

_tx = format["Skill von %1\n\n",name _Ux];
_tx=_tx + "Zielgenauigkeit: "  + str(_Ux skill "aimingAccuracy") + "\n";
_tx=_tx + "Zittern: "          + str(_Ux skill "aimingShake")    + "\n";
_tx=_tx + "Zielerfassung: "    + str(_Ux skill "aimingSpeed")    + "\n";
_tx=_tx + "Ausdauer: "          + str(_Ux skill "endurance")      + "\n";
_tx=_tx + "Feindwahrnehmung: "  + str(_Ux skill "spotDistance")  + "\n";
_tx=_tx + "Wahrnehmungszeit: "  + str(_Ux skill "spotTime")      + "\n";
_tx=_tx + "Mut: "              + str(_Ux skill "courage")        + "\n";
_tx=_tx + "Nachladen: "        + str(_Ux skill "reloadSpeed")    + "\n";
_tx=_tx + "Kommandieren: "      + str(_Ux skill "commanding")    + "\n";
_tx=_tx + "allgemein: "        + str(_Ux skill "general");

hintC _tx

Wer sich in der arma.RPT die Werte einer Gruppe anzeigen lassen will, hier nochmals das Skript von Cyborg11, wo sich bei ihm einige Fehler eingeschlichen haben (z.B. bei commanding, dort gibt es auch bei allen KIs Werte von 0-1):

SkillAuslesen.sqf
Code:

//Liest von einer Grupp die Skill-Werte aus
//
//Aufruf: temp = <Gruppenname> execVM "SkillAuslesen.sqf"
//
// Die Daten sind in der Datei arma2.rpt abgespeichert
//Pfad: C:\Dokumente und Einstellungen\.....\Lokale Einstellungen\Anwendungsdaten\ArmA 2\

private
  ["_aimingAcc", "_aimingShake", "_aimingSpeed",
  "_endurance", "_spotDistance","_spotTime",
  "_courage", "_reloadSpeed", "_commanding", "_general"];

{
        _aimingAcc    = _x skill "aimingAccuracy";
        _aimingShake  = _x skill "aimingShake";
        _aimingSpeed  = _x skill "aimingSpeed";
        _endurance    = _x skill "endurance";
        _spotDistance = _x skill "spotDistance";
        _spotTime    = _x skill "spotTime";
        _courage      = _x skill "courage";
        _reloadSpeed  = _x skill "reloadSpeed";
        _commanding  = _x skill "commanding";
        _general      = _x skill "general";

        diag_log text format [""];
        diag_log text format ["==================="];
        diag_log text format ["Unit: %1", _x];
        diag_log text format ["aimingAccuracy: %1", _aimingAcc];
        diag_log text format ["aimingShake: %1",    _aimingShake];
        diag_log text format ["aimingSpeed: %1",    _aimingSpeed];
        diag_log text format ["endurance: %1",      _endurance];
        diag_log text format ["spotDistance: %1",  _spotDistance];
        diag_log text format ["spotTime: %1",      _spotTime];
        diag_log text format ["courage: %1",        _courage];
        diag_log text format ["reloadSpeed: %1",    _reloadSpeed];
        diag_log text format ["commanding: %1",    _commanding];
        diag_log text format ["general: %1",        _general];
        diag_log text format ["==================="];
} forEach units _this


Cyborg11 10.03.2011 13:30

Frage zwischendurch, wieso benutzt du dafür call und nicht spawn, damit es parallel mit anderen Sachen läuft? :]

Vienna 10.03.2011 13:40

Spawn verlangt in einem Auslöser eine Variable vorgestellt. Ich glaube bemerkt zu haben, wenn man z.B. in einem Auslöser für zwei hintereinander stehende Aufrufe die selbe Variable voranstellt (temp = ......; temp = .....), dass es bei solchen Routinen zu Fehlern kommt.

JSR 27.04.2011 14:12

Gibt es mittlerweile eine Lösung für die peinliche "KI gewinnt nur, wenn der Spieler auf IHRER Seite ist" Sache?

Mal so ganz nebenbei: was denken die sich dabei sowas einzustellen? Steht auf der Verpackung nicht Millitärsimulation? Denke das ist ein billiger Markttrick, weil die genau wissen das sie wenig Kunden haben... damit sich die Kunden wie Helden fühlen, weil sie immer gewinnen. Was auch immer - dafür verdienen sie wiedermal ein geschlossenes Studio. :sauer:

Mir fällt auf das die Gegner einfach immer ne andere Taktik haben. Habe grade Pakistanische Soldaten gegen US Soldaten kämpfen lassen. Wenn ich US Soldat spiele, bewegen sich die Pakistaner in unserer Richtung und schiessen, die US Soldaten bleiben einfach liegen und schiessen... wenn ich Pakistani bin ist es halt genau umgekehrt, die US Soldaten bewegen sich und die Pakistanis bleiben liegen und feuern.... Wurde NIE abgeschossen. Das Gefecht lief auf ca. 500 Metern distanz auf offener Wüste...

Wie kann man da noch Spaß haben wenn man sowieso weiß das man gewinnt. Ist doch total fail sowas.

Zudem gerät man in Arma selten unter Beschuss... KI EInheiten werden deutlich bevorzugt. Aber naja, was will man von Programmierern erwarten die im erbärmlichen Zustand leben und Sat 1 Actionfilme und CoD als Kontrast sehen. :rolleyes:

Buccs 27.04.2011 14:35

Ich dachte das Thema KI und damit ArmA2 wäre für dich erledigt. Jetzt kommst du wieder mit der alten Leier und streust darin ein paar unqualifizierte Behauptungen :rolleyes:

Du bist ein Troll. Das ist alles.

JSR 27.04.2011 14:37

Kann dir eig. egal sein obs nun für mich abgeschlossen ist oder nicht. Fakt ist: BIS stellt ihre KI so ein, das der Spieler die höheren Chancen hat zu gewinnen. Kurz gesagt: eine realistische Millitärsimulation! (IRONIE)

Und meine Frage ist: ob es irgendwie behoben werden kann, WEIL ich vernünftige Gefechte in Arma erleben möchte und auch mal unter Beschuss geraten möchte und solange Arma die einzige Alternative bleibt auf dem Markt habe ich leider keine anderen Ausweichmöglichkeiten.

"Du bist ein Troll" - Weil ich kein Fanboy bin und FAKTEN erwähne? Mehrere Leute haben bereits die Sache mit der KI bestätigt, das die KI gewinnt auf welcher SEITE der SPIELER spielt.

Aber naja, mit 40 SCHON so eine schöne Argumentation auf den Tisch legen.... super! :D

AyzOn 27.04.2011 19:57

Ich glaube du willst das unmögliche... Ich habe noch kein einziges Spiel gespielt in dem die KI durch einen höheren Schwierigkeitsgrad besser wurde, sie wurde einfach nur übertrieben treffsicher oder hielt mehr aus als vorher aber sie bekam nie ein besseres Verhalten, sie blieb wie immer einfach dumm. Das selbe ist auch bei ArmA der Fall, es ist halt KI da darf man sowieso nicht allzuviel verlangen... Hab zwar auch gemerkt das man häufig gewinnt, als USMC gegen Russland hab ich allerdings auch häufig verloren. Es ist spannend vllt. nicht so wie man es gerne hätte, aber wenn man gegen einen Gegner spielen will der sich wie in echt verhält, sollte man gegen Menschen spielen. Und das nicht unter Beschuss geraten ist bei mir jedenfalls noch nicht passiert.

Buliwyf 27.04.2011 20:00

Och... mit den richtigen Settings und Addons kann man da schon eine Menge mehr rausholen als Vanilla ArmA2 zu bieten hat.

Aber man kann natürlich lieber quengeln... :zahn:

JSR 27.04.2011 22:42

Naja wie gesagt, mit Mods zocke ich schon!
ACE ist nicht wegzudenken... ansonsten wird halt viel rumgetestet... GL4 hat ein paar nette Einstellungen aber der SKILL der KI ist etwas jämmerlich im Nahkampf.

Ich rege mich auch nur deswegen dadrüber auf, weil ich viel Potenzial sehe in dem Game... es wird aber eben nicht genutzt! "OFP" DR ist ein schlechtes Spiel... es gibt aber eine KI Modifizierung die man noch etwas verändern kann.... dann ist die KI im Nahkampf und auf Distanz um einiges besser als in Arma. Sowas in Arma und Arma wäre der hammer. Arma brauch in meinen Augen nur ne hardcore KI.


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:15 Uhr.

Angetrieben durch vBulletin, Entwicklung von Philipp Dörner & Tobias


SEO by vBSEO 3.2.0 ©2008, Crawlability, Inc.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119