GOFFICIAL ™ [REDZONE-SOFTWARE]
German Style^®
Lista Forumurilor Pe Tematici
GOFFICIAL ™ [REDZONE-SOFTWARE] | Reguli | Inregistrare | Login

POZE GOFFICIAL ™ [REDZONE-SOFTWARE]

Nu sunteti logat.
Nou pe simpatie:
MicheleC
Femeie
19 ani

cauta Barbat
26 - 68 ani
GOFFICIAL ™ [REDZONE-SOFTWARE] / Tutorials / [C++]Aimbot[1.6]  
Autor
Mesaj Pagini: 1
Equin0x
Administrator ♛

Din: Gofficial [ciTy]
Inregistrat: acum 11 ani
Postari: 516


Code:

//==============================================================================
// Aimbot.cpp
//==============================================================================

#define WIN32_LEAN_AND_MEAN
#pragma warning(disable:4786)
#pragma warning(disable:4305)
#pragma warning(disable:4800)
#pragma warning(disable:4244)
#pragma warning(disable:4101)
#pragma warning(disable:4715)
#include <windows.h>
#include <stdlib.h>
#include <math.h>
#undef NDEBUG
#include <assert.h>
#include <memory.h>
#include <map>
#include <vector>
#include <fstream>
#include "aimbot.h"

using namespace std;

typedef float TransformMatrix[MAXSTUDIOBONES][3][4];
#define M_PI        3.14159265358979323846

CAimbot Aimbot;
float mainViewOrigin[3];

//===================================================================================

float predahead = 0.20; // Some default Values ;D
int predback = 0;
static void PredictTarget(int index,float *pred)
{
//    if (cvar.pred)
//    {
    /*        cl_entity_s* ent = gEngfuncs.GetEntityByIndex(index);
            int  historyIndex = (ent->current_position+HISTORY_MAX-predback)%HISTORY_MAX;
            
            vec3_t vFromOrigin , vToOrigin , vDeltaOrigin,vPredictedOrigin;

            vFromOrigin = ent->ph[historyIndex].origin;
            vToOrigin   = ent->ph[ent->current_position].origin;
            vDeltaOrigin = vToOrigin - vFromOrigin;

            vDeltaOrigin[0] *= predahead;
            vDeltaOrigin[1] *= predahead;
            vDeltaOrigin[2] *= predahead;

            vPredictedOrigin = ent->origin + vDeltaOrigin;
            VectorCopy(vPredictedOrigin,pred); */
    cl_entity_s* ent = gEngfuncs.GetEntityByIndex(index);
    VectorCopy(ent->origin, pred);
/*    }
    else 
    {
            VectorCopy(vPlayers[index].getEnt()->origin,pred);
    }*/
}

//==============================================================================
float vpreahead = 1.2;
bool bSoonvisible(int iIndex)
{
    float to[3], lastpred = predahead;
    predahead = vpreahead;// apply some leeb value here :)
    PredictTarget(iIndex,(float*)to);
    predahead = lastpred;
    pmtrace_t tr;
    gEngfuncs.pEventAPI->EV_SetTraceHull( 2 );
    gEngfuncs.pEventAPI->EV_PlayerTrace( me.pmEyePos, to, PM_WORLD_ONLY, me.ent->index, &tr );
//    return ( tr.fraction == 1.0 ); 
    if (tr.fraction == 0.75 )
        return true;
    return false;
}

//==============================================================================

void VectorAngles( const float *forward, float *angles )
{
    float tmp, yaw, pitch;
    
    if( forward[1] == 0 && forward[0] == 0 )
    {
        yaw = 0;

        if( forward[2] > 0 )
            pitch = 90.0f;
        else
            pitch = 270.0f;
    }
    else
    {
        yaw = ( float )( ( atan2( forward[1], forward[0] ) * 180 / M_PI ) );

        if( yaw < 0 )
            yaw += 360.0f;

        tmp = sqrt( forward[0] * forward[0] + forward[1] * forward[1] );
        
        pitch = ( float )( ( atan2( forward[2], tmp ) * 180 / M_PI ) );
    }
    
    angles[0] = pitch;
    angles[1] = yaw;
    angles[2] = 0;
}

//==============================================================================
int CanPenetrate( float *start, float *end, int power ) 
{ 
   pmtrace_t pmtrace; 
   pmtrace_t * tr = (pmtrace_t*) &pmtrace;

   float view[3]; 
   float dir[3]; 

   view[0] = end[0] - start[0]; 
   view[1] = end[1] - start[1]; 
   view[2] = end[2] - start[2]; 

   float length = VectorLength(view); 

   dir[0] = view[0] / length; 
   dir[1] = view[1] / length; 
   dir[2] = view[2] / length; 

   float position[3]; 
   position[0] = start[0]; 
   position[1] = start[1]; 
   position[2] = start[2]; 
   tr->startsolid = true; 

   while( power ) 
   { 
      if( !tr->startsolid ) 
         power--; 
      tr = gEngfuncs.PM_TraceLine( position, end, PM_TRACELINE_PHYSENTSONLY, 2, -1); 
       
      if( tr->fraction==1.0f ) 
         return 1; 
      if( tr->allsolid ) 
         return 0; 

      position[0] = tr->endpos[0] + dir[0] * 8.0f; 
      position[1] = tr->endpos[1] + dir[1] * 8.0f; 
      position[2] = tr->endpos[2] + dir[2] * 8.0f; 
   } 
   return 0; 
} 
//==============================================================================
void VectorTransform (float *in1, float in2[3][4], float *out)
{
    out[0] = DotProduct(in1, in2[0]) + in2[0][3];
    out[1] = DotProduct(in1, in2[1]) + in2[1][3];
    out[2] = DotProduct(in1, in2[2]) + in2[2][3];
}

//==============================================================================
#include <gl\gl.h>


void CAimbot::DrawAimSpot(void)
{
    if(!cvar.avdraw) return;
    for(int i = 0; i < 32; i++)
    {
        if(!vPlayers[i].bDrawn || !vPlayers[i].isUpdatedAddEnt()) continue;
        float fVecScreen[2];
        vec3_t vecEnd, up, right, forward, EntViewOrg, playerAngles;
        if (!vPlayers[i].fixHbAim)         {VectorCopy(vPlayers[i].vHitbox,EntViewOrg);}    
        else                             {VectorCopy(vPlayers[i].origin(),EntViewOrg);}
        // calculate angle vectors
        playerAngles[0]=0;
        playerAngles[1]=vPlayers[iTarget].getEnt()->angles[1];
        playerAngles[2]=0;
        gEngfuncs.pfnAngleVectors (playerAngles, forward, right, up);
        forward[2] = -forward[2];
        EntViewOrg = EntViewOrg + forward * cvar.hadj_f;
        EntViewOrg = EntViewOrg + up * cvar.hadj_h;
        EntViewOrg = EntViewOrg + right * cvar.hadj_r;
        if(!CalcScreen(EntViewOrg, fVecScreen)) continue;
        tintArea(fVecScreen[0], fVecScreen[1], 2, 2, 255, 255, 255, 255);
    }
}

void CAimbot::CalculateHitbox( cl_entity_s *pEnt )
{
    if( !cvar.aimingmethod )
        return;
    if(cvar.aimingmethod == 1)
    {
        if( !vPlayers[pEnt->index].bGotHead )
        {
            int iIndex = pEnt->index;

            model_s            *pModel            = pStudio->SetupPlayerModel( iIndex );
            studiohdr_t     *pStudioHeader    = ( studiohdr_t* )pStudio->Mod_Extradata( pModel );
            mstudiobbox_t   *pStudioBox;
            TransformMatrix *pBoneTransform = ( TransformMatrix* )pStudio->StudioGetBoneTransform( );    

            vec3_t vMin, vMax;
            pStudioBox = ( mstudiobbox_t* )( ( byte* )pStudioHeader + pStudioHeader->hitboxindex );

            //Head 11 bone 7 | Low Head 9 bone 5 | Chest 8 bone 4 | Stomach 7 bone 3
            int i = 11;
            if (cvar.aimspot == 1) i = 11;
            else if (cvar.aimspot == 2) i = 9;
            else if (cvar.aimspot == 3) i = 8;    
            
            VectorTransform(pStudioBox[i].bbmin, (*pBoneTransform)[pStudioBox[i].bone], vMin);
            VectorTransform(pStudioBox[i].bbmax, (*pBoneTransform)[pStudioBox[i].bone], vMax);
            vPlayers[iIndex].vHitbox    = ( vMin + vMax ) * 0.5f;
            vPlayers[iIndex].bGotHead    = true;        
        }
    }
    if(cvar.aimingmethod == 2)
    {
        int ax = pEnt->index;
        if(!vPlayers[ax].bGotHead)
        {
            vec3_t pos;
    //        studiohdr_t* pStudioHeader = (studiohdr_t*)oEngStudio.Mod_Extradata( pEnt->model );
            TransformMatrix*  pbonetransform = (TransformMatrix*)pStudio->StudioGetBoneTransform();
            //Head 11 bone 7 | Low Head 9 bone 5 | Chest 8 bone 4 | Stomach 7 bone 3
            int i = 7;
            if (cvar.aimspot == 1) i = 7;
            else if (cvar.aimspot == 2) i = 5;
            else if (cvar.aimspot == 3) i = 4;
            pos[ 0 ] = (*pbonetransform)[ i ][ 0 ][ 3 ];
            pos[ 1 ] = (*pbonetransform)[ i ][ 1 ][ 3 ];
            pos[ 2 ] = (*pbonetransform)[ i ][ 2 ][ 3 ];
            VectorCopy(pos, vPlayers[ax].vHitbox);
            vPlayers[ax].bGotHead = true;
        }
    }
}

//==============================================================================

void CAimbot::CalculateAimingView( void )
{
    float view[3];
    vec3_t vecEnd, up, right, forward, EntViewOrg, playerAngles;

    if (!vPlayers[iTarget].fixHbAim) {VectorCopy(vPlayers[iTarget].vHitbox,EntViewOrg);}    
    else                             {VectorCopy(vPlayers[iTarget].origin(),EntViewOrg);}    

    // calculate angle vectors
    playerAngles[0]=0;
    playerAngles[1]=vPlayers[iTarget].getEnt()->angles[1];
    playerAngles[2]=0;
    gEngfuncs.pfnAngleVectors (playerAngles, forward, right, up);
    forward[2] = -forward[2];
        
    EntViewOrg = EntViewOrg + forward * cvar.hadj_f;
    EntViewOrg = EntViewOrg + up * cvar.hadj_h;
    EntViewOrg = EntViewOrg + right * cvar.hadj_r;

    view[0] = EntViewOrg[0] - me.pmEyePos[0];
    view[1] = EntViewOrg[1] - me.pmEyePos[1];
    view[2] = EntViewOrg[2] - me.pmEyePos[2];

    VectorAngles(view,aim_viewangles);
    aim_viewangles[0] *= -1;

    if (aim_viewangles[0]>180) aim_viewangles[0]-=360;
    if (aim_viewangles[1]>180) aim_viewangles[1]-=360;
}
//==============================================================================
int CorrectGunX() 
{ 
   int currentWeaponID = GetCurWeaponID();
   if (currentWeaponID == WEAPON_SG550 || currentWeaponID == WEAPON_G3SG1 || currentWeaponID == WEAPON_SCOUT || currentWeaponID == WEAPON_AWP)
   { return 3; }

   if (currentWeaponID == WEAPON_AUG || currentWeaponID == WEAPON_PARA || currentWeaponID == WEAPON_COLT ||  currentWeaponID == WEAPON_DEAGLE || currentWeaponID == WEAPON_SIG || currentWeaponID == WEAPON_AK) 
   { return 2; }
    
   { return 1; }
}
//====================================================================================
bool CAimbot::pathFree(float* xfrom,float* xto)
{ 
   int pathtest; 
   pmtrace_t tr; 
   gEngfuncs.pEventAPI->EV_SetTraceHull( 2 ); 
   gEngfuncs.pEventAPI->EV_PlayerTrace( xfrom, xto, PM_GLASS_IGNORE, me.ent->index, &tr ); 
   pathtest = (tr.fraction == 1.0); 
   if (!pathtest && cvar.autowall && CorrectGunX()) 
   { 
      pathtest = CanPenetrate(xfrom, xto, CorrectGunX()); 
   } 
   return pathtest; 
} 
//====================================================================================

bool CAimbot::TargetRegion(int ax)
{
    vec3_t vecEnd, up, right, forward, EntViewOrg,playerAngles;
    cl_entity_s* ent = vPlayers[ax].getEnt();
    
    // calculate angle vectors
    playerAngles[0]=0;
    playerAngles[1]=ent->angles[1];
    playerAngles[2]=0;
    gEngfuncs.pfnAngleVectors (playerAngles, forward, right, up);
    forward[2] = -forward[2];

    if (vPlayers[ax].bGotHead)    {VectorCopy(vPlayers[ax].vHitbox,EntViewOrg);vPlayers[ax].fixHbAim=false;}    
    else                        {VectorCopy(vPlayers[ax].origin(),EntViewOrg);vPlayers[ax].fixHbAim=true;}        

    EntViewOrg = EntViewOrg + forward * cvar.hadj_f;
    EntViewOrg = EntViewOrg + up * cvar.hadj_h;
    EntViewOrg = EntViewOrg + right * cvar.hadj_r;
        
    if(pathFree(me.pmEyePos,EntViewOrg) || pathFree(me.pmEyePos, ent->origin)) return true;

    return false;
}

//==============================================================================

bool isValidEnt(cl_entity_s *ent) 
{
    if(ent && (ent != gEngfuncs.GetLocalPlayer())  && ent->player && !ent->curstate.spectator && ent->curstate.solid && !(ent->curstate.messagenum < gEngfuncs.GetLocalPlayer()->curstate.messagenum)) 
        return true;
    else 
        return false;
}
//==============================================================================
void CAimbot::FindTarget( void )
{
    if (!me.alive) return;    

    SetTarget(-1);

    for (int ax=0;ax<MAX_VPLAYERS;ax++)
    {
        if  ( vPlayers[ax].isUpdatedAddEnt() && vPlayers[ax].canAim && vPlayers[ax].isAlive()) // No Dead People
        {
            if( !HasTarget() )                                            { SetTarget(ax); continue; }
            if( vPlayers[ax].fovangle <   vPlayers[iTarget].fovangle )    { SetTarget(ax);             }        
        } 
    }
}

//==============================================================================

float CAimbot::calcFovAngle(const float* origin_viewer, const float* angle_viewer, const float* origin_target)
{
    double vec[3], view[3];
    double dot;    
    
    view[0] = origin_target[0] - origin_viewer[0];
    view[1] = origin_target[1] - origin_viewer[1];
    view[2] = origin_target[2] - origin_viewer[2];

    dot = sqrt(view[0] * view[0] + view[1] * view[1] + view[2] * view[2]);
    dot = 1/dot;

    vec[0] = view[0] * dot;
    vec[1] = view[1] * dot;
    vec[2] = view[2] * dot;
    
    view[0] =  sin((angle_viewer[1] + 90) * (M_PI / 180));
    view[1] = -cos((angle_viewer[1] + 90) * (M_PI / 180));
    view[2] = -sin( angle_viewer[0] * (M_PI / 180));    
    
    dot = view[0] * vec[0] + view[1] * vec[1] + view[2] * vec[2];
    
    // dot to angle:
    return (float)((1.0-dot)*180.0); 
}

//==============================================================================

bool CAimbot::CheckTeam(int ax)
{
    if (me.team != vPlayers[ax].team) return true;
    return false;
}

bool bAim = false;
char* gGetWeaponName( int weaponmodel );
int DoHLHAiming(int eventcode)
{
    char *szWeapon;
    UpdateMe();
    szWeapon = gGetWeaponName(me.ent->curstate.weaponmodel);
    if(strstr(szWeapon, "nade") || strstr(szWeapon, "c4") || strstr(szWeapon, "flashbang")) return 1;
    if (eventcode == 1)
    {
        bAim = true;
        gEngfuncs.pfnClientCmd("+attack");    
        return 0;
    }
    else
    {
        bAim = false;
        gEngfuncs.pfnClientCmd("-attack");
        return 1;
    }
}
//==============================================================================
extern float gSpeed;
int DoSpeed(int eventcode)
{
    if (eventcode == 1)
    {
        if (cvar.knivespeed && IsCurWeaponKnife())    gSpeed = 20.0f;
        else                                        gSpeed = cvar.speed;        
    }
    else
        gSpeed = 0.0;
    return 0;
}

//==============================================================================
int getSeqInfo(int ax);
bool CAimbot::IsShielded(int ax)
{
    int seqinfo = getSeqInfo(ax);
    if (seqinfo & SEQUENCE_RELOAD)
        return false;
    if (seqinfo & SEQUENCE_SHIELD)
        return true;
    return false;
}

//==============================================================================

void CAimbot::calcFovangleAndVisibility(int ax)
{ 
    PlayerInfo& r = vPlayers[ax];
    r.fovangle    = calcFovAngle(me.pmEyePos, me.viewAngles, r.origin() );
    
    if(r.updateType() == 0 || r.updateType() == 2 || !r.isAlive()) { r.visible = false; return; }

    float fov = 0; //1=10 , 2=30 , 3=90 , 4=360
    if (cvar.fov == 1) fov = 10;
    else if (cvar.fov == 2) fov = 30;
    else if (cvar.fov == 3) fov = 90;
    else if (cvar.fov == 4) fov = 360;

    r.visible = TargetRegion(ax);
    
    if(0) {}
    else if (!CheckTeam(ax))                    { r.canAim = 0; }
    else if (IsShielded(ax))                    { r.canAim = 0; }
    else if (r.fovangle>fov)                    { r.canAim = 0; }    
    else if (bSoonvisible(ax))                    { r.canAim = 1; }
    else if (cvar.autowall)
    {
        int damage = GetDamageVec(ax, true);
        if (damage)
        {
            r.canAim = 2;
        }
        else
        {
            damage = GetDamageVec(ax, false);
            if (damage)
                r.canAim = 1;
            else
                r.canAim = 0;
        }
    }
    else                                        { r.canAim = r.visible; }
}
//==============================================================================

int CAimbot::GetDamageVec(int ax, bool onlyvis)
{
    int hitdamage, penetration = WALL_PEN0;
    vec3_t vecEnd, up, right, forward, EntViewOrg, PlayerOrigin, playerAngles, targetspot;

    VectorCopy(vPlayers[ax].vHitbox,PlayerOrigin);

    playerAngles[0]=0;
    playerAngles[1]=vPlayers[ax].getEnt()->angles[1];
    playerAngles[2]=0;

    gEngfuncs.pfnAngleVectors(playerAngles, forward, right, up);

    forward[2] = -forward[2];

    if (!onlyvis)
        penetration = CorrectGunX();

    targetspot[0] = PlayerOrigin[0] + up[0] * cvar.hadj_h + forward[0] * cvar.hadj_f + right[0] * cvar.hadj_r;
    targetspot[1] = PlayerOrigin[1] + up[1] * cvar.hadj_h + forward[1] * cvar.hadj_f + right[1] * cvar.hadj_r;
    targetspot[2] = PlayerOrigin[2] + up[2] * cvar.hadj_h + forward[2] * cvar.hadj_f + right[2] * cvar.hadj_r;

    hitdamage = CanPenetrate(me.pmEyePos, targetspot, penetration);
    if (hitdamage > 0)
        return hitdamage;

    return 0;
}
//==============================================================================
#define SPIN_REVS_PER_SECOND 6.0f   // adjust to taste 
void CAimbot::FixupAngleDifference(usercmd_t *usercmd) 
{ 
    // thanks tetsuo for this copy/paste 
    cl_entity_t *pLocal; 
    Vector viewforward, viewright, viewup, aimforward, aimright, aimup, vTemp; 
    float newforward, newright, newup, newmagnitude, fTime; 
    float forward = g_Originalcmd.forwardmove; 
    float right = g_Originalcmd.sidemove; 
    float up = g_Originalcmd.upmove; 

    pLocal = gEngfuncs.GetLocalPlayer(); 
    if(!pLocal) 
        return; 

// this branch makes sure your horizontal velocity is not affected when fixing up the movement angles -- it isn't specific to spinning and you can use it with the source tetsuo posted in his forum too 
if(pLocal->curstate.movetype == MOVETYPE_WALK) 
    { 
        gEngfuncs.pfnAngleVectors(Vector(0.0f, g_Originalcmd.viewangles.y, 0.0f), viewforward, viewright, viewup); 
    } 
    else 
    { 
        gEngfuncs.pfnAngleVectors(g_Originalcmd.viewangles, viewforward, viewright, viewup); 
    } 

    // SPIN!!! 
    int iHasShiftHeld = GetAsyncKeyState(VK_LSHIFT); 
    if(pLocal->curstate.movetype == MOVETYPE_WALK && !iHasShiftHeld && !(usercmd->buttons & IN_ATTACK) && !(usercmd->buttons & IN_USE)) 
    { 
        fTime = gEngfuncs.GetClientTime(); 
        usercmd->viewangles.y = fmod(fTime * SPIN_REVS_PER_SECOND * 360.0f, 360.0f); 
    } 

// this branch makes sure your horizontal velocity is not affected when fixing up the movement angles -- it isn't specific to spinning and you can use it with the source tetsuo posted in his forum too 
    if(pLocal->curstate.movetype == MOVETYPE_WALK) 
    { 
        gEngfuncs.pfnAngleVectors(Vector(0.0f, usercmd->viewangles.y, 0.0f), aimforward, aimright, aimup); 
    } 
    else 
    { 
        gEngfuncs.pfnAngleVectors(usercmd->viewangles, aimforward, aimright, aimup); 
    } 

        newforward = DotProduct(forward * viewforward.Normalize(), aimforward) + DotProduct(right * viewright.Normalize(), aimforward) + DotProduct(up * viewup.Normalize(), aimforward); 
        newright = DotProduct(forward * viewforward.Normalize(), aimright) + DotProduct(right * viewright.Normalize(), aimright) + DotProduct(up * viewup.Normalize(), aimright); 
        newup = DotProduct(forward * viewforward.Normalize(), aimup) + DotProduct(right * viewright.Normalize(), aimup) + DotProduct(up * viewup.Normalize(), aimup); 

    usercmd->forwardmove = newforward; 
    usercmd->sidemove = newright; 
    usercmd->upmove = newup; 
} 



Aimbot.h

#ifndef AIMBOT_H
#define AIMBOT_H

#include <windows.h>
#include <vector>

using namespace std;

struct Aimvec
{
    float h;
    float f;
    float r;
};

class CAimbot
{
protected:
    void init() 
    { 
        iTarget = -1;
        active = false;
    }

public:
    int iTarget;
    bool active;
    vec3_t aim_viewangles;    

    void DrawAimSpot(void);
    void CalculateHitbox( cl_entity_s *pEnt );
    void CalculateAimingView( void );
    inline void SetTarget( int iIndex ){ iTarget = iIndex; }
    bool HasTarget( void ){ return iTarget != -1; }
    void FindTarget( void );
    bool CheckTeam(int ax);
    bool IsShielded(int ax);
    float calcFovAngle(const float* origin_viewer, const float* angle_viewer, const float* origin_target);
    void calcFovangleAndVisibility(int ax);
    bool pathFree(float* xfrom,float* xto);
    bool TargetRegion(int ax);
    int GetDamageVec(int ax, bool onlyvis);
    void FixupAngleDifference(usercmd_t *usercmd);
    usercmd_t g_Originalcmd;

public:
    CAimbot() { init(); }
};

extern CAimbot Aimbot;
extern float mainViewOrigin[3];
extern bool isValidEnt(cl_entity_s *ent);
extern int DoSpeed(int eventcode);
extern int DoHLHAiming(int eventcode);

#endif



_______________________________________
/ Pentru Orice Intrebare/Nelamurire (VIP/other) Trimiteti un PM 'aici' /



/ ID`uri officiale 'Equin0x' ..

/ mzip0x




pus acum 11 ani
   
vonMAYER
CM [Config Maker]

Inregistrat: acum 11 ani
Postari: 43
missing file 

_______________________________________


pus acum 11 ani
   
L!ON.-
Membru nou

Inregistrat: acum 11 ani
Postari: 4
tutorial ?

pus acum 11 ani
   
Equin0x
Administrator ♛

Din: Gofficial [ciTy]
Inregistrat: acum 11 ani
Postari: 516
Deschizi notepad-ul bagi scripturile alea . si il salvezi in format "aimbot.cpp" , Bafta

_______________________________________
/ Pentru Orice Intrebare/Nelamurire (VIP/other) Trimiteti un PM 'aici' /



/ ID`uri officiale 'Equin0x' ..

/ mzip0x




pus acum 11 ani
   
L!ON.-
Membru nou

Inregistrat: acum 11 ani
Postari: 4
where to copy i mean

pus acum 11 ani
   
Pagini: 1  

Mergi la