Advertisement
frog163

WarnSystem

Oct 12th, 2012
112
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include a_samp
  2.  
  3. #define GetTrueEnd(%1,%2,%3,%4) ((%1)%(10)==1&&(%1)%(100)!=11?(%2):(%1)%(10)>=2&&(%1)%(10)<=4&&((%1)%(100)<10||(%1)%(100)>=20)?(%3):(%4))
  4.  
  5. #define dial_warn_all       6847
  6. #define dial_warn_opt       6848
  7. #define dial_warn_add       6849
  8.  
  9. new warnedPlayers[MAX_PLAYERS][500];
  10.  
  11. ///====================================================> ON FILTER SCRIPT INIT <
  12. public OnFilterScriptInit(){
  13.     print("\n   <<===========================>> ");
  14.     print(" <<    Warning FS by frog163  >>     ");
  15.     print(" <<===========================>> \n  ");
  16.     return true;
  17. }
  18. ///===================================================> ON PLAYER COMMAND TEXT <
  19. public OnPlayerCommandText(playerid, cmdtext[]){
  20.     new cmd[144];
  21.     sparam(cmd, sizeof(cmd), cmdtext);
  22.    
  23.     if(!strcmp(cmd, "/allwarn", true)){//посмотреть список игроков с варнами
  24.         //if(PlayerInfo[playerid][pAdmin] < 5) return SendClientMessage(playerid, COLOR_RED, "Вы не уполномочены использовать эту команду!");
  25.         if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, -1, "{d10000}Вы не уполномочены использовать эту команду!");
  26.         new all_warned, f_warns, str[500], f_name[40];
  27.         for(new f = MAX_PLAYERS-1; f != -1; f--){
  28.             if(!IsPlayerConnected(f))continue;
  29.             f_warns = GetPVarInt(f, "f_Warns");
  30.             if(f_warns > 0){
  31.                 warnedPlayers[playerid][all_warned] = f;
  32.                 all_warned++;
  33.                 GetPlayerName(f, f_name, sizeof(f_name));
  34.                 format(str, sizeof(str), "%s{d1d100}%d{d1d1d1}. {21d121}%s(%d) {d1d1d1}| Варнов: {d10000}%d\n", str, all_warned, f_name, f, f_warns);
  35.             }
  36.         }
  37.         if(all_warned != 0){
  38.             format(f_name, sizeof(f_name), "{d10000}%d {d1d1d1}игрок%s с варнами:", all_warned, GetTrueEnd(all_warned,"","а","ов"));
  39.             ShowPlayerDialog(playerid, dial_warn_all, DIALOG_STYLE_LIST, f_name, str, "Изменить", "Okay");
  40.         }else return SendClientMessage(playerid, -1, "{d1d1d1}Нет игроков с Варнами");
  41.         return true;
  42.     }else if(!strcmp(cmd, "/warn", true)){//дать варн игроку
  43.         //if(PlayerInfo[playerid][pAdmin] < 5) return SendClientMessage(playerid, COLOR_RED, "Вы не уполномочены использовать эту команду!");
  44.         if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, -1, "{d10000}Вы не уполномочены использовать эту команду!");
  45.         sparam(cmd, sizeof(cmd), cmdtext, 1);
  46.         if(!IsNumeric(cmd))return SendClientMessage(playerid, -1, "{d10000}Неверный id игрока! {d1d1d1}/warn [playerid] [reason]");
  47.         new player = strval(cmd);
  48.         if(!IsPlayerConnected(player))return SendClientMessage(playerid, -1, "{d10000}Игрока не существует!");
  49.         sparam(cmd, sizeof(cmd), cmdtext, 2, ' ', 1);
  50.         if(!strlen(cmd))return SendClientMessage(playerid, -1, "{d10000}Введите причину! {d1d1d1}/warn [playerid] [reason]");
  51.         new str[100];
  52.         GetPlayerName(player, str, sizeof(str));
  53.         format(str, sizeof(str), "{d1d100}Вы дали игроку %s варн, по причине: %s", str, cmd);
  54.         SendClientMessage(playerid, -1, str);
  55.         GetPlayerName(playerid, str, sizeof(str));
  56.         format(str, sizeof(str), "{d1d100}Администратор %s выдал вам варн, по причине: %s", str, cmd);
  57.         SendClientMessage(playerid, -1, str);
  58.         SetPVarInt(player, "f_Warns", GetPVarInt(player, "f_Warns")+1);
  59.         return true;
  60.     }else if(!strcmp(cmd, "/dewarn", true)){//обнулить варны игрока
  61.         //if(PlayerInfo[playerid][pAdmin] < 5) return SendClientMessage(playerid, COLOR_RED, "Вы не уполномочены использовать эту команду!");
  62.         if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, -1, "{d10000}Вы не уполномочены использовать эту команду!");
  63.         sparam(cmd, sizeof(cmd), cmdtext, 1);
  64.         if(!IsNumeric(cmd))return SendClientMessage(playerid, -1, "{d10000}Неверный id игрока! {d1d1d1}/dewarn [playerid]");
  65.         new player = strval(cmd);
  66.         if(!IsPlayerConnected(player))return SendClientMessage(playerid, -1, "{d10000}Игрока не существует!");
  67.         new f_warns = GetPVarInt(player, "f_Warns");
  68.         if(f_warns == 0)return SendClientMessage(playerid, -1, "{d10000}У игрока нет предупреждений!");
  69.         new str[100];
  70.         GetPlayerName(player, str, sizeof(str));
  71.         format(str, sizeof(str), "{00d100}Вы сняли игроку %s все варны!", str);
  72.         SendClientMessage(playerid, -1, str);
  73.         GetPlayerName(playerid, str, sizeof(str));
  74.         format(str, sizeof(str), "{00d100}Администратор %s снял вам все варны!", str);
  75.         SendClientMessage(player, -1, str);
  76.         SetPVarInt(player, "f_Warns", 0);
  77.         return true;
  78.     }
  79.     return SendClientMessage(playerid, -1, "{d1d1d1}Команды не существует!");
  80. }
  81. ///======================================================> ON DIALOG RESPONSE <
  82. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]){
  83.     if(dialogid == dial_warn_all){
  84.         if(!response)return true;
  85.         new str[100], f_warns = GetPVarInt(warnedPlayers[playerid][listitem], "f_Warns");
  86.         GetPlayerName(warnedPlayers[playerid][listitem], str, sizeof(str));
  87.         SetPVarInt(playerid, "f_WarnedPlayerID", warnedPlayers[playerid][listitem]);
  88.         SetPVarString(playerid, "f_WarnedPlayerName", str);
  89.         format(str, sizeof(str), "Игрок %s, %d варн%s", str, f_warns, GetTrueEnd(f_warns,"","а","ов"));
  90.         ShowPlayerDialog(playerid, dial_warn_opt, DIALOG_STYLE_LIST, str, "{00d100}Снять\n{d10000}Добавить", "Далее", "Назад");
  91.         return true;
  92.     }else if(dialogid == dial_warn_opt){
  93.         if(!response)return CallLocalFunction("OnPlayerCommandText", "is", playerid, "/warnsall");
  94.         new str[100], player = GetPVarInt(playerid, "f_WarnedPlayerID");
  95.         GetPVarString(playerid, "f_WarnedPlayerName", str, sizeof(str));
  96.         switch(listitem){
  97.             case 0:{
  98.                 format(str, sizeof(str), "/dewarn %d", player);
  99.                 return CallLocalFunction("OnPlayerCommandText", "is", playerid, str);
  100.             }
  101.             case 1:{
  102.                 format(str, sizeof(str), "{d10000}Добавить варн игроку %s", str);
  103.                 return ShowPlayerDialog(playerid, dial_warn_add, DIALOG_STYLE_INPUT, str, "{d1d1d1}Укажите причину:", "Далее", "Назад");
  104.             }
  105.         }
  106.         return true;
  107.     }else if(dialogid == dial_warn_add){
  108.         new str[100], player = GetPVarInt(playerid, "f_WarnedPlayerID");
  109.         GetPVarString(playerid, "f_WarnedPlayerName", str, sizeof(str));
  110.         if(!response){
  111.             new f_warns = GetPVarInt(player, "f_Warns");
  112.             format(str, sizeof(str), "Игрок %s, %d варн%s", str, f_warns, GetTrueEnd(f_warns,"","а","ов"));
  113.             return ShowPlayerDialog(playerid, dial_warn_opt, DIALOG_STYLE_LIST, str, "{00d100}Снять\n{d10000}Добавить", "Далее", "Назад");
  114.         }
  115.         if(!strlen(inputtext)){
  116.             format(str, sizeof(str), "{d10000}Добавить варн игроку %s", str);
  117.             return ShowPlayerDialog(playerid, dial_warn_add, DIALOG_STYLE_INPUT, str, "{d1d1d1}Укажите причину:", "Далее", "Назад");
  118.         }
  119.         format(str, sizeof(str), "/warn %d %s", player, inputtext);
  120.         return CallLocalFunction("OnPlayerCommandText", "is", playerid, str);
  121.     }
  122.     //
  123.     return false;
  124. }
  125. ///=========================================================> OTHER FUNCTIONS <
  126. IsNumeric(text[]){
  127.     new f = strlen(text);
  128.     if(!f)return false;
  129.     f--;
  130.     for(; f != -1; f--)
  131.         if(0x30 <= text[f] <= 0x39)continue;
  132.         else return false;
  133.     return true;
  134. }
  135. sparam(dest[], maxSize = sizeof(dest), const source[], substrIndex = 0, delimiter  = ' ', withRest = 0){
  136.     dest[0] = 0x0;
  137.     for(new cur, pre, i = -1; ; cur++){
  138.         if(source[cur] == 0){
  139.             if(++i == substrIndex)strmid(dest, source, pre, (withRest?strlen(source):cur), maxSize);
  140.             goto sparam_end;
  141.         }
  142.         if(source[cur] == delimiter ){
  143.             if(++i == substrIndex ){
  144.                 strmid(dest, source, pre, (withRest?strlen(source):cur), maxSize);
  145.                 goto sparam_end;
  146.             }
  147.             pre = cur + 1;
  148.         }
  149.     }
  150.     sparam_end:
  151.     return;
  152. }
Advertisement
RAW Paste Data Copied
Advertisement