VoltMod
C++23 framework for CS2 server plugins
Loading...
Searching...
No Matches
RecipientFilter.hpp
Go to the documentation of this file.
1#pragma once
2
3#include <irecipientfilter.h>
4
5namespace VoltMod
6{
7
8/**
9 * @brief Routes a user message to a single player slot.
10 *
11 * IGameEventSystem exposes two PostEventAbstract overloads; the IRecipientFilter form is the
12 * reliable one. The raw client-bitmask overload silently dropped server-originated messages on
13 * current CS2 builds, so pass one of these filters instead.
14 */
15class SingleRecipientFilter : public IRecipientFilter
16{
17public:
19 {
20 if (slot >= 0 && slot < ABSOLUTE_PLAYER_LIMIT)
21 {
22 _recipients.Set(slot);
23 }
24 }
25
27 bool IsInitMessage() const override { return false; }
28 const CPlayerBitVec& GetRecipients() const override { return _recipients; }
29 CPlayerSlot GetPredictedPlayerSlot() const override { return CPlayerSlot(-1); }
30
31private:
32 CPlayerBitVec _recipients;
33};
34
35/**
36 * @brief Routes a user message or filtered sound to a chosen set of player slots.
37 * Starts empty; callers add each recipient (e.g. every connected slot for a broadcast).
38 */
39class MultiRecipientFilter : public IRecipientFilter
40{
41public:
43
45 {
46 if (slot >= 0 && slot < ABSOLUTE_PLAYER_LIMIT)
47 {
48 _recipients.Set(slot);
49 }
50 }
51
53 bool IsInitMessage() const override { return false; }
54 const CPlayerBitVec& GetRecipients() const override { return _recipients; }
55 CPlayerSlot GetPredictedPlayerSlot() const override { return CPlayerSlot(-1); }
56
57private:
58 CPlayerBitVec _recipients;
59};
60
61} // namespace VoltMod
Routes a user message or filtered sound to a chosen set of player slots. Starts empty; callers add ea...
CPlayerSlot GetPredictedPlayerSlot() const override
const CPlayerBitVec & GetRecipients() const override
bool IsInitMessage() const override
NetChannelBufType_t GetNetworkBufType() const override
Routes a user message to a single player slot.
const CPlayerBitVec & GetRecipients() const override
CPlayerSlot GetPredictedPlayerSlot() const override
NetChannelBufType_t GetNetworkBufType() const override
bool IsInitMessage() const override
static std::string ReadFile(const std::filesystem::path &path)
Definition Loader.cpp:56