[CSGO] Как скрыть игрока с радара

komashchenko

Идиот
Сообщения
916
Реакции
2,570
Долго искал способ как же скрыть с радара кого-то 1 иногда это нужно, от вам способ

PHP:
#pragma semicolon 1
#include <sdktools>

//На самом деле это флаги Spotted у игрока, разбираться в них лень, но по умолчанию 9, 0 - блокирует обновление данных игрока на радаре
//Я не заметил что б игра меняла флаги посреди игры, игрок может менять команды и так дальше но значение не меняется, как я понял оно ставиться только 1 раз при входе
Address g_aCanBeSpotted = view_as<Address>(892); //винда 868

public void OnPluginStart()
{
    RegConsoleCmd("hide", hide);
    RegConsoleCmd("uhide", uhide);
}

public Action hide(int iClient, int args)
{
    //Нужно для того что б когда мы блокируем обновление игрока на радаре, он не остался постоянно видимым на нем
    SetEntProp(iClient, Prop_Send, "m_bSpotted", false);
    SetEntProp(iClient, Prop_Send, "m_bSpottedByMask", 0, 4, 0);
    SetEntProp(iClient, Prop_Send, "m_bSpottedByMask", 0, 4, 1);
 
    //Устанавлюем флаги на 0
    StoreToAddress(GetEntityAddress(iClient)+g_aCanBeSpotted, 0, NumberType_Int32);
}

public Action uhide(int iClient, int args)
{
    //Установлен флаги по умолчанию
    StoreToAddress(GetEntityAddress(iClient)+g_aCanBeSpotted, 9, NumberType_Int32);
}

Демонстрация работоспособности (смотрим на радар)
Steam Community :: Screenshot
Steam Community :: Screenshot
Steam Community :: Screenshot
 
Последнее редактирование:

komashchenko

Идиот
Сообщения
916
Реакции
2,570
Обновил: работает без сигнатур на винде и линуксе, спасибо Kailo
 
Последнее редактирование:

Kailo

Участник
Сообщения
194
Реакции
896
Мы вытаскивали эти значения из бинарников при помощи IDA, но у меня есть теория. Надо проверить.
В CS:GO windows, "m_bSpotted" имеет offset 872, так что вероятно нужна переменная на 4 меньше, т.е.
PHP:
int offset = FindSendPropInfo("CBaseEntity", "m_bSpotted");
if (offset <= 0)
    SetFailState("Can't get m_bSpotted offset");
Address g_aCanBeSpotted = view_as<Address>(offset - 4);
 

DenisPukin

Капитан Костыль
Сообщения
185
Реакции
34
А можно сделать так, что бы союзников не было видно на радаре?
 

Flavian

Участник
Сообщения
34
Реакции
3
Долго искал способ как же скрыть с радара кого-то 1 иногда это нужно, от вам способ

PHP:
#pragma semicolon 1
#include <sdktools>

//На самом деле это флаги Spotted у игрока, разбираться в них лень, но по умолчанию 9, 0 - блокирует обновление данных игрока на радаре
//Я не заметил что б игра меняла флаги посреди игры, игрок может менять команды и так дальше но значение не меняется, как я понял оно ставиться только 1 раз при входе
Address g_aCanBeSpotted = view_as<Address>(892); //винда 868

public void OnPluginStart()
{
    RegConsoleCmd("hide", hide);
    RegConsoleCmd("uhide", uhide);
}

public Action hide(int iClient, int args)
{
    //Нужно для того что б когда мы блокируем обновление игрока на радаре, он не остался постоянно видимым на нем
    SetEntProp(iClient, Prop_Send, "m_bSpotted", false);
    SetEntProp(iClient, Prop_Send, "m_bSpottedByMask", 0, 4, 0);
    SetEntProp(iClient, Prop_Send, "m_bSpottedByMask", 0, 4, 1);
 
    //Устанавлюем флаги на 0
    StoreToAddress(GetEntityAddress(iClient)+g_aCanBeSpotted, 0, NumberType_Int32);
}

public Action uhide(int iClient, int args)
{
    //Установлен флаги по умолчанию
    StoreToAddress(GetEntityAddress(iClient)+g_aCanBeSpotted, 9, NumberType_Int32);
}

Демонстрация работоспособности (смотрим на радар)
Steam Community :: Screenshot
Steam Community :: Screenshot
Steam Community :: Screenshot
Здравствуйте , а куда это все писать??
 

qubka

Zombie Plague Разработчик
Сообщения
245
Реакции
244
Мы вытаскивали эти значения из бинарников при помощи IDA, но у меня есть теория. Надо проверить.
В CS:GO windows, "m_bSpotted" имеет offset 872, так что вероятно нужна переменная на 4 меньше, т.е.
PHP:
int offset = FindSendPropInfo("CBaseEntity", "m_bSpotted");
if (offset <= 0)
    SetFailState("Can't get m_bSpotted offset");
Address g_aCanBeSpotted = view_as<Address>(offset - 4);
да ты прав, у меня так работает все, на линуксе
 

Kailo

Участник
Сообщения
194
Реакции
896
да ты прав, у меня так работает все, на линуксе
Можно немного проще сделать.
PHP:
int offset = FindSendPropInfo("CBaseEntity", "m_bSpotted");
if (offset <= 0)
    SetFailState("Can't get m_bSpotted offset");
int g_iCanBeSpotted = offset - 4;
SetEntData(entity, g_iCanBeSpotted, 0);
 

Banana

Участник
Сообщения
892
Реакции
113
А подскажите пожалуйста как показывать на радаре соперников всегда?
 
Сверху Снизу