sscanf befehle gehen nicht

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
  • Guten morgen ich habe ein problem seit tagen das die befehle mit sscanf nicht funktioniren ich habe schon mehrere gefragt aber keiner weiß eine antwort die befehle sind richtig denke ich :P


    das ist so wen ich nur /kick ein gebe kommt dan SendClientMessage(playerid,GELB,"Verwendung: /kick [playerid] [Grund]");
    und wen ich dan /kick 0 text eingebe kommmt dan new stringreturn[128];
    format(stringreturn,sizeof(stringreturn),"Der Befehl %s ist uns unbekannt. Bitte verwende /cmd für Hilfe.",cmdtext);
    return SendClientMessage(playerid,ROT,stringreturn);


    hir mal die "Drei " befehle: if(strcmp(cmdtext, "/kick", true) == 0)
    {
    new pID;
    new string[128];
    new grund[128];
    new spieler[MAX_PLAYER_NAME], spieler2[MAX_PLAYER_NAME];


    if(Admin[playerid] > 1338 || IsPlayerAdmin(playerid))
    {
    if(sscanf(cmdtext,"us",pID,grund)) return SendClientMessage(playerid,GELB,"Verwendung: /kick [playerid] [Grund]");
    if(!IsPlayerConnected(pID))
    {
    return SendClientMessage(playerid,ROT,"Der Spieler ist offline");
    }
    GetPlayerName(playerid,spieler,sizeof spieler);
    GetPlayerName(pID,spieler2,sizeof spieler2);
    format(string,sizeof string,"SERVER: %s wurde von %s gekickt. Grund: %s.",spieler2,spieler,grund);
    SendClientMessageToAll(ROT,string);
    format(string,sizeof string,"SERVER: Du wurdest von %s gekickt. Grund: %s.",spieler,grund);
    SendClientMessage(pID,ROT,string);
    Kick(pID);
    }
    return 1;
    }
    if(strcmp(cmdtext, "/ban", true) == 0)
    {
    new pID, string[128], grund[128], spieler[MAX_PLAYER_NAME], spieler2[MAX_PLAYER_NAME], Spielerdatei[64];
    if(Admin[playerid] > 1338 || IsPlayerAdmin(playerid))
    {
    if(sscanf(cmdtext,"us",pID,grund)) return SendClientMessage(playerid,GELB,"Verwendung: /ban [playerid] [Grund]");
    if(!IsPlayerConnected(pID))
    {
    return SendClientMessage(playerid,ROT,"Der Spieler ist offline");
    }
    GetPlayerName(playerid,spieler,sizeof spieler);
    GetPlayerName(pID,spieler2,sizeof spieler2);
    format(Spielerdatei,sizeof(Spielerdatei),"/Accounts/%s.txt",spieler2);
    format(string,sizeof string,"SERVER: %s wurde von %s gebannt. Grund: %s.",spieler2,spieler,grund);
    SendClientMessageToAll(ROT,string);
    format(string,sizeof string,"SERVER: Du wurdest von %s gebannt. Grund: %s.",spieler,grund);
    SendClientMessage(pID,ROT,string);
    dini_IntSet(Spielerdatei,"Baned",1);
    Ban(pID);

    }
    return 1;
    }
    if(strcmp(cmdtext, "/skin", true) == 0)
    {
    if(sscanf(cmdtext,"d",skinid))
    {
    return SendClientMessage(playerid,BLAU,"INFO: /skin[0 - 299]*");
    }
    if(skinid<0||skinid>299)return SendClientMessage(playerid,ROT,"Diese Skin ID gibt es nicht! nur von 0-299");
    SetPlayerSkin(playerid,skinid);
    new string[128];
    format(string,sizeof(string),"Du hast dir den Skin %s angezogen.",skinid);
    SendClientMessage(playerid,GRÜN,string);
    return 1;
    }
    den stock habe ich auch


    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;
    }
    aber warum gehen die dan nicht ?:O


    vill könnt ihr mir hoffentlich helfen

  • if(strcmp(cmdtext, "/kick", true) == 0)
    {
    new pID;
    new string[128];
    new grund[128];
    new spieler[MAX_PLAYER_NAME], spieler2[MAX_PLAYER_NAME];


    if(Admin[playerid] > 1338 || IsPlayerAdmin(playerid))
    {
    if(sscanf(cmdtext,"us",pID,grund)) return SendClientMessage(playerid,GELB,"Verwendung: /kick [playerid] [Grund]");
    if(!IsPlayerConnected(pID))
    {
    return SendClientMessage(playerid,ROT,"Der Spieler ist offline");
    }
    GetPlayerName(playerid,spieler,sizeof spieler);
    GetPlayerName(pID,spieler2,sizeof spieler2);
    format(string,sizeof string,"SERVER: %s wurde von %s gekickt. Grund: %s.",spieler2,spieler,grund);
    SendClientMessageToAll(ROT,string);
    format(string,sizeof string,"SERVER: Du wurdest von %s gekickt. Grund: %s.",spieler,grund);
    SendClientMessage(pID,ROT,string);
    Kick(pID);
    return 1;
    }
    }
    if(strcmp(cmdtext, "/ban", true) == 0)
    {
    new pID, string[128], grund[128], spieler[MAX_PLAYER_NAME], spieler2[MAX_PLAYER_NAME], Spielerdatei[64];
    if(Admin[playerid] > 1338 || IsPlayerAdmin(playerid))
    {
    if(sscanf(cmdtext,"us",pID,grund)) return SendClientMessage(playerid,GELB,"Verwendung: /ban [playerid] [Grund]");
    if(!IsPlayerConnected(pID))
    {
    return SendClientMessage(playerid,ROT,"Der Spieler ist offline");
    }
    GetPlayerName(playerid,spieler,sizeof spieler);
    GetPlayerName(pID,spieler2,sizeof spieler2);
    format(Spielerdatei,sizeof(Spielerdatei),"/Accounts/%s.txt",spieler2);
    format(string,sizeof string,"SERVER: %s wurde von %s gebannt. Grund: %s.",spieler2,spieler,grund);
    SendClientMessageToAll(ROT,string);
    format(string,sizeof string,"SERVER: Du wurdest von %s gebannt. Grund: %s.",spieler,grund);
    SendClientMessage(pID,ROT,string);
    dini_IntSet(Spielerdatei,"Baned",1);
    Ban(pID);
    return 1;
    }
    }


    Versuchs mal so, KÖNNTE an den Klammer liegen, muss aber nicht ;D