Как отключить HUD всем игрокам на сервере cs go

Ju4qa

Участник
Сообщения
280
Реакции
63
Нужно отключить HUD всем игрокам на сервере без возможности его вкл игроком. Как при команде cl_draw_only_deathnotices 1

Сделал что-то вот такое:


C-подобный:
#include <sourcemod>
#include <cstrike>
#include <sdkhooks>

public void OnPluginStart()
{
    HookEvent("player_spawn", Event_PlayerSpawn);
}

public Action Event_PlayerSpawn(Event event,const char[] name, bool dontBroadcast)
{
    int client = GetClientOfUserId(GetEventInt(event, "userid"));
    FakeClientCommand(client, "cl_draw_only_deathnotices 1");
}

Всё скомпилилось и на сервере ошибок не выдает. Но есть одно но. Оно не работает
 
Последнее редактирование:

Someone

Участник
Сообщения
1,933
Реакции
1,653
Нужно отключить HUD всем игрокам на сервере без возможности его вкл игроком. Как при команде cl_draw_only_deathnotices 1


Всё скомпилилось и на сервере ошибок не выдает. Но есть одно но. Оно не работает
Потому что это клиентская переменная.

Попробуй:
C++:
public void OnPluginStart()
{
    HookEvent("player_spawn", Event_PlayerSpawn);
}

public void Event_PlayerSpawn(Event hEvent, const char[] sName, bool bDontBroadcast)
{
    int iClient = GetClientOfUserId(hEvent.GetInt("userid"));
    if(!IsClientSourceTV(iClient))
    {
        static int iHUD;
        if(!iHUD)
        {
            iHUD = FindSendPropInfo("CCSPlayer", "m_iHideHUD");
        }
    
        SetEntData(iClient, iHUD, GetEntData(iClient, iHUD) |= ( 1<<2 ));
    }
}
 
Последнее редактирование:

Ju4qa

Участник
Сообщения
280
Реакции
63
Потому что это клиентская переменная.

Попробуй:
C++:
public void OnPluginStart()
{
    HookEvent("player_spawn", Event_PlayerSpawn);
}

public void Event_PlayerSpawn(Event hEvent, const char[] sName, bool bDontBroadcast)
{
    int iClient = GetClientOfUserId(hEvent.GetInt("userid"));
    if(!IsClientSourceTV(iClient))
    {
        static int iHUD;
        if(iHUD == -1)
        {
            iHUD = FindSendPropInfo("CCSPlayer", "m_iHideHUD");
        }
      
        int iFlags = GetEntData(iClient, iHUD);
        iFlags |= ( 1<<2 );
        SetEntData(iClient, iHUD, iFlags);
    }
}
неа. в логах это:


L 08/03/2019 - 19:55:13: [SM] Blaming: textUgIkOS.smx
L 08/03/2019 - 19:55:13: [SM] Call stack trace:
L 08/03/2019 - 19:55:13: [SM] [0] SetEntData
L 08/03/2019 - 19:55:13: [SM] [1] Line 21, /groups/sourcemod/upload_tmp/textUgIkOS.sp::Event_PlayerSpawn
L 08/03/2019 - 19:56:33: [SM] Exception reported: Offset 0 is invalid
 

Someone

Участник
Сообщения
1,933
Реакции
1,653
неа. в логах это:


L 08/03/2019 - 19:55:13: [SM] Blaming: textUgIkOS.smx
L 08/03/2019 - 19:55:13: [SM] Call stack trace:
L 08/03/2019 - 19:55:13: [SM] [0] SetEntData
L 08/03/2019 - 19:55:13: [SM] [1] Line 21, /groups/sourcemod/upload_tmp/textUgIkOS.sp::Event_PlayerSpawn
L 08/03/2019 - 19:56:33: [SM] Exception reported: Offset 0 is invalid
Обновил код.
 

Ju4qa

Участник
Сообщения
280
Реакции
63
/groups/sourcemod/upload_tmp/textYkY8Gk.sp(17) : error 022: must be lvalue (non-constant)
/groups/sourcemod/upload_tmp/textYkY8Gk.sp(17) : warning 215: expression has no effect
/groups/sourcemod/upload_tmp/textYkY8Gk.sp(17) : error 001: expected token: ";", but found ")"
/groups/sourcemod/upload_tmp/textYkY8Gk.sp(17) : error 029: invalid expression, assumed zero
/groups/sourcemod/upload_tmp/textYkY8Gk.sp(17) : fatal error 189: too many error messages on one line

Compilation aborted.
4 Errors.
 

Someone

Участник
Сообщения
1,933
Реакции
1,653
/groups/sourcemod/upload_tmp/textYkY8Gk.sp(17) : error 022: must be lvalue (non-constant)
/groups/sourcemod/upload_tmp/textYkY8Gk.sp(17) : warning 215: expression has no effect
/groups/sourcemod/upload_tmp/textYkY8Gk.sp(17) : error 001: expected token: ";", but found ")"
/groups/sourcemod/upload_tmp/textYkY8Gk.sp(17) : error 029: invalid expression, assumed zero
/groups/sourcemod/upload_tmp/textYkY8Gk.sp(17) : fatal error 189: too many error messages on one line

Compilation aborted.
4 Errors.
C++:
public void OnPluginStart()
{
    HookEvent("player_spawn", Event_PlayerSpawn);
}

public void Event_PlayerSpawn(Event hEvent, const char[] sName, bool bDontBroadcast)
{
    int iClient = GetClientOfUserId(hEvent.GetInt("userid"));
    if(!IsClientSourceTV(iClient))
    {
        static int iHUD;
        if(!iHUD)
        {
            iHUD = FindSendPropInfo("CCSPlayer", "m_iHideHUD");
        }
        int iFlags = GetEntData(iClient, iHUD);
        iFlags |= ( 1<<2 );
        SetEntData(iClient, iHUD, iFlags);
    }
}
 

Ju4qa

Участник
Сообщения
280
Реакции
63
C++:
public void OnPluginStart()
{
    HookEvent("player_spawn", Event_PlayerSpawn);
}

public void Event_PlayerSpawn(Event hEvent, const char[] sName, bool bDontBroadcast)
{
    int iClient = GetClientOfUserId(hEvent.GetInt("userid"));
    if(!IsClientSourceTV(iClient))
    {
        static int iHUD;
        if(!iHUD)
        {
            iHUD = FindSendPropInfo("CCSPlayer", "m_iHideHUD");
        }
        int iFlags = GetEntData(iClient, iHUD);
        iFlags |= ( 1<<2 );
        SetEntData(iClient, iHUD, iFlags);
    }
}
увы, но ничего
 

x330122

Участник
Сообщения
357
Реакции
152
C++:
public void OnPluginStart()
{
    HookEvent("player_spawn", Event_PlayerSpawn);
}

public void Event_PlayerSpawn(Event hEvent, const char[] sName, bool bDontBroadcast)
{
    int iClient = GetClientOfUserId(hEvent.GetInt("userid"));
    if(!IsClientSourceTV(iClient))
    {
        static int iHUD;
        if(!iHUD)
        {
            iHUD = FindSendPropInfo("CCSPlayer", "m_iHideHUD");
        }
        int iFlags = GetEntData(iClient, iHUD);
        iFlags |= ( 1<<2 );
        SetEntData(iClient, iHUD, iFlags);
    }
}
SetEntProp нужно вроде. То-есть SetEntProp(iClient, Prop_Send, "m_iHideHud", iFlags);
 

Grey83

не пишу плагины с весны 2022
Сообщения
8,558
Реакции
5,051
Вот так попробуй:
C++:
public void OnPluginStart()
{
    HookEvent("player_spawn", Event_PlayerSpawn);
}

public void Event_PlayerSpawn(Event event, const char[] sName, bool bDontBroadcast)
{
    static int client, m_iHideHUD;
    if((client = GetClientOfUserId(event.GetInt("userid"))) && !IsClientSourceTV(client))
    {
        if(!m_iHideHUD) m_iHideHUD = FindDataMapInfo(client, "m_iHideHUD");
        if(m_iHideHUD == -1) SetFailState("Can't find offset 'm_iHideHUD'!");
        SetEntData(client, m_iHideHUD, GetEntData(client, m_iHideHUD)|(1 << 2));
    }
}
К сожалению я не помню где нужно менять этот параметр в нетпропах и датамапах. Так что будем менять в датамапах

Кстати, это чат по идее должно убирать и не давать покупать оружие, емнип. =)
 

Ju4qa

Участник
Сообщения
280
Реакции
63
Вот так попробуй:
C++:
public void OnPluginStart()
{
    HookEvent("player_spawn", Event_PlayerSpawn);
}

public void Event_PlayerSpawn(Event event, const char[] sName, bool bDontBroadcast)
{
    static int client, m_iHideHUD;
    if((client = GetClientOfUserId(event.GetInt("userid"))) && !IsClientSourceTV(client))
    {
        if(!m_iHideHUD) m_iHideHUD = FindDataMapInfo(client, "m_iHideHUD");
        if(m_iHideHUD == -1) SetFailState("Can't find offset 'm_iHideHUD'!");
        SetEntData(client, m_iHideHUD, GetEntData(client, m_iHideHUD)|(1 << 2));
    }
}
К сожалению я не помню где нужно менять этот параметр в нетпропах и датамапах. Так что будем менять в датамапах

Кстати, это чат по идее должно убирать и не давать покупать оружие, емнип. =)
увы и ах. не робит
 

Ju4qa

Участник
Сообщения
280
Реакции
63
C-подобный:
#pragma semicolon 1


#define PLUGIN_AUTHOR ""
#define PLUGIN_VERSION "0.00"

#include <sourcemod>
#include <sdktools>
#include <sdkhooks>

public Plugin myinfo =
{
    name = "",
    author = PLUGIN_AUTHOR,
    description = "",
    version = PLUGIN_VERSION,
    url = ""
};

public void OnPluginStart()
{
    HookEvent("player_spawn", Event_PlayerSpawn);
}

public void Event_PlayerSpawn(Event event, const char[] sName, bool bDontBroadcast)
{
  
    int client = GetClientOfUserId(event.GetInt("userid"));
    if (client)
    {
        SetEntProp(client, Prop_Send, "m_iHideHUD", (1 << 2));
    }
}
всё ещё нет
 

Grey83

не пишу плагины с весны 2022
Сообщения
8,558
Реакции
5,051
а как ты проверяешь?
 

x330122

Участник
Сообщения
357
Реакции
152
компилирую. заливаю на сервер. перезапускаю его и проверяю
C-подобный:
#pragma semicolon 1

#define DEBUG

#define PLUGIN_AUTHOR ""
#define PLUGIN_VERSION "0.00"

#include <sourcemod>
#include <sdktools>
#include <sdkhooks>

public Plugin myinfo =
{
    name = "",
    author = PLUGIN_AUTHOR,
    description = "",
    version = PLUGIN_VERSION,
    url = ""
};

public void OnPluginStart()
{
    HookEvent("player_spawn", Event_PlayerSpawn);
}

public Action Event_PlayerSpawn(Event event, const char[] sName, bool bDontBroadcast)
{

    int client = GetClientOfUserId(event.GetInt("userid"));
    if(client) RequestFrame(DUU, client);
}
public void DUU(int client)
{
    SetEntProp(client, Prop_Send, "m_iHideHUD", (1 << 2));
    
}
 

Ju4qa

Участник
Сообщения
280
Реакции
63
C-подобный:
#pragma semicolon 1

#define DEBUG

#define PLUGIN_AUTHOR ""
#define PLUGIN_VERSION "0.00"

#include <sourcemod>
#include <sdktools>
#include <sdkhooks>

public Plugin myinfo =
{
    name = "",
    author = PLUGIN_AUTHOR,
    description = "",
    version = PLUGIN_VERSION,
    url = ""
};

public void OnPluginStart()
{
    HookEvent("player_spawn", Event_PlayerSpawn);
}

public Action Event_PlayerSpawn(Event event, const char[] sName, bool bDontBroadcast)
{

    int client = GetClientOfUserId(event.GetInt("userid"));
    if(client) RequestFrame(DUU, client);
}
public void DUU(int client)
{
    SetEntProp(client, Prop_Send, "m_iHideHUD", (1 << 2));
   
}
работает, но не совсем так как нужно. пропал прицел и не работает выбор оружия. кроме основного на другое не переключить и осмотреть нельзя
 

Someone

Участник
Сообщения
1,933
Реакции
1,653
работает, но не совсем так как нужно. пропал прицел и не работает выбор оружия. кроме основного на другое не переключить и осмотреть нельзя
Попробуй:
C++:
public void OnPluginStart()
{
    HookEvent("player_spawn", Event_PlayerSpawn);
}

public void Event_PlayerSpawn(Event hEvent, const char[] sName, bool bDontBroadcast)
{
    int iClient = GetClientOfUserId(hEvent.GetInt("userid"));
    if(!IsClientSourceTV(iClient))    RequestFrame(FrameSpawn, iClient);
}

void FrameSpawn(int iClient)
{
    static int iHUD;
    if(!iHUD)    iHUD = FindSendPropInfo("CCSPlayer", "m_iHideHUD");
    SetEntData(iClient, iHUD, 265);
}
 

Ju4qa

Участник
Сообщения
280
Реакции
63
Попробуй:
C++:
public void OnPluginStart()
{
    HookEvent("player_spawn", Event_PlayerSpawn);
}

public void Event_PlayerSpawn(Event hEvent, const char[] sName, bool bDontBroadcast)
{
    int iClient = GetClientOfUserId(hEvent.GetInt("userid"));
    if(!IsClientSourceTV(iClient))    RequestFrame(FrameSpawn, iClient);
}

void FrameSpawn(int iClient)
{
    static int iHUD;
    if(!iHUD)    iHUD = FindSendPropInfo("CCSPlayer", "m_iHideHUD");
    SetEntData(iClient, iHUD, 265);
}
/groups/sourcemod/upload_tmp/textnbBpJh.sp(9) : error 076: syntax error in the expression, or invalid function call
/groups/sourcemod/upload_tmp/textnbBpJh.sp(17) : warning 203: symbol is never used: "FrameSpawn"

1 Error.
 
Сверху Снизу