• Я зарабатываю 100 000 RUB / месяц на этом сайте!

    А знаешь как? Я всего-лишь публикую (создаю темы), а админ мне платит. Трачу деньги на мороженое, робуксы и сервера в Minecraft. А ещё на паль из Китая. 

    Хочешь так же? Пиши и узнавай условия: https://t.me/alex_redact
    Реклама: https://t.me/yougame_official

Исходник Резик от зерон су на лв

  • Автор темы Автор темы Bouy
  • Дата начала Дата начала
Забаненный
Забаненный
Статус
Оффлайн
Регистрация
13 Июн 2020
Сообщения
227
Реакции
57
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Вобщем да

Код:
Expand Collapse Copy
#pragma once

#include "..\..\includes.hpp"
#include "..\..\sdk\structs.hpp"

enum
{
    MAIN,
    NONE,
    FIRST,
    SECOND
};

enum resolver_type
{
    ORIGINAL,
    BRUTEFORCE,
    LBY,
    TRACE,
    DIRECTIONAL
};

enum ADVANCED_ACTIVITY : int
{
    ACTIVITY_NONE = 0,
    ACTIVITY_JUMP,
    ACTIVITY_LAND
};

enum resolver_side
{
    RESOLVER_ORIGINAL,
    RESOLVER_ZERO,
    RESOLVER_FIRST,
    RESOLVER_SECOND,
    RESOLVER_LOW_FIRST,
    RESOLVER_LOW_SECOND
};

enum ROTATE_MODE
{
    ROTATE_SERVER,
    ROTATE_LEFT,
    ROTATE_CENTER,
    ROTATE_RIGHT,
    ROTATE_LOW_LEFT,
    ROTATE_LOW_RIGHT
};

enum Effects_t : int
{
    EF_BONEMERGE = 0x001,
    EF_BRIGHTLIGHT = 0x002,
    EF_DIMLIGHT = 0x004,
    EF_NOINTERP = 0x008,
    EF_NOSHADOW = 0x010,
    EF_NODRAW = 0x020,
    EF_NORECEIVESHADOW = 0x040,
    EF_BONEMERGE_FASTCULL = 0x080,
    EF_ITEM_BLINK = 0x100,
    EF_PARENT_ANIMATES = 0x200,
    EF_MAX_BITS = 10
};

enum AnimationLayer_t
{
    ANIMATION_LAYER_AIMMATRIX = 0,
    ANIMATION_LAYER_WEAPON_ACTION,
    ANIMATION_LAYER_WEAPON_ACTION_RECROUCH,
    ANIMATION_LAYER_ADJUST,
    ANIMATION_LAYER_MOVEMENT_JUMP_OR_FALL,
    ANIMATION_LAYER_MOVEMENT_LAND_OR_CLIMB,
    ANIMATION_LAYER_MOVEMENT_MOVE,
    ANIMATION_LAYER_MOVEMENT_STRAFECHANGE,
    ANIMATION_LAYER_WHOLE_BODY,
    ANIMATION_LAYER_FLASHED,
    ANIMATION_LAYER_FLINCH,
    ANIMATION_LAYER_ALIVELOOP,
    ANIMATION_LAYER_LEAN,
    ANIMATION_LAYER_COUNT
};

struct matrixes
{
    matrix3x4_t main[MAXSTUDIOBONES];
    matrix3x4_t zero[MAXSTUDIOBONES];
    matrix3x4_t first[MAXSTUDIOBONES];
    matrix3x4_t second[MAXSTUDIOBONES];
};

class adjust_data;

class C_LagRecord
{
public:
    float_t m_SimulationTime = 0.0f;
    float_t m_LowerBodyYaw = 0.0f;
    float_t m_DuckAmount = 0.0f;
    float_t m_BruteYaw = 0.0f;

    int32_t m_UpdateDelay = 0;
    int32_t m_RotationMode = ROTATE_SERVER;
    int32_t m_Flags = 0;
    int32_t m_AdjustTick = 0;

    Vector m_EyeAngles = Vector(0, 0, 0);
    Vector m_AbsAngles = Vector(0, 0, 0);
    Vector m_Velocity = Vector(0, 0, 0);
    Vector m_Origin = Vector(0, 0, 0);
    Vector m_AbsOrigin = Vector(0, 0, 0);
    Vector m_Mins = Vector(0, 0, 0);
    Vector m_Maxs = Vector(0, 0, 0);

    std::array < std::array < AnimationLayer, ANIMATION_LAYER_COUNT >, 6 > m_AnimationLayers = { };
    std::array < std::array < matrix3x4_t, MAXSTUDIOBONES >, 4 > m_Matricies = { };

    std::array < float_t, MAXSTUDIOPOSEPARAM > m_PoseParameters = { };

    bool m_bIsShooting = false;
    bool m_bAnimResolved = false;
    bool m_bJumped = false;
};

typedef struct C_PlayerInfo
{
    int64_t iSomething;
    union
    {
        int64_t       m_iSteamID64;          //0x0008 - SteamID64
        struct
        {
            int32_t     m_iXuidLow;
            int32_t     m_iXuidHigh;
        };
    };
    char            m_strName[128];
    int             m_iUserId;
    char            m_strSteamID[20];
    char            pad_0x00A8[0x10];
    unsigned long   m_iSteamID;
    char            m_strFriendsName[128];
    bool            m_bIsFakePlayer;
    bool            m_bIsHLTV;
    unsigned int    m_aCustomFiles[4];
    unsigned char   m_bFilesDownloaded;
};

class resolver
{
    player_t* player = nullptr;
    adjust_data* player_record = nullptr;

    bool side = false;
    bool fake = false;
    bool was_first_bruteforce = false;
    bool was_second_bruteforce = false;

    std::array < std::array < Vector, MAXSTUDIOBONES >, 65 > m_BoneOrigins;
    std::array < std::array < matrix3x4_t, MAXSTUDIOBONES >, 65 > m_CachedMatrix = { };
    std::array < C_LagRecord, 65 > m_PreviousRecord = { };
    std::array < bool, 65 > m_LeftDormancy = { };
    std::array < std::deque < C_LagRecord >, 65 > m_CachedPlayerRecords;

    float lock_side = 0.0f;
    float original_goal_feet_yaw = 0.0f;
    float original_pitch = 0.0f;
public:
    void initialize(player_t* e, adjust_data* record, const float& goal_feet_yaw, const float& pitch);
    void reset();
    void resolve_yaw();
    void UpdatePlayerAnimations(player_t* pPlayer, C_LagRecord& LagRecord, C_LagRecord PreviousRecord, bool bHasPreviousRecord, int32_t iRotationMode);
    bool GetCachedMatrix(player_t* pPlayer, matrix3x4_t* aMatrix);
    void OnUpdateClientSideAnimation(player_t* pPlayer);
    float resolve_pitch();
    void animations(player_t* pPlayer, matrix3x4_t* aMatrix, bool bSafeMatrix);
    virtual C_LagRecord GetPreviousRecord(int32_t iPlayerID) { return m_PreviousRecord[iPlayerID]; };
    virtual bool HasLeftOutOfDormancy(int32_t iPlayerID) { return m_LeftDormancy[iPlayerID]; };
    virtual void UnmarkAsDormant(int32_t iPlayerID) { m_LeftDormancy[iPlayerID] = false; };

    AnimationLayer previous_layers[13];

    resolver_side last_side = RESOLVER_ORIGINAL;
};

class adjust_data
{
public:
    player_t* player;
    int i;

    AnimationLayer previous_layers[13];
    AnimationLayer layers[13];
    matrixes matrixes_data;

    resolver_type type;
    resolver_side side;

    bool invalid;
    bool immune;
    bool dormant;
    bool bot;

    int flags;
    int bone_count;

    float simulation_time;
    float duck_amount;
    float lby;

    Vector angles;
    Vector abs_angles;
    Vector velocity;
    Vector origin;
    Vector mins;
    Vector maxs;

    matrix3x4_t leftmatrixes[128] = {};
    matrix3x4_t rightmatrixes[128] = {};

    std::array<float, 24> left_poses = {};
    std::array<float, 24> right_poses = {};

    adjust_data()
    {
        reset();
    }

    void reset()
    {
        player = nullptr;
        i = -1;

        type = ORIGINAL;
        side = RESOLVER_ORIGINAL;

        invalid = false;
        immune = false;
        dormant = false;
        bot = false;

        flags = 0;
        bone_count = 0;

        simulation_time = 0.0f;
        duck_amount = 0.0f;
        lby = 0.0f;

        angles.Zero();
        abs_angles.Zero();
        velocity.Zero();
        origin.Zero();
        mins.Zero();
        maxs.Zero();
    }

    adjust_data(player_t* e, bool store = true)
    {
        type = ORIGINAL;
        side = RESOLVER_ORIGINAL;

        invalid = false;
        store_data(e, store);
    }

    void store_data(player_t* e, bool store = true)
    {
        if (!e->is_alive())
            return;

        player = e;
        i = player->EntIndex();

        if (store)
        {
            memcpy(layers, e->get_animlayers(), e->animlayer_count() * sizeof(AnimationLayer));
            memcpy(matrixes_data.main, player->m_CachedBoneData().Base(), player->m_CachedBoneData().Count() * sizeof(matrix3x4_t));
        }

        immune = player->m_bGunGameImmunity() || player->m_fFlags() & FL_FROZEN;
        dormant = player->IsDormant();

        bot = false;

        flags = player->m_fFlags();
        bone_count = player->m_CachedBoneData().Count();

        simulation_time = player->m_flSimulationTime();
        duck_amount = player->m_flDuckAmount();
        lby = player->m_flLowerBodyYawTarget();

        angles = player->m_angEyeAngles();
        abs_angles = player->GetAbsAngles();
        velocity = player->m_vecVelocity();
        origin = player->m_vecOrigin();
        mins = player->GetCollideable()->OBBMins();
        maxs = player->GetCollideable()->OBBMaxs();
    }

    void adjust_player()
    {
        if (!valid(false))
            return;

        memcpy(player->get_animlayers(), layers, player->animlayer_count() * sizeof(AnimationLayer));
        memcpy(player->m_CachedBoneData().Base(), matrixes_data.main, player->m_CachedBoneData().Count() * sizeof(matrix3x4_t));

        player->m_fFlags() = flags;
        player->m_CachedBoneData().m_Size = bone_count;

        player->m_flSimulationTime() = simulation_time;
        player->m_flDuckAmount() = duck_amount;
        player->m_flLowerBodyYawTarget() = lby;

        player->m_angEyeAngles() = angles;
        player->set_abs_angles(abs_angles);
        player->m_vecVelocity() = velocity;
        player->m_vecOrigin() = origin;
        player->set_abs_origin(origin);
        player->GetCollideable()->OBBMins() = mins;
        player->GetCollideable()->OBBMaxs() = maxs;
    }

    bool valid(bool extra_checks = true)
    {
        if (!this)
            return false;

        if (i > 0)
            player = (player_t*)m_entitylist()->GetClientEntity(i);

        if (!player)
            return false;

        if (player->m_lifeState() != LIFE_ALIVE)
            return false;

        if (immune)
            return false;

        if (dormant)
            return false;

        if (!extra_checks)
            return true;

        if (invalid)
            return false;

        auto net_channel_info = m_engine()->GetNetChannelInfo();

        if (!net_channel_info)
            return false;

        static auto sv_maxunlag = m_cvar()->FindVar(crypt_str("sv_maxunlag"));

        auto outgoing = net_channel_info->GetLatency(FLOW_OUTGOING);
        auto incoming = net_channel_info->GetLatency(FLOW_INCOMING);

        auto correct = math::clamp(outgoing + incoming + util::get_interpolation(), 0.0f, sv_maxunlag->GetFloat());

        auto curtime = g_ctx.local()->is_alive() ? TICKS_TO_TIME(g_ctx.globals.fixed_tickbase) : m_globals()->m_curtime;
        auto delta_time = correct - (curtime - simulation_time);

        if (fabs(delta_time) > 0.2f)
            return false;

        auto extra_choke = 0;

        if (g_ctx.globals.fakeducking)
            extra_choke = 14 - m_clientstate()->iChokedCommands;

        auto server_tickcount = extra_choke + m_globals()->m_tickcount + TIME_TO_TICKS(outgoing + incoming);
        auto dead_time = (int)(TICKS_TO_TIME(server_tickcount) - sv_maxunlag->GetFloat());

        if (simulation_time < (float)dead_time)
            return false;

        return true;
    }
};

class optimized_adjust_data
{
public:
    int i;
    player_t* player;

    float simulation_time;
    float duck_amount;

    Vector angles;
    Vector origin;

    optimized_adjust_data()
    {
        reset();
    }

    void reset()
    {
        i = 0;
        player = nullptr;

        simulation_time = 0.0f;
        duck_amount = 0.0f;

        angles.Zero();
        origin.Zero();
    }
};

class lagdata
{
    c_baseplayeranimationstate* animstate;
public:
    float side;
    float realtime = animstate->m_flLastClientSideAnimationUpdateTime;
    float resolving_way;
};

extern std::deque <adjust_data> player_records[65];

class lagcompensation : public singleton <lagcompensation>
{
public:
    void fsn(ClientFrameStage_t stage);
    void extrapolation(player_t* player, Vector& origin, Vector& velocity, int& flags, bool on_ground);
    void upd_nw(player_t* m_pPlayer);
    void extrapolate(player_t* player, Vector& origin, Vector& velocity, int& flags, bool wasonground);
    bool valid(int i, player_t* e);
    void update_player_animations(player_t* e);

    resolver player_resolver[65];

    bool is_dormant[65];
    float previous_goal_feet_yaw[65];
};

 
Последнее редактирование:
Задумка с ресольвером неплохая, но код грязный до невозможности. Глаза режет при прочтении, почистил бы перед опубликованием поста что-ли.
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Вобщем да

Код:
Expand Collapse Copy
#pragma once

#include "..\..\includes.hpp"
#include "..\..\sdk\structs.hpp"

enum
{
    MAIN,
    NONE,
    FIRST,
    SECOND
};

enum resolver_type
{
    ORIGINAL,
    BRUTEFORCE,
    LBY,
    TRACE,
    DIRECTIONAL
};

enum ADVANCED_ACTIVITY : int
{
    ACTIVITY_NONE = 0,
    ACTIVITY_JUMP,
    ACTIVITY_LAND
};

enum resolver_side
{
    RESOLVER_ORIGINAL,
    RESOLVER_ZERO,
    RESOLVER_FIRST,
    RESOLVER_SECOND,
    RESOLVER_LOW_FIRST,
    RESOLVER_LOW_SECOND
};

enum ROTATE_MODE
{
    ROTATE_SERVER,
    ROTATE_LEFT,
    ROTATE_CENTER,
    ROTATE_RIGHT,
    ROTATE_LOW_LEFT,
    ROTATE_LOW_RIGHT
};

enum Effects_t : int
{
    EF_BONEMERGE = 0x001,
    EF_BRIGHTLIGHT = 0x002,
    EF_DIMLIGHT = 0x004,
    EF_NOINTERP = 0x008,
    EF_NOSHADOW = 0x010,
    EF_NODRAW = 0x020,
    EF_NORECEIVESHADOW = 0x040,
    EF_BONEMERGE_FASTCULL = 0x080,
    EF_ITEM_BLINK = 0x100,
    EF_PARENT_ANIMATES = 0x200,
    EF_MAX_BITS = 10
};

enum AnimationLayer_t
{
    ANIMATION_LAYER_AIMMATRIX = 0,
    ANIMATION_LAYER_WEAPON_ACTION,
    ANIMATION_LAYER_WEAPON_ACTION_RECROUCH,
    ANIMATION_LAYER_ADJUST,
    ANIMATION_LAYER_MOVEMENT_JUMP_OR_FALL,
    ANIMATION_LAYER_MOVEMENT_LAND_OR_CLIMB,
    ANIMATION_LAYER_MOVEMENT_MOVE,
    ANIMATION_LAYER_MOVEMENT_STRAFECHANGE,
    ANIMATION_LAYER_WHOLE_BODY,
    ANIMATION_LAYER_FLASHED,
    ANIMATION_LAYER_FLINCH,
    ANIMATION_LAYER_ALIVELOOP,
    ANIMATION_LAYER_LEAN,
    ANIMATION_LAYER_COUNT
};

struct matrixes
{
    matrix3x4_t main[MAXSTUDIOBONES];
    matrix3x4_t zero[MAXSTUDIOBONES];
    matrix3x4_t first[MAXSTUDIOBONES];
    matrix3x4_t second[MAXSTUDIOBONES];
};

class adjust_data;

class C_LagRecord
{
public:
    float_t m_SimulationTime = 0.0f;
    float_t m_LowerBodyYaw = 0.0f;
    float_t m_DuckAmount = 0.0f;
    float_t m_BruteYaw = 0.0f;

    int32_t m_UpdateDelay = 0;
    int32_t m_RotationMode = ROTATE_SERVER;
    int32_t m_Flags = 0;
    int32_t m_AdjustTick = 0;

    Vector m_EyeAngles = Vector(0, 0, 0);
    Vector m_AbsAngles = Vector(0, 0, 0);
    Vector m_Velocity = Vector(0, 0, 0);
    Vector m_Origin = Vector(0, 0, 0);
    Vector m_AbsOrigin = Vector(0, 0, 0);
    Vector m_Mins = Vector(0, 0, 0);
    Vector m_Maxs = Vector(0, 0, 0);

    std::array < std::array < AnimationLayer, ANIMATION_LAYER_COUNT >, 6 > m_AnimationLayers = { };
    std::array < std::array < matrix3x4_t, MAXSTUDIOBONES >, 4 > m_Matricies = { };

    std::array < float_t, MAXSTUDIOPOSEPARAM > m_PoseParameters = { };

    bool m_bIsShooting = false;
    bool m_bAnimResolved = false;
    bool m_bJumped = false;
};

typedef struct C_PlayerInfo
{
    int64_t iSomething;
    union
    {
        int64_t       m_iSteamID64;          //0x0008 - SteamID64
        struct
        {
            int32_t     m_iXuidLow;
            int32_t     m_iXuidHigh;
        };
    };
    char            m_strName[128];
    int             m_iUserId;
    char            m_strSteamID[20];
    char            pad_0x00A8[0x10];
    unsigned long   m_iSteamID;
    char            m_strFriendsName[128];
    bool            m_bIsFakePlayer;
    bool            m_bIsHLTV;
    unsigned int    m_aCustomFiles[4];
    unsigned char   m_bFilesDownloaded;
};

class resolver
{
    player_t* player = nullptr;
    adjust_data* player_record = nullptr;

    bool side = false;
    bool fake = false;
    bool was_first_bruteforce = false;
    bool was_second_bruteforce = false;

    std::array < std::array < Vector, MAXSTUDIOBONES >, 65 > m_BoneOrigins;
    std::array < std::array < matrix3x4_t, MAXSTUDIOBONES >, 65 > m_CachedMatrix = { };
    std::array < C_LagRecord, 65 > m_PreviousRecord = { };
    std::array < bool, 65 > m_LeftDormancy = { };
    std::array < std::deque < C_LagRecord >, 65 > m_CachedPlayerRecords;

    float lock_side = 0.0f;
    float original_goal_feet_yaw = 0.0f;
    float original_pitch = 0.0f;
public:
    void initialize(player_t* e, adjust_data* record, const float& goal_feet_yaw, const float& pitch);
    void reset();
    void resolve_yaw();
    void UpdatePlayerAnimations(player_t* pPlayer, C_LagRecord& LagRecord, C_LagRecord PreviousRecord, bool bHasPreviousRecord, int32_t iRotationMode);
    bool GetCachedMatrix(player_t* pPlayer, matrix3x4_t* aMatrix);
    void OnUpdateClientSideAnimation(player_t* pPlayer);
    float resolve_pitch();
    void animations(player_t* pPlayer, matrix3x4_t* aMatrix, bool bSafeMatrix);
    virtual C_LagRecord GetPreviousRecord(int32_t iPlayerID) { return m_PreviousRecord[iPlayerID]; };
    virtual bool HasLeftOutOfDormancy(int32_t iPlayerID) { return m_LeftDormancy[iPlayerID]; };
    virtual void UnmarkAsDormant(int32_t iPlayerID) { m_LeftDormancy[iPlayerID] = false; };

    AnimationLayer previous_layers[13];

    resolver_side last_side = RESOLVER_ORIGINAL;
};

class adjust_data
{
public:
    player_t* player;
    int i;

    AnimationLayer previous_layers[13];
    AnimationLayer layers[13];
    matrixes matrixes_data;

    resolver_type type;
    resolver_side side;

    bool invalid;
    bool immune;
    bool dormant;
    bool bot;

    int flags;
    int bone_count;

    float simulation_time;
    float duck_amount;
    float lby;

    Vector angles;
    Vector abs_angles;
    Vector velocity;
    Vector origin;
    Vector mins;
    Vector maxs;

    matrix3x4_t leftmatrixes[128] = {};
    matrix3x4_t rightmatrixes[128] = {};

    std::array<float, 24> left_poses = {};
    std::array<float, 24> right_poses = {};

    adjust_data()
    {
        reset();
    }

    void reset()
    {
        player = nullptr;
        i = -1;

        type = ORIGINAL;
        side = RESOLVER_ORIGINAL;

        invalid = false;
        immune = false;
        dormant = false;
        bot = false;

        flags = 0;
        bone_count = 0;

        simulation_time = 0.0f;
        duck_amount = 0.0f;
        lby = 0.0f;

        angles.Zero();
        abs_angles.Zero();
        velocity.Zero();
        origin.Zero();
        mins.Zero();
        maxs.Zero();
    }

    adjust_data(player_t* e, bool store = true)
    {
        type = ORIGINAL;
        side = RESOLVER_ORIGINAL;

        invalid = false;
        store_data(e, store);
    }

    void store_data(player_t* e, bool store = true)
    {
        if (!e->is_alive())
            return;

        player = e;
        i = player->EntIndex();

        if (store)
        {
            memcpy(layers, e->get_animlayers(), e->animlayer_count() * sizeof(AnimationLayer));
            memcpy(matrixes_data.main, player->m_CachedBoneData().Base(), player->m_CachedBoneData().Count() * sizeof(matrix3x4_t));
        }

        immune = player->m_bGunGameImmunity() || player->m_fFlags() & FL_FROZEN;
        dormant = player->IsDormant();

        bot = false;

        flags = player->m_fFlags();
        bone_count = player->m_CachedBoneData().Count();

        simulation_time = player->m_flSimulationTime();
        duck_amount = player->m_flDuckAmount();
        lby = player->m_flLowerBodyYawTarget();

        angles = player->m_angEyeAngles();
        abs_angles = player->GetAbsAngles();
        velocity = player->m_vecVelocity();
        origin = player->m_vecOrigin();
        mins = player->GetCollideable()->OBBMins();
        maxs = player->GetCollideable()->OBBMaxs();
    }

    void adjust_player()
    {
        if (!valid(false))
            return;

        memcpy(player->get_animlayers(), layers, player->animlayer_count() * sizeof(AnimationLayer));
        memcpy(player->m_CachedBoneData().Base(), matrixes_data.main, player->m_CachedBoneData().Count() * sizeof(matrix3x4_t));

        player->m_fFlags() = flags;
        player->m_CachedBoneData().m_Size = bone_count;

        player->m_flSimulationTime() = simulation_time;
        player->m_flDuckAmount() = duck_amount;
        player->m_flLowerBodyYawTarget() = lby;

        player->m_angEyeAngles() = angles;
        player->set_abs_angles(abs_angles);
        player->m_vecVelocity() = velocity;
        player->m_vecOrigin() = origin;
        player->set_abs_origin(origin);
        player->GetCollideable()->OBBMins() = mins;
        player->GetCollideable()->OBBMaxs() = maxs;
    }

    bool valid(bool extra_checks = true)
    {
        if (!this)
            return false;

        if (i > 0)
            player = (player_t*)m_entitylist()->GetClientEntity(i);

        if (!player)
            return false;

        if (player->m_lifeState() != LIFE_ALIVE)
            return false;

        if (immune)
            return false;

        if (dormant)
            return false;

        if (!extra_checks)
            return true;

        if (invalid)
            return false;

        auto net_channel_info = m_engine()->GetNetChannelInfo();

        if (!net_channel_info)
            return false;

        static auto sv_maxunlag = m_cvar()->FindVar(crypt_str("sv_maxunlag"));

        auto outgoing = net_channel_info->GetLatency(FLOW_OUTGOING);
        auto incoming = net_channel_info->GetLatency(FLOW_INCOMING);

        auto correct = math::clamp(outgoing + incoming + util::get_interpolation(), 0.0f, sv_maxunlag->GetFloat());

        auto curtime = g_ctx.local()->is_alive() ? TICKS_TO_TIME(g_ctx.globals.fixed_tickbase) : m_globals()->m_curtime;
        auto delta_time = correct - (curtime - simulation_time);

        if (fabs(delta_time) > 0.2f)
            return false;

        auto extra_choke = 0;

        if (g_ctx.globals.fakeducking)
            extra_choke = 14 - m_clientstate()->iChokedCommands;

        auto server_tickcount = extra_choke + m_globals()->m_tickcount + TIME_TO_TICKS(outgoing + incoming);
        auto dead_time = (int)(TICKS_TO_TIME(server_tickcount) - sv_maxunlag->GetFloat());

        if (simulation_time < (float)dead_time)
            return false;

        return true;
    }
};

class optimized_adjust_data
{
public:
    int i;
    player_t* player;

    float simulation_time;
    float duck_amount;

    Vector angles;
    Vector origin;

    optimized_adjust_data()
    {
        reset();
    }

    void reset()
    {
        i = 0;
        player = nullptr;

        simulation_time = 0.0f;
        duck_amount = 0.0f;

        angles.Zero();
        origin.Zero();
    }
};

class lagdata
{
    c_baseplayeranimationstate* animstate;
public:
    float side;
    float realtime = animstate->m_flLastClientSideAnimationUpdateTime;
    float resolving_way;
};

extern std::deque <adjust_data> player_records[65];

class lagcompensation : public singleton <lagcompensation>
{
public:
    void fsn(ClientFrameStage_t stage);
    void extrapolation(player_t* player, Vector& origin, Vector& velocity, int& flags, bool on_ground);
    void upd_nw(player_t* m_pPlayer);
    void extrapolate(player_t* player, Vector& origin, Vector& velocity, int& flags, bool wasonground);
    bool valid(int i, player_t* e);
    void update_player_animations(player_t* e);

    resolver player_resolver[65];

    bool is_dormant[65];
    float previous_goal_feet_yaw[65];
};

Скрытое содержимое
отредактировать и допилить самую малость и будет годно для чита за 150 р месяц
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Теперь я снова сижу и думаю кто же на этот раз помог арлисту это сделать
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
1640100588798.png

1640100606920.png

Хватит пастить бездумно из пасты
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Задумка с ресольвером неплохая, но код грязный до невозможности. Глаза режет при прочтении, почистил бы перед опубликованием поста что-ли.
Тупо привязал и всё.
а в чём рофл? Я написал что я тупо привязала под (лв)
Не я бл делал резик не меня тут надо критековать так то
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
ошибок не много, надо чуть-чуть дописать пару букв и всё будет работать
 

Вложения

  • Сн535имок.PNG
    Сн535имок.PNG
    123.3 KB · Просмотры: 192
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Вобщем да

Код:
Expand Collapse Copy
#pragma once

#include "..\..\includes.hpp"
#include "..\..\sdk\structs.hpp"

enum
{
    MAIN,
    NONE,
    FIRST,
    SECOND
};

enum resolver_type
{
    ORIGINAL,
    BRUTEFORCE,
    LBY,
    TRACE,
    DIRECTIONAL
};

enum ADVANCED_ACTIVITY : int
{
    ACTIVITY_NONE = 0,
    ACTIVITY_JUMP,
    ACTIVITY_LAND
};

enum resolver_side
{
    RESOLVER_ORIGINAL,
    RESOLVER_ZERO,
    RESOLVER_FIRST,
    RESOLVER_SECOND,
    RESOLVER_LOW_FIRST,
    RESOLVER_LOW_SECOND
};

enum ROTATE_MODE
{
    ROTATE_SERVER,
    ROTATE_LEFT,
    ROTATE_CENTER,
    ROTATE_RIGHT,
    ROTATE_LOW_LEFT,
    ROTATE_LOW_RIGHT
};

enum Effects_t : int
{
    EF_BONEMERGE = 0x001,
    EF_BRIGHTLIGHT = 0x002,
    EF_DIMLIGHT = 0x004,
    EF_NOINTERP = 0x008,
    EF_NOSHADOW = 0x010,
    EF_NODRAW = 0x020,
    EF_NORECEIVESHADOW = 0x040,
    EF_BONEMERGE_FASTCULL = 0x080,
    EF_ITEM_BLINK = 0x100,
    EF_PARENT_ANIMATES = 0x200,
    EF_MAX_BITS = 10
};

enum AnimationLayer_t
{
    ANIMATION_LAYER_AIMMATRIX = 0,
    ANIMATION_LAYER_WEAPON_ACTION,
    ANIMATION_LAYER_WEAPON_ACTION_RECROUCH,
    ANIMATION_LAYER_ADJUST,
    ANIMATION_LAYER_MOVEMENT_JUMP_OR_FALL,
    ANIMATION_LAYER_MOVEMENT_LAND_OR_CLIMB,
    ANIMATION_LAYER_MOVEMENT_MOVE,
    ANIMATION_LAYER_MOVEMENT_STRAFECHANGE,
    ANIMATION_LAYER_WHOLE_BODY,
    ANIMATION_LAYER_FLASHED,
    ANIMATION_LAYER_FLINCH,
    ANIMATION_LAYER_ALIVELOOP,
    ANIMATION_LAYER_LEAN,
    ANIMATION_LAYER_COUNT
};

struct matrixes
{
    matrix3x4_t main[MAXSTUDIOBONES];
    matrix3x4_t zero[MAXSTUDIOBONES];
    matrix3x4_t first[MAXSTUDIOBONES];
    matrix3x4_t second[MAXSTUDIOBONES];
};

class adjust_data;

class C_LagRecord
{
public:
    float_t m_SimulationTime = 0.0f;
    float_t m_LowerBodyYaw = 0.0f;
    float_t m_DuckAmount = 0.0f;
    float_t m_BruteYaw = 0.0f;

    int32_t m_UpdateDelay = 0;
    int32_t m_RotationMode = ROTATE_SERVER;
    int32_t m_Flags = 0;
    int32_t m_AdjustTick = 0;

    Vector m_EyeAngles = Vector(0, 0, 0);
    Vector m_AbsAngles = Vector(0, 0, 0);
    Vector m_Velocity = Vector(0, 0, 0);
    Vector m_Origin = Vector(0, 0, 0);
    Vector m_AbsOrigin = Vector(0, 0, 0);
    Vector m_Mins = Vector(0, 0, 0);
    Vector m_Maxs = Vector(0, 0, 0);

    std::array < std::array < AnimationLayer, ANIMATION_LAYER_COUNT >, 6 > m_AnimationLayers = { };
    std::array < std::array < matrix3x4_t, MAXSTUDIOBONES >, 4 > m_Matricies = { };

    std::array < float_t, MAXSTUDIOPOSEPARAM > m_PoseParameters = { };

    bool m_bIsShooting = false;
    bool m_bAnimResolved = false;
    bool m_bJumped = false;
};

typedef struct C_PlayerInfo
{
    int64_t iSomething;
    union
    {
        int64_t       m_iSteamID64;          //0x0008 - SteamID64
        struct
        {
            int32_t     m_iXuidLow;
            int32_t     m_iXuidHigh;
        };
    };
    char            m_strName[128];
    int             m_iUserId;
    char            m_strSteamID[20];
    char            pad_0x00A8[0x10];
    unsigned long   m_iSteamID;
    char            m_strFriendsName[128];
    bool            m_bIsFakePlayer;
    bool            m_bIsHLTV;
    unsigned int    m_aCustomFiles[4];
    unsigned char   m_bFilesDownloaded;
};

class resolver
{
    player_t* player = nullptr;
    adjust_data* player_record = nullptr;

    bool side = false;
    bool fake = false;
    bool was_first_bruteforce = false;
    bool was_second_bruteforce = false;

    std::array < std::array < Vector, MAXSTUDIOBONES >, 65 > m_BoneOrigins;
    std::array < std::array < matrix3x4_t, MAXSTUDIOBONES >, 65 > m_CachedMatrix = { };
    std::array < C_LagRecord, 65 > m_PreviousRecord = { };
    std::array < bool, 65 > m_LeftDormancy = { };
    std::array < std::deque < C_LagRecord >, 65 > m_CachedPlayerRecords;

    float lock_side = 0.0f;
    float original_goal_feet_yaw = 0.0f;
    float original_pitch = 0.0f;
public:
    void initialize(player_t* e, adjust_data* record, const float& goal_feet_yaw, const float& pitch);
    void reset();
    void resolve_yaw();
    void UpdatePlayerAnimations(player_t* pPlayer, C_LagRecord& LagRecord, C_LagRecord PreviousRecord, bool bHasPreviousRecord, int32_t iRotationMode);
    bool GetCachedMatrix(player_t* pPlayer, matrix3x4_t* aMatrix);
    void OnUpdateClientSideAnimation(player_t* pPlayer);
    float resolve_pitch();
    void animations(player_t* pPlayer, matrix3x4_t* aMatrix, bool bSafeMatrix);
    virtual C_LagRecord GetPreviousRecord(int32_t iPlayerID) { return m_PreviousRecord[iPlayerID]; };
    virtual bool HasLeftOutOfDormancy(int32_t iPlayerID) { return m_LeftDormancy[iPlayerID]; };
    virtual void UnmarkAsDormant(int32_t iPlayerID) { m_LeftDormancy[iPlayerID] = false; };

    AnimationLayer previous_layers[13];

    resolver_side last_side = RESOLVER_ORIGINAL;
};

class adjust_data
{
public:
    player_t* player;
    int i;

    AnimationLayer previous_layers[13];
    AnimationLayer layers[13];
    matrixes matrixes_data;

    resolver_type type;
    resolver_side side;

    bool invalid;
    bool immune;
    bool dormant;
    bool bot;

    int flags;
    int bone_count;

    float simulation_time;
    float duck_amount;
    float lby;

    Vector angles;
    Vector abs_angles;
    Vector velocity;
    Vector origin;
    Vector mins;
    Vector maxs;

    matrix3x4_t leftmatrixes[128] = {};
    matrix3x4_t rightmatrixes[128] = {};

    std::array<float, 24> left_poses = {};
    std::array<float, 24> right_poses = {};

    adjust_data()
    {
        reset();
    }

    void reset()
    {
        player = nullptr;
        i = -1;

        type = ORIGINAL;
        side = RESOLVER_ORIGINAL;

        invalid = false;
        immune = false;
        dormant = false;
        bot = false;

        flags = 0;
        bone_count = 0;

        simulation_time = 0.0f;
        duck_amount = 0.0f;
        lby = 0.0f;

        angles.Zero();
        abs_angles.Zero();
        velocity.Zero();
        origin.Zero();
        mins.Zero();
        maxs.Zero();
    }

    adjust_data(player_t* e, bool store = true)
    {
        type = ORIGINAL;
        side = RESOLVER_ORIGINAL;

        invalid = false;
        store_data(e, store);
    }

    void store_data(player_t* e, bool store = true)
    {
        if (!e->is_alive())
            return;

        player = e;
        i = player->EntIndex();

        if (store)
        {
            memcpy(layers, e->get_animlayers(), e->animlayer_count() * sizeof(AnimationLayer));
            memcpy(matrixes_data.main, player->m_CachedBoneData().Base(), player->m_CachedBoneData().Count() * sizeof(matrix3x4_t));
        }

        immune = player->m_bGunGameImmunity() || player->m_fFlags() & FL_FROZEN;
        dormant = player->IsDormant();

        bot = false;

        flags = player->m_fFlags();
        bone_count = player->m_CachedBoneData().Count();

        simulation_time = player->m_flSimulationTime();
        duck_amount = player->m_flDuckAmount();
        lby = player->m_flLowerBodyYawTarget();

        angles = player->m_angEyeAngles();
        abs_angles = player->GetAbsAngles();
        velocity = player->m_vecVelocity();
        origin = player->m_vecOrigin();
        mins = player->GetCollideable()->OBBMins();
        maxs = player->GetCollideable()->OBBMaxs();
    }

    void adjust_player()
    {
        if (!valid(false))
            return;

        memcpy(player->get_animlayers(), layers, player->animlayer_count() * sizeof(AnimationLayer));
        memcpy(player->m_CachedBoneData().Base(), matrixes_data.main, player->m_CachedBoneData().Count() * sizeof(matrix3x4_t));

        player->m_fFlags() = flags;
        player->m_CachedBoneData().m_Size = bone_count;

        player->m_flSimulationTime() = simulation_time;
        player->m_flDuckAmount() = duck_amount;
        player->m_flLowerBodyYawTarget() = lby;

        player->m_angEyeAngles() = angles;
        player->set_abs_angles(abs_angles);
        player->m_vecVelocity() = velocity;
        player->m_vecOrigin() = origin;
        player->set_abs_origin(origin);
        player->GetCollideable()->OBBMins() = mins;
        player->GetCollideable()->OBBMaxs() = maxs;
    }

    bool valid(bool extra_checks = true)
    {
        if (!this)
            return false;

        if (i > 0)
            player = (player_t*)m_entitylist()->GetClientEntity(i);

        if (!player)
            return false;

        if (player->m_lifeState() != LIFE_ALIVE)
            return false;

        if (immune)
            return false;

        if (dormant)
            return false;

        if (!extra_checks)
            return true;

        if (invalid)
            return false;

        auto net_channel_info = m_engine()->GetNetChannelInfo();

        if (!net_channel_info)
            return false;

        static auto sv_maxunlag = m_cvar()->FindVar(crypt_str("sv_maxunlag"));

        auto outgoing = net_channel_info->GetLatency(FLOW_OUTGOING);
        auto incoming = net_channel_info->GetLatency(FLOW_INCOMING);

        auto correct = math::clamp(outgoing + incoming + util::get_interpolation(), 0.0f, sv_maxunlag->GetFloat());

        auto curtime = g_ctx.local()->is_alive() ? TICKS_TO_TIME(g_ctx.globals.fixed_tickbase) : m_globals()->m_curtime;
        auto delta_time = correct - (curtime - simulation_time);

        if (fabs(delta_time) > 0.2f)
            return false;

        auto extra_choke = 0;

        if (g_ctx.globals.fakeducking)
            extra_choke = 14 - m_clientstate()->iChokedCommands;

        auto server_tickcount = extra_choke + m_globals()->m_tickcount + TIME_TO_TICKS(outgoing + incoming);
        auto dead_time = (int)(TICKS_TO_TIME(server_tickcount) - sv_maxunlag->GetFloat());

        if (simulation_time < (float)dead_time)
            return false;

        return true;
    }
};

class optimized_adjust_data
{
public:
    int i;
    player_t* player;

    float simulation_time;
    float duck_amount;

    Vector angles;
    Vector origin;

    optimized_adjust_data()
    {
        reset();
    }

    void reset()
    {
        i = 0;
        player = nullptr;

        simulation_time = 0.0f;
        duck_amount = 0.0f;

        angles.Zero();
        origin.Zero();
    }
};

class lagdata
{
    c_baseplayeranimationstate* animstate;
public:
    float side;
    float realtime = animstate->m_flLastClientSideAnimationUpdateTime;
    float resolving_way;
};

extern std::deque <adjust_data> player_records[65];

class lagcompensation : public singleton <lagcompensation>
{
public:
    void fsn(ClientFrameStage_t stage);
    void extrapolation(player_t* player, Vector& origin, Vector& velocity, int& flags, bool on_ground);
    void upd_nw(player_t* m_pPlayer);
    void extrapolate(player_t* player, Vector& origin, Vector& velocity, int& flags, bool wasonground);
    bool valid(int i, player_t* e);
    void update_player_animations(player_t* e);

    resolver player_resolver[65];

    bool is_dormant[65];
    float previous_goal_feet_yaw[65];
};

Hidden content
definitions for..
m_ResolverData
m_flStrafeChangeCycle
m_flStrafeChangeWeight
m_nStrafeSequence
m_flPrimaryCycle
m_flMoveWeight
m_flAccelerationWeight
m_flMaxSpeed

MAXSTUDIOPOSEPARAM

??
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
щас все выложу что нехватает...
так пусть сами добавляют, там ничего сложного нету.
Пусть не бездумно пастят, а хотя бы добавляет из зерона чего не хватает в свой лв.
 
Назад
Сверху Снизу