mirror of
https://github.com/islehorse/HISP.git
synced 2025-04-10 07:05:41 +12:00
Allow for offering items in trade.
This commit is contained in:
parent
4652d9bb4f
commit
507d8910dc
6 changed files with 83 additions and 18 deletions
|
@ -243,7 +243,7 @@
|
||||||
|
|
||||||
"offering_nothing":"^T6 Nothing being offered.^R1",
|
"offering_nothing":"^T6 Nothing being offered.^R1",
|
||||||
"offering_money":"^T8 Money: $%MONEY%^R1",
|
"offering_money":"^T8 Money: $%MONEY%^R1",
|
||||||
"offering_item":"^T8%TOTAL% %ITEM% ^R1",
|
"offering_item":"^I%ICONID%^T8%TOTAL% %ITEM% ^R1",
|
||||||
"offering_horse":"^I252^T8 Horse: %HORSENAME%^B3L%HORSERANDOMID%^R1",
|
"offering_horse":"^I252^T8 Horse: %HORSENAME%^B3L%HORSERANDOMID%^R1",
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1025,9 +1025,9 @@ namespace HISP.Game
|
||||||
{
|
{
|
||||||
return TradeOfferingHorseFormat.Replace("%HORSENAME%", horseName).Replace("%HORSERANDOMID%", horseRandomId.ToString());
|
return TradeOfferingHorseFormat.Replace("%HORSENAME%", horseName).Replace("%HORSERANDOMID%", horseRandomId.ToString());
|
||||||
}
|
}
|
||||||
public static string FormatTradeItemOffer(int quantity, string item)
|
public static string FormatTradeItemOffer(int iconId, int quantity, string item)
|
||||||
{
|
{
|
||||||
return TradeOfferingItemFormat.Replace("%TOTAL%", quantity.ToString()).Replace("%ITEM%", item);
|
return TradeOfferingItemFormat.Replace("%ICONID%", iconId.ToString()).Replace("%TOTAL%", quantity.ToString()).Replace("%ITEM%", item);
|
||||||
}
|
}
|
||||||
public static string FormatTradeMoneyOffer(int amount)
|
public static string FormatTradeMoneyOffer(int amount)
|
||||||
{
|
{
|
||||||
|
|
|
@ -469,10 +469,10 @@ namespace HISP.Game
|
||||||
|
|
||||||
|
|
||||||
message += Messages.FormatTradeYourOffering(trade.OtherTrade.Trader.Username);
|
message += Messages.FormatTradeYourOffering(trade.OtherTrade.Trader.Username);
|
||||||
if (trade.MoenyOffered == 0 && trade.ItemsOffered.Count == 0 && trade.HorsesOffered.Count == 0)
|
if (trade.MoneyOffered == 0 && trade.ItemsOffered.Count == 0 && trade.HorsesOffered.Count == 0)
|
||||||
message += Messages.TradeOfferingNothing;
|
message += Messages.TradeOfferingNothing;
|
||||||
if (trade.MoenyOffered > 0)
|
if (trade.MoneyOffered > 0)
|
||||||
message += Messages.FormatTradeMoneyOffer(trade.MoenyOffered);
|
message += Messages.FormatTradeMoneyOffer(trade.MoneyOffered);
|
||||||
if(trade.HorsesOffered.Count > 0)
|
if(trade.HorsesOffered.Count > 0)
|
||||||
foreach(HorseInstance horse in trade.HorsesOffered)
|
foreach(HorseInstance horse in trade.HorsesOffered)
|
||||||
message += Messages.FormatTradeHorseOffer(horse.Name, horse.RandomId);
|
message += Messages.FormatTradeHorseOffer(horse.Name, horse.RandomId);
|
||||||
|
@ -484,17 +484,17 @@ namespace HISP.Game
|
||||||
if (item.Length > 1)
|
if (item.Length > 1)
|
||||||
name = itemInfo.PluralName;
|
name = itemInfo.PluralName;
|
||||||
|
|
||||||
message += Messages.FormatTradeItemOffer(item.Length, name);
|
message += Messages.FormatTradeItemOffer(itemInfo.IconId, item.Length, name);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(trade.Stage == "OPEN")
|
if(trade.Stage == "OPEN")
|
||||||
message += Messages.TradeAddItems;
|
message += Messages.TradeAddItems;
|
||||||
|
|
||||||
message += Messages.FormatTradeOtherOffering(trade.OtherTrade.Trader.Username);
|
message += Messages.FormatTradeOtherOffering(trade.OtherTrade.Trader.Username);
|
||||||
if (trade.OtherTrade.MoenyOffered == 0 && trade.OtherTrade.ItemsOffered.Count == 0 && trade.OtherTrade.HorsesOffered.Count == 0)
|
if (trade.OtherTrade.MoneyOffered == 0 && trade.OtherTrade.ItemsOffered.Count == 0 && trade.OtherTrade.HorsesOffered.Count == 0)
|
||||||
message += Messages.TradeOfferingNothing;
|
message += Messages.TradeOfferingNothing;
|
||||||
if (trade.OtherTrade.MoenyOffered > 0)
|
if (trade.OtherTrade.MoneyOffered > 0)
|
||||||
message += Messages.FormatTradeMoneyOffer(trade.OtherTrade.MoenyOffered);
|
message += Messages.FormatTradeMoneyOffer(trade.OtherTrade.MoneyOffered);
|
||||||
if (trade.OtherTrade.HorsesOffered.Count > 0)
|
if (trade.OtherTrade.HorsesOffered.Count > 0)
|
||||||
foreach (HorseInstance horse in trade.OtherTrade.HorsesOffered)
|
foreach (HorseInstance horse in trade.OtherTrade.HorsesOffered)
|
||||||
message += Messages.FormatTradeHorseOffer(horse.Name, horse.RandomId);
|
message += Messages.FormatTradeHorseOffer(horse.Name, horse.RandomId);
|
||||||
|
@ -506,7 +506,7 @@ namespace HISP.Game
|
||||||
if (item.Length > 1)
|
if (item.Length > 1)
|
||||||
name = itemInfo.PluralName;
|
name = itemInfo.PluralName;
|
||||||
|
|
||||||
message += Messages.FormatTradeItemOffer(item.Length, name);
|
message += Messages.FormatTradeItemOffer(itemInfo.IconId, item.Length, name);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (trade.Stage == "OPEN")
|
if (trade.Stage == "OPEN")
|
||||||
|
|
|
@ -25,7 +25,7 @@ namespace HISP.Player
|
||||||
|
|
||||||
public string Stage = "OPEN";
|
public string Stage = "OPEN";
|
||||||
|
|
||||||
public int MoenyOffered = 0;
|
public int MoneyOffered = 0;
|
||||||
public List<HorseInstance> HorsesOffered = new List<HorseInstance>();
|
public List<HorseInstance> HorsesOffered = new List<HorseInstance>();
|
||||||
public List<ItemInstance[]> ItemsOffered = new List<ItemInstance[]>();
|
public List<ItemInstance[]> ItemsOffered = new List<ItemInstance[]>();
|
||||||
|
|
||||||
|
|
|
@ -424,6 +424,7 @@ namespace HISP.Player
|
||||||
public Trade TradingWith = null;
|
public Trade TradingWith = null;
|
||||||
|
|
||||||
public int AttemptingToOfferItem;
|
public int AttemptingToOfferItem;
|
||||||
|
public bool TradeMenuPriority = false;
|
||||||
|
|
||||||
public byte[] SecCodeSeeds = new byte[3];
|
public byte[] SecCodeSeeds = new byte[3];
|
||||||
public int SecCodeInc = 0;
|
public int SecCodeInc = 0;
|
||||||
|
|
|
@ -227,8 +227,8 @@ namespace HISP.Server
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sender.LoggedinUser.TradeMenuPriority = true;
|
||||||
byte[] metaPacket = PacketBuilder.CreateMetaPacket(Meta.BuildTradeAddMoney(sender.LoggedinUser.Money));
|
byte[] metaPacket = PacketBuilder.CreateMetaPacket(Meta.BuildTradeAddMoney(sender.LoggedinUser.TradingWith.MoneyOffered));
|
||||||
sender.SendPacket(metaPacket);
|
sender.SendPacket(metaPacket);
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
@ -252,7 +252,8 @@ namespace HISP.Server
|
||||||
sender.LoggedinUser.TradingWith.HorsesOffered.Add(horse);
|
sender.LoggedinUser.TradingWith.HorsesOffered.Add(horse);
|
||||||
|
|
||||||
UpdateArea(sender);
|
UpdateArea(sender);
|
||||||
UpdateArea(sender.LoggedinUser.TradingWith.Trader.LoggedinClient);
|
if(!sender.LoggedinUser.TradingWith.Trader.TradeMenuPriority)
|
||||||
|
UpdateArea(sender.LoggedinUser.TradingWith.Trader.LoggedinClient);
|
||||||
|
|
||||||
break;
|
break;
|
||||||
case '1': // Item
|
case '1': // Item
|
||||||
|
@ -270,8 +271,8 @@ namespace HISP.Server
|
||||||
if (!sender.LoggedinUser.Inventory.HasItemId(itemId))
|
if (!sender.LoggedinUser.Inventory.HasItemId(itemId))
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
sender.LoggedinUser.TradeMenuPriority = true;
|
||||||
sender.LoggedinUser.AttemptingToOfferItem = itemId;
|
sender.LoggedinUser.AttemptingToOfferItem = itemId;
|
||||||
|
|
||||||
InventoryItem item = sender.LoggedinUser.Inventory.GetItemByItemId(itemId);
|
InventoryItem item = sender.LoggedinUser.Inventory.GetItemByItemId(itemId);
|
||||||
byte[] addItemPacket = PacketBuilder.CreateMetaPacket(Meta.BuildTradeAddItem(item.ItemInstances.Count));
|
byte[] addItemPacket = PacketBuilder.CreateMetaPacket(Meta.BuildTradeAddItem(item.ItemInstances.Count));
|
||||||
sender.SendPacket(addItemPacket);
|
sender.SendPacket(addItemPacket);
|
||||||
|
@ -1878,6 +1879,68 @@ namespace HISP.Server
|
||||||
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case 3: // Add Item to Trade
|
||||||
|
{
|
||||||
|
if (dynamicInput.Length >= 2)
|
||||||
|
{
|
||||||
|
if (Item.ItemIdExist(sender.LoggedinUser.AttemptingToOfferItem))
|
||||||
|
{
|
||||||
|
string answer = dynamicInput[1];
|
||||||
|
int itemCount = -1;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
itemCount = int.Parse(answer);
|
||||||
|
}
|
||||||
|
catch(FormatException)
|
||||||
|
{
|
||||||
|
Logger.ErrorPrint(sender.LoggedinUser.Username + " Tried to send a invalid dynamic input (Item TRADE, id is NaN)");
|
||||||
|
}
|
||||||
|
|
||||||
|
InventoryItem item = sender.LoggedinUser.Inventory.GetItemByItemId(sender.LoggedinUser.AttemptingToOfferItem);
|
||||||
|
|
||||||
|
if (itemCount <= 0)
|
||||||
|
{
|
||||||
|
byte[] MustBeAtleast1 = PacketBuilder.CreateChat(Messages.TradeItemOfferAtleast1, PacketBuilder.CHAT_BOTTOM_RIGHT);
|
||||||
|
sender.SendPacket(MustBeAtleast1);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if(itemCount > item.ItemInstances.Count)
|
||||||
|
{
|
||||||
|
byte[] TooMuchItems = PacketBuilder.CreateChat(Messages.FormatTradeItemOfferTooMuch(item.ItemInstances.Count, itemCount), PacketBuilder.CHAT_BOTTOM_RIGHT);
|
||||||
|
sender.SendPacket(TooMuchItems);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach(ItemInstance[] existingItems in sender.LoggedinUser.TradingWith.ItemsOffered)
|
||||||
|
{
|
||||||
|
if(existingItems[0].ItemId == sender.LoggedinUser.AttemptingToOfferItem)
|
||||||
|
{
|
||||||
|
sender.LoggedinUser.TradingWith.ItemsOffered.Remove(existingItems);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
ItemInstance[] items = new ItemInstance[itemCount];
|
||||||
|
for (int i = 0; i < itemCount; i++)
|
||||||
|
{
|
||||||
|
items[i] = item.ItemInstances[i];
|
||||||
|
}
|
||||||
|
sender.LoggedinUser.TradingWith.ItemsOffered.Add(items);
|
||||||
|
|
||||||
|
UpdateArea(sender);
|
||||||
|
if (!sender.LoggedinUser.TradingWith.OtherTrade.Trader.TradeMenuPriority)
|
||||||
|
UpdateArea(sender.LoggedinUser.TradingWith.OtherTrade.Trader.LoggedinClient);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Logger.ErrorPrint(sender.LoggedinUser.Username + " Tried to send a invalid dynamic input (Item TRADE, wrong size)");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
case 6: // Riddle Room
|
case 6: // Riddle Room
|
||||||
if (dynamicInput.Length >= 2)
|
if (dynamicInput.Length >= 2)
|
||||||
{
|
{
|
||||||
|
@ -2412,7 +2475,7 @@ namespace HISP.Server
|
||||||
case "58": // Add new item to trade
|
case "58": // Add new item to trade
|
||||||
if(sender.LoggedinUser.TradingWith != null)
|
if(sender.LoggedinUser.TradingWith != null)
|
||||||
{
|
{
|
||||||
sender.LoggedinUser.MetaPriority = true;
|
sender.LoggedinUser.TradeMenuPriority = true;
|
||||||
metaPacket = PacketBuilder.CreateMetaPacket(Meta.BuildTradeAdd(sender.LoggedinUser.TradingWith));
|
metaPacket = PacketBuilder.CreateMetaPacket(Meta.BuildTradeAdd(sender.LoggedinUser.TradingWith));
|
||||||
sender.SendPacket(metaPacket);
|
sender.SendPacket(metaPacket);
|
||||||
}
|
}
|
||||||
|
@ -2422,7 +2485,7 @@ namespace HISP.Server
|
||||||
{
|
{
|
||||||
sender.LoggedinUser.TradingWith.Stage = "DONE";
|
sender.LoggedinUser.TradingWith.Stage = "DONE";
|
||||||
|
|
||||||
if (sender.LoggedinUser.TradingWith.OtherTrade.Trader.MetaPriority == false)
|
if (sender.LoggedinUser.TradingWith.OtherTrade.Trader.TradeMenuPriority == false)
|
||||||
UpdateArea(sender.LoggedinUser.TradingWith.OtherTrade.Trader.LoggedinClient);
|
UpdateArea(sender.LoggedinUser.TradingWith.OtherTrade.Trader.LoggedinClient);
|
||||||
UpdateArea(sender);
|
UpdateArea(sender);
|
||||||
|
|
||||||
|
@ -6339,6 +6402,7 @@ namespace HISP.Server
|
||||||
if(forClient.LoggedinUser.TradingWith != null)
|
if(forClient.LoggedinUser.TradingWith != null)
|
||||||
{
|
{
|
||||||
forClient.LoggedinUser.MetaPriority = true;
|
forClient.LoggedinUser.MetaPriority = true;
|
||||||
|
forClient.LoggedinUser.TradeMenuPriority = false;
|
||||||
byte[] tradeMeta = PacketBuilder.CreateMetaPacket(Meta.BuildTrade(forClient.LoggedinUser.TradingWith));
|
byte[] tradeMeta = PacketBuilder.CreateMetaPacket(Meta.BuildTrade(forClient.LoggedinUser.TradingWith));
|
||||||
forClient.SendPacket(tradeMeta);
|
forClient.SendPacket(tradeMeta);
|
||||||
return;
|
return;
|
||||||
|
|
Loading…
Add table
Reference in a new issue