public static void Handle(ClientMessage clientMessage, Session session) { var message = clientMessage.Payload.ReadString16L(); var targetGuid = clientMessage.Payload.ReadUInt32(); var creature = session.Player.CurrentLandblock?.GetObject(targetGuid) as Creature; if (creature == null) { var statusMessage = new GameEventWeenieError(session, WeenieError.CharacterNotAvailable); session.Network.EnqueueSend(statusMessage); return; } session.Network.EnqueueSend(new GameMessageSystemChat($"You tell {creature.Name}, \"{message}\"", ChatMessageType.OutgoingTell)); if (creature is Player targetPlayer) { if (targetPlayer.Squelches.Contains(session.Player)) { session.Network.EnqueueSend(new GameEventWeenieErrorWithString(session, WeenieErrorWithString.MessageBlocked_, $"{targetPlayer.Name} has you squelched.")); //log.Warn($"Tell from {session.Player.Name} (0x{session.Player.Guid.ToString()}) to {targetPlayer.Name} (0x{targetPlayer.Guid.ToString()}) blocked due to squelch"); return; } var tell = new GameEventTell(targetPlayer.Session, message, session.Player.Name, session.Player.Guid.Full, targetPlayer.Guid.Full, ChatMessageType.Tell); targetPlayer.Session.Network.EnqueueSend(tell); } else { creature.EmoteManager.OnTalkDirect(session.Player, message); } }
public static void Handle(ClientMessage clientMessage, Session session) { var message = clientMessage.Payload.ReadString16L(); // The client seems to do the trimming for us var target = clientMessage.Payload.ReadString16L(); // Needs to be trimmed because it may contain white spaces after the name and before the , target = target.Trim(); var targetPlayer = PlayerManager.GetOnlinePlayer(target); if (targetPlayer == null) { var statusMessage = new GameEventWeenieError(session, WeenieError.CharacterNotAvailable); session.Network.EnqueueSend(statusMessage); return; } else { if (session.Player != targetPlayer) { session.Network.EnqueueSend(new GameMessageSystemChat($"You tell {targetPlayer.Name}, \"{message}\"", ChatMessageType.OutgoingTell)); } var tell = new GameEventTell(targetPlayer.Session, message, session.Player.Name, session.Player.Guid.Full, targetPlayer.Guid.Full, ChatMessageType.Tell); targetPlayer.Session.Network.EnqueueSend(tell); } }
public static void Handle(ClientMessage clientMessage, Session session) { var message = clientMessage.Payload.ReadString16L(); // The client seems to do the trimming for us var target = clientMessage.Payload.ReadString16L(); // Needs to be trimmed because it may contain white spaces after the name and before the , target = target.Trim(); var targetPlayer = PlayerManager.GetOnlinePlayer(target); if (targetPlayer == null) { var statusMessage = new GameEventWeenieError(session, WeenieError.CharacterNotAvailable); session.Network.EnqueueSend(statusMessage); return; } if (session.Player != targetPlayer) { session.Network.EnqueueSend(new GameMessageSystemChat($"You tell {targetPlayer.Name}, \"{message}\"", ChatMessageType.OutgoingTell)); } if (targetPlayer.Squelches.Contains(session.Player)) { session.Network.EnqueueSend(new GameEventWeenieErrorWithString(session, WeenieErrorWithString.MessageBlocked_, $"{target} has you squelched.")); //log.Warn($"Tell from {session.Player.Name} (0x{session.Player.Guid.ToString()}) to {targetPlayer.Name} (0x{targetPlayer.Guid.ToString()}) blocked due to squelch"); return; } var tell = new GameEventTell(targetPlayer.Session, message, session.Player.Name, session.Player.Guid.Full, targetPlayer.Guid.Full, ChatMessageType.Tell); targetPlayer.Session.Network.EnqueueSend(tell); }
public override void Handle() { var targetSession = WorldManager.FindByPlayerName(target); if (targetSession == null) { var statusMessage = new GameEventDisplayStatusMessage(Session, StatusMessageType1.CharacterNotAvailable); Session.WorldSession.EnqueueSend(statusMessage); } else { if (Session.Player != targetSession.Player) { Session.WorldSession.EnqueueSend(new GameMessageSystemChat($"You tell {target}, \"{message}\"", ChatMessageType.OutgoingTell)); } var tell = new GameEventTell(targetSession, message, Session.Player.Name, Session.Player.Guid.Full, targetSession.Player.Guid.Full, ChatMessageType.Tell); targetSession.WorldSession.EnqueueSend(tell); } }
public override void Handle() { var targetSession = WorldManager.FindByPlayerName(target); if (targetSession == null) { var statusMessage = new GameEventDisplayStatusMessage(Session, StatusMessageType1.CharacterNotAvailable); NetworkManager.SendWorldMessages(Session, new GameMessage[] { statusMessage }); } else { if (Session.Player != targetSession.Player) { ChatPacket.SendServerMessage(Session, $"You tell {target}, \"'{message}'\"", ChatMessageType.OutgoingTell); } var tell = new GameEventTell(targetSession, message, Session.Player.Name, Session.Player.Guid.Full, targetSession.Player.Guid.Full, ChatMessageType.PrivateTell); NetworkManager.SendWorldMessages(targetSession, new GameMessage[] { tell }); } }