Nestyreff
Новичок
Создавал систему для администраторов, подойдёт для НубоРП и для РП серверов.
Описание:
Система простая и не очень затратная, полностью работает. Позволяет добавить на ваш сервер защиту от слива администратора или лидера. Даёт системные варнинги и при наборе определённого кол-ва варнингов пользователь кикается от сервера. Настроить может даже полный чайник.
В enum PlayerInfo или как он у вас там называется:
В public OnGamemodeInit:
в OnPlayerJoin или OnPlayerConnect
В конец мода:
Далее ко всем командам:
Далее ко всем enum или в любой точке мода:
В public OnDialogResponse
Теперь, добавляем вот это:
Ко всем команды, за которые будут даваться предупреждения. Можно добавить просто AntiSliv(); , но тогда будет просто проверка, варнинги даваться не будут.
Если хотите, чтобы Варнинги сами очищались, то добавьте в PayDay:
ВАЖНО!:
Связь со
Также если, у вас нет AdminChat, то добавьте в конец мода:
При этом Вам всё равно придёться менять PlayerInfo на свой.
P.S.:
Делал скрипт для своего сервера, но решил, что в нём нет ничего сложного, но в нём нуждаются люди и я решил
выложить Его тут, это мой первый паблик-скрипт, оценивайте не строго)
Описание:
Система простая и не очень затратная, полностью работает. Позволяет добавить на ваш сервер защиту от слива администратора или лидера. Даёт системные варнинги и при наборе определённого кол-ва варнингов пользователь кикается от сервера. Настроить может даже полный чайник.
В enum PlayerInfo или как он у вас там называется:
Код:
enum PlayerInfo // просто написал такой, но вы меняйте на свой
{
pSlivWarn, (Запятая нужная, только если в середине, если в конце списка, то запятую убирайте)
}
Код:
new AC = 1;
Код:
SetPVarString(playerid, "name", GetPlayerName(playerid, name, MAX_PLAYER_NAME));
Код:
stock AntiSliv(playerid)
{
if(AC == 1)
{
GetPVarString(playerid, "name", name, sizeof(name));
switch(PlayerInfo[playerid][pSlivWarn])
{
case 10:
{
SendClientMessage(playerid, COLOR_RED, "[АнтиСлив] На вашем аккаунте замечена подозрительная активность");
}
case 20:
{
SendClientMessage(playerid, COLOR_RED, "[АнтиСлив] На вашем аккаунте замечена подозрительная активность");
}
case 25:
{
SendClientMessage(playerid, COLOR_RED, "[АнтиСлив] На вашем аккаунте замечена подозрительная активность");
}
case 27:
{
SendClientMessage(playerid, COLOR_RED, "[АнтиСлив] На вашем аккаунте замечена подозрительная активность");
}
case 30:
{
SendClientMessage(playerid, COLOR_RED, "[АнтиСлив] Вы были кикнуты по подозрению в сливе!");
NewKick(playerid);
new stof[255];
format(stof, sizeof(stof), "[АнтиСлив] Администратор %s подозревается в сливе и был кикнут!", name);
AdminChat(COLOR_RED, stof);//Заменяйте на свой сток или смотрим внизу
}
if(PlayerInfo[playerid][pAdmin] >= 5)
{
if(PlayerInfo[playerid][pSlivWarn] >= 50)
{
OnPlayerCommandText(playerid,"/restart"); // Можно убрать
SendClientMessage(playerid, COLOR_RED, "[АнтиСлив] На вашем аккаунте замечена подозрительная активность и был запущен рестарт!");
Kick(playerid);
}
}
}
}
}
Далее ко всем командам:
Код:
if(!strcmp(cmd, "/offac",true))
{
if(pData[playerid][pAdmin] > 1) return 1; // Заменяем 1 на значение уровня администратора который может отключить и выше
if(AC == 1)
{
AC = 0;
GetPVarString(playerid, "name", nick, sizeof(name));
new stof[255];
format(stof, sizeof(stof), "Система "АнтиСлив" была выключена администратором %s", nick);
AdminChat(COLOR_RED, stof);
}
else
{
AC = 1;
}
}
if(!strcmp(cmd, "/clearac", true))
{
if(pData[playerid][pAdmin] >= 1) // заменяем 1 на значение уровня администратора, который будет иметь возможность и выше
{
new i = MAX_PLAYERS;
pData[i][pSlivWarn] = 0;
SendClientMessage(playerid, COLOR_BLUE, "[АнтиСлив] Вы очистили Варнинги!");
}
return 1;
}
if(!strcmp(cmd, "/acpanel", true))
{
if(pData[playerid][pAdmin] >= 1) return 1;
if(AC == 1)
{
ShowPlayerDialog(playerid, dAcPanel, DIALOG_STYLE_LIST, "Автоконтроллер | {00FF00}Включен", "{FFFFFF}[1] Информация\n[2]{FF0000} Выключить\n{FFFFFF}[3] Очистить Варнинги\n[4] Список подозреваемых", "Далее", "Отмена");
}
else
{
ShowPlayerDialog(playerid, dAcPanel, DIALOG_STYLE_LIST, "АвтоКонтроллер | {FF0000}Выключен", "{FFFFFF}[1] Информация\n[2]{00FF00} Включить\n{FFFFFF}[3] Очистить Варнинги\n[4] Список подозреваемых", "Далее", "Отмена");
}
}
Далее ко всем enum или в любой точке мода:
Код:
enum Dialog
{
dAcPanel,
dAcPanelOff
}
Код:
if(dialogid == dAcPanel)
{
if(!response) return 1;
switch(listitem)
{
case 0:
{
SendClientMessage(playerid, 0xFFFF00FF, "------------ Система АвтоКонтроллера --------");
SendClientMessage(playerid, 0xFFFF00FF, "----- AntiSliv 0.6(BETA) | by Nestyreff ---");
SendClientMessage(playerid, 0xFFFF00FF, "------------ Система АвтоКонтроллера --------");
}
case 1:
{
if(AC == 0)
{
AC = 1;
SendClientMessage(playerid, COLOR_GREEN, "Вы включили систему АвтоКонтроллера");
AdminChat(0xFFFF00FF, "Система АвтоКонтроллера включена"); // Админ Чат либо убираем, либо смотрим внизу
}
if(AC == 1)
{
ShowPlayerDialog(playerid, dAcPanelOff, DIALOG_STYLE_MSGBOX, "Подтверждение", "Вы точно хотите отключить систему АвтоКонтроллера?", "Да", "Нет");
}
}
case 2:
{
new i = MAX_PLAYERS;
SendClientMessage(playerid, COLOR_RED, "Вы очистили варнинги!");
if(pData[i][pSlivWarn] >= 1) return SendClientMessage(i, 0xFFFF00FF, "Администратор очистил Вам Варнинги!");
pData[i][pSlivWarn] = 0;
}
case 3:
{
SendClientMessage(playerid,COLOR_GREEN,"Подозреваемые онлайн:");
GetPVarString(playerid, "name", nick, sizeof(name));
foreach(new i:Player)
{
if(!IsPlayerConnected(i) || !pData[i][pSlivWarn]) continue;
new mes[64];
if(pData[i][pSlivWarn]) format(mes,sizeof(mes),"{FFFFFF}%s[%d] (%d) | Warning: %d",nick,i,PlayerInfo[i][pAdmin], PlayerInfo[i][pSlivWarn]);
SendClientMessage(playerid,0xFFFF00FF,mes);
}
}
}
}
if(dialogid == dAcPanelOff)
{
if(!response) return SendClientMessage(playerid, 0xFFFF00FF, "Вы отказались");
if(response)
{
AC = 0;
SendClientMessage(playerid, COLOR_RED, "Вы отключили систему АвтоКонтроллера");
}
}
Теперь, добавляем вот это:
Код:
PlayerInfo[playerid][pSlivWarn]++;
AntiSliv(playerid);
Если хотите, чтобы Варнинги сами очищались, то добавьте в PayDay:
Код:
new i = MAX_PLAYERS;
PlayerInfo[playerid][pSlivWarn] = 0;
Связь со
Чтобы видеть скрытое содержание Зарегистрируйтесь на форуме!
. Помогу если что.Также если, у вас нет AdminChat, то добавьте в конец мода:
Код:
stock AdminChat(color,mes[])
{
for(new i;i<MAX_PLAYERS;i++)
{
if(!IsPlayerConnected(i) || !PlayerInfo[i][pAdmin]) continue;
SendClientMessage(i,color,mes);
}
}
P.S.:
Делал скрипт для своего сервера, но решил, что в нём нет ничего сложного, но в нём нуждаются люди и я решил
выложить Его тут, это мой первый паблик-скрипт, оценивайте не строго)
