Доступ к готовым решениям

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

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

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

Анти-Взлом Админки 100%

Leonardo_Gun

Умник
Идем в паку scriptfiles и создаем там папку Admins

Ко всем командам то-есть в public OnPlayerCommandText(playerid, cmdtext[])
HTML:
if(strcmp(cmd, "/saveadmin", true) == 0)
{
new strings[MAX_STRING];
if(IsPlayerConnected(playerid))
{
if(PlayerInfo[playerid][pAdmin] != 9)
{
SendClientMessage(playerid, COLOR_GREY, "   Вы не уполномочены использовать эту команду!");
return 1;
}
tmp = strtok(cmdtext, idx);
if(!strlen(tmp))
{
SendClientMessage(playerid, COLOR_GRAYWHITE, "USAGE: /saveadmins [PlayerName]");
return 1;
}
new playername[MAX_PLAYER_NAME+1];
format(playername, sizeof(playername), "Admins/%s.cfg", tmp);
if(!fexist(playername))
{
new File: hFile = fopen(playername, io_write);
if (hFile)
{
/*
Достаточно нам сделать только сохранение аккаунта, но для понтов
можете и сделать сохранение сюда других переменных для дополнительных
проверок, как мне кажеться это будет лишним. Достаточно нам знать имя.
format(var, 32, "AdminLevel=%d\n",PlayerInfo[playerid][pAdmin]);fwrite(hFile, var);
*/
fclose(hFile);
format(strings, sizeof(strings), "Аккаунт администратора %s успешно создан.", tmp);
SendClientMessage(playerid, COLOR_RED, strings);
}
}
else if(fexist(playername))
{
format(strings, sizeof(strings), "Администратор %s уже существует, выберите другое имя !", tmp);
SendClientMessage(playerid, COLOR_GRAYWHITE, strings);
return 1;
}
}
return 1;
}
if(strcmp(cmd, "/deleteadmin", true) == 0)
{
new playername[MAX_PLAYER_NAME+1];
if(IsPlayerConnected(playerid))
{
if(PlayerInfo[playerid][pAdmin] != 9)
{
SendClientMessage(playerid, COLOR_GREY, "   Вы не уполномочены использовать эту команду!");
return 1;
}
tmp = strtok(cmdtext, idx);
if(!strlen(tmp))
{
SendClientMessage(playerid, COLOR_GRAYWHITE, "USAGE: /deleteadmin [PlayerName]");
return 1;
}
giveplayerid = ReturnUser(tmp);
format(playername, sizeof(playername), "Admins/%s.cfg", tmp);
if(!fexist(playername))
{
SendClientMessage(playerid, COLOR_GREY, "   Этого админ- аккаунта не существует !");
return 1;
}
else if(fexist(playername))
{
fremove(playername);
format(string, sizeof(string), "[Server]: %s was delleted by %s.", tmp, PlayerName(playerid));
new lH, lM, lS;	gettime(lH,lM,lS);
format(string, sizeof(string), "[%d:%02d:%02d] %s", lH,lM,lS, string);
SendClientMessageToAll(COLOR_RED, string);
Kick(giveplayerid);
return 1;
}
}
return 1;
}
Если игрок не прописан в папке Admins то его сразу же при входе будет кикать.

Добавим Сток в конец мода

HTML:
stock AdministratorSystem(playerid)
{
new playername[MAX_PLAYER_NAME+1];
format(playername, sizeof(playername), "Admins/%s.cfg", PlayerName(playerid));
if(!fexist(playername) && PlayerInfo[playerid][pAdmin] >= 1)
{
SendClientMessage(playerid, COLOR_RED, "[Server]: Вы не имеете право на Администратора!");
Kick(playerid);}
return 1;
}
И в секундный таймер пихаем
HTML:
AdministratorSystem(i);
Всё Анти-Взлом Админки будет Успешно работать.
Вопросы в тему!

---------- Post added at 18:40 ---------- Previous post was at 18:39 ----------

Все Акки в папке Admins должны содержать примеру!
Leonardo_Gun.cfg

СОЗДАНИЕ ЕЖЕСЕКУНДНОГО ТАЙМЕРА!
Ко всем forward:
Код:
forward OnTimerSecounds(playerid);
Далее в конец мода:
Код:
public OnTimerSecounds(playerid);
{
return 1;
}
И делаем ему обновление в GameModeInit
Код:
SetTimer("OnTimerSecounds", 60000, 1);
Вот и все. Ежесекундный таймер готов!
 
Последнее редактирование:
Сверху Снизу