Example #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);
        }
        public static void SendFactionClientMessage( ulong playerSteamId, string message )
		{
            ServerMessageItem MessageItem = new ServerMessageItem( );
            if ( PluginSettings.Instance.FactionChatPrefix )
                MessageItem.From = "<faction> " + PlayerMap.Instance.GetFastPlayerNameFromSteamId( playerSteamId );
            else
                MessageItem.From = PlayerMap.Instance.GetFastPlayerNameFromSteamId( playerSteamId );

            MessageItem.Message = message;

            string messageString = MyAPIGateway.Utilities.SerializeToXML( MessageItem );
            byte[ ] data = Encoding.Unicode.GetBytes( messageString );

            foreach ( ulong steamId in PlayerManager.Instance.ConnectedPlayers )
			{
				if ( Player.CheckPlayerSameFaction( playerSteamId, steamId ) )
				{
                    if ( ChatManager.EnableData )
                    {
                        SendDataMessage( steamId, DataMessageType.Message, data );
                        ChatManager.Instance.AddChatHistory( new ChatManager.ChatEvent( DateTime.Now, playerSteamId, "{faction message}: " + message ) );
                    }
                    else
                        ChatManager.Instance.SendPrivateChatMessage( steamId, message );
				}
			}
		}
Example #3
0
        public static void SendPublicInformation(string infoText)
        {
            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)
            {
                BroadcastDataMessage(DataMessageType.Message, data);
            }
            else
            {
                ChatManager.Instance.SendPublicChatMessage(infoText);
            }

            ChatManager.Instance.AddChatHistory(new ChatManager.ChatEvent(DateTime.Now, 0, infoText));
        }
Example #4
0
        public static void SendFactionClientMessage(ulong playerSteamId, string message)
        {
            ServerMessageItem MessageItem = new ServerMessageItem( );

            if (PluginSettings.Instance.FactionChatPrefix)
            {
                MessageItem.From = "<faction> " + PlayerMap.Instance.GetFastPlayerNameFromSteamId(playerSteamId);
            }
            else
            {
                MessageItem.From = PlayerMap.Instance.GetFastPlayerNameFromSteamId(playerSteamId);
            }

            MessageItem.Message = message;

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

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

            foreach (ulong steamId in PlayerManager.Instance.ConnectedPlayers)
            {
                if (Player.CheckPlayerSameFaction(playerSteamId, steamId))
                {
                    if (ChatManager.EnableData)
                    {
                        SendDataMessage(steamId, DataMessageType.Message, data);
                        ChatManager.Instance.AddChatHistory(new ChatManager.ChatEvent(DateTime.Now, playerSteamId, "{faction message}: " + message));
                    }
                    else
                    {
                        ChatManager.Instance.SendPrivateChatMessage(steamId, message);
                    }
                }
            }
        }
		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 );
        }
Example #6
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);
        }
Example #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 static void SendPublicInformation( string infoText )
		{
			if ( infoText == "" )
				return;

            ServerMessageItem MessageItem = new ServerMessageItem( );
                MessageItem.From = PluginSettings.Instance.ServerChatName;
                MessageItem.Message = infoText;

            string messageString = MyAPIGateway.Utilities.SerializeToXML( MessageItem );
            byte[ ] data = Encoding.Unicode.GetBytes( messageString );

            if ( ChatManager.EnableData )
            {
                BroadcastDataMessage( DataMessageType.Message, data );
            }
            else
                ChatManager.Instance.SendPublicChatMessage( infoText );

                ChatManager.Instance.AddChatHistory( new ChatManager.ChatEvent( DateTime.Now, 0, infoText ) );
        }
        public void SendDataMessage( string message, ulong userId = 0 )
        {
            ServerMessageItem item = new ServerMessageItem( );
            item.From = Server.Instance.Config.ServerChatName;
            item.Message = message;

            string messageString = MyAPIGateway.Utilities.SerializeToXML( item );
            byte[ ] data = Encoding.UTF8.GetBytes( messageString );
            long msgId = 5003;

            //hash a random long with the current time and outgoing data to make a decent quality guid for each message
            byte[] randLong = new byte[sizeof(long)];
            _random.NextBytes(randLong);
            long uniqueId = 23;
            uniqueId = uniqueId * 37 + BitConverter.ToInt64(randLong, 0);
            uniqueId = uniqueId * 37 + DateTime.Now.GetHashCode();
            uniqueId = uniqueId * 37 + data.GetHashCode();

            //this block adds the length and message id to the outside of the message packet
            //so the mod can quickly determine where the message should go
            byte[] newData = new byte[sizeof(long)*2 + data.Length];
            BitConverter.GetBytes( uniqueId ).CopyTo( newData, 0 );
            BitConverter.GetBytes(msgId).CopyTo(newData, sizeof(long));
            data.CopyTo(newData, sizeof(long)*2);

            SandboxGameAssemblyWrapper.Instance.GameAction(() =>
            {
                if ( userId == 0 )
                    MyAPIGateway.Multiplayer.SendMessageToOthers( 9000, newData );
                else
                {
                    if ( newData.Length > 4096 )
                    {
                        SendMessagePartsTo( userId, newData );
                        return;
                    }
                    MyAPIGateway.Multiplayer.SendMessageTo( 9000, newData, userId );
                }
            });
        }
Example #10
0
        protected void SendDataMessage( string message, ulong userId = 0 )
        {
            ServerMessageItem item = new ServerMessageItem( );
            item.From = Server.Instance.Config.ServerChatName;
            item.Message = message;

            string messageString = MyAPIGateway.Utilities.SerializeToXML( item );
            /*
            byte[ ] data = new byte[messageString.Length];

            for ( int r = 0; r < messageString.Length; r++ )
            {
                data[r] = (byte)messageString[r];
            }
            */
            byte[ ] data = Encoding.Unicode.GetBytes( messageString );
            long msgId = 5003;

            //this block adds the length and message id to the outside of the message packet
            //so the mod can quickly determine where the message should go
            string msgIdString = msgId.ToString( );
            byte[ ] newData = new byte[data.Length + msgIdString.Length + 1];
            newData[0] = (byte)msgIdString.Length;
            for ( int r = 0; r < msgIdString.Length; r++ )
                newData[r + 1] = (byte)msgIdString[r];

            Buffer.BlockCopy( data, 0, newData, msgIdString.Length + 1, data.Length );

            if ( userId == 0 )
                MyAPIGateway.Multiplayer.SendMessageToOthers( 9000, newData );
            else
                MyAPIGateway.Multiplayer.SendMessageTo( 9000, newData, userId );
        }