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

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

Забаненный
Забаненный
Статус
Оффлайн
Регистрация
13 Июл 2017
Сообщения
223
Реакции
116
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
В общем. Вот вам тру гайд для ваших ̶т̶р̶у̶ ̶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 скоро солью.
 
Последнее редактирование:
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
е
Бл*ть если сюда сливают local time watermark и кнопку с*ка инверса на 180, то это ещё нормальный гайд...
Дополнил гайд.
если ты не можешь отличить значение слова гайд,подумай что он значит.
Ты же бля** ебу*** исходник не даёшь,значит тут всё должно быть нормально описано
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
хвх стиль в ендиго :CoolCat:
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
е

если ты не можешь отличить значение слова гайд,подумай что он значит.
Ты же бля** ебу*** исходник не даёшь,значит тут всё должно быть нормально описано
Лул. Что здесь не так описано? Я тебе должен всё до мелочей расписать? Вот эту строчечку вставляешь воть сюда после этой строчечки? Если ты не отбитый совсем то поймёшь что нужно делать. Я итак всё подробно расписал что куда....
Если ты к примеру хотя бы не знаешь как реализовать чекбокс в client.cpp то мб не стоит лезть...
хвх стиль в ендиго :CoolCat:
Почему бы и нет? :D Если захотеть можно и в х*йдиго рейдж запихать :deilluminati:
 
Последнее редактирование:
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Лул. Что здесь не так описано? Я тебе должен всё до мелочей расписать? Вот эту строчечку вставляешь воть сюда после этой строчечки? Если ты не отбитый совсем то поймёшь что нужно делать. Я итак всё подробно расписал что куда....
Если ты к примеру хотя бы не знаешь как реализовать чекбокс в client.cpp то мб не стоит лезть...

Почему бы и нет? :D Если захотеть можно и в х*йдиго рейдж запихать :deilluminati:
всё реализовал по гуйду,
Пожалуйста, авторизуйтесь для просмотра ссылки.
но блять я ебал хули он считает это ошибкой если я блять её вызвал нахуй
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
всё реализовал по гуйду,
Пожалуйста, авторизуйтесь для просмотра ссылки.
но блять я ебал хули он считает это ошибкой если я блять её вызвал нахуй
Далее делаем нашу переменную в settings.cpp/h под названием NightMode
(Я её добавил в неймспуйс Esp) (Писать как её сделать думаю не нужно)
Settings.cpp:
bool NightMode = false;
Settings.h:
extern bool NightMode;
И всё это в неймспейсе esp
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Settings.cpp:
bool NightMode = false;
Settings.h:
extern bool NightMode;
И всё это в неймспейсе esp
уже я это сделал сразу,только у меня всё равно какого-то хуя компил идёт збс,а в игре обычный чек бокс,где я мог допустить ошибку?
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
уже я это сделал сразу,только у меня всё равно какого-то хуя компил идёт збс,а в игре обычный чек бокс,где я мог допустить ошибку?
Как понять обычный чек бокс?
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Как понять обычный чек бокс?
ну вот смотри,я всё сделал фиксанул ошибку которую выше кидай,но компилится без ошибок,захожу на карту с ботами врубаю функцию нечего не происходит))
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
ну вот смотри,я всё сделал фиксанул ошибку которую выше кидай,но компилится без ошибок,захожу на карту с ботами врубаю функцию нечего не происходит))
UPD: ещё добавьте в CEsp::Render такую строчку:
NightMode();
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
по
моему
Пожалуйста, авторизуйтесь для просмотра ссылки.
я не туда в пихнул?))
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
по

моему
Пожалуйста, авторизуйтесь для просмотра ссылки.
я не туда в пихнул?))
Вот здесь я idk... У меня в конце всего тела впихано.
5UkB1_UE4GA.jpg
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Блять,теперь он не может вернуть погоду в исходное состояние светлое.
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
помогите пастеру
gkqw3Fi.png
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Назад
Сверху Снизу