From c3585b655a785330a0f40358481d79ff25e3ea7e Mon Sep 17 00:00:00 2001 From: SilicaAndPina Date: Tue, 23 Feb 2021 10:46:55 +1300 Subject: [PATCH] "Players Here" shows up, but doesnt do anything --- DataCollection/gamedata.json | 5 +- .../HorseIsleServer/Game/Messages.cs | 49 ++++++++++++++++- .../HorseIsleServer/Game/Meta.cs | 52 +++++++++++++++++-- .../HorseIsleServer/Player/Friends.cs | 11 +++- .../HorseIsleServer/Player/Trade.cs | 31 +++++++++++ .../HorseIsleServer/Player/User.cs | 2 +- .../HorseIsleServer/Server/GameDataJson.cs | 19 ++++++- 7 files changed, 157 insertions(+), 12 deletions(-) create mode 100644 Horse Isle Server/HorseIsleServer/Player/Trade.cs diff --git a/DataCollection/gamedata.json b/DataCollection/gamedata.json index f0c6251..c21d46e 100755 --- a/DataCollection/gamedata.json +++ b/DataCollection/gamedata.json @@ -216,14 +216,15 @@ "last_poet":"^R1^LLast Player Poet:%USERNAME% ^R1", "hammock":"You and all of your horses have fully rested.", "player_interaction":{ + "players_here":"Players Here:", "menu":"^I%PLAYERICON%^T1%PLAYERNAME%%BUTTONS%^R1", - "queston_button":"^B1L%PLAYERID%", + "multiple_players_menu":"^B5AHUG^B5BDOG PILE^B5CDANCE^B5DHUDDLE^B5EHOWL^R1", + "profiile_button":"^B1L%PLAYERID%", "social_button":"^B1S%PLAYERID%", "trade_button":"^B1T%PLAYERID%", "buddy_button":"^B1B%PLAYERID%", "tag_button":"^B1X%PLAYERID%", "pm_button":"^B1P%PLAYERNAME%", - "multiple_players_menu":"^B5AHUG^B5BDOG PILE^B5CDANCE^B5DHUDDLE^B5EHOWL^R1", "trade":{ "trading_with":"^ATTrading with %PLAYERNAME%^H", diff --git a/Horse Isle Server/HorseIsleServer/Game/Messages.cs b/Horse Isle Server/HorseIsleServer/Game/Messages.cs index 50fd324..9bf93b9 100755 --- a/Horse Isle Server/HorseIsleServer/Game/Messages.cs +++ b/Horse Isle Server/HorseIsleServer/Game/Messages.cs @@ -13,6 +13,18 @@ namespace HISP.Game // Mod isle public static string ModIsleMessage; + // Player Interaction + public static string PlayerHereMenuFormat; + public static string PlayerHereMulitpleMenuFormat; + + public static string PlayerHereProfileButton; + public static string PlayerHereSocialButton; + public static string PlayerHereTradeButton; + public static string PlayerHereAddBuddyButton; + public static string PlayerHereTagButton; + + public static string PlayerHerePmButton; + // Auction House public static string AuctionsRunning; public static string AuctionHorseEntryFormat; @@ -56,7 +68,7 @@ namespace HISP.Game public static string FailedToUnderstandLocation; // Click - public static string PlayerHereFormat; + public static string ClickPlayerHereFormat; // Hammock public static string HammockText; @@ -804,6 +816,7 @@ namespace HISP.Game public static string TownFormat; public static string AreaFormat; public static string LocationFormat; + public static string PlayersHere; public static string NearbyPlayers; public static string North; public static string East; @@ -900,6 +913,38 @@ namespace HISP.Game // Click public static string NothingInterestingHere; + + // Player Interactions + public static string FormatPlayerHerePMButton(string playerName) + { + return PlayerHerePmButton.Replace("%PLAYERNAME%", playerName); + } + public static string FormatPlayerHereTagButton(int playerId) + { + return PlayerHereTagButton.Replace("%PLAYERID%", playerId.ToString()); + } + public static string FormatPlayerHereBuddyButton(int playerId) + { + return PlayerHereAddBuddyButton.Replace("%PLAYERID%", playerId.ToString()); + } + public static string FormatPlayerHereTradeButton(int playerId) + { + return PlayerHereTradeButton.Replace("%PLAYERID%", playerId.ToString()); + } + public static string FormatPlayerHereSocialButtton(int playerId) + { + return PlayerHereSocialButton.Replace("%PLAYERID%", playerId.ToString()); + } + public static string FormatPlayerHereProfileButton(int playerId) + { + return PlayerHereProfileButton.Replace("%PLAYERID%", playerId.ToString()); + } + public static string FormatPlayerHereMenu(int playerIcon, string playerName, string button) + { + return PlayerHereMenuFormat.Replace("%PLAYERICON%", playerIcon.ToString()).Replace("%PLAYERNAME%", playerName).Replace("%BUTTONS%", button); + } + + // Auctions public static string FormatAuctionSoldTo(string playerName, int money) { return AuctionSoldToFormat.Replace("%PLAYERNAME%", playerName).Replace("%PRICE%", money.ToString("N0", CultureInfo.InvariantCulture)); @@ -1115,7 +1160,7 @@ namespace HISP.Game public static string FormatPlayerHereMessage(string playerName) { - return PlayerHereFormat.Replace("%USERNAME%", playerName); + return ClickPlayerHereFormat.Replace("%USERNAME%", playerName); } // Barn Formats diff --git a/Horse Isle Server/HorseIsleServer/Game/Meta.cs b/Horse Isle Server/HorseIsleServer/Game/Meta.cs index afcefc8..6de0cd0 100755 --- a/Horse Isle Server/HorseIsleServer/Game/Meta.cs +++ b/Horse Isle Server/HorseIsleServer/Game/Meta.cs @@ -35,12 +35,48 @@ namespace HISP.Game return locationString; } + private static string buildPlayersHere(User fromUser, int x, int y) + { + string playersHere = ""; + User[] playersAt = GameServer.GetUsersAt(x, y, true, true); + if(playersAt.Length > 1) + { + playersHere += Messages.PlayersHere; + int count = 0; + foreach(User playerAt in playersAt) + { + if (playerAt.Id == fromUser.Id) + continue; + string buttons = ""; + buttons += Messages.FormatPlayerHereProfileButton(playerAt.Id); + buttons += Messages.FormatPlayerHereSocialButtton(playerAt.Id); + buttons += Messages.FormatPlayerHereTradeButton(playerAt.Id); + if (fromUser.Friends.IsFriend(playerAt.Id)) + buttons += Messages.FormatPlayerHereTagButton(playerAt.Id); + else + buttons += Messages.FormatPlayerHereBuddyButton(playerAt.Id); + buttons += Messages.FormatPlayerHerePMButton(playerAt.Username); + + playersHere += Messages.FormatPlayerHereMenu(playerAt.GetPlayerListIcon(), playerAt.Username,buttons); + count++; + } + + if(count >= 2) + playersHere += Messages.PlayerHereMulitpleMenuFormat; + + if (count <= 0) + return ""; + } + + return playersHere; + } private static string buildNearbyString(int x, int y) { string playersNearby = ""; User[] nearbyUsers = GameServer.GetNearbyUsers(x, y, true, true); + int count = 0; if (nearbyUsers.Length > 1) { playersNearby += Messages.Seperator; @@ -71,6 +107,9 @@ namespace HISP.Game usersSouth += " " + nearbyUser.Username + " "; else if (angle >= 0 && angle <= 90) usersNorth += " " + nearbyUser.Username + " "; + + + count++; } if (usersEast != "") @@ -85,7 +124,10 @@ namespace HISP.Game } - + if(count <= 0) + { + return ""; + } return playersNearby; } @@ -171,9 +213,10 @@ namespace HISP.Game } - private static string buildCommonInfo(int x, int y) + private static string buildCommonInfo(User user, int x, int y) { string message = ""; + message += buildPlayersHere(user, x, y); message += buildNearbyString(x, y); // Dropped Items @@ -2152,8 +2195,7 @@ namespace HISP.Game message += BuildWildHorseList(user); message += buildNpc(user, x, y); - - message += buildCommonInfo(x, y); + message += buildCommonInfo(user, x, y); return message; } public static string BuildPawneerOrderFound(HorseInstance instance) @@ -2408,7 +2450,7 @@ namespace HISP.Game message += npc; if (specialTile.Code == null || specialTile.Code == "") - message += buildCommonInfo(specialTile.X, specialTile.Y); + message += buildCommonInfo(user, specialTile.X, specialTile.Y); else { diff --git a/Horse Isle Server/HorseIsleServer/Player/Friends.cs b/Horse Isle Server/HorseIsleServer/Player/Friends.cs index 81ae08e..4120c21 100755 --- a/Horse Isle Server/HorseIsleServer/Player/Friends.cs +++ b/Horse Isle Server/HorseIsleServer/Player/Friends.cs @@ -29,6 +29,14 @@ namespace HISP.Player } + public bool IsFriend(int friendUserId) + { + foreach (int userId in List) + if (userId == friendUserId) + return true; + return false; + } + public void RemoveFriend(int userid) { Database.RemoveBuddy(baseUser.Id, userid); @@ -39,9 +47,10 @@ namespace HISP.Player User removeFrom = GameServer.GetUserById(userid); removeFrom.Friends.List.Remove(baseUser.Id); + } catch (KeyNotFoundException) { /* User is ofline, remove from database is sufficent */ }; - + baseUser.Friends.List.Remove(userid); } diff --git a/Horse Isle Server/HorseIsleServer/Player/Trade.cs b/Horse Isle Server/HorseIsleServer/Player/Trade.cs new file mode 100644 index 0000000..e8ae1fc --- /dev/null +++ b/Horse Isle Server/HorseIsleServer/Player/Trade.cs @@ -0,0 +1,31 @@ +using HISP.Game.Horse; +using HISP.Game.Items; +using HISP.Security; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace HISP.Player +{ + public class Trade + { + public Trade(User me) + { + RandomId = RandomID.NextRandomId(); + Trader = me; + } + + public int RandomId; + public User Trader; + public Trade OtherTrade; + + public string Stage = "OPEN"; + + public int MoenyOffered = 0; + public List HorsesOffered = new List(); + public List ItemsOffered = new List(); + + } +} diff --git a/Horse Isle Server/HorseIsleServer/Player/User.cs b/Horse Isle Server/HorseIsleServer/Player/User.cs index 3713a9c..40b5230 100755 --- a/Horse Isle Server/HorseIsleServer/Player/User.cs +++ b/Horse Isle Server/HorseIsleServer/Player/User.cs @@ -420,7 +420,7 @@ namespace HISP.Player private int thirst; private int tired; - + public Trade TradingWith = null; public byte[] SecCodeSeeds = new byte[3]; public int SecCodeInc = 0; public int SecCodeCount = 0; diff --git a/Horse Isle Server/HorseIsleServer/Server/GameDataJson.cs b/Horse Isle Server/HorseIsleServer/Server/GameDataJson.cs index fd657d3..3619b9b 100755 --- a/Horse Isle Server/HorseIsleServer/Server/GameDataJson.cs +++ b/Horse Isle Server/HorseIsleServer/Server/GameDataJson.cs @@ -806,21 +806,37 @@ namespace HISP.Server Item.Earthworm = gameData.item.special.earthworm; // New Users + Messages.NewUserMessage = gameData.messages.new_user.starting_message; Map.NewUserStartX = gameData.messages.new_user.starting_x; Map.NewUserStartY = gameData.messages.new_user.starting_y; // Warp Command + Messages.SuccessfullyWarpedToPlayer = gameData.messages.commands.warp.player; Messages.SuccessfullyWarpedToLocation = gameData.messages.commands.warp.location; Messages.OnlyUnicornCanWarp = gameData.messages.commands.warp.only_unicorn; Messages.FailedToUnderstandLocation = gameData.messages.commands.warp.location_unknown; // Mod Isle + Messages.ModIsleMessage = gameData.messages.commands.mod_isle.message; Map.ModIsleX = gameData.messages.commands.mod_isle.x; Map.ModIsleY = gameData.messages.commands.mod_isle.y; + // Player Interation + + Messages.PlayerHereMenuFormat = gameData.messages.meta.player_interaction.menu; + Messages.PlayerHereMulitpleMenuFormat = gameData.messages.meta.player_interaction.multiple_players_menu; + + Messages.PlayerHereProfileButton = gameData.messages.meta.player_interaction.profiile_button; + Messages.PlayerHereSocialButton = gameData.messages.meta.player_interaction.social_button; + 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; + + // Auction Messages.AuctionsRunning = gameData.messages.meta.auction.auctions_running; Messages.AuctionPlayersHereFormat = gameData.messages.meta.auction.players_here; @@ -957,7 +973,7 @@ namespace HISP.Server Messages.MailRippedMessage = gameData.messages.meta.mail.mail_ripped; // Click - Messages.PlayerHereFormat = gameData.messages.player_here; + Messages.ClickPlayerHereFormat = gameData.messages.player_here; // Ranch @@ -1565,6 +1581,7 @@ namespace HISP.Server Messages.LongFullLine = gameData.messages.meta.long_full_line; Messages.MetaTerminator = gameData.messages.meta.end_of_meta; + Messages.PlayersHere = gameData.messages.meta.player_interaction.players_here; Messages.NearbyPlayers = gameData.messages.meta.nearby.players_nearby; Messages.North = gameData.messages.meta.nearby.north; Messages.East = gameData.messages.meta.nearby.east;