Доступ к архиву

Переход в группу "Пользователь"

300.00 ₽
Одноразовый платёж
Быстрый переход в группу "Пользователи", без надобности написания постов и ожидания.

Покупка дает возможность:
Быть полноправным участником форума
Нормальное копирование кода
Создавать темы
Скачивать файлы
Доступ к архиву Pawno-Info

Создаем бан на время

Статус
В этой теме нельзя размещать новые ответы.

Sanek_Matvienko

Компетентный
1. Вставляем в самое начало мода
Код:
#inculde <MxINI> 
#include <mxdate> 
// Для диалогов id меняйте на ваши свободные 
#define DIALOGUNBAN 1 // id дилога для высвечивания даты
Инклуд вы можете скачать тут
2. Ищем Stock и после всех,вставляем
Код:
stock GetBan(playerid) 
{ 
     new PlayerNick[MAX_PLAYER_NAME],string[255]; 
     GetPlayerName(playerid, PlayerNick, MAX_PLAYER_NAME); 
     format(string, sizeof(string), "banlist/%s.ini", PlayerNick); 
     if(fexist(string)) 
     { 
            new OpenBan = ini_openFile(string); 
            new bantime, unbantime, PlayerBan[MAX_PLAYER_NAME], reason[128]; 
            ini_getInteger(OpenBan, "BanTime", bantime); 
            ini_getInteger(OpenBan, "UnBanTime", unbantime); 
            ini_getString(OpenBan, "PlayerBan", PlayerBan); 
            ini_getString(OpenBan, "Reason", reason); 
            ini_closeFile(OpenBan); 
            if(gettime() >= unbantime) return UnBan(PlayerNick); 
            else 
            { 
                  format(string, sizeof(string), "\ 
                  Дата бана: %s\n\ 
                  Дата Разбана: %s\n\ 
                  Забанил: %s\n\ 
                  Причина бана: %s\n\ 
                  ", 
                  date("%dd.%mm.%yyyy в %hh:%ii:%ss",bantime), 
                  date("%dd.%mm.%yyyy в %hh:%ii:%ss",unbantime), 
                  PlayerBan,reason); 
                  ShowPlayerDialog(playerid,DIALOGUNBAN,0,"Вы забанены",string,"Выйти",""); 
                  return Kick(playerid); 
            }   
     } 
     else return true; 
} 

stock UnBan(playerid[]) 
{ 
     new string[64]; 
     format(string, sizeof(string), "banlist/%s.ini", playerid); 
     return fremove(string); 
} 

stock AddBan(player, playerid[], giveplayerid[], type = 1, chislo = 0, reason[]) 
{ 
     new totalban = 0; 
     switch(type) 
     { 
          case 1: totalban = 60*chislo; // минуты 
          case 2: totalban = 3600*chislo; // часы 
          case 3: totalban = 86400*chislo; // сутки 
          default: totalban = chislo; // секунды 
     } 
     new string[64]; 
     format(string, sizeof(string), "banlist/%s.ini", playerid); 
     new OpenBan = ini_createFile(string);  
     if(OpenBan < 0) ini_openFile(string);  
     ini_setInteger(OpenBan, "BanTime", gettime()); 
     ini_setInteger(OpenBan, "UnBanTime", gettime()+totalban); 
     ini_setString(OpenBan, "PlayerBan", giveplayerid); 
     ini_setString(OpenBan, "Reason", reason); 
     ini_closeFile(OpenBan); // Закрываем файл.   
     ShowPlayerDialog(player,DIALOGUNBAN,0,"Вы забанены","{FF0000}Вы забанены","Выйти","");  
     return Kick(player); 
}
3. В самое начало паблика OnPlayerConnect
Код:
GetBan(playerid);
4. Далее создадим команду бана и разбана
Код:
if(strcmp(cmd, "/ban", true) == 0) 
{ 
        tmp = strtok(cmdtext, idx); 
        if(!strlen(tmp)) return SendClientMessage(playerid, 0xFFFFFFFF, "USAGE: /ban [playerid] [type:(1-минуты)(2-часы)(3-дни)(другое секунды)] [число] [причина]"); 
        giveplayerid = strval(tmp); 
        tmp = strtok(cmdtext, idx); 
        if(!strlen(tmp)) return SendClientMessage(playerid, 0xFFFFFFFF, "USAGE: /ban [playerid] [type:(1-минуты)(2-часы)(3-дни)(другое секунды)] [число] [причина]"); 
        new type = strval(tmp); 
        tmp = strtok(cmdtext, idx); 
        if(!strlen(tmp)) return SendClientMessage(playerid, 0xFFFFFFFF, "USAGE: /ban [playerid] [type:(1-минуты)(2-часы)(3-дни)(другое секунды)] [число] [причина]"); 
        new chislo = strval(tmp); 
        if(PlayerInfo[playerid][pAdmin] >= 4) 
        { 
               if(giveplayerid != INVALID_PLAYER_ID) 
               { 
                      new length = strlen(cmdtext); 
                      while ((idx < length) && (cmdtext[idx] <= ' ')) idx++; 
                      new offset = idx; 
                      new result[64]; 
                      while ((idx < length) && ((idx - offset) < (sizeof(result) - 1))) 
                      { 
                             result[idx - offset] = cmdtext[idx]; 
                             idx++; 
                      } 
                      result[idx - offset] = EOS; 
                      if(!strlen(result)) return SendClientMessage(playerid, 0xFFFFFFFF, "USAGE: /ban [playerid] [type:(1-минуты)(2-часы)(3-дни)(другое секунды)] [число] [причина]"); 
                      new PlayerNick[MAX_PLAYER_NAME], PlayerBan[MAX_PLAYER_NAME]; 
                      GetPlayerName(playerid, PlayerNick, MAX_PLAYER_NAME); 
                      GetPlayerName(giveplayerid, PlayerBan, MAX_PLAYER_NAME); 
                      AddBan(giveplayerid, PlayerBan, PlayerNick, type, chislo, result); 
                      return true; 
               }//not connected 
        } 
        return true; 
}
5. Команда разбана,вставляем под команду бана
Код:
if(strcmp(cmd,"/unban",true)==0) 
{ 
        if(PlayerInfo[playerid][pAdmin] >= 8) 
        { 
               tmp = strtok(cmdtext,idx); 
               if(!strlen(tmp)) return SendClientMessage(playerid,COLOR_GRAD1,"/unban [players nick]"); 
               UnBan(tmp); 
        } 
        return true; 
}
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу