Форум Pawn.Wiki - Воплоти мечту в реальность!: Бан на время с использованием unix времени - Форум Pawn.Wiki - Воплоти мечту в реальность!

Перейти к содержимому

  • (3 Страниц) +
  • 1
  • 2
  • 3
  • Вы не можете создать новую тему
  • Вы не можете ответить в тему

[ Scr ][ All ]
Бан на время с использованием unix времени
Оценка: -----

#1
Пользователь офлайн   Cris_Pro 

  • Хочу создать серверок..
  • Вставить ник
  • Раскрыть информацию
Бан на время с использованием Unix Времени + MxINI

Важно: создать папку в scriptfiles с названием banlist

Скачать инклуды можно тут:
- mxINI
- mxdate

Время перевода с Unix на нормальное настроенно на Московское

В начало мода вставляем если нету

#include <MxINI>
#include <mxdate>
// Для диалогов id меняйте на ваши свободные
#define DIALOGUNBAN 1 // id дилога для высвечивания даты  


Это в свободное место

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);
}  


Далее вставляем
GetBan(playerid); 


в начало паблика OnPlayerConnect

Далее создадим саму команду бана (оптимизируйте под себя её) сделал под GF
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;
}  


CMD:для разбана
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;
}  


Конец.
Если было то простите.
Если помог ставь +
Автор: Lik
13

#2
Пользователь офлайн   Rostislav74 

  • Новичок
  • Вставить ник
  • Раскрыть информацию
не могу себя забанить почему? пишу все и даже не чего не пишет в ответ!
0

#3
Пользователь офлайн   Rostislav74 

  • Новичок
  • Вставить ник
  • Раскрыть информацию
все у меня адм небыло
а как сделать чтоб все видели кто на сколько забанен?
0

#4
Пользователь офлайн   Cris_Pro 

  • Хочу создать серверок..
  • Вставить ник
  • Раскрыть информацию
по всем вопросам пишите мне в скайпе..
2

#5
Пользователь офлайн   Rostislav74 

  • Новичок
  • Вставить ник
  • Раскрыть информацию
А можно для начала скайп узнать?
0

#6
Пользователь офлайн   Erick 

  • Эксперт
  • Вставить ник
  • Раскрыть информацию
по всем вопросам пишите мне в скайпе..

Кристина, в теме пожалуйста отвечайте, так - как многих, может заинтересовать, данный вопрос!
0

#7
Пользователь офлайн   Rostislav74 

  • Новичок
  • Вставить ник
  • Раскрыть информацию
Да Да а то она вообще не смотрит сюда!
0

#8
Пользователь офлайн   Lwf 

  • Эксперт
  • Вставить ник
  • Раскрыть информацию

Просмотр сообщенияRostislav74 (01 января 2012 - 01:51) писал:

все у меня адм небыло
а как сделать чтоб все видели кто на сколько забанен?

Используй формат
			format(string, sizeof(string), "Игрок %s был забанен админом %s до %d Причина: %d", PlayerBan, PlayerNick, chislo, result);
        		SendClientMessageToAll(0xDEEE20FF,string);

Это в команду /ban перед
                     AddBan(giveplayerid, PlayerBan, PlayerNick, type, chislo, result);

Сообщение отредактировал Slaer: 03 января 2012 - 09:30

0

#9
Пользователь офлайн   Shocker88 

  • Новичок
  • Вставить ник
  • Раскрыть информацию
помогите у меня после токо как вставил. pawno комплиирует файл amx с 0кбай
0

#10
Пользователь офлайн   Jake_Tyler 

  • Местный
  • Вставить ник
  • Раскрыть информацию
конкретно куда это GetBan(playerid); ??? почему не более понятно объесняешь а?
-3

Поделиться темой:


  • (3 Страниц) +
  • 1
  • 2
  • 3
  • Вы не можете создать новую тему
  • Вы не можете ответить в тему

1 человек читают эту тему
0 пользователей, 1 гостей, 0 скрытых пользователей


Яндекс.Метрика