sscanf / 2 Problem

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
  • Hiho, ich hatte aufeinmal ein problem mit SSCANF, und auch SSCANF2 in diesen fall benutze ich DCMD vorher hat alles richtig Funktioniert naja ich komme mal zu den Problem wo ich nicht lösen konnte:


    Ich habe ein Command zB, /tb ID ...


    Sobald ich denn command und zB, id 1 Eingebe wird id 0 Angezeigt und nicht id 1 ... Aufeinmal änderungen in der zeit habe ich keine Vorgenommen auser Strings verkleinert...

  • dcmd_tb(playerid,params[])
    {
    new id;
    if(sscanf(params, "u", id))
    {
    return SendClientMessage(playerid, COLOR_GRAD1, "Benutzung: /tb [id]");
    }
    new level;
    level = PlayerInfo[id][pLevel] * 1000;
    format(ALLSTRING,sizeof(ALLSTRING),"Auto Freikauf kosten: %d",level);
    SendClientMessage(playerid, COLOR_GREEN, ALLSTRING);
    level = PlayerInfo[id][pLevel] * 1500;
    format(ALLSTRING,sizeof(ALLSTRING),"STVO Missachtung: %d",level);
    SendClientMessage(playerid, COLOR_GREEN, ALLSTRING);
    return 1;
    }


    SSCANF CODE (Geht nicht)


    benutze die sscanf2 include .. Weil die sscanf auch nicht funktioniert hatte hatte ich sscanf2 probiert.

  • Joa, ok habe es zurzeit mit den normalen sscanf (ohne plugin) gehts auch nichtmehr meine Definition von SSCANF:


    stock sscanf(string[], format[], {Float,_}:...)
    {
    new
    formatPos = 0,
    stringPos = 0,
    paramPos = 2,
    paramCount = numargs();
    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 (ch >= '0' && ch <= '9')
    {
    num = (num * 10) + (ch - '0');
    }
    else
    {
    return 1;
    }
    }
    while ((ch = string[stringPos]) && ch != ' ');
    setarg(paramPos, 0, num * neg);
    }
    case 'h', 'x':
    {
    new
    ch,
    num = 0;
    while ((ch = string[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));
    }
    case ' ':
    {
    break;
    }
    default:
    {
    return 1;
    }
    }
    }
    setarg(paramPos, 0, num);
    }
    case 'c':
    {
    setarg(paramPos, 0, string[stringPos++]);
    }
    case 'f':
    {
    new tmp[25];
    strmid(tmp, string, stringPos, stringPos+sizeof(tmp)-2);
    setarg(paramPos, 0, _:floatstr(tmp));
    }
    case 's', 'z':
    {
    new
    i = 0,
    ch;
    if (format[formatPos])
    {
    while ((ch = string[stringPos++]) && ch != ' ')
    {
    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] != ' ')
    {
    stringPos++;
    }
    while (string[stringPos] == ' ')
    {
    stringPos++;
    }
    paramPos++;
    }
    while (format[formatPos] == 'z') formatPos++;
    return format[formatPos];
    }


    Bringt sowieso nichts weils an den nicht liegt ;) habe, alle strings durchgesucht.