Example #1
0
        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));
        }
Example #2
0
        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);
            }
        }
Example #3
0
        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);
            }
        }
Example #4
0
 protected abstract bool SendPackMsgTranslate(GameMsg_SvChat msg,
                                              MsgFlags flags, int clientId);