DM Event Faires zuweisen der Teams

Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!

Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
  • Guten Abend Nachtaktive :)


    Ich bin dabei mein Eventsystem auszubauen und dazu habe ich einige Fragen.


    Ich möchte dass, wenn die Spieler bei einem DM Event Teilnehmen bei dem es 2 Teams gibt, Automatisch in ein Team gesetzt werden.
    Dabei sollten sie so gesetzt werden das die 2 Teams gleich Verteilt sind.
    Wie ich die Teams erstelle ist mir klar, jedoch nicht wie ich sie gleich aufteile.


    Dazu möchte ich wenn ein Team komplett getötet wird, dass das Event Automatisch Beendet wird, dazu dachte ich mir wäre es am besten 2 Variablen der Teams zu erstellen die bei jeder Teilnahme +1 und bei jedem Tod oder Disconnect -1 berechnet wird. Steht die eine Variable auf 0 so hat das andere Team Gewonnen. Ist das logisch und gibt es da eine bessere möglichkeit?



    Liebe Grüße
    David

  • Naja, die Zuweisung der Teams müsste recht simpel sein.
    Einfach Abfragen, welches Team mehr Member hat, und dann jeweils in das kleinere Team zuweisen.
    Was genau ist denn dein Problem dabei?


    Spontan würde ich es ja ca so machen:

  • @Tusk warum machst du es dann so umständlich, wenn es so simpel ist?
    Anstatt dem Funktionsaufruf und der Schleife darin kannst du auch einfach die Zählervariable nutzen. Außerdem braucht man das boolean Array nicht.


    ________________


    @DerBossDavid


    Unter den Includes:
    new TeamSize[2];
    new TeamID[MAX_PLAYERS] = {-1,...}; //Setzt alle Spieler auf Team -1 (kein Team)


    Wenn der Spieler das Match betritt:
    if(TeamID[playerid] != -1) return 1;
    TeamID[playerid] = TeamSize[1] < TeamSize[0] ? 1 : 0;
    TeamSize[TeamID[playerid]]++;
    Die zweite Zeile heißt:
    Wenn TeamSize von 1 kleiner als die von Team 0 ist, dann wird er in Team 1 gesetzt, ansonsten in Team 0.
    Alternativ kannst du die Zeile auch so schreiben:
    if(TeamSize[1] < TeamSize[0]) TeamID[playerid] = 1;
    else TeamID[playerid] = 0;
    Falls dir das lieber ist.



    Wenn der Spieler das Match verlässt:
    if(TeamID[playerid] == -1) return 1;
    TeamSize[TeamID[playerid]]--;
    TeamID[playerid] = -1;

    3HZXdYd.png

    2 Mal editiert, zuletzt von Jeffry () aus folgendem Grund: Autokorrektur / stand alles in einer Zeile.

  • @Tusk warum machst du es dann so umständlich, wenn es so simpel ist?
    Anstatt dem Funktionsaufruf und der Schleife darin kannst du auch einfach die Zählervariable nutzen. Außerdem braucht man das boolean Array nicht.


    Der boolsche Wert sollte auch eig nur für spätere Abfragen gut sein.
    Und mir war schon klar, dass der Code nicht optimal ist, war ja nur spontan geschrieben. Ich will einem ja nichts vorscripten, sondern nur zeigen, wie man es machen könnte.



    Unter den Includes:


    new TeamSize[2];
    new TeamID[MAX_PLAYERS] = {-1,...}; //Setzt alle Spieler auf Team -1 (kein Team)


    Danke dafür.
    Das wusste ich noch garnicht, dass an so eine Initialisierungsliste verwenden kann, sodass alle Werte zu -1 werden. Wieder was dazugelernt :P