1. Šis tinklalapis naudoja slapukus. Tęsdami būvimą šiame tinklalapyje, jūs patvirtinate, jog sutinkate priimti slapukus. Sužinoti daugiau.

sscanf 2.0

Diskusija 'Papildiniai' skyriuje nuo Britas, Lapkritis 12, 2011.

  1. Britas

    Britas Gerai žinomas narys

    Užsiregistravęs:
    Balandis 26, 2011
    Pranešimai:
    2,616
    Taškai už trofėjus:
    893
    Lytis:
    Vyras
    Vietovė:
    Lithuania
    Pradžios puslapis:
    Įvertinimai:
    +303 / 0 / -0
    [glow=black,2,300]sscanf 2.0[/glow]

    Naudojimas:

    Pirmiausia įsirašant šį pluginą turėtumėt jį sujungti su modifikacija, taigi modifikacijos viršuje prirašome tokį kodą.
    Kodas (text):
    #include <sscanf2>
    Jog pasileistų serveris turėtumėte įrašyti šį pluginą ir jį įjungti server.cfb faile, prirašant tokią eilutę,
    Kodas (text):
    plugins sscanf
    šis kodas yra kas naudojate windows operacinę sistemą, o šis kodas
    Kodas (text):
    plugins sscanf.so
    yra skirtas linux operaciniai sistemai.

    Mažas pavizdys naudojant sscanf pluginą komandoje.
    Kodas (text):
    new Tekstas[20];
    if( sscanf(params, "s", Tekstas) ) return SendClientMessage(playerid,-1,"Naudojimas: /tekstas [tekstas]");
    Elementai:

    sscanf plugin'ų parsisiuntimas: http://dl.dropbox.com/u/21683085/sscanf.zip
     
  2. Haji

    Haji Moderatorius

    Užsiregistravęs:
    Kovas 14, 2011
    Pranešimai:
    353
    Taškai už trofėjus:
    131
    Įvertinimai:
    +0 / 0 / -0
    Ats: sscanf 2.0

    Man tai pakanka ir sscanf stock'o.
     
  3. Britas

    Britas Gerai žinomas narys

    Užsiregistravęs:
    Balandis 26, 2011
    Pranešimai:
    2,616
    Taškai už trofėjus:
    893
    Lytis:
    Vyras
    Vietovė:
    Lithuania
    Pradžios puslapis:
    Įvertinimai:
    +303 / 0 / -0
    Ats: sscanf 2.0

    Na taip, galima tiesiog ir tokį kodą įsidėt į serverį vietoj plugino viso.
    Kodas (text):
    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;
    }
     
  4. @Jonas

    @Jonas Aktyvus narys

    Užsiregistravęs:
    Kovas 26, 2011
    Pranešimai:
    198
    Taškai už trofėjus:
    118
    Įvertinimai:
    +24 / 0 / -0
    Ats: sscanf 2.0

    O po kuo jį dėt? Jis tinka ir linux ir windowsams?
     
  5. Britas

    Britas Gerai žinomas narys

    Užsiregistravęs:
    Balandis 26, 2011
    Pranešimai:
    2,616
    Taškai už trofėjus:
    893
    Lytis:
    Vyras
    Vietovė:
    Lithuania
    Pradžios puslapis:
    Įvertinimai:
    +303 / 0 / -0
  6. arman

    arman Gerai žinomas narys

    Užsiregistravęs:
    Kovas 15, 2011
    Pranešimai:
    1,027
    Taškai už trofėjus:
    313
    Lytis:
    Vyras
    Įvertinimai:
    +84 / 1 / -0
  7. Quiz

    Quiz Naujas narys

    Užsiregistravęs:
    Lapkritis 14, 2011
    Pranešimai:
    5
    Taškai už trofėjus:
    0
    Vietovė:
    Lietuva
    Įvertinimai:
    +0 / 0 / -0
    Ats: sscanf 2.0

    Ačiū arman. Pats šeip naudoju sscanf stocką daug paprasčiau ir nereikia tiek žaistis kaip su pluginais.
     
  8. SapDdteboypegt

    SapDdteboypegt Naujas narys

    Užsiregistravęs:
    Rugpjūtis 22, 2021
    Pranešimai:
    18
    Taškai už trofėjus:
    1
    Įvertinimai:
    +0 / 0 / -0
    Skype:

Dalintis šiuo puslapiu

Kraunama...