Affect_Bond
Умник
Всем привет сегодня я вам покажу как поставить защиту сервера.
1.Защита Rcon Password.
Заходим в нашу папку сервера ищем server.cfg находим в нем вот это.
rcon_password 2441250 и заменим это 2441250 на это 0 он отключает ркон пароль из за ркона ддос атаки идут.
2.Защита админ панели.
Добавим в enum pinfo.
Добавим ко всем new:
Добавим в public OnPlayerConnect:
Добавим в это:
Добавим в public OnPlayerRegister(playerid, password[]) :
Добавим в public OnPlayerUpdate(playerid) :
Добавим в public OnPlayerLogin(playerid,password[]) :
Добавим команду что будет менять пароль в игре ищем public OnPlayerCommandText(playerid, cmdtext[]):
Добавим в public OnPlayerDisconnect(playerid, reason) :
В команду админскую, добавит можно админ панель вот так пример:
3.Защита от атак по пингу
Добавим ко всем #define:
В самый конец мода:
4.Защита от подмены окон через ArtMoney.
Добавим в public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]):
Ко всем stock это:
Ко всем define:
5.Защита от анти-ппесочницы.
Добавим в public OnPlayerConnect(playerid):
6.Защита против ботов.
ко всем define:
В Public OnPlayerConnect(playerid):
Ко всем stock:
Автор: A_B
Новичкам пойдет эта тема может что то новое узнают.
Админы поставьте префикс Мануал.
Я эти коды не писал просто копировал и переделывал маленько.
1.Защита Rcon Password.
Заходим в нашу папку сервера ищем server.cfg находим в нем вот это.
rcon_password 2441250 и заменим это 2441250 на это 0 он отключает ркон пароль из за ркона ддос атаки идут.
2.Защита админ панели.
Добавим в enum pinfo.
PHP:
pDostup[124],
PHP:
new Dostup[MAX_PLAYERS];
new dostup[MAX_PLAYERS];
PHP:
PlayerInfo[playerid][pDostup] = 24551204;//Пароль от админ панели
PHP:
case 2934:
{
if(response)
{
if(!strlen(inputtext)) return SPD(playerid,2934,DIALOG_STYLE_INPUT,"Доступ к Админке","Защита сервера введите ваш пароль от админ панели.","Ok","");
Dostup[playerid] = strval(inputtext);
if(Dostup[playerid] == PlayerInfo[playerid][pDostup])
{
if(PlayerInfo[playerid][pAdmin] <=0) return SendClientMessage(playerid, COLOR_GREY, "Вы не Администратор!");
dostup[playerid] = 1;
new pip[16];
GetPlayerIp(playerid, pip, sizeof(pip));
new sendername[MAX_PLAYER_NAME];
GetPlayerName(playerid, sendername, sizeof(sendername));
format(string, sizeof(string), "[%d] %s авторизовался",playerid,sendername);
ABroadCast(COLOR_LIGHTRED,string,1);
format(string, sizeof(string), "- IP: %s | Админ LVL: %d",pip,PlayerInfo[playerid][pAdmin]);
ABroadCast(COLOR_LIGHTRED,string,6);
TogglePlayerControllable(playerid, 1);
return true;
}
else
{
Kick(playerid);
return true;
}
}
else
{
return true;
}
}
PHP:
ini_setInteger(File,"pDostup",PlayerInfo[playerid][pDostup]);
PHP:
ini_getInteger(File,"pDostup",PlayerInfo[playerid][pDostup]);
PHP:
if(PlayerInfo[playerid][pAdmin] <= 0)
{
PlayerInfo[playerid][pDostup] = 24551204;//Пароль от админ панели
}
PHP:
else if(strcmp(cmd, "/adminkey", true) == 0)
{
if(PlayerInfo[playerid][pAdmin] >=2)//Проверка на админку с какого лвл использовать можно
{
GetPlayerName(playerid, sendername, sizeof(sendername));
tmp = strtok(cmdtext, idx);
if(!strlen(tmp)) return SendClientMessage(playerid, COLOR_WHITE, "::: Используйте: /adminkey [ключ]");
if (dostup[playerid] != 1) return SPD(playerid,2934,DIALOG_STYLE_INPUT,"Доступ к Админке","Защита сервера введите ваш пароль от админ панели","Ок","Отмена");
PlayerInfo[playerid][pDostup] = strval(tmp);
format(string,sizeof(string),"%s.ini",sendername);
new File=ini_openFile(string);
ini_setString(File,"pDostup",Rich(PlayerInfo[playerid][pDostup]));
ini_closeFile(File);
format(string, sizeof(string), "Новый пароль: {FFFFFF}%d{FFA500}", PlayerInfo[playerid][pDostup]);
SendClientMessage(playerid, COLOR_GREEN, string);
}
return true;
}
PHP:
if(PlayerInfo[playerid][pAdmin] > 0)
{
dostup[playerid] = 0;
GetPlayerName(playerid, sendername, sizeof(sendername));
format(string, sizeof(string), "[%d] %s Вышел",playerid,sendername);
ABroadCast(COLOR_LIGHTRED,string,1);
format(string, sizeof(string), "- Админ LVL: %d",PlayerInfo[playerid][pAdmin]);
ABroadCast(COLOR_LIGHTRED,string,6);
}
PHP:
if (dostup[playerid] != 1) return SPD(playerid,2934,DIALOG_STYLE_PASSWORD,"Доступ к Админке",""Защита сервера введите ваш пароль от админ панели","Ok","Exit");
Добавим ко всем #define:
PHP:
#define F6 1
PHP:
stock PingError(playerid){
new FP6=F6;
if(FP6==1){
if(GetPlayerPing(playerid) > 100000){
new steleqepin[170];
new nameqepin[MAX_PLAYER_NAME];
GetPlayerName(playerid, nameqepin, sizeof(nameqepin));
format(steleqepin, sizeof(steleqepin), "Игрок %s [id: %d] Получил(а) Кик по причине: Высокий пинг", nameqepin,playerid);
SendClientMessageToAll(0xAFAFAFAA, steleqepin);
Kick(playerid);
}}}
Добавим в public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]):
PHP:
new FP4=F4;
if(FP4==1){if(GetPVarInt(playerid,"USEDIALOGID") != dialogid) return true;}
PHP:
stock SPD(playerid, dialogid, style, caption[], info[], button1[], button2[]){
ShowPlayerDialog(playerid, dialogid, style, caption, info, button1, button2);SetPVarInt(playerid, "USEDIALOGID", dialogid);
return true;}
PHP:
#define ShowPlayerDialog SPD
Добавим в public OnPlayerConnect(playerid):
PHP:
new IP1[16],IP2[16];
GetPlayerIp(playerid, IP1, sizeof(IP1));
for(new i=0; i<GetMaxPlayers(); i++)
{
if(playerid == i || !IsPlayerConnected(i)) continue;
GetPlayerIp(i, IP2, sizeof(IP2));
if(!strcmp(IP1, IP2, true)) return Kick(playerid);
}
ко всем define:
PHP:
#define MAX_IP 2
PHP:
new connect_ip[32+1];
GetPlayerIp(playerid,connect_ip,32);
new num_ip = GetNumberOfPlayersOnThisIP(connect_ip);
if(num_ip > MAX_IP) {
Ban(playerid);
return true; }
PHP:
stock GetNumberOfPlayersOnThisIP(test_ip[])
{
new against_ip[32+1];
new x = 0;
new ip_count = 0;
for(x=0; x<MAX_PLAYERS; x++) {
if(IsPlayerConnected(x)) {
GetPlayerIp(x,against_ip,32);
if(!strcmp(against_ip,test_ip)) ip_count++;
}
}
return ip_count;
}
Новичкам пойдет эта тема может что то новое узнают.
Админы поставьте префикс Мануал.
Я эти коды не писал просто копировал и переделывал маленько.
Последнее редактирование:
