Вопрос Обводка объектов...

Пользователь
Статус
Оффлайн
Регистрация
21 Окт 2019
Сообщения
346
Реакции[?]
48
Поинты[?]
15K
Почему-то при обводке объектов, например, мин или кейсов с ресами, если смещать камеру персонажа, то отрисовка исчезает. Пробовал юзать силуэт через адрес и через рендер - везде пропадает при смещении камеры. На скринах ниже это продемонстрировано.
C++:
class CEntityRenderProxy
{
public:
    void SetRenderFlags(int32 flag)
    {
        *(int32*)((int64)this + 0x24) = flag;
    }
    IRenderNode* GetRenderNode()
    {
        return (IRenderNode*)((int64)this + 0x0008);
    }
    void SetHUDSilhouet(float a, float r, float g, float b)
    {
        return XFunction<void(__fastcall*)(PVOID, f32, f32, f32, f32)>(this, 0x160)(this, a, r, g, b);
    }
};
C++:
enum EEntityProxy { ENTITY_PROXY_RENDER };

enum ESilhouettesParams {
    eAllMap = 524312,
    eLimitDistance = 524296
};
void EnemyHUDSilhouettes(CEntityRenderProxy * p_RenderProxy, float Red, float Green, float Blue)
{
    p_RenderProxy->SetRenderFlags(eAllMap);
    p_RenderProxy->SetHUDSilhouet(255, Red, Green, Blue);
}
Реализация:
C++:
while (CEntity* pEntity = pEntityIt->Next())
        {
            auto pRenderProxy = pEntity->GetEntityRenderProxy();
            if (!pRenderProxy)
                continue;
            const char* Entity_Name = pEntity->GetName();

            if (!pEntity->IsHidden())
            {
                if (strstr(Entity_Name, "ammo"))
                {
                    if (ammo) EnemyHUDSilhouettes(pRenderProxy, 255, 0.0f, 255);//обводка взрывчатки
                    continue;
                }
      
          }
Всё нормально...
ScreenShot0028.jpg
Но стоит зайти за текстуру то всё пропало....
ScreenShot0029.jpg
 
Последнее редактирование:
Energy Reload
Забаненный
Статус
Оффлайн
Регистрация
20 Авг 2017
Сообщения
1,206
Реакции[?]
330
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
За всеми текстурами пропадает обводка?
 
Energy Reload
Забаненный
Статус
Оффлайн
Регистрация
20 Авг 2017
Сообщения
1,206
Реакции[?]
330
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Energy Reload
Забаненный
Статус
Оффлайн
Регистрация
20 Авг 2017
Сообщения
1,206
Реакции[?]
330
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Забаненный
Статус
Оффлайн
Регистрация
16 Фев 2021
Сообщения
45
Реакции[?]
40
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Почему-то при обводке объектов, например, мин или кейсов с ресами, если смещать камеру персонажа, то отрисовка исчезает. Пробовал юзать силуэт через адрес и через рендер - везде пропадает при смещении камеры. На скринах ниже это продемонстрировано.
C++:
class CEntityRenderProxy
{
public:
    void SetRenderFlags(int32 flag)
    {
        *(int32*)((int64)this + 0x24) = flag;
    }
    IRenderNode* GetRenderNode()
    {
        return (IRenderNode*)((int64)this + 0x0008);
    }
    void SetHUDSilhouet(float a, float r, float g, float b)
    {
        return XFunction<void(__fastcall*)(PVOID, f32, f32, f32, f32)>(this, 0x160)(this, a, r, g, b);
    }
};
C++:
enum EEntityProxy { ENTITY_PROXY_RENDER };

enum ESilhouettesParams {
    eAllMap = 524312,
    eLimitDistance = 524296
};
void EnemyHUDSilhouettes(CEntityRenderProxy * p_RenderProxy, float Red, float Green, float Blue)
{
    p_RenderProxy->SetRenderFlags(eAllMap);
    p_RenderProxy->SetHUDSilhouet(255, Red, Green, Blue);
}
Реализация:
C++:
while (CEntity* pEntity = pEntityIt->Next())
        {
            auto pRenderProxy = pEntity->GetEntityRenderProxy();
            if (!pRenderProxy)
                continue;
            const char* Entity_Name = pEntity->GetName();

            if (!pEntity->IsHidden())
            {
                if (strstr(Entity_Name, "ammo"))
                {
                    if (ammo) EnemyHUDSilhouettes(pRenderProxy, 255, 0.0f, 255);//обводка взрывчатки
                    continue;
                }
     
          }
Всё нормально...
Посмотреть вложение 189127
Но стоит зайти за текстуру то всё пропало....
Посмотреть вложение 189128
0x24 |= 0x80018;
 
Energy Reload
Забаненный
Статус
Оффлайн
Регистрация
20 Авг 2017
Сообщения
1,206
Реакции[?]
330
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Пользователь
Статус
Оффлайн
Регистрация
21 Окт 2019
Сообщения
346
Реакции[?]
48
Поинты[?]
15K
это флаг для видимости. Каждый делает по своему.
Скрытое содержимое
Почему не могут преобразоваться типы при обращении к классу:
static_cast: невозможно преобразовать "CEntityRenderProxy *" в "IEntityRenderProxy *"
CEntityRenderProxy у меня выглядит вот так
C++:
class CEntity
{
public:
    CEntityRenderProxy* pEntityProxy(EEntityProxy proxy = EEntityProxy::ENTITY_PROXY_RENDER) { return XFunction<CEntityRenderProxy* (__fastcall*)(PVOID64, EEntityProxy)>(this, 0x1D8)(this, proxy); }
}
 
Energy Reload
Забаненный
Статус
Оффлайн
Регистрация
20 Авг 2017
Сообщения
1,206
Реакции[?]
330
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Почему не могут преобразоваться типы при обращении к классу:
static_cast: невозможно преобразовать "CEntityRenderProxy *" в "IEntityRenderProxy *"
CEntityRenderProxy у меня выглядит вот так
C++:
class CEntity
{
public:
    CEntityRenderProxy* pEntityProxy(EEntityProxy proxy = EEntityProxy::ENTITY_PROXY_RENDER) { return XFunction<CEntityRenderProxy* (__fastcall*)(PVOID64, EEntityProxy)>(this, 0x1D8)(this, proxy); }
}
Так в сдк написано и больше я не трогал это.
Суть в самой функции, которая прописана в клиенте игры.
Этот силуэт выдергнут из клиента.
 
Сверху Снизу