Внимание! Эта статья для пользователей, которые понимают, как делать читы и у которых есть свои проекты. Многие не знают, как сделать силуэты и взамен используют Chams. И так, нам понадобится GetProxy и SetHUDSilhouettesParams GetProxy Открываем IDA и делаем поиск по байтам - 43 72 65 61 74 65 52 65 6E 64 65 72 50 72 6F 78 79 00 После, мы оказываемся тут: Нажимаем "х" и "ОК" После, нажимаем f5 и оказываемся тут: Нажмите на sub_ , что находится ниже "CreateRenderProxy" И теперь мы тут: Первая строка для нас - 364. У нас есть GetProxy, 0x16C в Hex или 364 DEC. Теперь найдем SetHUDSilhouettesParams. Опять ищем по байтам - 48 75 64 53 69 6C 68 6F 75 65 74 74 65 73 5F 54 79 70 65 00 Нам выдаст две строки: Вы можете попробовать во вкладке Pseudocode, там и найдете нужный для себя. Прокрутите вверх, пока не увидите (*(void (__thiscall **)(int, _DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v10 + 68))(v10, 0, 0, 0, 0); Code (*(void (__thiscall **)(int, _DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v10 + 68))(v10, 0, 0, 0, 0); И вот нужная позиция: SetHUDSilhouettesParams - 68 в DEC / 0x44 в HEX У нас есть всё нужное. Переходим к нашему проекту, переходим к классам и создаем новый класс: class IEntityRenderProxy { public: VOID SetHUDSilhouettesParams(FLOAT r, FLOAT g, FLOAT b, FLOAT a) { auto SUB = *(DWORD*)(*(DWORD*)this + (V_SetHUDSilhouettesParams)); _asm { push a//5 push b//4 push g//3 push r//2 mov ecx, this//1 call SUB//call } *(DWORD*)(this + 0x14) |= eAllMap; } }; Code class IEntityRenderProxy { public: VOID SetHUDSilhouettesParams(FLOAT r, FLOAT g, FLOAT b, FLOAT a) { auto SUB = *(DWORD*)(*(DWORD*)this + (V_SetHUDSilhouettesParams)); _asm { push a//5 push b//4 push g//3 push r//2 mov ecx, this//1 call SUB//call } *(DWORD*)(this + 0x14) |= eAllMap; } }; V_SetHUDSilhouettesParams - SetHUDSilhouettesParams - 68 в DEC / 0x44 в HEX Это будет выглядеть примерно так: #define V_SetHUDSilhouettesParams 68 или 0x44 Code #define V_SetHUDSilhouettesParams 68 или 0x44 Будет хорошо, если Вы поместите класс IEntityRenderProxy над ISkeletonPose, так же размещаем его под класс IEntityRenderProxy. enum ESilhouettesParams { eAllMap = 0x10u, eLimitDistance = 0xFFFFFFEFu, eMin = 0x80000 }; Code enum ESilhouettesParams { eAllMap = 0x10u, eLimitDistance = 0xFFFFFFEFu, eMin = 0x80000 }; Идем к классу IEntity и вставляем это: IEntityRenderProxy* GetProxy() { return vFun_Call<IEntityRenderProxy*(__thiscall*)(PVOID, int) >(this, V_GetProxy)(this, 0); } Code IEntityRenderProxy* GetProxy() { return vFun_Call<IEntityRenderProxy*(__thiscall*)(PVOID, int) >(this, V_GetProxy)(this, 0); } V_GetProxy - GetProxy 0x16C в HEX или 364 DEC #define V_GetProxy 0x16C / 4 или 364 / 4 Code #define V_GetProxy 0x16C / 4 или 364 / 4 Вы можете использовать другое кол-во, не 4. template< typename cData > cData vFun_Call(PVOID BaseClass, DWORD vOFFSET) { PDWORD* vPointer = (PDWORD*)BaseClass; PDWORD vFunction = *vPointer; DWORD dwAddress = vFunction[vOFFSET]; return (cData)(dwAddress); } Code template< typename cData > cData vFun_Call(PVOID BaseClass, DWORD vOFFSET) { PDWORD* vPointer = (PDWORD*)BaseClass; PDWORD vFunction = *vPointer; DWORD dwAddress = vFunction[vOFFSET]; return (cData)(dwAddress); } После Вы должны назвать его. Использовано название "Actor" if (auto pGameFramework = SSystemGlobalEnvironment::GetInstance()->pIGame()->GetIGameFramework()) { if (auto mActor = pGameFramework->GetMyActor()) { if (auto pActorIterator = pGameFramework->GetIActorSystem()->GetActorIterator()) { for (; IActor* pActor = pActorIterator->Next();) { auto pExp = pActor->GetEntity(); SSystemGlobalEnvironment::GetInstance()->pIRenderer()->WorldToScreen(pExp->GBA()); if (!pGameFramework->GetCurrentGameRules()->EliminationTeam(pActor, mActor)) continue; if (auto pExp = pActor->GetEntity()) { pExp->GetProxy()->SetHUDSilhouettesParams(0.0f, r, g, b) Code if (auto pGameFramework = SSystemGlobalEnvironment::GetInstance()->pIGame()->GetIGameFramework()) { if (auto mActor = pGameFramework->GetMyActor()) { if (auto pActorIterator = pGameFramework->GetIActorSystem()->GetActorIterator()) { for (; IActor* pActor = pActorIterator->Next();) { auto pExp = pActor->GetEntity(); SSystemGlobalEnvironment::GetInstance()->pIRenderer()->WorldToScreen(pExp->GBA()); if (!pGameFramework->GetCurrentGameRules()->EliminationTeam(pActor, mActor)) continue; if (auto pExp = pActor->GetEntity()) { pExp->GetProxy()->SetHUDSilhouettesParams(0.0f, r, g, b) r - красный g - зелёный b - синий И не забудьте проверить цвета, чтобы Ваши союзники не отображались, как враги. Тэги warface, чит для варфейса, читы, чит, чит для варфейса без вирусов, варфейс, чит для варфейс без бана, чит для варфейс 2018, варфейс читы скачать, читы на варфейс с яндекс диска, warface вх, warface автошот, есп для варфейс, аимбот для варфейс, антиотдача для варфейс, варфейс читы 2017, warface аим, аим для варфейс, лучший чит для варфейс как создавать читы, урок по созданию читов, создание читов, без знаний программирования, онлайн игры, гайд Ссылка на источник (кликабельно)