Силуеты EU wf

When every god dead, I can live a normal life...
Забаненный
Статус
Оффлайн
Регистрация
9 Авг 2020
Сообщения
328
Реакции[?]
48
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Сижу на еу вф так как пинг меньше, решил сделать силуеты. Нашел такую функцию
C++:
    PVOID SetHUDSilhouettes(EntityId EntityID, float fRed, float fGreen, float fBlue, float fAlpha, bool bIsHide = false, bool bCheckDistance = false, float fDistance = FLT_MAX)
    {
        using FunctionTypeSilhoutte = PVOID(__fastcall*)(__int64, EntityId, float, float, float, float, bool, bool, float);
        FunctionTypeSilhoutte GetSilhouettes = (FunctionTypeSilhoutte)(0x1414CC3E0);

        return GetSilhouettes(NULL, EntityID, fRed, fGreen, fBlue, fAlpha, bIsHide, bCheckDistance, fDistance);
    }
А в чем разница между этими и которые через RenderProxy? Так как через рендер прокси не роботают. А эти только через некоторые текстурки
 
Начинающий
Статус
Оффлайн
Регистрация
3 Ноя 2020
Сообщения
27
Реакции[?]
15
Поинты[?]
0
А в чем разница между этими и которые через RenderProxy?
Разница в методе реализации.

Так как через рендер прокси не роботают.
1. Либо неправильно получаешь команду
2. Либо где-то неверное смещение/индекс
3. Либо неправильные условия для вызова

Открываешь ЮК, реверсишь дамп.

А эти только через некоторые текстурки
Ты ведь в качестве значения параметра минимальной дистанции используешь флаг (FLT_MAX = 0x10) дальности рендера текстур, используемый для метода SetRndFlags()? Я правильно понял?
 
Последнее редактирование:
When every god dead, I can live a normal life...
Забаненный
Статус
Оффлайн
Регистрация
9 Авг 2020
Сообщения
328
Реакции[?]
48
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Ты ведь в качестве значения параметра минимальной дистанции используешь флаг (FLT_MAX = 0x10) дальности рендера текстур, используемый для метода SetRndFlags()? Я правильно понял?
Разве FLT_MAX не самое большое значение флота?, такойже как и через SetRndFlags()
 
Energy Reload
Забаненный
Статус
Оффлайн
Регистрация
20 Авг 2017
Сообщения
1,206
Реакции[?]
330
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
C++:
struct IEntityRenderProxy: public IEntityProxy
{
    int HUDSilhouettes(FLOAT R, FLOAT G, FLOAT B)
    {
        typedef int(__thiscall* pFunc)(PVOID, FLOAT, FLOAT, FLOAT, FLOAT);

        INT64 FlagTable = (*(INT64(__thiscall**)(INT64))(*(DWORD64*)this + 160))((INT64)this);
        *(DWORD64*)(FlagTable + 28) = *(DWORD64*)(FlagTable + 28) |= 16;

        return vFun_Call<pFunc>(this, 352/8)(this, 255.f, R, G, B);
    }

IEntityRenderProxy* pRenderProxy = static_cast<IEntityRenderProxy*>(pEntity->pEntityProxy(ENTITY_PROXY_RENDER));
};
Все это взято с той функции.
 
When every god dead, I can live a normal life...
Забаненный
Статус
Оффлайн
Регистрация
9 Авг 2020
Сообщения
328
Реакции[?]
48
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
C++:
struct IEntityRenderProxy: public IEntityProxy
{
    int HUDSilhouettes(FLOAT R, FLOAT G, FLOAT B)
    {
        typedef int(__thiscall* pFunc)(PVOID, FLOAT, FLOAT, FLOAT, FLOAT);

        INT64 FlagTable = (*(INT64(__thiscall**)(INT64))(*(DWORD64*)this + 160))((INT64)this);
        *(DWORD64*)(FlagTable + 28) = *(DWORD64*)(FlagTable + 28) |= 16;

        return vFun_Call<pFunc>(this, 352/8)(this, 255.f, R, G, B);
    }

IEntityRenderProxy* pRenderProxy = static_cast<IEntityRenderProxy*>(pEntity->pEntityProxy(ENTITY_PROXY_RENDER));
};
Все это взято с той функции.
А как искать адрес флага, и силуетов? Слишком туплю
 
Energy Reload
Забаненный
Статус
Оффлайн
Регистрация
20 Авг 2017
Сообщения
1,206
Реакции[?]
330
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
When every god dead, I can live a normal life...
Забаненный
Статус
Оффлайн
Регистрация
9 Авг 2020
Сообщения
328
Реакции[?]
48
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Energy Reload
Забаненный
Статус
Оффлайн
Регистрация
20 Авг 2017
Сообщения
1,206
Реакции[?]
330
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
When every god dead, I can live a normal life...
Забаненный
Статус
Оффлайн
Регистрация
9 Авг 2020
Сообщения
328
Реакции[?]
48
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Начинающий
Статус
Оффлайн
Регистрация
3 Ноя 2020
Сообщения
27
Реакции[?]
15
Поинты[?]
0
Разве FLT_MAX не самое большое значение флота?, такойже как и через SetRndFlags()
В данном случае используется не флаг, а наибольшее значение в единицах.

Реализуется вроде как-то так. Писал по памяти, точно не помню.

C++:
void SetHudSilhouettes(EntityId entityId, float r, float g, float b, float a, int hideType, char checkDistance, float minDistance) {
    struct SColorParams {
        float v20; //*(float*)(v7 + 0):
        float v19; //*(float*)(v7 + 4);
        float v18; //*(float*)(v7 + 8);
        float v17; //*(float*)(v7 + 12);
    };

    SColorParams colorParams;

    colorParams.v20 = r;
    colorParams.v19 = g;
    colorParams.v18 = b;
    colorParams.v17 = a;

    return ((void(__stdcall*)(EntityId, SColorParams, int, char, float))0x1414CC3E0)(entityId, colorParams, hideType, checkDistance, minDistance);
}
C++:
SetHudSilhouettes(entityId, 255.0f, 0.0f, 0.0f, 255.0f, 0, 0, 10000.0f);


Все починил спасибо, и ещё вопрос IWeaponSpecific, IWeaponParamsOne, IWeaponParamsTwo, IWeaponParamsThree, какие у них значения, или как их искать?
Нельзя давать информацию по их поиску, иначе сольется много функций. На счет смещений - поищи их на юке, выкладывали ни один раз.
 
Последнее редактирование:
Energy Reload
Забаненный
Статус
Оффлайн
Регистрация
20 Авг 2017
Сообщения
1,206
Реакции[?]
330
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Начинающий
Статус
Оффлайн
Регистрация
3 Ноя 2020
Сообщения
27
Реакции[?]
15
Поинты[?]
0
Через рекласс их обновляю.
Лично искал их вручную в иде, ищутся довольно просто. Там много чего интересного есть. Например прямые указатели на все статы оружия, без использования контейнера с айдишниками.
 
Energy Reload
Забаненный
Статус
Оффлайн
Регистрация
20 Авг 2017
Сообщения
1,206
Реакции[?]
330
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Лично искал их вручную в иде, ищутся довольно просто. Там много чего интересного есть. Например прямые указатели на все статы оружия, без использования контейнера с айдишниками.
Это хорошо.
Поделись этим с юзерами.
 
When every god dead, I can live a normal life...
Забаненный
Статус
Оффлайн
Регистрация
9 Авг 2020
Сообщения
328
Реакции[?]
48
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Лично искал их вручную в иде, ищутся довольно просто. Там много чего интересного есть. Например прямые указатели на все статы оружия, без использования контейнера с айдишниками.
Будет интересно, и полезно если поможешь)
 
Продам прострел стен Warface 10к руб!
Забаненный
Статус
Оффлайн
Регистрация
7 Авг 2018
Сообщения
308
Реакции[?]
106
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Код:
template <typename F> struct Color_tpl

{

    F r, g, b, a;

};             typedef Color_tpl<float> Color;



PVOID HUDSilhouettes(EntityId Entityid, float Red, float Green, float Blue, bool hide = false, bool CheckDistance = false, float Distance = 1000.f)

{

    Color SilhouettesColor;

    SilhouettesColor.r = Red;

    SilhouettesColor.g = Green;

    SilhouettesColor.b = Blue;

    SilhouettesColor.a = 1.f;



    return CallFunction<PVOID(__fastcall*)(EntityId, Color, bool, bool, float)>( HudSilhouettes_Type_0x1414D6140)(Entityid, SilhouettesColor, hide, CheckDistance, Distance);

}



HUDSilhouettes(pExp->GetEntityId(), 1.f, 0.f, 1.f;);
 
Забаненный
Статус
Оффлайн
Регистрация
16 Фев 2021
Сообщения
45
Реакции[?]
40
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
C++:
#pragma once

#ifndef CGAME_HPP
#define CGAME_HPP

#include <CHUD.hpp>

class CGame {
public:
    std::byte padding[0x108]
    CHUD* m_pHUD;
};

#endif // !CGAME_HPP

C++:
#pragma once

#ifndef CHUD_HPP
#define CHUD_HPP

#include <CHUDSilhouettes.hpp>

class CHUD {
public:
    std::byte padding[0x88];
    CHUDSilhouettes* m_pHUDSilhouettes;
};

#endif // !CHUD_HPP

C++:
#pragma once

#ifndef CHUDSILHOUETTES_HPP
#define CHUDSILHOUETTES_HPP

#include <CEntity.hpp>
#include <Cry_Color.hpp>

enum EHUDSilhouetteVisibility : int {

    Blocked = 0x0,
    NonBlocked = 0x1,
    DependingOnAlpha = 0x2,
    Always = 0x3,
};

class CHUDSilhouettes {
public:

    struct SSilhouette {

        unsigned int uiEntityId;
        float fTime;
        Color_tpl<float> color;
        float nearAlpha;
        float nearDist;
        float farDist;
        EHUDSilhouetteVisibility type;
        int disableAtMin;
    };

public:

    void SetSilhouette(CEntity* m_pEntity, ColorF color, EHUDSilhouetteVisibility type) {
        this->SetSilhouette(m_pEntity, &color, 1.f, 1.f, 0.f, 0.f, type, 0);
    }

public:

    using fnSetSilhouette = void(__fastcall*)(CHUDSilhouettes*, CEntity*, Color_tpl<float>*, float, float, float, float, EHUDSilhouetteVisibility, int);
    void SetSilhouette(CEntity* pEntity, Color_tpl<float>* color, float fDuration, float nearAlpha,
        float nearDist, float farDist, EHUDSilhouetteVisibility type, int disableAtMin) {
        fnSetSilhouette(0x0)(this, pEntity, color, fDuration, nearAlpha, nearDist, farDist, type, disableAtMin); // Find: 48 8B 06 48 8D 7B 10
    }

public:

    std::list<CHUDSilhouettes::SSilhouette, std::allocator<CHUDSilhouettes::SSilhouette> > m_silhouettes;
    std::map<unsigned int, Vec3_tpl<float>, std::less<unsigned int>, std::allocator<std::pair<unsigned int const, Vec3_tpl<float> > > > m_silhouettesFGVector;
};

#endif // !CHUDSILHOUETTES_HPP
Сижу на еу вф так как пинг меньше, решил сделать силуеты. Нашел такую функцию
C++:
    PVOID SetHUDSilhouettes(EntityId EntityID, float fRed, float fGreen, float fBlue, float fAlpha, bool bIsHide = false, bool bCheckDistance = false, float fDistance = FLT_MAX)
    {
        using FunctionTypeSilhoutte = PVOID(__fastcall*)(__int64, EntityId, float, float, float, float, bool, bool, float);
        FunctionTypeSilhoutte GetSilhouettes = (FunctionTypeSilhoutte)(0x1414CC3E0);

        return GetSilhouettes(NULL, EntityID, fRed, fGreen, fBlue, fAlpha, bIsHide, bCheckDistance, fDistance);
    }
А в чем разница между этими и которые через RenderProxy? Так как через рендер прокси не роботают. А эти только через некоторые текстурки
C++:
void __fastcall CHUDSilhouettes::SetVisionParams(CHUDSilhouettes *this, __int64 uiEntityId, Color_tpl<float> *color, EHUDSilhouetteVisibility type, bool bDisableAtMin, float nearDist)
 
Последнее редактирование:
Начинающий
Статус
Оффлайн
Регистрация
3 Ноя 2020
Сообщения
27
Реакции[?]
15
Поинты[?]
0
А как искать адрес флага, и силуетов? Слишком туплю
Строка "HudSilhouettes_Type" -> (x-2) -> прыжок на первую sub_ функцию над базовым аддрессом qword_ структуры SSGE.
Далее спускаешься вниз псевдокода и смотришь на строки.

C++:
template <class CVirtualTab>
CVirtualTab virtualfunc(PVOID64 pVoid64, __int64 i64Index) { return (*(CVirtualTab**)pVoid64)[i64Index / 8]; }

LODWORD(v8) = (*(int (__fastcall **)(__int64))(*(_QWORD *)v10 + 352i64))(v10); //pRenderProxy->SetHUDSilhouettesParams();
LODWORD(v8) = (*(int (__fastcall **)(__int64))(*(_QWORD *)v10 + 160i64))(v10); //pRenderProxy->GetRenderNode();

C++:
class IEntityRenderProxy {
public:
    IRenderNode* GetRenderNode() { return virtualfunc <IRenderNode* (__thiscall*)(PVOID64)>(this, 160)(this); }
    void SetHUDSilhouettesParams(float a, float r, float g, float b) { return virtualfunc <void(__thiscall*)(PVOID64, float, float, float, float)> (this, 352)(this, a, r, g, b); }
};

v22 = *(_DWORD *)(v8 + 28); //pRenderNode->SetRndFlags();
if ( v21 ) v23 = v22 | 16; //флаг безлимитной дистанции рендера текстуры
else v23 = v22 & 4294967279; //флаг лимита дистанции рендера текстуры

C++:
class IRenderNode {
public:
    enum ERenderDistanceFlags : __int64 {
        ERDF_ALL_MAP        = 0x10,
        ERDF_LIMIT_DISTANCE = 0xFFFFFFEF
    };

    void SetRndFlags(ERenderDistanceFlags flags) { *(ERenderDistanceFlags*)((__int64)this + 0x1C) = flags; }
};

Вызов функций:
C++:
IRenderNode* pRenderNode = pRenderProxy->GetRenderNode();
if (pRenderNode) {
    pRenderNode->SetRndFlags(IRenderNode::ERenderDistanceFlags::ERDF_ALL_MAP);
    pRenderProxy->SetHUDSilhouettesParams(255.0f, 255.0f, 0.0f, 0.0f); //+условие с определением сущности
}
 
Последнее редактирование:
When every god dead, I can live a normal life...
Забаненный
Статус
Оффлайн
Регистрация
9 Авг 2020
Сообщения
328
Реакции[?]
48
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Сверху Снизу