OKStyle

Serial ID Ban

Mar 31st, 2012
1,134
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <a_samp>
  2. // Ban Serial ID by O.K.Style™
  3. #define SERIAL_LENGTH 40
  4. /*
  5. add line: native gpci(playerid, serial[], len); to a_players.inc
  6. */
  7. public OnPlayerConnect(playerid)
  8. {
  9.     if(!fexist("SerialBans.txt")) return 1;
  10.     new serialid[164];
  11.     gpci(playerid, serialid, sizeof(serialid));
  12.     new File:sfile = fopen("SerialBans.txt", io_read);
  13.     if(sfile)
  14.     {
  15.         new banstr[512];
  16.         while(fread(sfile, banstr))
  17.         {
  18.             if(strfind(banstr, serialid) != -1)
  19.             {
  20.                 SendClientMessage(playerid, 0x6EF83CFF, "Ваш {FFFFFF}Serial ID {6EF83C}забанен на этом сервере.");
  21.                 Kick(playerid);
  22.             }
  23.         }
  24.         fclose(sfile);
  25.     }
  26.     return 1;
  27. }
  28. public OnPlayerCommandText(playerid, cmdtext[])
  29. {
  30.     new cmd[256], idx;
  31.     cmd = strtok(cmdtext, idx);
  32.    
  33.     if(strcmp(cmd, "/sban", true) == 0)
  34.     {
  35.         new tmp[30];
  36.         tmp = strtok(cmdtext, idx);
  37.         new targetid = strval(tmp);
  38.         new serial[164];
  39.         gpci(targetid, serial, sizeof(serial));
  40.         new File:sfile = fopen("SerialBans.txt", io_readwrite);
  41.         new sstring[162];
  42.         format(sstring, sizeof(sstring), "%s\n", serial);
  43.         fwrite(sfile, sstring);
  44.         fclose(sfile);
  45.         sstring[0] = EOS;
  46.         format(sstring, sizeof(sstring), "Вы забанили серийный номер {FFFFFF}%s", serial);
  47.         SendClientMessage(playerid, 0x6EF83CFF, sstring);
  48.         Kick(targetid);
  49.         return 1;
  50.     }
  51.     if(strcmp(cmd, "/sunban", true) == 0)
  52.     {
  53.         new tmp[30];
  54.         tmp = strtok(cmdtext, idx);
  55.         new serialid[164];
  56.         serialid = tmp;
  57.         if(!fexist("SerialBans.txt")) return SendClientMessage(playerid, 0x6EF83CFF, "На сервере нет забаненных {FFFFFF}Serial ID");
  58.         new File:sfile = fopen("SerialBans.txt", io_readwrite);
  59.         new banstr[512], templine[1024];
  60.         while(fread(sfile, banstr)) strcat(templine, banstr);
  61.         fclose(sfile);
  62.         new index = strfind(templine, serialid);
  63.         if(index == -1) return SendClientMessage(playerid, 0x6EF83CFF, "На этом сервере данный {FFFFFF}Serial ID {6EF83C}не забанен.");
  64.         strdel(templine, index, index + SERIAL_LENGTH);
  65.         sfile = fopen("SerialBans.txt", io_write);
  66.         fwrite(sfile, templine);
  67.         fclose(sfile);
  68.         SendClientMessage(playerid, 0x6EF83CFF, "Вы разабанили серийный номер:");
  69.         new sstring[128];
  70.         format(sstring, sizeof(sstring), "{FFFFFF}%s", serialid);
  71.         SendClientMessage(playerid, -1, sstring);
  72.         return 1;
  73.     }
  74.     if(strcmp(cmdtext, "/serials", true) == 0)
  75.     {
  76.         if(!fexist("SerialBans.txt")) return SendClientMessage(playerid, 0x6EF83CFF, "На сервере нет забаненных {FFFFFF}Serial ID");
  77.         new banstr[512], File:file = fopen("SerialBans.txt", io_read);
  78.         SendClientMessage(playerid, -1, "{6EF83C}Список забаненых серийных номеров:");
  79.         if(file)
  80.         {
  81.             fread(file, banstr);
  82.             fclose(file);
  83.             if(strlen(banstr) < 2) return SendClientMessage(playerid, 0xFFFFFFFF, "Список пуст");
  84.             file = fopen("SerialBans.txt", io_read);
  85.             while(fread(file, banstr)) SendClientMessage(playerid, 0xFFFFFFFF, banstr);
  86.             fclose(file);
  87.         }
  88.         return 1;
  89.     }
  90.     return 0;
  91. }
  92. stock strtok(const string[], &index)
  93. {
  94.     new length = strlen(string);
  95.     while ((index < length) && (string[index] <= ' ')) index++;
  96.     new offset = index, result[20];
  97.     while ((index < length) && (string[index] > ' ') && ((index - offset) < (sizeof(result) - 1)))
  98.     {
  99.         result[index - offset] = string[index];
  100.         index++;
  101.     }
  102.     result[index - offset] = EOS;
  103.     return result;
  104. }
RAW Paste Data