Dyn. AI Spawn Skript - Fehlersuche

  • Multiplayer

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

  • Dyn. AI Spawn Skript - Fehlersuche

    Moin,
    vielleicht kann das Schwarmwissen mir ein wenig helfen.

    Vorhaben:
    Es soll eine Mission angefertigt werden wo die Spieler eine ausgewählte Stellung so lange wie möglich halten sollen.
    Dazu sollen KI`s rund um die Position gespawnt werden. Die SpawnPosition ist nicht definiert und soll halt via Zufall ausgwählt werden. Feindtypen wie Fahrzeuge, Infaterie,etc sollen definiert werden aber durch das Zufallsprinzip gespawnt werden. Es soll Wellen geben wo unterscheidlich viele Gruppen gespawnt werden auch wieder via Zufall. Die Gegnergruppen sollen den Spieler angreifen. Das Skript soll sich wiederholen.
    Es soll durch ein Skript gesteuert werden und möglichst nicht durch eine weitere Mod.

    Fortschritt:
    Die Mission steht. Nur habe ich halt Das Problem mit den KI Spawnen.
    Das unten aufgeführte Skript habe ich durch Zufall gefunden und passt momentan am besten zu meinen "Vorraussetzungen".
    Die KI´s spawnen in den angegeben Bereichen, jedoch spawnen hier nur maximal 3-5 Gruppen statt den eingegebenen 8.

    Ich weiß leider nicht wo der Fehler liegt. Mein Wissen bzgl Skripten ist begrenzt. Kleine Dinge kann ich verändern kann ich nachdem ich das skript verstanden habe aber selber eins zu schreiben davon bin ich noch weit entfernt.

    Es wäre sehr nett wenn sich einige Freiwillige finden die mal über das Skript schauen könnten und mögliche Fehler aufzeigen könnten.


    Danke!


    pastebin.com/jEiw2T71
  • Ich taste mich mal komplett ins blaue rein, aber in Zeile 104:

    Quellcode

    1. _number_groups = floor(random (_max_groups - _min_groups)) + _min_groups;


    Mit deinen Zahlen eingesetzt bedeutet das:

    Quellcode

    1. _number_groups = floor(random (6)) + 2;

    Hier wird gerundet..... Obwohl das meiner Meinung nach bei ganzen Zahlen keinen Sinn macht. Aber wie wir hier sehen, kommen bei random (6) folgende Zahlen raus: 0,1,2,3,4,5, alle mit einer Wahrscheinlichkeit von 1/6. Öfters mal testen, theoretisch müssten da immer andere Ergebnisse raus kommen.....

    Wie gesagt nur ein Anfang....
  • random 6 gibt eine rationale Zahl zwischen einschließlich 0 und ausschließlich 6 wieder. Das Abrunden mit floor ist schon richtig, denn eine Anzahl an zählbaren Dingen wie Gruppen ist immer eine natürliche Zahl.
    Bei floor random 6 sind die möglichen Ergebnisse also {0,1,2,3,4,5}.

    Trotzdem ist die Zeile 104:
    _number_groups = floor(random (_max_groups - _min_groups)) + _min_groups;
    verbuggt, denn bei max_groups = 2 und max_groups = 8 würde man annehmen, dass die möglichen Ergebnisse 2-8 sind.
    Tatsächlich gibt diese Zeile aber nur 2 + {0,1,2,3,4,5} als Ergebniss, also 2-7. Die größt mögliche Zahl ist also 7 und nicht 8, obwohl 8 als max_groups angegeben wurde.

    Richtigerweise müsste die Zeile
    private _number_groups = floor random (1 + _max_groups - _min_groups) + _min_groups;
    lauten. Das ist die einzige Zeile, die ich mir wegen Isaacs Post angeschaut habe und da schon sie verbuggt ist, muss man davon ausgehen, dass das ganze Skript viele solche Fehler enthält.

    Wenn Scarat nun in der Praxis 3-5 Gruppen zählt, dann liegt das im Bereich der möglichen 2-7. Also läuft alles richtig. Wenn es nun immer 8 Gruppen sein sollen, dann muss min_groups und max_groups beides auf 8 gesetzt werden.