• Ищем качественного (не новичок) разработчиков Xenforo для этого форума! В идеале, чтобы ты был фулл стек программистом. Если у тебя есть что показать, то свяжись с нами по контактным данным: https://t.me/DREDD

Гайд Fix ebuchego legendware 22.09.2021

Пользователь
Пользователь
Статус
Оффлайн
Регистрация
14 Янв 2018
Сообщения
389
Реакции
91
дарова нахуй, фикс лв под апдейт наступил, радуйтесь детишки, которые не могут пофиксить свой лв под обнову
пж не ругайте за тему, я тоже не рад новым пастам на лв
Код:
Expand Collapse Copy
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);
}
Код:
Expand Collapse Copy
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;
}
Код:
Expand Collapse Copy
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 обиженка?
 
Последнее редактирование:
дарова нахуй, фикс лв под апдейт наступил, радуйтесь детишки, которые не могут пофиксить свой лв под обнову
пж не ругайте за тему, я тоже не рад новым пастам на лв
Код:
Expand Collapse Copy
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);
}
Код:
Expand Collapse Copy
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;
}
Код:
Expand Collapse Copy
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 обиженка?
топовый фикс шонакса
 
ЧТО БЛЯТЬ?
Фикси сетаббонса где?
Сигнатуры где?
Фикс авто вола где?
 
1633435843522.png
 
У меня такой темы нет вообще, тут уже скорее всего нужно doextrabonesprocessing_detour допилить (что я и сделал в своём сурсе ДО обновления)
У меня такой темы нет вообще, тут уже скорее всего нужно doextrabonesprocessing_detour допилить (что я и сделал в своём сурсе ДО обновления)
А нет, ошибся, modify eye position у меня на не из локал анимаций берётся, а из cashedbones, поэтому такой темы у меня нет
 
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?
 
Последнее редактирование:
main.cpp перед setup_hooks
Код:
Expand Collapse Copy
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
Код:
Expand Collapse Copy
    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);
 
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++:
Expand Collapse Copy
static auto m_pIk = *(CIKContext**)((uintptr_t)m_animating + *(uintptr_t*)(ik + 0x2) + 0x4);

And we replace it with the following:

C++:
Expand Collapse Copy
static auto m_pIk = *(CIKContext**)((uintptr_t)m_animating + 0x99C);
 
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++:
Expand Collapse Copy
static auto m_pIk = *(CIKContext**)((uintptr_t)m_animating + *(uintptr_t*)(ik + 0x2) + 0x4);

And we replace it with the following:

C++:
Expand Collapse Copy
static auto m_pIk = *(CIKContext**)((uintptr_t)m_animating + 0x99C);
crash
 
Prob u didn't updated signature in CanBeAnimated func
Find:
C++:
Expand Collapse Copy
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++:
Expand Collapse Copy
static auto custom_player = *(int*)(util::FindSignature(crypt_str("client.dll"), crypt_str("80 BF ?? ?? ?? ?? ?? 0F 84 ?? ?? ?? ?? 83 BF ?? ?? ?? ?? ?? 74 7A")) + 2);
 
Prob u didn't updated signature in CanBeAnimated func

Find:
C++:
Expand Collapse Copy
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++:
Expand Collapse Copy
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?
 
Prob u didn't updated signature in CanBeAnimated func

Find:
C++:
Expand Collapse Copy
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++:
Expand Collapse Copy
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
 
Prob u didn't updated signature in CanBeAnimated func

Find:
C++:
Expand Collapse Copy
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++:
Expand Collapse Copy
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
 
Назад
Сверху Снизу