Нужна помощь с триггером

Начинающий
Статус
Оффлайн
Регистрация
8 Янв 2019
Сообщения
75
Реакции[?]
1
Поинты[?]
0
хэй, короче, при включении триггера крашит, продебажил, оишбку показывает тут

forward *= G::LocalPlayer->GetWeapon()->GetCSWpnData()->m_flRange;

сам же weaponinfo_t
class WeaponInfo_t {
public:
char _0x0000[20];
__int32 iMaxClip1; //0x0014
char _0x0018[12];
__int32 max_reserved_ammo; //0x0024
char _0x0028[96];
char* hud_name; //0x0088
char* weapon_name; //0x008C
char _0x0090[60];
__int32 type; //0x00CC
__int32 price; //0x00D0
__int32 reward; //0x00D4
char _0x00D8[20];
char full_auto; //0x00EC
char _0x00ED[3];
__int32 m_iDamage; //0x00F0
float m_flArmorRatio; //0x00F4
__int32 iBullets; //0x00F8
float m_flPenetration; // 0x00F8
char _0x0100[8];
float m_flRange; // 0x0104
float m_flRangeModifier; // 0x0108
float flThrowVelocity;
char _0x0110[12];
char silencer; //0x0120
char _0x0121[15];
float max_speed; //0x0130
float max_speed_alt; //0x0134
char _0x0138[76];
__int32 recoil_seed; //0x0184
char _0x0188[32];
};


сурс триггера
void CLegitBot::Triggerbot()
{
Vector src, dst, forward;
trace_t tr;
Ray_t ray;
CTraceFilter filter;

QAngle viewangle = G::UserCmd->viewangles;

viewangle += G::LocalPlayer->GetPunch() * 2.f;

M::AngleVectors(viewangle, &forward);
forward *= G::LocalPlayer->GetWeapon()->GetCSWpnData()->m_flRange;

filter.pSkip = G::LocalPlayer;
src = G::LocalPlayer->GetEyePosition();
dst = src + forward;

ray.Init(src, dst);

I::EngineTrace->TraceRay(ray, 0x46004003, &filter, &tr);

if (!tr.m_pEnt)
return;

int hitgroup = tr.hitgroup;
bool didHit = false;

if (U::LineGoesThroughSmoke(tr.startpos, tr.endpos))
return;

if (Vars.Legitbot[G::ActiveWeapon].Triggerbot.Filter.Head && hitgroup == HITGROUP_HEAD)
didHit = true;
if (Vars.Legitbot[G::ActiveWeapon].Triggerbot.Filter.Chest && hitgroup == HITGROUP_CHEST)
didHit = true;
if (Vars.Legitbot[G::ActiveWeapon].Triggerbot.Filter.Stomach && hitgroup == HITGROUP_STOMACH)
didHit = true;
if (Vars.Legitbot[G::ActiveWeapon].Triggerbot.Filter.Arms && (hitgroup == HITGROUP_LEFTARM || hitgroup == HITGROUP_RIGHTARM))
didHit = true;
if (Vars.Legitbot[G::ActiveWeapon].Triggerbot.Filter.Legs && (hitgroup == HITGROUP_LEFTLEG || hitgroup == HITGROUP_RIGHTLEG))
didHit = true;

if ((Vars.Legitbot[G::ActiveWeapon].Triggerbot.Filter.Friendly || tr.m_pEnt->GetTeam() != G::LocalPlayer->GetTeam()) && tr.m_pEnt->GetHealth() > 0 && !tr.m_pEnt->GetImmune())
{
float hitchance = 75.f + (Vars.Legitbot[G::ActiveWeapon].Triggerbot.HitChanceAmt / 4);
if (didHit && (!Vars.Legitbot[G::ActiveWeapon].Triggerbot.HitChance || (1.0f - G::LocalPlayer->GetWeapon()->GetAccuracyPenalty()) * 100.f >= hitchance))
G::UserCmd->buttons |= IN_ATTACK;
}





}

вроде всё верно, не понимаю почему идёт краш
 
😁
Олдфаг
Статус
Оффлайн
Регистрация
27 Ноя 2016
Сообщения
2,091
Реакции[?]
2,025
Поинты[?]
6K
forward *= G::LocalPlayer->GetWeapon()->GetCSWpnData()->m_flRange;
Прежде чем обращаться, проверяй на nullptr,
Код:
auto pWeapon = G::LocalPlayer->GetWeapon();
if (!pWeapon)
    return;
   
auto pWpnData = pWeapon->GetCSWpnData();
if (!pWpnData)
    return;
   
forward *= pWpnData->m_flRange;
Да и скорее всего класс устарел.
 
Начинающий
Статус
Оффлайн
Регистрация
8 Янв 2019
Сообщения
75
Реакции[?]
1
Поинты[?]
0
Прежде чем обращаться, проверяй на nullptr,
Код:
auto pWeapon = G::LocalPlayer->GetWeapon();
if (!pWeapon)
    return;
  
auto pWpnData = pWeapon->GetCSWpnData();
if (!pWpnData)
    return;
  
forward *= pWpnData->m_flRange;
Да и скорее всего класс устарел.
forward *= pWpnData->m_flRange; на это всё равно питух дичь несет( класс взял от иклюда, основа схожа с ним, но там трига работает, что еще может быть?

ИмяЗначениеТип this0x3fc34918 {...}CLegitBot *
 
JesusCry
Забаненный
Статус
Оффлайн
Регистрация
5 Янв 2018
Сообщения
186
Реакции[?]
119
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
C++:
class WeaponInfo_t
{
public:
    void* vftbl;                             //0x0000
    char* consoleName;                       //0x0004
    char    pad_0x0008[12];                    //0x0008
    int     iMaxClip1;                         //0x0014
    int     iMaxClip2;                         //0x0018
    int     iDefaultClip1;                     //0x001C
    int     iDefaultClip2;                     //0x0020
    int     iMaxReservedAmmo;                  //0x0024
    char    pad_0x0028[8];                     //0x0028
    char* szWorldModel;                      //0x0030
    char* szViewModel;                       //0x0034
    char* szDroppedModel;                    //0x0038
    char    pad_0x003C[64];                    //0x003C
    char* szEmptySound;                      //0x007C
    char    pad_0x0080[4];                     //0x0080
    char* szBulletType;                      //0x0084
    char* szHudName;                         //0x0088
    char* szWeaponName;                      //0x008C
    char    pad_0x0090[60];                    //0x0090
    int     WeaponType;                        //0x00CC
    int     iWeaponPrice;                      //0x00D0
    int     iKillAward;                        //0x00D4
    char* szAnimationPrefix;                 //0x00D8
    float   flCycleTime;                       //0x00DC
    float   flCycleTimeAlt;                    //0x00E0
    float   flTimeToIdle;                      //0x00E4
    float   flIdleInterval;                    //0x00E8
    bool    bFullAuto;                         //0x00EC
    char    pad_0x00ED[3];                     //0x00ED
    int     iDamage;                           //0x00F0
    float   flArmorRatio;                      //0x00F4
    int     iBullets;                          //0x00F8
    float   flPenetration;                     //0x00FC
    float   flFlinchVelocityModifierLarge;     //0x0100
    float   flFlinchVelocityModifierSmall;     //0x0104
    float   flRange;                           //0x0108
    float   flRangeModifier;                   //0x010C
    float   flThrowVelocity;                   //0x0110
    char    pad_0x0114[12];                    //0x0114
    bool    bHasSilencer;                      //0x0120
    char    pad_0x0121[3];                     //0x0121
    char* pSilencerModel;                    //0x0124
    int     iCrosshairMinDistance;             //0x0128
    int     iCrosshairDeltaDistance;           //0x012C
    float   flMaxPlayerSpeed;                  //0x0130
    float   flMaxPlayerSpeedAlt;               //0x0134
    float   flSpread;                          //0x0138
    float   flSpreadAlt;                       //0x013C
    float   flInaccuracyCrouch;                //0x0140
    float   flInaccuracyCrouchAlt;             //0x0144
    float   flInaccuracyStand;                 //0x0148
    float   flInaccuracyStandAlt;              //0x014C
    float   flInaccuracyJumpInitial;           //0x0150
    float   flInaccuracyJump;                  //0x0154
    float   flInaccuracyJumpAlt;               //0x0158
    float   flInaccuracyLand;                  //0x015C
    float   flInaccuracyLandAlt;               //0x0160
    float   flInaccuracyLadder;                //0x0164
    float   flInaccuracyLadderAlt;             //0x0168
    float   flInaccuracyFire;                  //0x016C
    float   flInaccuracyFireAlt;               //0x0170
    float   flInaccuracyMove;                  //0x0174
    float   flInaccuracyMoveAlt;               //0x0178
    float   flInaccuracyReload;                //0x017C
    char    pad_0x0180[4];                     //0x0180
    int     iRecoilSeed;                       //0x0184
    float   flRecoilAngle;                     //0x0188
    float   flRecoilAngleAlt;                  //0x018C
    float   flRecoilAngleVariance;             //0x0190
    float   flRecoilAngleVarianceAlt;          //0x0194
    float   flRecoilMagnitude;                 //0x0198
    float   flRecoilMagnitudeAlt;              //0x019C
    float   flRecoilMagnitudeVariance;         //0x01A0
    float   flRecoilMagnitudeVarianceAlt;      //0x01A4
    float   flRecoveryTimeCrouch;              //0x01A8
    float   flRecoveryTimeStand;               //0x01AC
    float   flRecoveryTimeCrouchFinal;         //0x01B0
    float   flRecoveryTimeStandFinal;          //0x01B4
    int     iRecoveryTransitionStartBullet;    //0x01B8
    int     iRecoveryTransitionEndBullet;      //0x01BC
    bool    bUnzoomAfterShot;                  //0x01C0
    bool    bHideViewModelZoomed;              //0x01C1
    char    pad_0x01C2[2];                     //0x01C2
    char    iZoomLevels[3];                    //0x01C4
    int     iZoomFOV[2];                       //0x01C7
    float   fZoomTime[3];                      //0x01C9
    char* szWeaponClass;                     //0x01CC
    float   flAddonScale;                      //0x01D0
    char    pad_0x01D4[4];                     //0x01D4
    char* szEjectBrassEffect;                //0x01D8
    char* szTracerEffect;                    //0x01DC
    int     iTracerFrequency;                  //0x01E0
    int     iTracerFrequencyAlt;               //0x01E4
    char* szMuzzleFlashEffect_1stPerson;     //0x01E8
    char    pad_0x01EC[4];                     //0x01EC
    char* szMuzzleFlashEffect_3rdPerson;     //0x01F0
    char    pad_0x01F4[4];                     //0x01F4
    char* szMuzzleSmokeEffect;               //0x01F8
    float   flHeatPerShot;                     //0x01FC
    char* szZoomInSound;                     //0x0200
    char* szZoomOutSound;                    //0x0204
    float   flInaccuracyPitchShift;            //0x0208
    float   flInaccuracySoundThreshold;        //0x020C
    float   flBotAudibleRange;                 //0x0210
    char    pad_0x0214[8];                     //0x0214
    char* pWrongTeamMsg;                     //0x021C
    bool    bHasBurstMode;                     //0x0220
    char    pad_0x0221[3];                     //0x0221
    bool    bIsRevolver;                       //0x0224
    bool    bCannotShootUnderwater;            //0x0225
};
C++:
WeaponInfo_t* CBaseCombatWeapon::GetCSWpnData()
{
    if( !this ) return nullptr;
    typedef WeaponInfo_t*( __thiscall* OriginalFn )( void* );
    return U::GetVFunc<OriginalFn>(this, 454)(this);
}
 
Сверху Снизу