Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*x---------------------------------Important-------------------------------------x*/
- //**INCLUDES**//
- #include <a_samp>
- /*x---------------------------------Defining-------------------------------------x*/
- //**COLORS*//
- #define GREEN 0x21DD00FF
- #define RED 0xE60000FF
- #define ADMIN_RED 0xFB0000FF
- #define YELLOW 0xFFFF00FF
- #define ORANGE 0xF97804FF
- #define LIGHTRED 0xFF8080FF
- #define LIGHTBLUE 0x00C2ECFF
- #define PURPLE 0xB360FDFF
- #define PLAYER_COLOR 0xFFFFFFFF
- #define BLUE 0x1229FAFF
- #define LIGHTGREEN 0x38FF06FF
- #define DARKPINK 0xE100E1FF
- #define DARKGREEN 0x008040FF
- #define ANNOUNCEMENT 0x6AF7E1FF
- #define COLOR_SYSTEM 0xEFEFF7AA
- #define GREY 0xCECECEFF
- #define PINK 0xD52DFFFF
- #define DARKGREY 0x626262FF
- #define AQUAGREEN 0x03D687FF
- #define NICESKY 0x99FFFFAA
- #define WHITE 0xFFFFFFFF
- /*x---------------------------------CallBacks-------------------------------------x*/
- stock IsNumeric(const num[])
- {
- for (new i = 0, j = strlen(num); i < j; i++)
- if (num[i] > '9' || num[i] < '0')
- return 0;
- return 1;
- }
- ReturnUser(text[], playerid = INVALID_PLAYER_ID)
- {
- new pos = 0;
- while (text[pos] < 0x21)
- {
- if (text[pos] == 0) return INVALID_PLAYER_ID;
- pos++;
- }
- new userid = INVALID_PLAYER_ID;
- if (IsNumeric(text[pos]))
- {
- userid = strval(text[pos]);
- if (userid >=0 && userid < MAX_PLAYERS)
- {
- if(!IsPlayerConnected(userid))
- userid = INVALID_PLAYER_ID;
- else return userid;
- }
- }
- new len = strlen(text[pos]);
- new count = 0;
- new pname[MAX_PLAYER_NAME];
- for (new i = 0; i < MAX_PLAYERS; i++)
- {
- if (IsPlayerConnected(i))
- {
- GetPlayerName(i, pname, sizeof (pname));
- if (strcmp(pname, text[pos], true, len) == 0)
- {
- if (len == strlen(pname)) return i;
- else
- {
- count++;
- userid = i;
- }
- }
- }
- }
- if (count != 1)
- {
- if (playerid != INVALID_PLAYER_ID)
- {
- if (count) SendClientMessage(playerid, COLOR_SYSTEM, "There are multiple users, enter full playername.");
- else SendClientMessage(playerid, COLOR_SYSTEM, "Playername not found.");
- }
- userid = INVALID_PLAYER_ID;
- }
- return userid;
- }
- stock strtok(const str[], &index,seperator=' ')
- {
- new length = strlen(str);
- new offset = index;
- new result[128];
- while ((index < length) && (str[index] != seperator) && ((index - offset) < (sizeof(result) - 1)))
- {
- result[index - offset] = str[index];
- index++;
- }
- result[index - offset] = EOS;
- if ((index < length) && (str[index] == seperator))
- {
- index++;
- }
- return result;
- }
- stock SendClientMessageToAdmins(color, msg[])
- {
- new string[128];
- for(new i = 0; i < MAX_PLAYERS; i++)
- {
- if(IsPlayerConnected(i))
- {
- if (IsPlayerAdmin(i))
- {
- SendClientMessage(i, color, msg);
- printf("%s", string);
- }
- }
- }
- return 1;
- }
- stock bigstr(const string[], &idx)
- {
- new length = strlen(string);
- while ((idx < length) && (string[idx] <= ' '))
- {
- idx++;
- }
- new offset = idx;
- new result[128];
- while ((idx < length) && ((idx - offset) < (sizeof(result) - 1)))
- {
- result[idx - offset] = string[idx];
- idx++;
- }
- result[idx - offset] = EOS;
- return result;
- }
- public OnFilterScriptInit()
- {
- print("<|-----------------------------------------|>");
- print(" | .: [ - SeifAdmin Script by Seif - ] :. |");
- print("<|-----------------------------------------|>");
- if (!fexist("Bans.txt"))
- {
- new File:open = fopen("Bans.txt",io_write);
- if (open) fclose(open);
- }
- if (!fexist("TempBans.ban"))
- {
- new File:open = fopen("TempBans.ban",io_write);
- if (open) fclose(open);
- }
- return 1;
- }
- public OnPlayerConnect(playerid)
- {
- BanCheck(playerid);
- TempBanCheck(playerid);
- return 1;
- }
- public OnPlayerCommandText(playerid, cmdtext[])
- {
- new tmp[128],idx;
- new cmd[128];
- new name[MAX_PLAYER_NAME];
- new giveplayer[MAX_PLAYER_NAME];
- new giveplayerid;
- cmd = strtok(cmdtext,idx);
- if (strcmp(cmd,"/ban", true) == 0)
- {
- if (IsPlayerAdmin(playerid))
- {
- new reason[128],str[128],namez[24],name1[24];
- tmp = strtok(cmdtext,idx);
- if(!strlen(tmp))
- {
- SendClientMessage(playerid,ORANGE,"USAGE: /ban [name/ip] [reason]");
- SendClientMessage(playerid,ORANGE,"FUNCTION: Will ban the player's name/IP following by a reason. !! DO NOT ENTER THE ID !!");
- SendClientMessage(playerid,ORANGE,"HELP: Please enter a name or IP. If you're trying to execute a range ban...");
- SendClientMessage(playerid,ORANGE,"HELP: ...then make sure you got a valid player IP( /ip ) and replace some characters by * (NOT ALL)");
- return 1;
- }
- new length = strlen(cmdtext);
- while ((idx < length) && (cmdtext[idx] <= ' '))
- {
- idx++;
- }
- new offset = idx;
- while ((idx < length) && ((idx - offset) < (sizeof(reason) - 1)))
- {
- reason[idx - offset] = cmdtext[idx];
- idx++;
- }
- reason[idx - offset] = EOS;
- if(!strlen(reason))
- {
- SendClientMessage(playerid,ORANGE,"USAGE: /ban [name/ip] [reason]");
- SendClientMessage(playerid,RED,"ERROR: You must enter a reason for the ban!");
- return 1;
- }
- new File:file = fopen("Bans.txt",io_append);
- if (file)
- {
- format(str,128,"%s\r\n",tmp);
- fwrite(file,str);
- fclose(file);
- }
- new count = 0;
- new ip[15];
- for(new i=0;i<MAX_PLAYERS;i++)
- {
- if (IsPlayerConnected(i))
- {
- GetPlayerName(i,namez,24);
- GetPlayerName(playerid,name1,24);
- GetPlayerIp(i,ip,sizeof(ip));
- if (strcmp(tmp, namez,true)==0)
- {
- format(str,128,"|- Administrator %s banned %s. [Reason: %s] -|",name1,namez,reason);
- SendClientMessageToAll(ADMIN_RED,str);
- Kick(i);
- }
- else if(strcmp(tmp,ip,true)==0)
- {
- format(str,128,"|- Administrator %s banned %s. [Reason: %s] -|",name1,namez,reason);
- SendClientMessageToAll(ADMIN_RED,str);
- format(str,128,"|- Banned IP: [ %s ] -|",ip);
- SendClientMessageToAdmins(ADMIN_RED,str);
- Kick(i);
- }
- }
- else
- {
- GetPlayerIp(i,ip,sizeof(ip));
- if (!IsPlayerConnected(i) && strfind(tmp,".",true) != -1 && count == 0)
- {
- GetPlayerName(playerid,name1,24);
- format(str,128,"|- Banned IP: [ %s ] by %s. [Reason: %s] -|",tmp,name1,reason);
- SendClientMessageToAdmins(ADMIN_RED,str);
- }
- else if (!IsPlayerConnected(i) && count == 0)
- {
- for(new index = 1; index <= 128; index++)
- if (tmp[index] != '.')
- {
- GetPlayerName(playerid,name1,24);
- format(str,128,"|- Banned Name: [ %s ] by %s. [Reason: %s] -|",tmp,name1,reason);
- SendClientMessageToAdmins(ADMIN_RED,str);
- break;
- }
- }
- count++;
- }
- }
- }
- return true;
- }
- if (strcmp(cmd,"/idban", true) == 0)
- {
- if (IsPlayerAdmin(playerid))
- {
- new reason[128],targetid,target[MAX_PLAYER_NAME],str[128];
- tmp = strtok(cmdtext,idx);
- targetid = ReturnUser(tmp);
- if(!strlen(tmp))
- {
- SendClientMessage(playerid,ORANGE,"USAGE: /idban [partofname/id] [reason]");
- SendClientMessage(playerid,ORANGE,"FUNCTION: Will ban the player's IP following by a reason. ID supported and name supported only");
- return 1;
- }
- if (!IsPlayerConnected(targetid) || targetid == INVALID_PLAYER_ID) return SendClientMessage(playerid,RED,"ERROR: Invalid player or player not connected");
- new length = strlen(cmdtext);
- while ((idx < length) && (cmdtext[idx] <= ' '))
- {
- idx++;
- }
- new offset = idx;
- while ((idx < length) && ((idx - offset) < (sizeof(reason) - 1)))
- {
- reason[idx - offset] = cmdtext[idx];
- idx++;
- }
- reason[idx - offset] = EOS;
- if(!strlen(reason))
- {
- SendClientMessage(playerid,ORANGE,"USAGE: /idban [partofname/id] [reason]");
- SendClientMessage(playerid,RED,"ERROR: You must enter a reason for the ban!");
- return 1;
- }
- new ip[15];
- GetPlayerIp(targetid,ip,sizeof(ip));
- new File:file = fopen("Bans.txt",io_append);
- if (file)
- {
- format(str,128,"%s\r\n",ip);
- fwrite(file,str);
- fclose(file);
- }
- GetPlayerName(playerid,name,24);
- GetPlayerName(targetid,target,24);
- format(str,128,"|- Administrator %s banned %s. [Reason: %s] -|",name,target,reason);
- SendClientMessageToAll(ADMIN_RED,str);
- Kick(targetid);
- }
- return true;
- }
- if(strcmp(cmd, "/ip", true) == 0)
- {
- if (IsPlayerAdmin(playerid))
- {
- tmp = strtok(cmdtext,idx);
- if(!strlen(tmp))
- {
- SendClientMessage(playerid, ORANGE, "USAGE: /ip [playerid]");
- SendClientMessage(playerid, ORANGE, "FUNCTION: Will view a player's IP.");
- return 1;
- }
- giveplayerid = ReturnUser(tmp);
- new string[128];
- if(IsPlayerConnected(giveplayerid))
- {
- new ip[15];
- GetPlayerIp(giveplayerid,ip,15);
- GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
- format(string, sizeof(string), "-| %s's IP: %s |-", giveplayer,ip);
- SendClientMessage(playerid,LIGHTBLUE, string);
- }
- else
- {
- format(string, sizeof(string), "%d is not an active player.", giveplayerid);
- SendClientMessage(playerid, RED, string);
- }
- }
- else return SendClientMessage(playerid, RED, "You are not an admin.");
- return true;
- }
- if(strcmp(cmd, "/tempban", true) == 0)
- {
- if (IsPlayerAdmin(playerid))
- {
- tmp = strtok(cmdtext,idx);
- if(!strlen(tmp))
- {
- SendClientMessage(playerid, ORANGE, "USAGE: /tempban [playerid] [day] [reason]");
- SendClientMessage(playerid, ORANGE, "FUNCTION: Temporarily bans a player. You must enter the month, day and hour numbers. You set them, not add.");
- return 1;
- }
- giveplayerid = ReturnUser(tmp);
- new string[128];
- if(IsPlayerConnected(giveplayerid))
- {
- tmp = strtok(cmdtext, idx);
- if (!strlen(tmp)) return SendClientMessage(playerid, ORANGE, "USAGE: /tempban [playerid] [day] [reason]");
- new days = strval(tmp);
- new reason[128];
- reason = bigstr(cmdtext, idx);
- if (!strlen(reason)) return SendClientMessage(playerid, ORANGE, "USAGE: /tempban [playerid] [day] [REASON]");
- new ip[15];
- GetPlayerIp(giveplayerid,ip,15);
- GetPlayerName(playerid, name, sizeof name);
- GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
- new File:tempban = fopen("TempBans.ban", io_append);
- if (tempban)
- {
- new year,month,day;
- getdate(year, month, day);
- day += days;
- if (IsMonth31(month))
- {
- if (day > 31)
- {
- month += 1;
- if (month > 12)
- {
- year += 1;
- while(day > 31) day -= 31;
- }
- else while(day > 31) day -= 31;
- }
- }
- else if (!IsMonth31(month))
- {
- if (day > 30)
- {
- month += 1;
- if (month > 12)
- {
- year += 1;
- while(day > 30) day -= 30;
- }
- else while(day > 30) day -= 30;
- }
- }
- else if (!IsMonth31(month) && IsMonth29(year) && month == 2)
- {
- if (day > 29)
- {
- month += 1;
- if (month > 12)
- {
- year += 1;
- while(day > 29) day -= 29;
- }
- else while(day > 29) day -= 29;
- }
- }
- else if (!IsMonth31(month) && !IsMonth29(year) && month == 2)
- {
- if (day > 28)
- {
- month += 1;
- if (month > 12)
- {
- year += 1;
- while(day > 28) day -= 28;
- }
- else while(day > 28) day -= 28;
- }
- }
- format(string, sizeof string, "%d|%d|%d|%s\n", day, month, year, ip);
- fwrite(tempban, string);
- fclose(tempban);
- }
- format(string,128,"|- Administrator %s temporarily banned %s for %d day(s). [Reason: %s] -|",name,giveplayer,days,reason);
- SendClientMessageToAll(ADMIN_RED,string);
- Kick(giveplayerid);
- }
- else
- {
- format(string, sizeof(string), "%d is not an active player.", giveplayerid);
- SendClientMessage(playerid, RED, string);
- }
- }
- else return SendClientMessage(playerid, RED, "You are not an admin.");
- return true;
- }
- return false;
- }
- stock BanCheck(playerid)
- {
- new player[MAX_PLAYER_NAME];
- new ip[15];
- new ban[20];
- new ban2[20];
- new filestr[128];
- GetPlayerName(playerid, player, sizeof player);
- GetPlayerIp(playerid, ip, sizeof ip);
- format(ban,sizeof(ban),"%s",ip);
- strdel(ban,strlen(ban)-2,strlen(ban));
- format(ban2,128,"%s**",ban);
- new File:file = fopen("Bans.txt",io_read);
- if (file)
- {
- while(fread(file,filestr,sizeof(filestr)))
- {
- if (strfind(filestr, player, true) != -1 || strfind(filestr, ip, true) != -1 || strfind(filestr, ban2, true) != -1)
- {
- SendClientMessage(playerid, ADMIN_RED, "|- You are banned from this server -|");
- return Kick(playerid);
- }
- }
- }
- return true;
- }
- stock TempBanCheck(playerid)
- {
- new ip[15];
- new str[128];
- new load[4][32];
- new ban_day, ban_month, ban_year, ban_ip[15];
- GetPlayerIp(playerid, ip, sizeof ip);
- new year, month, day;
- getdate(year, month, day);
- new File:file = fopen("TempBans.ban",io_read);
- if (file)
- {
- while (fread(file, str, sizeof str))
- {
- split(str, load, '|');
- ban_day = strval(load[0]);
- ban_month = strval(load[1]);
- ban_year = strval(load[2]);
- strmid(ban_ip, load[3], 0, strlen(load[3])-1, 15);
- if (!(year >= ban_year && month >= ban_month && day >= ban_day && !strcmp(ban_ip, ip, true)))
- {
- format(str, sizeof str, "|- You are temporarily banned from this server until: %d/%d/%d -|", ban_day, ban_month, ban_year);
- SendClientMessage(playerid, ADMIN_RED, str);
- return Kick(playerid);
- }
- }
- }
- return true;
- }
- stock split(const strsrc[], strdest[][], delimiter)
- {
- new i, li;
- new aNum;
- new len;
- while(i <= strlen(strsrc)){
- if(strsrc[i]==delimiter || i==strlen(strsrc)){
- len = strmid(strdest[aNum], strsrc, li, i, 128);
- strdest[aNum][len] = 0;
- li = i+1;
- aNum++;
- }
- i++;
- }
- return 1;
- }
- stock IsMonth31(month)
- {
- switch (month)
- {
- case 1: return 1;
- case 3: return 1;
- case 5: return 1;
- case 7: return 1;
- case 8: return 1;
- case 10: return 1;
- case 12: return 1;
- default: return 0;
- }
- return 0;
- }
- stock IsMonth29(year)
- {
- new y = 2000;
- for(new i = 4; i < 3000; i += 4) if ((y+i) == year) return 1;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement