grandtheftauto... Geplaatst: 13 februari 2010 Rapport Geplaatst: 13 februari 2010 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 Reageren
goudewup Geplaatst: 13 februari 2010 Rapport Geplaatst: 13 februari 2010 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"... Reageren
grandtheftauto... Geplaatst: 13 februari 2010 Auteur Rapport Geplaatst: 13 februari 2010 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 Reageren
sean5874 Geplaatst: 13 februari 2010 Rapport Geplaatst: 13 februari 2010 (bewerkt) 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: 13 februari 2010 door sean5874 Reageren
grandtheftauto... Geplaatst: 13 februari 2010 Auteur Rapport Geplaatst: 13 februari 2010 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 Reageren
Big Boss Geplaatst: 13 februari 2010 Rapport Geplaatst: 13 februari 2010 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; } Reageren
sean5874 Geplaatst: 13 februari 2010 Rapport Geplaatst: 13 februari 2010 Inderdaad, dat ziet er beter uit Reageren
GTAguillaume Geplaatst: 13 februari 2010 Rapport Geplaatst: 13 februari 2010 (bewerkt) 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: 13 februari 2010 door GTAguillaume Reageren
grandtheftauto... Geplaatst: 13 februari 2010 Auteur Rapport Geplaatst: 13 februari 2010 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 Reageren
Recommended Posts
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.