Силуеты EU wf

  • Автор темы Автор темы Dylane
  • Дата начала Дата начала
When every god dead, I can live a normal life...
Забаненный
Забаненный
Статус
Оффлайн
Регистрация
9 Авг 2020
Сообщения
330
Реакции
48
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Сижу на еу вф так как пинг меньше, решил сделать силуеты. Нашел такую функцию
C++:
Expand Collapse Copy
    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? Так как через рендер прокси не роботают. А эти только через некоторые текстурки
 
А в чем разница между этими и которые через RenderProxy?
Разница в методе реализации.

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

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

А эти только через некоторые текстурки
Ты ведь в качестве значения параметра минимальной дистанции используешь флаг (FLT_MAX = 0x10) дальности рендера текстур, используемый для метода SetRndFlags()? Я правильно понял?
 
Последнее редактирование:
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Ты ведь в качестве значения параметра минимальной дистанции используешь флаг (FLT_MAX = 0x10) дальности рендера текстур, используемый для метода SetRndFlags()? Я правильно понял?
Разве FLT_MAX не самое большое значение флота?, такойже как и через SetRndFlags()
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
C++:
Expand Collapse Copy
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));
};

Все это взято с той функции.
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
C++:
Expand Collapse Copy
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));
};

Все это взято с той функции.
А как искать адрес флага, и силуетов? Слишком туплю
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Разве FLT_MAX не самое большое значение флота?, такойже как и через SetRndFlags()

В данном случае используется не флаг, а наибольшее значение в единицах.

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

C++:
Expand Collapse Copy
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++:
Expand Collapse Copy
SetHudSilhouettes(entityId, 255.0f, 0.0f, 0.0f, 255.0f, 0, 0, 10000.0f);



Все починил спасибо, и ещё вопрос IWeaponSpecific, IWeaponParamsOne, IWeaponParamsTwo, IWeaponParamsThree, какие у них значения, или как их искать?

Нельзя давать информацию по их поиску, иначе сольется много функций. На счет смещений - поищи их на юке, выкладывали ни один раз.
 
Последнее редактирование:
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Через рекласс их обновляю.

Лично искал их вручную в иде, ищутся довольно просто. Там много чего интересного есть. Например прямые указатели на все статы оружия, без использования контейнера с айдишниками.
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Лично искал их вручную в иде, ищутся довольно просто. Там много чего интересного есть. Например прямые указатели на все статы оружия, без использования контейнера с айдишниками.
Это хорошо.
Поделись этим с юзерами.
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Лично искал их вручную в иде, ищутся довольно просто. Там много чего интересного есть. Например прямые указатели на все статы оружия, без использования контейнера с айдишниками.
Будет интересно, и полезно если поможешь)
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Код:
Expand Collapse Copy
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;);
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
C++:
Expand Collapse Copy
#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++:
Expand Collapse Copy
#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++:
Expand Collapse Copy
#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++:
Expand Collapse Copy
    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++:
Expand Collapse Copy
void __fastcall CHUDSilhouettes::SetVisionParams(CHUDSilhouettes *this, __int64 uiEntityId, Color_tpl<float> *color, EHUDSilhouetteVisibility type, bool bDisableAtMin, float nearDist)
 
Последнее редактирование:
А как искать адрес флага, и силуетов? Слишком туплю

Строка "HudSilhouettes_Type" -> (x-2) -> прыжок на первую sub_ функцию над базовым аддрессом qword_ структуры SSGE.
Далее спускаешься вниз псевдокода и смотришь на строки.

C++:
Expand Collapse Copy
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++:
Expand Collapse Copy
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++:
Expand Collapse Copy
class IRenderNode {
public:
    enum ERenderDistanceFlags : __int64 {
        ERDF_ALL_MAP        = 0x10,
        ERDF_LIMIT_DISTANCE = 0xFFFFFFEF
    };

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


Вызов функций:
C++:
Expand Collapse Copy
IRenderNode* pRenderNode = pRenderProxy->GetRenderNode();
if (pRenderNode) {
    pRenderNode->SetRndFlags(IRenderNode::ERenderDistanceFlags::ERDF_ALL_MAP);
    pRenderProxy->SetHUDSilhouettesParams(255.0f, 255.0f, 0.0f, 0.0f); //+условие с определением сущности
}
 
Последнее редактирование:
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Назад
Сверху Снизу