Jump to content
Geplaatst:
comment_1588415

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_

Featured Replies

Geplaatst:
  • Auteur
comment_1588501

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

Geplaatst:
comment_1588560

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

Geplaatst:
  • Auteur
comment_1588571

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

Geplaatst:
comment_1588694

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;
}

Geplaatst:
comment_1588784

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

Geplaatst:
  • Auteur
comment_1588828

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

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...

Recent actief 0

  • Er zijn hier geen geregistreerde gebruikers aanwezig.