Find the scope offset Code: DWORD AWM_V = *(DWORD*)(*(DWORD*)(WeaponMgr)+0xCB0); DWORD AWM = *(DWORD*)(*(DWORD*)(WeaponMgr)+0x1BC); for (int x = 0; x < 0x9FFF; x++) { if (*(DWORD*)(AWM_V + x) == 2 && *(DWORD*)(AWM + x) == 0) { Scope_type = x; break; } } Main # Code: if ((*(BYTE*)(Weapon + WeaponClass) = WeaponType::Sniper)) { switch (Scope) { case 0: *(int*)(Weapon + Scope_type) = Scope_type_old; break; case 1: *(int*)(Weapon + Scope_type) = 0; break; // AWM case 2: *(int*)(Weapon + Scope_type) = 1; break; // 3Z case 3: *(int*)(Weapon + Scope_type) = 2; break; // AWM VIP case 4: *(int*)(Weapon + Scope_type) = 3; break; // 3Z Born Best case 5: *(int*)(Weapon + Scope_type) = 11; break; // 3Z Iron shark case 6: *(int*)(Weapon + Scope_type) = 7; break; // Mosin case 7: *(int*)(Weapon + Scope_type) = 4; break; // Target case 8: *(int*)(Weapon + Scope_type) = 6; break; // New Target case 9: *(int*)(Weapon + Scope_type) = 9; break; // Missle Target case 10: *(int*)(Weapon + Scope_type) = 10; break; // Dragunov } }