From 84250eb17e19c34905096e7afbb9702407cd8341 Mon Sep 17 00:00:00 2001
From: Bluzume <39113159+KuromeSan@users.noreply.github.com>
Date: Sun, 7 Nov 2021 18:42:36 -0500
Subject: [PATCH 1/9] Fix awards and icons
---
HorseIsleData | 2 +-
HorseIsleServer/HorseIsleServer/Game/Chat/Command.cs | 6 ++++++
HorseIsleServer/HorseIsleServer/Game/Messages.cs | 5 +++++
HorseIsleServer/HorseIsleServer/Game/Meta.cs | 8 +++++---
HorseIsleServer/HorseIsleServer/Player/User.cs | 4 ++--
HorseIsleServer/HorseIsleServer/Server/GameDataJson.cs | 1 +
6 files changed, 20 insertions(+), 6 deletions(-)
diff --git a/HorseIsleData b/HorseIsleData
index 0f92689..a044032 160000
--- a/HorseIsleData
+++ b/HorseIsleData
@@ -1 +1 @@
-Subproject commit 0f9268907fb3cd9d0da9c8ab1cba8308de0e5656
+Subproject commit a044032daca22e2d76d54d1e5e073e6527eb43de
diff --git a/HorseIsleServer/HorseIsleServer/Game/Chat/Command.cs b/HorseIsleServer/HorseIsleServer/Game/Chat/Command.cs
index 11a5a85..f8d54b1 100644
--- a/HorseIsleServer/HorseIsleServer/Game/Chat/Command.cs
+++ b/HorseIsleServer/HorseIsleServer/Game/Chat/Command.cs
@@ -511,6 +511,12 @@ namespace HISP.Game.Chat
case "PERSONALITY":
instance.AdvancedStats.Personality = amount;
break;
+ case "HEIGHT":
+ instance.AdvancedStats.Height = amount;
+ break;
+ case "COLOR":
+ instance.Color = args[2].ToLower();
+ break;
case "EXPERIENCE":
instance.BasicStats.Experience = amount;
break;
diff --git a/HorseIsleServer/HorseIsleServer/Game/Messages.cs b/HorseIsleServer/HorseIsleServer/Game/Messages.cs
index 52b9520..1137099 100644
--- a/HorseIsleServer/HorseIsleServer/Game/Messages.cs
+++ b/HorseIsleServer/HorseIsleServer/Game/Messages.cs
@@ -997,6 +997,7 @@ namespace HISP.Game
// Awards
+ public static string AwardOthersFormat;
public static string AwardHeader;
public static string NoAwards;
public static string AwardFormat;
@@ -2514,6 +2515,10 @@ namespace HISP.Game
{
return ConsumeItemFormat.Replace("%ITEM%", itemName);
}
+ public static string FormatAwardHeaderOthers(string username)
+ {
+ return AwardOthersFormat.Replace("%USERNAME%", username);
+ }
public static string FormatAwardEntry(int iconId, string title, int moneyBonus)
{
return AwardFormat.Replace("%ICON%", iconId.ToString()).Replace("%NAME%", title).Replace("%BONUS%", moneyBonus.ToString("N0", CultureInfo.InvariantCulture));
diff --git a/HorseIsleServer/HorseIsleServer/Game/Meta.cs b/HorseIsleServer/HorseIsleServer/Game/Meta.cs
index 70cd8aa..d014830 100644
--- a/HorseIsleServer/HorseIsleServer/Game/Meta.cs
+++ b/HorseIsleServer/HorseIsleServer/Game/Meta.cs
@@ -1056,6 +1056,11 @@ namespace HISP.Game
message += Messages.FormatOtherHorsesMeta(pronoun);
message += buildHorseList(user, false);
+
+ message += Messages.FormatAwardHeaderOthers(user.Username);
+ foreach (Award.AwardEntry award in user.Awards.AwardsEarned)
+ message += Messages.FormatAwardEntry(award.IconId, award.Title, award.MoneyBonus);
+
}
@@ -1089,9 +1094,6 @@ namespace HISP.Game
foreach (Award.AwardEntry award in user.Awards.AwardsEarned)
message += Messages.FormatAwardEntry(award.IconId, award.Title, award.MoneyBonus);
-
-
-
message += Messages.BackToMap;
message += Messages.MetaTerminator;
return message;
diff --git a/HorseIsleServer/HorseIsleServer/Player/User.cs b/HorseIsleServer/HorseIsleServer/Player/User.cs
index adfb16e..a31df82 100644
--- a/HorseIsleServer/HorseIsleServer/Player/User.cs
+++ b/HorseIsleServer/HorseIsleServer/Player/User.cs
@@ -525,12 +525,12 @@ namespace HISP.Player
icon = Messages.NewUserIcon;
if (Subscribed)
{
- int months = (DateTime.UtcNow.Month - SubscribedUntil.Month) + 12 * (DateTime.UtcNow.Year - SubscribedUntil.Year);
+ int months = (SubscribedUntil.Month - DateTime.UtcNow.Month) + ((SubscribedUntil.Year - DateTime.UtcNow.Year) * 12);
if (months <= 1)
icon = Messages.MonthSubscriptionIcon;
else if (months <= 3)
icon = Messages.ThreeMonthSubscripitionIcon;
- else
+ else if(months <= (12+3))
icon = Messages.YearSubscriptionIcon;
}
if (Moderator)
diff --git a/HorseIsleServer/HorseIsleServer/Server/GameDataJson.cs b/HorseIsleServer/HorseIsleServer/Server/GameDataJson.cs
index adb74fe..47c8008 100644
--- a/HorseIsleServer/HorseIsleServer/Server/GameDataJson.cs
+++ b/HorseIsleServer/HorseIsleServer/Server/GameDataJson.cs
@@ -2042,6 +2042,7 @@ namespace HISP.Server
// Awards
Messages.AwardHeader = gameData.messages.meta.awards_page.awards_header;
+ Messages.AwardOthersFormat = gameData.messages.meta.awards_page.awards_head;
Messages.NoAwards = gameData.messages.meta.awards_page.no_awards;
Messages.AwardFormat = gameData.messages.meta.awards_page.award_format;
From 763b3ec9e30c72a5bd085440c0c2fc8401c5b1c2 Mon Sep 17 00:00:00 2001
From: Bluzume <39113159+KuromeSan@users.noreply.github.com>
Date: Sun, 7 Nov 2021 18:44:48 -0500
Subject: [PATCH 2/9] Fix icons
---
HorseIsleServer/HorseIsleServer/Player/User.cs | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/HorseIsleServer/HorseIsleServer/Player/User.cs b/HorseIsleServer/HorseIsleServer/Player/User.cs
index a31df82..de9b72f 100644
--- a/HorseIsleServer/HorseIsleServer/Player/User.cs
+++ b/HorseIsleServer/HorseIsleServer/Player/User.cs
@@ -526,12 +526,12 @@ namespace HISP.Player
if (Subscribed)
{
int months = (SubscribedUntil.Month - DateTime.UtcNow.Month) + ((SubscribedUntil.Year - DateTime.UtcNow.Year) * 12);
- if (months <= 1)
- icon = Messages.MonthSubscriptionIcon;
- else if (months <= 3)
+ if (months >= 3)
icon = Messages.ThreeMonthSubscripitionIcon;
- else if(months <= (12+3))
+ else if(months >= (12+3))
icon = Messages.YearSubscriptionIcon;
+ else
+ icon = Messages.MonthSubscriptionIcon;
}
if (Moderator)
icon = Messages.ModeratorIcon;
From 0df62c80c6f1094677e3d5381c70cbbb0f28466f Mon Sep 17 00:00:00 2001
From: Bluzume <39113159+KuromeSan@users.noreply.github.com>
Date: Sun, 7 Nov 2021 22:41:36 -0500
Subject: [PATCH 3/9] Various fixes
---
HorseIsleData | 2 +-
.../HorseIsleServer/Game/Chat/Chat.cs | 4 +-
.../HorseIsleServer/Game/Chat/Command.cs | 53 +++++-
.../Game/Events/RealTimeRiddle.cs | 13 +-
.../HorseIsleServer/Game/Messages.cs | 1 +
HorseIsleServer/HorseIsleServer/Game/Meta.cs | 15 +-
.../HorseIsleServer/Player/Trade.cs | 8 +-
.../HorseIsleServer/Server/GameClient.cs | 179 ++++++++++--------
.../HorseIsleServer/Server/GameDataJson.cs | 3 +-
.../HorseIsleServer/Server/GameServer.cs | 14 ++
HorseIsleWeb | 2 +-
11 files changed, 181 insertions(+), 113 deletions(-)
diff --git a/HorseIsleData b/HorseIsleData
index a044032..d44f610 160000
--- a/HorseIsleData
+++ b/HorseIsleData
@@ -1 +1 @@
-Subproject commit a044032daca22e2d76d54d1e5e073e6527eb43de
+Subproject commit d44f6107e607e3e23c137f4678235c12965af533
diff --git a/HorseIsleServer/HorseIsleServer/Game/Chat/Chat.cs b/HorseIsleServer/HorseIsleServer/Game/Chat/Chat.cs
index b161eed..d027129 100644
--- a/HorseIsleServer/HorseIsleServer/Game/Chat/Chat.cs
+++ b/HorseIsleServer/HorseIsleServer/Game/Chat/Chat.cs
@@ -101,7 +101,7 @@ namespace HISP.Game.Chat
if (message.ToUpper().StartsWith("%RULES"))
return Command.Rules(message, args, user);
if (message.ToUpper().StartsWith("%PRISON"))
- return Command.Prision(message, args, user);
+ return Command.Prison(message, args, user);
if (message.ToUpper().StartsWith("%NOCLIP"))
return Command.NoClip(message, args, user);
if (message.ToUpper().StartsWith("%STEALTH"))
@@ -114,6 +114,8 @@ namespace HISP.Game.Chat
return Command.Escape(message, args, user);
if (message.ToUpper().StartsWith("%MODHORSE"))
return Command.ModHorse(message, args, user);
+ if (message.ToUpper().StartsWith("%DELITEM"))
+ return Command.DelItem(message, args, user);
if (message.ToUpper().StartsWith("%CALL HORSE"))
return Command.CallHorse(message, args, user);
return false;
diff --git a/HorseIsleServer/HorseIsleServer/Game/Chat/Command.cs b/HorseIsleServer/HorseIsleServer/Game/Chat/Command.cs
index f8d54b1..fff1882 100644
--- a/HorseIsleServer/HorseIsleServer/Game/Chat/Command.cs
+++ b/HorseIsleServer/HorseIsleServer/Game/Chat/Command.cs
@@ -6,6 +6,7 @@ using System.Collections.Generic;
using HISP.Game.Events;
using HISP.Game.Horse;
using System.Linq;
+using HISP.Game.Inventory;
namespace HISP.Game.Chat
{
@@ -20,7 +21,7 @@ namespace HISP.Game.Chat
continue;
if (client.LoggedIn)
{
- if (client.LoggedinUser.Username.ToLower().Contains(name.ToLower()))
+ if (client.LoggedinUser.Username.ToLower().StartsWith(name.ToLower()))
{
return client.LoggedinUser;
}
@@ -286,7 +287,7 @@ namespace HISP.Game.Chat
return true;
}
- public static bool Prision(string message, string[] args, User user)
+ public static bool Prison(string message, string[] args, User user)
{
if (!(user.Administrator || user.Moderator))
return false;
@@ -368,7 +369,41 @@ namespace HISP.Game.Chat
return true;
}
+ public static bool DelItem(string message, string[] args, User user)
+ {
+ if (args.Length <= 0)
+ return false;
+ if (!user.Administrator)
+ return false;
+ int itemId = 0;
+ try
+ {
+ itemId = int.Parse(args[0]);
+ User target = user;
+ if (args.Length > 1)
+ target = findNamePartial(args[1]);
+
+ if (target.Inventory.HasItemId(itemId))
+ {
+ InventoryItem itm = target.Inventory.GetItemByItemId(itemId);
+
+ foreach (ItemInstance instance in itm.ItemInstances)
+ {
+ itm.RemoveItem(instance);
+ }
+ }
+ }
+ catch (Exception)
+ {
+ return false;
+ }
+
+ byte[] chatPacket = PacketBuilder.CreateChat(Messages.FormatAdminCommandCompleteMessage(message.Substring(1)), PacketBuilder.CHAT_BOTTOM_LEFT);
+ user.LoggedinClient.SendPacket(chatPacket);
+
+ return true;
+ }
public static bool Goto(string message, string[] args, User user)
{
if (args.Length <= 0)
@@ -464,7 +499,6 @@ namespace HISP.Game.Chat
byte[] chatPacket = PacketBuilder.CreateChat(Messages.FormatAdminCommandCompleteMessage(message.Substring(1)), PacketBuilder.CHAT_BOTTOM_LEFT);
user.LoggedinClient.SendPacket(chatPacket);
-
return true;
}
@@ -483,7 +517,8 @@ namespace HISP.Game.Chat
try
{
id = int.Parse(args[0]);
- amount = int.Parse(args[2]);
+ if(args[1].ToUpper() == "COLOR")
+ amount = int.Parse(args[2]);
}
catch (Exception)
{
@@ -546,6 +581,7 @@ namespace HISP.Game.Chat
user.LoggedinClient.SendPacket(chatPacket);
return true;
}
+
public static bool Warp(string message, string[] args, User user)
{
@@ -577,10 +613,13 @@ namespace HISP.Game.Chat
}
else
{
- string areaName = string.Join(" ", args).ToLower();
+ string areaName = string.Join(" ", args).ToLower();
+ areaName = areaName.Trim();
+ if (areaName == "")
+ areaName = "Horse Isle";
try
{
- User tp = findNamePartial(areaName);
+ User tp = GameServer.GetUserByName(areaName);
user.Teleport(tp.X, tp.Y);
formattedmessage += Messages.SuccessfullyWarpedToPlayer;
@@ -591,7 +630,7 @@ namespace HISP.Game.Chat
{
foreach (World.Waypoint waypoint in World.Waypoints)
{
- if (waypoint.Name.ToLower().Contains(areaName))
+ if (waypoint.Name.ToLower().StartsWith(areaName))
{
user.Teleport(waypoint.PosX, waypoint.PosY);
formattedmessage += Messages.SuccessfullyWarpedToLocation;
diff --git a/HorseIsleServer/HorseIsleServer/Game/Events/RealTimeRiddle.cs b/HorseIsleServer/HorseIsleServer/Game/Events/RealTimeRiddle.cs
index d38a56c..0049830 100644
--- a/HorseIsleServer/HorseIsleServer/Game/Events/RealTimeRiddle.cs
+++ b/HorseIsleServer/HorseIsleServer/Game/Events/RealTimeRiddle.cs
@@ -57,7 +57,11 @@ namespace HISP.Game.Events
return;
if (Database.HasPlayerCompletedRealTimeRiddle(RiddleId, winner.Id))
+ {
+ byte[] alreadyWonRiddleMessage = PacketBuilder.CreateChat(Messages.EventAlreadySovledRealTimeRiddle, PacketBuilder.CHAT_BOTTOM_RIGHT);
+ winner.LoggedinClient.SendPacket(alreadyWonRiddleMessage);
return;
+ }
LastWon = true;
@@ -86,10 +90,13 @@ namespace HISP.Game.Events
}
public void EndEvent()
{
- Active = false;
+ if(Active)
+ {
+ Active = false;
- riddleTimeout.Dispose();
- riddleTimeout = null;
+ riddleTimeout.Dispose();
+ riddleTimeout = null;
+ }
}
private void riddleTimedOut(object state)
diff --git a/HorseIsleServer/HorseIsleServer/Game/Messages.cs b/HorseIsleServer/HorseIsleServer/Game/Messages.cs
index 1137099..bf2d2d8 100644
--- a/HorseIsleServer/HorseIsleServer/Game/Messages.cs
+++ b/HorseIsleServer/HorseIsleServer/Game/Messages.cs
@@ -119,6 +119,7 @@ namespace HISP.Game
public static string EventEndRealTimeRiddle;
public static string EventWonRealTimeRiddleForOthersFormat;
public static string EventWonRealTimeRiddleForYouFormat;
+ public static string EventAlreadySovledRealTimeRiddle;
// Events : Tack Shop Giveaway
public static string EventStartTackShopGiveawayFormat;
diff --git a/HorseIsleServer/HorseIsleServer/Game/Meta.cs b/HorseIsleServer/HorseIsleServer/Game/Meta.cs
index d014830..4bcff3c 100644
--- a/HorseIsleServer/HorseIsleServer/Game/Meta.cs
+++ b/HorseIsleServer/HorseIsleServer/Game/Meta.cs
@@ -525,7 +525,7 @@ namespace HISP.Game
message += Messages.FormatTradeOfferHorse(horse.Name, tacked, horse.RandomId);
}
- if(trade.Trader.Inventory.Count >= trade.Trader.MaxItems)
+ if(trade.OtherTrade.Trader.Inventory.Count >= trade.OtherTrade.Trader.MaxItems)
{
message += Messages.TradeOfferItemOtherPlayerInvFull;
}
@@ -1762,6 +1762,7 @@ namespace HISP.Game
if (mine) // This is My DS.
{
+ GameServer.CheckMail(user);
user.DoRanchActions();
string title = ranch.Title;
@@ -2799,17 +2800,7 @@ namespace HISP.Game
}
private static string buildTownHall(User user)
{
- if(user.MailBox.UnreadMailCount > 0)
- {
-
- byte[] RipOffAOLSound = PacketBuilder.CreatePlaysoundPacket(Messages.MailSe);
- user.LoggedinClient.SendPacket(RipOffAOLSound);
-
- byte[] mailReceivedText = PacketBuilder.CreateChat(Messages.MailReceivedMessage, PacketBuilder.CHAT_BOTTOM_RIGHT);
- user.LoggedinClient.SendPacket(mailReceivedText);
-
- user.MailBox.ReadAllMail();
- }
+ GameServer.CheckMail(user);
string message = Messages.CityHallMenu;
message += Messages.ExitThisPlace;
diff --git a/HorseIsleServer/HorseIsleServer/Player/Trade.cs b/HorseIsleServer/HorseIsleServer/Player/Trade.cs
index e7b67b2..f4afeb0 100644
--- a/HorseIsleServer/HorseIsleServer/Player/Trade.cs
+++ b/HorseIsleServer/HorseIsleServer/Player/Trade.cs
@@ -112,13 +112,13 @@ namespace HISP.Player
Trader.LoggedinClient.SendPacket(tradeYouHaveTooManyHorses);
fail = true;
}
- if(OtherTrade.Trader.Money + MoneyOffered > 2100000000)
+ if(MoneyOffered > 0 && OtherTrade.Trader.Money + MoneyOffered > 2100000000)
{
byte[] tradeOtherHasTooMuchMoney = PacketBuilder.CreateChat(Messages.TradeWillGiveOtherTooMuchMoney, PacketBuilder.CHAT_BOTTOM_RIGHT);
Trader.LoggedinClient.SendPacket(tradeOtherHasTooMuchMoney);
fail = true;
}
- if(Trader.Money + OtherTrade.MoneyOffered > 2100000000)
+ if(OtherTrade.MoneyOffered > 0 && Trader.Money + OtherTrade.MoneyOffered > 2100000000)
{
byte[] tradeYouHasTooMuchMoney = PacketBuilder.CreateChat(Messages.TradeWillGiveYouTooMuchMoney, PacketBuilder.CHAT_BOTTOM_RIGHT);
Trader.LoggedinClient.SendPacket(tradeYouHasTooMuchMoney);
@@ -135,7 +135,7 @@ namespace HISP.Player
if (Trader.Inventory.HasItemId(inst[0].ItemId))
{
InventoryItem items = Trader.Inventory.GetItemByItemId(inst[0].ItemId);
- if (items.ItemInstances.Length + inst.Length >= ConfigReader.MAX_STACK)
+ if (items.ItemInstances.Length + inst.Length > ConfigReader.MAX_STACK)
{
itemYouFail = true;
}
@@ -155,7 +155,7 @@ namespace HISP.Player
if (OtherTrade.Trader.Inventory.HasItemId(inst[0].ItemId))
{
InventoryItem items = OtherTrade.Trader.Inventory.GetItemByItemId(inst[0].ItemId);
- if (items.ItemInstances.Length + inst.Length >= ConfigReader.MAX_STACK)
+ if (items.ItemInstances.Length + inst.Length > ConfigReader.MAX_STACK)
{
itemOtherFail = true;
}
diff --git a/HorseIsleServer/HorseIsleServer/Server/GameClient.cs b/HorseIsleServer/HorseIsleServer/Server/GameClient.cs
index ac57c57..25ae302 100644
--- a/HorseIsleServer/HorseIsleServer/Server/GameClient.cs
+++ b/HorseIsleServer/HorseIsleServer/Server/GameClient.cs
@@ -409,96 +409,109 @@ namespace HISP.Server
if (warnTimer != null && identifier != PacketBuilder.PACKET_KEEP_ALIVE)
warnTimer.Change(warnInterval, warnInterval);
- if (!LoggedIn) // Must be either login or policy-file-request
+ try
{
- if (Encoding.UTF8.GetString(Packet).StartsWith("")) // Policy File Request
+ if (!LoggedIn) // Must be either login or policy-file-request
{
- GameServer.OnCrossdomainPolicyRequest(this);
+ if (Encoding.UTF8.GetString(Packet).StartsWith("")) // Policy File Request
+ {
+ GameServer.OnCrossdomainPolicyRequest(this);
+ }
+ switch (identifier)
+ {
+ case PacketBuilder.PACKET_LOGIN:
+ GameServer.OnLoginRequest(this, Packet);
+ break;
+ }
}
- switch (identifier)
+ else
{
- case PacketBuilder.PACKET_LOGIN:
- GameServer.OnLoginRequest(this, Packet);
- break;
+ switch (identifier)
+ {
+ case PacketBuilder.PACKET_LOGIN:
+ GameServer.OnUserInfoRequest(this, Packet);
+ break;
+ case PacketBuilder.PACKET_MOVE:
+ GameServer.OnMovementPacket(this, Packet);
+ break;
+ case PacketBuilder.PACKET_PLAYERINFO:
+ GameServer.OnPlayerInfoPacket(this, Packet);
+ break;
+ case PacketBuilder.PACKET_PLAYER:
+ GameServer.OnProfilePacket(this, Packet);
+ break;
+ case PacketBuilder.PACKET_CHAT:
+ GameServer.OnChatPacket(this, Packet);
+ break;
+ case PacketBuilder.PACKET_CLICK:
+ GameServer.OnClickPacket(this, Packet);
+ break;
+ case PacketBuilder.PACKET_KEEP_ALIVE:
+ GameServer.OnKeepAlive(this, Packet);
+ break;
+ case PacketBuilder.PACKET_TRANSPORT:
+ GameServer.OnTransportUsed(this, Packet);
+ break;
+ case PacketBuilder.PACKET_INVENTORY:
+ GameServer.OnInventoryRequested(this, Packet);
+ break;
+ case PacketBuilder.PACKET_DYNAMIC_BUTTON:
+ GameServer.OnDynamicButtonPressed(this, Packet);
+ break;
+ case PacketBuilder.PACKET_DYNAMIC_INPUT:
+ GameServer.OnDynamicInputReceived(this, Packet);
+ break;
+ case PacketBuilder.PACKET_ITEM_INTERACTION:
+ GameServer.OnItemInteraction(this, Packet);
+ break;
+ case PacketBuilder.PACKET_ARENA_SCORE:
+ GameServer.OnArenaScored(this, Packet);
+ break;
+ case PacketBuilder.PACKET_QUIT:
+ GameServer.OnQuitPacket(this, Packet);
+ break;
+ case PacketBuilder.PACKET_NPC:
+ GameServer.OnNpcInteraction(this, Packet);
+ break;
+ case PacketBuilder.PACKET_BIRDMAP:
+ GameServer.OnBirdMapRequested(this, Packet);
+ break;
+ case PacketBuilder.PACKET_SWFMODULE:
+ GameServer.OnSwfModuleCommunication(this, Packet);
+ break;
+ case PacketBuilder.PACKET_HORSE:
+ GameServer.OnHorseInteraction(this, Packet);
+ break;
+ case PacketBuilder.PACKET_WISH:
+ GameServer.OnWish(this, Packet);
+ break;
+ case PacketBuilder.PACKET_RANCH:
+ GameServer.OnRanchPacket(this, Packet);
+ break;
+ case PacketBuilder.PACKET_AUCTION:
+ GameServer.OnAuctionPacket(this, Packet);
+ break;
+ case PacketBuilder.PACKET_PLAYER_INTERACTION:
+ GameServer.OnPlayerInteration(this, Packet);
+ break;
+ case PacketBuilder.PACKET_SOCIALS:
+ GameServer.OnSocialPacket(this, Packet);
+ break;
+ default:
+ Logger.ErrorPrint("Unimplemented Packet: " + BitConverter.ToString(Packet).Replace('-', ' '));
+ break;
+ }
}
+
}
- else
+ catch(Exception e)
{
- switch (identifier)
- {
- case PacketBuilder.PACKET_LOGIN:
- GameServer.OnUserInfoRequest(this, Packet);
- break;
- case PacketBuilder.PACKET_MOVE:
- GameServer.OnMovementPacket(this, Packet);
- break;
- case PacketBuilder.PACKET_PLAYERINFO:
- GameServer.OnPlayerInfoPacket(this, Packet);
- break;
- case PacketBuilder.PACKET_PLAYER:
- GameServer.OnProfilePacket(this, Packet);
- break;
- case PacketBuilder.PACKET_CHAT:
- GameServer.OnChatPacket(this, Packet);
- break;
- case PacketBuilder.PACKET_CLICK:
- GameServer.OnClickPacket(this, Packet);
- break;
- case PacketBuilder.PACKET_KEEP_ALIVE:
- GameServer.OnKeepAlive(this, Packet);
- break;
- case PacketBuilder.PACKET_TRANSPORT:
- GameServer.OnTransportUsed(this, Packet);
- break;
- case PacketBuilder.PACKET_INVENTORY:
- GameServer.OnInventoryRequested(this, Packet);
- break;
- case PacketBuilder.PACKET_DYNAMIC_BUTTON:
- GameServer.OnDynamicButtonPressed(this, Packet);
- break;
- case PacketBuilder.PACKET_DYNAMIC_INPUT:
- GameServer.OnDynamicInputReceived(this, Packet);
- break;
- case PacketBuilder.PACKET_ITEM_INTERACTION:
- GameServer.OnItemInteraction(this,Packet);
- break;
- case PacketBuilder.PACKET_ARENA_SCORE:
- GameServer.OnArenaScored(this, Packet);
- break;
- case PacketBuilder.PACKET_QUIT:
- GameServer.OnQuitPacket(this, Packet);
- break;
- case PacketBuilder.PACKET_NPC:
- GameServer.OnNpcInteraction(this, Packet);
- break;
- case PacketBuilder.PACKET_BIRDMAP:
- GameServer.OnBirdMapRequested(this, Packet);
- break;
- case PacketBuilder.PACKET_SWFMODULE:
- GameServer.OnSwfModuleCommunication(this, Packet);
- break;
- case PacketBuilder.PACKET_HORSE:
- GameServer.OnHorseInteraction(this, Packet);
- break;
- case PacketBuilder.PACKET_WISH:
- GameServer.OnWish(this, Packet);
- break;
- case PacketBuilder.PACKET_RANCH:
- GameServer.OnRanchPacket(this, Packet);
- break;
- case PacketBuilder.PACKET_AUCTION:
- GameServer.OnAuctionPacket(this, Packet);
- break;
- case PacketBuilder.PACKET_PLAYER_INTERACTION:
- GameServer.OnPlayerInteration(this, Packet);
- break;
- case PacketBuilder.PACKET_SOCIALS:
- GameServer.OnSocialPacket(this, Packet);
- break;
- default:
- Logger.ErrorPrint("Unimplemented Packet: " + BitConverter.ToString(Packet).Replace('-', ' '));
- break;
- }
+ Logger.ErrorPrint("Unhandled Exception: " + e.ToString());
+ Logger.ErrorPrint(e.Message);
+ Logger.ErrorPrint("");
+ Logger.ErrorPrint(e.StackTrace);
+
+ Kick("Unhandled Exception: " + e.ToString());
}
}
diff --git a/HorseIsleServer/HorseIsleServer/Server/GameDataJson.cs b/HorseIsleServer/HorseIsleServer/Server/GameDataJson.cs
index 47c8008..310d846 100644
--- a/HorseIsleServer/HorseIsleServer/Server/GameDataJson.cs
+++ b/HorseIsleServer/HorseIsleServer/Server/GameDataJson.cs
@@ -1048,6 +1048,7 @@ namespace HISP.Server
Messages.EventEndRealTimeRiddle = gameData.messages.events.real_time_riddle.event_end;
Messages.EventWonRealTimeRiddleForOthersFormat = gameData.messages.events.real_time_riddle.event_won_others;
Messages.EventWonRealTimeRiddleForYouFormat = gameData.messages.events.real_time_riddle.event_won_you;
+ Messages.EventAlreadySovledRealTimeRiddle = gameData.messages.events.real_time_riddle.event_solved_already;
// Events : Tack Shop Giveaway
@@ -2042,7 +2043,7 @@ namespace HISP.Server
// Awards
Messages.AwardHeader = gameData.messages.meta.awards_page.awards_header;
- Messages.AwardOthersFormat = gameData.messages.meta.awards_page.awards_head;
+ Messages.AwardOthersFormat = gameData.messages.meta.awards_page.awards_others_header;
Messages.NoAwards = gameData.messages.meta.awards_page.no_awards;
Messages.AwardFormat = gameData.messages.meta.awards_page.award_format;
diff --git a/HorseIsleServer/HorseIsleServer/Server/GameServer.cs b/HorseIsleServer/HorseIsleServer/Server/GameServer.cs
index ef5ba38..8511384 100644
--- a/HorseIsleServer/HorseIsleServer/Server/GameServer.cs
+++ b/HorseIsleServer/HorseIsleServer/Server/GameServer.cs
@@ -7688,6 +7688,20 @@ namespace HISP.Server
return count;
}
+ public static void CheckMail(User user)
+ {
+ if (user.MailBox.UnreadMailCount > 0)
+ {
+
+ byte[] RipOffAOLSound = PacketBuilder.CreatePlaysoundPacket(Messages.MailSe);
+ user.LoggedinClient.SendPacket(RipOffAOLSound);
+
+ byte[] mailReceivedText = PacketBuilder.CreateChat(Messages.MailReceivedMessage, PacketBuilder.CHAT_BOTTOM_RIGHT);
+ user.LoggedinClient.SendPacket(mailReceivedText);
+
+ user.MailBox.ReadAllMail();
+ }
+ }
public static int GetNumberOfModsOnline()
{
int count = 0;
diff --git a/HorseIsleWeb b/HorseIsleWeb
index 007bccc..66bbfd7 160000
--- a/HorseIsleWeb
+++ b/HorseIsleWeb
@@ -1 +1 @@
-Subproject commit 007bccccbc19fe4469ad7ac4aba63effeb520128
+Subproject commit 66bbfd79136875e04822171c5b755f0129b23061
From 0fc3582ae15b040dcd4a2a6d290e43d89202ad5d Mon Sep 17 00:00:00 2001
From: Bluzume <39113159+KuromeSan@users.noreply.github.com>
Date: Sun, 7 Nov 2021 23:03:52 -0500
Subject: [PATCH 4/9] Add %SHUTDOWN command
---
HorseIsleData | 2 +-
.../HorseIsleServer/Game/Chat/Chat.cs | 2 ++
.../HorseIsleServer/Game/Chat/Command.cs | 34 ++++++++++++++++++-
.../HorseIsleServer/Game/Items/Item.cs | 1 +
HorseIsleServer/HorseIsleServer/Program.cs | 3 +-
.../HorseIsleServer/Server/GameDataJson.cs | 1 +
6 files changed, 40 insertions(+), 3 deletions(-)
diff --git a/HorseIsleData b/HorseIsleData
index d44f610..9540f98 160000
--- a/HorseIsleData
+++ b/HorseIsleData
@@ -1 +1 @@
-Subproject commit d44f6107e607e3e23c137f4678235c12965af533
+Subproject commit 9540f98ef9180dca80bcb27599e939a767ba92eb
diff --git a/HorseIsleServer/HorseIsleServer/Game/Chat/Chat.cs b/HorseIsleServer/HorseIsleServer/Game/Chat/Chat.cs
index d027129..9c3cba1 100644
--- a/HorseIsleServer/HorseIsleServer/Game/Chat/Chat.cs
+++ b/HorseIsleServer/HorseIsleServer/Game/Chat/Chat.cs
@@ -116,6 +116,8 @@ namespace HISP.Game.Chat
return Command.ModHorse(message, args, user);
if (message.ToUpper().StartsWith("%DELITEM"))
return Command.DelItem(message, args, user);
+ if (message.ToUpper().StartsWith("%SHUTDOWN"))
+ return Command.Shutdown(message, args, user);
if (message.ToUpper().StartsWith("%CALL HORSE"))
return Command.CallHorse(message, args, user);
return false;
diff --git a/HorseIsleServer/HorseIsleServer/Game/Chat/Command.cs b/HorseIsleServer/HorseIsleServer/Game/Chat/Command.cs
index fff1882..ef5c844 100644
--- a/HorseIsleServer/HorseIsleServer/Game/Chat/Command.cs
+++ b/HorseIsleServer/HorseIsleServer/Game/Chat/Command.cs
@@ -30,6 +30,38 @@ namespace HISP.Game.Chat
throw new KeyNotFoundException("name not found");
}
+ public static bool Shutdown(string message, string[] args, User user)
+ {
+ if (!user.Administrator)
+ return false;
+
+ try
+ {
+ foreach(GameClient client in GameClient.ConnectedClients)
+ {
+
+ if (client.LoggedIn)
+ {
+ for(int i = 0; i < 2; i++)
+ {
+ ItemInstance rubyItem = new ItemInstance(Item.Ruby);
+ client.LoggedinUser.Inventory.AddIgnoringFull(rubyItem);
+ }
+
+ client.LoggedinUser.TrackedItems.GetTrackedItem(Tracking.TrackableItem.GameUpdates).Count++;
+ }
+
+ client.Kick("Server was closed by an Administrator.");
+
+ }
+ }
+ catch (Exception) { };
+
+ byte[] chatPacket = PacketBuilder.CreateChat(Messages.FormatAdminCommandCompleteMessage(message.Substring(1)), PacketBuilder.CHAT_BOTTOM_LEFT);
+ user.LoggedinClient.SendPacket(chatPacket);
+ Program.ShuttingDown = true;
+ return true;
+ }
public static bool Give(string message, string[] args, User user)
{
if (args.Length <= 0)
@@ -390,7 +422,7 @@ namespace HISP.Game.Chat
foreach (ItemInstance instance in itm.ItemInstances)
{
- itm.RemoveItem(instance);
+ target.Inventory.Remove(instance);
}
}
}
diff --git a/HorseIsleServer/HorseIsleServer/Game/Items/Item.cs b/HorseIsleServer/HorseIsleServer/Game/Items/Item.cs
index 735dac5..477be45 100644
--- a/HorseIsleServer/HorseIsleServer/Game/Items/Item.cs
+++ b/HorseIsleServer/HorseIsleServer/Game/Items/Item.cs
@@ -101,6 +101,7 @@ namespace HISP.Game.Items
public static int BirthdayToken;
public static int MagicBean;
public static int MagicDroplet;
+ public static int Ruby;
public static int StallionTradingCard;
public static int MareTradingCard;
diff --git a/HorseIsleServer/HorseIsleServer/Program.cs b/HorseIsleServer/HorseIsleServer/Program.cs
index b7bf3a4..e580faf 100644
--- a/HorseIsleServer/HorseIsleServer/Program.cs
+++ b/HorseIsleServer/HorseIsleServer/Program.cs
@@ -12,6 +12,7 @@ namespace HISP
{
public class Program
{
+ public static bool ShuttingDown = false;
static void Main(string[] args)
{
#if (!DEBUG)
@@ -54,7 +55,7 @@ namespace HISP
Logger.ErrorPrint("");
Logger.ErrorPrint(execpt.StackTrace);
- while (true) { };
+ while (!ShuttingDown) { /*Allow asyncronous operations to happen.*/ };
}
}
}
diff --git a/HorseIsleServer/HorseIsleServer/Server/GameDataJson.cs b/HorseIsleServer/HorseIsleServer/Server/GameDataJson.cs
index 310d846..1a2c395 100644
--- a/HorseIsleServer/HorseIsleServer/Server/GameDataJson.cs
+++ b/HorseIsleServer/HorseIsleServer/Server/GameDataJson.cs
@@ -903,6 +903,7 @@ namespace HISP.Server
Item.ModSplatterball = gameData.item.special.mod_splatterball;
Item.MagicBean = gameData.item.special.magic_bean;
Item.MagicDroplet = gameData.item.special.magic_droplet;
+ Item.Ruby = gameData.item.special.ruby;
Item.StallionTradingCard = gameData.item.special.stallion_trading_card;
Item.MareTradingCard = gameData.item.special.mare_trading_card;
From 6c3cb0e9eadcf66f3b440f8a385e58e42611b2fd Mon Sep 17 00:00:00 2001
From: Bluzume <39113159+KuromeSan@users.noreply.github.com>
Date: Sun, 7 Nov 2021 23:34:10 -0500
Subject: [PATCH 5/9] Fix modhorse
---
HorseIsleData | 2 +-
HorseIsleServer/HorseIsleServer/Game/Chat/Command.cs | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/HorseIsleData b/HorseIsleData
index 9540f98..2135825 160000
--- a/HorseIsleData
+++ b/HorseIsleData
@@ -1 +1 @@
-Subproject commit 9540f98ef9180dca80bcb27599e939a767ba92eb
+Subproject commit 2135825724166a05c6fabc0d7550f712aeada1fc
diff --git a/HorseIsleServer/HorseIsleServer/Game/Chat/Command.cs b/HorseIsleServer/HorseIsleServer/Game/Chat/Command.cs
index ef5c844..740c464 100644
--- a/HorseIsleServer/HorseIsleServer/Game/Chat/Command.cs
+++ b/HorseIsleServer/HorseIsleServer/Game/Chat/Command.cs
@@ -549,7 +549,7 @@ namespace HISP.Game.Chat
try
{
id = int.Parse(args[0]);
- if(args[1].ToUpper() == "COLOR")
+ if(args[1].ToUpper() != "COLOR")
amount = int.Parse(args[2]);
}
catch (Exception)
From 7815ffc630ea55c5cae319d0b9f0de9f31c88c16 Mon Sep 17 00:00:00 2001
From: Bluzume <39113159+KuromeSan@users.noreply.github.com>
Date: Mon, 8 Nov 2021 00:15:31 -0500
Subject: [PATCH 6/9] Fix some issues
---
HorseIsleServer/HorseIsleServer/Game/Meta.cs | 27 +++++++++++++------
.../HorseIsleServer/Server/Database.cs | 7 +++--
.../HorseIsleServer/Server/GameServer.cs | 2 +-
3 files changed, 25 insertions(+), 11 deletions(-)
diff --git a/HorseIsleServer/HorseIsleServer/Game/Meta.cs b/HorseIsleServer/HorseIsleServer/Game/Meta.cs
index 4bcff3c..24a590a 100644
--- a/HorseIsleServer/HorseIsleServer/Game/Meta.cs
+++ b/HorseIsleServer/HorseIsleServer/Game/Meta.cs
@@ -258,13 +258,18 @@ namespace HISP.Game
// Insert LGBT Patch here
string pronoun = "";
+
if (other)
{
if (user.Gender == "FEMALE")
+ {
pronoun = Messages.PronounFemaleShe;
+ }
if (user.Gender == "MALE")
+ {
pronoun = Messages.PronounMaleHe;
+ }
}
if (!other)
@@ -363,13 +368,19 @@ namespace HISP.Game
// Insert LGBT Patch Here
string pronoun = Messages.PronounYouYour;
- if(other)
+ string pronoun2 = Messages.PronounYouYour;
+ if (other)
{
if (user.Gender == "FEMALE")
+ {
pronoun = Messages.PronounFemaleShe;
-
- if (user.Gender == "MALE")
+ pronoun2 = Messages.PronounFemaleHer;
+ }
+ else if (user.Gender == "MALE")
+ {
pronoun = Messages.PronounMaleHe;
+ pronoun2 = Messages.PronounMaleHis;
+ }
message = Messages.FormatOtherCompetitionGear(pronoun);
}
@@ -378,22 +389,22 @@ namespace HISP.Game
if (user.EquipedCompetitionGear.Head != null)
{
- message += Messages.FormatCompetitionGearHead(user.EquipedCompetitionGear.Head.Name, pronoun, user.EquipedCompetitionGear.Head.IconId, other);
+ message += Messages.FormatCompetitionGearHead(user.EquipedCompetitionGear.Head.Name, pronoun2, user.EquipedCompetitionGear.Head.IconId, other);
hasMsg = true;
}
if (user.EquipedCompetitionGear.Body != null)
{
- message += Messages.FormatCompetitionGearBody(user.EquipedCompetitionGear.Body.Name, pronoun, user.EquipedCompetitionGear.Body.IconId, other);
+ message += Messages.FormatCompetitionGearBody(user.EquipedCompetitionGear.Body.Name, pronoun2, user.EquipedCompetitionGear.Body.IconId, other);
hasMsg = true;
}
if (user.EquipedCompetitionGear.Legs != null)
{
- message += Messages.FormatCompetitionGearLegs(user.EquipedCompetitionGear.Legs.Name, pronoun, user.EquipedCompetitionGear.Legs.IconId, other);
+ message += Messages.FormatCompetitionGearLegs(user.EquipedCompetitionGear.Legs.Name, pronoun2, user.EquipedCompetitionGear.Legs.IconId, other);
hasMsg = true;
}
if (user.EquipedCompetitionGear.Feet != null)
{
- message += Messages.FormatCompetitionGearFeet(user.EquipedCompetitionGear.Feet.Name, pronoun, user.EquipedCompetitionGear.Feet.IconId, other);
+ message += Messages.FormatCompetitionGearFeet(user.EquipedCompetitionGear.Feet.Name, pronoun2, user.EquipedCompetitionGear.Feet.IconId, other);
hasMsg = true;
}
@@ -919,7 +930,7 @@ namespace HISP.Game
if (highscore.Type == "SCORE")
message += Messages.FormatHighscoreStat(highscore.GameName, Database.GetRanking(highscore.Score, highscore.GameName), highscore.Score, highscore.TimesPlayed);
else if (highscore.Type == "TIME")
- message += Messages.FormatBestTimeStat(highscore.GameName, Database.GetRanking(highscore.Score, highscore.GameName), highscore.Score, highscore.TimesPlayed);
+ message += Messages.FormatBestTimeStat(highscore.GameName, Database.GetRanking(highscore.Score, highscore.GameName, true), highscore.Score, highscore.TimesPlayed);
}
message += Messages.BackToMap;
message += Messages.MetaTerminator;
diff --git a/HorseIsleServer/HorseIsleServer/Server/Database.cs b/HorseIsleServer/HorseIsleServer/Server/Database.cs
index 0b39bf5..214fdfe 100644
--- a/HorseIsleServer/HorseIsleServer/Server/Database.cs
+++ b/HorseIsleServer/HorseIsleServer/Server/Database.cs
@@ -5482,14 +5482,17 @@ namespace HISP.Server
}
}
- public static int GetRanking(int score, string gameTitle)
+ public static int GetRanking(int score, string gameTitle, bool time=false)
{
using (MySqlConnection db = new MySqlConnection(ConnectionString))
{
db.Open();
MySqlCommand sqlCommand = db.CreateCommand();
- sqlCommand.CommandText = "SELECT DISTINCT score FROM Leaderboards WHERE minigame=@gameTitle ORDER BY score DESC";
+ if(time)
+ sqlCommand.CommandText = "SELECT DISTINCT score FROM Leaderboards WHERE minigame=@gameTitle ORDER BY score ASC";
+ else
+ sqlCommand.CommandText = "SELECT DISTINCT score FROM Leaderboards WHERE minigame=@gameTitle ORDER BY score DESC";
sqlCommand.Parameters.AddWithValue("@gameTitle", gameTitle);
sqlCommand.Prepare();
MySqlDataReader reader = sqlCommand.ExecuteReader();
diff --git a/HorseIsleServer/HorseIsleServer/Server/GameServer.cs b/HorseIsleServer/HorseIsleServer/Server/GameServer.cs
index 8511384..f4b0a35 100644
--- a/HorseIsleServer/HorseIsleServer/Server/GameServer.cs
+++ b/HorseIsleServer/HorseIsleServer/Server/GameServer.cs
@@ -4594,7 +4594,7 @@ namespace HISP.Server
Logger.ErrorPrint(sender.LoggedinUser.Username + " Sent correct sec code, but invalid score value");
return;
}
- Highscore.HighscoreTableEntry[] scores = Database.GetTopScores(gameTitle, 5);
+ Highscore.HighscoreTableEntry[] scores = Database.GetTopScores(gameTitle, 5, !time);
bool bestScoreEver = false;
if (scores.Length >= 1)
bestScoreEver = scores[0].Score <= value;
From b4350d1e5fd453655cf8d0e4e474300329e47f33 Mon Sep 17 00:00:00 2001
From: Bluzume <39113159+KuromeSan@users.noreply.github.com>
Date: Mon, 8 Nov 2021 01:52:58 -0500
Subject: [PATCH 7/9] Add arena failed to join text
---
HorseIsleData | 2 +-
HorseIsleServer/HorseIsleServer/Game/Arena.cs | 18 +++++++++++++++++-
.../HorseIsleServer/Game/Messages.cs | 1 +
.../HorseIsleServer/Server/GameDataJson.cs | 2 ++
.../HorseIsleServer/Server/GameServer.cs | 5 -----
5 files changed, 21 insertions(+), 7 deletions(-)
diff --git a/HorseIsleData b/HorseIsleData
index 2135825..98f385f 160000
--- a/HorseIsleData
+++ b/HorseIsleData
@@ -1 +1 @@
-Subproject commit 2135825724166a05c6fabc0d7550f712aeada1fc
+Subproject commit 98f385f4adaad7e58d265001f4f109869ca9c88d
diff --git a/HorseIsleServer/HorseIsleServer/Game/Arena.cs b/HorseIsleServer/HorseIsleServer/Game/Arena.cs
index 43be3a9..18668d7 100644
--- a/HorseIsleServer/HorseIsleServer/Game/Arena.cs
+++ b/HorseIsleServer/HorseIsleServer/Game/Arena.cs
@@ -348,7 +348,15 @@ namespace HISP.Game
public void AddEntry(User user, HorseInstance horse)
{
if (Entries.Length + 1 > Slots)
- return;
+ {
+ if (Entries.Length + 1 > Slots)
+ {
+ byte[] enterFailed = PacketBuilder.CreateChat(Messages.ArenaFullErrorMessage, PacketBuilder.CHAT_BOTTOM_RIGHT);
+ user.LoggedinClient.SendPacket(enterFailed);
+ GameServer.UpdateArea(user.LoggedinClient);
+ return;
+ }
+ }
if(!UserHasHorseEntered(user))
{
@@ -357,6 +365,14 @@ namespace HISP.Game
arenaEntry.EnteredHorse = horse;
entries.Add(arenaEntry);
}
+
+ user.TakeMoney(EntryCost);
+
+ byte[] enteredIntoCompetition = PacketBuilder.CreateChat(Messages.ArenaEnteredInto, PacketBuilder.CHAT_BOTTOM_RIGHT);
+ user.LoggedinClient.SendPacket(enteredIntoCompetition);
+ GameServer.UpdateAreaForAll(user.X, user.Y, true);
+
+ return;
}
public static Arena GetArenaUserEnteredIn(User user)
diff --git a/HorseIsleServer/HorseIsleServer/Game/Messages.cs b/HorseIsleServer/HorseIsleServer/Game/Messages.cs
index bf2d2d8..69488f8 100644
--- a/HorseIsleServer/HorseIsleServer/Game/Messages.cs
+++ b/HorseIsleServer/HorseIsleServer/Game/Messages.cs
@@ -333,6 +333,7 @@ namespace HISP.Game
public static string ArenaNeedsVet;
public static string ArenaEventNameFormat;
+ public static string ArenaFullErrorMessage;
public static string ArenaCurrentlyTakingEntriesFormat;
public static string ArenaCompetitionInProgress;
diff --git a/HorseIsleServer/HorseIsleServer/Server/GameDataJson.cs b/HorseIsleServer/HorseIsleServer/Server/GameDataJson.cs
index 1a2c395..e740d8b 100644
--- a/HorseIsleServer/HorseIsleServer/Server/GameDataJson.cs
+++ b/HorseIsleServer/HorseIsleServer/Server/GameDataJson.cs
@@ -1255,6 +1255,8 @@ namespace HISP.Server
Messages.ArenaYouHaveHorseEntered = gameData.messages.meta.arena.horse_entered;
Messages.ArenaCompetitionFull = gameData.messages.meta.arena.competiton_full;
+ Messages.ArenaFullErrorMessage = gameData.messages.meta.arena.arena_join_fail_full;
+
Messages.ArenaEnterHorseFormat = gameData.messages.meta.arena.enter_horse;
Messages.ArenaCurrentCompetitors = gameData.messages.meta.arena.current_competitors;
Messages.ArenaCompetingHorseFormat = gameData.messages.meta.arena.competing_horses;
diff --git a/HorseIsleServer/HorseIsleServer/Server/GameServer.cs b/HorseIsleServer/HorseIsleServer/Server/GameServer.cs
index f4b0a35..ddd2003 100644
--- a/HorseIsleServer/HorseIsleServer/Server/GameServer.cs
+++ b/HorseIsleServer/HorseIsleServer/Server/GameServer.cs
@@ -1678,11 +1678,6 @@ namespace HISP.Server
if (sender.LoggedinUser.Money >= arena.EntryCost)
{
arena.AddEntry(sender.LoggedinUser, horseInstance);
- sender.LoggedinUser.TakeMoney(arena.EntryCost);
-
- byte[] enteredIntoCompetition = PacketBuilder.CreateChat(Messages.ArenaEnteredInto, PacketBuilder.CHAT_BOTTOM_RIGHT);
- sender.SendPacket(enteredIntoCompetition);
- UpdateAreaForAll(sender.LoggedinUser.X, sender.LoggedinUser.Y, true);
break;
}
else
From 0b6359f1dd349acf06c5d5da9166e333d432c25d Mon Sep 17 00:00:00 2001
From: Bluzume <39113159+KuromeSan@users.noreply.github.com>
Date: Mon, 8 Nov 2021 14:42:05 -0500
Subject: [PATCH 8/9] fix crashes
---
HorseIsleServer/HorseIsleServer/Game/Chat/Command.cs | 4 +++-
HorseIsleServer/HorseIsleServer/Player/Trade.cs | 2 +-
HorseIsleServer/HorseIsleServer/Server/GameClient.cs | 3 ++-
3 files changed, 6 insertions(+), 3 deletions(-)
diff --git a/HorseIsleServer/HorseIsleServer/Game/Chat/Command.cs b/HorseIsleServer/HorseIsleServer/Game/Chat/Command.cs
index 740c464..7b8bd48 100644
--- a/HorseIsleServer/HorseIsleServer/Game/Chat/Command.cs
+++ b/HorseIsleServer/HorseIsleServer/Game/Chat/Command.cs
@@ -51,7 +51,7 @@ namespace HISP.Game.Chat
client.LoggedinUser.TrackedItems.GetTrackedItem(Tracking.TrackableItem.GameUpdates).Count++;
}
- client.Kick("Server was closed by an Administrator.");
+ client.Kick("%SHUTDOWN Command Executed by an Administrator (Probably a server restart)");
}
}
@@ -60,6 +60,8 @@ namespace HISP.Game.Chat
byte[] chatPacket = PacketBuilder.CreateChat(Messages.FormatAdminCommandCompleteMessage(message.Substring(1)), PacketBuilder.CHAT_BOTTOM_LEFT);
user.LoggedinClient.SendPacket(chatPacket);
Program.ShuttingDown = true;
+ Thread.Sleep(1000); // give it a few seconds to shut down, if it doesnt force exit
+ Environment.Exit(0);
return true;
}
public static bool Give(string message, string[] args, User user)
diff --git a/HorseIsleServer/HorseIsleServer/Player/Trade.cs b/HorseIsleServer/HorseIsleServer/Player/Trade.cs
index f4afeb0..eb99ce7 100644
--- a/HorseIsleServer/HorseIsleServer/Player/Trade.cs
+++ b/HorseIsleServer/HorseIsleServer/Player/Trade.cs
@@ -218,7 +218,7 @@ namespace HISP.Player
foreach (ItemInstance itm in item)
{
Trader.Inventory.Remove(itm);
- OtherTrade.Trader.Inventory.Add(itm);
+ OtherTrade.Trader.Inventory.AddIgnoringFull(itm);
}
}
diff --git a/HorseIsleServer/HorseIsleServer/Server/GameClient.cs b/HorseIsleServer/HorseIsleServer/Server/GameClient.cs
index 25ae302..5df89ec 100644
--- a/HorseIsleServer/HorseIsleServer/Server/GameClient.cs
+++ b/HorseIsleServer/HorseIsleServer/Server/GameClient.cs
@@ -181,7 +181,8 @@ namespace HISP.Server
Logger.DebugPrint("Sending keep-alive packet to " + LoggedinUser.Username);
byte[] updatePacket = PacketBuilder.CreateKeepAlive();
SendPacket(updatePacket);
- keepAliveTimer.Change(oneMinute, oneMinute);
+ if(keepAliveTimer != null)
+ keepAliveTimer.Change(oneMinute, oneMinute);
}
private void minuteTimerTick(object state)
{
From 6d2a16cbaa9725778ab98171dac70c10c5ed5049 Mon Sep 17 00:00:00 2001
From: Bluzume <39113159+KuromeSan@users.noreply.github.com>
Date: Mon, 8 Nov 2021 14:44:07 -0500
Subject: [PATCH 9/9] fix build
---
HorseIsleServer/HorseIsleServer/Game/Chat/Command.cs | 1 +
1 file changed, 1 insertion(+)
diff --git a/HorseIsleServer/HorseIsleServer/Game/Chat/Command.cs b/HorseIsleServer/HorseIsleServer/Game/Chat/Command.cs
index 7b8bd48..ffe8961 100644
--- a/HorseIsleServer/HorseIsleServer/Game/Chat/Command.cs
+++ b/HorseIsleServer/HorseIsleServer/Game/Chat/Command.cs
@@ -7,6 +7,7 @@ using HISP.Game.Events;
using HISP.Game.Horse;
using System.Linq;
using HISP.Game.Inventory;
+using System.Threading;
namespace HISP.Game.Chat
{