From 2c77957434463bfdff284b23add2bab0cac300a5 Mon Sep 17 00:00:00 2001 From: SilicaAndPina Date: Fri, 12 Feb 2021 11:18:55 +1300 Subject: [PATCH] Fully implement libarys! --- DataCollection/gamedata.json | 10 ++++-- .../HorseIsleServer/Game/Messages.cs | 11 ++++++ .../HorseIsleServer/Game/Meta.cs | 34 +++++++++++++++++++ .../HorseIsleServer/Server/GameDataJson.cs | 5 +++ .../HorseIsleServer/Server/GameServer.cs | 24 +++++++++++-- 5 files changed, 80 insertions(+), 4 deletions(-) diff --git a/DataCollection/gamedata.json b/DataCollection/gamedata.json index 9d919b7..1517ecd 100755 --- a/DataCollection/gamedata.json +++ b/DataCollection/gamedata.json @@ -195,8 +195,8 @@ "grain_silo":"
You have a Grain Silo. All of your horses have just been fully fed.", "vegatable_garden":"
You have a Vegetable Garden. You have just fully eaten.", "windmills":"
You have %COUNT% Windmill(s) earning you $%AMOUNT% every 12 game hours.", - "wagon":"
^T6Your Wagon can take you to the nearest station.^D7|STATION^R1^H", - "training_pen":"
^T6You can train all your horses via the Pen^D13|TRAIN ALL^R1^H", + "wagon":"
^T6Your Wagon can take you to the nearest station.^D7|STATION^R1", + "training_pen":"
^T6You can train all your horses via the Pen^D13|TRAIN ALL^R1", "train_all":"You attempt to train all of your horses:", "train_success":"
Training %HORSENAME%: +%SPEED%SP +%STRENGTH%ST +%CONFORMATION%CO +%AGILITY%AG +%ENDURANCE%EN +%EXP%exp", "train_cant_train":"
%HORSENAME%: Horse needs to rest %TIME% game minutes.", @@ -406,6 +406,12 @@ "find_npc_results_format":"^T7%NPCNAME%, %NPCDESC%^B1M%MAPXY%^R1", "find_npc_no_results":"The following residents match closely:
None were found by that name, try looking for a partial name.", "find_npc_limit5":"^L- Limited to 5 results. Try narrowing the search.^R1", + + "find_ranch":"SEARCH FOR A RANCH:
Enter a player's name below. It will match on partial names.
^PLRanch Locator:|Player username^PS13|FIND RANCH^R3", + "find_ranch_match_closely":"The following players ranches match closely:
", + "find_ranch_result":"^T7%USERNAME%'s Ranch^B1M%MAPXY%^R1", + "find_ranch_no_results":"None were found by that name, try looking for a partial name, or maybe they do not have a ranch.", + "horse_breed_format":"^I252^T7Horse Breed %NAME%:^D4c%ID%|VIEW^R1", "horse_relative_format":"^I252^T7A Horse Relative, the %NAME%:^D4c%ID%|VIEW^R1", "maximum_stats":"MAXIMUM STATS:
^AA", diff --git a/Horse Isle Server/HorseIsleServer/Game/Messages.cs b/Horse Isle Server/HorseIsleServer/Game/Messages.cs index 9ef6c99..f621451 100755 --- a/Horse Isle Server/HorseIsleServer/Game/Messages.cs +++ b/Horse Isle Server/HorseIsleServer/Game/Messages.cs @@ -151,6 +151,12 @@ namespace HISP.Game public static string LibaryFindNpcSearchNoResults; public static string LibaryFindNpcLimit5; + public static string LibaryFindRanch; + public static string LibaryFindRanchResultsHeader; + public static string LibaryFindRanchResultFormat; + public static string LibaryFindRanchResultsNoResults; + + public static string HorseBreedFormat; public static string HorseRelativeFormat; public static string BreedViewerFormat; @@ -1184,6 +1190,11 @@ namespace HISP.Game { return HorseBreedFormat.Replace("%NAME%", name).Replace("%ID%", id.ToString()); } + public static string FormatRanchSearchResult(string name, int x, int y) + { + string mapXy = FormatMapLocation(x, y); + return LibaryFindRanchResultFormat.Replace("%USERNAME%", name).Replace("%MAPXY%", mapXy); + } public static string FormatNpcSearchResult(string name, string desc,int x, int y) { string mapXy = FormatMapLocation(x, y); diff --git a/Horse Isle Server/HorseIsleServer/Game/Meta.cs b/Horse Isle Server/HorseIsleServer/Game/Meta.cs index 4ae2496..e547d01 100755 --- a/Horse Isle Server/HorseIsleServer/Game/Meta.cs +++ b/Horse Isle Server/HorseIsleServer/Game/Meta.cs @@ -489,6 +489,40 @@ namespace HISP.Game message += Messages.MetaTerminator; return message; } + public static string BuildRanchSearchResults(string search) + { + string message = ""; + message += Messages.LibaryFindRanchResultsHeader; + int totalResults = 0; + foreach(Ranch ranch in Ranch.Ranches) + { + if(ranch.OwnerId != -1) + { + string ranchOwnerName = Database.GetUsername(ranch.OwnerId); + if(ranchOwnerName.ToLower().Contains(search.ToLower())) + { + message += Messages.FormatRanchSearchResult(ranchOwnerName, ranch.X, ranch.Y); + totalResults++; + } + } + if (totalResults >= 10) + break; + } + if (totalResults == 0) + message += Messages.LibaryFindRanchResultsNoResults; + + message += Messages.BackToMap; + message += Messages.MetaTerminator; + return message; + } + public static string BuildRanchSearchLibary() + { + string message = ""; + message += Messages.LibaryFindRanch; + message += Messages.BackToMap; + message += Messages.MetaTerminator; + return message; + } public static string BuildAwardsLibary() { string message = ""; diff --git a/Horse Isle Server/HorseIsleServer/Server/GameDataJson.cs b/Horse Isle Server/HorseIsleServer/Server/GameDataJson.cs index 89b1e35..d79d237 100755 --- a/Horse Isle Server/HorseIsleServer/Server/GameDataJson.cs +++ b/Horse Isle Server/HorseIsleServer/Server/GameDataJson.cs @@ -1050,6 +1050,11 @@ namespace HISP.Server Messages.LibaryFindNpcSearchNoResults = gameData.messages.meta.libary.find_npc_no_results; Messages.LibaryFindNpcLimit5 = gameData.messages.meta.libary.find_npc_limit5; + Messages.LibaryFindRanch = gameData.messages.meta.libary.find_ranch; + Messages.LibaryFindRanchResultsHeader = gameData.messages.meta.libary.find_ranch_match_closely; + Messages.LibaryFindRanchResultFormat = gameData.messages.meta.libary.find_ranch_result; + Messages.LibaryFindRanchResultsNoResults = gameData.messages.meta.libary.find_ranch_no_results; + Messages.HorseBreedFormat = gameData.messages.meta.libary.horse_breed_format; Messages.HorseRelativeFormat = gameData.messages.meta.libary.horse_relative_format; Messages.BreedViewerFormat = gameData.messages.meta.libary.breed_preview_format; diff --git a/Horse Isle Server/HorseIsleServer/Server/GameServer.cs b/Horse Isle Server/HorseIsleServer/Server/GameServer.cs index d346bc4..249e05f 100755 --- a/Horse Isle Server/HorseIsleServer/Server/GameServer.cs +++ b/Horse Isle Server/HorseIsleServer/Server/GameServer.cs @@ -1194,7 +1194,8 @@ namespace HISP.Server } byte[] descriptionEditedMessage = PacketBuilder.CreateChat(Messages.RanchSavedRanchDescripton, PacketBuilder.CHAT_BOTTOM_RIGHT); sender.SendPacket(descriptionEditedMessage); - UpdateArea(sender); + // Completely forgot! public server opens your stats menu when you save your ranch info like DUH!! + UpdateStats(sender); } else { @@ -1234,6 +1235,20 @@ namespace HISP.Server Logger.ErrorPrint(sender.LoggedinUser.Username + " Tried to send a invalid dynamic input (private notes, wrong size)"); break; } + case 13: // Libary Ranch Search + if (dynamicInput.Length >= 2) + { + string searchQuery = dynamicInput[1]; + sender.LoggedinUser.MetaPriority = true; + byte[] serachResponse = PacketBuilder.CreateMetaPacket(Meta.BuildRanchSearchResults(searchQuery)); + sender.SendPacket(serachResponse); + break; + } + else + { + Logger.ErrorPrint(sender.LoggedinUser.Username + " Tried to send a invalid dynamic input (private notes, wrong size)"); + break; + } case 14: if(dynamicInput.Length >= 1) { @@ -1484,12 +1499,17 @@ namespace HISP.Server sender.SendPacket(metaPacket); } break; + case "31": + sender.LoggedinUser.MetaPriority = true; + metaPacket = PacketBuilder.CreateMetaPacket(Meta.BuildRanchSearchLibary()); + sender.SendPacket(metaPacket); + break; case "35": // Buddy List sender.LoggedinUser.MetaPriority = true; metaPacket = PacketBuilder.CreateMetaPacket(Meta.BuildBuddyList(sender.LoggedinUser)); sender.SendPacket(metaPacket); break; - case "36": + case "36": // Nearby list sender.LoggedinUser.MetaPriority = true; metaPacket = PacketBuilder.CreateMetaPacket(Meta.BuildNearbyList(sender.LoggedinUser)); sender.SendPacket(metaPacket);