A
Amfy
Гость
Гость
Важно:
1) Скачайте инклуд mxdate.inc
2) Создайте папку в scriptfiles с названием banlist
3) Время перевода с Unix на нормальное настроено на московское (время зависит от часового пояса сервера).
Ко всем #include добавляем:
#include <mxdate>
Ко всем #define добавляем:
#define DIALOGUNBAN 1377 // 1377 - ид диалога, в случае необходимости поменяйте
В свободное место или в конец мода:
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(name[])
{
new string[64];
format(string, sizeof(string), "banlist/%s.ini", name);
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);
}
В начало public OnPlayerConnect вставляем:
GetBan(playerid);
В public OnPlayerCommandText вставляем:
if(strcmp(cmd, "/ban", true) == 0)
{
tmp = strtok(cmdtext, idx);
if(!strlen(tmp)) return SendClientMessage(playerid, 0xFFFFFFFF, "USAGE: /ban [playerid] [type1-минуты)(2-часы)(3-дни)(другое секунды)] [число] [причина]");
giveplayerid = strval(tmp);
tmp = strtok(cmdtext, idx);
if(!strlen(tmp)) return SendClientMessage(playerid, 0xFFFFFFFF, "USAGE: /ban [playerid] [type1-минуты)(2-часы)(3-дни)(другое секунды)] [число] [причина]");
new type = strval(tmp);
tmp = strtok(cmdtext, idx);
if(!strlen(tmp)) return SendClientMessage(playerid, 0xFFFFFFFF, "USAGE: /ban [playerid] [type1-минуты)(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] [type1-минуты)(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;
}
}
return true;
}
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
1) Скачайте инклуд mxdate.inc
2) Создайте папку в scriptfiles с названием banlist
3) Время перевода с Unix на нормальное настроено на московское (время зависит от часового пояса сервера).
Ко всем #include добавляем:
#include <mxdate>
Ко всем #define добавляем:
#define DIALOGUNBAN 1377 // 1377 - ид диалога, в случае необходимости поменяйте
В свободное место или в конец мода:
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(name[])
{
new string[64];
format(string, sizeof(string), "banlist/%s.ini", name);
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);
}
В начало public OnPlayerConnect вставляем:
GetBan(playerid);
В public OnPlayerCommandText вставляем:
if(strcmp(cmd, "/ban", true) == 0)
{
tmp = strtok(cmdtext, idx);
if(!strlen(tmp)) return SendClientMessage(playerid, 0xFFFFFFFF, "USAGE: /ban [playerid] [type1-минуты)(2-часы)(3-дни)(другое секунды)] [число] [причина]");
giveplayerid = strval(tmp);
tmp = strtok(cmdtext, idx);
if(!strlen(tmp)) return SendClientMessage(playerid, 0xFFFFFFFF, "USAGE: /ban [playerid] [type1-минуты)(2-часы)(3-дни)(другое секунды)] [число] [причина]");
new type = strval(tmp);
tmp = strtok(cmdtext, idx);
if(!strlen(tmp)) return SendClientMessage(playerid, 0xFFFFFFFF, "USAGE: /ban [playerid] [type1-минуты)(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] [type1-минуты)(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;
}
}
return true;
}
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
Последнее редактирование: