CMD - Optionaler Parameter

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


    Der CMD soll eigentlich so funktionieren, dass wenn ich keine Parameter eingebe, immer die eigenen Statistiken angezeigt werden. Sobald ich aber einen Parameter eingebe, sollen die Statistiken des angegebenen Spielers gezeigt werden. Nur klappt das bisher noch nicht so ganz.


    COMMAND:stats(playerid, params[])
    {
    if(IsPlayerAFK[playerid]) return SendLanguageMessage(playerid, C_RED, "»WARNUNG« Du bist AFK. Du kannst keine Aktion durchführen.", "»WARNING« You are AFK. You can't take any action.");


    new ID,
    stringDE[256],
    stringEN[256],
    pName[MAX_PLAYER_NAME],
    pAdminLevel = pInfo[ID][AdminLevel],
    pMoney = pInfo[ID][Money] + pInfo[ID][Bank],
    pScore = pInfo[ID][Score],
    pKills = pInfo[ID][Kills],
    pDeaths = pInfo[ID][Deaths],
    Float:pRatio = Float:pInfo[ID][Kills] / Float:pInfo[ID][Deaths];


    if(isnull(params)) ID = playerid;
    else return sscanf(params, "u", ID);

    if(!IsPlayerConnected(ID)) return SendLanguageMessage(playerid, C_RED, "»WARNUNG« Dieser Spieler ist nicht online!", "»WARNING« This player is not online!");


    GetPlayerName(playerid, pName, sizeof(pName));
    format(stringDE, sizeof(stringDE), ""#C_WHITE_E"Name: "#C_LIGHT_BLUE_E"%s"#C_WHITE_E"\nRang: "#C_LIGHT_BLUE_E"%d"#C_WHITE_E"\nGeld: "#C_LIGHT_BLUE_E"%d"#C_WHITE_E"\nScore: "#C_LIGHT_BLUE_E"%d"#C_WHITE_E"\nKills: "#C_LIGHT_BLUE_E"%d"#C_WHITE_E"\nTode: "#C_LIGHT_BLUE_E"%d"#C_WHITE_E"\nRatio: "#C_LIGHT_BLUE_E"%0.2f", pName, pAdminLevel, pMoney, pScore, pKills, pDeaths, pRatio);
    format(stringEN, sizeof(stringEN), ""#C_WHITE_E"Name: "#C_LIGHT_BLUE_E"%s"#C_WHITE_E"\nRank: "#C_LIGHT_BLUE_E"%d"#C_WHITE_E"\nMoney: "#C_LIGHT_BLUE_E"%d"#C_WHITE_E"\nScore: "#C_LIGHT_BLUE_E"%d"#C_WHITE_E"\nKills: "#C_LIGHT_BLUE_E"%d"#C_WHITE_E"\nDeaths: "#C_LIGHT_BLUE_E"%d"#C_WHITE_E"\nRatio: "#C_LIGHT_BLUE_E"%0.2f", pName, pAdminLevel, pMoney, pScore, pKills, pDeaths, pRatio);
    ShowLanguageDialog(playerid, DIALOG_STATS, DIALOG_STYLE_MSGBOX, "Spielerstatistik", "Player Statistics", stringDE, stringEN, "OK", "OK", "", "");
    return 1;
    }

  • Schreibe es so:


    COMMAND:stats(playerid, params[])
    {
    if(IsPlayerAFK[playerid]) return SendLanguageMessage(playerid, C_RED, "»WARNUNG« Du bist AFK. Du kannst keine Aktion durchführen.", "»WARNING« You are AFK. You can't take any action.");
    new ID, stringDE[256], stringEN[256];
    sscanf(params, "U(-1)", ID);
    if(ID == -1) ID = playerid;
    if(!IsPlayerConnected(ID)) return SendLanguageMessage(playerid, C_RED, "»WARNUNG« Dieser Spieler ist nicht online!", "»WARNING« This player is not online!");
    new pName[MAX_PLAYER_NAME],
    pAdminLevel = pInfo[ID][AdminLevel],
    pMoney = pInfo[ID][Money] + pInfo[ID][Bank],
    pScore = pInfo[ID][Score],
    pKills = pInfo[ID][Kills],
    pDeaths = pInfo[ID][Deaths],
    Float:pRatio = Float:pInfo[ID][Kills] / Float:pInfo[ID][Deaths];
    GetPlayerName(ID, pName, sizeof(pName));
    format(stringDE, sizeof(stringDE), ""#C_WHITE_E"Name: "#C_LIGHT_BLUE_E"%s"#C_WHITE_E"\nRang: "#C_LIGHT_BLUE_E"%d"#C_WHITE_E"\nGeld: "#C_LIGHT_BLUE_E"%d"#C_WHITE_E"\nScore: "#C_LIGHT_BLUE_E"%d"#C_WHITE_E"\nKills: "#C_LIGHT_BLUE_E"%d"#C_WHITE_E"\nTode: "#C_LIGHT_BLUE_E"%d"#C_WHITE_E"\nRatio: "#C_LIGHT_BLUE_E"%0.2f", pName, pAdminLevel, pMoney, pScore, pKills, pDeaths, pRatio);
    format(stringEN, sizeof(stringEN), ""#C_WHITE_E"Name: "#C_LIGHT_BLUE_E"%s"#C_WHITE_E"\nRank: "#C_LIGHT_BLUE_E"%d"#C_WHITE_E"\nMoney: "#C_LIGHT_BLUE_E"%d"#C_WHITE_E"\nScore: "#C_LIGHT_BLUE_E"%d"#C_WHITE_E"\nKills: "#C_LIGHT_BLUE_E"%d"#C_WHITE_E"\nDeaths: "#C_LIGHT_BLUE_E"%d"#C_WHITE_E"\nRatio: "#C_LIGHT_BLUE_E"%0.2f", pName, pAdminLevel, pMoney, pScore, pKills, pDeaths, pRatio);
    ShowLanguageDialog(playerid, DIALOG_STATS, DIALOG_STYLE_MSGBOX, "Spielerstatistik", "Player Statistics", stringDE, stringEN, "OK", "OK", "", "");
    return 1;
    }


    mfg. :thumbup:

    ast2ufdyxkb1.png


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

  • Als Nebeninfo



    new pName[MAX_PLAYER_NAME],
    pAdminLevel = pInfo[ID][AdminLevel],
    pMoney = pInfo[ID][Money] + pInfo[ID][Bank],
    pScore = pInfo[ID][Score],
    pKills = pInfo[ID][Kills],
    pDeaths = pInfo[ID][Deaths],
    Float:pRatio = Float:pInfo[ID][Kills] / Float:pInfo[ID][Deaths];


    Die Werte im Array musst du nicht extra übergeben an variablen die kannst du auch direkt nutzen


    ... "#C_LIGHT_BLUE_E"%0.2f", pName, pInfo[ID][AdminLevel],pInfo[ID][Money] + pInfo[ID][Bank], ...

  • Du gibst der variable den wert -1 , wenn kein parameter angegeben wird ebenfalls, kannst du die -1 auch gegen 7777 ersetzen.


    Wir setzen sie hier auf -1, da -1 eine invalide Spielerid ist, da es diese Spielerid nie geben wird um abzufragen ob ein parameter angeben wurde oder nicht.
    if(ID == -1)