protected override bool SendPackMsgTranslate(GameMsg_SvChat msg, MsgFlags flags, int clientId) { var copy = new GameMsg_SvChat { ClientId = msg.ClientId, Message = msg.Message, IsTeam = msg.IsTeam }; if (copy.ClientId >= 0 && !Translate(ref copy.ClientId, clientId)) { copy.Message = $"{GetClientName(copy.ClientId)}: {copy.Message}"; copy.ClientId = VANILLA_MAX_CLIENTS - 1; } return(SendPackMsgOne(copy, flags, clientId)); }
public override void SendChat(int chatterClientId, bool isTeamChat, string msg) { string debug; if (chatterClientId >= 0 && chatterClientId < Players.Length) { debug = $"{chatterClientId}:{Players[chatterClientId].Name} {msg}"; } else { debug = $"*** {msg}"; } Console.Print(OutputLevel.ADDINFO, isTeamChat ? "teamchat" : "chat", debug); if (isTeamChat) { var p = new GameMsg_SvChat { IsTeam = true, ClientId = chatterClientId, Message = msg }; // pack one for the recording only Server.SendPackMsg(p, MsgFlags.VITAL | MsgFlags.NOSEND, -1); for (var i = 0; i < Players.Length; i++) { if (Players[i] != null && Players[i].Team == Players[chatterClientId].Team) { Server.SendPackMsg(p, MsgFlags.VITAL | MsgFlags.NORECORD, i); } } } else { Server.SendPackMsg(new GameMsg_SvChat { ClientId = chatterClientId, Message = msg, IsTeam = false }, MsgFlags.VITAL, -1); } }
public override void SendChat(int from, ChatMode mode, int target, string message) { if (mode == ChatMode.None) { return; } var log = from < 0 ? $"*** {message}" : $"{@from}:{Server.ClientName(@from)}: {message}"; Console.Print(OutputLevel.AddInfo, mode.ToString(), log); var msg = new GameMsg_SvChat() { ChatMode = mode, ClientId = from, TargetId = -1, Message = message, }; if (mode == ChatMode.All) { Server.SendPackMsg(msg, MsgFlags.Vital, -1); } else if (mode == ChatMode.Team) { Server.SendPackMsg(msg, MsgFlags.Vital | MsgFlags.NoSend, -1); var team = Players[from].Team; for (var i = 0; i < Players.Length; i++) { if (Players[i] != null && Players[i].Team == team) { Server.SendPackMsg(msg, MsgFlags.Vital | MsgFlags.NoRecord, i); } } } else { msg.TargetId = target; Server.SendPackMsg(msg, MsgFlags.Vital, from); Server.SendPackMsg(msg, MsgFlags.Vital, target); } }
protected abstract bool SendPackMsgTranslate(GameMsg_SvChat msg, MsgFlags flags, int clientId);