Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include a_samp
- #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))
- #define dial_warn_all 6847
- #define dial_warn_opt 6848
- #define dial_warn_add 6849
- new warnedPlayers[MAX_PLAYERS][500];
- ///====================================================> ON FILTER SCRIPT INIT <
- public OnFilterScriptInit(){
- print("\n <<===========================>> ");
- print(" << Warning FS by frog163 >> ");
- print(" <<===========================>> \n ");
- return true;
- }
- ///===================================================> ON PLAYER COMMAND TEXT <
- public OnPlayerCommandText(playerid, cmdtext[]){
- new cmd[144];
- sparam(cmd, sizeof(cmd), cmdtext);
- if(!strcmp(cmd, "/allwarn", true)){//посмотреть список игроков с варнами
- //if(PlayerInfo[playerid][pAdmin] < 5) return SendClientMessage(playerid, COLOR_RED, "Вы не уполномочены использовать эту команду!");
- if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, -1, "{d10000}Вы не уполномочены использовать эту команду!");
- new all_warned, f_warns, str[500], f_name[40];
- for(new f = MAX_PLAYERS-1; f != -1; f--){
- if(!IsPlayerConnected(f))continue;
- f_warns = GetPVarInt(f, "f_Warns");
- if(f_warns > 0){
- warnedPlayers[playerid][all_warned] = f;
- all_warned++;
- GetPlayerName(f, f_name, sizeof(f_name));
- format(str, sizeof(str), "%s{d1d100}%d{d1d1d1}. {21d121}%s(%d) {d1d1d1}| Варнов: {d10000}%d\n", str, all_warned, f_name, f, f_warns);
- }
- }
- if(all_warned != 0){
- format(f_name, sizeof(f_name), "{d10000}%d {d1d1d1}игрок%s с варнами:", all_warned, GetTrueEnd(all_warned,"","а","ов"));
- ShowPlayerDialog(playerid, dial_warn_all, DIALOG_STYLE_LIST, f_name, str, "Изменить", "Okay");
- }else return SendClientMessage(playerid, -1, "{d1d1d1}Нет игроков с Варнами");
- return true;
- }else if(!strcmp(cmd, "/warn", true)){//дать варн игроку
- //if(PlayerInfo[playerid][pAdmin] < 5) return SendClientMessage(playerid, COLOR_RED, "Вы не уполномочены использовать эту команду!");
- if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, -1, "{d10000}Вы не уполномочены использовать эту команду!");
- sparam(cmd, sizeof(cmd), cmdtext, 1);
- if(!IsNumeric(cmd))return SendClientMessage(playerid, -1, "{d10000}Неверный id игрока! {d1d1d1}/warn [playerid] [reason]");
- new player = strval(cmd);
- if(!IsPlayerConnected(player))return SendClientMessage(playerid, -1, "{d10000}Игрока не существует!");
- sparam(cmd, sizeof(cmd), cmdtext, 2, ' ', 1);
- if(!strlen(cmd))return SendClientMessage(playerid, -1, "{d10000}Введите причину! {d1d1d1}/warn [playerid] [reason]");
- new str[100];
- GetPlayerName(player, str, sizeof(str));
- format(str, sizeof(str), "{d1d100}Вы дали игроку %s варн, по причине: %s", str, cmd);
- SendClientMessage(playerid, -1, str);
- GetPlayerName(playerid, str, sizeof(str));
- format(str, sizeof(str), "{d1d100}Администратор %s выдал вам варн, по причине: %s", str, cmd);
- SendClientMessage(playerid, -1, str);
- SetPVarInt(player, "f_Warns", GetPVarInt(player, "f_Warns")+1);
- return true;
- }else if(!strcmp(cmd, "/dewarn", true)){//обнулить варны игрока
- //if(PlayerInfo[playerid][pAdmin] < 5) return SendClientMessage(playerid, COLOR_RED, "Вы не уполномочены использовать эту команду!");
- if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, -1, "{d10000}Вы не уполномочены использовать эту команду!");
- sparam(cmd, sizeof(cmd), cmdtext, 1);
- if(!IsNumeric(cmd))return SendClientMessage(playerid, -1, "{d10000}Неверный id игрока! {d1d1d1}/dewarn [playerid]");
- new player = strval(cmd);
- if(!IsPlayerConnected(player))return SendClientMessage(playerid, -1, "{d10000}Игрока не существует!");
- new f_warns = GetPVarInt(player, "f_Warns");
- if(f_warns == 0)return SendClientMessage(playerid, -1, "{d10000}У игрока нет предупреждений!");
- new str[100];
- GetPlayerName(player, str, sizeof(str));
- format(str, sizeof(str), "{00d100}Вы сняли игроку %s все варны!", str);
- SendClientMessage(playerid, -1, str);
- GetPlayerName(playerid, str, sizeof(str));
- format(str, sizeof(str), "{00d100}Администратор %s снял вам все варны!", str);
- SendClientMessage(player, -1, str);
- SetPVarInt(player, "f_Warns", 0);
- return true;
- }
- return SendClientMessage(playerid, -1, "{d1d1d1}Команды не существует!");
- }
- ///======================================================> ON DIALOG RESPONSE <
- public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]){
- if(dialogid == dial_warn_all){
- if(!response)return true;
- new str[100], f_warns = GetPVarInt(warnedPlayers[playerid][listitem], "f_Warns");
- GetPlayerName(warnedPlayers[playerid][listitem], str, sizeof(str));
- SetPVarInt(playerid, "f_WarnedPlayerID", warnedPlayers[playerid][listitem]);
- SetPVarString(playerid, "f_WarnedPlayerName", str);
- format(str, sizeof(str), "Игрок %s, %d варн%s", str, f_warns, GetTrueEnd(f_warns,"","а","ов"));
- ShowPlayerDialog(playerid, dial_warn_opt, DIALOG_STYLE_LIST, str, "{00d100}Снять\n{d10000}Добавить", "Далее", "Назад");
- return true;
- }else if(dialogid == dial_warn_opt){
- if(!response)return CallLocalFunction("OnPlayerCommandText", "is", playerid, "/warnsall");
- new str[100], player = GetPVarInt(playerid, "f_WarnedPlayerID");
- GetPVarString(playerid, "f_WarnedPlayerName", str, sizeof(str));
- switch(listitem){
- case 0:{
- format(str, sizeof(str), "/dewarn %d", player);
- return CallLocalFunction("OnPlayerCommandText", "is", playerid, str);
- }
- case 1:{
- format(str, sizeof(str), "{d10000}Добавить варн игроку %s", str);
- return ShowPlayerDialog(playerid, dial_warn_add, DIALOG_STYLE_INPUT, str, "{d1d1d1}Укажите причину:", "Далее", "Назад");
- }
- }
- return true;
- }else if(dialogid == dial_warn_add){
- new str[100], player = GetPVarInt(playerid, "f_WarnedPlayerID");
- GetPVarString(playerid, "f_WarnedPlayerName", str, sizeof(str));
- if(!response){
- new f_warns = GetPVarInt(player, "f_Warns");
- format(str, sizeof(str), "Игрок %s, %d варн%s", str, f_warns, GetTrueEnd(f_warns,"","а","ов"));
- return ShowPlayerDialog(playerid, dial_warn_opt, DIALOG_STYLE_LIST, str, "{00d100}Снять\n{d10000}Добавить", "Далее", "Назад");
- }
- if(!strlen(inputtext)){
- format(str, sizeof(str), "{d10000}Добавить варн игроку %s", str);
- return ShowPlayerDialog(playerid, dial_warn_add, DIALOG_STYLE_INPUT, str, "{d1d1d1}Укажите причину:", "Далее", "Назад");
- }
- format(str, sizeof(str), "/warn %d %s", player, inputtext);
- return CallLocalFunction("OnPlayerCommandText", "is", playerid, str);
- }
- //
- return false;
- }
- ///=========================================================> OTHER FUNCTIONS <
- IsNumeric(text[]){
- new f = strlen(text);
- if(!f)return false;
- f--;
- for(; f != -1; f--)
- if(0x30 <= text[f] <= 0x39)continue;
- else return false;
- return true;
- }
- sparam(dest[], maxSize = sizeof(dest), const source[], substrIndex = 0, delimiter = ' ', withRest = 0){
- dest[0] = 0x0;
- for(new cur, pre, i = -1; ; cur++){
- if(source[cur] == 0){
- if(++i == substrIndex)strmid(dest, source, pre, (withRest?strlen(source):cur), maxSize);
- goto sparam_end;
- }
- if(source[cur] == delimiter ){
- if(++i == substrIndex ){
- strmid(dest, source, pre, (withRest?strlen(source):cur), maxSize);
- goto sparam_end;
- }
- pre = cur + 1;
- }
- }
- sparam_end:
- return;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement