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

X-AROK

Участник
Сообщения
15
Реакции
16
Можно ли как-нибудь запретить использование TAB'a (просмотр статистики)?
 

R1KO

fuck society
Сообщения
9,457
Реакции
7,786
  • Команда форума
  • #2
@X-AROK, пробуй так
PHP:
public Action:OnPlayerRunCmd(client, &buttons, &impulse, Float:vel[3], Float:angles[3], &weapon)
{
     if ( buttons & IN_SCORE)
     {
         buttons &= ~IN_SCORE;
         return Plugin_Changed;
     }
     return Plugin_Continue;
}
 
Последнее редактирование:

R1KO

fuck society
Сообщения
9,457
Реакции
7,786
  • Команда форума
  • #4
@X-AROK, ну тогда хук VGUI и проверка на "scores"
PHP:
#include <sourcemod>

public OnPluginStart()
{
    HookUserMessage( GetUserMessageId( "VGUIMenu" ), OnMsgVGUIMenu );
}

public Action:OnMsgVGUIMenu(UserMsg:msg_id, Handle:pb, const players[], playersNum, bool:reliable, bool:init)
{
    decl String:buffer[16];
    PbReadString(pb, "name", buffer, sizeof(buffer));
    if (strcmp(buffer, "scores", false) == 0)
    {
        return Plugin_Handled;
    }
    return Plugin_Continue;
}
 

X-AROK

Участник
Сообщения
15
Реакции
16
@R1KO, не хочет работать
для проверки добавлял PrintToChatAll("проверка");
в первом случае выводилось, пока таб зажат, во втором вообще ничего
 

FrozDark

Участник
Сообщения
1,769
Реакции
2,050
TAB вроде бы генерируется клиентской стороной
 

gibs

Фитиль народного волненья
Сообщения
722
Реакции
407
Мошенник
Это и есть клиентская команда showscores. Заблокировать её со стороны сервера невозможно.
 

X-AROK

Участник
Сообщения
15
Реакции
16
@FrozDark, @gibs, мне это нужно было, чтобы игроки не знали, кто в какой команде находится. Возможно ли это как-нибудь по другому сделать?
 

avanger.usa

Участник
Сообщения
113
Реакции
30
@FrozDark, @gibs, мне это нужно было, чтобы игроки не знали, кто в какой команде находится. Возможно ли это как-нибудь по другому сделать?
Пробуй
PHP:
#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 = FindSendPropOffs("CDODPlayerResource", "m_bConnected");
            }
            case Engine_TF2:
            {
                m_bConnected = FindSendPropOffs("CTFPlayerResource", "m_bConnected");
            }
            case Engine_CSGO, Engine_CSS:
            {
                m_bConnected = FindSendPropOffs("CCSPlayerResource", "m_bConnected");
            }
        }
    }
    for (new i = 1; i <= MaxClients; i++)
    {
        if (IsClientInGame(i))
        {
            SetEntData(entity, m_bConnected + (i * 4), false, true, true);
        }
    }
}
 
Последнее редактирование:

diller110

Добрая душа
Сообщения
353
Реакции
278
@avanger.usa, Работает, но очень забавно)
Только ты забыл #include <sdktools> для GetPlayerResourceEntity()
C-подобный:
#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
    491.6 КБ · Просмотры: 195

avanger.usa

Участник
Сообщения
113
Реакции
30
@avanger.usa, Работает, но очень забавно)
Только ты забыл #include <sdktools> для GetPlayerResourceEntity()
C-подобный:
#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);
        }
    }
}
Он блокирует не только таб, но и ники сообщений в чат, и ники при отображении убийства)
На быструю фигачил , кто может фиксите :)
--- Добавлено позже ---
Вообще можно так попробовать
PHP:
#include <sdkhooks>
#include <sdktools>

public OnMapStart()
{
    new iEnt = -1;
    iEnt = FindEntityByClassname(iEnt, "cs_player_manager");
    if (iEnt != INVALID_ENT_REFERENCE) {
        SDKHook(iEnt, SDKHook_ThinkPost, Hook_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(iEnt, iAliveOffset, iAlive, MaxClients+1);
    SetEntDataArray(iEnt, iKillOffset, iZeroes, MaxClients+1);
    SetEntDataArray(iEnt, iDeathOffset, iZeroes, MaxClients+1);
    SetEntDataArray(iEnt, iAssistsOffset, iZeroes, MaxClients+1);
    SetEntDataArray(iEnt, iScoreOffset, iZeroes, MaxClients+1);
}
 

X-AROK

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

public OnMapStart()
{
    new iEnt = -1;
    iEnt = FindEntityByClassname(iEnt, "cs_player_manager");
    if (iEnt != INVALID_ENT_REFERENCE) {
        SDKHook(iEnt, SDKHook_ThinkPost, Hook_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(iEnt, iAliveOffset, iAlive, MaxClients+1);
    SetEntDataArray(iEnt, iKillOffset, iZeroes, MaxClients+1);
    SetEntDataArray(iEnt, iDeathOffset, iZeroes, MaxClients+1);
    SetEntDataArray(iEnt, iAssistsOffset, iZeroes, MaxClients+1);
    SetEntDataArray(iEnt, iScoreOffset, iZeroes, MaxClients+1);
}
это не работает, а за первый вариант спасибо
но хотелось бы, чтобы в голосовом чате отображался ник
411216b8c9e5.jpg
 
Последнее редактирование:

September

Участник
Сообщения
5,238
Реакции
2,742
  • Команда форума
  • #14
@FrozDark, @gibs, мне это нужно было, чтобы игроки не знали, кто в какой команде находится. Возможно ли это как-нибудь по другому сделать?

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