Code Optimierung

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 eine frage zur codeoptimierung,
    Alos da ich keine lust habe bei jedem case neu abzufragn welche fraktion er ist
    (um von der fraktionskasse des käufers zu nehmen und in unserer zu geben)
    Es ist bei /fkasse do gemacht
    // >>>>>>>>>>>>>>>>> Fraktionskassen-System <<<<<<<<<<<<<<<<<
    if(strcmp(cmd,"/fkasse",true) == 0)
    {
    new fraktion = 0;
    if(PlayerInfo[playerid][pMember] > 0) fraktion = PlayerInfo[playerid][pMember] - 1;
    if(PlayerInfo[playerid][pLeader] > 0) fraktion = PlayerInfo[playerid][pLeader] - 1;
    if(fraktion >= 0)
    {
    tmp = strtok(cmdtext,idx);
    if(!strlen(tmp))
    {
    SendClientMessage(playerid,COLOR_GRAD5," /fkasse [einzahlen/auszahlen] [Betrag]");
    format(string,sizeof(string)," Derzeit sind $%d in der Fraktionskasse!",FraktionsKasse[fraktion]);
    SendClientMessage(playerid,COLOR_GRAD5,string);
    return 1;
    }
    if(strcmp(tmp,"einzahlen",true) == 0)
    {
    tmp = strtok(cmdtext,idx);
    if(!strlen(tmp))
    {
    SendClientMessage(playerid,COLOR_GRAD5," /fkasse einzahlen [Betrag]");
    format(string,sizeof(string)," Derzeit sind $%d in der Fraktionskasse!",FraktionsKasse[fraktion]);
    SendClientMessage(playerid,COLOR_GRAD5,string);
    return 1;
    }
    new amount = strval(tmp);
    if(amount < 0 || amount > 1000000) return SendClientMessage(playerid,COLOR_WHITE," Bitte nur Summen in Höhe von 1 bis 1 Million Dollar!");
    if(GetPlayerMoney(playerid) < amount) return SendClientMessage(playerid,COLOR_WHITE," Du hast nicht soviel Geld um es einzuzahlen!");
    FraktionsKasse[fraktion] += amount;
    GivePlayerMoney(playerid,-amount);
    format(string,sizeof(string)," Du hast $%d in die Fraktionskasse eingezahlt! Total: $%d",amount,FraktionsKasse[fraktion]);
    SendClientMessage(playerid,COLOR_WHITE,string);
    format(string,sizeof(string)," %s hat $%d in die Fraktionskasse eingezahlt! Total: $%d",sendername,amount,FraktionsKasse[fraktion]);
    SendLeaderMSG(fraktion+1,COLOR_LIGHTBLUE,string);
    SaveFraktionsKassen();
    }
    else if(strcmp(tmp,"auszahlen",true) == 0)
    {
    tmp = strtok(cmdtext,idx);
    if(!strlen(tmp))
    {
    SendClientMessage(playerid,COLOR_GRAD5," /fkasse auszahlen [Betrag]");
    format(string,sizeof(string)," Derzeit sind $%d in der Fraktionskasse!",FraktionsKasse[fraktion]);
    SendClientMessage(playerid,COLOR_GRAD5,string);
    return 1;
    }
    new amount = strval(tmp);
    if(PlayerInfo[playerid][pLeader] == 0) return SendClientMessage(playerid,COLOR_WHITE," Nur Leader dürfen Geld aus der Fraktionskasse nehmen!");
    if(amount < 0 || amount > 1000000) return SendClientMessage(playerid,COLOR_WHITE," Bitte nur Summen in Höhe von 1 bis 1 Million Dollar!");
    if((FraktionsKasse[fraktion] - amount) < 0) return SendClientMessage(playerid,COLOR_WHITE," Du kannst keine Schulden machen!");
    FraktionsKasse[fraktion] -= amount;
    GivePlayerMoney(playerid,amount);
    format(string,sizeof(string)," Du hast $%d aus der Fraktionskasse genommen! Total: $%d",amount,FraktionsKasse[fraktion]);
    SendClientMessage(playerid,COLOR_WHITE,string);
    format(string,sizeof(string)," %s hat $%d aus der Fraktionskasse genommen! Total: $%d",sendername,amount,FraktionsKasse[fraktion]);
    SendLeaderMSG(fraktion+1,COLOR_LIGHTBLUE,string);
    SaveFraktionsKassen();
    }
    else
    {
    SendClientMessage(playerid,COLOR_GRAD5," /fkasse [einzahlen/auszahlen] [Betrag]");
    format(string,sizeof(string)," Derzeit sind $%d in der Fraktionskasse!",FraktionsKasse[fraktion]);
    SendClientMessage(playerid,COLOR_GRAD5,string);
    }
    }
    else SendClientMessage(playerid,COLOR_WHITE," Du bist in gar keiner Fraktion!");
    return 1;
    }


    Wie muss ich das abändern wenn ich das so machen möchte das ich keine ewig langen fraktionsabfragen machen muss?