diff --git a/Andromeda-CS2-Base/Andromeda-CS2-Base.vcxproj b/Andromeda-CS2-Base/Andromeda-CS2-Base.vcxproj
index dc9ea70..c3895a5 100644
--- a/Andromeda-CS2-Base/Andromeda-CS2-Base.vcxproj
+++ b/Andromeda-CS2-Base/Andromeda-CS2-Base.vcxproj
@@ -165,6 +165,7 @@
+
@@ -348,6 +349,7 @@
+
diff --git a/Andromeda-CS2-Base/Andromeda-CS2-Base.vcxproj.filters b/Andromeda-CS2-Base/Andromeda-CS2-Base.vcxproj.filters
index 300209f..bf19bdf 100644
--- a/Andromeda-CS2-Base/Andromeda-CS2-Base.vcxproj.filters
+++ b/Andromeda-CS2-Base/Andromeda-CS2-Base.vcxproj.filters
@@ -124,6 +124,9 @@
{fe55cde6-ca84-4245-b799-edaad8c9c80d}
+
+ {8c1b7cf4-69bc-41fb-8a38-52d85347e1a2}
+
@@ -450,9 +453,6 @@
Andromeda-CS2-Base\AndromedaClient\GUI
-
- Andromeda-CS2-Base\AndromedaClient\Features
-
Andromeda-CS2-Base\GameClient
@@ -477,6 +477,12 @@
Andromeda-CS2-Base\CS2\Hook
+
+ Andromeda-CS2-Base\AndromedaClient\Features\CVisual
+
+
+ Andromeda-CS2-Base\CS2\Hook
+
@@ -1097,9 +1103,6 @@
Andromeda-CS2-Base\CS2\SDK\Interface
-
- Andromeda-CS2-Base\AndromedaClient\Features
-
Andromeda-CS2-Base\Common
@@ -1130,5 +1133,11 @@
Andromeda-CS2-Base\CS2\Hook
+
+ Andromeda-CS2-Base\AndromedaClient\Features\CVisual
+
+
+ Andromeda-CS2-Base\CS2\Hook
+
\ No newline at end of file
diff --git a/Andromeda-CS2-Base/Andromeda-CS2-Base/AndromedaClient/Features/CVisual/CVisual.cpp b/Andromeda-CS2-Base/Andromeda-CS2-Base/AndromedaClient/Features/CVisual/CVisual.cpp
index 444fdec..c48576a 100644
--- a/Andromeda-CS2-Base/Andromeda-CS2-Base/AndromedaClient/Features/CVisual/CVisual.cpp
+++ b/Andromeda-CS2-Base/Andromeda-CS2-Base/AndromedaClient/Features/CVisual/CVisual.cpp
@@ -146,105 +146,6 @@ auto CVisual::OnRenderPlayerEsp( CCSPlayerController* pCCSPlayerController , con
}
}
-auto CVisual::ApplyGlow( C_CSPlayerPawn* pC_CSPlayerPawn , const bool bVisible , const int iTeamNum ) -> void
-{
- if ( !pC_CSPlayerPawn || !pC_CSPlayerPawn->IsPlayerPawn() )
- return;
-
- auto IsEnemy = false;
- C_CSPlayerPawn* pLocalPawn = nullptr;
-
- if ( auto* pLocalPlayerController = GetCL_Players()->GetLocalPlayerController(); pLocalPlayerController )
- {
- pLocalPawn = pLocalPlayerController->m_hPawn().Get();
- if ( pLocalPawn )
- {
- IsEnemy = iTeamNum != pLocalPawn->m_iTeamNum();
-
- // Local player'dan glow'u kaldır
- if ( pC_CSPlayerPawn == pLocalPawn )
- {
- auto& Glow = pC_CSPlayerPawn->m_Glow();
- Glow.m_bGlowing() = false;
- return;
- }
- }
- }
-
- auto DrawGlow = false;
-
- if ( Settings::Visual::GlowTeam && !IsEnemy )
- DrawGlow = true;
-
- if ( Settings::Visual::GlowEnemy && IsEnemy )
- DrawGlow = true;
-
- if ( Settings::Visual::OnlyVisible && !bVisible )
- DrawGlow = false;
-
- if ( !DrawGlow )
- {
- // Glow'u kapat
- auto& Glow = pC_CSPlayerPawn->m_Glow();
- Glow.m_bGlowing() = false;
- return;
- }
-
- auto GlowColor = Color( 255 , 255 , 255 , 255 );
-
- if ( iTeamNum == TEAM_TT )
- {
- const auto& ColorVec = Settings::Colors::Visual::GlowTT;
- if ( bVisible )
- {
- const auto& VisibleColorVec = Settings::Colors::Visual::GlowTT_Visible;
- GlowColor = Color(
- static_cast( VisibleColorVec.x * 255.f ) ,
- static_cast( VisibleColorVec.y * 255.f ) ,
- static_cast( VisibleColorVec.z * 255.f ) ,
- static_cast( VisibleColorVec.w * 255.f )
- );
- }
- else
- {
- GlowColor = Color(
- static_cast( ColorVec.x * 255.f ) ,
- static_cast( ColorVec.y * 255.f ) ,
- static_cast( ColorVec.z * 255.f ) ,
- static_cast( ColorVec.w * 255.f )
- );
- }
- }
- else if ( iTeamNum == TEAM_CT )
- {
- const auto& ColorVec = Settings::Colors::Visual::GlowCT;
- if ( bVisible )
- {
- const auto& VisibleColorVec = Settings::Colors::Visual::GlowCT_Visible;
- GlowColor = Color(
- static_cast( VisibleColorVec.x * 255.f ) ,
- static_cast( VisibleColorVec.y * 255.f ) ,
- static_cast( VisibleColorVec.z * 255.f ) ,
- static_cast( VisibleColorVec.w * 255.f )
- );
- }
- else
- {
- GlowColor = Color(
- static_cast( ColorVec.x * 255.f ) ,
- static_cast( ColorVec.y * 255.f ) ,
- static_cast( ColorVec.z * 255.f ) ,
- static_cast( ColorVec.w * 255.f )
- );
- }
- }
-
- // Glow'u uygula
- auto& Glow = pC_CSPlayerPawn->m_Glow();
- Glow.m_bGlowing() = true;
- Glow.m_glowColorOverride() = GlowColor;
-}
-
auto CVisual::OnClientOutput() -> void
{
OnRender();
@@ -276,15 +177,6 @@ auto CVisual::OnCreateMove() -> void
auto* pCCSPlayerController = reinterpret_cast( pEntity );
CachedEntity.m_bVisible = GetCL_VisibleCheck()->IsPlayerControllerVisible( pCCSPlayerController );
-
- if ( Settings::Visual::Glow && pCCSPlayerController->m_bPawnIsAlive() )
- {
- auto* pC_CSPlayerPawn = pCCSPlayerController->m_hPawn().Get();
- if ( pC_CSPlayerPawn && pC_CSPlayerPawn->IsPlayerPawn() )
- {
- ApplyGlow( pC_CSPlayerPawn , CachedEntity.m_bVisible , pCCSPlayerController->m_iTeamNum() );
- }
- }
}
break;
default:
@@ -293,6 +185,57 @@ auto CVisual::OnCreateMove() -> void
}
}
+auto CVisual::OnDrawGlow( CGlowProperty* pCGlowProperty ) -> void
+{
+ if ( Settings::Visual::Active )
+ {
+ auto* pPlayerPawn = reinterpret_cast( pCGlowProperty->m_pOwner() );
+ auto* pLocalPlayerPawn = GetCL_Players()->GetLocalPlayerPawn();
+
+ if ( pPlayerPawn && pPlayerPawn->IsPlayerPawn() && pPlayerPawn->IsAlive() && pLocalPlayerPawn && pPlayerPawn != pLocalPlayerPawn )
+ {
+ auto SetGlove = true;
+ auto Visible = GetCL_VisibleCheck()->IsPlayerPawnVisible( pPlayerPawn );
+
+ if ( !Settings::Visual::Team && pPlayerPawn->m_iTeamNum() == pLocalPlayerPawn->m_iTeamNum() )
+ SetGlove = false;
+
+ if ( !Settings::Visual::Enemy && pPlayerPawn->m_iTeamNum() != pLocalPlayerPawn->m_iTeamNum() )
+ SetGlove = false;
+
+ if ( Settings::Visual::OnlyVisible && !Visible )
+ SetGlove = false;
+
+ if ( SetGlove )
+ {
+ auto PlayerColor = Color( 255 , 255 , 255 );
+
+ if ( pPlayerPawn->m_iTeamNum() == TEAM_TT )
+ {
+ PlayerColor = Color( static_cast( Settings::Colors::Visual::GlowTT.x * 255.f ) , static_cast( Settings::Colors::Visual::GlowTT.y * 255.f ) , static_cast( Settings::Colors::Visual::GlowTT.z * 255.f ) , static_cast( Settings::Colors::Visual::GlowTT.w * 255.f ) );
+
+ if ( Visible )
+ PlayerColor = Color( static_cast( Settings::Colors::Visual::GlowTT_Visible.x * 255.f ) , static_cast( Settings::Colors::Visual::GlowTT_Visible.y * 255.f ) , static_cast( Settings::Colors::Visual::GlowTT_Visible.z * 255.f ) , static_cast( Settings::Colors::Visual::GlowTT_Visible.w * 255.f ) );
+ }
+ else if ( pPlayerPawn->m_iTeamNum() == TEAM_CT )
+ {
+ PlayerColor = Color( static_cast( Settings::Colors::Visual::GlowCT.x * 255.f ) , static_cast( Settings::Colors::Visual::GlowCT.y * 255.f ) , static_cast( Settings::Colors::Visual::GlowCT.z * 255.f ) , static_cast( Settings::Colors::Visual::GlowCT.w * 255.f ) );
+ if ( Visible )
+ PlayerColor = Color( static_cast( Settings::Colors::Visual::GlowCT_Visible.x * 255.f ) , static_cast( Settings::Colors::Visual::GlowCT_Visible.y * 255.f ) , static_cast( Settings::Colors::Visual::GlowCT_Visible.z * 255.f ) , static_cast( Settings::Colors::Visual::GlowCT_Visible.w * 255.f ) );
+ }
+
+ if ( Settings::Visual::Glow )
+ {
+ pCGlowProperty->m_glowColorOverride() = PlayerColor;
+ pCGlowProperty->m_bGlowing() = true;
+ }
+ else
+ pCGlowProperty->m_bGlowing() = false;
+ }
+ }
+ }
+}
+
auto CVisual::CalculateBoundingBoxes() -> void
{
if ( !SDK::Interfaces::EngineToClient()->IsInGame() )
diff --git a/Andromeda-CS2-Base/Andromeda-CS2-Base/AndromedaClient/Features/CVisual/CVisual.hpp b/Andromeda-CS2-Base/Andromeda-CS2-Base/AndromedaClient/Features/CVisual/CVisual.hpp
index 1bf9043..c9b3b60 100644
--- a/Andromeda-CS2-Base/Andromeda-CS2-Base/AndromedaClient/Features/CVisual/CVisual.hpp
+++ b/Andromeda-CS2-Base/Andromeda-CS2-Base/AndromedaClient/Features/CVisual/CVisual.hpp
@@ -6,6 +6,7 @@
class CCSPlayerController;
class C_CSPlayerPawn;
+class CGlowProperty;
class IVisual
{
@@ -13,6 +14,7 @@ public:
virtual void OnRender() = 0;
virtual void OnClientOutput() = 0;
virtual void OnCreateMove() = 0;
+ virtual void OnDrawGlow( CGlowProperty* pCGlowProperty ) = 0;
};
class CVisual final : public IVisual
@@ -21,6 +23,7 @@ public:
virtual void OnRender() override;
virtual void OnClientOutput() override;
virtual void OnCreateMove() override;
+ virtual void OnDrawGlow( CGlowProperty* pCGlowProperty ) override;
private:
enum EVisualBoxType_t : int32_t
@@ -34,7 +37,6 @@ private:
auto OnRenderPlayerEsp( CCSPlayerController* pCCSPlayerController , const Rect_t& bBox , const bool bVisible ) -> void;
auto DrawBoneESP( C_CSPlayerPawn* pC_CSPlayerPawn , const bool bVisible , const int iTeamNum ) -> void;
- auto ApplyGlow( C_CSPlayerPawn* pC_CSPlayerPawn , const bool bVisible , const int iTeamNum ) -> void;
public:
auto CalculateBoundingBoxes() -> void;
diff --git a/Andromeda-CS2-Base/Andromeda-CS2-Base/CS2/CHook_Loader.cpp b/Andromeda-CS2-Base/Andromeda-CS2-Base/CS2/CHook_Loader.cpp
index 76ea6b3..b4b6adb 100644
--- a/Andromeda-CS2-Base/Andromeda-CS2-Base/CS2/CHook_Loader.cpp
+++ b/Andromeda-CS2-Base/Andromeda-CS2-Base/CS2/CHook_Loader.cpp
@@ -23,6 +23,7 @@
#include
#include
#include
+#include
static CHook_Loader g_CHook_Loader{};
@@ -77,6 +78,7 @@ auto CHook_Loader::InstallSecondHook() -> bool
{ { XorStr( "Hook::AntiTamper" ) , XorStr( "40 53 41 57 48 83 EC ? 48 89 74 24 ? 48 8B F1" ) , CLIENT_DLL } , &Hook_AntiTamper , reinterpret_cast( &AntiTamper_o ) },
{ {XorStr("Hook::IsLoadoutAllowed") , XorStr("48 89 5C 24 ? 48 89 6C 24 ? 48 89 74 24 ? 57 48 83 EC ? 48 8B E9 48 8B 0D ? ? ? ? ? ? ? FF 50") , CLIENT_DLL } ,&Hook_IsLoadoutAllowed , reinterpret_cast(&IsLoadoutAllowed_o) , true , true } ,
{ { XorStr( "Hook::EquipItemInLoadout" ) , XorStr( "48 89 5C 24 ? 48 89 6C 24 ? 48 89 74 24 ? 89 54 24 ? 57 41 54 41 55 41 56 41 57 48 83 EC ? 0F B7 FA" ) , CLIENT_DLL } ,& Hook_EquipItemInLoadout , reinterpret_cast( &EquipItemInLoadout_o ) },
+ { { XorStr( "Hook::DrawGlow" ) , XorStr( "40 53 48 83 EC 20 48 8B 54" ) , CLIENT_DLL } , &Hook_DrawGlow , reinterpret_cast( &DrawGlow_o ) },
};
return InstallHooks();
diff --git a/Andromeda-CS2-Base/Andromeda-CS2-Base/CS2/Hook/Hook_DrawGlow.cpp b/Andromeda-CS2-Base/Andromeda-CS2-Base/CS2/Hook/Hook_DrawGlow.cpp
new file mode 100644
index 0000000..f5b9ece
--- /dev/null
+++ b/Andromeda-CS2-Base/Andromeda-CS2-Base/CS2/Hook/Hook_DrawGlow.cpp
@@ -0,0 +1,18 @@
+#include "Hook_DrawGlow.hpp"
+
+#include
+
+#include
+#include
+
+#include
+
+auto Hook_DrawGlow( CGlowProperty* pCGlowProperty ) -> void*
+{
+ auto pResult = DrawGlow_o( pCGlowProperty );
+
+ if ( SDK::Interfaces::EngineToClient()->IsInGame() )
+ GetVisual()->OnDrawGlow( pCGlowProperty );
+
+ return pResult;
+}
diff --git a/Andromeda-CS2-Base/Andromeda-CS2-Base/CS2/Hook/Hook_DrawGlow.hpp b/Andromeda-CS2-Base/Andromeda-CS2-Base/CS2/Hook/Hook_DrawGlow.hpp
new file mode 100644
index 0000000..8bff039
--- /dev/null
+++ b/Andromeda-CS2-Base/Andromeda-CS2-Base/CS2/Hook/Hook_DrawGlow.hpp
@@ -0,0 +1,10 @@
+#pragma once
+
+#include
+
+class CGlowProperty;
+
+auto Hook_DrawGlow( CGlowProperty* pCGlowProperty ) -> void*;
+
+using DrawGlow_t = decltype( &Hook_DrawGlow );
+inline DrawGlow_t DrawGlow_o = nullptr;
diff --git a/Andromeda-CS2-Base/Andromeda-CS2-Base/Common/Include/Config.hpp b/Andromeda-CS2-Base/Andromeda-CS2-Base/Common/Include/Config.hpp
index cfce254..8916fda 100644
--- a/Andromeda-CS2-Base/Andromeda-CS2-Base/Common/Include/Config.hpp
+++ b/Andromeda-CS2-Base/Andromeda-CS2-Base/Common/Include/Config.hpp
@@ -7,7 +7,7 @@
#define CONFIG_FILE "config.json"
#define CHEAT_NAME "Andromeda CS2 Base"
-#define CHEAT_VERSION "1.2.1"
+#define CHEAT_VERSION "1.2.2"
// Project Buid Config: