From afc232352d461e89e79f3f106b229828911affde Mon Sep 17 00:00:00 2001 From: SilicaAndPina Date: Fri, 12 Feb 2021 21:47:42 +1300 Subject: [PATCH] Fix Training not showing in barns. Fix Crash on invalid ranch loading Add "Player here" click message. --- DataCollection/gamedata.json | 3 ++- Horse Isle Server/HorseIsleServer/Game/Messages.cs | 8 ++++++++ Horse Isle Server/HorseIsleServer/Game/Meta.cs | 7 +++++++ Horse Isle Server/HorseIsleServer/Game/Ranch.cs | 9 +++++++++ Horse Isle Server/HorseIsleServer/Server/GameDataJson.cs | 3 +++ Horse Isle Server/HorseIsleServer/Server/GameServer.cs | 6 +++++- 6 files changed, 34 insertions(+), 2 deletions(-) diff --git a/DataCollection/gamedata.json b/DataCollection/gamedata.json index 59cf044..218a26c 100755 --- a/DataCollection/gamedata.json +++ b/DataCollection/gamedata.json @@ -12,6 +12,7 @@ "playtime_timeout":"You have run out of playtime for now. In one minute you will be disconnected. You gain one minute of playtime every 8 minutes. Please come back later!", "random_movement":"You are sooo %STAT%. You wander dizzily in a different direction.", "incorrect_password":"Incorrect. You will have to find the correct answer somewhere...", + "player_here":"%USERNAME% here", "treasure":{ "pirate_treasure":"Wow! You found buried treasure worth $%PRIZE%! Gotta love those pirates!", "pot_of_gold":"YEA! You found the fabled pot of gold at the end of the rainbow! It was worth $%PRIZE%!" @@ -2406,7 +2407,7 @@ "categorys":[ {"name":"LEASED","message":"^LLEASED - Horses only temporarily cared for, limited use:^R1","message_others":"^LLEASED - Horses only temporarily cared for, limited use:^R1"}, {"name":"KEEPER","message":"^LKEEPERS - Horses I would not sell for any price:^R1","message_others":"^LKEEPERS - Horses not for sale for any price^R1"}, - {"name":"TRAINING","message":"^LTRAINING - Horses I am actively training and competing with:^R1","message_others":"TRAINING - Horses actively being trained and competed with:^R1"}, + {"name":"TRAINING","message":"^LTRAINING - Horses I am actively training and competing with:^R1","message_others":"^LTRAINING - Horses actively being trained and competed with:^R1"}, {"name":"TRADING","message":"^LTRADING - Horses I am trading or auctioning:^R1","message_others":"^LTRADING - Horses for trading or auctioning:^R1"}, {"name":"RETIRED","message":"^LRETIRED - Horses that are still special to me but not used:^R1","message_others":"^LRETIRED - Horses that are still special to player but not used:^R1"} ], diff --git a/Horse Isle Server/HorseIsleServer/Game/Messages.cs b/Horse Isle Server/HorseIsleServer/Game/Messages.cs index b3d4cdd..1f274ab 100755 --- a/Horse Isle Server/HorseIsleServer/Game/Messages.cs +++ b/Horse Isle Server/HorseIsleServer/Game/Messages.cs @@ -12,6 +12,9 @@ namespace HISP.Game // Mod isle public static string ModIsleMessage; + // Click + public static string PlayerHereFormat; + // Ranch public static string RanchUnownedRanchFormat; public static string RanchYouCouldPurchaseThisRanch; @@ -682,6 +685,11 @@ namespace HISP.Game public static string NothingInterestingHere; + public static string FormatPlayerHereMessage(string playerName) + { + return PlayerHereFormat.Replace("%USERNAME%", playerName); + } + // Farrier Formats public static string FormatFarrierPutOnSteelShoesAllMesssage(int curShoes, int maxShoes) { diff --git a/Horse Isle Server/HorseIsleServer/Game/Meta.cs b/Horse Isle Server/HorseIsleServer/Game/Meta.cs index 6362427..40aa606 100755 --- a/Horse Isle Server/HorseIsleServer/Game/Meta.cs +++ b/Horse Isle Server/HorseIsleServer/Game/Meta.cs @@ -1197,6 +1197,13 @@ namespace HISP.Game { string message = ""; + + if(!Ranch.RanchExists(ranchId)) // Ghost ranchs exist.. apparently? + { + user.MetaPriority = false; + return BuildMetaInfo(user, user.X, user.Y); + } + Ranch ranch = Ranch.GetRanchById(ranchId); bool mine = (ranch.OwnerId == user.Id); string swfModule = ranch.GetSwf(mine); diff --git a/Horse Isle Server/HorseIsleServer/Game/Ranch.cs b/Horse Isle Server/HorseIsleServer/Game/Ranch.cs index 0fe631f..111d17d 100644 --- a/Horse Isle Server/HorseIsleServer/Game/Ranch.cs +++ b/Horse Isle Server/HorseIsleServer/Game/Ranch.cs @@ -405,6 +405,15 @@ namespace HISP.Game } return false; } + public static bool RanchExists(int ranchId) + { + foreach (Ranch ranch in Ranches) + { + if (ranch.Id == ranchId) + return true; + } + return false; + } public static Ranch GetRanchById(int ranchId) { foreach (Ranch ranch in Ranches) diff --git a/Horse Isle Server/HorseIsleServer/Server/GameDataJson.cs b/Horse Isle Server/HorseIsleServer/Server/GameDataJson.cs index c716b21..62723c1 100755 --- a/Horse Isle Server/HorseIsleServer/Server/GameDataJson.cs +++ b/Horse Isle Server/HorseIsleServer/Server/GameDataJson.cs @@ -686,6 +686,9 @@ namespace HISP.Server Map.ModIsleX = gameData.messages.commands.mod_isle.x; Map.ModIsleY = gameData.messages.commands.mod_isle.y; + // Click + Messages.PlayerHereFormat = gameData.messages.player_here; + // Ranch Messages.RanchUnownedRanchFormat = gameData.messages.meta.ranch.unowned_ranch; Messages.RanchYouCouldPurchaseThisRanch = gameData.messages.meta.ranch.you_could_purchase_this; diff --git a/Horse Isle Server/HorseIsleServer/Server/GameServer.cs b/Horse Isle Server/HorseIsleServer/Server/GameServer.cs index 8d69646..f82af2b 100755 --- a/Horse Isle Server/HorseIsleServer/Server/GameServer.cs +++ b/Horse Isle Server/HorseIsleServer/Server/GameServer.cs @@ -3618,7 +3618,7 @@ namespace HISP.Server if (tile.Title != null) returnedMsg = tile.Title; } - if(Ranch.IsRanchHere(x, y)) + if(Ranch.IsRanchHere(x, y)) // Ranch here? { Ranch ranch = Ranch.GetRanchAt(x, y); if(ranch.OwnerId == -1) @@ -3633,6 +3633,10 @@ namespace HISP.Server returnedMsg = Messages.FormatRanchClickMessage(Database.GetUsername(ranch.OwnerId), title); } } + if(GetUsersAt(x,y, false, true).Length > 0) // Player here? + { + returnedMsg = Messages.FormatPlayerHereMessage(GetUsersAt(x, y, false, true)[0].Username); + } byte[] tileInfoPacket = PacketBuilder.CreateClickTileInfoPacket(returnedMsg); sender.SendPacket(tileInfoPacket);