Trotz Teambalance Teamjoin möglich

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
  • Hallo,


    ich habe Teambalance eingebaut. Leider funktioniert es nicht so wie ich es mir gedacht hatte, denn eben kam jemand on der in mein Team konnte, obwohl nur zwei online waren.
    Und das Script prüft doch wo weniger Spieler drin sind ...?


    public OnPlayerRequestClass(playerid, classid)
    {
    SetPlayerTeamFromClass(playerid, classid);
    PlayerPlaySound(playerid, 1183, 0.0, 0.0, 10.0);
    SetPlayerInterior(playerid, 0);
    SetPlayerPos(playerid, -2469.8145,1545.0579,36.7992);
    SetPlayerFacingAngle(playerid, 87.7678);
    SetPlayerCameraLookAt(playerid, -2469.8145,1545.0579,36.7992);
    SetPlayerCameraPos(playerid, -2469.8145 + (5 * floatsin(-87.7678, degrees)), 1545.0579 + (5 * floatcos(-87.7678, degrees)), 36.7992);
    new mafiab,swatb;
    for(new i=0; i<MAX_PLAYERS;i++)
    {
    if(i!=playerid && IsPlayerConnected(i))
    {
    switch(gTeam[i])
    {
    case TEAM_MAFIA:{mafiab++;}
    case TEAM_SWAT:{swatb++;}
    }
    }
    }
    switch(classid)
    {
    case 0: gTeam[playerid] = TEAM_MAFIA;
    case 1: gTeam[playerid] = TEAM_SWAT;
    }
    if(gTeam[playerid] == TEAM_MAFIA)
    {
    if(swatb < mafiab) {SendClientMessage(playerid,COLOR_RED,"This team is full! Teambalance."); return 0;}
    return 1;
    }
    if(gTeam[playerid] == TEAM_SWAT)
    {
    if(swatb > mafiab) {SendClientMessage(playerid,COLOR_RED,"This Team is full! Teambalance."); return 0;}
    return 1;
    }
    return 1;
    }

  • Schauen wir uns mal die Abfrage genauer an.


    Legende:
    KORREKT ... Teambalance wird durchgeführt
    FALSCH ... Teambalance wird ignoriert

    return 1; ... Spieler wird ins Team zugelassen
    return 0; ... Spieler wird nicht ins Team zugelassen


    Gegeben: 2 SWAT Spieler und 3 Mafia Spieler


    if(swatb < mafiab) return 1; //2 ist kleiner als 3 ==> KORREKT
    if(swatb > mafiab) return 0; //2 ist größer als 3 ==> FALSCH


    Gegeben: 3 SWAT Spieler und 2 Mafia Spieler


    if(swatb < mafiab) return 0; //3 ist kleiner als 2 ==> FALSCH
    if(swatb > mafiab) return 1; //3 ist größer als 2 ==> KORREKT

    Gegeben: 2 SWAT Spieler und 2 Mafia Spieler


    if(swatb < mafiab) return 0; //2 ist kleiner als 2 ==> FALSCH
    if(swatb > mafiab) return 0; //2 ist größer als 2 ==> FALSCH


    ---------------------------------------Lösung zu deiner Frage------------------------------------
    Gegeben: 2 SWAT Spieler und 2 Mafia Spieler


    if(swatb <= mafiab) return 1; //2 ist kleiner oder gleich als 2 ==> KORREKT
    if(swatb > mafiab) return 0; //2 ist größer als 2 ==> FALSCH


    ODER


    Gegeben: 2 SWAT Spieler und 2 Mafia Spieler


    if(swatb < mafiab) return 0; //2 ist kleiner als 2 ==> FALSCH
    if(swatb >= mafiab) return 1; //2 ist größer oder gleich als 2 ==> KORREKT


    Also du musst eine Abfrage umändern ^^ Hoffe du hast es verstanden.


    //EDIT: Hier noch zur Lösung eine umändern, die ein Zufallsprinzip daraus macht:
    Gegeben: 2 SWAT Spieler und 2 Mafia Spieler


    if(swatb < mafiab) return 1; //2 ist kleiner als 2 ==> FALSCH, bedeutet der Spieler darf ins Team
    else if(swatb > mafiab) return 1; //2 ist größer als 2 ==> FALSCH, beduetet der Spieler darf ins Team
    else if(swatb == mafiab) return random(1); //2 ist gleich wie 2 ==> RICHTIG und entscheidet durch kleines Zufallsprinzip ob Teambalancing eingeschalten werden soll oder nicht ^^


    //EDIT 2: Genauer Erklärt und return Beispiele hinzugefügt

    Mfg Templer


    >>Dein Breadfish-Thema im Unterforum ScriptingBase / Scriptingwünsche wurde nicht richtig beantworter?<<
    >>Es handelt sich um ein Programmier Problem und du nicht einfach weiter kommst wo der Fehler sein könnte?<<
    Dann melde dich bei mir über die PN-Funktion indem du den Link zu deinem Breadfish-Themen Problem schickst.
    Voraussetzung:
    Thema älter als 1 Tag und im Breadfish Forum gespostet!

    2 Mal editiert, zuletzt von Templer ()

  • Lies es dir gut durch und du wirst es verstehen ^^

    Mfg Templer


    >>Dein Breadfish-Thema im Unterforum ScriptingBase / Scriptingwünsche wurde nicht richtig beantworter?<<
    >>Es handelt sich um ein Programmier Problem und du nicht einfach weiter kommst wo der Fehler sein könnte?<<
    Dann melde dich bei mir über die PN-Funktion indem du den Link zu deinem Breadfish-Themen Problem schickst.
    Voraussetzung:
    Thema älter als 1 Tag und im Breadfish Forum gespostet!

  • Okay. Also muss jetzt das alles weg? ...


    if(gTeam[playerid] == TEAM_MAFIA)
    {
    if(swatb >= mafiab) {SendClientMessage(playerid,COLOR_RED,"This team is full! Teambalance."); return 0;}
    return 1;
    }
    if(gTeam[playerid] == TEAM_SWAT)
    {
    if(swatb > mafiab) {SendClientMessage(playerid,COLOR_RED,"This Team is full! Teambalance."); return 0;}
    return 1;
    }


    Und die if-Abfrage dann nur noch?