private void HandleClientActions(PluginReaction[] actions) { if (actions == null) throw new ArgumentNullException("PluginReaction[] actions", "Looks like the server didn't create an empty PluginReaction array"); foreach (var a in actions) { if (string.IsNullOrEmpty(a.Text)) a.Text = ""; if (a.Delay == 0) { ExecuteAction(a); } else { ThreadPool.QueueUserWorkItem(o => { Thread.Sleep(a.Delay); ExecuteAction(a); }); } } }
private void ExecuteAction(PluginReaction a) { if (a == null) { return; } LastBackendActivity = DateTime.Now; try { PluginManager.Log("Action for car " + a.CarId + ": " + a.Reaction + " " + a.Text); switch (a.Reaction) { case PluginReaction.ReactionType.None: break; case PluginReaction.ReactionType.Whisper: PluginManager.SendChatMessage(a.CarId, a.Text); break; case PluginReaction.ReactionType.Broadcast: PluginManager.BroadcastChatMessage(a.Text); break; case PluginReaction.ReactionType.Ballast: break; case PluginReaction.ReactionType.Pit: break; case PluginReaction.ReactionType.Kick: { // To be 100% sure we kick the right person we'll have to compare the steam id DriverInfo c; if (this.PluginManager.TryGetDriverInfo(a.CarId, out c)) { if (c.IsConnected && c.DriverGuid == a.SteamId) { PluginManager.BroadcastChatMessage("" + c.DriverName + " has been kicked by minorating.com"); PluginManager.RequestKickDriverById(a.CarId); } } } break; case PluginReaction.ReactionType.Ban: break; case PluginReaction.ReactionType.NextSession: PluginManager.NextSession(); break; case PluginReaction.ReactionType.RestartSession: PluginManager.RestartSession(); break; case PluginReaction.ReactionType.AdminCmd: PluginManager.AdminCommand(a.Text); break; default: break; } } catch (Exception ex) { Console.WriteLine("Execute action: Error for car " + a.CarId + "/" + a.Text + ": " + ex.Message); } }
private void ExecuteAction(PluginReaction a) { try { // DEBUG TIME /* if(a.SteamId != "76561198021090310") { if (string.IsNullOrEmpty(a.SteamId)) Console.WriteLine("No steam Id for action with text: " + a.Text); return; }*/ PluginManager.Log("Action for car " + a.CarId + ": " + a.Reaction + " " + a.Text); if (a.Reaction == PluginReaction.ReactionType.Whisper) PluginManager.SendChatMessage(a.CarId, a.Text); else if (a.Reaction == PluginReaction.ReactionType.Broadcast) PluginManager.BroadcastChatMessage(a.Text); else if (a.Reaction == PluginReaction.ReactionType.Kick) { // To be 100% sure we kick the right person we'll have to compare the steam id DriverInfo c; if (this.PluginManager.TryGetDriverInfo(a.CarId, out c)) if (c.IsConnected && c.DriverGuid == a.SteamId) { PluginManager.BroadcastChatMessage("" + c.DriverName + " has been kicked by minorating.com"); PluginManager.RequestKickDriverById(a.CarId); } } } catch (Exception ex) { Console.WriteLine("Execute action: Error for car " + a.CarId + "/" + a.Text + ": " + ex.Message); } }