mirror of
https://github.com/rehlds/reapi.git
synced 2025-02-05 18:20:36 +03:00
Headers update, rename m_bHasSecondaryAttack, CSPlayer member additions (#293)
* Update CSEntity.h, CSPlayer.h, CSPlayerItem.h, regamedll_api.h * SendDeathMessage interface to regamedll_api.h * Update CSPlayerWeapon class, rename m_bHasSecondaryAttack * Updated CSPlayerWeapon.h vfuncs and members * Renamed bHasSecondaryAttack member to iStateSecondaryAttack and added compat to AMXX includes * Added remaining CSPlayer members * Added overload method for bool[]
This commit is contained in:
parent
b281588ddf
commit
4c1932c2c9
@ -1479,3 +1479,14 @@ enum GameEventType
|
|||||||
EVENT_HOSTAGE_CALLED_FOR_HELP, // tell bots the hostage is talking (argumens: 1 = listener, 2 = NULL)
|
EVENT_HOSTAGE_CALLED_FOR_HELP, // tell bots the hostage is talking (argumens: 1 = listener, 2 = NULL)
|
||||||
NUM_GAME_EVENTS,
|
NUM_GAME_EVENTS,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Weapon secondary attack states
|
||||||
|
* For CCSPlayerWeapon::m_iStateSecondaryAttack
|
||||||
|
*/
|
||||||
|
enum SecondaryAtkState
|
||||||
|
{
|
||||||
|
WEAPON_SECONDARY_ATTACK_NONE = 0,
|
||||||
|
WEAPON_SECONDARY_ATTACK_SET,
|
||||||
|
WEAPON_SECONDARY_ATTACK_BLOCK
|
||||||
|
};
|
||||||
|
@ -4816,6 +4816,54 @@ enum CCSPlayer_Members
|
|||||||
* Set params: set_member(index, member, bool:value);
|
* Set params: set_member(index, member, bool:value);
|
||||||
*/
|
*/
|
||||||
m_bSpawnProtectionEffects,
|
m_bSpawnProtectionEffects,
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Description: Player vertical jump height
|
||||||
|
* Member type: float
|
||||||
|
* Get params: Float:get_member(index, member);
|
||||||
|
* Set params: set_member(index, member, Float:value);
|
||||||
|
*/
|
||||||
|
m_flJumpHeight,
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Description: Player vertical jump height with longjump
|
||||||
|
* Member type: float
|
||||||
|
* Get params: Float:get_member(index, member);
|
||||||
|
* Set params: set_member(index, member, Float:value);
|
||||||
|
*/
|
||||||
|
m_flLongJumpHeight,
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Description: Player horizontal jump height with longjump
|
||||||
|
* Member type: float
|
||||||
|
* Get params: Float:get_member(index, member);
|
||||||
|
* Set params: set_member(index, member, Float:value);
|
||||||
|
*/
|
||||||
|
m_flLongJumpForce,
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Description: Player crouch maxspeed multiplier
|
||||||
|
* Member type: float
|
||||||
|
* Get params: Float:get_member(index, member);
|
||||||
|
* Set params: set_member(index, member, Float:value);
|
||||||
|
*/
|
||||||
|
m_flDuckSpeedMultiplier,
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Description: How many unanswered kills this player has been dealt by each other player (0-31)
|
||||||
|
* Member type: int [32]
|
||||||
|
* Get params: get_member(index, member, element);
|
||||||
|
* Set params: set_member(index, member, value, element);
|
||||||
|
*/
|
||||||
|
m_iNumKilledByUnanswered,
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Description: Array of state per other player whether player is dominating other players (0-31)
|
||||||
|
* Member type: bool [32]
|
||||||
|
* Get params: get_member(index, member, element);
|
||||||
|
* Set params: set_member(index, member, value, element);
|
||||||
|
*/
|
||||||
|
m_bPlayerDominated,
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -6238,12 +6286,12 @@ enum CMapInfo_Members
|
|||||||
enum CCSPlayerWeapon_Members
|
enum CCSPlayerWeapon_Members
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
* Description: Can the weapon have secondary attack
|
* Description: Weapon secondary attack state
|
||||||
* Member type: bool
|
* Member type: enum SecondaryAtkState
|
||||||
* Get params: get_member(index, member);
|
* Get params: get_member(index, member);
|
||||||
* Set params: set_member(index, member, bool:value);
|
* Set params: set_member(index, member, SecondaryAtkState:value);
|
||||||
*/
|
*/
|
||||||
m_Weapon_bHasSecondaryAttack = BEGIN_MEMBER_REGION(csplayerweapon),
|
m_Weapon_iStateSecondaryAttack = BEGIN_MEMBER_REGION(csplayerweapon),
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Description: Basic damage that weapon deals before any multiplier, such as hitgroup, armor, distance and bullet penetration
|
* Description: Basic damage that weapon deals before any multiplier, such as hitgroup, armor, distance and bullet penetration
|
||||||
@ -6254,6 +6302,9 @@ enum CCSPlayerWeapon_Members
|
|||||||
m_Weapon_flBaseDamage,
|
m_Weapon_flBaseDamage,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// API compatibility
|
||||||
|
#define m_Weapon_bHasSecondaryAttack m_Weapon_iStateSecondaryAttack
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* CGib Members
|
* CGib Members
|
||||||
*/
|
*/
|
||||||
|
@ -36,6 +36,7 @@ public:
|
|||||||
CCSEntity() :
|
CCSEntity() :
|
||||||
m_pContainingEntity(nullptr)
|
m_pContainingEntity(nullptr)
|
||||||
{
|
{
|
||||||
|
m_ucDmgPenetrationLevel = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual ~CCSEntity() {}
|
virtual ~CCSEntity() {}
|
||||||
@ -45,12 +46,14 @@ public:
|
|||||||
|
|
||||||
public:
|
public:
|
||||||
CBaseEntity *m_pContainingEntity;
|
CBaseEntity *m_pContainingEntity;
|
||||||
|
unsigned char m_ucDmgPenetrationLevel; // penetration level of the damage caused by the inflictor
|
||||||
|
|
||||||
private:
|
private:
|
||||||
#if defined(_MSC_VER)
|
#if defined(_MSC_VER)
|
||||||
#pragma region reserve_data_Region
|
#pragma region reserve_data_Region
|
||||||
#endif
|
#endif
|
||||||
int CCSEntity_Reserve[0x1000];
|
char CCSEntity_Reserve[0x3FFF];
|
||||||
|
|
||||||
virtual void func_reserve1() {};
|
virtual void func_reserve1() {};
|
||||||
virtual void func_reserve2() {};
|
virtual void func_reserve2() {};
|
||||||
virtual void func_reserve3() {};
|
virtual void func_reserve3() {};
|
||||||
|
@ -30,6 +30,7 @@
|
|||||||
|
|
||||||
#include <API/CSPlayerItem.h>
|
#include <API/CSPlayerItem.h>
|
||||||
#include <API/CSPlayerWeapon.h>
|
#include <API/CSPlayerWeapon.h>
|
||||||
|
#include <utlarray.h>
|
||||||
|
|
||||||
enum WeaponInfiniteAmmoMode
|
enum WeaponInfiniteAmmoMode
|
||||||
{
|
{
|
||||||
@ -52,9 +53,21 @@ public:
|
|||||||
m_bAutoBunnyHopping(false),
|
m_bAutoBunnyHopping(false),
|
||||||
m_bMegaBunnyJumping(false),
|
m_bMegaBunnyJumping(false),
|
||||||
m_bPlantC4Anywhere(false),
|
m_bPlantC4Anywhere(false),
|
||||||
m_bSpawnProtectionEffects(false)
|
m_bSpawnProtectionEffects(false),
|
||||||
|
m_flJumpHeight(0),
|
||||||
|
m_flLongJumpHeight(0),
|
||||||
|
m_flLongJumpForce(0),
|
||||||
|
m_flDuckSpeedMultiplier(0),
|
||||||
|
m_iUserID(-1)
|
||||||
{
|
{
|
||||||
m_szModel[0] = '\0';
|
m_szModel[0] = '\0';
|
||||||
|
|
||||||
|
// Resets the kill history for this player
|
||||||
|
for (int i = 0; i < MAX_CLIENTS; i++)
|
||||||
|
{
|
||||||
|
m_iNumKilledByUnanswered[i] = 0;
|
||||||
|
m_bPlayerDominated[i] = false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual bool IsConnected() const = 0;
|
virtual bool IsConnected() const = 0;
|
||||||
@ -106,11 +119,6 @@ public:
|
|||||||
virtual void OnSpawnEquip(bool addDefault = true, bool equipGame = true) = 0;
|
virtual void OnSpawnEquip(bool addDefault = true, bool equipGame = true) = 0;
|
||||||
virtual void SetScoreboardAttributes(CBasePlayer *destination = nullptr) = 0;
|
virtual void SetScoreboardAttributes(CBasePlayer *destination = nullptr) = 0;
|
||||||
|
|
||||||
void ResetVars();
|
|
||||||
|
|
||||||
void OnSpawn();
|
|
||||||
void OnKilled();
|
|
||||||
|
|
||||||
CBasePlayer *BasePlayer() const;
|
CBasePlayer *BasePlayer() const;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
@ -138,6 +146,23 @@ public:
|
|||||||
bool m_bMegaBunnyJumping;
|
bool m_bMegaBunnyJumping;
|
||||||
bool m_bPlantC4Anywhere;
|
bool m_bPlantC4Anywhere;
|
||||||
bool m_bSpawnProtectionEffects;
|
bool m_bSpawnProtectionEffects;
|
||||||
|
double m_flJumpHeight;
|
||||||
|
double m_flLongJumpHeight;
|
||||||
|
double m_flLongJumpForce;
|
||||||
|
double m_flDuckSpeedMultiplier;
|
||||||
|
|
||||||
|
int m_iUserID;
|
||||||
|
struct CDamageRecord_t
|
||||||
|
{
|
||||||
|
float flDamage = 0.0f;
|
||||||
|
float flFlashDurationTime = 0.0f;
|
||||||
|
int userId = -1;
|
||||||
|
};
|
||||||
|
using DamageList_t = CUtlArray<CDamageRecord_t, MAX_CLIENTS>;
|
||||||
|
DamageList_t m_DamageList; // A unified array of recorded damage that includes giver and taker in each entry
|
||||||
|
DamageList_t &GetDamageList() { return m_DamageList; }
|
||||||
|
int m_iNumKilledByUnanswered[MAX_CLIENTS]; // [0-31] how many unanswered kills this player has been dealt by each other player
|
||||||
|
bool m_bPlayerDominated[MAX_CLIENTS]; // [0-31] array of state per other player whether player is dominating other players
|
||||||
};
|
};
|
||||||
|
|
||||||
// Inlines
|
// Inlines
|
||||||
|
@ -39,6 +39,7 @@ public:
|
|||||||
}
|
}
|
||||||
|
|
||||||
virtual void SetItemInfo(ItemInfo *pInfo) = 0;
|
virtual void SetItemInfo(ItemInfo *pInfo) = 0;
|
||||||
|
virtual int GetItemInfo(ItemInfo *pInfo) = 0;
|
||||||
|
|
||||||
CBasePlayerItem *BasePlayerItem() const;
|
CBasePlayerItem *BasePlayerItem() const;
|
||||||
|
|
||||||
|
@ -28,19 +28,33 @@
|
|||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
|
enum SecondaryAtkState : uint8_t
|
||||||
|
{
|
||||||
|
WEAPON_SECONDARY_ATTACK_NONE = 0,
|
||||||
|
WEAPON_SECONDARY_ATTACK_SET,
|
||||||
|
WEAPON_SECONDARY_ATTACK_BLOCK
|
||||||
|
};
|
||||||
|
|
||||||
class CBasePlayerWeapon;
|
class CBasePlayerWeapon;
|
||||||
class CCSPlayerWeapon: public CCSPlayerItem
|
class CCSPlayerWeapon: public CCSPlayerItem
|
||||||
{
|
{
|
||||||
|
DECLARE_CLASS_TYPES(CCSPlayerWeapon, CCSPlayerItem);
|
||||||
public:
|
public:
|
||||||
CCSPlayerWeapon() :
|
CCSPlayerWeapon() :
|
||||||
m_bHasSecondaryAttack(false)
|
m_iStateSecondaryAttack(WEAPON_SECONDARY_ATTACK_NONE)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
virtual BOOL DefaultDeploy(char *szViewModel, char *szWeaponModel, int iAnim, char *szAnimExt, int skiplocal = 0) = 0;
|
||||||
|
virtual int DefaultReload(int iClipSize, int iAnim, float fDelay) = 0;
|
||||||
|
virtual bool DefaultShotgunReload(int iAnim, int iStartAnim, float fDelay, float fStartDelay, const char *pszReloadSound1 = nullptr, const char *pszReloadSound2 = nullptr) = 0;
|
||||||
|
virtual void KickBack(float up_base, float lateral_base, float up_modifier, float lateral_modifier, float up_max, float lateral_max, int direction_change) = 0;
|
||||||
|
virtual void SendWeaponAnim(int iAnim, int skiplocal = 0) = 0;
|
||||||
|
|
||||||
CBasePlayerWeapon *BasePlayerWeapon() const;
|
CBasePlayerWeapon *BasePlayerWeapon() const;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
bool m_bHasSecondaryAttack;
|
SecondaryAtkState m_iStateSecondaryAttack;
|
||||||
float m_flBaseDamage;
|
float m_flBaseDamage;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -614,6 +614,14 @@ typedef IHookChainRegistryClass<void, CBasePlayerWeapon, float, float, float, fl
|
|||||||
typedef IHookChainClass<void, CBasePlayerWeapon, int, int> IReGameHook_CBasePlayerWeapon_SendWeaponAnim;
|
typedef IHookChainClass<void, CBasePlayerWeapon, int, int> IReGameHook_CBasePlayerWeapon_SendWeaponAnim;
|
||||||
typedef IHookChainRegistryClass<void, CBasePlayerWeapon, int, int> IReGameHookRegistry_CBasePlayerWeapon_SendWeaponAnim;
|
typedef IHookChainRegistryClass<void, CBasePlayerWeapon, int, int> IReGameHookRegistry_CBasePlayerWeapon_SendWeaponAnim;
|
||||||
|
|
||||||
|
// CHalfLifeMultiplay::SendDeathMessage hook
|
||||||
|
typedef IHookChain<void, class CBaseEntity *, class CBasePlayer *, class CBasePlayer *, struct entvars_s *, const char *, int, int> IReGameHook_CSGameRules_SendDeathMessage;
|
||||||
|
typedef IHookChainRegistry<void, class CBaseEntity *, class CBasePlayer *, class CBasePlayer *, struct entvars_s *, const char *, int, int> IReGameHookRegistry_CSGameRules_SendDeathMessage;
|
||||||
|
|
||||||
|
// CBasePlayer::PlayerDeathThink hook
|
||||||
|
typedef IHookChainClass<void, class CBasePlayer> IReGameHook_CBasePlayer_PlayerDeathThink;
|
||||||
|
typedef IHookChainRegistryClass<void, class CBasePlayer> IReGameHookRegistry_CBasePlayer_PlayerDeathThink;
|
||||||
|
|
||||||
class IReGameHookchains {
|
class IReGameHookchains {
|
||||||
public:
|
public:
|
||||||
virtual ~IReGameHookchains() {}
|
virtual ~IReGameHookchains() {}
|
||||||
@ -771,6 +779,9 @@ public:
|
|||||||
virtual IReGameHookRegistry_CBasePlayerWeapon_ItemPostFrame *CBasePlayerWeapon_ItemPostFrame() = 0;
|
virtual IReGameHookRegistry_CBasePlayerWeapon_ItemPostFrame *CBasePlayerWeapon_ItemPostFrame() = 0;
|
||||||
virtual IReGameHookRegistry_CBasePlayerWeapon_KickBack *CBasePlayerWeapon_KickBack() = 0;
|
virtual IReGameHookRegistry_CBasePlayerWeapon_KickBack *CBasePlayerWeapon_KickBack() = 0;
|
||||||
virtual IReGameHookRegistry_CBasePlayerWeapon_SendWeaponAnim *CBasePlayerWeapon_SendWeaponAnim() = 0;
|
virtual IReGameHookRegistry_CBasePlayerWeapon_SendWeaponAnim *CBasePlayerWeapon_SendWeaponAnim() = 0;
|
||||||
|
virtual IReGameHookRegistry_CSGameRules_SendDeathMessage *CSGameRules_SendDeathMessage() = 0;
|
||||||
|
|
||||||
|
virtual IReGameHookRegistry_CBasePlayer_PlayerDeathThink *CBasePlayer_PlayerDeathThink() = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct ReGameFuncs_t {
|
struct ReGameFuncs_t {
|
||||||
|
235
reapi/include/cssdk/public/utlarray.h
Normal file
235
reapi/include/cssdk/public/utlarray.h
Normal file
@ -0,0 +1,235 @@
|
|||||||
|
/*
|
||||||
|
*
|
||||||
|
* Copyright (c) 1996-2002, Valve LLC. All rights reserved.
|
||||||
|
*
|
||||||
|
* This product contains software technology licensed from Id
|
||||||
|
* Software, Inc. ("Id Technology"). Id Technology (c) 1996 Id Software, Inc.
|
||||||
|
* All Rights Reserved.
|
||||||
|
*
|
||||||
|
* Use, distribution, and modification of this source code and/or resulting
|
||||||
|
* object code is restricted to non-commercial enhancements to products from
|
||||||
|
* Valve LLC. All other use, distribution, or modification is prohibited
|
||||||
|
* without written permission from Valve LLC.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
// A growable array class that maintains a free list and keeps elements
|
||||||
|
// in the same location
|
||||||
|
#include "tier0/platform.h"
|
||||||
|
#include "tier0/dbg.h"
|
||||||
|
|
||||||
|
#define FOR_EACH_ARRAY(vecName, iteratorName)\
|
||||||
|
for (int iteratorName = 0; (vecName).IsUtlArray && iteratorName < (vecName).Count(); iteratorName++)
|
||||||
|
|
||||||
|
#define FOR_EACH_ARRAY_BACK(vecName, iteratorName)\
|
||||||
|
for (int iteratorName = (vecName).Count() - 1; (vecName).IsUtlArray && iteratorName >= 0; iteratorName--)
|
||||||
|
|
||||||
|
template <class T, size_t MAX_SIZE>
|
||||||
|
class CUtlArray
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
typedef T ElemType_t;
|
||||||
|
enum { IsUtlArray = true }; // Used to match this at compiletime
|
||||||
|
|
||||||
|
CUtlArray();
|
||||||
|
CUtlArray(T *pMemory, size_t count);
|
||||||
|
~CUtlArray();
|
||||||
|
|
||||||
|
CUtlArray<T, MAX_SIZE> &operator=(const CUtlArray<T, MAX_SIZE> &other);
|
||||||
|
CUtlArray(CUtlArray const &vec);
|
||||||
|
|
||||||
|
// element access
|
||||||
|
T &operator[](int i);
|
||||||
|
const T &operator[](int i) const;
|
||||||
|
T &Element(int i);
|
||||||
|
const T &Element(int i) const;
|
||||||
|
T &Random();
|
||||||
|
const T &Random() const;
|
||||||
|
|
||||||
|
T *Base();
|
||||||
|
const T *Base() const;
|
||||||
|
|
||||||
|
// Returns the number of elements in the array, NumAllocated() is included for consistency with UtlVector
|
||||||
|
int Count() const;
|
||||||
|
int NumAllocated() const;
|
||||||
|
|
||||||
|
// Is element index valid?
|
||||||
|
bool IsValidIndex(int i) const;
|
||||||
|
static int InvalidIndex();
|
||||||
|
|
||||||
|
void CopyArray(const T *pArray, size_t count);
|
||||||
|
|
||||||
|
void Clear();
|
||||||
|
void RemoveAll();
|
||||||
|
void Swap(CUtlArray< T, MAX_SIZE> &vec);
|
||||||
|
|
||||||
|
// Finds an element (element needs operator== defined)
|
||||||
|
int Find(const T &src) const;
|
||||||
|
void FillWithValue(const T &src);
|
||||||
|
|
||||||
|
bool HasElement(const T &src) const;
|
||||||
|
|
||||||
|
protected:
|
||||||
|
T m_Memory[MAX_SIZE];
|
||||||
|
};
|
||||||
|
|
||||||
|
// Constructor
|
||||||
|
template <typename T, size_t MAX_SIZE>
|
||||||
|
inline CUtlArray<T, MAX_SIZE>::CUtlArray()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename T, size_t MAX_SIZE>
|
||||||
|
inline CUtlArray<T, MAX_SIZE>::CUtlArray(T *pMemory, size_t count)
|
||||||
|
{
|
||||||
|
CopyArray(pMemory, count);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Destructor
|
||||||
|
template <typename T, size_t MAX_SIZE>
|
||||||
|
inline CUtlArray<T, MAX_SIZE>::~CUtlArray()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename T, size_t MAX_SIZE>
|
||||||
|
inline CUtlArray<T, MAX_SIZE> &CUtlArray<T, MAX_SIZE>::operator=(const CUtlArray<T, MAX_SIZE> &other)
|
||||||
|
{
|
||||||
|
if (this != &other)
|
||||||
|
{
|
||||||
|
for (size_t n = 0; n < MAX_SIZE; n++)
|
||||||
|
m_Memory[n] = other.m_Memory[n];
|
||||||
|
}
|
||||||
|
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename T, size_t MAX_SIZE>
|
||||||
|
inline CUtlArray<T, MAX_SIZE>::CUtlArray(CUtlArray const &vec)
|
||||||
|
{
|
||||||
|
for (size_t n = 0; n < MAX_SIZE; n++)
|
||||||
|
m_Memory[n] = vec.m_Memory[n];
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename T, size_t MAX_SIZE>
|
||||||
|
inline T *CUtlArray<T, MAX_SIZE>::Base()
|
||||||
|
{
|
||||||
|
return &m_Memory[0];
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename T, size_t MAX_SIZE>
|
||||||
|
inline const T *CUtlArray<T, MAX_SIZE>::Base() const
|
||||||
|
{
|
||||||
|
return &m_Memory[0];
|
||||||
|
}
|
||||||
|
|
||||||
|
// Element access
|
||||||
|
template <typename T, size_t MAX_SIZE>
|
||||||
|
inline T &CUtlArray<T, MAX_SIZE>::operator[](int i)
|
||||||
|
{
|
||||||
|
Assert(IsValidIndex(i));
|
||||||
|
return m_Memory[i];
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename T, size_t MAX_SIZE>
|
||||||
|
inline const T &CUtlArray<T, MAX_SIZE>::operator[](int i) const
|
||||||
|
{
|
||||||
|
Assert(IsValidIndex(i));
|
||||||
|
return m_Memory[i];
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename T, size_t MAX_SIZE>
|
||||||
|
inline T &CUtlArray<T, MAX_SIZE>::Element(int i)
|
||||||
|
{
|
||||||
|
Assert(IsValidIndex(i));
|
||||||
|
return m_Memory[i];
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename T, size_t MAX_SIZE>
|
||||||
|
inline const T &CUtlArray<T, MAX_SIZE>::Element(int i) const
|
||||||
|
{
|
||||||
|
Assert(IsValidIndex(i));
|
||||||
|
return m_Memory[i];
|
||||||
|
}
|
||||||
|
|
||||||
|
// Count
|
||||||
|
template <typename T, size_t MAX_SIZE>
|
||||||
|
inline int CUtlArray<T, MAX_SIZE>::Count() const
|
||||||
|
{
|
||||||
|
return (int)MAX_SIZE;
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename T, size_t MAX_SIZE>
|
||||||
|
inline int CUtlArray<T, MAX_SIZE>::NumAllocated() const
|
||||||
|
{
|
||||||
|
return (int)MAX_SIZE;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Is element index valid?
|
||||||
|
template <typename T, size_t MAX_SIZE>
|
||||||
|
inline bool CUtlArray<T, MAX_SIZE>::IsValidIndex(int i) const
|
||||||
|
{
|
||||||
|
return (i >= 0) && (i < MAX_SIZE);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Returns in invalid index
|
||||||
|
template <typename T, size_t MAX_SIZE>
|
||||||
|
inline int CUtlArray<T, MAX_SIZE>::InvalidIndex()
|
||||||
|
{
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename T, size_t MAX_SIZE>
|
||||||
|
void CUtlArray<T, MAX_SIZE>::CopyArray(const T *pArray, size_t count)
|
||||||
|
{
|
||||||
|
Assert(count < MAX_SIZE);
|
||||||
|
|
||||||
|
for (size_t n = 0; n < count; n++)
|
||||||
|
m_Memory[n] = pArray[n];
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename T, size_t MAX_SIZE>
|
||||||
|
void CUtlArray<T, MAX_SIZE>::Clear()
|
||||||
|
{
|
||||||
|
Q_memset(m_Memory, 0, MAX_SIZE * sizeof(T));
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename T, size_t MAX_SIZE>
|
||||||
|
void CUtlArray<T, MAX_SIZE>::RemoveAll()
|
||||||
|
{
|
||||||
|
Clear();
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename T, size_t MAX_SIZE>
|
||||||
|
void CUtlArray<T, MAX_SIZE>::Swap(CUtlArray< T, MAX_SIZE> &vec)
|
||||||
|
{
|
||||||
|
for (size_t n = 0; n < MAX_SIZE; n++)
|
||||||
|
SWAP(m_Memory[n], vec.m_Memory[n]);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Finds an element (element needs operator== defined)
|
||||||
|
template <typename T, size_t MAX_SIZE>
|
||||||
|
int CUtlArray<T, MAX_SIZE>::Find(const T &src) const
|
||||||
|
{
|
||||||
|
for (int i = 0; i < Count(); i++)
|
||||||
|
{
|
||||||
|
if (Element(i) == src)
|
||||||
|
return i;
|
||||||
|
}
|
||||||
|
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename T, size_t MAX_SIZE>
|
||||||
|
void CUtlArray<T, MAX_SIZE>::FillWithValue(const T &src)
|
||||||
|
{
|
||||||
|
for (int i = 0; i < Count(); i++)
|
||||||
|
Element(i) = src;
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename T, size_t MAX_SIZE>
|
||||||
|
bool CUtlArray<T, MAX_SIZE>::HasElement(const T &src) const
|
||||||
|
{
|
||||||
|
return (Find(src) >= 0);
|
||||||
|
}
|
@ -190,6 +190,7 @@
|
|||||||
<ClInclude Include="..\include\cssdk\pm_shared\pm_shared.h" />
|
<ClInclude Include="..\include\cssdk\pm_shared\pm_shared.h" />
|
||||||
<ClInclude Include="..\include\cssdk\public\FileSystem.h" />
|
<ClInclude Include="..\include\cssdk\public\FileSystem.h" />
|
||||||
<ClInclude Include="..\include\cssdk\public\interface.h" />
|
<ClInclude Include="..\include\cssdk\public\interface.h" />
|
||||||
|
<ClInclude Include="..\include\cssdk\public\utlarray.h" />
|
||||||
<ClInclude Include="..\include\cssdk\public\utlmemory.h" />
|
<ClInclude Include="..\include\cssdk\public\utlmemory.h" />
|
||||||
<ClInclude Include="..\include\cssdk\public\utlvector.h" />
|
<ClInclude Include="..\include\cssdk\public\utlvector.h" />
|
||||||
<ClInclude Include="..\include\metamod\dllapi.h" />
|
<ClInclude Include="..\include\metamod\dllapi.h" />
|
||||||
|
@ -582,6 +582,9 @@
|
|||||||
<ClInclude Include="..\include\cssdk\public\interface.h">
|
<ClInclude Include="..\include\cssdk\public\interface.h">
|
||||||
<Filter>include\cssdk\public</Filter>
|
<Filter>include\cssdk\public</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\include\cssdk\public\utlarray.h">
|
||||||
|
<Filter>include\cssdk\public</Filter>
|
||||||
|
</ClInclude>
|
||||||
<ClInclude Include="..\include\cssdk\public\utlmemory.h">
|
<ClInclude Include="..\include\cssdk\public\utlmemory.h">
|
||||||
<Filter>include\cssdk\public</Filter>
|
<Filter>include\cssdk\public</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
@ -112,6 +112,7 @@ inline MType getMemberType(MONSTERSTATE) { return MEMBER_INTEGER; }
|
|||||||
inline MType getMemberType(ArmorType) { return MEMBER_INTEGER; }
|
inline MType getMemberType(ArmorType) { return MEMBER_INTEGER; }
|
||||||
inline MType getMemberType(ArmouryItemPack) { return MEMBER_INTEGER; }
|
inline MType getMemberType(ArmouryItemPack) { return MEMBER_INTEGER; }
|
||||||
inline MType getMemberType(InfoMapBuyParam) { return MEMBER_INTEGER; }
|
inline MType getMemberType(InfoMapBuyParam) { return MEMBER_INTEGER; }
|
||||||
|
inline MType getMemberType(SecondaryAtkState) { return MEMBER_INTEGER; }
|
||||||
inline MType getMemberType(netadrtype_t) { return MEMBER_INTEGER; }
|
inline MType getMemberType(netadrtype_t) { return MEMBER_INTEGER; }
|
||||||
|
|
||||||
inline MType getMemberType(TraceResult) { return MEMBER_TRACERESULT; }
|
inline MType getMemberType(TraceResult) { return MEMBER_TRACERESULT; }
|
||||||
@ -120,6 +121,7 @@ inline MType getMemberType(short) { return MEMBER_SHORT; }
|
|||||||
inline MType getMemberType(unsigned short) { return MEMBER_SHORT; }
|
inline MType getMemberType(unsigned short) { return MEMBER_SHORT; }
|
||||||
|
|
||||||
inline MType getMemberType(bool) { return MEMBER_BOOL; }
|
inline MType getMemberType(bool) { return MEMBER_BOOL; }
|
||||||
|
inline MType getMemberType(bool*) { return MEMBER_BOOL; }
|
||||||
inline MType getMemberType(CUnifiedSignals) { return MEMBER_SIGNALS; }
|
inline MType getMemberType(CUnifiedSignals) { return MEMBER_SIGNALS; }
|
||||||
inline MType getMemberType(RebuyStruct) { return MEBMER_REBUYSTRUCT; }
|
inline MType getMemberType(RebuyStruct) { return MEBMER_REBUYSTRUCT; }
|
||||||
|
|
||||||
@ -764,6 +766,12 @@ member_t memberlist_csplayer[] = {
|
|||||||
CSPL_MEMBERS(m_bMegaBunnyJumping),
|
CSPL_MEMBERS(m_bMegaBunnyJumping),
|
||||||
CSPL_MEMBERS(m_bPlantC4Anywhere),
|
CSPL_MEMBERS(m_bPlantC4Anywhere),
|
||||||
CSPL_MEMBERS(m_bSpawnProtectionEffects),
|
CSPL_MEMBERS(m_bSpawnProtectionEffects),
|
||||||
|
CSPL_MEMBERS(m_flJumpHeight),
|
||||||
|
CSPL_MEMBERS(m_flLongJumpHeight),
|
||||||
|
CSPL_MEMBERS(m_flLongJumpForce),
|
||||||
|
CSPL_MEMBERS(m_flDuckSpeedMultiplier),
|
||||||
|
CSPL_MEMBERS(m_iNumKilledByUnanswered),
|
||||||
|
CSPL_MEMBERS(m_bPlayerDominated),
|
||||||
};
|
};
|
||||||
|
|
||||||
member_t memberlist_baseitem[] = {
|
member_t memberlist_baseitem[] = {
|
||||||
@ -1039,7 +1047,7 @@ member_t memberlist_mapinfo[] = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
member_t memberlist_csplayerweapon[] = {
|
member_t memberlist_csplayerweapon[] = {
|
||||||
CSPLWPN_MEMBERS(bHasSecondaryAttack),
|
CSPLWPN_MEMBERS(iStateSecondaryAttack),
|
||||||
CSPLWPN_MEMBERS(flBaseDamage),
|
CSPLWPN_MEMBERS(flBaseDamage),
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -759,6 +759,12 @@ enum CSPlayer_Members
|
|||||||
m_bMegaBunnyJumping,
|
m_bMegaBunnyJumping,
|
||||||
m_bPlantC4Anywhere,
|
m_bPlantC4Anywhere,
|
||||||
m_bSpawnProtectionEffects,
|
m_bSpawnProtectionEffects,
|
||||||
|
m_flJumpHeight,
|
||||||
|
m_flLongJumpHeight,
|
||||||
|
m_flLongJumpForce,
|
||||||
|
m_flDuckSpeedMultiplier,
|
||||||
|
m_iNumKilledByUnanswered,
|
||||||
|
m_bPlayerDominated,
|
||||||
};
|
};
|
||||||
|
|
||||||
enum CBasePlayerItem_Members
|
enum CBasePlayerItem_Members
|
||||||
@ -1071,7 +1077,7 @@ enum MapInfo_Members
|
|||||||
|
|
||||||
enum CSPlayerWeapon_Members
|
enum CSPlayerWeapon_Members
|
||||||
{
|
{
|
||||||
m_Weapon_bHasSecondaryAttack = BEGIN_MEMBER_REGION(csplayerweapon),
|
m_Weapon_iStateSecondaryAttack = BEGIN_MEMBER_REGION(csplayerweapon),
|
||||||
m_Weapon_flBaseDamage,
|
m_Weapon_flBaseDamage,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user