Гайд Делаем Авто-Пистолет

Всем Рептилойдам - Рен ТВ
Пользователь
Статус
Оффлайн
Регистрация
1 Фев 2020
Сообщения
541
Реакции[?]
92
Поинты[?]
0
C++:
class IWeapon
{
public:
    void StartFire() { CallFunction<void>(this, 0x58); }
    void StopFire() { CallFunction<void>(this, 0x60); }
};

C++:
LPCSTR WeaponName = mItem->GetIWeaponEntity()->GetName();
auto mWeapon = mItem->GetIWeapon();

if (strstr(WeaponName, "pt"))//краткое имя пистолета
{
    if (GetAsyncKeyState(VK_LBUTTON))//запускаем код если зажата лкм
    {
        mWeapon->StartFire(); //Начинаем стрельбу
        mWeapon->StopFire(); //заканчиваем стрельбу
    }
}
 
Начинающий
Статус
Оффлайн
Регистрация
12 Апр 2019
Сообщения
231
Реакции[?]
18
Поинты[?]
0
я конечно понимаю, для кого-то полезно, но это же все в пб..
 
Забаненный
Статус
Оффлайн
Регистрация
16 Фев 2021
Сообщения
45
Реакции[?]
40
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Есть FIREMODES для этого, можно просто изменить параметр и пистолет будет стрелять как автомат, а автомат как пистолет.
Будет время и доступ к проекту, поделюсь.
 
Начинающий
Статус
Оффлайн
Регистрация
29 Окт 2021
Сообщения
7
Реакции[?]
2
Поинты[?]
0
Есть FIREMODES для этого, можно просто изменить параметр и пистолет будет стрелять как автомат, а автомат как пистолет.
Будет время и доступ к проекту, поделюсь.
Уже выкладывали. Просто всем лень искать, вот и просят одно и тоже по несколько раз, и постят один и тот же метод через вызов события огня по несколько раз.

Пожалуйста, авторизуйтесь для просмотра ссылки.
 
Последнее редактирование:
Забаненный
Статус
Оффлайн
Регистрация
16 Фев 2021
Сообщения
45
Реакции[?]
40
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
C++:
class CWeaponGeneral {
public:

    enum class EWeaponStates {

        eWS_Disabled = 0,
        eWS_Idle = 1,
        eWS_IdleZoomed = 2,
        eWS_Fire = 3,
        eWS_IdleUnderBarrel = 4,
        eWS_oldFireUnderBarrel = 5,
        eWS_FireUnderBarrel = 6,
        eWS_ReloadUnderBarrel = 7,
        eWS_olsterInDisabled = 8,
        eWS_olsterInUnderBarrel = 9,
        eWS_olsteredUnderBarrel = 0x0A,
        eWS_MeleeUnderBarrel = 0x0B,
        eWS_TrowingFire = 0x0C,
        eWS_TrowingFireActivate = 0x0D,
        eWS_ZoomedFire = 0x0E,
        eWS_ZoomInFire = 0x0F,
        eWS_ZoomOutFire = 0x10,
        eWS_Reload = 0x11,
        eWS_ReloadBarrel = 0x12,
        eWS_BoltAction = 0x13,
        eWS_ZoomedBoltAction = 0x14,
        eWS_ZoomIn = 0x15,
        eWS_ZoomOut = 0x16,
        eWS_ZoomOutReloadAuto = 0x17,
        eWS_ZoomOutReloadManual = 0x18,
        eWS_ZoomOutQSA = 0x19,
        eWS_ZoomOutMelee = 0x1A,
        eWS_ZoomOutBoltAction = 0x1B,
        eWS_ZoomOutCustomize = 0x1C,
        eWS_Trowing = 0x1D,
        eWS_Toss = 0x1E,
        eWS_Melee = 0x1F,
        eWS_Select = 0x20,
        eWS_Deselect = 0x21,
        eWS_olding = 0x22,
        eWS_Activate = 0x23,
        eWS_Customize = 0x24,
        eWS_CustomizeIn = 0x25,
        eWS_CustomizeOut = 0x26,
        eWS_olsterIn = 0x27,
        eWS_olstered = 0x28,
        eWS_StartRestoreSelf = 0x29,
        eWS_StartRestoreTeamMate = 0x2A,
        eWS_CancelRestore = 0x2B,
        eWS_RestoreSelf = 0x2C,
        eWS_RestoreTeamMate = 0x2D,
        eWS_TryingRestoreSelf = 0x2E,
        eWS_TryingRestoreTeamMate = 0x2F,
        eWS_DropAmmoPack = 0x30,
        eWS_Resurrect = 0x31,
        eWS_ResetClipAmmo = 0x32,
        eWS_Last = 0x33,
        eWS_Num = 0x33
    };

    virtual CWeaponView* GetView(); //
    virtual CWeaponSettings* GetSettings(); //
    virtual CWeaponParameters* GetParameters(); //
    virtual CWeaponAttachment* GetAttachment(); //
    virtual class CItemBox* GetItemBox(); //
    virtual EWeaponStates GetCurrState(); //
    virtual char* GetDisplayName(); //
    virtual char* GetStatisticsName(); //
    virtual CGameObject* GetGameObject(); //
    virtual void SetUnderBarrelWeapon(); //
    virtual unsigned __int64 GetFirstOwner(); //
    virtual void SetFirstOwner(unsigned __int64 profileId); //
};

C++:
class CWeaponSettings : public CBaseSettings {
public:

    enum EInteractType : __int32 {

        eIT_First = 0x0,
        eIT_Heal = 0x0,
        eIT_Repair = 0x1,
        eIT_Resurrect = 0x2,
        eIT_Damage = 0x3,
        eIT_GiveAmmo = 0x4,
        eIT_Plant = 0x5,
        eIT_None = 0x6,
        eIT_Last = 0x6,
    };

    class CClipParams {
    public:
        bool m_isBarrel; //0x0000
        bool m_isUnlimited; //0x0001
        bool m_isUnlimitedInventory; //0x0002
        bool m_isAutoReloadEnabled; //0x0003
        bool m_isManualReloadEnabled; //0x0004

    }; //Size=0x0005

    class CMeleeParams {
    public:
        const char* m_hitType; //0x0000
        char pad_0x0008[0x8]; //0x0008
        float m_impulse; //0x0010
        float m_aoeHeight; //0x0014
        bool m_noRayTest; //0x0018
        bool m_armorAbsorb; //0x0019
        bool unknown0; //0x001A
        bool unknown1; //0x001B
        __int32 m_pierceability; //0x001C
        bool m_aoe_enabled; //0x0020
    };

    class CRestoreParams {
    public:
        char pad_0x0000[0x20]; //0x0000
        float m_startRestoreDuration; //0x0020
        float m_restoreDuration; //0x0024
        float m_restoreCoopDuration; //0x0028
        __int32 m_restoreAmount; //0x002C
        __int32 m_hitTypeId; //0x0030
        char pad_0x0034[0x4]; //0x0034
        std::set<enum ECharacterClassId> m_class_restrictions; //0x0038

    }; //Size=0x0048

    class CResurrectParams {
    public:

    };

    class CDFDamageParams {
    public:

    };

    class CRechargeParams {
    public:
        float m_rechargeDuration; //0x0000
        bool m_canRecharge; //0x0004
        char pad_0x0005[0x3]; //0x0005
        __int32 m_maxChargeLevel; //0x0008
        __int32 m_useCost; //0x000C
        __int32 m_chargeType; //0x0010
        __int32 m_lowLevelNotification; //0x0014
        __int32 m_rechargeDelay; //0x0018
        __int32 m_interactType; //0x001C

    }; //Size=0x0020

    char pad_0x0428[0x28]; //0x0428
    __int32 m_recoilResetDelay; //0x0450
    __int32 m_spreadResetDelay; //0x0454
    char pad_0x0458[0x48]; //0x0458
    CWeaponSettings::CMeleeParams* m_meleeparams; //0x04A0
    CWeaponSettings::CMeleeParams* m_secondaryMeleeparams; //0x04A8
    CWeaponSettings::CClipParams m_clipParams; //0x04B0
    bool unknown0; //0x04B5
    char pad_0x04B6[0x2]; //0x04B6
    CWeaponSettings::CRestoreParams* m_restoreParams; //0x04B8
    char pad_0x04C0[0xA0]; //0x04C0
    CWeaponSettings::CRechargeParams* m_rechargeParams; //0x0560
};


C++:
class CBaseSettings {
public:
    enum class EFiremode {

        eFM_First = 0x0,
        eFM_Single = 0x0,
        eFM_SingleSmoothed = 0x1,
        eFM_Rapid = 0x2,
        eFM_Burst = 0x3,
        eFM_RapidBurst = 0x4,
        eFM_Restore = 0x5,
        eFM_Throw = 0x6,
        eFM_UnderBarrel = 0x7,
        eFM_Melee = 0x8,
        eFM_Plant = 0x9,
        eFM_Drop = 0xA,
        eFM_Defibrillator = 0xB,
        eFM_Resurrect = 0xC,
        eFM_Control = 0xD,
        eFM_Last = 0xE,
        eFM_Num = 0xE,
    };

    struct SFireParams {
        int pellets;
        CEntityClass* ammo_type_class;
        int extra_ammo;
        int place_on_ground;
        int throwing;
        float hold_time;
        Vec3_tpl<float> ai_muzzle_pos;
        Vec3_tpl<float> force_launch_dir;
    }; //Size=0x0038

    struct SFireModeParams {
        char pad_0x0000[0x10]; //0x0000
        CBaseSettings::EFiremode fireMode; //0x0010
        __int32 rpm_burst; //0x0014
        __int32 burst_bullet_count; //0x0018
        char pad_0x001C[0x4]; //0x001C
        const char* fireModeIcon; //0x0020
        char pad_0x0028[0x8]; //0x0028
        char* mfEffect; //0x0030
        char pad_0x0038[0x8]; //0x0038

    }; //Size=0x0040

public:

    char pad_0x0000[0x10]; //0x0000
    CBaseSettings::SFireParams m_fireparams; //0x0010
    std::vector<CBaseSettings::SFireModeParams*> m_firemodes; //0x0048
    char pad_0x0060[0x380]; //0x0060
    CryStringT<char> m_name; // 0x3c0
    CryStringT<char> m_ingameDescription;
    void* m_paramBlock;
    CryStringT<char> m_combatLogIcon;
    CryStringT<char> m_meleeCombatLogIcon;
    CryStringT<char> m_resurrectCombatLogIcon;
    CryStringT<char> m_weaponPanelIcon;
};
 
Начинающий
Статус
Оффлайн
Регистрация
21 Дек 2018
Сообщения
383
Реакции[?]
11
Поинты[?]
2K
C++:
class CWeaponGeneral {
public:

    enum class EWeaponStates {

        eWS_Disabled = 0,
        eWS_Idle = 1,
        eWS_IdleZoomed = 2,
        eWS_Fire = 3,
        eWS_IdleUnderBarrel = 4,
        eWS_oldFireUnderBarrel = 5,
        eWS_FireUnderBarrel = 6,
        eWS_ReloadUnderBarrel = 7,
        eWS_olsterInDisabled = 8,
        eWS_olsterInUnderBarrel = 9,
        eWS_olsteredUnderBarrel = 0x0A,
        eWS_MeleeUnderBarrel = 0x0B,
        eWS_TrowingFire = 0x0C,
        eWS_TrowingFireActivate = 0x0D,
        eWS_ZoomedFire = 0x0E,
        eWS_ZoomInFire = 0x0F,
        eWS_ZoomOutFire = 0x10,
        eWS_Reload = 0x11,
        eWS_ReloadBarrel = 0x12,
        eWS_BoltAction = 0x13,
        eWS_ZoomedBoltAction = 0x14,
        eWS_ZoomIn = 0x15,
        eWS_ZoomOut = 0x16,
        eWS_ZoomOutReloadAuto = 0x17,
        eWS_ZoomOutReloadManual = 0x18,
        eWS_ZoomOutQSA = 0x19,
        eWS_ZoomOutMelee = 0x1A,
        eWS_ZoomOutBoltAction = 0x1B,
        eWS_ZoomOutCustomize = 0x1C,
        eWS_Trowing = 0x1D,
        eWS_Toss = 0x1E,
        eWS_Melee = 0x1F,
        eWS_Select = 0x20,
        eWS_Deselect = 0x21,
        eWS_olding = 0x22,
        eWS_Activate = 0x23,
        eWS_Customize = 0x24,
        eWS_CustomizeIn = 0x25,
        eWS_CustomizeOut = 0x26,
        eWS_olsterIn = 0x27,
        eWS_olstered = 0x28,
        eWS_StartRestoreSelf = 0x29,
        eWS_StartRestoreTeamMate = 0x2A,
        eWS_CancelRestore = 0x2B,
        eWS_RestoreSelf = 0x2C,
        eWS_RestoreTeamMate = 0x2D,
        eWS_TryingRestoreSelf = 0x2E,
        eWS_TryingRestoreTeamMate = 0x2F,
        eWS_DropAmmoPack = 0x30,
        eWS_Resurrect = 0x31,
        eWS_ResetClipAmmo = 0x32,
        eWS_Last = 0x33,
        eWS_Num = 0x33
    };

    virtual CWeaponView* GetView(); //
    virtual CWeaponSettings* GetSettings(); //
    virtual CWeaponParameters* GetParameters(); //
    virtual CWeaponAttachment* GetAttachment(); //
    virtual class CItemBox* GetItemBox(); //
    virtual EWeaponStates GetCurrState(); //
    virtual char* GetDisplayName(); //
    virtual char* GetStatisticsName(); //
    virtual CGameObject* GetGameObject(); //
    virtual void SetUnderBarrelWeapon(); //
    virtual unsigned __int64 GetFirstOwner(); //
    virtual void SetFirstOwner(unsigned __int64 profileId); //
};

C++:
class CWeaponSettings : public CBaseSettings {
public:

    enum EInteractType : __int32 {

        eIT_First = 0x0,
        eIT_Heal = 0x0,
        eIT_Repair = 0x1,
        eIT_Resurrect = 0x2,
        eIT_Damage = 0x3,
        eIT_GiveAmmo = 0x4,
        eIT_Plant = 0x5,
        eIT_None = 0x6,
        eIT_Last = 0x6,
    };

    class CClipParams {
    public:
        bool m_isBarrel; //0x0000
        bool m_isUnlimited; //0x0001
        bool m_isUnlimitedInventory; //0x0002
        bool m_isAutoReloadEnabled; //0x0003
        bool m_isManualReloadEnabled; //0x0004

    }; //Size=0x0005

    class CMeleeParams {
    public:
        const char* m_hitType; //0x0000
        char pad_0x0008[0x8]; //0x0008
        float m_impulse; //0x0010
        float m_aoeHeight; //0x0014
        bool m_noRayTest; //0x0018
        bool m_armorAbsorb; //0x0019
        bool unknown0; //0x001A
        bool unknown1; //0x001B
        __int32 m_pierceability; //0x001C
        bool m_aoe_enabled; //0x0020
    };

    class CRestoreParams {
    public:
        char pad_0x0000[0x20]; //0x0000
        float m_startRestoreDuration; //0x0020
        float m_restoreDuration; //0x0024
        float m_restoreCoopDuration; //0x0028
        __int32 m_restoreAmount; //0x002C
        __int32 m_hitTypeId; //0x0030
        char pad_0x0034[0x4]; //0x0034
        std::set<enum ECharacterClassId> m_class_restrictions; //0x0038

    }; //Size=0x0048

    class CResurrectParams {
    public:

    };

    class CDFDamageParams {
    public:

    };

    class CRechargeParams {
    public:
        float m_rechargeDuration; //0x0000
        bool m_canRecharge; //0x0004
        char pad_0x0005[0x3]; //0x0005
        __int32 m_maxChargeLevel; //0x0008
        __int32 m_useCost; //0x000C
        __int32 m_chargeType; //0x0010
        __int32 m_lowLevelNotification; //0x0014
        __int32 m_rechargeDelay; //0x0018
        __int32 m_interactType; //0x001C

    }; //Size=0x0020

    char pad_0x0428[0x28]; //0x0428
    __int32 m_recoilResetDelay; //0x0450
    __int32 m_spreadResetDelay; //0x0454
    char pad_0x0458[0x48]; //0x0458
    CWeaponSettings::CMeleeParams* m_meleeparams; //0x04A0
    CWeaponSettings::CMeleeParams* m_secondaryMeleeparams; //0x04A8
    CWeaponSettings::CClipParams m_clipParams; //0x04B0
    bool unknown0; //0x04B5
    char pad_0x04B6[0x2]; //0x04B6
    CWeaponSettings::CRestoreParams* m_restoreParams; //0x04B8
    char pad_0x04C0[0xA0]; //0x04C0
    CWeaponSettings::CRechargeParams* m_rechargeParams; //0x0560
};


C++:
class CBaseSettings {
public:
    enum class EFiremode {

        eFM_First = 0x0,
        eFM_Single = 0x0,
        eFM_SingleSmoothed = 0x1,
        eFM_Rapid = 0x2,
        eFM_Burst = 0x3,
        eFM_RapidBurst = 0x4,
        eFM_Restore = 0x5,
        eFM_Throw = 0x6,
        eFM_UnderBarrel = 0x7,
        eFM_Melee = 0x8,
        eFM_Plant = 0x9,
        eFM_Drop = 0xA,
        eFM_Defibrillator = 0xB,
        eFM_Resurrect = 0xC,
        eFM_Control = 0xD,
        eFM_Last = 0xE,
        eFM_Num = 0xE,
    };

    struct SFireParams {
        int pellets;
        CEntityClass* ammo_type_class;
        int extra_ammo;
        int place_on_ground;
        int throwing;
        float hold_time;
        Vec3_tpl<float> ai_muzzle_pos;
        Vec3_tpl<float> force_launch_dir;
    }; //Size=0x0038

    struct SFireModeParams {
        char pad_0x0000[0x10]; //0x0000
        CBaseSettings::EFiremode fireMode; //0x0010
        __int32 rpm_burst; //0x0014
        __int32 burst_bullet_count; //0x0018
        char pad_0x001C[0x4]; //0x001C
        const char* fireModeIcon; //0x0020
        char pad_0x0028[0x8]; //0x0028
        char* mfEffect; //0x0030
        char pad_0x0038[0x8]; //0x0038

    }; //Size=0x0040

public:

    char pad_0x0000[0x10]; //0x0000
    CBaseSettings::SFireParams m_fireparams; //0x0010
    std::vector<CBaseSettings::SFireModeParams*> m_firemodes; //0x0048
    char pad_0x0060[0x380]; //0x0060
    CryStringT<char> m_name; // 0x3c0
    CryStringT<char> m_ingameDescription;
    void* m_paramBlock;
    CryStringT<char> m_combatLogIcon;
    CryStringT<char> m_meleeCombatLogIcon;
    CryStringT<char> m_resurrectCombatLogIcon;
    CryStringT<char> m_weaponPanelIcon;
};
Так если менять firemode в классе SFireModeParams на другой кроме 0, крашит же... Или я что-то неправильно делаю?

P.S. И как вообще правильно можно получить доступ к CBaseSettings? Я проверял способом с UC, там краш был. @Yushkxn

P.S.S. Невнимателен был сначала, сам нашёл.
 
Последнее редактирование:
Сверху Снизу