#tryinclude "a_samp.inc" #if !defined _samp_included #error Please place a_samp.inc library into your includes folder. #endif /* * Version: MPL 1.1 * * The contents of this file are subject to the Mozilla Public License Version * 1.1 (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" basis, * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License * for the specific language governing rights and limitations under the * License. * * The Original Code is the Spam Prevention System (Anti Spam) Version 1 * * The Initial Developer of the Original Code is Luka Pupak. * Portions created by the Initial Developer are Copyright (C) 2010 * the Initial Developer. All Rights Reserved. */ forward SPS_Remove_Messages_Limit(playerid); forward SPS_Unmute_Player(playerid); forward SPS_Reset_PVars(); // Define the mute time expressed in minutes #define PLAYER_MUTE_TIME_MINUTES (2) public SPS_Reset_PVars() { for(new i=0; i < MAX_PLAYERS; i++) { if(GetPVarType(i, "SPS Muted") != PLAYER_VARTYPE_NONE) { SetPVarInt(i, "SPS Muted", 0); } if(GetPVarType(i, "SPS Messages Sent") != PLAYER_VARTYPE_NONE) { SetPVarInt(i, "SPS Messages Sent", 0); } if(GetPVarType(i, "SPS Spam Warnings") != PLAYER_VARTYPE_NONE) { SetPVarInt(i, "SPS Spam Warnings", 0); } } return 1; } public OnFilterScriptInit() { CallLocalFunction("SPS_Reset_PVars", ""); return 1; } public OnFilterScriptExit() { CallLocalFunction("SPS_Reset_PVars", ""); return 1; } public OnPlayerText(playerid, text[]) { if(GetPVarInt(playerid, "SPS Muted") == 0) { SetPVarInt(playerid, "SPS Messages Sent", GetPVarInt(playerid, "SPS Messages Sent") + 1); SetTimerEx("SPS_Remove_Messages_Limit", 1500, 0, "i", playerid); if(GetPVarInt(playerid, "SPS Messages Sent") >= 4) { if(!(((GetPVarInt(playerid, "SPS Spam Warnings") + 2) == 3))) { SendClientMessage(playerid, 0xD00000AA, "SERVER: Please, do not spam."); } SetPVarInt(playerid, "SPS Spam Warnings", GetPVarInt(playerid, "SPS Spam Warnings") + 1); } } else { SendClientMessage(playerid, 0xD00000AA, "SERVER: You are muted, you can't talk."); return 0; } return 1; } public SPS_Remove_Messages_Limit(playerid) { if(GetPVarInt(playerid, "SPS Spam Warnings") >= 2) { new string[128], pName[MAX_PLAYER_NAME]; GetPlayerName(playerid, pName, sizeof(pName)); format(string, sizeof(string), "SERVER: Player %s has been muted for %i minutes because of flooding the chat.", pName, PLAYER_MUTE_TIME_MINUTES); for(new i=0; i < MAX_PLAYERS; i++) if(IsPlayerConnected(i) && i != playerid) SendClientMessage(i, 0xD00000AA, string); format(string, sizeof(string), "SERVER: You have been muted for %i minutes because of flooding the chat.", PLAYER_MUTE_TIME_MINUTES); SendClientMessage(playerid, 0xD00000AA, string); SetTimerEx("SPS_Unmute_Player", (PLAYER_MUTE_TIME_MINUTES * 60000), 0, "i", playerid); SetPVarInt(playerid, "SPS Muted", 1); CallRemoteFunction("OnPlayerGetMuted", "i", playerid); } SetPVarInt(playerid, "SPS Messages Sent", 0); SetPVarInt(playerid, "SPS Spam Warnings", 0); return 1; } public SPS_Unmute_Player(playerid) { SendClientMessage(playerid, 0x28C900FF, "SERVER: You have been automatically unmuted."); SetPVarInt(playerid, "SPS Muted", 0); return 1; }