Switch Frage...

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 Brotfische,
    ich wollte bei dem /makeleader dem Spieler nicht die Fraktions ID sagen, sondern den Namen. Indem ich n switch benutze...
    Nur da wo ich das einsetze, sagt mir der Compiler das es keinen Effeckt hat.


    So mache ich der/die/das/den switch:

    Spoiler anzeigen

    switch(pInfo[playerid][Fraktion])
    {
    case 0:{"Zivilisten";}
    case 1:{"SFPD";}
    case 2:{"SEK";}
    //usw...
    }


    Wo muss ich jetzt der/die/das/den switch einsetzten?
    /Makeleader Befehl.

    Spoiler anzeigen

    ocmd:makeleader(playerid,params[])
    {
    if(IsPlayerAnAdmin(playerid,4))
    {
    new pID,fLeader,string[128],string2[128];
    if(sscanf(params,"ui",pID,fLeader))return SendClientMessage(playerid,COLOR_YELLOW,"Benutze: /Makeleader <Spielername/ID> <FraktionsID>");
    {
    if(fLeader<0||fLeader>8)return SendClientMessage(playerid,COLOR_RED,"Ungültige FraktionsID!");
    {
    if(!IsPlayerConnected(playerid))return SendClientMessage(playerid,COLOR_RED,"Dieser Spieler ist nicht online!");
    pInfo[pID][Leader] = fLeader;
    pInfo[pID][Fraktion] = fLeader;
    format(string,sizeof(string),"AdmCmd: %s hat dich zum Leader der Fraktion %i gemacht.",PlayerName(playerid),fLeader);
    format(string2,sizeof(string2),"Du hast %s zum Leader der Fraktion %i gemacht.",PlayerName(pID),fLeader);
    SendClientMessage(pID,ADMCMD,string);
    SendClientMessage(playerid,INFO,string2);
    return 1;
    }

    Spoiler anzeigen
    }
    }
    else
    {
    SendClientMessage(playerid,COLOR_RED,"Du hast nicht die nötigen Rechte für diesen Befehl!");
    return 1;
    }
    }

  • Bau dir ein stock z.B. so:
    stock GetFraktion(playerid)
    {
    new Fraktion[50];
    switch(pInfo[playerid][Fraktion]) {
    case 0:
    Fraktion = "Zivilisten";
    case 1:
    Fraktion = "SFPD";
    case 2:
    Fraktion = "SEK";
    }
    return Fraktion;
    }


    Und wende den dann richtig an. ;)

  • ocmd:makeleader(playerid,params[])
    {
    if(IsPlayerAnAdmin(playerid,4))
    {
    new pID,
    fLeader,
    string[128],
    string2[128];
    if(sscanf(params,"ui",pID,fLeader))
    return SendClientMessage(playerid,COLOR_YELLOW,"Benutze: /Makeleader <Spielername/ID> <FraktionsID>");
    if(fLeader<0||fLeader>8)
    return SendClientMessage(playerid,COLOR_RED,"Ungültige FraktionsID!");
    else {
    if(IsPlayerConnected(playerid)) {
    pInfo[pID][Leader] = fLeader;
    pInfo[pID][Fraktion] = fLeader;
    format(string,sizeof(string),"AdmCmd: %s hat dich zum Leader der Fraktion %i gemacht.",PlayerName(playerid), fLeader);
    format(string2,sizeof(string2),"Du hast %s zum Leader der Fraktion %i gemacht.",PlayerName(pID),fLeader);
    SendClientMessage(pID,ADMCMD,string);
    SendClientMessage(playerid,INFO,string2);
    return 1;
    }


    }
    }
    else
    {
    SendClientMessage(playerid,COLOR_RED,"Du hast nicht die nötigen Rechte für diesen Befehl!");
    return 1;
    }
    }


    Wo willst du denn dort den Fraktionsnamen stehen haben?


  • format(string,sizeof(string),"AdmCmd: %s hat dich zum Leader der Fraktion %i gemacht.",PlayerName(playerid), fLeader);
    format(string2,sizeof(string2),"Du hast %s zum Leader der Fraktion %i gemacht.",PlayerName(pID),fLeader);

    Ich möchte nicht den Intenger, also die Fraktions ID, sondern halt den Namen den ich mit dem switch vorhher definiert habe.

  • Mit diesemm Stock solltest was anfangen können^^


    stock GetFraktionName(FrakID)
    {
    new FrakName[50];
    switch(FrakID)
    {
    case 0:{FrakName="Zivilisten";}
    case 1:{FrakName="SFPD";}
    case 2:{FrakName="SEK";}
    //usw...
    }
    return FrakName;
    }


  • format(string,sizeof(string),"AdmCmd: %s hat dich zum Leader der Fraktion %s gemacht.",PlayerName(playerid), GetFraktion(pID));
    format(string2,sizeof(string2),"Du hast %s zum Leader der Fraktion %s gemacht.",PlayerName(pID), GetFraktion(pID));