xzasdSADDSADA Posted April 13, 2021 Share Posted April 13, 2021 How would i make the code below visible only? also what bone id is neck/chest? const float g_minFov = 1.5f; //3 const int g_boneId = 8; //8 - head const float g_smooth = 40; //40 if (!GetAsyncKeyState(VK_XBUTTON2)) return; const uint32_t clientState = *mem.Read<uint32_t>(mem.GetEngineBase() + dwClientState); Vector currentAng = *mem.Read<Vector>(clientState + dwClientState_ViewAngles); int index = -1; GetClosestEnt(currentAng, index, mem); if (index == -1) return; const Vector enemyHeadPos = g_playerList.at(index).BonePos(g_boneId, mem); const Vector delta = GetLocalEye() - enemyHeadPos; const Vector finalAng = CalculateAngle(delta); float deltaX = finalAng.x - currentAng.x; float deltaY = finalAng.y - currentAng.y; if (deltaX < -180.0f) deltaX += 360.0f; if (deltaX > 180.0f) deltaX -= 360.0f; if (deltaY < -180.0f) deltaY += 360.0f; if (deltaY > 180.0f) deltaY -= 360.0f; const float smoothX = deltaX / g_smooth; const float smoothY = deltaY / g_smooth; int loop = 0; while (loop < 10) { NormalizeAngles(currentAng); ClampAngles(currentAng); (void)mem.Write<Vector>(clientState + dwClientState_ViewAngles, currentAng); loop++; currentAng.x += smoothX; currentAng.y += smoothY; } Quote Link to comment Share on other sites More sharing options...
xzasdSADDSADA Posted April 13, 2021 Author Share Posted April 13, 2021 also im using this base - https://github.com/crisptothemax/csgo-external-base 1 Quote Link to comment Share on other sites More sharing options...
ONERIS Posted April 13, 2021 Share Posted April 13, 2021 wdym "make the code below visible only" ? bones: neck - 8 chest- 5 Quote Link to comment Share on other sites More sharing options...
xzasdSADDSADA Posted April 13, 2021 Author Share Posted April 13, 2021 the aimbot locks on through walls, i want to make it only lock onto visible people Quote Link to comment Share on other sites More sharing options...
ONERIS Posted April 13, 2021 Share Posted April 13, 2021 (edited) 46 minutes ago, xzasdSADDSADA said: the aimbot locks on through walls, i want to make it only lock onto visible people Use Ray Tracing You can find it via EngineTraceClient004 Trace Interface: abstract_class IEngineTrace { public: // Returns the contents mask + entity at a particular world-space position virtual int GetPointContents( const Vector &vecAbsPosition, IHandleEntity** ppEntity = NULL ) = 0; // Get the point contents, but only test the specific entity. This works // on static props and brush models. // // If the entity isn't a static prop or a brush model, it returns CONTENTS_EMPTY and sets // bFailed to true if bFailed is non-null. virtual int GetPointContents_Collideable( ICollideable *pCollide, const Vector &vecAbsPosition ) = 0; // Traces a ray against a particular entity virtual void ClipRayToEntity( const Ray_t &ray, unsigned int fMask, IHandleEntity *pEnt, trace_t *pTrace ) = 0; // Traces a ray against a particular entity virtual void ClipRayToCollideable( const Ray_t &ray, unsigned int fMask, ICollideable *pCollide, trace_t *pTrace ) = 0; // A version that simply accepts a ray (can work as a traceline or tracehull) virtual void TraceRay( const Ray_t &ray, unsigned int fMask, ITraceFilter *pTraceFilter, trace_t *pTrace ) = 0; // A version that sets up the leaf and entity lists and allows you to pass those in for collision. virtual void SetupLeafAndEntityListRay( const Ray_t &ray, CTraceListData &traceData ) = 0; virtual void SetupLeafAndEntityListBox( const Vector &vecBoxMin, const Vector &vecBoxMax, CTraceListData &traceData ) = 0; virtual void TraceRayAgainstLeafAndEntityList( const Ray_t &ray, CTraceListData &traceData, unsigned int fMask, ITraceFilter *pTraceFilter, trace_t *pTrace ) = 0; // A version that sweeps a collideable through the world // abs start + abs end represents the collision origins you want to sweep the collideable through // vecAngles represents the collision angles of the collideable during the sweep virtual void SweepCollideable( ICollideable *pCollide, const Vector &vecAbsStart, const Vector &vecAbsEnd, const QAngle &vecAngles, unsigned int fMask, ITraceFilter *pTraceFilter, trace_t *pTrace ) = 0; // Enumerates over all entities along a ray // If triggers == true, it enumerates all triggers along a ray virtual void EnumerateEntities( const Ray_t &ray, bool triggers, IEntityEnumerator *pEnumerator ) = 0; // Same thing, but enumerate entitys within a box virtual void EnumerateEntities( const Vector &vecAbsMins, const Vector &vecAbsMaxs, IEntityEnumerator *pEnumerator ) = 0; // Convert a handle entity to a collideable. Useful inside enumer virtual ICollideable *GetCollideable( IHandleEntity *pEntity ) = 0; // HACKHACK: Temp for performance measurments virtual int GetStatByIndex( int index, bool bClear ) = 0; //finds brushes in an AABB, prone to some false positives virtual void GetBrushesInAABB( const Vector &vMins, const Vector &vMaxs, CUtlVector<int> *pOutput, int iContentsMask = 0xFFFFFFFF ) = 0; //Creates a CPhysCollide out of all displacements wholly or partially contained in the specified AABB virtual CPhysCollide* GetCollidableFromDisplacementsInAABB( const Vector& vMins, const Vector& vMaxs ) = 0; //retrieve brush planes and contents, returns true if data is being returned in the output pointers, false if the brush doesn't exist virtual bool GetBrushInfo( int iBrush, CUtlVector<Vector4D> *pPlanesOut, int *pContentsOut ) = 0; virtual bool PointOutsideWorld( const Vector &ptTest ) = 0; //Tests a point to see if it's outside any playable area // Walks bsp to find the leaf containing the specified point virtual int GetLeafContainingPoint( const Vector &ptTest ) = 0; }; Ray struct: struct Ray_t { VectorAligned m_Start; // starting point, centered within the extents VectorAligned m_Delta; // direction + length of the ray VectorAligned m_StartOffset; // Add this to m_Start to get the actual ray start VectorAligned m_Extents; // Describes an axis aligned box extruded along a ray bool m_IsRay; // are the extents zero? bool m_IsSwept; // is delta != 0? void Init( Vector const& start, Vector const& end ) { Assert( &end ); VectorSubtract( end, start, m_Delta ); m_IsSwept = (m_Delta.LengthSqr() != 0); VectorClear( m_Extents ); m_IsRay = true; // Offset m_Start to be in the center of the box... VectorClear( m_StartOffset ); VectorCopy( start, m_Start ); } void Init( Vector const& start, Vector const& end, Vector const& mins, Vector const& maxs ) { Assert( &end ); VectorSubtract( end, start, m_Delta ); m_IsSwept = (m_Delta.LengthSqr() != 0); VectorSubtract( maxs, mins, m_Extents ); m_Extents *= 0.5f; m_IsRay = (m_Extents.LengthSqr() < 1e-6); // Offset m_Start to be in the center of the box... VectorAdd( mins, maxs, m_StartOffset ); m_StartOffset *= 0.5f; VectorAdd( start, m_StartOffset, m_Start ); m_StartOffset *= -1.0f; } // compute inverse delta Vector InvDelta() const { Vector vecInvDelta; for ( int iAxis = 0; iAxis < 3; ++iAxis ) { if ( m_Delta[iAxis] != 0.0f ) { vecInvDelta[iAxis] = 1.0f / m_Delta[iAxis]; } else { vecInvDelta[iAxis] = FLT_MAX; } } return vecInvDelta; } private: }; BSP Flags: #ifndef BSPFLAGS_H #define BSPFLAGS_H #ifdef _WIN32 #pragma once #endif // contents flags are seperate bits // a given brush can contribute multiple content bits // multiple brushes can be in a single leaf // these definitions also need to be in q_shared.h! // lower bits are stronger, and will eat weaker brushes completely #define CONTENTS_EMPTY 0 // No contents #define CONTENTS_SOLID 0x1 // an eye is never valid in a solid #define CONTENTS_WINDOW 0x2 // translucent, but not watery (glass) #define CONTENTS_AUX 0x4 #define CONTENTS_GRATE 0x8 // alpha-tested "grate" textures. Bullets/sight pass through, but solids don't #define CONTENTS_SLIME 0x10 #define CONTENTS_WATER 0x20 #define CONTENTS_BLOCKLOS 0x40 // block AI line of sight #define CONTENTS_OPAQUE 0x80 // things that cannot be seen through (may be non-solid though) #define LAST_VISIBLE_CONTENTS 0x80 #define ALL_VISIBLE_CONTENTS (LAST_VISIBLE_CONTENTS | (LAST_VISIBLE_CONTENTS-1)) #define CONTENTS_TESTFOGVOLUME 0x100 #define CONTENTS_UNUSED 0x200 // unused // NOTE: If it's visible, grab from the top + update LAST_VISIBLE_CONTENTS // if not visible, then grab from the bottom. #define CONTENTS_UNUSED6 0x400 #define CONTENTS_TEAM1 0x800 // per team contents used to differentiate collisions #define CONTENTS_TEAM2 0x1000 // between players and objects on different teams // ignore CONTENTS_OPAQUE on surfaces that have SURF_NODRAW #define CONTENTS_IGNORE_NODRAW_OPAQUE 0x2000 // hits entities which are MOVETYPE_PUSH (doors, plats, etc.) #define CONTENTS_MOVEABLE 0x4000 // remaining contents are non-visible, and don't eat brushes #define CONTENTS_AREAPORTAL 0x8000 #define CONTENTS_PLAYERCLIP 0x10000 #define CONTENTS_MONSTERCLIP 0x20000 // currents can be added to any other contents, and may be mixed #define CONTENTS_CURRENT_0 0x40000 #define CONTENTS_CURRENT_90 0x80000 #define CONTENTS_CURRENT_180 0x100000 #define CONTENTS_CURRENT_270 0x200000 #define CONTENTS_CURRENT_UP 0x400000 #define CONTENTS_CURRENT_DOWN 0x800000 #define CONTENTS_ORIGIN 0x1000000 // removed before bsping an entity #define CONTENTS_MONSTER 0x2000000 // should never be on a brush, only in game #define CONTENTS_DEBRIS 0x4000000 #define CONTENTS_DETAIL 0x8000000 // brushes to be added after vis leafs #define CONTENTS_TRANSLUCENT 0x10000000 // auto set if any surface has trans #define CONTENTS_LADDER 0x20000000 #define CONTENTS_HITBOX 0x40000000 // use accurate hitboxes on trace // NOTE: These are stored in a short in the engine now. Don't use more than 16 bits #define SURF_LIGHT 0x0001 // value will hold the light strength #define SURF_SKY2D 0x0002 // don't draw, indicates we should skylight + draw 2d sky but not draw the 3D skybox #define SURF_SKY 0x0004 // don't draw, but add to skybox #define SURF_WARP 0x0008 // turbulent water warp #define SURF_TRANS 0x0010 #define SURF_NOPORTAL 0x0020 // the surface can not have a portal placed on it #define SURF_TRIGGER 0x0040 // FIXME: This is an xbox hack to work around elimination of trigger surfaces, which breaks occluders #define SURF_NODRAW 0x0080 // don't bother referencing the texture #define SURF_HINT 0x0100 // make a primary bsp splitter #define SURF_SKIP 0x0200 // completely ignore, allowing non-closed brushes #define SURF_NOLIGHT 0x0400 // Don't calculate light #define SURF_BUMPLIGHT 0x0800 // calculate three lightmaps for the surface for bumpmapping #define SURF_NOSHADOWS 0x1000 // Don't receive shadows #define SURF_NODECALS 0x2000 // Don't receive decals #define SURF_NOCHOP 0x4000 // Don't subdivide patches on this surface #define SURF_HITBOX 0x8000 // surface is part of a hitbox // ----------------------------------------------------- // spatial content masks - used for spatial queries (traceline,etc.) // ----------------------------------------------------- #define MASK_ALL (0xFFFFFFFF) // everything that is normally solid #define MASK_SOLID (CONTENTS_SOLID|CONTENTS_MOVEABLE|CONTENTS_WINDOW|CONTENTS_MONSTER|CONTENTS_GRATE) // everything that blocks player movement #define MASK_PLAYERSOLID (CONTENTS_SOLID|CONTENTS_MOVEABLE|CONTENTS_PLAYERCLIP|CONTENTS_WINDOW|CONTENTS_MONSTER|CONTENTS_GRATE) // blocks npc movement #define MASK_NPCSOLID (CONTENTS_SOLID|CONTENTS_MOVEABLE|CONTENTS_MONSTERCLIP|CONTENTS_WINDOW|CONTENTS_MONSTER|CONTENTS_GRATE) // water physics in these contents #define MASK_WATER (CONTENTS_WATER|CONTENTS_MOVEABLE|CONTENTS_SLIME) // everything that blocks lighting #define MASK_OPAQUE (CONTENTS_SOLID|CONTENTS_MOVEABLE|CONTENTS_OPAQUE) // everything that blocks lighting, but with monsters added. #define MASK_OPAQUE_AND_NPCS (MASK_OPAQUE|CONTENTS_MONSTER) // everything that blocks line of sight for AI #define MASK_BLOCKLOS (CONTENTS_SOLID|CONTENTS_MOVEABLE|CONTENTS_BLOCKLOS) // everything that blocks line of sight for AI plus NPCs #define MASK_BLOCKLOS_AND_NPCS (MASK_BLOCKLOS|CONTENTS_MONSTER) // everything that blocks line of sight for players #define MASK_VISIBLE (MASK_OPAQUE|CONTENTS_IGNORE_NODRAW_OPAQUE) // everything that blocks line of sight for players, but with monsters added. #define MASK_VISIBLE_AND_NPCS (MASK_OPAQUE_AND_NPCS|CONTENTS_IGNORE_NODRAW_OPAQUE) // bullets see these as solid #define MASK_SHOT (CONTENTS_SOLID|CONTENTS_MOVEABLE|CONTENTS_MONSTER|CONTENTS_WINDOW|CONTENTS_DEBRIS|CONTENTS_HITBOX) // non-raycasted weapons see this as solid (includes grates) #define MASK_SHOT_HULL (CONTENTS_SOLID|CONTENTS_MOVEABLE|CONTENTS_MONSTER|CONTENTS_WINDOW|CONTENTS_DEBRIS|CONTENTS_GRATE) // hits solids (not grates) and passes through everything else #define MASK_SHOT_PORTAL (CONTENTS_SOLID|CONTENTS_MOVEABLE|CONTENTS_WINDOW|CONTENTS_MONSTER) // everything normally solid, except monsters (world+brush only) #define MASK_SOLID_BRUSHONLY (CONTENTS_SOLID|CONTENTS_MOVEABLE|CONTENTS_WINDOW|CONTENTS_GRATE) // everything normally solid for player movement, except monsters (world+brush only) #define MASK_PLAYERSOLID_BRUSHONLY (CONTENTS_SOLID|CONTENTS_MOVEABLE|CONTENTS_WINDOW|CONTENTS_PLAYERCLIP|CONTENTS_GRATE) // everything normally solid for npc movement, except monsters (world+brush only) #define MASK_NPCSOLID_BRUSHONLY (CONTENTS_SOLID|CONTENTS_MOVEABLE|CONTENTS_WINDOW|CONTENTS_MONSTERCLIP|CONTENTS_GRATE) // just the world, used for route rebuilding #define MASK_NPCWORLDSTATIC (CONTENTS_SOLID|CONTENTS_WINDOW|CONTENTS_MONSTERCLIP|CONTENTS_GRATE) // These are things that can split areaportals #define MASK_SPLITAREAPORTAL (CONTENTS_WATER|CONTENTS_SLIME) // UNDONE: This is untested, any moving water #define MASK_CURRENT (CONTENTS_CURRENT_0|CONTENTS_CURRENT_90|CONTENTS_CURRENT_180|CONTENTS_CURRENT_270|CONTENTS_CURRENT_UP|CONTENTS_CURRENT_DOWN) // everything that blocks corpse movement // UNDONE: Not used yet / may be deleted #define MASK_DEADSOLID (CONTENTS_SOLID|CONTENTS_PLAYERCLIP|CONTENTS_WINDOW|CONTENTS_GRATE) #endif // BSPFLAGS_H Edited April 13, 2021 by ONERIS Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.