fix money related bugs and crashes.

This commit is contained in:
SilicaAndPina 2021-05-14 11:38:04 +12:00
parent 99d9b401a2
commit e600554555
21 changed files with 151 additions and 83 deletions

View file

@ -68,7 +68,7 @@ namespace HISP.Player
{
Database.AddAward(baseUser.Id, award.Id);
baseUser.Money += award.MoneyBonus;
baseUser.AddMoney(award.MoneyBonus);
byte[] chatPacket = PacketBuilder.CreateChat(award.CompletionText, PacketBuilder.CHAT_BOTTOM_RIGHT);
baseUser.LoggedinClient.SendPacket(chatPacket);

View file

@ -70,19 +70,30 @@ namespace HISP.Player
Trader.LoggedinClient.SendPacket(tradeNotAllowedWhileBidding);
fail = true;
}
if (OtherTrade.Trader.HorseInventory.HorseList.Length > OtherTrade.Trader.MaxHorses)
if (OtherTrade.Trader.HorseInventory.HorseList.Length + HorsesOffered.Count > OtherTrade.Trader.MaxHorses)
{
byte[] tradeYouHaveTooManyHorses = PacketBuilder.CreateChat(Messages.TradeYouCantHandleMoreHorses, PacketBuilder.CHAT_BOTTOM_RIGHT);
Trader.LoggedinClient.SendPacket(tradeYouHaveTooManyHorses);
fail = true;
}
if (Trader.HorseInventory.HorseList.Length > Trader.MaxHorses)
if (Trader.HorseInventory.HorseList.Length + OtherTrade.HorsesOffered.Count > Trader.MaxHorses)
{
byte[] tradeYouHaveTooManyHorses = PacketBuilder.CreateChat(Messages.TradeYouCantHandleMoreHorses, PacketBuilder.CHAT_BOTTOM_RIGHT);
Trader.LoggedinClient.SendPacket(tradeYouHaveTooManyHorses);
fail = true;
}
if(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)
{
byte[] tradeYouHasTooMuchMoney = PacketBuilder.CreateChat(Messages.TradeWillGiveYouTooMuchMoney, PacketBuilder.CHAT_BOTTOM_RIGHT);
Trader.LoggedinClient.SendPacket(tradeYouHasTooMuchMoney);
fail = true;
}
/*
* Item Checks
@ -140,14 +151,14 @@ namespace HISP.Player
if (MoneyOffered > 0) // Transfer Money
{
Trader.Money -= MoneyOffered;
Trader.TakeMoney(MoneyOffered);
byte[] tradeSpentMoney = PacketBuilder.CreateChat(Messages.FormatTradeYouSpent(MoneyOffered), PacketBuilder.CHAT_BOTTOM_RIGHT);
Trader.LoggedinClient.SendPacket(tradeSpentMoney);
}
if(OtherTrade.MoneyOffered > 0)
{
Trader.Money += OtherTrade.MoneyOffered;
Trader.AddMoney(OtherTrade.MoneyOffered);
byte[] tradeReceivedMoney = PacketBuilder.CreateChat(Messages.FormatTradeYouReceived(OtherTrade.MoneyOffered), PacketBuilder.CHAT_BOTTOM_RIGHT);
Trader.LoggedinClient.SendPacket(tradeReceivedMoney);
}

View file

@ -110,6 +110,30 @@ namespace HISP.Player
public bool ListingAuction = false;
public int TotalGlobalChatMessages = 1;
public void TakeMoney(int amount)
{
money -= amount;
Database.SetPlayerMoney(money, Id);
GameServer.UpdatePlayer(LoggedinClient);
}
public void AddMoney(int amount)
{
try
{
checked
{
money += amount;
}
}
catch(OverflowException)
{
money = 2147483647;
}
Database.SetPlayerMoney(money, Id);
GameServer.UpdatePlayer(LoggedinClient);
}
public string GetWeatherSeen()
{
string weather = "SUNNY";
@ -256,25 +280,6 @@ namespace HISP.Player
{
return money;
}
set
{
try
{
checked
{
money = value;
Database.SetPlayerMoney(value, Id);
GameServer.UpdatePlayer(LoggedinClient);
}
}
catch(OverflowException)
{
money = 2147483647;
Database.SetPlayerMoney(2147483647, Id);
GameServer.UpdatePlayer(LoggedinClient);
}
}
}