VoltMod
C++23 framework for CS2 server plugins
Loading...
Searching...
No Matches
Bindings.hpp
Go to the documentation of this file.
1#pragma once
2
7#include <cstdint>
8#include <string>
9#include <vector>
10
11namespace VoltMod
12{
13
14/** Every engine function, slot and offset the framework calls, typed and bound from gamedata. */
16{
17 /** Take every member from @p lookup in one pass, clearing the last result. What did not bind
18 * is listed in @ref Failures. */
20
21 /** `key: reason` for each member the last @ref Bind left unbound. */
22 std::vector<std::string> Failures;
23
24 /** (className, forceEdictIndex). */
25 Fn<CEntityInstance*(const char*, int)> CreateEntityByName;
26 /** keyvalues may be null. */
27 Fn<void(CEntityInstance*, CEntityKeyValues*)> DispatchSpawn;
28 /** (entity, input, activator, caller, variant_t* value). */
29 Fn<void(CEntityInstance*, const char*, CEntityInstance*, CEntityInstance*, void*)> AcceptInput;
30 /** (entity system, target, input, activator, caller, value, delay, nullptr, nullptr). The queue
31 * copies the input and value. */
32 Fn<void(void*, CEntityInstance*, const char*, CEntityInstance*, CEntityInstance*, const void*, float, const void*,
33 const void*)>
35 Fn<void(CEntityInstance*, const char*)> SetModel;
36 /** (entity, soundEvent, pitch, volume, delay). */
37 Fn<void(CEntityInstance*, const char*, int, float, float)> EmitSoundParams;
38 /** (entity, soundEvent). */
39 Fn<void(CEntityInstance*, const char*)> StopSound;
40 /** Returns its result through a hidden pointer, so Entity.cpp declares the prototype. */
42 /** IGameEventListener2* (CPlayerSlot); GameEvents.cpp declares the prototype. */
44 /** CBaseEntity::TakeDamageOld(CTakeDamageInfo*, CTakeDamageResult*); see src/Hooks/DamageLayout.hpp. */
45 Fn<int64_t(CEntityInstance*, void*, void*)> TakeDamage;
46 /** CTakeDamageInfo(info, inflictor, attacker, ability, force, position, damage, type, custom, nullptr). */
47 Fn<void(void*, CEntityInstance*, CEntityInstance*, CEntityInstance*, const Vector*, const Vector*, float, int, int,
48 void*)>
50 /** (CCSGameRules*, delay, CSRoundEndReason, int* team). */
51 Fn<void(void*, float, uint32_t, void*)> TerminateRound;
52 /** (weapon, swapping); a player's own drop. The drop key passes a null weapon: the one in hand. */
53 Fn<bool(EngineWeaponServices*, CEntityInstance*, bool)> DropWeapon;
54
55 /** @defgroup CustomHudSetters CCSCustomHudLayout setters; they take `const CUtlString*`. @{ */
59 Fn<void(void*, int32_t, const CUtlString*, const CUtlString*, const CUtlString*)>
62 /** @} */
63
64 /** Counted in CServerSideClient's message-filter base, which the hook receives. */
66 /** CNetworkGameServer::ReplyConnection, which names the addons a connecting client mounts. */
68
69 /** IGameEventManager2** inside CSource2Server. */
71
72 /** The (bool explode, bool force) overload, counted in CCSPlayerPawn. */
73 VirtualFn<void(CEntityInstance*, bool, bool)> CommitSuicide;
74 VirtualFn<void(CEntityInstance*, int)> ChangeTeam;
75 VirtualFn<void(CEntityInstance*)> Respawn;
76 /** (origin, angles, velocity), each nullable; counted in CCSPlayerPawn. */
77 VirtualFn<void(CEntityInstance*, const Vector*, const QAngle*, const Vector*)> Teleport;
78
79 /** The overloads taking a filter, called on the stateless class table. */
83 /** (CUserCmd*), counted in CCSPlayer_MovementServices. */
85 VirtualFn<void*(void*, const char*)> GiveNamedItem;
86 /** (bool removeSuit). */
88 /** (weapon, 0), counted in CCSPlayer_WeaponServices. */
89 VirtualFn<bool(EngineWeaponServices*, CEntityInstance*, int)> SelectItem;
92
93 /** Inside IGameResourceService. */
95 /** The recipient's slot inside CCheckTransmitInfo. */
98 /** Unaligned inside CServerSideClient. */
100 /** From CServerSideClient to the base FilterMessage runs on. */
102 /** CNetworkGameServer::m_szAddons, a CUtlString. */
104 /** The CSGOUserCmdPB inside CUserCmd. */
106 /** CUserCmd's own counter; live clients leave the protobuf one at zero. */
108};
109
110} // namespace VoltMod
static std::string ReadFile(const std::filesystem::path &path)
Definition Loader.cpp:56
::QAngle QAngle
Definition Math.hpp:14
std::function< GameDataLocation(GameDataSection sections, std::string_view name)> GameDataLookup
std::expected< void, Error > Status
Definition Result.hpp:67
::Vector Vector
Definition Math.hpp:11
VirtualFn< bool(EngineClient *, const CNetMessage *)> ProcessRespondCvarValue
Definition Bindings.hpp:90
Fn< void(CEntityInstance *, const char *)> StopSound
Definition Bindings.hpp:39
Fn< void(CEntityInstance *, const char *, CEntityInstance *, CEntityInstance *, void *)> AcceptInput
Definition Bindings.hpp:29
Fn< void(CEntityInstance *, CEntityKeyValues *)> DispatchSpawn
Definition Bindings.hpp:27
Fn< void(void *, int32_t, bool)> CustomHudSetInputCapture
Definition Bindings.hpp:61
Offset< int32_t > UserCmdNumber
Definition Bindings.hpp:107
VirtualFn< void(void *, bool)> RemoveAllItems
Definition Bindings.hpp:87
Address GameEventManager
Definition Bindings.hpp:70
Offset< void > UserCmdProto
Definition Bindings.hpp:105
Address EmitSoundFilter
Definition Bindings.hpp:41
Fn< void(void *, int32_t, const CUtlString *, const CUtlString *, int32_t)> CustomHudSetHasClassForPlayer
Definition Bindings.hpp:57
VirtualFn< bool(EngineClient *, const CNetMessage *, NetChannelBufType_t)> SendNetMessage
Definition Bindings.hpp:91
Offset< int64_t > ClientSteamId
Definition Bindings.hpp:99
Fn< void(CEntityInstance *, const char *, int, float, float)> EmitSoundParams
Definition Bindings.hpp:37
VirtualFn< void(EngineNavPhysics *, const Ray_t *, const Vector *, const Vector *, CTraceFilter *, CGameTrace *)> NavTraceShape
Definition Bindings.hpp:82
VirtualFn< void(CEntityInstance *, int)> ChangeTeam
Definition Bindings.hpp:74
VirtualFn< bool(INetworkMessageProcessingPreFilter *, const CNetMessage *, INetChannel *)> FilterMessage
Definition Bindings.hpp:65
Fn< void(void *, float, uint32_t, void *)> TerminateRound
Definition Bindings.hpp:51
Status Bind(const GameDataLookup &lookup)
Definition Bindings.cpp:60
std::vector< std::string > Failures
Definition Bindings.hpp:22
Fn< void(void *, CEntityInstance *, const char *, CEntityInstance *, CEntityInstance *, const void *, float, const void *, const void *)> AddEntityIOEvent
Definition Bindings.hpp:34
Offset< uint8_t > VisibilityRecipientSlot
Definition Bindings.hpp:96
VirtualFn< void(CEntityInstance *)> Respawn
Definition Bindings.hpp:75
Fn< void(void *, CEntityInstance *, CEntityInstance *, CEntityInstance *, const Vector *, const Vector *, float, int, int, void *)> BuildDamageInfo
Definition Bindings.hpp:49
Fn< void(void *, const CUtlString *, const CUtlString *, int32_t)> CustomHudSetHasClass
Definition Bindings.hpp:56
VirtualFn< void *(EngineMovementServices *, void *)> RunCommand
Definition Bindings.hpp:84
Fn< CEntityInstance *(const char *, int)> CreateEntityByName
Definition Bindings.hpp:25
Offset< int > ClientSlot
Definition Bindings.hpp:97
Offset< void > ClientMessageFilter
Definition Bindings.hpp:101
Offset< void > ServerAddons
Definition Bindings.hpp:103
VirtualFn< bool(EngineWeaponServices *, CEntityInstance *, int)> SelectItem
Definition Bindings.hpp:89
Fn< int64_t(CEntityInstance *, void *, void *)> TakeDamage
Definition Bindings.hpp:45
Fn< void(CEntityInstance *, const char *)> SetModel
Definition Bindings.hpp:35
Offset< CGameEntitySystem * > GameEntitySystem
Definition Bindings.hpp:94
Fn< void(CNetworkGameServerBase *, EngineClient *)> ReplyConnection
Definition Bindings.hpp:67
Address LegacyGameEventListener
Definition Bindings.hpp:43
VirtualFn< void(CEntityInstance *, bool, bool)> CommitSuicide
Definition Bindings.hpp:73
Fn< bool(EngineWeaponServices *, CEntityInstance *, bool)> DropWeapon
Definition Bindings.hpp:53
Fn< void(void *, const CUtlString *, const CUtlString *, const CUtlString *)> CustomHudSetDialogVariable
Definition Bindings.hpp:58
VirtualFn< bool(EngineNavPhysics *, const Vector *, const Vector *, CTraceFilter *, CGameTrace *)> NavTraceLine
Definition Bindings.hpp:80
VirtualFn< void(CEntityInstance *, const Vector *, const QAngle *, const Vector *)> Teleport
Definition Bindings.hpp:77
VirtualFn< void *(void *, const char *)> GiveNamedItem
Definition Bindings.hpp:85
Fn< void(void *, int32_t, const CUtlString *, const CUtlString *, const CUtlString *)> CustomHudSetDialogVariableForPlayer
Definition Bindings.hpp:60