Skocz do zawartości
Dejv

Pomoc, plugin RegEX BY Koala.

Rekomendowane odpowiedzi

Witam wszystkich.

 

Mam problem z pluginem w tytule tematu. Mianowicie, crashuje serwer.

 

Logi z crashdetecta:

[20:39:04] [debug] Server crashed while executing gPremium.amx
[20:39:04] [debug] AMX backtrace:
[20:39:04] [debug] #0 native regex_exmatch () from libRegEx_static.so
[20:39:04] [debug] #1 0001ae20 in public AntiAdvertisement (2511224) from gPremium.amx
[20:39:04] [debug] #2 000fa078 in public OnPlayerText (2, 2511224) from gPremium.amx
[20:39:04] [debug] Native backtrace:
[20:39:04] [debug] #0 f68efe8b in _ZN10StackTraceC1EPv () from plugins/crashdetect.so
[20:39:04] [debug] #1 f68e8bcf in _ZN11CrashDetect20PrintNativeBacktraceERSoPv () from plugins/crashdetect.so
[20:39:04] [debug] #2 f68e9dbc in _ZN11CrashDetect20PrintNativeBacktraceEPv () from plugins/crashdetect.so
[20:39:04] [debug] #3 f68ea226 in _ZN11CrashDetect11OnExceptionEPv () from plugins/crashdetect.so
[20:39:04] [debug] #4 f68efadc in ?? () from plugins/crashdetect.so
[20:39:04] [debug] #5 f7721410 in ?? ()
[20:39:04] [debug] #6 f692a2dd in ?? () from plugins/libRegEx_static.so
[20:39:04] [debug] #7 f692d937 in onig_match () from plugins/libRegEx_static.so

Kod w GameMode:

 

Funkcja:

function AntiAdvertisement(text[])//by koala
{
    #define strcpy(%0,%1,%2) strcat((%0[0] = '\0', %0), %1, %2)
    
    new message[128], build, expression[] = "(??:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.+){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)", start, end;
    strcpy(message, text, sizeof(message));

    for(new i = 0, j = strlen(message); i < j; i ++)
    {
        switch(message[i])
        {
            case '0'..'9': continue;
            case '.': continue;
            default:
            {
                strdel(message, i, i + 1);
                strins(message, ".", i);
            }
        }
    }

    build = regex_exbuild(expression);
    regex_exmatch(message, build);
    regex_exsearch(message, build, start, end);

    if(start >= 0) return true;
    
    return false;
}

Kod w OnPlayerText:

if(AntiAdvertisement(text))
	{
 	   	pInfo[playerid][pWarnIP] ++;
 	   	if(pInfo[playerid][pWarnIP] >= 3)
 	   	{
     		SendPlayerMessageAll(-1, "› {AE0000}%s ( %d ) został zbanowany przez serwer. Powód: Próba reklamy na chat.", pInfo[playerid][pName], playerid);

           	pInfo[playerid][pWarnIP] = 0;
			BanPlayer(playerid, "SERWER", pInfo[playerid][pIP], 1, "REKLAMA (chat)");
		}
		else
		   	SendPlayerMessage(playerid, -1, "› {AE0000}Nie możesz zareklamować IP, ostrzeżeń %d/3.", pInfo[playerid][pWarnIP]);

		return false;
	}

Dla tych którzy nie znają pluginu:

http://forum.sa-mp.com/showthread.php?t=526725

 

Proszę o pomoc, pozdrawiam :)

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
[20:38:53] [chat] [[GS]Coo]: w
[20:38:54] [chat] [Look]: a mi nie działa lolz XD
[20:38:59] [chat] [[GS]Coo]: ja tego nie widze
[20:39:04] [chat] [[GS]Coo]: ja nie mam /l
[20:39:04] [debug] Server crashed while executing gPremium.amx
[20:39:04] [debug] AMX backtrace:

To ostatnie wiadomości.

 

//Edit:

 

Zamienię na zwykły plugin regex, możliwe że ten ma błąd.

Można zamknąć ;)

Edytowane przez Dejv

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

  • Przeglądający   0 użytkowników

    Brak zarejestrowanych użytkowników przeglądających tę stronę.

×