Гайд Fix ebuchego legendware 22.09.2021

Пользователь
Статус
Оффлайн
Регистрация
14 Янв 2018
Сообщения
387
Реакции[?]
91
Поинты[?]
0
дарова нахуй, фикс лв под апдейт наступил, радуйтесь детишки, которые не могут пофиксить свой лв под обнову
пж не ругайте за тему, я тоже не рад новым пастам на лв
Код:
class weapon_info_t
{
public:
    char pad_0000[4]; //0x0000
    char* ConsoleName; //0x0004
    char pad_0008[12]; //0x0008
    int iMaxClip1; //0x0014
    char pad_0018[12]; //0x0018
    int iMaxClip2; //0x0024
    char pad_0028[4]; //0x0028
    char* szWorldModel; //0x002C
    char* szViewModel; //0x0030
    char* szDropedModel; //0x0034
    char pad_0038[4]; //0x0038
    char* N00000984; //0x003C
    char pad_0040[56]; //0x0040
    char* szEmptySound; //0x0078
    char pad_007C[4]; //0x007C
    char* szBulletType; //0x0080
    char pad_0084[4]; //0x0084
    char* szHudName; //0x0088
    char* szWeaponName; //0x008C
    char pad_0090[60]; //0x0090
    int WeaponType; //0x00CC
    int iWeaponPrice; //0x00D0
    int iKillAward; //0x00D4
    char* szAnimationPrefex; //0x00D8
    float flCycleTime; //0x00DC
    float flCycleTimeAlt; //0x00E0
    float flTimeToIdle; //0x00E4
    float flIdleInterval; //0x00E8
    bool bFullAuto; //0x00EC
    char pad_00ED[3]; //0x00ED
    int iDamage; //0x00F0
    float flArmorRatio; //0x00F4
    int iBullets; //0x00F8
    char updatefix[4]; //05.10.2021
    float flPenetration; //0x00FC
    float flFlinchVelocityModifierLarge; //0x0100
    float flFlinchVelocityModifierSmall; //0x0104
    float flRange; //0x0108
    float flRangeModifier; //0x010C
    char pad_0110[28]; //0x0110
    int iCrosshairMinDistance; //0x012C
    float flMaxPlayerSpeed; //0x0130
    float flMaxPlayerSpeedAlt; //0x0134
    char pad_0138[4]; //0x0138
    float flSpread; //0x013C
    float flSpreadAlt; //0x0140
    float flInaccuracyCrouch; //0x0144
    float flInaccuracyCrouchAlt; //0x0148
    float flInaccuracyStand; //0x014C
    float flInaccuracyStandAlt; //0x0150
    float flInaccuracyJumpIntial; //0x0154
    float flInaccaurcyJumpApex;
    float flInaccuracyJump; //0x0158
    float flInaccuracyJumpAlt; //0x015C
    float flInaccuracyLand; //0x0160
    float flInaccuracyLandAlt; //0x0164
    float flInaccuracyLadder; //0x0168
    float flInaccuracyLadderAlt; //0x016C
    float flInaccuracyFire; //0x0170
    float flInaccuracyFireAlt; //0x0174
    float flInaccuracyMove; //0x0178
    float flInaccuracyMoveAlt; //0x017C
    float flInaccuracyReload; //0x0180
    int iRecoilSeed; //0x0184
    float flRecoilAngle; //0x0188
    float flRecoilAngleAlt; //0x018C
    float flRecoilVariance; //0x0190
    float flRecoilAngleVarianceAlt; //0x0194
    float flRecoilMagnitude; //0x0198
    float flRecoilMagnitudeAlt; //0x019C
    float flRecoilMagnatiudeVeriance; //0x01A0
    float flRecoilMagnatiudeVerianceAlt; //0x01A4
    float flRecoveryTimeCrouch; //0x01A8
    float flRecoveryTimeStand; //0x01AC
    float flRecoveryTimeCrouchFinal; //0x01B0
    float flRecoveryTimeStandFinal; //0x01B4
    int iRecoveryTransititionStartBullet; //0x01B8
    int iRecoveryTransititionEndBullet; //0x01BC
    bool bUnzoomAfterShot; //0x01C0
    char pad_01C1[31]; //0x01C1
    char* szWeaponClass; //0x01E0
    char pad_01E4[56]; //0x01E4
    float flInaccuracyPitchShift; //0x021C
    float flInaccuracySoundThreshold; //0x0220
    float flBotAudibleRange; //0x0224
    char pad_0228[12]; //0x0228
    bool bHasBurstMode; //0x0234
};

CBaseHandle* m_hMyWeapons()
{
    return (CBaseHandle*)((uintptr_t)this + 0x2E08);
}

CBoneCache* m_BoneCache() // (если фикс костей на этом индексе у вас)
{
    return (CBoneCache*)((uintptr_t)this + 0x2914);
}

float& m_flSpawnTime()
{
    return *(float*)((uintptr_t)this + 0x103C0);
}
Код:
CUtlVector <matrix3x4_t>& player_t::m_CachedBoneData()
{
    return *(CUtlVector <matrix3x4_t>*)(uintptr_t(this) + 0x2914);
}

int player_t::animlayer_count()
{
    if (!this) //-V704
        return 0;

    //return *(int*)((DWORD)this + 0x298C);
    return 13;
}

AnimationLayer* player_t::get_animlayers()
{
    return *(AnimationLayer**)((DWORD)this + 0x2990);
}

c_baseplayeranimationstate* player_t::get_animation_state()
{
    return *reinterpret_cast<c_baseplayeranimationstate**>(reinterpret_cast<void*>(uintptr_t(this) + 0x9960));
}

CStudioHdr* player_t::m_pStudioHdr()
{
    return *(CStudioHdr**)((uintptr_t)this + *(uintptr_t*)0x2950);
}

чтобы не крашило при появлении противника, вам нужен другой setup_bones_fixed (ибо валвя добавили какую-то хуйню, для которой нужен доп. код для использования BONE_USED_BY_ANYTHING и BONE_USED_BY_HITBOX)
прикреплю стандартный setup_bones_fixed с которым не крашит

bool player_t::setup_bones_fixed(matrix3x4_t* matrix, int mask)
{
    if (!this) //-V704
        return false;

    auto setuped = false;

    auto backup_value = *(uint8_t*)((uintptr_t)this + 0x274);
    *(uint8_t*)((uintptr_t)this + 0x274) = 0;

    auto backup_effects = m_fEffects();
    m_fEffects() |= 8;

    auto animstate = get_animation_state();
    auto previous_weapon = animstate ? animstate->m_pLastBoneSetupWeapon : nullptr;

    if (previous_weapon)
        animstate->m_pLastBoneSetupWeapon = animstate->m_pActiveWeapon;

    auto backup_abs_origin = GetAbsOrigin();

    if (this != g_ctx.local())
        set_abs_origin(m_vecOrigin());

    g_ctx.globals.setuping_bones = true;
    invalidate_bone_cache();

    SetupBones(matrix, matrix ? MAXSTUDIOBONES : -1, mask, m_flSimulationTime());


    g_ctx.globals.setuping_bones = false;

    if (this != g_ctx.local())
        set_abs_origin(backup_abs_origin);

    if (previous_weapon)
        animstate->m_pLastBoneSetupWeapon = previous_weapon;

    m_fEffects() = backup_effects;
    *(uint8_t*)((uintptr_t)this + 0x274) = backup_value;

    return setuped;
}
Код:
g_ctx.indexes =
{
    5,
    33,
    339 + 1,
    218,
    219,
    34,
    157 + 1,
    75,
    460 + 1,
    482 + 1,
    452 + 1,
    483 + 1,
    284,
    223 + 1,
    246,
    27,
    17,
    123
};
p.s. делал через + 1, ибо мне нужно было найти функции, которые не ссылаются на эти индексы (если у вас в engineprediction есть индекс 339, то замените на 340)
ура, теперь дети могут пофиксить свой мега-чит на лв и продавать за 50 руб + анальная девственность в подарок:FeelsBadMan:
PasterAlmir обиженка?
 
Последнее редактирование:
priora compressor
Участник
Статус
Оффлайн
Регистрация
18 Май 2019
Сообщения
675
Реакции[?]
243
Поинты[?]
16K
дарова нахуй, фикс лв под апдейт наступил, радуйтесь детишки, которые не могут пофиксить свой лв под обнову
пж не ругайте за тему, я тоже не рад новым пастам на лв
Код:
class weapon_info_t
{
public:
    char pad_0000[4]; //0x0000
    char* ConsoleName; //0x0004
    char pad_0008[12]; //0x0008
    int iMaxClip1; //0x0014
    char pad_0018[12]; //0x0018
    int iMaxClip2; //0x0024
    char pad_0028[4]; //0x0028
    char* szWorldModel; //0x002C
    char* szViewModel; //0x0030
    char* szDropedModel; //0x0034
    char pad_0038[4]; //0x0038
    char* N00000984; //0x003C
    char pad_0040[56]; //0x0040
    char* szEmptySound; //0x0078
    char pad_007C[4]; //0x007C
    char* szBulletType; //0x0080
    char pad_0084[4]; //0x0084
    char* szHudName; //0x0088
    char* szWeaponName; //0x008C
    char pad_0090[60]; //0x0090
    int WeaponType; //0x00CC
    int iWeaponPrice; //0x00D0
    int iKillAward; //0x00D4
    char* szAnimationPrefex; //0x00D8
    float flCycleTime; //0x00DC
    float flCycleTimeAlt; //0x00E0
    float flTimeToIdle; //0x00E4
    float flIdleInterval; //0x00E8
    bool bFullAuto; //0x00EC
    char pad_00ED[3]; //0x00ED
    int iDamage; //0x00F0
    float flArmorRatio; //0x00F4
    int iBullets; //0x00F8
    char updatefix[4]; //05.10.2021
    float flPenetration; //0x00FC
    float flFlinchVelocityModifierLarge; //0x0100
    float flFlinchVelocityModifierSmall; //0x0104
    float flRange; //0x0108
    float flRangeModifier; //0x010C
    char pad_0110[28]; //0x0110
    int iCrosshairMinDistance; //0x012C
    float flMaxPlayerSpeed; //0x0130
    float flMaxPlayerSpeedAlt; //0x0134
    char pad_0138[4]; //0x0138
    float flSpread; //0x013C
    float flSpreadAlt; //0x0140
    float flInaccuracyCrouch; //0x0144
    float flInaccuracyCrouchAlt; //0x0148
    float flInaccuracyStand; //0x014C
    float flInaccuracyStandAlt; //0x0150
    float flInaccuracyJumpIntial; //0x0154
    float flInaccaurcyJumpApex;
    float flInaccuracyJump; //0x0158
    float flInaccuracyJumpAlt; //0x015C
    float flInaccuracyLand; //0x0160
    float flInaccuracyLandAlt; //0x0164
    float flInaccuracyLadder; //0x0168
    float flInaccuracyLadderAlt; //0x016C
    float flInaccuracyFire; //0x0170
    float flInaccuracyFireAlt; //0x0174
    float flInaccuracyMove; //0x0178
    float flInaccuracyMoveAlt; //0x017C
    float flInaccuracyReload; //0x0180
    int iRecoilSeed; //0x0184
    float flRecoilAngle; //0x0188
    float flRecoilAngleAlt; //0x018C
    float flRecoilVariance; //0x0190
    float flRecoilAngleVarianceAlt; //0x0194
    float flRecoilMagnitude; //0x0198
    float flRecoilMagnitudeAlt; //0x019C
    float flRecoilMagnatiudeVeriance; //0x01A0
    float flRecoilMagnatiudeVerianceAlt; //0x01A4
    float flRecoveryTimeCrouch; //0x01A8
    float flRecoveryTimeStand; //0x01AC
    float flRecoveryTimeCrouchFinal; //0x01B0
    float flRecoveryTimeStandFinal; //0x01B4
    int iRecoveryTransititionStartBullet; //0x01B8
    int iRecoveryTransititionEndBullet; //0x01BC
    bool bUnzoomAfterShot; //0x01C0
    char pad_01C1[31]; //0x01C1
    char* szWeaponClass; //0x01E0
    char pad_01E4[56]; //0x01E4
    float flInaccuracyPitchShift; //0x021C
    float flInaccuracySoundThreshold; //0x0220
    float flBotAudibleRange; //0x0224
    char pad_0228[12]; //0x0228
    bool bHasBurstMode; //0x0234
};

CBaseHandle* m_hMyWeapons()
{
    return (CBaseHandle*)((uintptr_t)this + 0x2E08);
}

CBoneCache* m_BoneCache() // (если фикс костей на этом индексе у вас)
{
    return (CBoneCache*)((uintptr_t)this + 0x2914);
}

float& m_flSpawnTime()
{
    return *(float*)((uintptr_t)this + 0x103C0);
}
Код:
CUtlVector <matrix3x4_t>& player_t::m_CachedBoneData()
{
    return *(CUtlVector <matrix3x4_t>*)(uintptr_t(this) + 0x2914);
}

int player_t::animlayer_count()
{
    if (!this) //-V704
        return 0;

    //return *(int*)((DWORD)this + 0x298C);
    return 13;
}

AnimationLayer* player_t::get_animlayers()
{
    return *(AnimationLayer**)((DWORD)this + 0x2990);
}

c_baseplayeranimationstate* player_t::get_animation_state()
{
    return *reinterpret_cast<c_baseplayeranimationstate**>(reinterpret_cast<void*>(uintptr_t(this) + 0x9960));
}

CStudioHdr* player_t::m_pStudioHdr()
{
    return *(CStudioHdr**)((uintptr_t)this + *(uintptr_t*)0x2950);
}

чтобы не крашило при появлении противника, вам нужен другой setup_bones_fixed (ибо валвя добавили какую-то хуйню, для которой нужен доп. код для использования BONE_USED_BY_ANYTHING и BONE_USED_BY_HITBOX)
прикреплю стандартный setup_bones_fixed с которым не крашит

bool player_t::setup_bones_fixed(matrix3x4_t* matrix, int mask)
{
    if (!this) //-V704
        return false;

    auto setuped = false;

    auto backup_value = *(uint8_t*)((uintptr_t)this + 0x274);
    *(uint8_t*)((uintptr_t)this + 0x274) = 0;

    auto backup_effects = m_fEffects();
    m_fEffects() |= 8;

    auto animstate = get_animation_state();
    auto previous_weapon = animstate ? animstate->m_pLastBoneSetupWeapon : nullptr;

    if (previous_weapon)
        animstate->m_pLastBoneSetupWeapon = animstate->m_pActiveWeapon;

    auto backup_abs_origin = GetAbsOrigin();

    if (this != g_ctx.local())
        set_abs_origin(m_vecOrigin());

    g_ctx.globals.setuping_bones = true;
    invalidate_bone_cache();

    SetupBones(matrix, matrix ? MAXSTUDIOBONES : -1, mask, m_flSimulationTime());


    g_ctx.globals.setuping_bones = false;

    if (this != g_ctx.local())
        set_abs_origin(backup_abs_origin);

    if (previous_weapon)
        animstate->m_pLastBoneSetupWeapon = previous_weapon;

    m_fEffects() = backup_effects;
    *(uint8_t*)((uintptr_t)this + 0x274) = backup_value;

    return setuped;
}
Код:
g_ctx.indexes =
{
    5,
    33,
    339 + 1,
    218,
    219,
    34,
    157 + 1,
    75,
    460 + 1,
    482 + 1,
    452 + 1,
    483 + 1,
    284,
    223 + 1,
    246,
    27,
    17,
    123
};
p.s. делал через + 1, ибо мне нужно было найти функции, которые не ссылаются на эти индексы (если у вас в engineprediction есть индекс 339, то замените на 340)
ура, теперь дети могут пофиксить свой мега-чит на лв и продавать за 50 руб + анальная девственность в подарок:FeelsBadMan:
PasterAlmir обиженка?
топовый фикс шонакса
 
Пользователь
Статус
Оффлайн
Регистрация
14 Янв 2018
Сообщения
387
Реакции[?]
91
Поинты[?]
0
Пользователь
Статус
Оффлайн
Регистрация
14 Янв 2018
Сообщения
387
Реакции[?]
91
Поинты[?]
0
Пользователь
Статус
Оффлайн
Регистрация
14 Янв 2018
Сообщения
387
Реакции[?]
91
Поинты[?]
0
У меня такой темы нет вообще, тут уже скорее всего нужно doextrabonesprocessing_detour допилить (что я и сделал в своём сурсе ДО обновления)
У меня такой темы нет вообще, тут уже скорее всего нужно doextrabonesprocessing_detour допилить (что я и сделал в своём сурсе ДО обновления)
А нет, ошибся, modify eye position у меня на не из локал анимаций берётся, а из cashedbones, поэтому такой темы у меня нет
 
Начинающий
Статус
Оффлайн
Регистрация
24 Сен 2021
Сообщения
39
Реакции[?]
7
Поинты[?]
0
Nice fix, deleted the most important part from setub bones because u can't even find new signature also animlayer count that's not the fix there is new offset already posted


And why tf u changed studiohdr offset when signature is still the same xd?
 
Последнее редактирование:
Начинающий
Статус
Оффлайн
Регистрация
30 Авг 2021
Сообщения
76
Реакции[?]
11
Поинты[?]
0
priora compressor
Участник
Статус
Оффлайн
Регистрация
18 Май 2019
Сообщения
675
Реакции[?]
243
Поинты[?]
16K
main.cpp перед setup_hooks
Код:
using mother_fucker_valve = Vector * (__thiscall*)(void*);
inline mother_fucker_valve _yes_fuck;
#include "cheats/lagcompensation/local_animations.h"
Vector* __fastcall eye_angles(void* ecx, void* edx)
{
    static int* WantedReturnAddress1 = (int*)util::FindSignature(("client.dll"), "8B CE F3 0F 10 00 8B 06 F3 0F 11 45 ? FF 90 ? ? ? ? F3 0F 10 55 ?"); //Update Animations X/Y
    static int* WantedReturnAddress2 = (int*)util::FindSignature(("client.dll"), "F3 0F 10 55 ? 51 8B 8E ? ? ? ?");                                    //Update Animations X/Y
    static int* WantedReturnAddress3 = (int*)util::FindSignature(("client.dll"), "8B 55 0C 8B C8 E8 ? ? ? ? 83 C4 08 5E 8B E5");                       //Retarded valve fix

    //static auto oGetEyeAngles = playertable_hook.GetOriginal<Hooks::GetEyeAngles>(170);
    static auto oGetEyeAngles = _yes_fuck;

    if (_ReturnAddress() != WantedReturnAddress1 && _ReturnAddress() != WantedReturnAddress2 && _ReturnAddress() != WantedReturnAddress3)
        return oGetEyeAngles(ecx);

    if (!ecx || ((player_t*)ecx)->EntIndex() != m_engine()->GetLocalPlayer())
        return oGetEyeAngles(ecx);

    return &local_animations::get().local_data.real_angles;
}

в setup_hooks
Код:
    static auto motherfucker = (DWORD)(util::FindSignature(crypt_str("client.dll"), "56 8B F1 85 F6 74 32"));
    _yes_fuck = (mother_fucker_valve)DetourFunction((PBYTE)motherfucker, (PBYTE)eye_angles);
 
Начинающий
Статус
Оффлайн
Регистрация
24 Сен 2021
Сообщения
39
Реакции[?]
7
Поинты[?]
0
In short, after the update, the SetupBones broke, or rather the one that is responsible for assembling the bone matrix using the BONE_USED_BY_HITBOX mask (you can say that it was the server SetupBones).

After a couple of attempts to crash the fucking lw and reverse the client, I found a fix.

Go to setup_bones and find the following line:

C++:
static auto m_pIk = *(CIKContext**)((uintptr_t)m_animating + *(uintptr_t*)(ik + 0x2) + 0x4);
And we replace it with the following:

C++:
static auto m_pIk = *(CIKContext**)((uintptr_t)m_animating + 0x99C);
 
Начинающий
Статус
Оффлайн
Регистрация
13 Июл 2021
Сообщения
87
Реакции[?]
10
Поинты[?]
0
In short, after the update, the SetupBones broke, or rather the one that is responsible for assembling the bone matrix using the BONE_USED_BY_HITBOX mask (you can say that it was the server SetupBones).

After a couple of attempts to crash the fucking lw and reverse the client, I found a fix.

Go to setup_bones and find the following line:

C++:
static auto m_pIk = *(CIKContext**)((uintptr_t)m_animating + *(uintptr_t*)(ik + 0x2) + 0x4);
And we replace it with the following:

C++:
static auto m_pIk = *(CIKContext**)((uintptr_t)m_animating + 0x99C);
crash
 
Начинающий
Статус
Оффлайн
Регистрация
24 Сен 2021
Сообщения
39
Реакции[?]
7
Поинты[?]
0
Prob u didn't updated signature in CanBeAnimated func
Find:
C++:
static auto custom_player = *(int*)(util::FindSignature(crypt_str("client.dll"), crypt_str("80 BF ?? ?? ?? ?? ?? 0F 84 ?? ?? ?? ?? 83 BF ?? ?? ?? ?? ?? 74 7C")) + 2);
And change to:
C++:
static auto custom_player = *(int*)(util::FindSignature(crypt_str("client.dll"), crypt_str("80 BF ?? ?? ?? ?? ?? 0F 84 ?? ?? ?? ?? 83 BF ?? ?? ?? ?? ?? 74 7A")) + 2);
 
Начинающий
Статус
Оффлайн
Регистрация
13 Июл 2021
Сообщения
87
Реакции[?]
10
Поинты[?]
0
Prob u didn't updated signature in CanBeAnimated func

Find:
C++:
static auto custom_player = *(int*)(util::FindSignature(crypt_str("client.dll"), crypt_str("80 BF ?? ?? ?? ?? ?? 0F 84 ?? ?? ?? ?? 83 BF ?? ?? ?? ?? ?? 74 7C")) + 2);
And change to:
C++:
static auto custom_player = *(int*)(util::FindSignature(crypt_str("client.dll"), crypt_str("80 BF ?? ?? ?? ?? ?? 0F 84 ?? ?? ?? ?? 83 BF ?? ?? ?? ?? ?? 74 7A")) + 2);
isn't it the same code?
 
Начинающий
Статус
Оффлайн
Регистрация
13 Июл 2021
Сообщения
87
Реакции[?]
10
Поинты[?]
0
Prob u didn't updated signature in CanBeAnimated func

Find:
C++:
static auto custom_player = *(int*)(util::FindSignature(crypt_str("client.dll"), crypt_str("80 BF ?? ?? ?? ?? ?? 0F 84 ?? ?? ?? ?? 83 BF ?? ?? ?? ?? ?? 74 7C")) + 2);
And change to:
C++:
static auto custom_player = *(int*)(util::FindSignature(crypt_str("client.dll"), crypt_str("80 BF ?? ?? ?? ?? ?? 0F 84 ?? ?? ?? ?? 83 BF ?? ?? ?? ?? ?? 74 7A")) + 2);
ty crash fixed
 
SLANG
Начинающий
Статус
Оффлайн
Регистрация
15 Май 2019
Сообщения
159
Реакции[?]
28
Поинты[?]
0
Prob u didn't updated signature in CanBeAnimated func

Find:
C++:
static auto custom_player = *(int*)(util::FindSignature(crypt_str("client.dll"), crypt_str("80 BF ?? ?? ?? ?? ?? 0F 84 ?? ?? ?? ?? 83 BF ?? ?? ?? ?? ?? 74 7C")) + 2);
And change to:
C++:
static auto custom_player = *(int*)(util::FindSignature(crypt_str("client.dll"), crypt_str("80 BF ?? ?? ?? ?? ?? 0F 84 ?? ?? ?? ?? 83 BF ?? ?? ?? ?? ?? 74 7A")) + 2);
nice fix )) 1633468264511.png
 
Сверху Снизу