Доступ к архиву

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

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

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

[Мануал] Защита сервера.

Статус
В этой теме нельзя размещать новые ответы.

Affect_Bond

Умник
Всем привет сегодня я вам покажу как поставить защиту сервера.
1.Защита Rcon Password.
Заходим в нашу папку сервера ищем server.cfg находим в нем вот это.
rcon_password 2441250 и заменим это 2441250 на это 0 он отключает ркон пароль из за ркона ддос атаки идут.
2.Защита админ панели.
Добавим в enum pinfo.
PHP:
pDostup[124],
Добавим ко всем new:
PHP:
new Dostup[MAX_PLAYERS];
new dostup[MAX_PLAYERS];
Добавим в public OnPlayerConnect:
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;
			}
		}
Добавим в public OnPlayerRegister(playerid, password[]) :
PHP:
ini_setInteger(File,"pDostup",PlayerInfo[playerid][pDostup]);
Добавим в public OnPlayerUpdate(playerid) :
PHP:
ini_getInteger(File,"pDostup",PlayerInfo[playerid][pDostup]);
Добавим в public OnPlayerLogin(playerid,password[]) :
PHP:
if(PlayerInfo[playerid][pAdmin] <= 0)
	{
		PlayerInfo[playerid][pDostup] = 24551204;//Пароль от админ панели
	}
Добавим команду что будет менять пароль в игре ищем public OnPlayerCommandText(playerid, cmdtext[]):
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;
	}
Добавим в public OnPlayerDisconnect(playerid, reason) :
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");
3.Защита от атак по пингу
Добавим ко всем #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);
}}}
4.Защита от подмены окон через ArtMoney.
Добавим в public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]):
PHP:
new FP4=F4;
if(FP4==1){if(GetPVarInt(playerid,"USEDIALOGID") != dialogid) return true;}
Ко всем stock это:
PHP:
stock SPD(playerid, dialogid, style, caption[], info[], button1[], button2[]){
ShowPlayerDialog(playerid, dialogid, style, caption, info, button1, button2);SetPVarInt(playerid, "USEDIALOGID", dialogid);
return true;}
Ко всем define:
PHP:
#define ShowPlayerDialog SPD
5.Защита от анти-ппесочницы.
Добавим в 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);
    }
6.Защита против ботов.
ко всем define:
PHP:
#define MAX_IP 2
В Public OnPlayerConnect(playerid):
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; }
Ко всем stock:
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; 
 }
Автор: A_B
Новичкам пойдет эта тема может что то новое узнают.
Админы поставьте префикс Мануал.
Я эти коды не писал просто копировал и переделывал маленько.
 
Последнее редактирование:
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу