Implement Mute Function.

This commit is contained in:
SilicaAndPina 2021-03-23 19:13:40 +13:00
parent b15e6996fe
commit 5308b53c89
9 changed files with 302 additions and 55 deletions

View file

@ -573,7 +573,7 @@ namespace HISP.Server
{
db.Open();
MySqlCommand sqlCommand = db.CreateCommand();
sqlCommand.CommandText = "DELETE FROM MutedPlayers WHERE playerId=@playerId AND mutePlayerId=@mutedPlayerId)";
sqlCommand.CommandText = "DELETE FROM MutedPlayers WHERE playerId=@playerId AND mutePlayerId=@mutedPlayerId";
sqlCommand.Parameters.AddWithValue("@playerId", playerId);
sqlCommand.Parameters.AddWithValue("@mutedPlayerId", playerToMute);
sqlCommand.Prepare();

View file

@ -843,6 +843,10 @@ namespace HISP.Server
Messages.AutoSellYouSoldHorseOfflineFormat = gameData.messages.meta.auto_sell.sold_offline;
// Mute Command
Messages.NowMutingPlayerFormat = gameData.messages.meta.mute_command.now_ignoring_player;
Messages.StoppedMutingPlayerFormat = gameData.messages.meta.mute_command.stop_ignoring_player;
Messages.PlayerIgnoringYourPrivateMessagesFormat = gameData.messages.meta.mute_command.player_ignoring_your_pm;
Messages.PlayerIgnoringYourBuddyRequests = gameData.messages.meta.mute_command.player_ignoring_your_br;
Messages.PlayerIgnoringYourSocials = gameData.messages.meta.mute_command.player_ignoring_your_socials;
@ -1672,6 +1676,7 @@ namespace HISP.Server
Messages.AdminCommandFormat = gameData.messages.commands.admin_command_completed;
Messages.PlayerCommandFormat = gameData.messages.commands.player_command_completed;
Messages.MuteHelp = gameData.messages.commands.mute_help;
Messages.UnMuteHelp = gameData.messages.commands.unmute_help;
Messages.PasswordNotice = gameData.messages.chat.password_included;
@ -1745,6 +1750,10 @@ namespace HISP.Server
Messages.PlayerListMapAllPlayersFormat = gameData.messages.meta.player_list.map_all_players_format;
Messages.PlayerListAbuseReport = gameData.messages.meta.player_list.abuse_report;
Messages.MuteButton = gameData.messages.meta.player_list.mute_button;
Messages.HearButton = gameData.messages.meta.player_list.hear_button;
Messages.PmButton = gameData.messages.meta.player_list.pm_button;
Messages.ThreeMonthSubscripitionIcon = gameData.messages.meta.player_list.icon_subbed_3month;
Messages.YearSubscriptionIcon = gameData.messages.meta.player_list.icon_subbed_year;
Messages.NewUserIcon = gameData.messages.meta.player_list.icon_new;

View file

@ -269,6 +269,62 @@ namespace HISP.Server
sender.SendPacket(metaTag);
}
break;
case PacketBuilder.PLAYER_INTERACTION_MUTE:
packetStr = Encoding.UTF8.GetString(packet);
playerIdStr = packetStr.Substring(2, packetStr.Length - 4);
playerId = -1;
try
{
playerId = int.Parse(playerIdStr);
}
catch (FormatException)
{
Logger.ErrorPrint(sender.LoggedinUser.Username + " tried to MUTE User ID NaN.");
break;
}
if (IsUserOnline(playerId))
{
User user = GetUserById(playerId);
if(!sender.LoggedinUser.MutePlayer.IsUserMuted(user))
sender.LoggedinUser.MutePlayer.MuteUser(user);
byte[] nowMuting = PacketBuilder.CreateChat(Messages.FormatNowMutingPlayer(user.Username), PacketBuilder.CHAT_BOTTOM_RIGHT);
sender.SendPacket(nowMuting);
sender.LoggedinUser.MetaPriority = true;
byte[] metaPacket = PacketBuilder.CreateMetaPacket(Meta.BuildPlayerListMenu(sender.LoggedinUser));
sender.SendPacket(metaPacket);
}
break;
case PacketBuilder.PLAYER_INTERACTION_UNMUTE:
packetStr = Encoding.UTF8.GetString(packet);
playerIdStr = packetStr.Substring(2, packetStr.Length - 4);
playerId = -1;
try
{
playerId = int.Parse(playerIdStr);
}
catch (FormatException)
{
Logger.ErrorPrint(sender.LoggedinUser.Username + " tried to UNMUTE User ID NaN.");
break;
}
if (IsUserOnline(playerId))
{
User user = GetUserById(playerId);
if (sender.LoggedinUser.MutePlayer.IsUserMuted(user))
sender.LoggedinUser.MutePlayer.UnmuteUser(user);
byte[] nowMuting = PacketBuilder.CreateChat(Messages.FormatStoppedMutingPlayer(user.Username), PacketBuilder.CHAT_BOTTOM_RIGHT);
sender.SendPacket(nowMuting);
sender.LoggedinUser.MetaPriority = true;
byte[] metaPacket = PacketBuilder.CreateMetaPacket(Meta.BuildPlayerListMenu(sender.LoggedinUser));
sender.SendPacket(metaPacket);
}
break;
case PacketBuilder.PLAYER_INTERACTION_REMOVE_BUDDY:
packetStr = Encoding.UTF8.GetString(packet);
playerIdStr = packetStr.Substring(2, packetStr.Length - 4);
@ -292,7 +348,7 @@ namespace HISP.Server
sender.SendPacket(friendRemoved);
sender.LoggedinUser.MetaPriority = true;
byte[] metaPacket = PacketBuilder.CreateMetaPacket(Meta.BuildPlayerList(sender.LoggedinUser));
byte[] metaPacket = PacketBuilder.CreateMetaPacket(Meta.BuildPlayerListMenu(sender.LoggedinUser));
sender.SendPacket(metaPacket);
}
@ -2500,7 +2556,7 @@ namespace HISP.Server
{
case PacketBuilder.PLAYERINFO_PLAYER_LIST:
sender.LoggedinUser.MetaPriority = true;
byte[] metaPacket = PacketBuilder.CreateMetaPacket(Meta.BuildPlayerList(sender.LoggedinUser));
byte[] metaPacket = PacketBuilder.CreateMetaPacket(Meta.BuildPlayerListMenu(sender.LoggedinUser));
sender.SendPacket(metaPacket);
break;
}
@ -2805,12 +2861,12 @@ namespace HISP.Server
break;
case "37": // All Players List
sender.LoggedinUser.MetaPriority = true;
metaPacket = PacketBuilder.CreateMetaPacket(Meta.BuildPlayerList());
metaPacket = PacketBuilder.CreateMetaPacket(Meta.BuildPlayerList(sender.LoggedinUser));
sender.SendPacket(metaPacket);
break;
case "40": // All Players Alphabetical
sender.LoggedinUser.MetaPriority = true;
metaPacket = PacketBuilder.CreateMetaPacket(Meta.BuildPlayerListAlphabetical());
metaPacket = PacketBuilder.CreateMetaPacket(Meta.BuildPlayerListAlphabetical(sender.LoggedinUser));
sender.SendPacket(metaPacket);
break;
case "30": // Find NPC

View file

@ -64,6 +64,8 @@ namespace HISP.Server
public const byte PLAYER_INTERACTION_TRADE_REJECT = 0x2B;
public const byte PLAYER_INTERACTION_ADD_BUDDY = 0x1E;
public const byte PLAYER_INTERACTION_REMOVE_BUDDY = 0x1F;
public const byte PLAYER_INTERACTION_MUTE = 0x32;
public const byte PLAYER_INTERACTION_UNMUTE = 0x33;
public const byte AUCTION_BID_100 = 0x29;
public const byte AUCTION_BID_1K = 0x2A;