|
@@ -13,7 +13,7 @@
|
|
|
|
|
|
#pragma newdecls required
|
|
|
|
|
|
-#define PLUGIN_VERSION "0.1.4"
|
|
|
+#define PLUGIN_VERSION "0.2.0"
|
|
|
public Plugin myinfo = {
|
|
|
name = "[CSRD] Simple Chat Processor",
|
|
|
author = "nosoop (based off of Simple Plugins' implementation)",
|
|
@@ -63,6 +63,8 @@ public void OnPluginStart() {
|
|
|
OnClientPutInServer(i);
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ HookEvent("player_say", OnPlayerSayPost, EventHookMode_Post);
|
|
|
}
|
|
|
|
|
|
public void OnClientPutInServer(int client) {
|
|
@@ -149,11 +151,20 @@ Action OnSayText2(UserMsg id, Handle buffer, const int[] clients, int nClients,
|
|
|
return Plugin_Handled;
|
|
|
}
|
|
|
|
|
|
-public void OnClientThinkPost(int author) {
|
|
|
+void OnPlayerSayPost(Event event, const char[] name, bool dontBroadcast) {
|
|
|
+ int client = GetClientOfUserId(event.GetInt("userid"));
|
|
|
+ FlushQueuedMessages(client);
|
|
|
+}
|
|
|
+
|
|
|
+void OnClientThinkPost(int client) {
|
|
|
+ FlushQueuedMessages(client);
|
|
|
+}
|
|
|
+
|
|
|
+void FlushQueuedMessages(int author) {
|
|
|
/**
|
|
|
* Iterate through all queued messages from OnSayText2
|
|
|
*/
|
|
|
- if (g_QueuedMessages[author].Size == 0) {
|
|
|
+ if (!g_QueuedMessages[author] || g_QueuedMessages[author].Size == 0) {
|
|
|
return;
|
|
|
}
|
|
|
StringMapSnapshot messages = g_QueuedMessages[author].Snapshot();
|
|
@@ -194,6 +205,9 @@ public void OnClientThinkPost(int author) {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ // since it's not commented on in the SDK, we can only speculate on why the
|
|
|
+ // developers decided to send SayText2 messages individually
|
|
|
+ // probably cheat clients?
|
|
|
SayText(author, clients, nClients, localizationToken, name, message);
|
|
|
|
|
|
ForwardOnChatMessagePost(author, clientList, name, message);
|