fatal error 102: table overflow: "staging buffer"

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
  • Abend, ich brauch dringend hilfe...


    Ich bin gerade dabei ein Anti IP/Page zu erstellen,


    stock anty(string[])
    {
    if(strfind(string,"www.",true)!=-1 || strfind(string,"http://",true)!=-1 || strfind(string,".com",true)!=-1 || strfind(string,".net",true)!=-1 || strfind(string,"91.",true)!=-1 ||strfind(string,"195.",true)!=-1 || strfind(string,".pl",true)!=-1|| strfind(string,".org",true)!=-1||
    ....das geht hier mehrere zeilen lang..mit jeder zu erdenklichen zeug...
    return true;
    return false;
    }


    Doch ab einer bestimmten zeile zeigt er dan den fehler an "fatal error 102: table overflow: "staging buffer" heißt ja eigentlich das die zeile zu lang ist, aber giebt es was damit es trotzdem geht? weil ich weiß auch nicht wie ich das z.b in zwei stocks mache..


    Vielen Dank im voraus!

  • Schreibe das ganz alles ganz unten in dein Script, sollte soweit funzen ;)


    stock anty(string[])
    {
    if (!isnull (text))
    {
    new
    idx,
    i,
    ipstring [128],
    string [128],
    len = strlen (text);


    for (i = 0; i < len; ++i)
    if (text [i] != ' ')
    string [idx++] = text [i];


    if (!(len = strlen (string)))
    return false;


    if (!strfind (string, "www.", false) || !strfind (string, "http://", false) || !strfind (string, ".com", false) || !strfind (string, ".net", false)
    || !strfind (string, ".de", false) || !strfind (string, ".org", false) || !strfind (string, "|", false))
    return true;


    for (i = 0, idx = 0; i < len; ++i)
    {
    if (string [i] == ':')
    {
    ipstring [idx] = '\0';
    if (ipstring [0] && SplitIp (ipstring) != 0xFFFFFFFF)
    return true;
    idx = 0;
    ipstring [0] = '\0';
    }
    else if ('0' <= string [i] <= '9' || string [i] == '.')
    ipstring [idx++] = string [i];
    }


    ipstring [idx] = '\0';
    if (ipstring [0] && SplitIp (ipstring) != 0xFFFFFFFF)
    return true;
    }
    return false;
    }


    stock BytesToWord (byte0, byte1, byte2, byte3, &word, mode = 0)
    {
    switch (mode)
    {
    case 0:
    {
    new bytes [4 char]; // 4 char = 1
    bytes {0} = byte3;
    bytes {1} = byte2;
    bytes {2} = byte1;
    bytes {3} = byte0;
    word = bytes [0];
    }


    default:
    {
    word = byte0; // & 0xFF;
    word |= (byte1 << 8); // & 0xFF00;
    word |= (byte2 << 16); // & 0xFF0000;
    word |= (byte3 << 24); // & 0xFF000000;
    }
    }
    }
    stock SplitIp(ipstring [])
    {
    new
    j,
    bytes [4],
    word;


    for (new i = 0, len = strlen (ipstring); i < len; ++i)
    {
    if (j > 3)
    return 0xFFFFFFFF;


    if (ipstring [i] == ' ')
    continue;


    if (ipstring [i] == '*')
    bytes [j] = 0xFF;
    else if (ipstring [i] == '.')
    {
    ++j;
    }
    else if ('0' <= ipstring [i] <= '9')
    {
    bytes [j] = 10 * bytes [j] + ipstring [i] - '0';
    if (bytes [j] > 0xFF || bytes [j] < 0)
    return 0xFFFFFFFF;
    }
    else
    return 0xFFFFFFFF;
    }
    BytesToWord (bytes [0], bytes [1], bytes [2], bytes [3], word);
    return word;
    }


    mfg. :thumbup:

    ast2ufdyxkb1.png


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

  • "fatal error 102: table overflow: "staging buffer" heißt ja eigentlich das die zeile zu lang ist


    Nein, eine zu lange Zeile wäre, "inputline too long"


    Ich vermute einfach es sind zu viele funktionen in der if Abfrage.
    Funktioniert es so?
    new Check[][] =
    {
    "www.","http://",".com",".net","91.","195.",".pl",".org"
    };


    stock anty(string[])
    {
    for(new c = 0; c < sizeof(Check); c++)
    {
    if(strfind(string,Check[i],true)== 0)
    {
    return true;
    }
    }
    return false;
    }