[CSGO] Запрет TAB'а

Тема в разделе "Программирование / Скриптинг", создана пользователем X-AROK, 28 авг 2016.

Метки:
  1. X-AROK

    X-AROK

    Сообщения:
    5
    Симпатии:
    0
    Можно ли как-нибудь запретить использование TAB'a (просмотр статистики)?
     
  2. R1KO

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

    Сообщения:
    5.994
    Симпатии:
    2.990
    @X-AROK, пробуй так
    PHP:
    public Action:OnPlayerRunCmd(client, &buttons, &impulseFloat:vel[3], Float:angles[3], &weapon)
    {
         if ( 
    buttons IN_SCORE)
         {
             
    buttons &= ~IN_SCORE;
             return 
    Plugin_Changed;
         }
         return 
    Plugin_Continue;
    }
     
    Последнее редактирование: 29 авг 2016
  3. X-AROK

    X-AROK

    Сообщения:
    5
    Симпатии:
    0
    @R1KO, Все равно открывается
     
  4. R1KO

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

    Сообщения:
    5.994
    Симпатии:
    2.990
    @X-AROK, ну тогда хук VGUI и проверка на "scores"
    PHP:
    #include <sourcemod>

    public OnPluginStart()
    {
        
    HookUserMessageGetUserMessageId"VGUIMenu" ), OnMsgVGUIMenu );
    }

    public 
    Action:OnMsgVGUIMenu(UserMsg:msg_idHandle:pb, const players[], playersNumbool:reliablebool:init)
    {
        
    decl String:buffer[16];
        
    PbReadString(pb"name"buffersizeof(buffer));
        if (
    strcmp(buffer"scores"false) == 0)
        {
            return 
    Plugin_Handled;
        }
        return 
    Plugin_Continue;
    }
     
  5. Big

    Big

    Сообщения:
    116
    Симпатии:
    37
  6. X-AROK

    X-AROK

    Сообщения:
    5
    Симпатии:
    0
    @R1KO, не хочет работать
    для проверки добавлял PrintToChatAll("проверка");
    в первом случае выводилось, пока таб зажат, во втором вообще ничего
     
  7. FrozDark

    FrozDark Команда сайта HLMod Модератор

    Сообщения:
    1.761
    Симпатии:
    1.915
    TAB вроде бы генерируется клиентской стороной
     
  8. gibs

    gibs Фитиль народного волненья

    Сообщения:
    538
    Симпатии:
    137
    Это и есть клиентская команда showscores. Заблокировать её со стороны сервера невозможно.
     
  9. X-AROK

    X-AROK

    Сообщения:
    5
    Симпатии:
    0
    @FrozDark, @gibs, мне это нужно было, чтобы игроки не знали, кто в какой команде находится. Возможно ли это как-нибудь по другому сделать?
     
  10. avanger.usa

    avanger.usa

    Сообщения:
    76
    Симпатии:
    19
    Пробуй
    PHP:
    #include <sdkhooks>
    public OnConfigsExecuted()
    {
        
    SDKHookEx(GetPlayerResourceEntity(), SDKHook_ThinkPostOnResourceThink)
    }
    public 
    OnResourceThink(entity)
    {
        static 
    m_bConnected;

        if (!
    m_bConnected)
        {
            switch (
    GetEngineVersion())
            {
                case 
    Engine_DODS:
                {
                    
    m_bConnected FindSendPropOffs("CDODPlayerResource""m_bConnected");
                }
                case 
    Engine_TF2:
                {
                    
    m_bConnected FindSendPropOffs("CTFPlayerResource""m_bConnected");
                }
                case 
    Engine_CSGOEngine_CSS:
                {
                    
    m_bConnected FindSendPropOffs("CCSPlayerResource""m_bConnected");
                }
            }
        }
        for (new 
    1<= MaxClientsi++)
        {
            if (
    IsClientInGame(i))
            {
                
    SetEntData(entitym_bConnected + (4), falsetruetrue);
            }
        }
    }
     
    Последнее редактирование: 29 авг 2016
    X-AROK нравится это.
  11. diller110

    diller110

    Сообщения:
    138
    Симпатии:
    48
    @avanger.usa, Работает, но очень забавно)
    Только ты забыл #include <sdktools> для GetPlayerResourceEntity()
    Код:
    #include <sdktools>
    #include <sdkhooks>
    
    public OnConfigsExecuted() {
        SDKHookEx(GetPlayerResourceEntity(), SDKHook_ThinkPost, OnResourceThink)
    }
    
    public OnResourceThink(entity) {
        static m_bConnected;
        if (!m_bConnected) {
            switch (GetEngineVersion()) { 
                case Engine_DODS: { 
                    m_bConnected = FindSendPropInfo("CDODPlayerResource", "m_bConnected");
                }           
                case Engine_TF2: {   
                    m_bConnected = FindSendPropInfo("CTFPlayerResource", "m_bConnected");
                }
                case Engine_CSGO, Engine_CSS: {
                    m_bConnected = FindSendPropInfo("CCSPlayerResource", "m_bConnected");
                }
            } 
        }   
        for (new i = 1; i <= MaxClients; i++) {
            if (IsClientInGame(i)) {
                SetEntData(entity, m_bConnected + (i * 4), false, true, true);
            } 
        }
    }
    Он блокирует не только таб, но и ники сообщений в чат, и ники при отображении убийства)
     

    Вложения:

    • blocktab.png
      blocktab.png
      Размер файла:
      1,6 МБ
      Просмотров:
      42
  12. avanger.usa

    avanger.usa

    Сообщения:
    76
    Симпатии:
    19
    На быструю фигачил , кто может фиксите :)
    --- Добавлено позже ---
    Вообще можно так попробовать
    PHP:
    #include <sdkhooks>
    #include <sdktools>

    public OnMapStart()
    {
        new 
    iEnt = -1;
        
    iEnt FindEntityByClassname(iEnt"cs_player_manager");
        if (
    iEnt != INVALID_ENT_REFERENCE) {
            
    SDKHook(iEntSDKHook_ThinkPostHook_OnThinkPost_Player);
        }
    }

    public 
    Hook_OnThinkPost_Player(iEnt) {
        static 
    iAliveOffset = -1;
        if (
    iAliveOffset == -1)
            
    iAliveOffset FindSendPropInfo("CCSPlayerResource""m_bAlive");
        static 
    iKillOffset = -1;
        if (
    iKillOffset == -1)
            
    iKillOffset FindSendPropInfo("CCSPlayerResource""m_iKills");
        static 
    iDeathOffset = -1;
        if (
    iDeathOffset == -1)
            
    iDeathOffset FindSendPropInfo("CCSPlayerResource""m_iDeaths");
        static 
    iAssistsOffset = -1;
        if (
    iAssistsOffset == -1)
            
    iAssistsOffset FindSendPropInfo("CCSPlayerResource""m_iAssists");
        static 
    iScoreOffset = -1;
        if (
    iScoreOffset == -1)
            
    iScoreOffset FindSendPropInfo("CCSPlayerResource""m_iScore");
        new 
    iAlive[MAXPLAYERS+1] = {1,...};
        new 
    iZeroes[MAXPLAYERS+1] = {0,...};
        
    SetEntDataArray(iEntiAliveOffsetiAliveMaxClients+1);
        
    SetEntDataArray(iEntiKillOffsetiZeroesMaxClients+1);
        
    SetEntDataArray(iEntiDeathOffsetiZeroesMaxClients+1);
        
    SetEntDataArray(iEntiAssistsOffsetiZeroesMaxClients+1);
        
    SetEntDataArray(iEntiScoreOffsetiZeroesMaxClients+1);
    }  
     
  13. X-AROK

    X-AROK

    Сообщения:
    5
    Симпатии:
    0
    это не работает, а за первый вариант спасибо
    но хотелось бы, чтобы в голосовом чате отображался ник
    [​IMG]
     
    Последнее редактирование: 30 авг 2016
  14. September

    September

    Сообщения:
    1.187
    Симпатии:
    164
    А если просто каждые 5 сек менять позицию игрока из одной команды в другую команду, но в действительно не переводить. Тогда игрок не совсм будет знать в какой он команде. Да, наркомания:biggrin: