public void Kick(ChatUser user, ChatUser moderator, bool wasBanned) { if (!ValidateModerator(moderator) || !ValidateAccess(moderator, user)) { return; } if (Contains(user)) { if (moderator != null) { if (wasBanned) { user.SendAsciiMessage(63, moderator.Username); // %1, a conference moderator, has banned you from the conference. } else { user.SendAsciiMessage(45, moderator.Username); // %1, a conference moderator, has kicked you out of the conference. } } RemoveUser(user); ChatSystem.SendCommandTo(user.Mobile, ChatCommand.AddUserToChannel, user.GetColorCharacter() + user.Username); SendAsciiMessage(44, user.Username); // %1 has been kicked out of the conference. } if (wasBanned && moderator != null) { moderator.SendAsciiMessage(62, user.Username); // You are banning %1 from this conference. } }
public static void PrivateMessage(ChatUser from, Channel channel, string param) { int indexOf = param.IndexOf(' '); string name = param.Substring(0, indexOf); string text = param.Substring(indexOf + 1); ChatUser target = ChatSystem.SearchForUser(from, name); if (target == null) { return; } if (target.IsIgnored(from)) { from.SendAsciiMessage(35, target.Username); // %1 has chosen to ignore you. None of your messages to them will get through. } else if (target.IgnorePrivateMessage) { from.SendAsciiMessage(42, target.Username); // %1 has chosen to not receive private messages at the moment. } else { target.SendAsciiMessage(59, from.Mobile, from.GetColorCharacter() + from.Username, text); // [%1]: %2 } }
public static void ChatAction(NetState state, PacketReader pvSrc) { if (!m_Enabled) { return; } try { Mobile from = state.Mobile; ChatUser user = ChatUser.GetChatUser(from); if (user == null) { return; } string lang = pvSrc.ReadStringSafe(4); int actionID = pvSrc.ReadInt16(); string param = pvSrc.ReadUnicodeString(); ChatActionHandler handler = ChatActionHandlers.GetHandler(actionID); if (handler != null) { Channel channel = user.CurrentChannel; if (handler.RequireConference && channel == null) { user.SendAsciiMessage(31); /* You must be in a conference to do this. * To join a conference, select one from the Conference menu. */ } else if (handler.RequireModerator && !user.IsModerator) { user.SendAsciiMessage(29); // You must have operator status to do this. } else { handler.Callback(user, channel, param); } } else { Console.WriteLine("Client: {0}: Unknown chat action 0x{1:X}: {2}", state, actionID, param); } } catch (Exception e) { Console.WriteLine(e); } }
public void AddModerator(ChatUser user, ChatUser moderator) { if (!ValidateModerator(moderator)) { return; } if (IsBanned(user) || IsModerator(user)) { return; } if (IsVoiced(user)) { m_Voices.Remove(user); } m_Moderators.Add(user); if (moderator != null) { user.SendAsciiMessage(50, moderator.Username); // %1 has made you a conference moderator. } SendAsciiMessage(48, user, user.Username); // %1 is now a conference moderator. SendCommand(ChatCommand.AddUserToChannel, user.GetColorCharacter() + user.Username); }
public static void DisallowPrivateMessages(ChatUser from, Channel channel, string param) { from.IgnorePrivateMessage = true; from.SendAsciiMessage(38); /* You will no longer receive private messages. * Those who send you a message will be notified that you are blocking incoming messages. */ }
public static void JoinChannel(ChatUser from, Channel channel, string param) { string name; string password = null; int start = param.IndexOf('\"'); if (start >= 0) { int end = param.IndexOf('\"', ++start); if (end >= 0) { name = param.Substring(start, end - start); password = param.Substring(++end); } else { name = param.Substring(start); } } else { int indexOf = param.IndexOf(' '); if (indexOf >= 0) { name = param.Substring(0, indexOf++); password = param.Substring(indexOf); } else { name = param; } } if (password != null) { password = password.Trim(); } if (password != null && password.Length == 0) { password = null; } Channel joined = Channel.FindChannelByName(name); if (joined == null) { from.SendAsciiMessage(33, name); // There is no conference named '%1'. } else { joined.AddUser(from, password); } }
public static void QueryWhoIs(ChatUser from, Channel channel, string param) { ChatUser target = ChatSystem.SearchForUser(from, param); if (target == null) { return; } if (target.Anonymous) { from.SendAsciiMessage(41, target.Username); // %1 is remaining anonymous. } else { from.SendAsciiMessage(43, target.Username, target.Mobile.Name); // %2 is known in the lands of Britannia as %2. } }
public static ChatUser SearchForUser(ChatUser from, string name) { ChatUser user = ChatUser.GetChatUser(name); if (user == null) { from.SendAsciiMessage(32, name); // There is no player named '%1'. } return(user); }
public bool ValidateModerator(ChatUser user) { if (user != null && !IsModerator(user)) { user.SendAsciiMessage(29); // You must have operator status to do this. return(false); } return(true); }
public static void EmoteMessage(ChatUser from, Channel channel, string param) { if (channel.CanTalk(from)) { channel.SendIgnorableMessage(58, from, from.GetColorCharacter() + from.Username, param); // %1 %2 } else { from.SendAsciiMessage(36); // The moderator of this conference has not given you speaking priviledges. } }
public bool AddUser(ChatUser user, string password) { if (Contains(user)) { user.SendAsciiMessage(46, m_Name); // You are already in the conference '%1'. return(true); } else if (IsBanned(user)) { user.SendAsciiMessage(64); // You have been banned from this conference. return(false); } else if (!ValidatePassword(password)) { user.SendAsciiMessage(34); // That is not the correct password. return(false); } else { if (user.CurrentChannel != null) { user.CurrentChannel.RemoveUser(user); // Remove them from their current channel first } ChatSystem.SendCommandTo(user.Mobile, ChatCommand.JoinedChannel, m_Name); SendCommand(ChatCommand.AddUserToChannel, user.GetColorCharacter() + user.Username); m_Users.Add(user); user.CurrentChannel = this; if (user.Mobile.AccessLevel >= AccessLevel.GameMaster || (!m_AlwaysAvailable && m_Users.Count == 1)) { AddModerator(user); } SendUsersTo(user); return(true); } }
public void AddVoiced(ChatUser user, ChatUser moderator) { if (!ValidateModerator(moderator)) { return; } if (!IsBanned(user) && !IsModerator(user) && !IsVoiced(user)) { m_Voices.Add(user); if (moderator != null) { user.SendAsciiMessage(54, moderator.Username); // %1, a conference moderator, has granted you speaking priviledges in this conference. } SendAsciiMessage(52, user, user.Username); // %1 now has speaking privileges in this conference. SendCommand(ChatCommand.AddUserToChannel, user, user.GetColorCharacter() + user.Username); } }
public void RemoveVoiced(ChatUser user, ChatUser moderator) { if (!ValidateModerator(moderator) || !ValidateAccess(moderator, user)) { return; } if (!IsModerator(user) && IsVoiced(user)) { m_Voices.Remove(user); if (moderator != null) { user.SendAsciiMessage(53, moderator.Username); // %1, a conference moderator, has removed your speaking priviledges for this conference. } SendAsciiMessage(51, user, user.Username); // %1 no longer has speaking privileges in this conference. SendCommand(ChatCommand.AddUserToChannel, user, user.GetColorCharacter() + user.Username); } }
public void RemoveModerator(ChatUser user, ChatUser moderator) { if (!ValidateModerator(moderator) || !ValidateAccess(moderator, user)) { return; } if (IsModerator(user)) { m_Moderators.Remove(user); if (moderator != null) { user.SendAsciiMessage(49, moderator.Username); // %1 has removed you from the list of conference moderators. } SendAsciiMessage(47, user, user.Username); // %1 is no longer a conference moderator. SendCommand(ChatCommand.AddUserToChannel, user.GetColorCharacter() + user.Username); } }
public void SendAsciiMessage(int number, ChatUser initiator, string param1, string param2) { for (int i = 0; i < m_Users.Count; ++i) { ChatUser user = (ChatUser)m_Users[i]; if (user == initiator) { continue; } if (user.CheckOnline()) { user.SendAsciiMessage(number, param1, param2); } else if (!Contains(user)) { --i; } } }
public void SendIgnorableMessage(int number, ChatUser from, string param1, string param2) { for (int i = 0; i < m_Users.Count; ++i) { ChatUser user = (ChatUser)m_Users[i]; if (user.IsIgnored(from)) { continue; } if (user.CheckOnline()) { user.SendAsciiMessage(number, from.Mobile, param1, param2); } else if (!Contains(user)) { --i; } } }
public static void ChangeChannelPassword(ChatUser from, Channel channel, string param) { channel.Password = param; from.SendAsciiMessage(60); // The password to the conference has been changed. }
public bool ValidateModerator( ChatUser user ) { if ( user != null && !IsModerator( user ) ) { user.SendAsciiMessage( 29 ); // You must have operator status to do this. return false; } return true; }
public void RemoveVoiced( ChatUser user, ChatUser moderator ) { if ( !ValidateModerator( moderator ) || !ValidateAccess( moderator, user ) ) return; if ( !IsModerator( user ) && IsVoiced( user ) ) { m_Voices.Remove( user ); if ( moderator != null ) user.SendAsciiMessage( 53, moderator.Username ); // %1, a conference moderator, has removed your speaking priviledges for this conference. SendAsciiMessage( 51, user, user.Username ); // %1 no longer has speaking privileges in this conference. SendCommand( ChatCommand.AddUserToChannel, user, user.GetColorCharacter() + user.Username ); } }
public void RemoveModerator( ChatUser user, ChatUser moderator ) { if ( !ValidateModerator( moderator ) || !ValidateAccess( moderator, user ) ) return; if ( IsModerator( user ) ) { m_Moderators.Remove( user ); if ( moderator != null ) user.SendAsciiMessage( 49, moderator.Username ); // %1 has removed you from the list of conference moderators. SendAsciiMessage( 47, user, user.Username ); // %1 is no longer a conference moderator. SendCommand( ChatCommand.AddUserToChannel, user.GetColorCharacter() + user.Username ); } }
public static void ChannelMessage( ChatUser from, Channel channel, string param ) { if ( channel.CanTalk( from ) ) channel.SendIgnorableMessage( 57, from, from.GetColorCharacter() + from.Username, param ); // %1: %2 else from.SendAsciiMessage( 36 ); // The moderator of this conference has not given you speaking priviledges. }
public static void HideCharacterName(ChatUser from, Channel channel, string param) { from.Anonymous = true; from.SendAsciiMessage(40); // You are no longer showing your character name to any players who inquire with the whois command. }
public static void TogglePrivateMessages(ChatUser from, Channel channel, string param) { from.IgnorePrivateMessage = !from.IgnorePrivateMessage; from.SendAsciiMessage(from.IgnorePrivateMessage ? 38 : 37); // See above for messages }
public static void TogglePrivateMessages( ChatUser from, Channel channel, string param ) { from.IgnorePrivateMessage = !from.IgnorePrivateMessage; from.SendAsciiMessage( from.IgnorePrivateMessage ? 38 : 37 ); // See above for messages }
public static void DisallowPrivateMessages( ChatUser from, Channel channel, string param ) { from.IgnorePrivateMessage = true; from.SendAsciiMessage( 38 ); /* You will no longer receive private messages. * Those who send you a message will be notified that you are blocking incoming messages. */ }
public static void JoinChannel( ChatUser from, Channel channel, string param ) { string name; string password = null; int start = param.IndexOf( '\"' ); if ( start >= 0 ) { int end = param.IndexOf( '\"', ++start ); if ( end >= 0 ) { name = param.Substring( start, end - start ); password = param.Substring( ++end ); } else { name = param.Substring( start ); } } else { int indexOf = param.IndexOf( ' ' ); if ( indexOf >= 0 ) { name = param.Substring( 0, indexOf++ ); password = param.Substring( indexOf ); } else { name = param; } } if ( password != null ) password = password.Trim(); if ( password != null && password.Length == 0 ) password = null; Channel joined = Channel.FindChannelByName( name ); if ( joined == null ) from.SendAsciiMessage( 33, name ); // There is no conference named '%1'. else joined.AddUser( from, password ); }
public static void AllowPrivateMessages( ChatUser from, Channel channel, string param ) { from.IgnorePrivateMessage = false; from.SendAsciiMessage( 37 ); // You can now receive private messages. }
public static void PrivateMessage( ChatUser from, Channel channel, string param ) { int indexOf = param.IndexOf( ' ' ); string name = param.Substring( 0, indexOf ); string text = param.Substring( indexOf + 1 ); ChatUser target = ChatSystem.SearchForUser( from, name ); if ( target == null ) return; if ( target.IsIgnored( from ) ) from.SendAsciiMessage( 35, target.Username ); // %1 has chosen to ignore you. None of your messages to them will get through. else if ( target.IgnorePrivateMessage ) from.SendAsciiMessage( 42, target.Username ); // %1 has chosen to not receive private messages at the moment. else target.SendAsciiMessage( 59, from.Mobile, from.GetColorCharacter() + from.Username, text ); // [%1]: %2 }
public static void ChangeChannelPassword( ChatUser from, Channel channel, string param ) { channel.Password = param; from.SendAsciiMessage( 60 ); // The password to the conference has been changed. }
public static void AllowPrivateMessages(ChatUser from, Channel channel, string param) { from.IgnorePrivateMessage = false; from.SendAsciiMessage(37); // You can now receive private messages. }
public static void ToggleCharacterName( ChatUser from, Channel channel, string param ) { from.Anonymous = !from.Anonymous; from.SendAsciiMessage( from.Anonymous ? 40 : 39 ); // See above for messages }
public static void HideCharacterName( ChatUser from, Channel channel, string param ) { from.Anonymous = true; from.SendAsciiMessage( 40 ); // You are no longer showing your character name to any players who inquire with the whois command. }
public void AddVoiced( ChatUser user, ChatUser moderator ) { if ( !ValidateModerator( moderator ) ) return; if ( !IsBanned( user ) && !IsModerator( user ) && !IsVoiced( user ) ) { m_Voices.Add( user ); if ( moderator != null ) user.SendAsciiMessage( 54, moderator.Username ); // %1, a conference moderator, has granted you speaking priviledges in this conference. SendAsciiMessage( 52, user, user.Username ); // %1 now has speaking privileges in this conference. SendCommand( ChatCommand.AddUserToChannel, user, user.GetColorCharacter() + user.Username ); } }
public static void ShowCharacterName(ChatUser from, Channel channel, string param) { from.Anonymous = false; from.SendAsciiMessage(39); // You are now showing your character name to any players who inquire with the whois command. }
public void Kick( ChatUser user, ChatUser moderator, bool wasBanned ) { if ( !ValidateModerator( moderator ) || !ValidateAccess( moderator, user ) ) return; if ( Contains( user ) ) { if ( moderator != null ) { if ( wasBanned ) user.SendAsciiMessage( 63, moderator.Username ); // %1, a conference moderator, has banned you from the conference. else user.SendAsciiMessage( 45, moderator.Username ); // %1, a conference moderator, has kicked you out of the conference. } RemoveUser( user ); ChatSystem.SendCommandTo( user.Mobile, ChatCommand.AddUserToChannel, user.GetColorCharacter() + user.Username ); SendAsciiMessage( 44, user.Username ) ; // %1 has been kicked out of the conference. } if ( wasBanned && moderator != null ) moderator.SendAsciiMessage( 62, user.Username ); // You are banning %1 from this conference. }
public static void ToggleCharacterName(ChatUser from, Channel channel, string param) { from.Anonymous = !from.Anonymous; from.SendAsciiMessage(from.Anonymous ? 40 : 39); // See above for messages }
public static void QueryWhoIs( ChatUser from, Channel channel, string param ) { ChatUser target = ChatSystem.SearchForUser( from, param ); if ( target == null ) return; if ( target.Anonymous ) from.SendAsciiMessage( 41, target.Username ); // %1 is remaining anonymous. else from.SendAsciiMessage( 43, target.Username, target.Mobile.Name ); // %2 is known in the lands of Britannia as %2. }
public static ChatUser SearchForUser( ChatUser from, string name ) { ChatUser user = ChatUser.GetChatUser( name ); if ( user == null ) from.SendAsciiMessage( 32, name ); // There is no player named '%1'. return user; }
public void AddModerator( ChatUser user, ChatUser moderator ) { if ( !ValidateModerator( moderator ) ) return; if ( IsBanned( user ) || IsModerator( user ) ) return; if ( IsVoiced( user ) ) m_Voices.Remove( user ); m_Moderators.Add( user ); if ( moderator != null ) user.SendAsciiMessage( 50, moderator.Username ); // %1 has made you a conference moderator. SendAsciiMessage( 48, user, user.Username ); // %1 is now a conference moderator. SendCommand( ChatCommand.AddUserToChannel, user.GetColorCharacter() + user.Username ); }
public bool AddUser( ChatUser user, string password ) { if ( Contains( user ) ) { user.SendAsciiMessage( 46, m_Name ); // You are already in the conference '%1'. return true; } else if ( IsBanned( user ) ) { user.SendAsciiMessage( 64 ); // You have been banned from this conference. return false; } else if ( !ValidatePassword( password ) ) { user.SendAsciiMessage( 34 ); // That is not the correct password. return false; } else { if ( user.CurrentChannel != null ) user.CurrentChannel.RemoveUser( user ); // Remove them from their current channel first ChatSystem.SendCommandTo( user.Mobile, ChatCommand.JoinedChannel, m_Name ); SendCommand( ChatCommand.AddUserToChannel, user.GetColorCharacter() + user.Username ); m_Users.Add( user ); user.CurrentChannel = this; if ( user.Mobile.AccessLevel >= AccessLevel.GameMaster || (!m_AlwaysAvailable && m_Users.Count == 1) ) AddModerator( user ); SendUsersTo( user ); return true; } }
public static void ShowCharacterName( ChatUser from, Channel channel, string param ) { from.Anonymous = false; from.SendAsciiMessage( 39 ); // You are now showing your character name to any players who inquire with the whois command. }