Status Protect

Тема в разделе "Запросы", создана пользователем TWRP, 29 май 2015.

  1. TWRP

    TWRP Read Only

    Сообщения:
    317
    Симпатии:
    45

    Вложения:

  2. R1KO

    R1KO Супер-модератор

    Сообщения:
    5.988
    Симпатии:
    2.986
    Компилится.
     

    Вложения:

    TWRP нравится это.
  3. TWRP

    TWRP Read Only

    Сообщения:
    317
    Симпатии:
    45
    Спасибо пошел тестить.
    Через час отпишусь, реквизиты кинь в лс, оплачу :)

    Добавлено через 5 минут
    работает )))
     
    Последнее редактирование: 29 май 2015
  4. xados

    xados

    Сообщения:
    265
    Симпатии:
    4
    для кс го такое тоже пойдет?
     
  5. TWRP

    TWRP Read Only

    Сообщения:
    317
    Симпатии:
    45
    хз он на css как автор писал и то только на v34
    но проверив на css v84 (ob) то он работает, пробовал сам командой status и ping сервер спамить то меня сразу же кикает, в smac есть модуль о командах но я добавлял но все равно не пашит, да и если б работал в смаке то он напросто блочил, а это что надо.

    P.S. Если есть такие скрипты на v34 то есть и на OB

    Добавлено через 12 минут
    RIKO можешь еще подправить чтобы заголовок тоже отображался игрокам не только админам

    HTML:
    ForStatusCmd(client)
    {
    	PrintToConsole(client, "# UserID Name                             SteamID                IP Adress                   Ping");
    	new i = 1;
    	while (i <= MaxClients)
    	{
    		if (IsClientInGame(i) && !IsFakeClient(i))
    		{
    			DisplayStatusInfo(client, i);
    		}
    		i++;
    	}
    	return 0;
    }
     
    Последнее редактирование: 29 май 2015
  6. R1KO

    R1KO Супер-модератор

    Сообщения:
    5.988
    Симпатии:
    2.986
    TWRP, какой заголовок?
     
    mumuxtarka и TWRP нравится это.
  7. TWRP

    TWRP Read Only

    Сообщения:
    317
    Симпатии:
    45
    Как отображает админам в консоль
    http://hostingkartinok.com/show-image.php?id=0ff6d0ec0fc12c487ce6fa77d4d70de1

    Как отображет обычному игроку
    http://hostingkartinok.com/show-image.php?id=470113510d5b867fe7f60592c3c30516

    Видишь нету заголовка Name SteamID IP Adress Ping это когда игроку выводится, а когда админу то отображет.

    Вроде и херня но хотелось бы исправить :-D :blush2:
     
  8. R1KO

    R1KO Супер-модератор

    Сообщения:
    5.988
    Симпатии:
    2.986
    изначально должно быть одинаково. Попробуй так:
    PHP:
    new Handle:g_hCvarCmdSpam;
    new 
    Handle:g_hCmds;
    new 
    Handle:g_hCvarShowStatus;
    new 
    Handle:g_hCvarShowPing;
    new 
    g_iCmdCount[66];
    new 
    g_iCmdSpam 4;
    new 
    g_iShowStatus;
    new 
    bool:g_bShowPing;

    public 
    Plugin:myinfo =
    {
        
    name "Status Protect",
        
    description "Status Protect",
        
    author "GoDtm666",
        
    version "1.0.0",
        
    url "http://www.myarena.ru/"
    };

    public 
    OnPluginStart()
    {
        
    g_hCvarCmdSpam CreateConVar("sm_antispam_statusping""4""Сколько раз разрешить игрокам ввести status и ping в 1 секунду."262144true2.0true10.0);
        
    g_iCmdSpam GetConVarInt(g_hCvarCmdSpam);
        
    HookConVarChange(g_hCvarCmdSpamCmdSpam_OnSettingsChanged);
        
    g_hCvarShowStatus CreateConVar("sm_show_status""1""Показывать Status: (0 всем, 1 Админам, 2 Только свой Status)."262144true0.0true2.0);
        
    g_iShowStatus GetConVarInt(g_hCvarShowStatus);
        
    HookConVarChange(g_hCvarShowStatusShowStatus_OnSettingsChanged);
        
    g_hCvarShowPing CreateConVar("sm_show_ping""1""Ping: (0 Не показывать, 1 Показывать)."262144true0.0true1.0);
        
    g_bShowPing GetConVarBool(g_hCvarShowPing);
        
    HookConVarChange(g_hCvarShowPingShowPing_OnSettingsChanged);
        
    RegConsoleCmd("status"StatusCmd);
        
    RegConsoleCmd("ping"PingCmd);
        
    g_hCmds CreateTrie();
        
    SetTrieValue(g_hCmds"status"1true);
        
    SetTrieValue(g_hCmds"ping"1true);
        
    AddCommandListener(Commands_CommandListener);
        
    CreateTimer(1.0Timer_CountReset_1);
        
    LoadTranslations("common.phrases");
    }

    public 
    CmdSpam_OnSettingsChanged(Handle:convarString:oldValue[], String:newValue[])
    {
        
    g_iCmdSpam GetConVarInt(convar);
    }

    public 
    ShowStatus_OnSettingsChanged(Handle:convarString:oldValue[], String:newValue[])
    {
        
    g_iShowStatus GetConVarInt(convar);
    }

    public 
    ShowPing_OnSettingsChanged(Handle:convarString:oldValue[], String:newValue[])
    {
        
    g_bShowPing GetConVarBool(convar);
    }

    public 
    OnAllPluginsLoaded()
    {
        
    AutoExecConfig(true"status_protect""sourcemod");
        
    PrintToServer("%s %s has been loaded successfully.""Status Protect""1.0.0");
    }

    public 
    Action:StatusCmd(clientargs)
    {
        switch (
    g_iShowStatus)
        {
            case 
    0:
            {
                
    DisplayStatus(client);
                
    ForStatusCmd(client);
            }
            case 
    1:
            {
                if (
    CheckCommandAccess(client"admin_notices"2false))
                {
                    if (
    GetCmdReplySource() == SM_REPLY_TO_CHAT)
                    {
                        
    ReplyToCommand(client"[SM] %t""See console for output");
                    }

                    
    DisplayStatus(client);
                    
    ForStatusCmd(client);
                }
            }
            case 
    2:
            {
                if (
    GetCmdReplySource() == SM_REPLY_TO_CHAT)
                {
                    
    ReplyToCommand(client"[SM] %t""See console for output");
                }
                
                
    DisplayStatus(client);
                if (
    CheckCommandAccess(client"admin_notices"2false))
                {
                    
    ForStatusCmd(client);
                }
                else
                {
                    
    DisplayStatusInfo(clientclient);
                }
            }
        }

        return 
    Plugin_Handled;
    }

    ForStatusCmd(client)
    {
        
    PrintToConsole(client"# userid name                             uniqueid               ip-address                   ping");
        for(new 
    1<= MaxClients; ++i)
        {
            if (
    IsClientInGame(i) && !IsFakeClient(i))
            {
                
    DisplayStatusInfo(clienti);
            }
        }
    }

    DisplayStatus(client)
    {
        new 
    g_iClientInServer;
        
    decl String:g_sHostName[512];
        
    decl Handle:g_hHostIp;
        
    decl Handle:g_hHostPort;
        
    decl g_iHostIp;
        
    decl String:g_sServerIpHost[32];
        
    decl String:g_sServerPort[128];
        
    decl String:g_sCurrentMap[256];
        
    decl Handle:g_hHostName;
        
    decl String:g_ServerTime[64];
        
    decl Handle:g_hNextMap;
        
    decl String:g_sNextmap[256];
        
    g_hHostIp FindConVar("hostip");
        
    g_hHostPort FindConVar("hostport");
        
    g_iHostIp GetConVarInt(g_hHostIp);
        
    GetConVarString(g_hHostPortg_sServerPort128);
        
    FormatEx(g_sServerIpHost32"%u.%u.%u.%u:%s"g_iHostIp >>> 24 255g_iHostIp >>> 16 255g_iHostIp >>> 255g_iHostIp 255g_sServerPort);
        
    GetCurrentMap(g_sCurrentMap256);
        
    g_hNextMap FindConVar("sm_nextmap");
        
    GetConVarString(g_hNextMapg_sNextmap256);
        for(new 
    1<= MaxClients; ++i)
        {
            if (
    IsClientInGame(i))
            {
                
    g_iClientInServer++;
            }
        }

        
    g_hHostName FindConVar("hostname");
        
    GetConVarString(g_hHostNameg_sHostName512);
        
    FormatTime(g_ServerTime64NULL_STRING, -1);
        
    PrintToConsole(client"hostname: %s"g_sHostName);
        
    PrintToConsole(client"udp/ip  : %s"g_sServerIpHost);
        
    PrintToConsole(client"map     : %s"g_sCurrentMap);
        if (!
    StrEqual(g_sNextmap""false))
        {
            
    PrintToConsole(client"next map: %s"g_sNextmap);
        }
        
    PrintToConsole(client"players : %d (%d max)"g_iClientInServerMaxClients);
        
    PrintToConsole(client"the time: %s\n"g_ServerTime);
    }

    DisplayStatusInfo(clienti)
    {
        
    decl String:g_sName[32];
        
    decl String:g_sAuthID[32];
        
    decl String:g_sIP[28];
        
    decl g_iLatency;
        
    decl g_iUserID;
        if (!
    GetClientName(ig_sName32))
        {
            
    strcopy(g_sName32"Unknown");
        }
        if (!
    GetClientAuthString(ig_sAuthID32))
        {
            
    strcopy(g_sAuthID32"Unknown");
        }
        if (!
    GetClientIP(ig_sIP28false))
        {
            
    strcopy(g_sIP28"Unknown");
        }
        
    g_iLatency RoundToNearest(GetClientAvgLatency(iNetFlow:0) * 1000.0);
        
    g_iUserID GetClientUserId(i);
        
    PrintToConsole(client"# %-6.6i %-32.31s %-22.29s %-28.29s %-4.5i"g_iUserIDg_sNameg_sAuthIDg_sIPg_iLatency);
    }

    public 
    Action:Commands_CommandListener(clientString:command[], argc)
    {
        if (!
    client)
        {
            return 
    Plugin_Continue;
        }
        if (
    IsClientConnected(client) && IsFakeClient(client))
        {
            return 
    Plugin_Continue;
        }
        if (!
    IsClientInGame(client))
        {
            return 
    Plugin_Stop;
        }
        
    decl bool:f_bBan;
        
    decl String:f_sCmd[64];
        
    strcopy(f_sCmd64command);
        
    StringToLower(f_sCmd);
        if (
    g_iCmdSpam && GetTrieValue(g_hCmdsf_sCmdf_bBan) && ++g_iCmdCount[client] > g_iCmdSpam)
        {
            if (!
    IsClientInKickQueue(client))
            {
                
    KickClient(client"Спам командами status, ping запрещен!");
            }
            return 
    Plugin_Stop;
        }

        return 
    Plugin_Continue;
    }

    public 
    Action:PingCmd(clientargs)
    {
        if (
    g_bShowPing)
        {
            if (
    GetCmdReplySource() == SM_REPLY_TO_CHAT)
            {
                
    ReplyToCommand(client"[SM] %t""See console for output");
            }
            
    PrintToConsole(client"Client ping times:");
            for(new 
    1<= MaxClients; ++i)
            {
                if (
    IsClientInGame(i) && !IsFakeClient(i))
                {
                    
    decl String:g_sName[32];
                    
    decl g_iLatency;
                    
    GetClientName(ig_sName32);
                    
    g_iLatency RoundToNearest(GetClientAvgLatency(iNetFlow:0) * 1000.0);
                    
    PrintToConsole(client"%i ms : %s"g_iLatencyg_sName);
                }
            }
            
        }
        return 
    Plugin_Handled;
    }

    public 
    Action:Timer_CountReset(Handle:timerany:args)
    {
        for(new 
    1<= MaxClients; ++i)
        {
            
    g_iCmdCount[i] = 0;
        }

        return 
    Plugin_Continue;
    }

    StringToLower(String:f_sInput[])
    {
        new 
    f_iSize strlen(f_sInput);
        new 
    i;
        while (
    f_iSize)
        {
            
    f_sInput[i] = CharToLower(f_sInput[i]);
            
    i++;
        }
    }
     
    TWRP нравится это.
  9. TWRP

    TWRP Read Only

    Сообщения:
    317
    Симпатии:
    45
    неа, тоже самое
     
  10. R1KO

    R1KO Супер-модератор

    Сообщения:
    5.988
    Симпатии:
    2.986
    TWRP, зато код почистил)
     
    TWRP нравится это.
  11. TWRP

    TWRP Read Only

    Сообщения:
    317
    Симпатии:
    45
    Оффтоп
    ну так что сделаешь ?
     
  12. R1KO

    R1KO Супер-модератор

    Сообщения:
    5.988
    Симпатии:
    2.986
    TWRP, я щас не соображаю
     
  13. TWRP

    TWRP Read Only

    Сообщения:
    317
    Симпатии:
    45
    Оффтоп
     
  14. R1KO

    R1KO Супер-модератор

    Сообщения:
    5.988
    Симпатии:
    2.986
    TWRP, вот
    PHP:
    new Handle:g_hCvarCmdSpam;
    new 
    Handle:g_hCmds;
    new 
    Handle:g_hCvarShowStatus;
    new 
    Handle:g_hCvarShowPing;
    new 
    g_iCmdCount[66];
    new 
    g_iCmdSpam 4;
    new 
    g_iShowStatus;
    new 
    bool:g_bShowPing;

    public 
    Plugin:myinfo =
    {
        
    name "Status Protect",
        
    description "Status Protect",
        
    author "GoDtm666",
        
    version "1.0.0",
        
    url "http://www.myarena.ru/"
    };

    public 
    OnPluginStart()
    {
        
    g_hCvarCmdSpam CreateConVar("sm_antispam_statusping""4""Сколько раз разрешить игрокам ввести status и ping в 1 секунду."262144true2.0true10.0);
        
    g_iCmdSpam GetConVarInt(g_hCvarCmdSpam);
        
    HookConVarChange(g_hCvarCmdSpamCmdSpam_OnSettingsChanged);
        
    g_hCvarShowStatus CreateConVar("sm_show_status""1""Показывать Status: (0 всем, 1 Админам, 2 Только свой Status)."262144true0.0true2.0);
        
    g_iShowStatus GetConVarInt(g_hCvarShowStatus);
        
    HookConVarChange(g_hCvarShowStatusShowStatus_OnSettingsChanged);
        
    g_hCvarShowPing CreateConVar("sm_show_ping""1""Ping: (0 Не показывать, 1 Показывать)."262144true0.0true1.0);
        
    g_bShowPing GetConVarBool(g_hCvarShowPing);
        
    HookConVarChange(g_hCvarShowPingShowPing_OnSettingsChanged);
        
    RegConsoleCmd("status"StatusCmd);
        
    RegConsoleCmd("ping"PingCmd);
        
    g_hCmds CreateTrie();
        
    SetTrieValue(g_hCmds"status"1true);
        
    SetTrieValue(g_hCmds"ping"1true);
        
    AddCommandListener(Commands_CommandListener);
        
    CreateTimer(1.0Timer_CountReset_1);
        
    LoadTranslations("common.phrases");
    }

    public 
    CmdSpam_OnSettingsChanged(Handle:convarString:oldValue[], String:newValue[])
    {
        
    g_iCmdSpam GetConVarInt(convar);
    }

    public 
    ShowStatus_OnSettingsChanged(Handle:convarString:oldValue[], String:newValue[])
    {
        
    g_iShowStatus GetConVarInt(convar);
    }

    public 
    ShowPing_OnSettingsChanged(Handle:convarString:oldValue[], String:newValue[])
    {
        
    g_bShowPing GetConVarBool(convar);
    }

    public 
    OnAllPluginsLoaded()
    {
        
    AutoExecConfig(true"status_protect""sourcemod");
        
    PrintToServer("%s %s has been loaded successfully.""Status Protect""1.0.0");
    }

    public 
    Action:StatusCmd(clientargs)
    {
        switch (
    g_iShowStatus)
        {
            case 
    0:
            {
                
    DisplayStatus(client);
                
    ForStatusCmd(client);
            }
            case 
    1:
            {
                if (
    CheckCommandAccess(client"admin_notices"2false))
                {
                    if (
    GetCmdReplySource() == SM_REPLY_TO_CHAT)
                    {
                        
    ReplyToCommand(client"[SM] %t""See console for output");
                    }

                    
    DisplayStatus(client);
                    
    ForStatusCmd(client);
                }
            }
            case 
    2:
            {
                if (
    GetCmdReplySource() == SM_REPLY_TO_CHAT)
                {
                    
    ReplyToCommand(client"[SM] %t""See console for output");
                }
                
                
    DisplayStatus(client);
                if (
    CheckCommandAccess(client"admin_notices"2false))
                {
                    
    ForStatusCmd(client);
                }
                else
                {
                    
    PrintToConsole(client"# userid name                             uniqueid               ip-address                   ping");
                    
    DisplayStatusInfo(clientclient);
                }
            }
        }

        return 
    Plugin_Handled;
    }

    ForStatusCmd(client)
    {
        
    PrintToConsole(client"# userid name                             uniqueid               ip-address                   ping");
        for(new 
    1<= MaxClients; ++i)
        {
            if (
    IsClientInGame(i) && !IsFakeClient(i))
            {
                
    DisplayStatusInfo(clienti);
            }
        }
    }

    DisplayStatus(client)
    {
        new 
    g_iClientInServer;
        
    decl String:g_sHostName[512];
        
    decl Handle:g_hHostIp;
        
    decl Handle:g_hHostPort;
        
    decl g_iHostIp;
        
    decl String:g_sServerIpHost[32];
        
    decl String:g_sServerPort[128];
        
    decl String:g_sCurrentMap[256];
        
    decl Handle:g_hHostName;
        
    decl String:g_ServerTime[64];
        
    decl Handle:g_hNextMap;
        
    decl String:g_sNextmap[256];
        
    g_hHostIp FindConVar("hostip");
        
    g_hHostPort FindConVar("hostport");
        
    g_iHostIp GetConVarInt(g_hHostIp);
        
    GetConVarString(g_hHostPortg_sServerPort128);
        
    FormatEx(g_sServerIpHost32"%u.%u.%u.%u:%s"g_iHostIp >>> 24 255g_iHostIp >>> 16 255g_iHostIp >>> 255g_iHostIp 255g_sServerPort);
        
    GetCurrentMap(g_sCurrentMap256);
        
    g_hNextMap FindConVar("sm_nextmap");
        
    GetConVarString(g_hNextMapg_sNextmap256);
        for(new 
    1<= MaxClients; ++i)
        {
            if (
    IsClientInGame(i))
            {
                
    g_iClientInServer++;
            }
        }

        
    g_hHostName FindConVar("hostname");
        
    GetConVarString(g_hHostNameg_sHostName512);
        
    FormatTime(g_ServerTime64NULL_STRING, -1);
        
    PrintToConsole(client"hostname: %s"g_sHostName);
        
    PrintToConsole(client"udp/ip  : %s"g_sServerIpHost);
        
    PrintToConsole(client"map     : %s"g_sCurrentMap);
        if (!
    StrEqual(g_sNextmap""false))
        {
            
    PrintToConsole(client"next map: %s"g_sNextmap);
        }
        
    PrintToConsole(client"players : %d (%d max)"g_iClientInServerMaxClients);
        
    PrintToConsole(client"the time: %s\n"g_ServerTime);
    }

    DisplayStatusInfo(clienti)
    {
        
    decl String:g_sName[32];
        
    decl String:g_sAuthID[32];
        
    decl String:g_sIP[28];
        
    decl g_iLatency;
        
    decl g_iUserID;
        if (!
    GetClientName(ig_sName32))
        {
            
    strcopy(g_sName32"Unknown");
        }
        if (!
    GetClientAuthString(ig_sAuthID32))
        {
            
    strcopy(g_sAuthID32"Unknown");
        }
        if (!
    GetClientIP(ig_sIP28false))
        {
            
    strcopy(g_sIP28"Unknown");
        }
        
    g_iLatency RoundToNearest(GetClientAvgLatency(iNetFlow:0) * 1000.0);
        
    g_iUserID GetClientUserId(i);
        
    PrintToConsole(client"# %-6.6i %-32.31s %-22.29s %-28.29s %-4.5i"g_iUserIDg_sNameg_sAuthIDg_sIPg_iLatency);
    }

    public 
    Action:Commands_CommandListener(clientString:command[], argc)
    {
        if (!
    client)
        {
            return 
    Plugin_Continue;
        }
        if (
    IsClientConnected(client) && IsFakeClient(client))
        {
            return 
    Plugin_Continue;
        }
        if (!
    IsClientInGame(client))
        {
            return 
    Plugin_Stop;
        }
        
    decl bool:f_bBan;
        
    decl String:f_sCmd[64];
        
    strcopy(f_sCmd64command);
        
    StringToLower(f_sCmd);
        if (
    g_iCmdSpam && GetTrieValue(g_hCmdsf_sCmdf_bBan) && ++g_iCmdCount[client] > g_iCmdSpam)
        {
            if (!
    IsClientInKickQueue(client))
            {
                
    KickClient(client"Спам командами status, ping запрещен!");
            }
            return 
    Plugin_Stop;
        }

        return 
    Plugin_Continue;
    }

    public 
    Action:PingCmd(clientargs)
    {
        if (
    g_bShowPing)
        {
            if (
    GetCmdReplySource() == SM_REPLY_TO_CHAT)
            {
                
    ReplyToCommand(client"[SM] %t""See console for output");
            }
            
    PrintToConsole(client"Client ping times:");
            for(new 
    1<= MaxClients; ++i)
            {
                if (
    IsClientInGame(i) && !IsFakeClient(i))
                {
                    
    decl String:g_sName[32];
                    
    decl g_iLatency;
                    
    GetClientName(ig_sName32);
                    
    g_iLatency RoundToNearest(GetClientAvgLatency(iNetFlow:0) * 1000.0);
                    
    PrintToConsole(client"%i ms : %s"g_iLatencyg_sName);
                }
            }
            
        }
        return 
    Plugin_Handled;
    }

    public 
    Action:Timer_CountReset(Handle:timerany:args)
    {
        for(new 
    1<= MaxClients; ++i)
        {
            
    g_iCmdCount[i] = 0;
        }

        return 
    Plugin_Continue;
    }

    StringToLower(String:f_sInput[])
    {
        new 
    f_iSize strlen(f_sInput);
        new 
    i;
        while (
    f_iSize)
        {
            
    f_sInput[i] = CharToLower(f_sInput[i]);
            
    i++;
        }
    }
     
    mumuxtarka и TWRP нравится это.
  15. TWRP

    TWRP Read Only

    Сообщения:
    317
    Симпатии:
    45
    спасибо :good:
     
  16. GoDtm666

    GoDtm666

    Сообщения:
    522
    Симпатии:
    558
    Толку от этого?, когда плагин это всего лишь 30% проверки/работы.
     
  17. vaxa

    vaxa Rock Rulet!

    Сообщения:
    859
    Симпатии:
    102
    GoDtm666, Так сделай на все 100% и продавай за 30к деревянных:-D
     
  18. GoDtm666

    GoDtm666

    Сообщения:
    522
    Симпатии:
    558
    Он был на 100% рабочим, пока модеры не прикрыли лавочку с темой :)
     
  19. TWRP

    TWRP Read Only

    Сообщения:
    317
    Симпатии:
    45
    кстати он блокирует соурсбанс
    с соурсбанса нельзя игрока кикнуть, пишет мол игрок покинул сервер, а на самом деле он на сервере. Выгрузив плаг все стает норм :)
     
  20. R1KO

    R1KO Супер-модератор

    Сообщения:
    5.988
    Симпатии:
    2.986
    GoDtm666, потому что автор не следил за ней. Ссылки уже не работали.