Вопрос Как устроен класс оружия?

Начинающий
Статус
Оффлайн
Регистрация
7 Апр 2023
Сообщения
11
Реакции[?]
1
Поинты[?]
1K
Как устроен класс оружия в cs2? Предполагаю, что от локального игрока есть указатель на объект класса оружия, в котором находятся текущие пистолет, автомат и нож. Или же, что есть класс, в котором находится весь арсенал игры, который перебирается циклом. Подскажите, пожалуйста.
 
primordial
Пользователь
Статус
Оффлайн
Регистрация
4 Сен 2020
Сообщения
361
Реакции[?]
128
Поинты[?]
42K
Если я тебя правильно понял, то вот:

class:
C_CSWeaponBase
{
    m_flFireSequenceStartTime
    m_nFireSequenceStartTimeChange
    m_nFireSequenceStartTimeAck
    m_bPlayerFireEventIsPrimary
    m_seqIdle
    m_seqFirePrimary
    m_seqFireSecondary
    m_thirdPersonFireSequences
    m_hCurrentThirdPersonSequence
    m_nSilencerBoneIndex
    m_thirdPersonSequences
    m_ClientPreviousWeaponState
    m_iState
    m_flCrosshairDistance
    m_iAmmoLastCheck
    m_iAlpha
    m_iScopeTextureID
    m_iCrosshairTextureID
    m_flGunAccuracyPosition
    m_nViewModelIndex
    m_bReloadsWithClips
    m_flTimeWeaponIdle
    m_bFireOnEmpty
    m_OnPlayerPickup
    m_weaponMode
    m_flTurningInaccuracyDelta
    m_vecTurningInaccuracyEyeDirLast
    m_flTurningInaccuracy
    m_fAccuracyPenalty
    m_flLastAccuracyUpdateTime
    m_fAccuracySmoothedForZoom
    m_fScopeZoomEndTime
    m_iRecoilIndex
    m_flRecoilIndex
    m_bBurstMode
    m_flPostponeFireReadyTime
    m_bInReload
    m_bReloadVisuallyComplete
    m_flDroppedAtTime
    m_bIsHauledBack
    m_bSilencerOn
    m_flTimeSilencerSwitchComplete
    m_iOriginalTeamNumber
    m_flNextAttackRenderTimeOffset
    m_bVisualsDataSet
    m_bOldFirstPersonSpectatedState
    m_hOurPing
    m_nOurPingIndex
    m_vecOurPingPos
    m_bGlowForPing
    m_bUIWeapon
    m_hPrevOwner
    m_nDropTick
    m_donated
    m_fLastShotTime
    m_bWasOwnedByCT
    m_bWasOwnedByTerrorist
    m_gunHeat
    m_smokeAttachments
    m_lastSmokeTime
    m_flNextClientFireBulletTime
    m_flNextClientFireBulletTime_Repredict
    m_IronSightController
    m_iIronSightMode
    m_flLastLOSTraceFailureTime
    m_iNumEmptyAttacks
}
C_CSWeaponBaseGun
{
    m_zoomLevel
    m_iBurstShotsRemaining
    m_iSilencerBodygroup
    m_silencedModelIndex
    m_inPrecache
    m_bNeedsBoltAction
}
 
Keine panik!
Эксперт
Статус
Оффлайн
Регистрация
29 Апр 2020
Сообщения
812
Реакции[?]
417
Поинты[?]
49K
Подскажите, пожалуйста.
Сейчас все немного сложнее.
Сама сущность игрока теперь разделена на павн и контроллер, павн (который олицетворяет персонажа в игре) содержит ссылку на WeaponServices, и уже внутри есть указатели на все оружия, включая текущее.
Все это удобно смотреть в схеме.
 
Начинающий
Статус
Оффлайн
Регистрация
31 Окт 2023
Сообщения
64
Реакции[?]
25
Поинты[?]
24K
Как устроен класс оружия в cs2? Предполагаю, что от локального игрока есть указатель на объект класса оружия, в котором находятся текущие пистолет, автомат и нож. Или же, что есть класс, в котором находится весь арсенал игры, который перебирается циклом. Подскажите, пожалуйста.
У локал павна есть CCSPlayer_WeaponServices, который содержит в себе массив энтити хендлов всех оружий которые у тебя есть, и энтити хендл активного оружия.
Базовый класс у энтити оружия является C_CSWeaponBase, который содержит в себе кучу параметров, и наследуется для каждого оружия.
 
get good get legendware
Участник
Статус
Оффлайн
Регистрация
22 Сен 2020
Сообщения
434
Реакции[?]
200
Поинты[?]
47K
C++:
class ak_47 {
    int ammo = 30:
    int reserve_ammo = 90;
    void fire(player* target, player* shooter, vec3 shoot_pos, vec3 eye_pos)
    {
        //magic here boom
    }
    void reload(int& current_ammo..../*rest of stuff*/)
    {
        //magic
    }
    //rest of your class
}
 
Эксперт
Статус
Оффлайн
Регистрация
29 Мар 2021
Сообщения
1,570
Реакции[?]
593
Поинты[?]
32K
Пользователь
Статус
Оффлайн
Регистрация
12 Июн 2019
Сообщения
865
Реакции[?]
127
Поинты[?]
1K
Получаешь CCsweaaponbasevdata(он хранит информацию о оружии, есть в схемах) через C_baseentity+0x368(C_CSWeaponBase наследует c_baseentity)

Для получения самого оружия:
C++:
 SCHEMA(C_CSWeaponBase*, m_pClippingWeapon, "C_CSPlayerPawnBase", "m_pClippingWeapon");
 
Последнее редактирование:
Начинающий
Статус
Оффлайн
Регистрация
7 Апр 2023
Сообщения
11
Реакции[?]
1
Поинты[?]
1K
Сейчас все немного сложнее.
Сама сущность игрока теперь разделена на павн и контроллер, павн (который олицетворяет персонажа в игре) содержит ссылку на WeaponServices, и уже внутри есть указатели на все оружия, включая текущее.
Все это удобно смотреть в схеме.
В какой схеме?
 
Сверху Снизу