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