summaryrefslogtreecommitdiff
path: root/gmod/c_base_weapon.hpp
blob: 76884c82ef70d7a40d1266805557a4f76fec25d8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#pragma once
#include "util.hpp"
#include "IClientEntityList.hpp"
#include "netvars.hpp"
#include "pattern.hpp"



class c_base_weapon {
public:
	NETVAR( m_iClip1, "m_iClip1", "DT_BaseCombatWeapon", 0, int );
	NETVAR( m_flNextPrimaryAttack, "m_flNextPrimaryAttack", "DT_BaseCombatWeapon", 0, float );
	NETVAR( m_hOwner, "m_hOwner", "DT_BaseCombatWeapon", 0, uint32_t );
	NETVAR( m_nModelIndex, "m_nModelIndex", "DT_BaseEntity", 0, int );

	__forceinline IClientEntity* ce( ) {
		return reinterpret_cast< IClientEntity* >( this );
	}

	__forceinline operator IClientEntity*( ) {
		return reinterpret_cast< IClientEntity* >( this );
	}

	template < typename t >
	__forceinline t& get( std::ptrdiff_t offset ) {
		return *reinterpret_cast< t* >( uintptr_t( this ) + offset );
	}

	int get_max_clip1( ) {
		return util::get_vfunc< 355, int >( this );
	}
	
	const char* get_class_name( ) {
		return util::get_vfunc< 366, const char* >( this );
	}

	const char* get_print_name( ) {
		return util::get_vfunc< 367, const char* >( this );
	}

	void* get_wpn_data( );

	char get_hud_icon( );

	bool is_cw20( );
	bool is_fas2( );
	float get_custom_cone( );
};