/fraktionswahl Problem

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
  • Tag'chen, hab ein Problem, wenn ich Ingame bin und Fraktionswahl eingebe, passiert alles wie es soll, mir wird eine Liste angezeigt mit den verschiedenen auswählbaren Fraktionen, mit der Spieleanzahl davor, jedoch erhöhe ich jedesmal wenn ich in eine Fraktion gehe, die Spielerzahl. Die Spieleranzahl soll aber um 1 sinken, wenn ich das Team verlasse, ansonsten gehe ich bspw. zu Grove Street wo derzeit 0 Leute drin sind, wechsel dann die Fraktion, dann steht da Grove Street : 1 Spieler, und wenn ich zu Balls gewechselt bin, Ballas : 1 Spieler, wobei Grove eigentlich wieder auf null stehen müsste. Das ist mein Code:


    ocmd:fraktionswahl(playerid, params[])
    {
    new string[256];
    format(string,sizeof string,"%i Spieler = Cali Kartell\n%i Spieler = Yakuza\n%i Spieler = Ballas\n%i Spieler = Triaden\n%i Spieler = Vagos\n%i Spieler = Aztecas\n%i Spieler = Grove Street\n%i Spieler = Red Solderis\n%i Spieler = Zivilist",cali,yak,ballas,triaden,vagos,aztecas,grove,red,zivi);
    ShowPlayerDialog(playerid, DIALOG_FRAKTIONSWAHL, DIALOG_STYLE_LIST, "Gangfight - Fraktionswahl",string,"Wählen","Schließen");
    return 1;
    }


    if(dialogid == DIALOG_FRAKTIONSWAHL)
    {
    if(response == 0)
    {
    return 1;
    }
    if(response == 1)
    {
    if(listitem == 0)
    {
    Spieler[playerid][Member] = 1;
    SpawnPlayer(playerid);
    cali++;
    }
    if(listitem == 1)
    {
    Spieler[playerid][Member] = 2;
    SpawnPlayer(playerid);
    yak++;
    }
    if(listitem == 2)
    {
    Spieler[playerid][Member] = 3;
    SpawnPlayer(playerid);
    ballas++;
    }
    if(listitem == 3)
    {
    Spieler[playerid][Member] = 4;
    SpawnPlayer(playerid);
    triaden++;
    }
    if(listitem == 4)
    {
    Spieler[playerid][Member] = 5;
    SpawnPlayer(playerid);
    vagos++;
    }
    if(listitem == 5)
    {
    Spieler[playerid][Member] = 6;
    SpawnPlayer(playerid);
    aztecas++;
    }
    if(listitem == 6)
    {
    Spieler[playerid][Member] = 7;
    SpawnPlayer(playerid);
    grove++;
    }
    if(listitem == 7)
    {
    Spieler[playerid][Member] = 8;
    SpawnPlayer(playerid);
    red++;
    }
    if(listitem == 8)
    {
    Spieler[playerid][Member] = 0;
    SpawnPlayer(playerid);
    zivi++;
    }
    }
    }



    Mit welchem Code stell ich es am besten an, damit die Spielerzahl um eins sinkt, wenn ich das Team verlassen? Würde mich über hilfe freuen :)


    LG

  • Einfach mal so abfragen:


    if(dialogid == DIALOG_FRAKTIONSWAHL)
    {
    if(!response) return 1;
    if(listitem != 8) Spieler[playerid][Member] = listitem+1;
    else Spieler[playerid][Member] = 0;
    switch(listitem) {
    case 0: cali++;
    case 1: yak++;
    case 2: ballas++;
    case 3: triaden++;
    case 4: vagos++;
    case 5: aztecas++;
    case 6: grove++;
    case 7: red++;
    case 8: zivi++;
    }
    SpawnPlayer(playerid);
    }


    Das fasst deinen ganzen Code zusammen :D


    mfg. :thumbup:


    //Edit: gar nicht die unterschiedlichen Namen gesehen :whistling:

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • Schlechte Idee wie du dies ausgeben lassen möchtest, verwende dazu lieber einen Stock, da ein Account ja evtl. nach einem Relogg wieder bspw. Ballas ist.


    stock GetPlayersInTeamFromMaxPlayers(team)
    {
    new playercount = 0;
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(GetPVarInt(i,"loggedin")== 0) continue;
    if(SpielerInfo[i][pFraktion] != team)continue;
    playercount++;
    }
    return playercount;
    }

  • Kaliber: Der Code ist gut und kürzer, aber das Problem ist immer noch da. Wenn ich /fraktionswahl eingebe und gehe zu Cali Kartell, dann wirds erhöht, soll es auch, aber wenn ich dann nochmal /fraktionswahl eingebe und zu Yakuza gehe, bleibt Cali Kartell auf 1, was aber eigentlich dann auf 0 sein müsste. :/


    @roOling: Fraktion wird beim Logout gelöscht

  • Achso, jetzt habe ich dein Problem verstanden :D


    Mache es ganz easy so:


    ocmd:fraktionswahl(playerid, params[])
    {
    new string[256];
    format(string,sizeof string,"%i Spieler = Cali Kartell\n%i Spieler = Yakuza\n%i Spieler = Ballas\n%i Spieler = Triaden\n%i Spieler = Vagos\n%i Spieler = Aztecas\n%i Spieler = Grove Street\n%i Spieler = Red Solderis\n%i Spieler = Zivilist",GetFraktion(1),GetFraktion(2),GetFraktion(3),GetFraktion(4),GetFraktion(5),GetFraktion(6),GetFraktion(7),GetFraktion(8),GetFraktion(0));
    ShowPlayerDialog(playerid, DIALOG_FRAKTIONSWAHL, DIALOG_STYLE_LIST, "Gangfight - Fraktionswahl",string,"Wählen","Schließen");
    return 1;
    }


    stock GetFraktion(id) {
    new count;
    for(new i; i<MAX_PLAYERS; i++) {
    if(IsPlayerConnected(i) && Spieler[i][Member] == id) count++;
    }
    return count;
    }


    if(dialogid == DIALOG_FRAKTIONSWAHL)
    {
    if(!response) return 1;
    if(listitem != 8) Spieler[playerid][Member] = listitem+1;
    else Spieler[playerid][Member] = 0;
    SpawnPlayer(playerid);
    }


    mfg. :thumbup:

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S