Skip to content

Commit bcfb8a4

Browse files
committed
fix(events): FireEventToClient not having data set
1 parent a154075 commit bcfb8a4

File tree

1 file changed

+7
-0
lines changed

1 file changed

+7
-0
lines changed

src/scripting/engine/events.cpp

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -174,15 +174,22 @@ LoadScriptingComponent(events, [](PluginObject plugin, EContext* ctx) -> void {
174174

175175
ADD_CLASS_FUNCTION("Event", "FireEventToClient", [](FunctionContext* context, ClassData* data) -> void {
176176
if (!data->HasData("event_data")) return;
177+
if (!data->GetDataOr<IGameEvent*>("event_data", nullptr)) return;
177178

178179
int slot = context->GetArgumentOr<int>(0, -1);
179180
if (slot < 0 || slot >= GetMaxGameClients()) return;
180181

181182
IGameEventListener2* playerListener = g_GameData.FetchSignature<GetLegacyGameEventListener>("LegacyGameEventListener")(slot);
183+
if (!playerListener) {
184+
ReportPreventionIncident("Fire Event", string_format("Tried to fire event '%s' but the client isn't having a listener.", data->GetData<IGameEvent*>("event_data")->GetName()));
185+
return;
186+
}
187+
182188
if (!g_gameEventManager->FindListener(playerListener, data->GetData<IGameEvent*>("event_data")->GetName())) {
183189
ReportPreventionIncident("Fire Event", string_format("Tried to fire event '%s' but the client isn't listening to this event.", data->GetData<IGameEvent*>("event_data")->GetName()));
184190
return;
185191
}
192+
186193
playerListener->FireGameEvent(data->GetData<IGameEvent*>("event_data"));
187194
});
188195

0 commit comments

Comments
 (0)