Tutorial How to find GetAnimOverlays & GetNumAnimOverlays Offset

  • Downloading from our site will require you to have a paid membership. Upgrade to a Premium Membership today!

    Dont forget read our Rules! Also anyone caught Sharing this content will be banned. By using this site you are agreeing to our rules so read them. Saying I did not know is simply not an excuse! You have been warned.

Radio

    Status
    Not open for further replies.

    ven0m

    Administrator
    Staff member
    Administrator
    Moderator
    Platinum
    xenForo 2.x.x
    xenForo 1.x.x
    Contributor
    vBulletin All Access Pass
    The Chest
    Verified
    Ultra Platinum VIP
    Platinum VIP
    Gold VIP
    Silver VIP
    Premium
    Member
    Jul 17, 2005
    20,466
    7,708
    321
    localhost
    Code:
    How to find GetAnimOverlays & GetNumAnimOverlays Offset:
     
    string search "animset_version" and goto to any of its xrefs
     
    now you're in CCSGOPlayerAnimState::CacheSequences and xref that too (only has 1)
    now you're in CCSGOPlayerAnimState::Update, create pseudo.
     
    void __userpurge CCSGOPlayerAnimState::Update(int a1@<ecx>, int a2@<xmm1>, float a3@<xmm2>, int a4)
    {
      int v4; // edi
      int v5; // ecx
      float *v6; // esi
      float v7; // xmm0_4
      float v8; // xmm1_4
      float v9; // xmm0_4
      long double v10; // st7
      float v11; // xmm0_4
      _DWORD *v12; // eax
      int v13; // eax
      signed int v14; // ecx
      int v15; // eax
      _DWORD *v16; // eax
      bool v17; // zf
      int v18; // eax
      float v19; // xmm3_4
      float v20; // xmm1_4
      float v21; // xmm0_4
      float v22; // xmm2_4
      float v23; // xmm1_4
      float v24; // xmm1_4
      float v25; // xmm2_4
      float v26; // xmm2_4
      float v27; // xmm1_4
      float v28; // xmm4_4
      float v29; // xmm1_4
      int v30; // esi
      float *v31; // ecx
      char v32; // fl
      int v33; // eax
      int v34; // eax
      int v35; // eax
      int v36; // eax
      signed int v37; // eax
      int v38; // esi
      int v39; // esi
      _DWORD *v40; // ecx
      int v41; // xmm0_4
      float *v42; // ecx
      int v43; // ecx
      int v44; // eax
      float v45; // [esp+Ch] [ebp-14h]
      signed int v46; // [esp+Ch] [ebp-14h]
      int v47; // [esp+10h] [ebp-10h]
      float v48; // [esp+10h] [ebp-10h]
      int v49; // [esp+14h] [ebp-Ch]
      int v50; // [esp+18h] [ebp-8h]
      int v51; // [esp+1Ch] [ebp-4h]
     
      v4 = a1;
      v47 = a2;
      v5 = *(a1 + 96);
      if ( v5 && ((*(*v5 + 612))() || *(*(v4 + 96) + 14973)) && CCSGOPlayerAnimState::CacheSequences(v4) )
      {
        v6 = *(v4 + 96);
        v45 = fmod((v6[11854] + a3), 360.0);
        v7 = v45;
        if ( v45 > 180.0 )
        {
          v7 = v45 - 360.0;
          v45 = v45 - 360.0;
        }
        if ( v7 < -180.0 )
          v45 = v7 + 360.0;
        v8 = *(v4 + 108);
        v9 = *(g_pGlobals + 16);
        if ( v8 != v9 && *(v4 + 112) != *(g_pGlobals + 4) )
        {
          byte_10CAC0C8 = 0;
          *(v4 + 116) = fmaxf(v9 - v8, 0.0);
          sub_10796D70();
          *(v4 + 120) = v47;
          v10 = fmod(v45, 360.0);
          v48 = v10;
          v11 = v48;
          if ( v48 > 180.0 )
            v11 = v48 - 360.0;
          if ( v11 < -180.0 )
            v11 = v11 + 360.0;
          *(v4 + 124) = v11;
          v12 = (*(*v6 + 40))(v6);
          *(v4 + 176) = *v12;
          *(v4 + 180) = v12[1];
          *(v4 + 184) = v12[2];
          v13 = (*(**(v4 + 96) + 1060))();
          *(v4 + 100) = v13;
          if ( v13 != *(v4 + 104) || *(v4 + 4) )
          {
            v14 = 0;
            *(*(v4 + 96) + 2608) = 0;
            do
            {
              v15 = *(v4 + 96);
              if ( *(v15 + 10636) )                <--------------------- 10636 in hex is 0x298C so its the current GetAnimOverlays offset
              {
                v16 = (v14 + *(v15 + 10624));      <--------------------- 10624 in hex is 0x2980 so its the current GetNumAnimOverlays offset
                if ( v16 )
                {
                  v16[2] = 0;
                  v16[3] = -1;
                  v16[4] = -1;
                }
              }
              v14 += 56;
            }
            while ( v14 < 728 );
          }
          v17 = sub_103BFE00() == 0;
          v18 = *(v4 + 96);
          if ( v17 )
          {
            v25 = *(v18 + 12204) + *(v4 + 168);
            if ( v25 >= 0.0 )
              v26 = fminf(v25, 1.0);
            else
              v26 = 0.0;
            v27 = *(v4 + 164);
            v28 = *(v4 + 116) * 6.0;
            if ( (v26 - v27) <= v28 )
            {
              if ( COERCE_FLOAT(LODWORD(v28) ^ xmmword_10C35030) <= (v26 - v27) )
                v29 = v26;
              else
                v29 = v27 - v28;
            }
            else
            {
              v29 = v27 + v28;
            }
            if ( v29 >= 0.0 )
              v24 = fminf(v29, 1.0);
            else
              v24 = 0.0;
          }
          else
          {
            if ( *(v18 + 260) & 4 )
              v19 = 1.0;
            else
              v19 = *(v4 + 168);
            v20 = *(v4 + 164);
            if ( v19 <= v20 )
              v21 = 6.0;
            else
              v21 = 3.0999999;
            v22 = *(v4 + 116) * v21;
            if ( (v19 - v20) <= v22 )
            {
              if ( COERCE_FLOAT(LODWORD(v22) ^ xmmword_10C35030) <= (v19 - v20) )
                v23 = v19;
              else
                v23 = v20 - v22;
            }
            else
            {
              v23 = v20 + v22;
            }
            *(v4 + 164) = v23;
            if ( v23 >= 0.0 )
              v24 = fminf(v23, 1.0);
            else
              v24 = 0.0;
          }
          *(v4 + 164) = v24;
          v30 = mdlcache;
          (*(*mdlcache + 132))(mdlcache);
          (*(**(v4 + 96) + 864))(0);
          *(*(v4 + 96) + 2584) = 0;
          v31 = *(v4 + 96);
          if ( v31[645] != 0.0 )
          {
            v31[645] = 0.0;
            sub_101902C0(v31, 8);
          }
          (*(*v30 + 136))(v30);
          CCSGOPlayerAnimState::SetUpVelocity(v4, v10);
          CCSGOPlayerAnimState::SetUpAimMatrix(v4);
          CCSGOPlayerAnimState::SetUpWeaponAction(v4, v4);
          CCSGOPlayerAnimState::SetUpMovement(v4);
          sub_103EBFA0(v4, v32);
          v33 = *(v4 + 96);
          if ( *(v33 + 10636) )
          {
            v34 = *(v33 + 10624) + 448;
            if ( v34 )
            {
              if ( *(v34 + 32) > 0.0 )
              {
                sub_103ED930(8, 0);
                sub_103EDA10(8);
              }
            }
          }
          v35 = *(v4 + 96);
          if ( *(v35 + 10636) )
          {
            if ( *(v35 + 10624) != -504 && *(*(v35 + 10624) + 536) > 0.0 )
            {
              if ( *(v35 + 10636) )
              {
                v36 = *(v35 + 10624) + 504;
                if ( v36 )
                {
                  if ( *(v36 + 36) < 0.0 )
                    sub_103EDA10(9);
                }
              }
            }
          }
          sub_103EBEE0(v4);
          sub_103EBB90(v4);
          v37 = 0;
          v46 = 0;
          do
          {
            v38 = *(v4 + 96);
            if ( *(v38 + 10636) )
            {
              v39 = v37 + *(v38 + 10624);
              if ( v39 )
              {
                if ( !*(v39 + 24) )
                {
                  v40 = *(v39 + 48);
                  if ( v40 )
                  {
                    if ( *(v39 + 32) != 0.0 )
                      sub_101902C0(v40, 16);
                    v37 = v46;
                  }
                  *(v39 + 32) = 0;
                }
              }
            }
            v37 += 56;
            v46 = v37;
          }
          while ( v37 < 728 );
          v41 = *(v4 + 128);
          v42 = *(v4 + 96);
          v49 = 0;
          v50 = v41;
          v51 = 0;
          C_BaseEntity::SetAbsAngles(v42, &v49);
          v43 = g_pGlobals;
          *(v4 + 104) = *(v4 + 100);
          *(v4 + 188) = *(v4 + 176);
          *(v4 + 192) = *(v4 + 180);
          *(v4 + 196) = *(v4 + 184);
          *(v4 + 4) = 0;
          *(v4 + 108) = *(v43 + 16);
          v44 = *(v43 + 4);
          byte_10CAC0C8 = 1;
          *(v4 + 112) = v44;
        }
      }
    }
     
    Status
    Not open for further replies.