Jump to content

Ryancoolround

Administrator
  • Content Count

    2,362
  • Joined

  • Last visited

  • Days Won

    152

Ryancoolround last won the day on April 14

Ryancoolround had the most liked content!

Community Reputation

809 Experienced player

About Ryancoolround

  • Rank
    General of the armies
  • Birthday 09/15/1992

Contact Methods

Profile Information

  • Alias
    RyaN
  • Gender
    Парень
  • Interests
    Торговля
    Фильмы
    Сериалы
    Игры
    Программирование
  • Location
    Россия

In Game

Recent Profile Visitors

32,551 profile views

Single Status Update

See all updates by Ryancoolround

  1. RevEmu снова отпадает, потому что наша бан система в виде из коробки, не предусматривает вход по нику и паролю, и для того что бы пираты смогли подключаться, в этой системе придется кое что переписать.

    Можно было бы написать плагин для проверки пароля админа, но опять же Material Admin будет просто игнорировать этот плагин. А вообще, вот код для этого плагина, может кому то пригодится.

    #include <regex>
    
    static const String:g_sLogPath[] = "addons/sourcemod/logs/admin_password_checker.log";
    new String:sInfoVar[32];
    
    public Plugin:myinfo = 
    {
    	name = "Admin Password Checker", 
    	author = "Danyas",
    	version = "1.3.1"
    }
    
    public OnPluginStart()
    {
    	if (!GetPassInfoVar(sInfoVar, sizeof(sInfoVar)))
    	{
    		SetFailState("PassInfoVar не найден в файле core.cfg");
    	}
    //	else	LogMessage("Переменная PassInfoVar имеет значение '%s'",sInfoVar);
    }
    
    public Action:OnClientPreAdminCheck(client)
    {
    	if (client > 0)
    	{
    		decl String:sBuff[64], String:sPassword[64];
    		GetClientAuthId(client, AuthId_Engine, sBuff, sizeof(sBuff));
    		new AdminId:admin = FindAdminByIdentity(AUTHMETHOD_STEAM, sBuff);
    		if (admin != INVALID_ADMIN_ID)
    		{
    			if (GetAdminPassword(admin, sPassword, sizeof(sPassword)))
    			{
    				if(GetClientInfo(client, sInfoVar, sBuff, sizeof(sBuff)) && sBuff[0] != 0)
    				{
    					if (!StrEqual(sPassword, sBuff))
    					{
    						KickClient(client, "Вы ввели неверный пароль! 'setinfo %s ПАРОЛЬ'", sInfoVar);
    						LogToFileEx(g_sLogPath, "%L<%s> Пытался зайти с паролем %s", client, GetClientIP(client, sPassword, 21) ? sPassword : "?", sBuff);
    					}
    				}
    				else 
    				{
    					KickClient(client, "Введите пароль в консоле. 'setinfo %s ПАРОЛЬ'", sInfoVar);
    					LogToFileEx(g_sLogPath, "%L<%s> Пытался зайти без пароля", client, GetClientIP(client, sPassword, 21) ? sPassword : "?");
    				}
    			}
    			//else PrintToServer("Админ без пароля");
    		}
    		//else PrintToServer("INVALID_ADMIN_ID");
    	}
    }
    
    
    bool:GetPassInfoVar(String:value[], maxlength)
    {
    	new Handle:file = OpenFile("addons/sourcemod/configs/core.cfg", "rt");
    	if (file != INVALID_HANDLE)
    	{
    		new Handle:re = CompileRegex("^\\s+\"PassInfoVar\"\\s+\"(\\w+)\""); // ([^\"]*)
    		if (re != INVALID_HANDLE)
    		{
    			decl String:buffer[PLATFORM_MAX_PATH];
    			while (!IsEndOfFile(file) && ReadFileLine(file, buffer, sizeof(buffer)))
    			{
    				if (MatchRegex(re, buffer) > 0 && GetRegexSubString(re, 1, value, maxlength))
    				{
    					CloseHandle(re);
    					CloseHandle(file);
    					return true;
    				}
    			}
    			CloseHandle(re);
    		}
    		CloseHandle(file);
    	}
    	return false;
    }

     

    1. BoSSICoM

      BoSSICoM

      Так и думал что без проблем не обойтись.

×
×
  • Create New...