Fix bugs and more bugs

This commit is contained in:
SilicaAndPina 2021-02-28 00:39:51 +13:00
parent 14f9a5b379
commit 26d24c1113
5 changed files with 59 additions and 15 deletions

View file

@ -334,7 +334,7 @@ namespace HISP.Game.Items
public static void Init() public static void Init()
{ {
ReadFromDatabase(); ReadFromDatabase();
GenerateItems(true); GenerateItems(Database.GetDroppedItemsCount() <= 0);
} }
} }

View file

@ -417,6 +417,9 @@ namespace HISP.Game
if (horse.Leaser > 0) if (horse.Leaser > 0)
continue; continue;
if (horse.Category != "TRADING")
continue;
bool tacked = (horse.Equipment.Saddle != null || horse.Equipment.SaddlePad != null || horse.Equipment.Bridle != null || horse.Equipment.Companion != null); bool tacked = (horse.Equipment.Saddle != null || horse.Equipment.SaddlePad != null || horse.Equipment.Bridle != null || horse.Equipment.Companion != null);
message += Messages.FormatTradeOfferHorse(horse.Name, tacked, horse.RandomId); message += Messages.FormatTradeOfferHorse(horse.Name, tacked, horse.RandomId);
} }
@ -463,6 +466,8 @@ namespace HISP.Game
string message = ""; string message = "";
message += Messages.FormatTradeWithPlayer(trade.OtherTrade.Trader.Username); message += Messages.FormatTradeWithPlayer(trade.OtherTrade.Trader.Username);
if (trade.Stage == "DONE" && trade.OtherTrade.Stage == "DONE") if (trade.Stage == "DONE" && trade.OtherTrade.Stage == "DONE")
message += Messages.TradeFinalReview; message += Messages.TradeFinalReview;
else if (trade.Stage == "DONE") else if (trade.Stage == "DONE")
@ -976,7 +981,7 @@ namespace HISP.Game
if (icon != -1) if (icon != -1)
iconFormat = Messages.FormatIconFormat(icon); iconFormat = Messages.FormatIconFormat(icon);
message += Messages.FormatPlayerEntry(iconFormat, nearbyUser.Username, nearbyUser.Id, (DateTime.UtcNow - nearbyUser.LoginTime).Minutes, nearbyUser.X, nearbyUser.Y, nearbyUser.Idle); message += Messages.FormatPlayerEntry(iconFormat, nearbyUser.Username, nearbyUser.Id, Convert.ToInt32(Math.Round((DateTime.UtcNow - nearbyUser.LoginTime).TotalMinutes)), nearbyUser.X, nearbyUser.Y, nearbyUser.Idle);
} }
message += Messages.PlayerListIconInformation; message += Messages.PlayerListIconInformation;
@ -1012,7 +1017,7 @@ namespace HISP.Game
if (icon != -1) if (icon != -1)
iconFormat = Messages.FormatIconFormat(icon); iconFormat = Messages.FormatIconFormat(icon);
message += Messages.FormatPlayerEntry(iconFormat, onlineUser.Username, onlineUser.Id, (DateTime.UtcNow - onlineUser.LoginTime).Minutes, onlineUser.X, onlineUser.Y, onlineUser.Idle); message += Messages.FormatPlayerEntry(iconFormat, onlineUser.Username, onlineUser.Id, Convert.ToInt32(Math.Round((DateTime.UtcNow - onlineUser.LoginTime).TotalMinutes)), onlineUser.X, onlineUser.Y, onlineUser.Idle);
} }
message += Messages.PlayerListIconInformation; message += Messages.PlayerListIconInformation;
@ -1038,7 +1043,7 @@ namespace HISP.Game
if (icon != -1) if (icon != -1)
iconFormat = Messages.FormatIconFormat(icon); iconFormat = Messages.FormatIconFormat(icon);
message += Messages.FormatPlayerEntry(iconFormat, client.LoggedinUser.Username, client.LoggedinUser.Id, (DateTime.UtcNow - client.LoggedinUser.LoginTime).Minutes, client.LoggedinUser.X, client.LoggedinUser.Y, client.LoggedinUser.Idle); message += Messages.FormatPlayerEntry(iconFormat, client.LoggedinUser.Username, client.LoggedinUser.Id, Convert.ToInt32(Math.Round((DateTime.UtcNow - client.LoggedinUser.LoginTime).TotalMinutes)), client.LoggedinUser.X, client.LoggedinUser.Y, client.LoggedinUser.Idle);
} }
} }
@ -1065,7 +1070,7 @@ namespace HISP.Game
if (icon != -1) if (icon != -1)
iconFormat = Messages.FormatIconFormat(icon); iconFormat = Messages.FormatIconFormat(icon);
message += Messages.FormatOnlineBuddyEntry(iconFormat, friend.Username, friend.Id, (DateTime.UtcNow - friend.LoginTime).Minutes, friend.X, friend.Y); message += Messages.FormatOnlineBuddyEntry(iconFormat, friend.Username, friend.Id, Convert.ToInt32(Math.Round((DateTime.UtcNow - friend.LoginTime).TotalMinutes)), friend.X, friend.Y);
} }
catch (KeyNotFoundException) { } catch (KeyNotFoundException) { }

View file

@ -181,11 +181,15 @@ namespace HISP.Player
return; return;
cancelTrade:; cancelTrade:;
InteruptTrade();
return;
}
public void InteruptTrade()
{
byte[] tradeCanceled = PacketBuilder.CreateChat(Messages.TradeCanceledInterupted, PacketBuilder.CHAT_BOTTOM_RIGHT); byte[] tradeCanceled = PacketBuilder.CreateChat(Messages.TradeCanceledInterupted, PacketBuilder.CHAT_BOTTOM_RIGHT);
Trader.LoggedinClient.SendPacket(tradeCanceled); Trader.LoggedinClient.SendPacket(tradeCanceled);
endTrade(); endTrade();
return;
} }
public void AcceptTrade() public void AcceptTrade()
{ {

View file

@ -3919,6 +3919,20 @@ namespace HISP.Server
} }
} }
public static int GetDroppedItemsCount()
{
using (MySqlConnection db = new MySqlConnection(ConnectionString))
{
db.Open();
MySqlCommand sqlCommand = db.CreateCommand();
sqlCommand.CommandText = "SELECT COUNT(1) FROM DroppedItems";
sqlCommand.Prepare();
int count = Convert.ToInt32(sqlCommand.ExecuteScalar());
sqlCommand.Dispose();
return count;
}
}
public static int GetNpcStartPoint(int playerId, int npcId) public static int GetNpcStartPoint(int playerId, int npcId)
{ {
using (MySqlConnection db = new MySqlConnection(ConnectionString)) using (MySqlConnection db = new MySqlConnection(ConnectionString))

View file

@ -257,8 +257,10 @@ namespace HISP.Server
sender.LoggedinUser.TradingWith.HorsesOffered.Add(horse); sender.LoggedinUser.TradingWith.HorsesOffered.Add(horse);
UpdateArea(sender); UpdateArea(sender);
if (!sender.LoggedinUser.TradingWith.OtherTrade.Trader.TradeMenuPriority)
UpdateArea(sender.LoggedinUser.TradingWith.OtherTrade.Trader.LoggedinClient); if (sender.LoggedinUser.TradingWith != null)
if (!sender.LoggedinUser.TradingWith.OtherTrade.Trader.TradeMenuPriority)
UpdateArea(sender.LoggedinUser.TradingWith.OtherTrade.Trader.LoggedinClient);
break; break;
case '1': // Item case '1': // Item
@ -1905,8 +1907,9 @@ namespace HISP.Server
sender.LoggedinUser.TradingWith.MoneyOffered = amountMoney; sender.LoggedinUser.TradingWith.MoneyOffered = amountMoney;
UpdateArea(sender); UpdateArea(sender);
if (!sender.LoggedinUser.TradingWith.OtherTrade.Trader.TradeMenuPriority) if(sender.LoggedinUser.TradingWith != null)
UpdateArea(sender.LoggedinUser.TradingWith.OtherTrade.Trader.LoggedinClient); if (!sender.LoggedinUser.TradingWith.OtherTrade.Trader.TradeMenuPriority)
UpdateArea(sender.LoggedinUser.TradingWith.OtherTrade.Trader.LoggedinClient);
break; break;
} }
@ -1959,8 +1962,9 @@ namespace HISP.Server
sender.LoggedinUser.TradingWith.ItemsOffered.Add(items); sender.LoggedinUser.TradingWith.ItemsOffered.Add(items);
UpdateArea(sender); UpdateArea(sender);
if (!sender.LoggedinUser.TradingWith.OtherTrade.Trader.TradeMenuPriority) if (sender.LoggedinUser.TradingWith != null)
UpdateArea(sender.LoggedinUser.TradingWith.OtherTrade.Trader.LoggedinClient); if (!sender.LoggedinUser.TradingWith.OtherTrade.Trader.TradeMenuPriority)
UpdateArea(sender.LoggedinUser.TradingWith.OtherTrade.Trader.LoggedinClient);
} }
break; break;
} }
@ -2514,8 +2518,9 @@ namespace HISP.Server
{ {
sender.LoggedinUser.TradingWith.Stage = "DONE"; sender.LoggedinUser.TradingWith.Stage = "DONE";
if (sender.LoggedinUser.TradingWith.OtherTrade.Trader.TradeMenuPriority == false) if (sender.LoggedinUser.TradingWith != null)
UpdateArea(sender.LoggedinUser.TradingWith.OtherTrade.Trader.LoggedinClient); if (sender.LoggedinUser.TradingWith.OtherTrade.Trader.TradeMenuPriority == false)
UpdateArea(sender.LoggedinUser.TradingWith.OtherTrade.Trader.LoggedinClient);
UpdateArea(sender); UpdateArea(sender);
} }
@ -6060,6 +6065,10 @@ namespace HISP.Server
Database.RemoveOnlineUser(sender.LoggedinUser.Id); Database.RemoveOnlineUser(sender.LoggedinUser.Id);
// Remove Trade Reference
sender.LoggedinUser.TradingWith = null;
sender.LoggedinUser.PendingTradeTo = 0;
// Delete Arena Entries // Delete Arena Entries
if(Arena.UserHasEnteredHorseInAnyArena(sender.LoggedinUser)) if(Arena.UserHasEnteredHorseInAnyArena(sender.LoggedinUser))
{ {
@ -6446,6 +6455,18 @@ namespace HISP.Server
if(forClient.LoggedinUser.TradingWith != null) if(forClient.LoggedinUser.TradingWith != null)
{ {
if (!forClient.LoggedinUser.TradingWith.OtherTrade.Trader.LoggedinClient.LoggedIn)
{
forClient.LoggedinUser.TradingWith.InteruptTrade();
return;
}
if (forClient.LoggedinUser.TradingWith.OtherTrade.Trader.TradingWith == null)
{
forClient.LoggedinUser.TradingWith.InteruptTrade();
return;
}
forClient.LoggedinUser.MetaPriority = true; forClient.LoggedinUser.MetaPriority = true;
forClient.LoggedinUser.TradeMenuPriority = false; forClient.LoggedinUser.TradeMenuPriority = false;
byte[] tradeMeta = PacketBuilder.CreateMetaPacket(Meta.BuildTrade(forClient.LoggedinUser.TradingWith)); byte[] tradeMeta = PacketBuilder.CreateMetaPacket(Meta.BuildTrade(forClient.LoggedinUser.TradingWith));