/// <summary>
 /// Creates and sends an entity with the given information for the server. Never call this on DS instance!
 /// </summary>
 public static void SendMessageToServer(MessageBase message)
 {
     message.Side = MessageSide.ServerSide;
     if (MyAPIGateway.Multiplayer.IsServer)
         message.SenderSteamId = MyAPIGateway.Multiplayer.ServerId;
     if (MyAPIGateway.Session.Player != null)
     {
         message.SenderSteamId = MyAPIGateway.Session.Player.SteamUserId;
         message.SenderDisplayName = MyAPIGateway.Session.Player.DisplayName;
     }
     message.SenderLanguage = (int)MyAPIGateway.Session.Config.Language;
     try
     {
         var xml = MyAPIGateway.Utilities.SerializeToXML<MessageContainer>(new MessageContainer { Content = message });
         byte[] byteData = System.Text.Encoding.Unicode.GetBytes(xml);
         if (byteData.Length <= MAX_MESSAGE_SIZE)
             MyAPIGateway.Multiplayer.SendMessageToServer(EconomyConsts.ConnectionId, byteData);
         else
             SendMessageParts(byteData, MessageSide.ServerSide);
     }
     catch (Exception ex)
     {
         EconomyScript.Instance.ClientLogger.WriteException(ex);
         //TODO: send exception detail to Server.
     }
 }
 public static void SendMessageToAllPlayers(MessageBase messageContainer)
 {
     //MyAPIGateway.Multiplayer.SendMessageToOthers(StandardClientId, System.Text.Encoding.Unicode.GetBytes(ConvertData(content))); <- does not work as expected ... so it doesn't work at all?
     List<IMyPlayer> players = new List<IMyPlayer>();
     MyAPIGateway.Players.GetPlayers(players, p => p != null);
     foreach (IMyPlayer player in players)
         SendMessageToPlayer(player.SteamUserId, messageContainer);
 }
 public static void SendMessageToPlayer(ulong steamId, MessageBase message)
 {
     EconomyScript.Instance.ServerLogger.WriteVerbose("SendMessageToPlayer {0} {1} {2}.", steamId, message.Side, message.GetType().Name);
     message.Side = MessageSide.ClientSide;
     try
     {
         var xml = MyAPIGateway.Utilities.SerializeToXML(new MessageContainer() { Content = message });
         byte[] byteData = System.Text.Encoding.Unicode.GetBytes(xml);
         if (byteData.Length <= MAX_MESSAGE_SIZE)
             MyAPIGateway.Multiplayer.SendMessageTo(EconomyConsts.ConnectionId, byteData, steamId);
         else
             SendMessageParts(byteData, MessageSide.ClientSide, steamId);
     }
     catch (Exception ex)
     {
         EconomyScript.Instance.ClientLogger.WriteException(ex);
         //TODO: send exception detail to Server.
     }
 }
        /// <summary>
        /// Creates and sends an entity with the given information for the server and all players.
        /// </summary>
        /// <param name="message"></param>
        public static void SendMessageToAll(MessageBase message)
        {
            if (MyAPIGateway.Multiplayer.IsServer)
                message.SenderSteamId = MyAPIGateway.Multiplayer.ServerId;
            if (MyAPIGateway.Session.Player != null)
            {
                message.SenderSteamId = MyAPIGateway.Session.Player.SteamUserId;
                message.SenderDisplayName = MyAPIGateway.Session.Player.DisplayName;
            }
            message.SenderLanguage = (int)MyAPIGateway.Session.Config.Language;

            if (!MyAPIGateway.Multiplayer.IsServer)
                SendMessageToServer(message);
            SendMessageToAllPlayers(message);
        }