Exemple #1
0
        public static void SendPrivateInformation(ulong playerId, string infoText, string from = null)
        {
            if (infoText == "")
            {
                return;
            }

            var MessageItem = new ServerMessageItem();

            MessageItem.From = PluginSettings.Instance.ServerChatName;

            MessageItem.Message = infoText;

            string messageString = MyAPIGateway.Utilities.SerializeToXML(MessageItem);

            byte[] data = Encoding.UTF8.GetBytes(messageString);

            if (ChatManager.EnableData)
            {
                SendDataMessage(playerId, DataMessageType.Message, data);
            }
            else
            {
                ChatManager.Instance.SendPrivateChatMessage(playerId, infoText);
            }

            var chatItem = new ChatManager.ChatEvent();

            chatItem.Timestamp    = DateTime.Now;
            chatItem.RemoteUserId = from == null ? 0 : PlayerMap.Instance.GetSteamIdFromPlayerName(from);
            chatItem.Message      = infoText;
            ChatManager.Instance.AddChatHistory(chatItem);
        }
        static void ChatCommand_GUI(ChatManager.ChatEvent chatEvent)
        {
            Thread uiThread = new Thread(new ThreadStart(StartGUI));

            uiThread.SetApartmentState(ApartmentState.STA);
            uiThread.Start();
        }
        /// <summary>
        ///     Adds incoming chat event into all players' global chat history.
        /// </summary>
        /// <param name="obj"></param>
        public static void AddChat(ChatManager.ChatEvent obj)
        {
            if (!_init)
            {
                _init = true;
                Init();
            }
            Wrapper.GameAction(() =>
            {
                try
                {
                    var player      = MySession.Static.Players.GetAllPlayers().First(x => x.SteamId == obj.SourceUserId);
                    var characterId = MySession.Static.Players.ControlledEntities.First(x => x.Value.SteamId == obj.SourceUserId).Key;
                    var character   = MyEntities.GetEntityById(characterId) as MyCharacter;
                    if (character == null)
                    {
                        //okay, the sending player doesn't have a character. just find any character
                        character = MyEntities.GetEntities().FirstOrDefault(x => (x as MyCharacter) != null) as MyCharacter;

                        if (character == null)
                        {
                            //we gave it our best shot :(
                            return;
                        }
                    }

                    character.SendNewGlobalMessage(player, obj.Message);
                }
                catch (Exception ex)
                {
                    Essentials.Log.Error(ex, "Fail ChatHistory");
                }
            });
        }
Exemple #4
0
        public static void SendPrivateInformation(ulong playerId, string infoText)
        {
            if (infoText == "")
            {
                return;
            }

            var messageItem = new ServerMessageItem
            {
                From    = PluginSettings.Instance.ServerChatName,
                Message = infoText
            };

            var messageString = MyAPIGateway.Utilities.SerializeToXML(messageItem);
            var data          = Encoding.UTF8.GetBytes(messageString);

            if (ChatManager.EnableData)
            {
                SendDataMessage(playerId, DataMessageType.Message, data);
            }
            else
            {
                ChatManager.Instance.SendPrivateChatMessage(playerId, infoText);
            }

            var chatItem = new ChatManager.ChatEvent
            {
                Timestamp    = DateTime.Now,
                RemoteUserId = 0,
                Message      = infoText
            };

            ChatManager.Instance.AddChatHistory(chatItem);
        }
        /// <summary>
        /// Raised when a chat messages are received.
        /// NOTE: This is raised on a different thread
        /// </summary>
        /// <param name="obj"></param>
        public void OnChatReceived(ChatManager.ChatEvent obj)
        {
            if (obj.message[0] != '/')
            {
                return;
            }

            HandleChatMessage(obj.sourceUserId, obj.message);
        }
Exemple #6
0
        public void OnChatReceived(ChatManager.ChatEvent obj)
        {
            if (obj.SourceUserId == 0)
            {
                return;
            }


            if (obj.Message[0] == '/')
            {
            }
        }
Exemple #7
0
        public static void SendPrivateInformation(ulong playerId, string infoText, string from = null)
        {
            if (infoText == "")
            {
                return;
            }

            ServerMessageItem MessageItem = new ServerMessageItem( );

            if (from == null)
            {
                MessageItem.From = PluginSettings.Instance.ServerChatName;
            }

            else if (PluginSettings.Instance.WhisperChatPrefix)
            {
                MessageItem.From = "<whisper> " + from;
            }

            else
            {
                MessageItem.From = from;
            }

            MessageItem.Message = infoText;

            string messageString = MyAPIGateway.Utilities.SerializeToXML(MessageItem);

            byte[] data = Encoding.Unicode.GetBytes(messageString);

            if (ChatManager.EnableData)
            {
                SendDataMessage(playerId, DataMessageType.Message, data);
            }
            else
            {
                ChatManager.Instance.SendPrivateChatMessage(playerId, infoText);
            }

            ChatManager.ChatEvent chatItem = new ChatManager.ChatEvent( );
            chatItem.Timestamp    = DateTime.Now;
            chatItem.RemoteUserId = (from == null ? 0 : PlayerMap.Instance.GetSteamIdFromPlayerName(from));
            chatItem.Message      = (from == null ? infoText : (string.Format("{whisper to {0}}: {1}", PlayerMap.Instance.GetFastPlayerNameFromSteamId(playerId), infoText)));
            ChatManager.Instance.AddChatHistory(chatItem);
        }
        public GetChatMessagesFromResult GetChatMessagesFrom(int id, bool ignoreServer)
        {
            if (id < 0)
            {
                return(new GetChatMessagesFromResult("Id can't be smaller than 0", true));
            }
            if (ChatManager.Instance.ChatHistory.Count < id)
            {
                return(new GetChatMessagesFromResult("Id is greater than last message Id", true));
            }
            if (ChatManager.Instance.ChatHistory.Count == id)
            {
                return(new GetChatMessagesFromResult("No new messages", false));
            }
            var messageList = new List <ChatMessage>();

            for (int i = id; i < ChatManager.Instance.ChatHistory.Count; i++)
            {
                ChatManager.ChatEvent curChatMessage = ChatManager.Instance.ChatHistory[i];
                ulong steamID = curChatMessage.SourceUserId;

                string name;
                if (curChatMessage.SourceUserId == 0)
                {
                    if (ignoreServer)
                    {
                        continue;
                    }
                    name = "Server";
                }
                else
                {
                    name = PlayerMap.Instance.GetPlayerNameFromSteamId(steamID);
                }

                string message = curChatMessage.Message;

                messageList.Add(new ChatMessage(i, steamID, name, message));
            }
            return(new GetChatMessagesFromResult("", false, messageList));
        }
        public static void SendPrivateInformation(ulong playerId, string infoText, string from = null)
        {
            if (string.IsNullOrEmpty(infoText))
            {
                return;
            }

            ulong steamId = from == null ? 0 : PlayerMap.Instance.GetSteamIdFromPlayerName(from);

            if (from == null)
            {
                from = PluginSettings.Instance.ServerChatName;
            }
            else if (PluginSettings.Instance.WhisperChatPrefix)
            {
                from = "<whisper> " + from;
            }

            ScriptedChatMsg msg = new ScriptedChatMsg
            {
                Author = from,
                Font   = MyFontEnum.Red,
                Text   = infoText,
                Target = PlayerMap.Instance.GetFastPlayerIdFromSteamId(playerId),
            };

            if (msg.Target != 0)
            {
                var messageMethod = typeof(MyMultiplayerBase).GetMethod("OnScriptedChatMessageRecieved", BindingFlags.NonPublic | BindingFlags.Static);
                ServerNetworkManager.Instance.RaiseStaticEvent(messageMethod, msg);
                ChatManager.Instance.ScanGPSAndAdd(infoText, msg.Target);
            }

            ChatManager.ChatEvent chatItem = new ChatManager.ChatEvent( );
            chatItem.Timestamp    = DateTime.Now;
            chatItem.RemoteUserId = steamId;
            chatItem.Message      = (from == null ? infoText : ($"{{whisper}} to {PlayerMap.Instance.GetFastPlayerNameFromSteamId( playerId )}: {infoText}"));
            ChatManager.Instance.AddChatHistory(chatItem);
        }
Exemple #10
0
 public void OnChatSent(ChatManager.ChatEvent obj)
 {
 }