private static void OnPlayerMessageRequest(MySyncCharacter sync, ref SendPlayerMessageMsg msg, MyNetworkClient sender) { //Ignore messages that have improper lengths if (msg.Text.Length == 0 || msg.Text.Length > MyChatConstants.MAX_CHAT_STRING_LENGTH) { return; } var receiverId = MySession.Static.Players.TryGetPlayerIdentity(new MyPlayer.PlayerId(msg.ReceiverSteamId)); var senderId = MySession.Static.Players.TryGetPlayerIdentity(new MyPlayer.PlayerId(msg.SenderSteamId)); //TODO(AF) Check if message was already received if (receiverId != null && receiverId.Character != null && senderId != null && senderId.Character != null && MyAntennaSystem.CheckConnection(senderId, receiverId)) { Sync.Layer.SendMessage(ref msg, msg.ReceiverSteamId, MyTransportMessageEnum.Success); Sync.Layer.SendMessage(ref msg, sender.SteamUserId, MyTransportMessageEnum.Success); //Save chat history on server for non-server players if (receiverId.Character != MySession.LocalCharacter) { MyChatSystem.AddPlayerChatItem(receiverId.IdentityId, senderId.IdentityId, new MyPlayerChatItem(msg.Text, senderId.IdentityId, msg.Timestamp, true)); } if (senderId.Character != MySession.LocalCharacter) { MyChatSystem.AddPlayerChatItem(senderId.IdentityId, receiverId.IdentityId, new MyPlayerChatItem(msg.Text, senderId.IdentityId, msg.Timestamp, true)); } } }
public void SendNewPlayerMessage(MyPlayer.PlayerId senderId, MyPlayer.PlayerId receiverId, string text, TimeSpan timestamp) { var msg = new SendPlayerMessageMsg(); msg.CharacterEntityId = Entity.EntityId; msg.SenderSteamId = senderId.SteamId; msg.ReceiverSteamId = receiverId.SteamId; msg.Text = text; msg.Timestamp = timestamp.Ticks; Sync.Layer.SendMessageToServer(ref msg, MyTransportMessageEnum.Request); }
private static void OnPlayerMessageSuccess(MySyncCharacter sync, ref SendPlayerMessageMsg msg, MyNetworkClient sender) { var receiverId = MySession.Static.Players.TryGetPlayerIdentity(new MyPlayer.PlayerId(msg.ReceiverSteamId)); var senderId = MySession.Static.Players.TryGetPlayerIdentity(new MyPlayer.PlayerId(msg.SenderSteamId)); if (receiverId != null && receiverId.Character != null && senderId != null && senderId.Character != null) { if (receiverId.Character == MySession.LocalCharacter && receiverId.Character != senderId.Character) { MyChatSystem.AddPlayerChatItem(receiverId.IdentityId, senderId.IdentityId, new MyPlayerChatItem(msg.Text, senderId.IdentityId, msg.Timestamp, true)); MySession.Static.ChatSystem.OnNewPlayerMessage(senderId.IdentityId, senderId.IdentityId); MySession.Static.Gpss.ScanText(msg.Text, MyTexts.GetString(MySpaceTexts.TerminalTab_GPS_NewFromPrivateComms)); } else { MyChatSystem.SetPlayerChatItemSent(senderId.IdentityId, receiverId.IdentityId, msg.Text, new TimeSpan(msg.Timestamp), true); MySession.Static.ChatSystem.OnNewPlayerMessage(receiverId.IdentityId, senderId.IdentityId); } } }