Подведи собственные итоги года совместно с YOUGAME и забери ценные призы! Перейти

Индекс и кривое СДК, которое ваняет... Помогите опознать тело погибшего

  • Автор темы Автор темы idesync
  • Дата начала Дата начала
Легенда форума
Легенда форума
Статус
Оффлайн
Регистрация
10 Дек 2018
Сообщения
4,455
Реакции
2,321
Привет!
Взялся обновлять пасту, а тут функция вот такая прикольная, с очень понятным названием:
2020-07-22_182823.png


Что это может быть? Давайте гадать.
Индексы +- с Мая.

Это точно НЕ: update_accuracy_penalty, net_pre_data_update, update_client_side_animation
 
Привет!
Взялся обновлять пасту, а тут функция вот такая прикольная, с очень понятным названием:
Посмотреть вложение 88727

Что это может быть? Давайте гадать.
Индексы +- с Мая.

Это точно НЕ: update_accuracy_penalty, net_pre_data_update, update_client_side_animation
это update_client_side_animation 0___o
индексы с того момента + ~5
а он сейчас как раз 223
 
это update_client_side_animation 0___o
индексы с того момента + ~5
а он сейчас как раз 223
Ну, может это конечно и так, но нахуя, а главное зачем мне два апдейт клиент сайд анимашона)
2020-07-22_184117.png
 
@shitcoder, я же правильно сделал, по ссылкам искать надо?..

Получается, это анъюзбл функция и крашить не может?
Тебе вон сверху еще ответили,я же говорил что это апдейтклиентсайд анимаций
 
Тебе вон сверху еще ответили,я же говорил что это апдейтклиентсайд анимаций
Ок, а что тогда из этого я не обновил?..
C++:
Expand Collapse Copy
#pragma once
#include "../../dependencies/math/math.hpp"
#include <array>
#include "collideable.hpp"
#include "client_class.hpp"
#include "../../dependencies/utilities/netvar_manager.hpp"

enum data_update_type_t {
    DATA_UPDATE_CREATED = 0,
    DATA_UPDATE_DATATABLE_CHANGED,
};


enum move_type {
    movetype_none = 0,
    movetype_isometric,
    movetype_walk,
    movetype_step,
    movetype_fly,
    movetype_flygravity,
    movetype_vphysics,
    movetype_push,
    movetype_noclip,
    movetype_ladder,
    movetype_observer,
    movetype_custom,
    movetype_last = movetype_custom,
    movetype_max_bits = 4,
    max_movetype
};

enum entity_flags {
    fl_onground = (1 << 0),
    fl_ducking = (1 << 1),
    fl_waterjump = (1 << 2),
    fl_ontrain = (1 << 3),
    fl_inrain = (1 << 4),
    fl_frozen = (1 << 5),
    fl_atcontrols = (1 << 6),
    fl_client = (1 << 7),
    fl_fakeclient = (1 << 8),
    fl_inwater = (1 << 9),
    fl_fly = (1 << 10),
    fl_swim = (1 << 11),
    fl_conveyor = (1 << 12),
    fl_npc = (1 << 13),
    fl_godmode = (1 << 14),
    fl_notarget = (1 << 15),
    fl_aimtarget = (1 << 16),
    fl_partialground = (1 << 17),
    fl_staticprop = (1 << 18),
    fl_graphed = (1 << 19),
    fl_grenade = (1 << 20),
    fl_stepmovement = (1 << 21),
    fl_donttouch = (1 << 22),
    fl_basevelocity = (1 << 23),
    fl_worldbrush = (1 << 24),
    fl_object = (1 << 25),
    fl_killme = (1 << 26),
    fl_onfire = (1 << 27),
    fl_dissolving = (1 << 28),
    fl_transragdoll = (1 << 29),
    fl_unblockable_by_player = (1 << 30)
};
enum item_definition_indexes {
    WEAPON_NONE = 0,
    WEAPON_DEAGLE,
    WEAPON_ELITE,
    WEAPON_FIVESEVEN,
    WEAPON_GLOCK,
    WEAPON_AK47 = 7,
    WEAPON_AUG,
    WEAPON_AWP,
    WEAPON_FAMAS,
    WEAPON_G3SG1,
    WEAPON_GALILAR = 13,
    WEAPON_M249,
    WEAPON_M4A1 = 16,
    WEAPON_MAC10,
    WEAPON_P90 = 19,
    WEAPON_MP5SD = 23,
    WEAPON_UMP45,
    WEAPON_XM1014,
    WEAPON_BIZON,
    WEAPON_MAG7,
    WEAPON_NEGEV,
    WEAPON_SAWEDOFF,
    WEAPON_TEC9,
    WEAPON_TASER,
    WEAPON_HKP2000,
    WEAPON_MP7,
    WEAPON_MP9,
    WEAPON_NOVA,
    WEAPON_P250,
    WEAPON_SHIELD,
    WEAPON_SCAR20,
    WEAPON_SG556,
    WEAPON_SSG08,
    WEAPON_KNIFEGG,
    WEAPON_KNIFE,
    WEAPON_FLASHBANG,
    WEAPON_HEGRENADE,
    WEAPON_SMOKEGRENADE,
    WEAPON_MOLOTOV,
    WEAPON_DECOY,
    WEAPON_INCGRENADE,
    WEAPON_C4,
    WEAPON_HEALTHSHOT = 57,
    WEAPON_KNIFE_T = 59,
    WEAPON_M4A1_SILENCER,
    WEAPON_USP_SILENCER,
    WEAPON_CZ75A = 63,
    WEAPON_REVOLVER,
    WEAPON_TAGRENADE = 68,
    WEAPON_FISTS,
    WEAPON_BREACHCHARGE,
    WEAPON_TABLET = 72,
    WEAPON_MELEE = 74,
    WEAPON_AXE,
    WEAPON_HAMMER,
    WEAPON_SPANNER = 78,
    WEAPON_KNIFE_GHOST = 80,
    WEAPON_FIREBOMB,
    WEAPON_DIVERSION,
    WEAPON_FRAG_GRENADE,
    WEAPON_SNOWBALL,
    WEAPON_BUMPMINE,
    WEAPON_BAYONET = 500,
    WEAPON_KNIFE_FLIP = 505,
    WEAPON_KNIFE_GUT,
    WEAPON_KNIFE_KARAMBIT,
    WEAPON_KNIFE_M9_BAYONET,
    WEAPON_KNIFE_TACTICAL,
    WEAPON_KNIFE_FALCHION = 512,
    WEAPON_KNIFE_SURVIVAL_BOWIE = 514,
    WEAPON_KNIFE_BUTTERFLY,
    WEAPON_KNIFE_PUSH,
    WEAPON_KNIFE_URSUS = 519,
    WEAPON_KNIFE_GYPSY_JACKKNIFE,
    WEAPON_KNIFE_STILETTO = 522,
    WEAPON_KNIFE_WIDOWMAKER,
    GLOVE_STUDDED_BLOODHOUND = 5027,
    GLOVE_T_SIDE = 5028,
    GLOVE_CT_SIDE = 5029,
    GLOVE_SPORTY = 5030,
    GLOVE_SLICK = 5031,
    GLOVE_LEATHER_WRAP = 5032,
    GLOVE_MOTORCYCLE = 5033,
    GLOVE_SPECIALIST = 5034,
    GLOVE_HYDRA = 5035
};

class entity_t {
public:
    void* animating() {
        return reinterpret_cast<void*>(uintptr_t(this) + 0x4);
    }
    void* networkable() {
        return reinterpret_cast<void*>(uintptr_t(this) + 0x8); //0x9C mb
    }
    collideable_t* collideable() {
        using original_fn = collideable_t * (__thiscall*)(void*);
        return (*(original_fn**)this)[3](this);
    }
    c_client_class* client_class() {
        using original_fn = c_client_class * (__thiscall*)(void*);
        return (*(original_fn**)networkable())[2](networkable());
    }

    int index() {
        using original_fn = int(__thiscall*)(void*);
        return (*(original_fn**)networkable())[10](networkable());
    }
    bool is_player() {
        using original_fn = bool(__thiscall*)(entity_t*);
        return (*(original_fn**)this)[157](this);
    }
    bool is_weapon() {
        using original_fn = bool(__thiscall*)(entity_t*);
        return (*(original_fn**)this)[165](this);
    }
    bool setup_bones(matrix_t* out, int max_bones, int mask, float time) {
        if (!this) {
            return false;
        }

        using original_fn = bool(__thiscall*)(void*, matrix_t*, int, int, float);
        return (*(original_fn**)animating())[13](animating(), out, max_bones, mask, time);
    }
    model_t* model() {
        using original_fn = model_t * (__thiscall*)(void*);
        return (*(original_fn**)animating())[8](animating());
    }
    void update() {
        using original_fn = void(__thiscall*)(entity_t*);
        (*(original_fn**)this)[218](this);
    }
    int draw_model(int flags, uint8_t alpha) {
        using original_fn = int(__thiscall*)(void*, int, uint8_t);
        return (*(original_fn**)animating())[9](animating(), flags, alpha);
    }
    void set_angles(vec3_t angles) {
        using original_fn = void(__thiscall*)(void*, const vec3_t&);
        static original_fn set_angles_fn = (original_fn)((DWORD)utilities::pattern_scan(GetModuleHandleA("client.dll"), "55 8B EC 83 E4 F8 83 EC 64 53 56 57 8B F1"));
        set_angles_fn(this, angles);
    }
    void set_position(vec3_t position) {
        using original_fn = void(__thiscall*)(void*, const vec3_t&);
        static original_fn set_position_fn = (original_fn)((DWORD)utilities::pattern_scan(GetModuleHandleA("client.dll"), "55 8B EC 83 E4 F8 51 53 56 57 8B F1 E8"));
        set_position_fn(this, position);
    }

    void set_model_index(int index) {
        using original_fn = void(__thiscall*)(void*, int);
        return (*(original_fn * *)this)[75](this, index);
    }

    void net_pre_data_update(int update_type)
    {
        using original_fn = void(__thiscall*)(void*, int);
        return (*(original_fn * *)networkable())[6](networkable(), update_type);
    }

    void net_release() {
        using original_fn = void(__thiscall*)(void*);
        return (*(original_fn * *)networkable())[1](networkable());
    }

    int net_set_destroyed_on_recreate_entities() {
        using original_fn = int(__thiscall*)(void*);
        return (*(original_fn * *)networkable())[13](networkable());
    }

    NETVAR("DT_CSPlayer", "m_fFlags", flags, int);
    OFFSET(bool, dormant, 0xED);
    NETVAR("DT_BaseEntity", "m_hOwnerEntity", owner_handle, unsigned long);
    NETVAR("DT_CSPlayer", "m_flSimulationTime", simulation_time, float);
    NETVAR("DT_BasePlayer", "m_vecOrigin", origin, vec3_t);
    NETVAR("DT_BasePlayer", "m_vecViewOffset[0]", view_offset, vec3_t);
    NETVAR("DT_CSPlayer", "m_iTeamNum", team, int);
    NETVAR("DT_BaseEntity", "m_bSpotted", spotted, bool);
};

class econ_view_item_t {
public:
    NETVAR("DT_ScriptCreatedItem", "m_bInitialized", is_initialized, bool);
    NETVAR("DT_ScriptCreatedItem", "m_iEntityLevel", entity_level, int);
    NETVAR("DT_ScriptCreatedItem", "m_iAccountID", account_id, int);
    NETVAR("DT_ScriptCreatedItem", "m_iItemIDLow", item_id_low, int);

};

class base_view_model : public entity_t {
public:
    NETVAR("DT_BaseViewModel", "m_nModelIndex", model_index, int);
    NETVAR("DT_BaseViewModel", "m_nViewModelIndex", view_model_index, int);
    NETVAR("DT_BaseViewModel", "m_hWeapon", m_hweapon, int);
    NETVAR("DT_BaseViewModel", "m_hOwner", m_howner, int);
};

class attributable_item_t : public entity_t {
public:
    NETVAR("DT_BaseViewModel", "m_nModelIndex", model_index, int);
    NETVAR("DT_BaseAttributableItem", "m_OriginalOwnerXuidLow", original_owner_xuid_low, int);
    NETVAR("DT_BaseAttributableItem", "m_OriginalOwnerXuidHigh", original_owner_xuid_high, int);
    NETVAR("DT_BaseAttributableItem", "m_nFallbackStatTrak", fallback_stattrak, int);
    NETVAR("DT_BaseAttributableItem", "m_nFallbackPaintKit", fallback_paint_kit, int);
    NETVAR("DT_BaseAttributableItem", "m_nFallbackSeed", fallback_seed, int);
    NETVAR("DT_BaseAttributableItem", "m_iEntityQuality", entity_quality, int);
    NETVAR("DT_BaseAttributableItem", "m_flFallbackWear", fallback_wear, float);
    NETVAR("DT_BaseCombatWeapon", "m_hWeaponWorldModel", world_model_handle, unsigned long);
    NETVAR("DT_BaseAttributableItem", "m_iItemDefinitionIndex", item_definition_index, short);
    NETVAR("DT_BaseAttributableItem", "m_iItemIDHigh", item_id_high, int);
};

class weapon_t : public entity_t {
public:
    NETVAR("DT_BaseCombatWeapon", "m_flNextPrimaryAttack", next_primary_attack, float);
    NETVAR("DT_BaseCombatWeapon", "m_flNextSecondaryAttack", next_secondary_attack, float);
    NETVAR("DT_BaseCombatWeapon", "m_iClip1", clip1_count, int);
    NETVAR("DT_BaseCombatWeapon", "m_iClip2", clip2_count, int);
    NETVAR("DT_BaseCombatWeapon", "m_iPrimaryReserveAmmoCount", primary_reserve_ammo_acount, int);
    NETVAR("DT_WeaponCSBase", "m_flRecoilIndex", recoil_index, float);
    NETVAR("DT_WeaponCSBaseGun", "m_zoomLevel", zoom_level, float);
    NETVAR("DT_BaseAttributableItem", "m_iItemDefinitionIndex", item_definition_index, short);
    NETVAR("DT_BaseCombatWeapon", "m_iEntityQuality", entity_quality, int);

    float get_innacuracy() {
        using original_fn = float(__thiscall*)(void*);
        return (*(original_fn**)this)[478](this);
    }

    float get_spread() {
        using original_fn = float(__thiscall*)(void*);
        return (*(original_fn**)this)[448](this);
    }

    void update_accuracy_penalty() {
        using original_fn = void(__thiscall*)(void*);
        (*(original_fn**)this)[479](this);
    }

    weapon_info_t* get_weapon_data() {
        using original_fn = weapon_info_t * (__thiscall*)(void*);
        return (*(original_fn**)this)[456](this); //skinchanger crash
    }
};

class player_t : public entity_t {
private:
    template <typename T>
    T& read(uintptr_t offset) {
        return *reinterpret_cast<T*>(reinterpret_cast<uintptr_t>(this) + offset);
    }

    template <typename T>
    void write(uintptr_t offset, T data) {
        *reinterpret_cast<T*>(reinterpret_cast<uintptr_t>(this) + offset) = data;
    }

public:
    NETVAR("DT_BasePlayer", "m_hViewModel[0]", view_model, int); //tutaj
    NETVAR("DT_CSPlayer", "m_bHasDefuser", has_defuser, bool);
    NETVAR("DT_CSPlayer", "m_bGunGameImmunity", has_gun_game_immunity, bool);
    NETVAR("DT_CSPlayer", "m_iShotsFired", shots_fired, int);
    NETVAR("DT_CSPlayer", "m_angEyeAngles", eye_angles, vec3_t); //"DT_CSPlayer->m_angEyeAngles[0]");
    NETVAR("DT_CSPlayer", "m_ArmorValue", armor, int);
    NETVAR("DT_CSPlayer", "m_bHasHelmet", has_helmet, bool);
    NETVAR("DT_CSPlayer", "m_bIsScoped", is_scoped, bool);
    NETVAR("DT_CSPlayer", "m_bIsDefusing", is_defusing, bool);
    NETVAR("DT_CSPlayer", "m_iAccount", money, int);
    NETVAR("DT_CSPlayer", "m_flLowerBodyYawTarget", lower_body_yaw, float);
    NETVAR("DT_CSPlayer", "m_flNextAttack", next_attack, float);
    NETVAR("DT_CSPlayer", "m_flFlashDuration", flash_duration, float);
    NETVAR("DT_CSPlayer", "m_flFlashMaxAlpha", flash_alpha, float);
    NETVAR("DT_CSPlayer", "m_bHasNightVision", m_bHasNightVision, float);
    NETVAR("DT_CSPlayer", "m_bNightVisionOn", m_bNightVisionOn, float);
    NETVAR("DT_CSPlayer", "m_iHealth", health, int);
    NETVAR("DT_CSPlayer", "m_lifeState", life_state, int);
    NETVAR("DT_CSPlayer", "m_fFlags", flags, int);
    NETVAR("DT_BasePlayer", "m_viewPunchAngle", punch_angle, vec3_t);
    NETVAR("DT_BasePlayer", "m_aimPunchAngle", aim_punch_angle, vec3_t);
    NETVAR("DT_BasePlayer", "m_vecVelocity[0]", velocity, vec3_t);
    NETVAR("DT_BasePlayer", "m_flMaxspeed", max_speed, float);
    NETVAR("DT_BaseEntity", "m_flShadowCastDistance", m_flFOVTime, float);
    NETVAR("DT_BasePlayer", "m_hObserverTarget", observer_target, unsigned long);
    NETVAR("DT_BasePlayer", "m_nHitboxSet", hitbox_set, int);
    NETVAR("DT_CSPlayer", "m_flDuckAmount", duck_amount, float);
    NETVAR("DT_CSPlayer", "m_bHasHeavyArmor", has_heavy_armor, bool);
    NETVAR("DT_PlantedC4", "m_flC4Blow", c4_blow_time, float);
    NETVAR("DT_SmokeGrenadeProjectile", "m_nSmokeEffectTickBegin", smoke_grenade_tick_begin, int);
    NETVAR("DT_CSPlayer", "m_nTickBase", get_tick_base, int);

    weapon_t* active_weapon() {
        auto active_weapon = read<uintptr_t>(netvar_manager::get_net_var(netvar_manager::fnv::hash("DT_CSPlayer"), netvar_manager::fnv::hash("m_hActiveWeapon"))) & 0xFFF;
        return reinterpret_cast<weapon_t*>(interfaces::entity_list->get_client_entity(active_weapon));
    }

    UINT* get_wearables() {
        return (UINT*)((uintptr_t)this + (netvar_manager::get_net_var(netvar_manager::fnv::hash("DT_CSPlayer"), netvar_manager::fnv::hash("m_hMyWearables"))));
    }

    UINT* get_weapons() {
        return (UINT*)((uintptr_t)this + (netvar_manager::get_net_var(netvar_manager::fnv::hash("DT_CSPlayer"), netvar_manager::fnv::hash("m_hMyWeapons"))));
    }

    bool has_c4() {
        static auto fn = reinterpret_cast<bool(__thiscall*)(void*)>(utilities::pattern_scan(GetModuleHandleA("client.dll"), "56 8B F1 85 F6 74 31"));
        return fn(this);
    }

    vec3_t get_eye_pos() {
        return origin() + view_offset(); //hazedumper
    }

    bool can_see_player_pos(player_t* player, const vec3_t& pos) {
        trace_t tr;
        ray_t ray;
        trace_filter filter;
        filter.skip = this;

        auto start = get_eye_pos();
        auto dir = (pos - start).normalized();

        ray.initialize(start, pos);
        interfaces::trace_ray->trace_ray(ray, MASK_SHOT | CONTENTS_GRATE, &filter, &tr);

        return tr.entity == player || tr.flFraction > 0.97f;
    }

    vec3_t get_bone_position(int bone) {
        matrix_t bone_matrices[128];
        if (setup_bones(bone_matrices, 128, 256, 0.0f))
            return vec3_t{ bone_matrices[bone][0][3], bone_matrices[bone][1][3], bone_matrices[bone][2][3] };
        else
            return vec3_t{ };
    }

    vec3_t get_hitbox_position(player_t* entity, int hitbox_id) {
        matrix_t bone_matrix[MAXSTUDIOBONES];

        if (entity->setup_bones(bone_matrix, MAXSTUDIOBONES, BONE_USED_BY_HITBOX, 0.0f)) {
            auto studio_model = interfaces::model_info->get_studio_model(entity->model());

            if (studio_model) {
                auto hitbox = studio_model->hitbox_set(0)->hitbox(hitbox_id);

                if (hitbox) {
                    auto min = vec3_t{}, max = vec3_t{};

                    math.transform_vector(hitbox->mins, bone_matrix[hitbox->bone], min);
                    math.transform_vector(hitbox->maxs, bone_matrix[hitbox->bone], max);

                    return vec3_t((min.x + max.x) * 0.5f, (min.y + max.y) * 0.5f, (min.z + max.z) * 0.5f);
                }
            }
        }
        return vec3_t{};
    }

    bool is_enemy() {
        static auto danger_zone = interfaces::console->get_convar("game_type");

        if (!is_in_local_team() || danger_zone->get_int() == 6)
            return true;
        else
            return false;
    }

    bool is_in_local_team() {
        return utilities::call_virtual<bool(__thiscall*)(void*)>(this, 92)(this);
    }

    bool is_alive() {
        return life_state() == 0;
    }

    bool is_moving() {
        if (this->velocity().length() > 0.1f)
            return true;

        return false;
    }

    bool is_in_air() {
        if (this->flags() & fl_onground)
            return false;

        return true;
    }

    bool is_flashed() {
        if (this->flash_duration() > 0.0f)
            return true;

        return false;
    }

    void update_client_side_animations() {
        using original_fn = void(__thiscall*)(void*);
        (*(original_fn**)this)[223](this);
    }

    vec3_t & abs_origin() {
        using original_fn = vec3_t & (__thiscall*)(void*);
        return (*(original_fn**)this)[10](this);;
    }
    vec3_t & abs_angles() {
        using original_fn = vec3_t & (__thiscall*)(void*);
        return (*(original_fn**)this)[11](this);;
    }
    int    move_type() {
        return *reinterpret_cast<int*> (reinterpret_cast<uintptr_t>(this) + 0x25C); //hazedumper
    }
};
 
Ок, а что тогда из этого я не обновил?..
C++:
Expand Collapse Copy
#pragma once
#include "../../dependencies/math/math.hpp"
#include <array>
#include "collideable.hpp"
#include "client_class.hpp"
#include "../../dependencies/utilities/netvar_manager.hpp"

enum data_update_type_t {
    DATA_UPDATE_CREATED = 0,
    DATA_UPDATE_DATATABLE_CHANGED,
};


enum move_type {
    movetype_none = 0,
    movetype_isometric,
    movetype_walk,
    movetype_step,
    movetype_fly,
    movetype_flygravity,
    movetype_vphysics,
    movetype_push,
    movetype_noclip,
    movetype_ladder,
    movetype_observer,
    movetype_custom,
    movetype_last = movetype_custom,
    movetype_max_bits = 4,
    max_movetype
};

enum entity_flags {
    fl_onground = (1 << 0),
    fl_ducking = (1 << 1),
    fl_waterjump = (1 << 2),
    fl_ontrain = (1 << 3),
    fl_inrain = (1 << 4),
    fl_frozen = (1 << 5),
    fl_atcontrols = (1 << 6),
    fl_client = (1 << 7),
    fl_fakeclient = (1 << 8),
    fl_inwater = (1 << 9),
    fl_fly = (1 << 10),
    fl_swim = (1 << 11),
    fl_conveyor = (1 << 12),
    fl_npc = (1 << 13),
    fl_godmode = (1 << 14),
    fl_notarget = (1 << 15),
    fl_aimtarget = (1 << 16),
    fl_partialground = (1 << 17),
    fl_staticprop = (1 << 18),
    fl_graphed = (1 << 19),
    fl_grenade = (1 << 20),
    fl_stepmovement = (1 << 21),
    fl_donttouch = (1 << 22),
    fl_basevelocity = (1 << 23),
    fl_worldbrush = (1 << 24),
    fl_object = (1 << 25),
    fl_killme = (1 << 26),
    fl_onfire = (1 << 27),
    fl_dissolving = (1 << 28),
    fl_transragdoll = (1 << 29),
    fl_unblockable_by_player = (1 << 30)
};
enum item_definition_indexes {
    WEAPON_NONE = 0,
    WEAPON_DEAGLE,
    WEAPON_ELITE,
    WEAPON_FIVESEVEN,
    WEAPON_GLOCK,
    WEAPON_AK47 = 7,
    WEAPON_AUG,
    WEAPON_AWP,
    WEAPON_FAMAS,
    WEAPON_G3SG1,
    WEAPON_GALILAR = 13,
    WEAPON_M249,
    WEAPON_M4A1 = 16,
    WEAPON_MAC10,
    WEAPON_P90 = 19,
    WEAPON_MP5SD = 23,
    WEAPON_UMP45,
    WEAPON_XM1014,
    WEAPON_BIZON,
    WEAPON_MAG7,
    WEAPON_NEGEV,
    WEAPON_SAWEDOFF,
    WEAPON_TEC9,
    WEAPON_TASER,
    WEAPON_HKP2000,
    WEAPON_MP7,
    WEAPON_MP9,
    WEAPON_NOVA,
    WEAPON_P250,
    WEAPON_SHIELD,
    WEAPON_SCAR20,
    WEAPON_SG556,
    WEAPON_SSG08,
    WEAPON_KNIFEGG,
    WEAPON_KNIFE,
    WEAPON_FLASHBANG,
    WEAPON_HEGRENADE,
    WEAPON_SMOKEGRENADE,
    WEAPON_MOLOTOV,
    WEAPON_DECOY,
    WEAPON_INCGRENADE,
    WEAPON_C4,
    WEAPON_HEALTHSHOT = 57,
    WEAPON_KNIFE_T = 59,
    WEAPON_M4A1_SILENCER,
    WEAPON_USP_SILENCER,
    WEAPON_CZ75A = 63,
    WEAPON_REVOLVER,
    WEAPON_TAGRENADE = 68,
    WEAPON_FISTS,
    WEAPON_BREACHCHARGE,
    WEAPON_TABLET = 72,
    WEAPON_MELEE = 74,
    WEAPON_AXE,
    WEAPON_HAMMER,
    WEAPON_SPANNER = 78,
    WEAPON_KNIFE_GHOST = 80,
    WEAPON_FIREBOMB,
    WEAPON_DIVERSION,
    WEAPON_FRAG_GRENADE,
    WEAPON_SNOWBALL,
    WEAPON_BUMPMINE,
    WEAPON_BAYONET = 500,
    WEAPON_KNIFE_FLIP = 505,
    WEAPON_KNIFE_GUT,
    WEAPON_KNIFE_KARAMBIT,
    WEAPON_KNIFE_M9_BAYONET,
    WEAPON_KNIFE_TACTICAL,
    WEAPON_KNIFE_FALCHION = 512,
    WEAPON_KNIFE_SURVIVAL_BOWIE = 514,
    WEAPON_KNIFE_BUTTERFLY,
    WEAPON_KNIFE_PUSH,
    WEAPON_KNIFE_URSUS = 519,
    WEAPON_KNIFE_GYPSY_JACKKNIFE,
    WEAPON_KNIFE_STILETTO = 522,
    WEAPON_KNIFE_WIDOWMAKER,
    GLOVE_STUDDED_BLOODHOUND = 5027,
    GLOVE_T_SIDE = 5028,
    GLOVE_CT_SIDE = 5029,
    GLOVE_SPORTY = 5030,
    GLOVE_SLICK = 5031,
    GLOVE_LEATHER_WRAP = 5032,
    GLOVE_MOTORCYCLE = 5033,
    GLOVE_SPECIALIST = 5034,
    GLOVE_HYDRA = 5035
};

class entity_t {
public:
    void* animating() {
        return reinterpret_cast<void*>(uintptr_t(this) + 0x4);
    }
    void* networkable() {
        return reinterpret_cast<void*>(uintptr_t(this) + 0x8); //0x9C mb
    }
    collideable_t* collideable() {
        using original_fn = collideable_t * (__thiscall*)(void*);
        return (*(original_fn**)this)[3](this);
    }
    c_client_class* client_class() {
        using original_fn = c_client_class * (__thiscall*)(void*);
        return (*(original_fn**)networkable())[2](networkable());
    }

    int index() {
        using original_fn = int(__thiscall*)(void*);
        return (*(original_fn**)networkable())[10](networkable());
    }
    bool is_player() {
        using original_fn = bool(__thiscall*)(entity_t*);
        return (*(original_fn**)this)[157](this);
    }
    bool is_weapon() {
        using original_fn = bool(__thiscall*)(entity_t*);
        return (*(original_fn**)this)[165](this);
    }
    bool setup_bones(matrix_t* out, int max_bones, int mask, float time) {
        if (!this) {
            return false;
        }

        using original_fn = bool(__thiscall*)(void*, matrix_t*, int, int, float);
        return (*(original_fn**)animating())[13](animating(), out, max_bones, mask, time);
    }
    model_t* model() {
        using original_fn = model_t * (__thiscall*)(void*);
        return (*(original_fn**)animating())[8](animating());
    }
    void update() {
        using original_fn = void(__thiscall*)(entity_t*);
        (*(original_fn**)this)[218](this);
    }
    int draw_model(int flags, uint8_t alpha) {
        using original_fn = int(__thiscall*)(void*, int, uint8_t);
        return (*(original_fn**)animating())[9](animating(), flags, alpha);
    }
    void set_angles(vec3_t angles) {
        using original_fn = void(__thiscall*)(void*, const vec3_t&);
        static original_fn set_angles_fn = (original_fn)((DWORD)utilities::pattern_scan(GetModuleHandleA("client.dll"), "55 8B EC 83 E4 F8 83 EC 64 53 56 57 8B F1"));
        set_angles_fn(this, angles);
    }
    void set_position(vec3_t position) {
        using original_fn = void(__thiscall*)(void*, const vec3_t&);
        static original_fn set_position_fn = (original_fn)((DWORD)utilities::pattern_scan(GetModuleHandleA("client.dll"), "55 8B EC 83 E4 F8 51 53 56 57 8B F1 E8"));
        set_position_fn(this, position);
    }

    void set_model_index(int index) {
        using original_fn = void(__thiscall*)(void*, int);
        return (*(original_fn * *)this)[75](this, index);
    }

    void net_pre_data_update(int update_type)
    {
        using original_fn = void(__thiscall*)(void*, int);
        return (*(original_fn * *)networkable())[6](networkable(), update_type);
    }

    void net_release() {
        using original_fn = void(__thiscall*)(void*);
        return (*(original_fn * *)networkable())[1](networkable());
    }

    int net_set_destroyed_on_recreate_entities() {
        using original_fn = int(__thiscall*)(void*);
        return (*(original_fn * *)networkable())[13](networkable());
    }

    NETVAR("DT_CSPlayer", "m_fFlags", flags, int);
    OFFSET(bool, dormant, 0xED);
    NETVAR("DT_BaseEntity", "m_hOwnerEntity", owner_handle, unsigned long);
    NETVAR("DT_CSPlayer", "m_flSimulationTime", simulation_time, float);
    NETVAR("DT_BasePlayer", "m_vecOrigin", origin, vec3_t);
    NETVAR("DT_BasePlayer", "m_vecViewOffset[0]", view_offset, vec3_t);
    NETVAR("DT_CSPlayer", "m_iTeamNum", team, int);
    NETVAR("DT_BaseEntity", "m_bSpotted", spotted, bool);
};

class econ_view_item_t {
public:
    NETVAR("DT_ScriptCreatedItem", "m_bInitialized", is_initialized, bool);
    NETVAR("DT_ScriptCreatedItem", "m_iEntityLevel", entity_level, int);
    NETVAR("DT_ScriptCreatedItem", "m_iAccountID", account_id, int);
    NETVAR("DT_ScriptCreatedItem", "m_iItemIDLow", item_id_low, int);

};

class base_view_model : public entity_t {
public:
    NETVAR("DT_BaseViewModel", "m_nModelIndex", model_index, int);
    NETVAR("DT_BaseViewModel", "m_nViewModelIndex", view_model_index, int);
    NETVAR("DT_BaseViewModel", "m_hWeapon", m_hweapon, int);
    NETVAR("DT_BaseViewModel", "m_hOwner", m_howner, int);
};

class attributable_item_t : public entity_t {
public:
    NETVAR("DT_BaseViewModel", "m_nModelIndex", model_index, int);
    NETVAR("DT_BaseAttributableItem", "m_OriginalOwnerXuidLow", original_owner_xuid_low, int);
    NETVAR("DT_BaseAttributableItem", "m_OriginalOwnerXuidHigh", original_owner_xuid_high, int);
    NETVAR("DT_BaseAttributableItem", "m_nFallbackStatTrak", fallback_stattrak, int);
    NETVAR("DT_BaseAttributableItem", "m_nFallbackPaintKit", fallback_paint_kit, int);
    NETVAR("DT_BaseAttributableItem", "m_nFallbackSeed", fallback_seed, int);
    NETVAR("DT_BaseAttributableItem", "m_iEntityQuality", entity_quality, int);
    NETVAR("DT_BaseAttributableItem", "m_flFallbackWear", fallback_wear, float);
    NETVAR("DT_BaseCombatWeapon", "m_hWeaponWorldModel", world_model_handle, unsigned long);
    NETVAR("DT_BaseAttributableItem", "m_iItemDefinitionIndex", item_definition_index, short);
    NETVAR("DT_BaseAttributableItem", "m_iItemIDHigh", item_id_high, int);
};

class weapon_t : public entity_t {
public:
    NETVAR("DT_BaseCombatWeapon", "m_flNextPrimaryAttack", next_primary_attack, float);
    NETVAR("DT_BaseCombatWeapon", "m_flNextSecondaryAttack", next_secondary_attack, float);
    NETVAR("DT_BaseCombatWeapon", "m_iClip1", clip1_count, int);
    NETVAR("DT_BaseCombatWeapon", "m_iClip2", clip2_count, int);
    NETVAR("DT_BaseCombatWeapon", "m_iPrimaryReserveAmmoCount", primary_reserve_ammo_acount, int);
    NETVAR("DT_WeaponCSBase", "m_flRecoilIndex", recoil_index, float);
    NETVAR("DT_WeaponCSBaseGun", "m_zoomLevel", zoom_level, float);
    NETVAR("DT_BaseAttributableItem", "m_iItemDefinitionIndex", item_definition_index, short);
    NETVAR("DT_BaseCombatWeapon", "m_iEntityQuality", entity_quality, int);

    float get_innacuracy() {
        using original_fn = float(__thiscall*)(void*);
        return (*(original_fn**)this)[478](this);
    }

    float get_spread() {
        using original_fn = float(__thiscall*)(void*);
        return (*(original_fn**)this)[448](this);
    }

    void update_accuracy_penalty() {
        using original_fn = void(__thiscall*)(void*);
        (*(original_fn**)this)[479](this);
    }

    weapon_info_t* get_weapon_data() {
        using original_fn = weapon_info_t * (__thiscall*)(void*);
        return (*(original_fn**)this)[456](this); //skinchanger crash
    }
};

class player_t : public entity_t {
private:
    template <typename T>
    T& read(uintptr_t offset) {
        return *reinterpret_cast<T*>(reinterpret_cast<uintptr_t>(this) + offset);
    }

    template <typename T>
    void write(uintptr_t offset, T data) {
        *reinterpret_cast<T*>(reinterpret_cast<uintptr_t>(this) + offset) = data;
    }

public:
    NETVAR("DT_BasePlayer", "m_hViewModel[0]", view_model, int); //tutaj
    NETVAR("DT_CSPlayer", "m_bHasDefuser", has_defuser, bool);
    NETVAR("DT_CSPlayer", "m_bGunGameImmunity", has_gun_game_immunity, bool);
    NETVAR("DT_CSPlayer", "m_iShotsFired", shots_fired, int);
    NETVAR("DT_CSPlayer", "m_angEyeAngles", eye_angles, vec3_t); //"DT_CSPlayer->m_angEyeAngles[0]");
    NETVAR("DT_CSPlayer", "m_ArmorValue", armor, int);
    NETVAR("DT_CSPlayer", "m_bHasHelmet", has_helmet, bool);
    NETVAR("DT_CSPlayer", "m_bIsScoped", is_scoped, bool);
    NETVAR("DT_CSPlayer", "m_bIsDefusing", is_defusing, bool);
    NETVAR("DT_CSPlayer", "m_iAccount", money, int);
    NETVAR("DT_CSPlayer", "m_flLowerBodyYawTarget", lower_body_yaw, float);
    NETVAR("DT_CSPlayer", "m_flNextAttack", next_attack, float);
    NETVAR("DT_CSPlayer", "m_flFlashDuration", flash_duration, float);
    NETVAR("DT_CSPlayer", "m_flFlashMaxAlpha", flash_alpha, float);
    NETVAR("DT_CSPlayer", "m_bHasNightVision", m_bHasNightVision, float);
    NETVAR("DT_CSPlayer", "m_bNightVisionOn", m_bNightVisionOn, float);
    NETVAR("DT_CSPlayer", "m_iHealth", health, int);
    NETVAR("DT_CSPlayer", "m_lifeState", life_state, int);
    NETVAR("DT_CSPlayer", "m_fFlags", flags, int);
    NETVAR("DT_BasePlayer", "m_viewPunchAngle", punch_angle, vec3_t);
    NETVAR("DT_BasePlayer", "m_aimPunchAngle", aim_punch_angle, vec3_t);
    NETVAR("DT_BasePlayer", "m_vecVelocity[0]", velocity, vec3_t);
    NETVAR("DT_BasePlayer", "m_flMaxspeed", max_speed, float);
    NETVAR("DT_BaseEntity", "m_flShadowCastDistance", m_flFOVTime, float);
    NETVAR("DT_BasePlayer", "m_hObserverTarget", observer_target, unsigned long);
    NETVAR("DT_BasePlayer", "m_nHitboxSet", hitbox_set, int);
    NETVAR("DT_CSPlayer", "m_flDuckAmount", duck_amount, float);
    NETVAR("DT_CSPlayer", "m_bHasHeavyArmor", has_heavy_armor, bool);
    NETVAR("DT_PlantedC4", "m_flC4Blow", c4_blow_time, float);
    NETVAR("DT_SmokeGrenadeProjectile", "m_nSmokeEffectTickBegin", smoke_grenade_tick_begin, int);
    NETVAR("DT_CSPlayer", "m_nTickBase", get_tick_base, int);

    weapon_t* active_weapon() {
        auto active_weapon = read<uintptr_t>(netvar_manager::get_net_var(netvar_manager::fnv::hash("DT_CSPlayer"), netvar_manager::fnv::hash("m_hActiveWeapon"))) & 0xFFF;
        return reinterpret_cast<weapon_t*>(interfaces::entity_list->get_client_entity(active_weapon));
    }

    UINT* get_wearables() {
        return (UINT*)((uintptr_t)this + (netvar_manager::get_net_var(netvar_manager::fnv::hash("DT_CSPlayer"), netvar_manager::fnv::hash("m_hMyWearables"))));
    }

    UINT* get_weapons() {
        return (UINT*)((uintptr_t)this + (netvar_manager::get_net_var(netvar_manager::fnv::hash("DT_CSPlayer"), netvar_manager::fnv::hash("m_hMyWeapons"))));
    }

    bool has_c4() {
        static auto fn = reinterpret_cast<bool(__thiscall*)(void*)>(utilities::pattern_scan(GetModuleHandleA("client.dll"), "56 8B F1 85 F6 74 31"));
        return fn(this);
    }

    vec3_t get_eye_pos() {
        return origin() + view_offset(); //hazedumper
    }

    bool can_see_player_pos(player_t* player, const vec3_t& pos) {
        trace_t tr;
        ray_t ray;
        trace_filter filter;
        filter.skip = this;

        auto start = get_eye_pos();
        auto dir = (pos - start).normalized();

        ray.initialize(start, pos);
        interfaces::trace_ray->trace_ray(ray, MASK_SHOT | CONTENTS_GRATE, &filter, &tr);

        return tr.entity == player || tr.flFraction > 0.97f;
    }

    vec3_t get_bone_position(int bone) {
        matrix_t bone_matrices[128];
        if (setup_bones(bone_matrices, 128, 256, 0.0f))
            return vec3_t{ bone_matrices[bone][0][3], bone_matrices[bone][1][3], bone_matrices[bone][2][3] };
        else
            return vec3_t{ };
    }

    vec3_t get_hitbox_position(player_t* entity, int hitbox_id) {
        matrix_t bone_matrix[MAXSTUDIOBONES];

        if (entity->setup_bones(bone_matrix, MAXSTUDIOBONES, BONE_USED_BY_HITBOX, 0.0f)) {
            auto studio_model = interfaces::model_info->get_studio_model(entity->model());

            if (studio_model) {
                auto hitbox = studio_model->hitbox_set(0)->hitbox(hitbox_id);

                if (hitbox) {
                    auto min = vec3_t{}, max = vec3_t{};

                    math.transform_vector(hitbox->mins, bone_matrix[hitbox->bone], min);
                    math.transform_vector(hitbox->maxs, bone_matrix[hitbox->bone], max);

                    return vec3_t((min.x + max.x) * 0.5f, (min.y + max.y) * 0.5f, (min.z + max.z) * 0.5f);
                }
            }
        }
        return vec3_t{};
    }

    bool is_enemy() {
        static auto danger_zone = interfaces::console->get_convar("game_type");

        if (!is_in_local_team() || danger_zone->get_int() == 6)
            return true;
        else
            return false;
    }

    bool is_in_local_team() {
        return utilities::call_virtual<bool(__thiscall*)(void*)>(this, 92)(this);
    }

    bool is_alive() {
        return life_state() == 0;
    }

    bool is_moving() {
        if (this->velocity().length() > 0.1f)
            return true;

        return false;
    }

    bool is_in_air() {
        if (this->flags() & fl_onground)
            return false;

        return true;
    }

    bool is_flashed() {
        if (this->flash_duration() > 0.0f)
            return true;

        return false;
    }

    void update_client_side_animations() {
        using original_fn = void(__thiscall*)(void*);
        (*(original_fn**)this)[223](this);
    }

    vec3_t & abs_origin() {
        using original_fn = vec3_t & (__thiscall*)(void*);
        return (*(original_fn**)this)[10](this);;
    }
    vec3_t & abs_angles() {
        using original_fn = vec3_t & (__thiscall*)(void*);
        return (*(original_fn**)this)[11](this);;
    }
    int    move_type() {
        return *reinterpret_cast<int*> (reinterpret_cast<uintptr_t>(this) + 0x25C); //hazedumper
    }
};
Пробежался быстренько , вроде бы все обновил
 
ну если функкция нигде не юзается, то нахуй она нужна собственно?
Всё-таки вырезал, в тот раз визуалка баганула просто..
Ага.
Тоже вырежу.

p.s. А)) Теперь я походу понял, зачем это нужно...

Посмотреть вложение 88732
 
float get_innacuracy() {
using original_fn = float(__thiscall*)(void*);
return (*(original_fn**)this)[478](this);
}

float get_spread() {
using original_fn = float(__thiscall*)(void*);
return (*(original_fn**)this)[448](this);
}

void update_accuracy_penalty() {
using original_fn = void(__thiscall*)(void*);
(*(original_fn**)this)[479](this);
}

weapon_info_t* get_weapon_data() {
using original_fn = weapon_info_t * (__thiscall*)(void*);
return (*(original_fn**)this)[456](this); //skinchanger crash
}
Я конечно не эксперт но ты нихуя не обновил
1595418676360.png
 
float get_innacuracy() {
using original_fn = float(__thiscall*)(void*);
return (*(original_fn**)this)[478](this);
}

float get_spread() {
using original_fn = float(__thiscall*)(void*);
return (*(original_fn**)this)[448](this);
}

void update_accuracy_penalty() {
using original_fn = void(__thiscall*)(void*);
(*(original_fn**)this)[479](this);
}

weapon_info_t* get_weapon_data() {
using original_fn = weapon_info_t * (__thiscall*)(void*);
return (*(original_fn**)this)[456](this); //skinchanger crash
}
Я конечно не эксперт но ты нихуя не обновил
Посмотреть вложение 88733
Мда, ясно, на uc наебали значит..)
 
Ну, может это конечно и так, но нахуя, а главное зачем мне два апдейт клиент сайд анимашона)
Посмотреть вложение 88731
ок
специально для тебя встал с дивана и открыл идб
1595418981996.png

1595419044660.png

только это 18 год 0___o
это кншн может быть frame_advance(тк там update_client_side_animation 221 и при этом update 218) но по аргументам только update_client_side_animation подходит
 
Последнее редактирование:
Назад
Сверху Снизу