diff --git a/HorseIsleData b/HorseIsleData index 98f385f..257f891 160000 --- a/HorseIsleData +++ b/HorseIsleData @@ -1 +1 @@ -Subproject commit 98f385f4adaad7e58d265001f4f109869ca9c88d +Subproject commit 257f8910d6f8bf2024b9785d64871c1ebe35cce7 diff --git a/HorseIsleServer/HorseIsleServer/Game/Arena.cs b/HorseIsleServer/HorseIsleServer/Game/Arena.cs index 18668d7..bfeb420 100644 --- a/HorseIsleServer/HorseIsleServer/Game/Arena.cs +++ b/HorseIsleServer/HorseIsleServer/Game/Arena.cs @@ -249,15 +249,21 @@ namespace HISP.Game string chatMessage = Messages.ArenaResultsMessage; string[] avaliblePlacings = new string[6] { Messages.ArenaFirstPlace, Messages.ArenaSecondPlace, Messages.ArenaThirdPlace, Messages.ArenaFourthPlace, Messages.ArenaFifthPlace, Messages.ArenaSixthPlace }; - int[] expRewards = ExpRewards.ToArray().Reverse().ToArray(); + int place = 0; ArenaEntry[] winners = Entries.OrderByDescending(o => o.SubmitScore).ToArray(); + + int[] expRewards = new int[winners.Length]; + Array.Copy(ExpRewards, expRewards, winners.Length); + expRewards = expRewards.Reverse().ToArray(); + foreach (ArenaEntry entry in winners) { string placing = avaliblePlacings[place % avaliblePlacings.Length]; chatMessage += Messages.FormatArenaPlacing(placing, entry.EnteredUser.Username, entry.SubmitScore); + place++; } place = 0; diff --git a/HorseIsleServer/HorseIsleServer/Game/Chat/Chat.cs b/HorseIsleServer/HorseIsleServer/Game/Chat/Chat.cs index 9c3cba1..4d9e373 100644 --- a/HorseIsleServer/HorseIsleServer/Game/Chat/Chat.cs +++ b/HorseIsleServer/HorseIsleServer/Game/Chat/Chat.cs @@ -215,8 +215,13 @@ namespace HISP.Game.Chat else if (message.ToUpper().StartsWith("!QUIZ")) return Command.Quiz(message, args, user); - else if (message.ToUpper().StartsWith("!WARP")) - return Command.Warp(message, args, user); + else if (message.ToUpper().StartsWith("!WARP")) // some stupid handling on this one. + { + string placeName = message.Substring("!WARP".Length); + placeName = placeName.Trim(); + + return Command.Warp(message, placeName.Split(' '), user); + } else if (message.ToUpper().StartsWith("!DANCE")) return Command.Dance(message, args, user); diff --git a/HorseIsleServer/HorseIsleServer/Game/Chat/Command.cs b/HorseIsleServer/HorseIsleServer/Game/Chat/Command.cs index ffe8961..a00d9b8 100644 --- a/HorseIsleServer/HorseIsleServer/Game/Chat/Command.cs +++ b/HorseIsleServer/HorseIsleServer/Game/Chat/Command.cs @@ -642,41 +642,33 @@ namespace HISP.Game.Chat doCommand:; - if (args.Length <= 0) + string areaName = string.Join(" ", args).ToLower(); + areaName = areaName.Trim(); + if (areaName == "") + areaName = "Horse Isle"; + try { - goto cantUnderstandCommand; + User tp = GameServer.GetUserByName(areaName); + + user.Teleport(tp.X, tp.Y); + formattedmessage += Messages.SuccessfullyWarpedToPlayer; + goto playSwf; + } - else + catch (KeyNotFoundException) { - string areaName = string.Join(" ", args).ToLower(); - areaName = areaName.Trim(); - if (areaName == "") - areaName = "Horse Isle"; - try + foreach (World.Waypoint waypoint in World.Waypoints) { - User tp = GameServer.GetUserByName(areaName); - - user.Teleport(tp.X, tp.Y); - formattedmessage += Messages.SuccessfullyWarpedToPlayer; - goto playSwf; - - } - catch (KeyNotFoundException) - { - foreach (World.Waypoint waypoint in World.Waypoints) + if (waypoint.Name.ToLower().StartsWith(areaName)) { - if (waypoint.Name.ToLower().StartsWith(areaName)) - { - user.Teleport(waypoint.PosX, waypoint.PosY); - formattedmessage += Messages.SuccessfullyWarpedToLocation; - goto playSwf; - } + user.Teleport(waypoint.PosX, waypoint.PosY); + formattedmessage += Messages.SuccessfullyWarpedToLocation; + goto playSwf; } - - goto cantUnderstandCommand; } - - } + + goto cantUnderstandCommand; + } playSwf:; byte[] swfPacket = PacketBuilder.CreateSwfModulePacket("warpcutscene", PacketBuilder.PACKET_SWF_CUTSCENE); diff --git a/HorseIsleServer/HorseIsleServer/Game/Inventory/HorseInventory.cs b/HorseIsleServer/HorseIsleServer/Game/Inventory/HorseInventory.cs index d3df140..0c56761 100644 --- a/HorseIsleServer/HorseIsleServer/Game/Inventory/HorseInventory.cs +++ b/HorseIsleServer/HorseIsleServer/Game/Inventory/HorseInventory.cs @@ -52,11 +52,23 @@ namespace HISP.Game.Inventory horsesList.Add(horse); } + public void DeleteHorseId(int id, bool removeFromDb = true) + { + foreach(HorseInstance horse in HorseList) + { + if(horse.RandomId == id) + { + if (removeFromDb) + Database.RemoveHorse(horse.RandomId); + horsesList.Remove(horse); + + } + } + } + public void DeleteHorse(HorseInstance horse, bool removeFromDb=true) { - if(removeFromDb) - Database.RemoveHorse(horse.RandomId); - horsesList.Remove(horse); + DeleteHorseId(horse.RandomId, removeFromDb); } public bool HorseIdExist(int randomId) diff --git a/HorseIsleServer/HorseIsleServer/Game/Messages.cs b/HorseIsleServer/HorseIsleServer/Game/Messages.cs index 69488f8..d68b591 100644 --- a/HorseIsleServer/HorseIsleServer/Game/Messages.cs +++ b/HorseIsleServer/HorseIsleServer/Game/Messages.cs @@ -236,7 +236,7 @@ namespace HISP.Game public static string PlayerHereAddBuddyButton; public static string PlayerHereTagButton; - public static string PlayerHerePmButton; + public static string PmButton; // Auction House public static string AuctionsRunning; @@ -1085,7 +1085,6 @@ namespace HISP.Game public static string MuteButton; public static string HearButton; - public static string PmButton; public static int ThreeMonthSubscripitionIcon; public static int YearSubscriptionIcon; @@ -1529,9 +1528,9 @@ namespace HISP.Game } // Player Interactions - public static string FormatPlayerHerePMButton(string playerName) + public static string FormatPmButton(string playerName) { - return PlayerHerePmButton.Replace("%PLAYERNAME%", playerName); + return PmButton.Replace("%PLAYERNAME%", playerName); } public static string FormatPlayerHereTagButton(int playerId) { @@ -2249,9 +2248,9 @@ namespace HISP.Game { return HorseNameYoursFormat.Replace("%NAME%", name); } - public static string FormatHorseNameOthers(string name) + public static string FormatHorseNameOthers(string name, string username) { - return HorseNameOthersFormat.Replace("%NAME%", name); + return HorseNameOthersFormat.Replace("%NAME%", name).Replace("%USERNAME%", username); } public static string FormatHorseDescription(string Description) { @@ -2487,10 +2486,6 @@ namespace HISP.Game { return HearButton.Replace("%PLAYERID%", playerId.ToString()); } - public static string FormatPmButton(string playerName) - { - return PmButton.Replace("%USERNAME%", playerName); - } public static string FormatPlayerEntry(string iconFormat, string username, int userId, int time, int x, int y, bool idle, bool muteOrHear, bool isYou) { string xy = FormatMapLocation(x, y); @@ -2501,7 +2496,7 @@ namespace HISP.Game if (isYou) msg = msg.Replace("%MUTEORHEAR%", "").Replace("%PMBUTTON%", ""); else - msg = msg.Replace("%MUTEORHEAR%", muteOrHear ? hearButton : muteButton).Replace("%PMBUTTON", pmButton); + msg = msg.Replace("%MUTEORHEAR%", muteOrHear ? hearButton : muteButton).Replace("%PMBUTTON%", pmButton); return msg; } public static string FormatOnlineBuddyEntry(string iconFormat, string username, int userId, int time, int x, int y) diff --git a/HorseIsleServer/HorseIsleServer/Game/Meta.cs b/HorseIsleServer/HorseIsleServer/Game/Meta.cs index 604c4aa..7f784b3 100644 --- a/HorseIsleServer/HorseIsleServer/Game/Meta.cs +++ b/HorseIsleServer/HorseIsleServer/Game/Meta.cs @@ -60,7 +60,7 @@ namespace HISP.Game buttons += Messages.FormatPlayerHereTagButton(playerAt.Id); else buttons += Messages.FormatPlayerHereBuddyButton(playerAt.Id); - buttons += Messages.FormatPlayerHerePMButton(playerAt.Username); + buttons += Messages.FormatPmButton(playerAt.Username); playersHere += Messages.FormatPlayerHereMenu(playerAt.GetPlayerListIcon(), playerAt.Username,buttons); count++; @@ -1670,15 +1670,13 @@ namespace HISP.Game HorseInstance[] horses = Database.GetCheapestHorseAutoSell(); foreach(HorseInstance horse in horses) { - if(horse.AutoSell > 0) - message += Messages.FormatCityHallCheapAutoSellEntry(horse.AutoSell, Database.GetUsername(horse.Owner), horse.Name, horse.Color, horse.Breed.Name, horse.BasicStats.Experience); + message += Messages.FormatCityHallCheapAutoSellEntry(horse.AutoSell, Database.GetUsername(horse.Owner), horse.Name, horse.Color, horse.Breed.Name, horse.BasicStats.Experience); } message += Messages.CityHallMostExpAutoSells; - horses = Database.GetBiggestExpAutoSell(); - foreach (HorseInstance horse in horses) + HorseInstance[] horsesExp = Database.GetBiggestExpAutoSell(); + foreach (HorseInstance horse in horsesExp) { - if(horse.AutoSell > 0) - message += Messages.FormatCityHallBestExpAutoSellEntry(horse.BasicStats.Experience, Database.GetUsername(horse.Owner), horse.Name, horse.AutoSell, horse.Color, horse.Breed.Name); + message += Messages.FormatCityHallBestExpAutoSellEntry(horse.BasicStats.Experience, Database.GetUsername(horse.Owner), horse.Name, horse.AutoSell, horse.Color, horse.Breed.Name); } message += Messages.BackToMap; message += Messages.MetaTerminator; @@ -2306,7 +2304,7 @@ namespace HISP.Game if (isMyHorse) message += Messages.FormatHorseNameYours(horse.Name); else - message += Messages.FormatHorseNameOthers(horse.Name); + message += Messages.FormatHorseNameOthers(horse.Name, Database.GetUsername(horse.Owner)); message += Messages.FormatHorseDescription(horse.Description); message += Messages.FormatHorseHandsHigh(horse.Color, horse.Breed.Name, horse.Gender, HorseInfo.CalculateHands(horse.AdvancedStats.Height, false)); diff --git a/HorseIsleServer/HorseIsleServer/Server/Database.cs b/HorseIsleServer/HorseIsleServer/Server/Database.cs index 214fdfe..851339a 100644 --- a/HorseIsleServer/HorseIsleServer/Server/Database.cs +++ b/HorseIsleServer/HorseIsleServer/Server/Database.cs @@ -5297,7 +5297,7 @@ namespace HISP.Server db.Open(); MySqlCommand sqlCommand = db.CreateCommand(); - sqlCommand.CommandText = "SELECT * FROM Horses ORDER BY experience DESC LIMIT 50"; + sqlCommand.CommandText = "SELECT * FROM Horses WHERE autoSell > 0 ORDER BY experience DESC LIMIT 50"; sqlCommand.Prepare(); MySqlDataReader reader = sqlCommand.ExecuteReader(); while (reader.Read()) @@ -5316,7 +5316,7 @@ namespace HISP.Server db.Open(); MySqlCommand sqlCommand = db.CreateCommand(); - sqlCommand.CommandText = "SELECT * FROM Horses ORDER BY autoSell LIMIT 100"; + sqlCommand.CommandText = "SELECT * FROM Horses WHERE autoSell > 0 ORDER BY autoSell LIMIT 100"; sqlCommand.Prepare(); MySqlDataReader reader = sqlCommand.ExecuteReader(); while(reader.Read()) diff --git a/HorseIsleServer/HorseIsleServer/Server/GameDataJson.cs b/HorseIsleServer/HorseIsleServer/Server/GameDataJson.cs index e740d8b..aed7615 100644 --- a/HorseIsleServer/HorseIsleServer/Server/GameDataJson.cs +++ b/HorseIsleServer/HorseIsleServer/Server/GameDataJson.cs @@ -1169,7 +1169,7 @@ namespace HISP.Server Messages.PlayerHereTradeButton = gameData.messages.meta.player_interaction.trade_button; Messages.PlayerHereAddBuddyButton = gameData.messages.meta.player_interaction.buddy_button; Messages.PlayerHereTagButton = gameData.messages.meta.player_interaction.tag_button; - Messages.PlayerHerePmButton = gameData.messages.meta.player_interaction.pm_button; + Messages.PmButton = gameData.messages.meta.player_interaction.pm_button; // Auction @@ -1950,7 +1950,6 @@ namespace HISP.Server 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; diff --git a/HorseIsleServer/HorseIsleServer/Server/GameServer.cs b/HorseIsleServer/HorseIsleServer/Server/GameServer.cs index ddd2003..9299b2b 100644 --- a/HorseIsleServer/HorseIsleServer/Server/GameServer.cs +++ b/HorseIsleServer/HorseIsleServer/Server/GameServer.cs @@ -3042,7 +3042,6 @@ namespace HISP.Server { User seller = GetUserById(horseToSell.Owner); seller.HorseInventory.DeleteHorse(horseToSell, false); - seller.AddMoney(horseToSell.AutoSell); byte[] horseBrought = PacketBuilder.CreateChat(Messages.FormatAutoSellSold(horseToSell.Name, horseToSell.AutoSell, sender.LoggedinUser.Username), PacketBuilder.CHAT_BOTTOM_RIGHT); @@ -5807,11 +5806,7 @@ namespace HISP.Server break; default: channel = Chat.ChatChannel.Dm; - nameTo = channelString.Substring(1); - - if (nameTo == "") - break; - + nameTo = channelString.Substring(1).Trim(); break; } @@ -5890,23 +5885,24 @@ namespace HISP.Server GameClient[] recipiants = Chat.GetRecipiants(sender.LoggedinUser, channel, nameTo); - // Spam Protection - + if(channel == Chat.ChatChannel.Dm) { - try - { - nameTo = GetUserByNameStartswith(nameTo).Username; - } - catch(KeyNotFoundException) + if(recipiants.Length <= 0) { byte[] cantFindPlayer = PacketBuilder.CreateChat(Messages.CantFindPlayerToPrivateMessage, PacketBuilder.CHAT_BOTTOM_RIGHT); sender.SendPacket(cantFindPlayer); return; } + else + { + nameTo = recipiants[0].LoggedinUser.Username; + } } - else if(channel == Chat.ChatChannel.Ads) + + // Spam filter + if(channel == Chat.ChatChannel.Ads) { if(!sender.LoggedinUser.CanUseAdsChat && !sender.LoggedinUser.Administrator) {