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 ); } } }
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)); }
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 ); }
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); }
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 ); } }); }
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 ); }