snm20012
Новичок
Здравствуйте посетители pawno.info.ru
Можете помоч доделать команду /warn чтобы банило на 10 дней
Код:
Cама команда /warn
else if(strcmp(cmd,"/warn",true) == 0)
{
if(PlayerInfo[playerid][pAdmin] == MAX_ADMIN_LEVEL)
{
new targetid;
targetid = v_strtok(cmdtext, idx);
if(targetid == INVALID_STRTOK) return SendErrorMessage(playerid, ""SI_GY" Подсказка: /warn [Ник Игрока/id] [Причина].");
t_strtok(cmdtext, idx);
if(!strlen(strtk_text))
{
SendErrorMessage(playerid, ""SI_GY" Подсказка: /warn [Ник Игрока/id] [Причина].");
return 1;
}
if(IsPlayerConnected(targetid))
{
if(PlayerInfo[playerid][pAdmin] > PlayerInfo[targetid][pAdmin] || PlayerInfo[playerid][pAdmin] == MAX_ADMIN_LEVEL)
{
if(playerid != targetid || PlayerInfo[playerid][pAdmin] >= MAX_SADMIN_LEVEL)
{
if(Player[targetid][Registration] == false)
{
PlayerInfo[targetid][pWarnsg]++;
format(M_String,sizeof(M_String),""SI_OR" Вы предупредили "OR_C"%s"WH_C". Всего предупреждений: "OR_C"%i"WH_C".",PlayerName[targetid],PlayerInfo[targetid][pWarnsg]);
SendClientMessage(playerid,COLOR_WHITE,M_String);
if(PlayerInfo[targetid][pWarnsg]<3){
format(M_String,sizeof(M_String),""SI_OR" Вас "OR_C"предупредил"WH_C" Администратор "OR_C"%s"WH_C". Предупреждений: "OR_C"%i"WH_C".",PlayerName[playerid],PlayerInfo[targetid][pWarnsg]);
SendClientMessage(targetid,COLOR_WHITE,M_String);
Kick(targetid);
}else{
PlayerInfo[targetid][pWarnsg] = 0;
}
format(M_String,sizeof(M_String),"Администратор %s выдал выговор %s. Причина: %s",PlayerName[playerid],PlayerName[targetid], strtk_text);
ServerSendMessageToRus(COLOR_ADMINCMD,M_String);
format(M_String,sizeof(M_String),"предупредил администратора %s. Причина: %s.",PlayerLogin[targetid], strtk_text);
WriteToLog("AdminLog",PlayerLogin[playerid],M_String);
}
else SendErrorMessage(playerid, ""SI_GY" Эту игрок "GY_C"не"WH_C" Администратор");
}
else SendErrorMessage(playerid, ""SI_GY" Вы "GY_C"не можете"WH_C" применять данную операцию к "GY_C"самому себе"WH_C".");
}
else
{
format(M_String,sizeof(M_String),""SI_AC" %s [ID: "AC_C"%i"WH_C"]. Причина: "AC_C"/warn"WH_C" -> %s.",PlayerLogin[playerid],playerid,PlayerLogin[targetid]);
SendMessageToAdmins(1,ADM_BADCMD,COLOR_WHITE,M_String);
format(M_String,sizeof(M_String),""SI_AC" %s [ID: "AC_C"%i"WH_C"]. Reason: "AC_C"/warn"WH_C" -> %s.",PlayerLogin[playerid],playerid,PlayerLogin[targetid]);
SendMessageToAdmins(2,ADM_BADCMD,COLOR_WHITE,M_String);
}
}
else
{
L_RUS(playerid)format(M_String, sizeof(M_String), ""SI_GY" %i ID "GY_C"не активный"WH_C" игрок.", targetid);
L_ENG(playerid)format(M_String, sizeof(M_String), ""SI_GY" %i ID "GY_C"invalid"WH_C" player.", targetid);
SendErrorMessage(playerid, M_String);
}
}
else
{
L_RUS(playerid) SendErrorMessage(playerid,""SI_GY" У Вас "GY_C"не достаточно"WH_C" полномочий что бы "GY_C"использовать"WH_C" эту команду!");
L_ENG(playerid) SendErrorMessage(playerid,""SI_GY" You don't have "GY_C"enough"WH_C" admin authority, to "GY_C"use"WH_C" this command!");
}
return 1;
}
Код:
Команда /ban
else if(strcmp(cmd,"/ban",true) == 0)
{
if(PlayerInfo[playerid][pAdmin] >= 6)
{
new targetid, days, hours, minutes;
targetid = v_strtok(cmdtext, idx);
days = v_strtok(cmdtext, idx);
if(days >= 0) {
hours = v_strtok(cmdtext, idx);
minutes = v_strtok(cmdtext, idx); }
else {
hours = -1;
minutes = -1; }
if(days == INVALID_STRTOK || minutes == INVALID_STRTOK) return SendErrorMessage(playerid, ""SI_GY" Подсказка: /ban ["RD_C"Ник Игрока/id"GY_C"] [Дни] [Часы] [Минуты] [Причина].");
//Если Дни и часы впорядке, ИИ минуты впорядке (либо == 0, либо > 0 если дни и часы 0)
//ИЛИ дни часы минуты == -1 (перм бан)
//ИЛИ дни часы минуты == -2 (перм бан креш)
if( (0 <= days <= 6 && 0 <= hours <= 23
&& ( ((days > 0 || hours > 0) && 0 <= minutes <= 59) || 0 < minutes <= 59))
|| (days == -1 && PlayerInfo[playerid][pAdmin] >= MAX_SADMIN_LEVEL)
|| (days == -2 && PlayerInfo[playerid][pAdmin] == MAX_ADMIN_LEVEL) )
{
if(IsPlayerConnected(targetid))
{
if(PlayerInfo[playerid][pAdmin] > PlayerInfo[targetid][pAdmin] || PlayerInfo[playerid][pAdmin] == MAX_ADMIN_LEVEL)
{
t_strtok(cmdtext, idx);
if(!strlen(strtk_text))
{
SendErrorMessage(playerid, ""SI_GY" Подсказка: /ban [Ник Игрока/id] [Дни] [Часы] [Минуты] ["RD_C"Причина"GY_C"].");
return 1;
}
new UNIX_Unban = gettime();
if(days == -1) format(M_String,sizeof(M_String),""SI_OR" Вы "OR_C"забанили"WH_C" игрока "OR_C"%s"WH_C" навсегда.",PlayerName[targetid]);
else if(days == -2) format(M_String,sizeof(M_String),""SI_OR" Вы "OR_C"забанили"WH_C" игрока "OR_C"%s"WH_C" навсегда Креш-Баном.",PlayerName[targetid]);
else format(M_String,sizeof(M_String),""SI_OR" Вы "OR_C"забанили"WH_C" игрока "OR_C"%s"WH_C" на %d %s %d %s %d %s.",PlayerName[targetid],days,GetTrueEnd(days,"день","дня","дней"),hours,GetTrueEnd(hours,"час","часа","часов"),minutes,GetTrueEnd(minutes,"минуту","минуты","минут"));
SendClientMessage(playerid,COLOR_WHITE,M_String);
format(T_String,sizeof(T_String),"%d",BannedCount);
ini_setStr(BannedBD2, T_String, PlayerLogin[targetid]);
BannedCount++;
ini_setInt(BannedBD2, "BannedCount",BannedCount);
if(days > 0)//days, hours, minutes
{
format(M_String,sizeof(M_String),"Администратор %s забанил %s на %d %s %d %s %d %s. Причина: %s",PlayerName[playerid],PlayerName[targetid], days,GetTrueEnd(days,"день","дня","дней"),hours,GetTrueEnd(hours,"час","часа","часов"),minutes,GetTrueEnd(minutes,"минуту","минуты","минут"), strtk_text);
ServerSendMessageToRus(COLOR_ADMINCMD,M_String);
format(M_String,sizeof(M_String),"Administrator %s banned %s for %d %s %d %s %d %s. Reason: %s",PlayerNameEng[playerid],PlayerNameEng[targetid], days,GetTrueEnd(days,"day","days","days"),hours,GetTrueEnd(hours,"hour","hours","hours"),minutes,GetTrueEnd(minutes,"minute","minutes","minutes"), strtk_text);
ServerSendMessageToEng(COLOR_ADMINCMD,M_String);
UNIX_Unban += days*TIME_DAY;
UNIX_Unban += hours*TIME_HOUR;
UNIX_Unban += minutes*TIME_MINUTE;
}
else if(hours > 0)//hours, minutes
{
format(M_String,sizeof(M_String),"Администратор %s забанил %s на %d %s %d %s. Причина: %s",PlayerName[playerid],PlayerName[targetid], hours,GetTrueEnd(hours,"час","часа","часов"),minutes,GetTrueEnd(minutes,"минуту","минуты","минут"), strtk_text);
ServerSendMessageToRus(COLOR_ADMINCMD,M_String);
format(M_String,sizeof(M_String),"Administrator %s banned %s for %d %s %d %s. Reason: %s",PlayerNameEng[playerid],PlayerNameEng[targetid], hours,GetTrueEnd(hours,"hour","hours","hours"),minutes,GetTrueEnd(minutes,"minute","minutes","minutes"), strtk_text);
ServerSendMessageToEng(COLOR_ADMINCMD,M_String);
UNIX_Unban += hours*TIME_HOUR;
UNIX_Unban += minutes*TIME_MINUTE;
}
else if(minutes > 0)//minutes
{
format(M_String,sizeof(M_String),"Администратор %s забанил %s на %d %s. Причина: %s",PlayerName[playerid],PlayerName[targetid], minutes,GetTrueEnd(minutes,"минуту","минуты","минут"), strtk_text);
ServerSendMessageToRus(COLOR_ADMINCMD,M_String);
format(M_String,sizeof(M_String),"Administrator %s banned %s for %d %s. Reason: %s",PlayerNameEng[playerid],PlayerNameEng[targetid], minutes,GetTrueEnd(minutes,"minute","minutes","minutes"), strtk_text);
ServerSendMessageToEng(COLOR_ADMINCMD,M_String);
UNIX_Unban += minutes*TIME_MINUTE;
}
else if(days == -1)
{
format(M_String,sizeof(M_String),"Администратор %s забанил перманентно %s. Причина: %s",PlayerName[playerid],PlayerName[targetid], strtk_text);
ServerSendMessageToRus(COLOR_ADMINCMD,M_String);
format(M_String,sizeof(M_String),"Administrator %s banned permanently %s. Reason: %s",PlayerNameEng[playerid],PlayerNameEng[targetid], strtk_text);
ServerSendMessageToEng(COLOR_ADMINCMD,M_String);
UNIX_Unban = -1;
}
else if(days == -2)
{
L_RUS(playerid) format(M_String,sizeof(M_String),""SI_OR" Вы перманентно забанили %s Креш-Баном по причине %s.",PlayerName[targetid], strtk_text);
L_ENG(playerid) format(M_String,sizeof(M_String),""SI_OR" You banned permanently %s by Crash-Ban with reason %s.",PlayerName[targetid], strtk_text);
SendClientMessage(playerid,COLOR_WHITE,M_String);
UNIX_Unban = -2;
//-----------
new playersip[16],FileID, year,month,day;
GetPlayerIp(targetid,playersip,sizeof(playersip));
for(new i = strlen(playersip); i >= 0; i--) {
if(playersip[i] == '.') {
strdel(playersip,i,strlen(playersip));
break; } }
getdate(year, month, day);
//-----------
//Информация о Бане (в аккаунт)
format(S_String, sizeof(S_String), AccountBD, PlayerLogin[targetid]);
FileID = ini_openFile(S_String);
ini_setString(FileID, "Ban_Reason", strtk_text);
format(M_String,sizeof(M_String),"Дни: %d | Часы: %d | Минуты: %d",days, hours, minutes);
ini_setString(FileID, "Ban_Time", M_String);
ini_setInteger(FileID, "Ban_UnixTime", UNIX_Unban);
ini_setString(FileID, "Ban_Admin", PlayerName[playerid]);
format(M_String,sizeof(M_String),"%02d/%02d/%d",day, month, year);
ini_setString(FileID, "Ban_Date", M_String);
ini_closeFile(FileID);
//Информация в Бан Лист
FileID = ini_openFile(BannedBD);
format(M_String,sizeof(M_String),"%s = %s",PlayerLogin[targetid], playersip);
ini_setString(FileID, M_String, PlayerLogin[targetid]);
ini_closeFile(FileID);
//-----------
format(M_String,sizeof(M_String),"забанил игрока %s на %d дней %d часов %d минут. Причина: %s.",PlayerLogin[targetid],days, hours, minutes,strtk_text);
WriteToLog("AdminLog",PlayerLogin[playerid],M_String);
SetTimerEx("CrashPlayer",3000, false, "d", targetid);
ServerPlaySound(playerid,SOUND_POSITIVE);
return 1;
}
SendClientMessage(targetid, COLOR_WHITE, ""SI_RD" Если Вы "RD_C"не согласны"WH_C" с баном, либо не хотите "RD_C"ждать"WH_C" весь срок бана");
SendClientMessage(targetid, COLOR_WHITE, ""SI_RD" Напишите "RD_C"заявление"WH_C" на разбан в группе ВКонтакте: "RD_C""SERVER_SITE"");
GameTextForPlayer(targetid, BANNED_TEXTDRAW, 10000, 2);
//-----------
new playersip[16],FileID, year,month,day;
GetPlayerIp(targetid,playersip,sizeof(playersip));
for(new i = strlen(playersip); i >= 0; i--) {
if(playersip[i] == '.') {
strdel(playersip,i,strlen(playersip));
break; } }
getdate(year, month, day);
//-----------
//Информация о Бане (в аккаунт)
format(S_String, sizeof(S_String), AccountBD, PlayerLogin[targetid]);
FileID = ini_openFile(S_String);
ini_setString(FileID, "Ban_Reason", strtk_text);
format(M_String,sizeof(M_String),"Дни: %d | Часы: %d | Минуты: %d",days, hours, minutes);
ini_setString(FileID, "Ban_Time", M_String);
ini_setInteger(FileID, "Ban_UnixTime", UNIX_Unban);
ini_setString(FileID, "Ban_Admin", PlayerName[playerid]);
format(M_String,sizeof(M_String),"%02d/%02d/%d",day, month, year);
ini_setString(FileID, "Ban_Date", M_String);
ini_closeFile(FileID);
//Информация в Бан Лист
FileID = ini_openFile(BannedBD);
format(M_String,sizeof(M_String),"%s = %s",PlayerLogin[targetid], playersip);
ini_setString(FileID, M_String, PlayerLogin[targetid]);
ini_closeFile(FileID);
//-----------
format(M_String,sizeof(M_String),"забанил игрока %s на %d дней %d часов %d минут. Причина: %s.",PlayerLogin[targetid],days, hours, minutes,strtk_text);
WriteToLog("AdminLog",PlayerLogin[playerid],M_String);
ServerPlaySound(playerid,SOUND_POSITIVE);
KickEx(targetid);
}
else
{
format(M_String,sizeof(M_String),""SI_AC" %s [ID: "AC_C"%i"WH_C"]. Причина: "AC_C"/ban"WH_C" -> %s.",PlayerLogin[playerid],playerid,PlayerLogin[targetid]);
SendMessageToAdmins(1,ADM_BADCMD,COLOR_WHITE,M_String);
format(M_String,sizeof(M_String),""SI_AC" %s [ID: "AC_C"%i"WH_C"]. Reason: "AC_C"/ban"WH_C" -> %s.",PlayerLogin[playerid],playerid,PlayerLogin[targetid]);
SendMessageToAdmins(2,ADM_BADCMD,COLOR_WHITE,M_String);
}
}
else
{
L_RUS(playerid)format(M_String, sizeof(M_String),""SI_GY" %i ID "GY_C"не активный"WH_C" игрок.", targetid);
L_ENG(playerid)format(M_String, sizeof(M_String), ""SI_GY" %i ID "GY_C"invalid"WH_C" player.", targetid);
SendErrorMessage(playerid, M_String);
}
}
else
{
SendErrorMessage(playerid, ""SI_GY" Подсказка: /ban [Ник Игрока/id] ["RD_C"Дни"GY_C"] ["RD_C"Часы"GY_C"] ["RD_C"Минуты"GY_C"] [Причина].");
SendClientMessage(playerid,COLOR_WHITE, ""SI_GY" Дни: 0-6 | Часы: 0-23 | Минуты: 1-59.");
if(PlayerInfo[playerid][pAdmin] == MAX_SADMIN_LEVEL)
{
SendClientMessage(playerid,COLOR_WHITE, ""SI_GY" Перманентный Бан: /ban id -1 Причина.");
}
if(PlayerInfo[playerid][pAdmin] == MAX_ADMIN_LEVEL)
{
SendClientMessage(playerid,COLOR_WHITE, ""SI_GY" Перманентный Бан: /ban id -1 Причина.");
SendClientMessage(playerid,COLOR_WHITE, ""SI_GY" Тихий Бан с Крешем: /ban id -2 Причина.");
}
return 1;
}
}
else
{
L_RUS(playerid) SendErrorMessage(playerid,""SI_GY" У Вас "GY_C"не достаточно"WH_C" полномочий что бы "GY_C"использовать"WH_C" эту команду!");
L_ENG(playerid) SendErrorMessage(playerid,""SI_GY" You don't have "GY_C"enough"WH_C" admin authority, to "GY_C"use"WH_C" this command!");
}
return 1;
}
else if(strcmp(cmd,"/offban",true) == 0)
{
if(PlayerInfo[playerid][pAdmin] >= MAX_SADMIN_LEVEL)
{
t_strtok(cmdtext, idx);
if(!strlen(strtk_text))
{
SendClientMessage(playerid,COLOR_WHITE, ""SI_GY" Подсказка: /offban [Имя Игрока].");
SendErrorMessage(playerid,""SI_GY" Тип Бана: "GY_C"Перманентный"WH_C".");
return 1;
}
format(S_String, sizeof(S_String), AccountBD, strtk_text);
if(fexist(S_String))
{
new playersip[16], FileID, UNIX_Unban, year,month,day;
format(M_String,sizeof(M_String),""SI_OR" Вы "OR_C"забанили"WH_C" игрока "OR_C"%s"WH_C".",strtk_text);
SendClientMessage(playerid,COLOR_WHITE,M_String);
format(M_String,sizeof(M_String),"Администратор %s забанил перманентно %s.",PlayerName[playerid],strtk_text);
ServerSendMessageToRus(COLOR_ADMINCMD,M_String);
format(M_String,sizeof(M_String),"Administrator %s banned permanently %s.",PlayerNameEng[playerid],strtk_text);
ServerSendMessageToEng(COLOR_ADMINCMD,M_String);
UNIX_Unban = -1;
format(T_String,sizeof(T_String),"%d",BannedCount);
ini_setStr(BannedBD2, T_String, strtk_text);
BannedCount++;
ini_setInt(BannedBD2, "BannedCount",BannedCount);
format(S_String, sizeof(S_String), AccountBD, strtk_text);
FileID = ini_openFile(S_String);
ini_getString(FileID, "IP", playersip);
getdate(year, month, day);
for(new i = strlen(playersip); i >= 0; i--) {
if(playersip[i] == '.') {
strdel(playersip,i,strlen(playersip));
break; } }
ini_setString(FileID, "Ban_Reason", "Off-Line Ban");
ini_setString(FileID, "Ban_Time", "Дни: - | Часы: - | Минуты: -");
ini_setInteger(FileID, "Ban_UnixTime", UNIX_Unban);
ini_setString(FileID, "Ban_Admin", PlayerName[playerid]);
format(M_String,sizeof(M_String),"%02d/%02d/%d",day, month, year);
ini_setString(FileID, "Ban_Date", M_String);
ini_closeFile(FileID);
//Информация в Бан Лист
format(S_String,sizeof(S_String),"%s = %s", playersip, strtk_text);
ini_setStr(BannedBD, strtk_text, S_String);
/*
FileID = ini_openFile(BannedBD);
format(M_String,sizeof(M_String),"%s = %s",strtk_text, playersip);
ini_setString(FileID, M_String, strtk_text);
ini_closeFile(FileID);
*/
format(M_String,sizeof(M_String),"перманентно забанил игрока %s (Офф-Лайн Бан).",strtk_text);
WriteToLog("AdminLog",PlayerLogin[playerid],M_String);
ServerPlaySound(playerid,SOUND_POSITIVE);
}
else
{
format(M_String, sizeof(M_String), ""SI_GY" Аккаунт "GY_C"%s"WH_C" не существует.", strtk_text);
SendErrorMessage(playerid, M_String);
}
}
else
{
L_RUS(playerid) SendErrorMessage(playerid,""SI_GY" У Вас "GY_C"не достаточно"WH_C" полномочий что бы "GY_C"использовать"WH_C" эту команду!");
L_ENG(playerid) SendErrorMessage(playerid,""SI_GY" You don't have "GY_C"enough"WH_C" admin authority, to "GY_C"use"WH_C" this command!");
}
return 1;
}
