• Ищем качественного (не новичок) разработчиков Xenforo для этого форума! В идеале, чтобы ты был фулл стек программистом. Если у тебя есть что показать, то свяжись с нами по контактным данным: https://t.me/DREDD

Гайд Делаем nightmode к индусу(indigo)

Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
н
В общем. Вот вам тру гайд для ваших ̶т̶р̶у̶ ̶2̶2̶8̶ ̶с̶а̶м̶о̶п̶и̶с̶а̶н̶н̶ы̶х̶ ̶п̶р̶и̶в̶а̶т̶о̶к̶ паст.
И так, приступим. Что же у нас есть:
Индус (любой сурц),
Прямые руки.
Начнём с добалвения CVar'ов в сурц:
Идём крче в sdk.h добавляем эта:

Код:
Expand Collapse Copy
#include "../CVar.h" // в столбик с инклудами
static ConVar*    GetConVar(); // в публик класс Interfaces
static ConVar*    g_pConVar;  // в приват класс Interfaces

Далее в sdk.cpp:
Код:
Expand Collapse Copy
ConVar*       Interfaces::g_pConVar = nullptr;  // в начало неймспейса SDK
ConVar* Interfaces::GetConVar()  // В конец неймспейса
{
    if (!g_pConVar)
    {
        CreateInterfaceFn pfnFactory = CaptureFactory(VSTDLIB_DLL);
        g_pConVar = CaptureInterface<ConVar>(pfnFactory, VENGINEVCAR_INTERFACE_VERSION);
    }
    return g_pConVar;
}

Далее создаём файл в проекте с названием CVar.h
Код:
Expand Collapse Copy
#pragma once

#include "SDK/SDK.h"

#define FORCEINLINE_CVAR

#pragma region CVAR Flags
#define FCVAR_NONE                      0
#define FCVAR_UNREGISTERED              (1<<0)
#define FCVAR_DEVELOPMENTONLY           (1<<1)
#define FCVAR_GAMEDLL                   (1<<2)
#define FCVAR_CLIENTDLL                 (1<<3)
#define FCVAR_HIDDEN                    (1<<4)

// ConVar only
#define FCVAR_PROTECTED                 (1<<5)
#define FCVAR_SPONLY                    (1<<6)
#define   FCVAR_ARCHIVE                 (1<<7)
#define   FCVAR_NOTIFY                  (1<<8)
#define   FCVAR_USERINFO                (1<<9)
#define FCVAR_CHEAT                     (1<<14)

#define FCVAR_PRINTABLEONLY             (1<<10)
#define FCVAR_UNLOGGED                  (1<<11)
#define FCVAR_NEVER_AS_STRING           (1<<12)


#define FCVAR_REPLICATED                (1<<13)
#define FCVAR_DEMO                      (1<<16)
#define FCVAR_DONTRECORD                (1<<17)

#define FCVAR_NOT_CONNECTED             (1<<22)

#define FCVAR_ARCHIVE_XBOX              (1<<24)

#define FCVAR_SERVER_CAN_EXECUTE        (1<<28)
#define FCVAR_SERVER_CANNOT_QUERY       (1<<29)
#define FCVAR_CLIENTCMD_CAN_EXECUTE     (1<<30)
#pragma endregion

namespace SDK
{
    class ConVar
    {
    public:

        char pad_0x0000[0x4]; //0x0000
        ConVar* pNext; //0x0004
        __int32 bRegistered; //0x0008
        char* pszName; //0x000C
        char* pszHelpString; //0x0010
        __int32 nFlags; //0x0014
        char pad_0x0018[0x4]; //0x0018
        ConVar* pParent; //0x001C
        char* pszDefaultValue; //0x0020
        char* strString; //0x0024
        __int32 StringLength; //0x0028
        float fValue; //0x002C
        __int32 nValue; //0x0030
        __int32 bHasMin; //0x0034
        float fMinVal; //0x0038
        __int32 bHasMax; //0x003C
        float fMaxVal; //0x0040
        void* fnChangeCallback; //0x0044


        void ConVar::SetValue(const char* value)
        {
            typedef void(__thiscall* OriginalFn)(void*, const char*);
            return GetMethod<OriginalFn>(this, 14)(this, value);
        }

        void ConVar::SetValue(float value)
        {
            typedef void(__thiscall* OriginalFn)(void*, float);
            return GetMethod<OriginalFn>(this, 15)(this, value);
        }

        void ConVar::SetValue(int value)
        {
            typedef void(__thiscall* OriginalFn)(void*, int);
            return GetMethod<OriginalFn>(this, 16)(this, value);
        }

        void ConVar::SetValue(Color value)
        {
            typedef void(__thiscall* OriginalFn)(void*, Color);
            return GetMethod<OriginalFn>(this, 17)(this, value);
        }

        char* ConVar::GetName()
        {
            typedef char*(__thiscall* OriginalFn)(void*);
            return GetMethod<OriginalFn>(this, 5)(this);
        }

        char* ConVar::GetDefault()
        {
            return pszDefaultValue;
        }

        void RegisterConCommand(ConVar* pCommandBase)
        {
            typedef ConVar*(__thiscall* FindVarFn)(void*, ConVar*);
            GetMethod< FindVarFn >(this, 12)(this, pCommandBase);
        }

        void UnRegisterConCommand(ConVar* pCommandBase)
        {
            typedef ConVar*(__thiscall* FindVarFn)(void*, ConVar*);
            GetMethod< FindVarFn >(this, 13)(this, pCommandBase);
        }

        ConVar* FindVar(const char *var_name)
        {
            typedef ConVar*(__thiscall* FindVarFn)(void*, const char*);
            return GetMethod< FindVarFn >(this, 15)(this, var_name);
        }
    };
}
Далее делаем нашу переменную в settings.cpp/h под названием NightMode
(Я её добавил в неймспуйс Esp) (Писать как её сделать думаю не нужно)
Далее добавляем сам найтмуд в esp.cpp и esp.h:
Код:
Expand Collapse Copy
void CEsp::NightMode()
{
    if (Settings::Esp::NightMode)
    {
        if (!done)
        {
            static auto sv_skyname = Interfaces::GetConVar()->FindVar("sv_skyname");
            static auto r_DrawSpecificStaticProp = Interfaces::GetConVar()->FindVar("r_DrawSpecificStaticProp");
            r_DrawSpecificStaticProp->SetValue(1);
            sv_skyname->SetValue("sky_csgo_night02");

            for (MaterialHandle_t i = Interfaces::MaterialSystem()->FirstMaterial(); i != Interfaces::MaterialSystem()->InvalidMaterial(); i = Interfaces::MaterialSystem()->NextMaterial(i))
            {
                IMaterial *pMaterial = Interfaces::MaterialSystem()->GetMaterial(i);

                if (!pMaterial)
                    continue;

                const char* group = pMaterial->GetTextureGroupName();
                const char* name = pMaterial->GetName();

                if (strstr(group, "World textures"))
                {
                    pMaterial->ColorModulate(0.10, 0.10, 0.10);
                }
                if (strstr(group, "StaticProp"))
                {
                    pMaterial->ColorModulate(0.30, 0.30, 0.30);
                }
                if (strstr(name, "models/props/de_dust/palace_bigdome"))
                {
                    pMaterial->SetMaterialVarFlag(MATERIAL_VAR_NO_DRAW, true);
                }
                if (strstr(name, "models/props/de_dust/palace_pillars"))
                {
                    pMaterial->ColorModulate(0.30, 0.30, 0.30);
                }

                if (strstr(group, "Particle textures"))
                {
                    pMaterial->SetMaterialVarFlag(MATERIAL_VAR_NO_DRAW, true);
                }
                done = true;
            }

        }
    }
    else
    {
        if (done)
        {
            for (MaterialHandle_t i = Interfaces::MaterialSystem()->FirstMaterial(); i != Interfaces::MaterialSystem()->InvalidMaterial(); i = Interfaces::MaterialSystem()->NextMaterial(i))
            {
                IMaterial *pMaterial = Interfaces::MaterialSystem()->GetMaterial(i);

                if (!pMaterial)
                    continue;

                const char* group = pMaterial->GetTextureGroupName();
                const char* name = pMaterial->GetName();

                if (strstr(group, "World textures"))
                {

                    pMaterial->ColorModulate(1, 1, 1);
                }
                if (strstr(group, "StaticProp"))
                {

                    pMaterial->ColorModulate(1, 1, 1);
                }
                if (strstr(name, "models/props/de_dust/palace_bigdome"))
                {
                    pMaterial->SetMaterialVarFlag(MATERIAL_VAR_NO_DRAW, false);
                }
                if (strstr(name, "models/props/de_dust/palace_pillars"))
                {

                    pMaterial->ColorModulate(1, 1, 1);
                }
                if (strstr(group, "Particle textures"))
                {
                    pMaterial->SetMaterialVarFlag(MATERIAL_VAR_NO_DRAW, false);
                }
            }

            done = false;
        }
    }
}
в esp.h добавляем в приват:
void NightMode();
Помимо этого ещё в esp.cpp реализуем такую х*йню:
bool done = false;
После этого делаем чекбокс в client.cpp и будет вам счастье и мир во всех пастах.
Ещё нам нужно обновить класс IMaterialSystem:
В IMaterialSystem.h в начале кода после строчки
#include "SDK.h"
добавляем
typedef unsigned short MaterialHandle_t;
Далее меняем класс IMaterialSystem на:
Код:
Expand Collapse Copy
class IMaterialSystem
    {
    public:
        IMaterial* CreateMaterial( const char* pMaterialName , KeyValues* pVMTKeyValues )
        {
            VirtualFn( IMaterial* )( PVOID , const char* , KeyValues* );
            return GetMethod< OriginalFn >( this , 83 )( this , pMaterialName , pVMTKeyValues );
        }

        IMaterial* FindMaterial( const char* pMaterialName , const char* pTextureGroupName , bool complain = true , const char* pComplainPrefix = 0 )
        {
            VirtualFn( IMaterial* )( PVOID , const char* , const char* , bool , const char* );
            return GetMethod< OriginalFn >( this , 84 )( this , pMaterialName , pTextureGroupName , complain , pComplainPrefix );
        }

        MaterialHandle_t FirstMaterial()
        {
            typedef MaterialHandle_t(__thiscall* FirstMaterialFn)(void*);
            return GetMethod <FirstMaterialFn>(this, 86)(this);
        }

        MaterialHandle_t NextMaterial(MaterialHandle_t h)
        {
            typedef MaterialHandle_t(__thiscall* NextMaterialFn)(void*, MaterialHandle_t);
            return GetMethod <NextMaterialFn>(this, 87)(this, h);
        }

        MaterialHandle_t InvalidMaterial()
        {
            typedef MaterialHandle_t(__thiscall* InvalidMaterialFn)(void*);
            return GetMethod <InvalidMaterialFn>(this, 88)(this);
        }

        IMaterial* GetMaterial(MaterialHandle_t h)
        {
            typedef IMaterial*(__thiscall* GetMaterialFn)(void*, MaterialHandle_t);
            return GetMethod <GetMaterialFn>(this, 89)(this, h);
        }
    };

UPD: ещё добавьте в CEsp::Render такую строчку:
NightMode();

UPDV2: hitmarker кому нибудь нужен? :D + grenade prediction скоро солью.
ну где гайд,на хитмайкер?
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
i do everything but not working
 
Назад
Сверху Снизу