Skip to content

Commit c5bd30b

Browse files
committed
update(core): SendMsg method
1 parent 3b04610 commit c5bd30b

File tree

5 files changed

+21
-11
lines changed

5 files changed

+21
-11
lines changed

plugin_files/gamedata/signatures.json

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,4 @@
11
{
2-
"ClientPrint": {
3-
"lib": "server",
4-
"windows": "48 85 C9 0F 84 2A 2A 2A 2A 48 89 5C 24 2A 55",
5-
"linux": "55 48 89 E5 41 57 49 89 CF 41 56 49 89 D6 41 55 41 89 F5 41 54 4C 8D A5 A0 FE FF FF"
6-
},
72
"ServerMovementUnlock": {
83
"lib": "server",
94
"windows": "76 ? F2 0F 10 57 ? 0F 28 ? F3 0F ? ? 0F 28 ?",

src/player/Player.cpp

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -560,7 +560,9 @@ void Player::SetClientConvar(std::string cmd, std::string val)
560560
cvar->set_value(val.c_str());
561561

562562
CSingleRecipientFilter filter(this->GetSlot().Get());
563-
g_pGameEventSystem->PostEventAbstract(0, false, &filter, netmsg, msg, 0);
563+
g_pGameEventSystem->PostEventAbstract(-1, false, &filter, netmsg, msg, 0);
564+
565+
delete msg;
564566
}
565567

566568
std::any Player::GetInternalVar(std::string name)

src/plugins/core/scripting/usermessage.cpp

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,7 @@ PluginUserMessage::PluginUserMessage(INetworkMessageInternal* msg, NetMessageInf
9898

9999
PluginUserMessage::~PluginUserMessage()
100100
{
101+
if(this->msgBuffer) delete this->msgBuffer;
101102
}
102103

103104
bool PluginUserMessage::IsValidMessage()
@@ -839,7 +840,7 @@ void PluginUserMessage::SendToPlayer(int playerId)
839840
return;
840841

841842
CSingleRecipientFilter filter(playerId);
842-
g_pGameEventSystem->PostEventAbstract(0, false, &filter, this->internalMsg, this->msgBuffer, 0);
843+
g_pGameEventSystem->PostEventAbstract(-1, false, &filter, this->internalMsg, this->msgBuffer, 0);
843844
}
844845
void PluginUserMessage::SendToAllPlayers()
845846
{
@@ -850,6 +851,6 @@ void PluginUserMessage::SendToAllPlayers()
850851
return;
851852

852853
CBroadcastRecipientFilter* filter = new CBroadcastRecipientFilter;
853-
g_pGameEventSystem->PostEventAbstract(0, false, filter, this->internalMsg, this->msgBuffer, 0);
854+
g_pGameEventSystem->PostEventAbstract(-1, false, filter, this->internalMsg, this->msgBuffer, 0);
854855
delete filter;
855856
}

src/sdk/entity/CBaseEntity.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -139,6 +139,7 @@ class CBaseEntity : public CEntityInstance
139139
SCHEMA_FIELD_OFFSET(float, m_flGravityScale, 0);
140140

141141
int EntityIndex() { return this->m_pEntity->GetRefEHandle().GetEntryIndex(); }
142+
int entindex() { return m_pEntity->m_EHandle.GetEntryIndex(); }
142143

143144
void Teleport(Vector* position, QAngle* angles, Vector* velocity)
144145
{

src/sdk/entity/CBasePlayerController.h

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@
33
#include "ehandle.h"
44
#include "CBaseEntity.h"
55
#include "CCSPlayerPawn.h"
6+
#include "CRecipientFilters.h"
7+
#include "usermessages.pb.h"
68

79
enum class CPlayerConnectedState : uint32_t
810
{
@@ -17,8 +19,6 @@ enum class CPlayerConnectedState : uint32_t
1719

1820
class CBasePlayerController;
1921

20-
typedef void (*ClientPrint)(CBasePlayerController*, int, const char*, const char*, const char*, const char*, const char*);
21-
2222
class CBasePlayerController : public CBaseEntity
2323
{
2424
public:
@@ -31,9 +31,20 @@ class CBasePlayerController : public CBaseEntity
3131
SCHEMA_FIELD_OFFSET(uint32_t, m_iDesiredFOV, 0);
3232
SCHEMA_FIELD_OFFSET(bool, m_bIsHLTV, 0);
3333

34+
int GetPlayerSlot() { return entindex() - 1; }
35+
3436
void SendMsg(int destination, const char* message)
3537
{
36-
g_Signatures->FetchSignature<ClientPrint>("ClientPrint")(this, destination, message, nullptr, nullptr, nullptr, nullptr);
38+
INetworkMessageInternal* pNetMsg = g_pNetworkMessages->FindNetworkMessagePartial("TextMsg");
39+
auto data = pNetMsg->AllocateMessage()->ToPB<CUserMessageTextMsg>();
40+
41+
data->set_dest(destination);
42+
data->add_param(message);
43+
44+
CSingleRecipientFilter filter(this->GetPlayerSlot());
45+
g_pGameEventSystem->PostEventAbstract(-1, false, &filter, pNetMsg, data, 0);
46+
47+
delete data;
3748
}
3849

3950
void SetPawn(CCSPlayerPawn* pawn)

0 commit comments

Comments
 (0)