Jump to content

anti spam systeem


grandtheftauto...

Recommended Posts

hi ik wil een anti spam hebben.

Dus als je iets typt moet je 3 seconden wachten.

en als je eerder typt komt er: Wait ... seconds!

En als het je weer gebeurd moet bij iedereen staan: ... kicked [REASON: Spam]

Bedankt _O_

Link to comment
Delen op andere websites

is het niet zo dat als je een server maakt je het of zelf script, of je voor een team zorgt?

Want nu komt het over als "maak maar even dit en dit voor me"...

niet zo bedoeld maar ik heb soms van die mensen in me serverdie typen:

hi ik ben ...

hi ik ben ..

hi ik ben ...

hi ik ben....

en ik heb ook op google/forum samp gezocht maar vond niks

Link to comment
Delen op andere websites

Dit vond ik in een topic hier op het forum:

(Gepost door Sandra)

Sorry, ik had een foutje gemaakt in mijn script:

Verander de regel

if((lbc[playerid]-GetTickCount()) < 3000)

naar:

if((GetTickCount() - lbc[playerid]) < 3000)

Dan zou het moeten werken.

GetTickCount meet de tijd vanaf het moment dat de server is aangezet. Dus maak er zoiets van:

if((GetTickCount() - lbc[playerid]) < 5000) // verander lbc naar je eigen check
{
    SendClientMessage(playerid, COLOR_IDK,"You have to wait 5 seconds before you can speak in that channel!");
    return 1;
}

Hier heb je de link naar de SAMP-wiki page over GetTickCount

Suc6!

Bewerkt: door sean5874
Link to comment
Delen op andere websites

Dit vond ik in een topic hier op het forum:

(Gepost door Sandra)

Sorry, ik had een foutje gemaakt in mijn script:

Verander de regel

if((lbc[playerid]-GetTickCount()) < 3000)

naar:

if((GetTickCount() - lbc[playerid]) < 3000)

Dan zou het moeten werken.

GetTickCount meet de tijd vanaf het moment dat de server is aangezet. Dus maak er zoiets van:

if((GetTickCount() - lbc[playerid]) < 5000) // verander lbc naar je eigen check
{
    SendClientMessage(playerid, COLOR_IDK,"You have to wait 5 seconds before you can speak in that channel!");
    return 1;
}

Hier heb je de link naar de SAMP-wiki page over GetTickCount

Suc6!

ty

Link to comment
Delen op andere websites

Dat is volgens mij niet zo handig voor een anti-spam. Drie seconden wachten voor je weer iets mag zeggen is in sommige gevallen niet zo handig.

Je kan het (naar mijn mening) beter zo doen:

new LastMessage[MAX_PLAYERS][128];
new SpamWarning[MAX_PLAYERS];
new msg[128];

public OnPlayerText(playerid, text[])
{
   if(!strlen(LastMessage[playerid])) return 1; // check of het laatste bericht niet leeg was, anders werkt strcmp niet.
   if(strcmp(text, LastMessage[playerid], true)) return 1; // Als het bericht anders is mag het er door.

   SendClientMessage(playerid, COLOR_RED, "SERVER: Don't spam the chat please! You have recieved a warning!");
   SpamWarning[playerid]++;

   if(SpamWarning[playerid] >= 3)
   {
       new pname[24]; GetPlayerName(playerid, pname, sizeof(pname));
       format(msg, sizeof(msg), "SERVER: %s (id:%i) has been kicked for: Spamming the chat.", pname, playerid);
       SendClientMessageToAll(COLOR_WHITE, msg);
       Kick(playerid);
       SpamWarning[playerid] = 0;
   }
   return 0;
}

Link to comment
Delen op andere websites

Niet dat ik het systeem van Big Boss wil afbreken, maar...

Maar het systeem van Big Boss ook 2 grote nadelen:

  • Het verbruikt MAX_PLAYERS * 128 bytes (Het kan meer zijn, want ik ken de grote niet van zo een variabele in Pawno)(en eigenlijk zou ik ook nog de variabele SpamWarning en msg moeten meetellen)
    van je RAM geheugen, dus stel nu dat je een server hebt waar max 200 mensen op kunnen, dan heb je een continu extra verbruik van 25600 Bytes.
  • Het anti-spam systeem kan worden omgezeild door steeds 1 teken te veranderen, bijvoorbeeld:

Kom naar mijn server!!!

Kom naar mijn server!!

Kom naar mijn server!!!

Dit kan zo oneindig veel worden herhaalt...

Het verschil is dat er een laatste '!' ontbreekt bij het ene voorbeeld.

BTW: 123 Posts, lol.

Bewerkt: door GTAguillaume
Link to comment
Delen op andere websites

Dat is volgens mij niet zo handig voor een anti-spam. Drie seconden wachten voor je weer iets mag zeggen is in sommige gevallen niet zo handig.

Je kan het (naar mijn mening) beter zo doen:

new LastMessage[MAX_PLAYERS][128];
new SpamWarning[MAX_PLAYERS];
new msg[128];

public OnPlayerText(playerid, text[])
{
   if(!strlen(LastMessage[playerid])) return 1; // check of het laatste bericht niet leeg was, anders werkt strcmp niet.
   if(strcmp(text, LastMessage[playerid], true)) return 1; // Als het bericht anders is mag het er door.

   SendClientMessage(playerid, COLOR_RED, "SERVER: Don't spam the chat please! You have recieved a warning!");
   SpamWarning[playerid]++;

   if(SpamWarning[playerid] >= 3)
   {
       new pname[24]; GetPlayerName(playerid, pname, sizeof(pname));
       format(msg, sizeof(msg), "SERVER: %s (id:%i) has been kicked for: Spamming the chat.", pname, playerid);
       SendClientMessageToAll(COLOR_WHITE, msg);
       Kick(playerid);
       SpamWarning[playerid] = 0;
   }
   return 0;
}

ty

Link to comment
Delen op andere websites

Een reactie plaatsen

Je kan nu een reactie plaatsen en pas achteraf registreren. Als je al lid bent, log eerst in om met je eigen account een reactie te plaatsen.

Gast
Op dit onderwerp reageren...

×   Je hebt text geplaatst met opmaak.   Opmaak verwijderen

  Only 75 emoji are allowed.

×   Je link is automatisch ingevoegd.   In plaats daarvan weergeven als link

×   Je vorige bewerkingen zijn hersteld.   Alles verwijderen

×   You cannot paste images directly. Upload or insert images from URL.

  • Recent actief   0 leden

    • Er zijn hier geen geregistreerde gebruikers aanwezig.
×
×
  • Create New...