#include #include #include #include #define COLOR_GREY 0xAFAFAFAA #define COLOR_LIGHTRED 0xFF6347AA new PKicks[MAX_PLAYERS], PWarns[MAX_PLAYERS], PBanned[MAX_PLAYERS], PBanReason[MAX_PLAYERS][50]; CMD:kick(playerid,params[]) { new string[256],id,name[10],reason[50]; if(sscanf(params,"us[10]s[50]",id,name,reason)) return SendClientMessage(playerid,COLOR_GREY,"[SYNTAX]:/kick [ID/PartOfName] [Shown Name] [Reason]"); if(!IsPlayerConnected(id) || id == INVALID_PLAYER_ID) return SendClientMessage(playerid,COLOR_GREY,"INVALID PLAYERID!"); format(string, sizeof(string), "SERVER: %s have been kicked by %s, reason: %s.",pName(id),name,reason); SendClientMessageToAll(COLOR_LIGHTRED,string); PKicks[id]++; Kick(playerid); return 1; } CMD:warn(playerid,params[]) { new string[256],id,name[10],reason[50]; if(sscanf(params,"us[10]s[50]",id,name,reason)) return SendClientMessage(playerid,COLOR_GREY,"[SYNTAX]:/warn [ID/PartOfName] [Shown Name] [Reason]"); if(!IsPlayerConnected(id) || id == INVALID_PLAYER_ID) return SendClientMessage(playerid,COLOR_GREY,"INVALID PLAYERID!"); if(PWarns[id] > 2) { format(string, sizeof(string), "SERVER: %s have been banned by %s, reason: 3 Warnings.",pName(id),name,reason); SendClientMessageToAll(COLOR_LIGHTRED,string); PBanned[id] = 1; format(PBanReason[playerid],128,"%s","3 Warnings"); BanEx(id,"3 Warnings"); return 0; } format(string, sizeof(string), "SERVER: %s have been warned by %s, reason: %s.",pName(id),name,reason); SendClientMessageToAll(COLOR_LIGHTRED,string); PWarns[playerid]++; return 1; } CMD:unwarn(playerid,params[]) { new string[256],id,name[10],reason[50]; if(sscanf(params,"us[10]s[50]",id,name,reason)) return SendClientMessage(playerid,COLOR_GREY,"[SYNTAX]:/warn [ID/PartOfName] [Shown Name] [Reason]"); if(!IsPlayerConnected(id) || id == INVALID_PLAYER_ID) return SendClientMessage(playerid,COLOR_GREY,"INVALID PLAYERID!"); if(!PWarns[id]) return SendClientMessage(playerid,COLOR_GREY,"This player have no warnings!"); format(string, sizeof(string), "SERVER: %s have been unwarned by %s, reason: %s.",pName(id),name,reason); SendClientMessageToAll(COLOR_LIGHTRED,string); PWarns[playerid]--; return 1; } CMD:ban(playerid,params[]) { new string[256],id,name[10],reason[50]; if(sscanf(params,"us[10]s[50]",id,name,reason)) return SendClientMessage(playerid,COLOR_GREY,"[SYNTAX]:/ban [ID/PartOfName] [Shown Name] [Reason]"); if(!IsPlayerConnected(id) || id == INVALID_PLAYER_ID) return SendClientMessage(playerid,COLOR_GREY,"INVALID PLAYERID!"); format(string, sizeof(string), "SERVER: %s have been banned by %s, reason: %s.",pName(id),name,reason); SendClientMessageToAll(COLOR_LIGHTRED,string); format(PBanReason[playerid],128,"%s",reason); PBanned[id] = 1; BanEx(id,reason); return 1; } CMD:unban(playerid,params[]) { new string[256],name[MAX_PLAYER_NAME],file[MAX_PLAYER_NAME+5]; if(sscanf(params,"s[MAX_PLAYER_NAME]",name)) return SendClientMessage(playerid,COLOR_GREY,"[SYNTAX]:/unban [PlayerName]"); format(file,sizeof(file),"%s.ini",name); if(!dini_Exists(file)) return SendClientMessage(playerid,COLOR_GREY,"Player file not exists!"); if(!dini_Int(file,"Banned")) return SendClientMessage(playerid,COLOR_GREY,"This player is not banned!"); dini_IntSet(file,"Banned",0); dini_Set(file,"BanReason","None"); format(string, sizeof(string), "SERVER: %s have been unbanned.",name); SendClientMessage(playerid,COLOR_LIGHTRED,string); return 1; } CMD:playerstats(playerid,params[]) { new string[256],id; if(sscanf(params,"u",id)) return SendClientMessage(playerid,COLOR_GREY,"[SYNTAX]:/playerstats [ID/PartOfName]"); if(!IsPlayerConnected(id) || id == INVALID_PLAYER_ID) return SendClientMessage(playerid,COLOR_GREY,"INVALID PLAYERID!"); format(string,sizeof(string),"|| Name: %s. || Warnings: %d. || Kicks: %d.",pName(id),PWarns[playerid],PKicks[playerid]); SendClientMessage(playerid,COLOR_LIGHTRED,string); return 1; } CMD:playerstats2(playerid,params[]) { new string[256],name[MAX_PLAYER_NAME]; if(sscanf(params,"s[MAX_PLAYER_NAME]",name)) return SendClientMessage(playerid,COLOR_GREY,"[SYNTAX]:/playerstats2 [Name]"); new file[MAX_PLAYER_NAME+5]; format(file,sizeof(file),"%s.ini",name); if(!dini_Exists(file)) return SendClientMessage(playerid,COLOR_GREY,"Player file not exists!"); format(string,sizeof(string),"|| Name: %s. || Warnings: %d. || Kicks: %d. || Banned: %d. || BanReason: %s.",name,dini_Int(file,"Warnings"),dini_Int(file,"Kicks"),dini_Int(file,"Banned"),dini_Get(file,"BanReason")); SendClientMessage(playerid,COLOR_LIGHTRED,string); return 1; } public OnPlayerConnect(playerid) { format(PBanReason[playerid],50,"%s","None"); PBanned[playerid] = 0; PKicks[playerid] = 0; PWarns[playerid] = 0; if(!dini_Exists(pFile(playerid))) { dini_Create(pFile(playerid)); dini_IntSet(pFile(playerid),"Banned",PBanned[playerid]); dini_Set(pFile(playerid),"BanReason","None"); dini_IntSet(pFile(playerid),"Kicks",PKicks[playerid]); dini_IntSet(pFile(playerid),"Warnings",PWarns[playerid]); } else { PBanned[playerid] = dini_Int(pFile(playerid),"Banned"); format(PBanReason[playerid],50,"%s",dini_Get(pFile(playerid),"BanReason")); PKicks[playerid] = dini_Int(pFile(playerid),"Kicks"); PWarns[playerid] = dini_Int(pFile(playerid),"Warnings"); if(PBanned[playerid] != 0) { new string[256]; format(string,sizeof(string),"SERVER: You are banned from this server, reason: %s.",PBanReason[playerid]); SendClientMessage(playerid,COLOR_LIGHTRED,string); Kick(playerid); return 0; } } return 1; } public OnPlayerDisconnect(playerid, reason) { if(dini_Exists(pFile(playerid))) { dini_IntSet(pFile(playerid),"Banned",PBanned[playerid]); dini_Set(pFile(playerid),"BanReason",PBanReason[playerid]); dini_IntSet(pFile(playerid),"Kicks",PKicks[playerid]); dini_IntSet(pFile(playerid),"Warnings",PWarns[playerid]); } return 1; } stock pName(playerid) { new name[MAX_PLAYER_NAME]; GetPlayerName(playerid, name, sizeof(name)); return name; } stock pFile(playerid) { new file[MAX_PLAYER_NAME+5]; format(file,sizeof(file),"%s.ini",pName(playerid)); return file; }