Unknown Command

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
  • Hä, wieso Unknown Command wenn ich die ID 1 ein Rang von 3 geben will
    Ich sehe keinen Fehler :o
    Mir selber zu geben geht auch net :o



    COMMAND:makeadmin(playerid,params[])
    {
    new pID,rang,str[128],str2[128];
    if(!isAnAdmin(playerid,4)) return SendClientMessage(playerid,GRAU,ADMINMELDUNG);
    if(sscanf(params,"ud",pID,rang)) return SendClientMessage(playerid,GRAU,"BENUTZE: /makeadmin [SpielerName] [Rang]");
    if(!IsPlayerConnected(pID)) return SendClientMessage(playerid,GRAU,"Dieser Spieler ist nicht online!");
    format(str,128,"[RANG] Der Admin %s hat dich zum %s ernannt",PlayerName(playerid),Adminrang[User[playerid][Admin]]);
    format(str2,128,"[RANG] Du hast den Spieler %s zum %s ernannt",PlayerName(playerid),Adminrang[User[playerid][Admin]]);
    SendClientMessage(pID,GELB,str);
    SendClientMessage(playerid,GELB,str2);
    User[pID][Admin] = rang;
    return 1;
    }

  • den fehler habe ich dann auch immer, füg es mal als stock ein


    also ganz unten ins script


    stock sscanf(string[], format[], {Float,_}:...)
    {
    #if defined isnull
    if (isnull(string))
    #else
    if (string[0] == 0 || (string[0] == 1 && string[1] == 0))
    #endif
    {
    return format[0];
    }
    #pragma tabsize 4
    new
    formatPos = 0,
    stringPos = 0,
    paramPos = 2,
    paramCount = numargs(),
    delim = ' ';
    while (string[stringPos] && string[stringPos] <= ' ')
    {
    stringPos++;
    }
    while (paramPos < paramCount && string[stringPos])
    {
    switch (format[formatPos++])
    {
    case '\0':
    {
    return 0;
    }
    case 'i', 'd':
    {
    new
    neg = 1,
    num = 0,
    ch = string[stringPos];
    if (ch == '-')
    {
    neg = -1;
    ch = string[++stringPos];
    }
    do
    {
    stringPos++;
    if ('0' <= ch <= '9')
    {
    num = (num * 10) + (ch - '0');
    }
    else
    {
    return -1;
    }
    }
    while ((ch = string[stringPos]) > ' ' && ch != delim);
    setarg(paramPos, 0, num * neg);
    }
    case 'h', 'x':
    {
    new
    num = 0,
    ch = string[stringPos];
    do
    {
    stringPos++;
    switch (ch)
    {
    case 'x', 'X':
    {
    num = 0;
    continue;
    }
    case '0' .. '9':
    {
    num = (num << 4) | (ch - '0');
    }
    case 'a' .. 'f':
    {
    num = (num << 4) | (ch - ('a' - 10));
    }
    case 'A' .. 'F':
    {
    num = (num << 4) | (ch - ('A' - 10));
    }
    default:
    {
    return -1;
    }
    }
    }
    while ((ch = string[stringPos]) > ' ' && ch != delim);
    setarg(paramPos, 0, num);
    }
    case 'c':
    {
    setarg(paramPos, 0, string[stringPos++]);
    }
    case 'f':
    {

    new changestr[16], changepos = 0, strpos = stringPos;
    while(changepos < 16 && string[strpos] && string[strpos] != delim)
    {
    changestr[changepos++] = string[strpos++];
    }
    changestr[changepos] = '\0';
    setarg(paramPos,0,_:floatstr(changestr));
    }
    case 'p':
    {
    delim = format[formatPos++];
    continue;
    }
    case '\'':
    {
    new
    end = formatPos - 1,
    ch;
    while ((ch = format[++end]) && ch != '\'') {}
    if (!ch)
    {
    return -1;
    }
    format[end] = '\0';
    if ((ch = strfind(string, format[formatPos], false, stringPos)) == -1)
    {
    if (format[end + 1])
    {
    return -1;
    }
    return 0;
    }
    format[end] = '\'';
    stringPos = ch + (end - formatPos);
    formatPos = end + 1;
    }
    case 'u':
    {
    new
    end = stringPos - 1,
    id = 0,
    bool:num = true,
    ch;
    while ((ch = string[++end]) && ch != delim)
    {
    if (num)
    {
    if ('0' <= ch <= '9')
    {
    id = (id * 10) + (ch - '0');
    }
    else
    {
    num = false;
    }
    }
    }
    if (num && IsPlayerConnected(id))
    {
    setarg(paramPos, 0, id);
    }
    else
    {
    #if !defined foreach
    #define foreach(%1,%2) for (new %2 = 0; %2 < MAX_PLAYERS; %2++) if (IsPlayerConnected(%2))
    #define __SSCANF_FOREACH__
    #endif
    string[end] = '\0';
    num = false;
    new
    name[MAX_PLAYER_NAME];
    id = end - stringPos;
    foreach (Player, playerid)
    {
    GetPlayerName(playerid, name, sizeof (name));
    if (!strcmp(name, string[stringPos], true, id))
    {
    setarg(paramPos, 0, playerid);
    num = true;
    break;
    }
    }
    if (!num)
    {
    setarg(paramPos, 0, INVALID_PLAYER_ID);
    }
    string[end] = ch;
    #if defined __SSCANF_FOREACH__
    #undef foreach
    #undef __SSCANF_FOREACH__
    #endif
    }
    stringPos = end;
    }
    case 's', 'z':
    {
    new
    i = 0,
    ch;
    if (format[formatPos])
    {
    while ((ch = string[stringPos++]) && ch != delim)
    {
    setarg(paramPos, i++, ch);
    }
    if (!i)
    {
    return -1;
    }
    }
    else
    {
    while ((ch = string[stringPos++]))
    {
    setarg(paramPos, i++, ch);
    }
    }
    stringPos--;
    setarg(paramPos, i, '\0');
    }
    default:
    {
    continue;
    }
    }
    while (string[stringPos] && string[stringPos] != delim && string[stringPos] > ' ')
    {
    stringPos++;
    }
    while (string[stringPos] && (string[stringPos] == delim || string[stringPos] <= ' '))
    {
    stringPos++;
    }
    paramPos++;
    }
    do
    {
    if ((delim = format[formatPos++]) > ' ')
    {
    if (delim == '\'')
    {
    while ((delim = format[formatPos++]) && delim != '\'') {}
    }
    else if (delim != 'z')
    {
    return delim;
    }
    }
    }
    while (delim > ' ');
    return 0;
    }


  • kein Unterschied ^^

  • Mein Setadmin Befehl schaut soaus,kannste ja mal ausprobieren:


    ocmd:setadmin(playerid,params[])
    {
    if(SpielerInfo[playerid][pAdminlevel] < 4)return SendClientMessage(playerid,Rot,""COLG"[Info:]"COLR"Möglich ab: "COLG" Adminrank: 4");
    new pID,Adminlevel;
    if(sscanf(params,"ui",pID,Adminlevel))return SendClientMessage(playerid,Rot,""COLG"[Info:]"COLR"/setadmin [playerid] [adminlevel]");
    SpielerInfo[pID][pAdminlevel] = Adminlevel;
    SavePlayer(pID);
    SendClientMessage(pID,Rot,"Dein Adminrang wurde geändert.");
    SendClientMessage(playerid,Rot,"Du hast den Adminrang geändert.");
    return 1;
    }

  • mach mal aus dem d bei Sscanf ein i, also ein Integer, ich habs einfach mal bei mir verglichen, hast eig. nix falsch.


    //edit: Bei Str2, das PlayerName(playerid) musste zu PlayerName(pID) machen, sonst wird falscher Name angezeigt ;)

  • Du kannst den Befehl ja auch mal printen ;)
    COMMAND:makeadmin(playerid,params[])
    {
    print("1");
    new pID,rang,str[128],str2[128];
    if(!isAnAdmin(playerid,4)) return SendClientMessage(playerid,GRAU,ADMINMELDUNG);
    if(sscanf(params,"ud",pID,rang)) return SendClientMessage(playerid,GRAU,"BENUTZE: /makeadmin [SpielerName] [Rang]");
    print("2");
    if(!IsPlayerConnected(pID)) return SendClientMessage(playerid,GRAU,"Dieser Spieler ist nicht online!");
    format(str,128,"[RANG] Der Admin %s hat dich zum %s ernannt",PlayerName(playerid),Adminrang[User[playerid][Admin]]);
    print("3");
    format(str2,128,"[RANG] Du hast den Spieler %s zum %s ernannt",PlayerName(playerid),Adminrang[User[playerid][Admin]]);
    SendClientMessage(pID,GELB,str);
    SendClientMessage(playerid,GELB,str2);
    print("4");
    User[pID][Admin] = rang;
    return 1;
    }


  • WTF ? :D


    Es wird geprintet:
    1
    1
    2

  • new Adminrang[][]={"Spieler","Supporter","Moderator","Administrator","Serverleiter"};


    COMMAND:makeadmin(playerid,params[])
    {
    new pID,rang,string[128];
    if(!isAnAdmin(playerid,4))return SendClientMessage(playerid,GRAU,ADMINMELDUNG);
    if(sscanf(params,"ud",pID,rang))return SendClientMessage(playerid,GRAU,"Benutze: /makeadmin [SpielerName] [Rang]");
    if(!IsPlayerConnected(pID))return SendClientMessage(playerid,GRAU,"Dieser Spieler ist nicht Online!");
    User[pID][Admin]=rang;
    format(string,128,"[RANG] Der Admin %s hat dich zum %s ernannt!",PlayerName(playerid),Adminrang[][User[pID][Admin]-1]),SendClientMessage(pID,GELB,string);
    format(string,128,"[RANG] Du hast den Spieler %s zum %s ernannt!",PlayerName(pID),Adminrang[][User[pID][Admin]-1]),SendClientMessage(playerid,GELB,string);
    return 1;
    }
    Ob das so klappt, das weiß ich nicht.

  • COMMAND:makeadmin(playerid,params[]) { new pID,rang,string[128]; if(!isAnAdmin(playerid,4))return SendClientMessage(playerid,GRAU,ADMINMELDUNG); if(sscanf(params,"ud",pID,rang))return SendClientMessage(playerid,GRAU,"Benutze: /makeadmin [SpielerName] [Rang]"); if(!IsPlayerConnected(pID))return SendClientMessage(playerid,GRAU,"Dieser Spieler ist nicht Online!"); User[pID][Admin]=rang; format(string,128,"[RANG] Der Admin %s hat dich zum %s ernannt!",PlayerName(playerid),Adminrang[][User[pID][Admin]-1]),SendClientMessage(pID,GELB,string); format(string,128,"[RANG] Du hast den Spieler %s zum %s ernannt!",PlayerName(pID),Adminrang[][User[pID][Admin]-1]),SendClientMessage(playerid,GELB,string); return 1; }


    Ne Errors erscheinen