mirror of
https://bitbucket.org/Ioncannon/project-meteor-server.git
synced 2025-04-20 03:37:48 +00:00
More refactoring. Adding to bazaar now works for selling and seeking by gil.
This commit is contained in:
parent
bbac4b0fce
commit
e8c9904e1d
9 changed files with 109 additions and 75 deletions
|
@ -1075,12 +1075,12 @@ namespace FFXIVClassic_Map_Server
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
player.GetInventory(Inventory.NORMAL).InitList(GetInventory(player, 0, Inventory.NORMAL));
|
player.GetItemPackage(Inventory.NORMAL).InitList(GetItemPackage(player, 0, Inventory.NORMAL));
|
||||||
player.GetInventory(Inventory.KEYITEMS).InitList(GetInventory(player, 0, Inventory.KEYITEMS));
|
player.GetItemPackage(Inventory.KEYITEMS).InitList(GetItemPackage(player, 0, Inventory.KEYITEMS));
|
||||||
player.GetInventory(Inventory.CURRENCY_CRYSTALS).InitList(GetInventory(player, 0, Inventory.CURRENCY_CRYSTALS));
|
player.GetItemPackage(Inventory.CURRENCY_CRYSTALS).InitList(GetItemPackage(player, 0, Inventory.CURRENCY_CRYSTALS));
|
||||||
player.GetInventory(Inventory.BAZAAR).InitList(GetBazaar(player));
|
player.GetItemPackage(Inventory.BAZAAR).InitList(GetBazaar(player));
|
||||||
player.GetInventory(Inventory.MELDREQUEST).InitList(GetInventory(player, 0, Inventory.MELDREQUEST));
|
player.GetItemPackage(Inventory.MELDREQUEST).InitList(GetItemPackage(player, 0, Inventory.MELDREQUEST));
|
||||||
player.GetInventory(Inventory.LOOT).InitList(GetInventory(player, 0, Inventory.LOOT));
|
player.GetItemPackage(Inventory.LOOT).InitList(GetItemPackage(player, 0, Inventory.LOOT));
|
||||||
|
|
||||||
player.GetEquipment().SetEquipment(GetEquipment(player, player.charaWork.parameterSave.state_mainSkill[0]));
|
player.GetEquipment().SetEquipment(GetEquipment(player, player.charaWork.parameterSave.state_mainSkill[0]));
|
||||||
}
|
}
|
||||||
|
@ -1123,7 +1123,7 @@ namespace FFXIVClassic_Map_Server
|
||||||
{
|
{
|
||||||
ushort equipSlot = reader.GetUInt16(0);
|
ushort equipSlot = reader.GetUInt16(0);
|
||||||
ulong uniqueItemId = reader.GetUInt16(1);
|
ulong uniqueItemId = reader.GetUInt16(1);
|
||||||
InventoryItem item = player.GetInventory(Inventory.NORMAL).GetItemByUniqueId(uniqueItemId);
|
InventoryItem item = player.GetItemPackage(Inventory.NORMAL).GetItemByUniqueId(uniqueItemId);
|
||||||
equipment[equipSlot] = item;
|
equipment[equipSlot] = item;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1211,7 +1211,7 @@ namespace FFXIVClassic_Map_Server
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static List<InventoryItem> GetInventory(Player player, uint slotOffset, uint type)
|
public static List<InventoryItem> GetItemPackage(Player player, uint slotOffset, uint type)
|
||||||
{
|
{
|
||||||
List<InventoryItem> items = new List<InventoryItem>();
|
List<InventoryItem> items = new List<InventoryItem>();
|
||||||
|
|
||||||
|
@ -1425,12 +1425,12 @@ namespace FFXIVClassic_Map_Server
|
||||||
|
|
||||||
InventoryItem item = new InventoryItem(uniqueId, Server.GetItemGamedata(itemId), quantity, qualityNumber, modifier);
|
InventoryItem item = new InventoryItem(uniqueId, Server.GetItemGamedata(itemId), quantity, qualityNumber, modifier);
|
||||||
|
|
||||||
byte bazaarMode = reader.GetByte("bazaarMode");
|
byte bazaarMode = reader.GetByte("bazaarMode");
|
||||||
|
|
||||||
if (bazaarMode == InventoryItem.TYPE_SINGLE || bazaarMode == InventoryItem.TYPE_STACK)
|
if (bazaarMode == InventoryItem.TYPE_SINGLE || bazaarMode == InventoryItem.TYPE_MULTI || bazaarMode == InventoryItem.TYPE_STACK)
|
||||||
{
|
{
|
||||||
uint price = (uint) reader.GetInt32("sellPrice");
|
uint price = (uint) reader.GetInt32("sellPrice");
|
||||||
item.SetDealing(bazaarMode, price);
|
item.SetDealing(bazaarMode, (int) price);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
|
@ -1054,21 +1054,30 @@ namespace FFXIVClassic_Map_Server
|
||||||
bool succ = Database.CreateBazaarEntry(player, reward, seek, rewardAmount, seekAmount, bazaarMode);
|
bool succ = Database.CreateBazaarEntry(player, reward, seek, rewardAmount, seekAmount, bazaarMode);
|
||||||
|
|
||||||
if (succ)
|
if (succ)
|
||||||
{
|
{
|
||||||
if (reward.GetItemData().IsMoney())
|
if (bazaarMode != InventoryItem.TYPE_SINGLE && bazaarMode != InventoryItem.TYPE_MULTI && bazaarMode != InventoryItem.TYPE_STACK)
|
||||||
player.RemoveItem(1000001, rewardAmount);
|
{
|
||||||
|
reward.SetDealingAttached(bazaarMode, seek.uniqueId);
|
||||||
|
player.GetItemPackage(Inventory.BAZAAR).StartSendUpdate();
|
||||||
|
player.GetItemPackage(Inventory.BAZAAR).AddItem(reward);
|
||||||
|
player.GetItemPackage(Inventory.BAZAAR).AddItem(seek);
|
||||||
|
|
||||||
|
reward.SetAttachedIndex(Inventory.BAZAAR, seek.slot);
|
||||||
|
seek.SetHasAttached(true);
|
||||||
|
|
||||||
|
player.GetItemPackage(Inventory.BAZAAR).DoneSendUpdate();
|
||||||
|
}
|
||||||
else
|
else
|
||||||
player.RemoveItem(reward, rewardAmount);
|
{
|
||||||
|
reward.SetDealing(bazaarMode, seekAmount);
|
||||||
if (!reward.GetItemData().IsMoney())
|
player.GetItemPackage(Inventory.BAZAAR).StartSendUpdate();
|
||||||
player.RemoveItem(seek, seekAmount);
|
player.GetItemPackage(Inventory.BAZAAR).AddItem(reward);
|
||||||
|
player.GetItemPackage(Inventory.BAZAAR).DoneSendUpdate();
|
||||||
player.GetInventory(Inventory.BAZAAR).StartSendUpdate();
|
}
|
||||||
player.GetInventory(Inventory.BAZAAR).AddItem(reward);
|
|
||||||
player.GetInventory(Inventory.BAZAAR).AddItem(seek);
|
|
||||||
player.GetInventory(Inventory.BAZAAR).DoneSendUpdate();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
public void RemoveFromBazaar(Player player, ushort position)
|
public void RemoveFromBazaar(Player player, ushort position)
|
||||||
{
|
{
|
||||||
|
|
|
@ -61,7 +61,7 @@ namespace FFXIVClassic_Map_Server.Actors
|
||||||
|
|
||||||
//Inventory
|
//Inventory
|
||||||
protected Dictionary<ushort, Inventory> itemPackages = new Dictionary<ushort, Inventory>();
|
protected Dictionary<ushort, Inventory> itemPackages = new Dictionary<ushort, Inventory>();
|
||||||
private Equipment equipment;
|
protected Equipment equipment;
|
||||||
|
|
||||||
public Character(uint actorID) : base(actorID)
|
public Character(uint actorID) : base(actorID)
|
||||||
{
|
{
|
||||||
|
@ -157,7 +157,7 @@ namespace FFXIVClassic_Map_Server.Actors
|
||||||
{
|
{
|
||||||
if (itemPackages.ContainsKey(itemPackage))
|
if (itemPackages.ContainsKey(itemPackage))
|
||||||
{
|
{
|
||||||
itemPackages[itemPackage].AddItemSpecial(slot, item);
|
itemPackages[itemPackage].SetItem(slot, item);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -254,6 +254,14 @@ namespace FFXIVClassic_Map_Server.Actors
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Inventory GetItemPackage(ushort package)
|
||||||
|
{
|
||||||
|
if (itemPackages.ContainsKey(package))
|
||||||
|
return itemPackages[package];
|
||||||
|
else
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
public ushort GetPackageForItem(uint catalogID)
|
public ushort GetPackageForItem(uint catalogID)
|
||||||
{
|
{
|
||||||
ItemData data = Server.GetItemGamedata(catalogID);
|
ItemData data = Server.GetItemGamedata(catalogID);
|
||||||
|
|
|
@ -32,8 +32,8 @@ namespace FFXIVClassic_Map_Server.actors.chara.player
|
||||||
};
|
};
|
||||||
|
|
||||||
private Character owner;
|
private Character owner;
|
||||||
private ushort inventoryCapacity;
|
private ushort itemPackageCapacity;
|
||||||
private ushort inventoryCode;
|
private ushort itemPackageCode;
|
||||||
private bool isTemporary;
|
private bool isTemporary;
|
||||||
private InventoryItem[] list;
|
private InventoryItem[] list;
|
||||||
private bool[] isDirty;
|
private bool[] isDirty;
|
||||||
|
@ -44,8 +44,8 @@ namespace FFXIVClassic_Map_Server.actors.chara.player
|
||||||
public Inventory(Character ownerPlayer, ushort capacity, ushort code, bool temporary = false)
|
public Inventory(Character ownerPlayer, ushort capacity, ushort code, bool temporary = false)
|
||||||
{
|
{
|
||||||
owner = ownerPlayer;
|
owner = ownerPlayer;
|
||||||
inventoryCapacity = capacity;
|
itemPackageCapacity = capacity;
|
||||||
inventoryCode = code;
|
itemPackageCode = code;
|
||||||
isTemporary = temporary;
|
isTemporary = temporary;
|
||||||
list = new InventoryItem[capacity];
|
list = new InventoryItem[capacity];
|
||||||
isDirty = new bool[capacity];
|
isDirty = new bool[capacity];
|
||||||
|
@ -101,18 +101,11 @@ namespace FFXIVClassic_Map_Server.actors.chara.player
|
||||||
return AddItem(itemId, 1, 1);
|
return AddItem(itemId, 1, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void AddItem(uint[] itemId)
|
|
||||||
{
|
|
||||||
for (int i = 0; i < itemId.Length; i++)
|
|
||||||
AddItem(itemId[i]);
|
|
||||||
}
|
|
||||||
|
|
||||||
public INV_ERROR AddItem(uint itemId, int quantity)
|
public INV_ERROR AddItem(uint itemId, int quantity)
|
||||||
{
|
{
|
||||||
return AddItem(itemId, quantity, 1);
|
return AddItem(itemId, quantity, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public INV_ERROR AddItem(InventoryItem itemRef)
|
public INV_ERROR AddItem(InventoryItem itemRef)
|
||||||
{
|
{
|
||||||
if (!IsSpaceForAdd(itemRef.itemId, itemRef.quantity, itemRef.quality))
|
if (!IsSpaceForAdd(itemRef.itemId, itemRef.quantity, itemRef.quality))
|
||||||
|
@ -126,7 +119,7 @@ namespace FFXIVClassic_Map_Server.actors.chara.player
|
||||||
return INV_ERROR.SYSTEM_ERROR;
|
return INV_ERROR.SYSTEM_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
itemRef.RefreshPositioning(inventoryCode, (ushort) endOfListIndex);
|
itemRef.RefreshPositioning(itemPackageCode, (ushort) endOfListIndex);
|
||||||
|
|
||||||
isDirty[endOfListIndex] = true;
|
isDirty[endOfListIndex] = true;
|
||||||
list[endOfListIndex++] = itemRef;
|
list[endOfListIndex++] = itemRef;
|
||||||
|
@ -200,7 +193,7 @@ namespace FFXIVClassic_Map_Server.actors.chara.player
|
||||||
return INV_ERROR.SUCCESS;
|
return INV_ERROR.SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void AddItemSpecial(ushort slot, InventoryItem item)
|
public void SetItem(ushort slot, InventoryItem item)
|
||||||
{
|
{
|
||||||
list[slot] = item;
|
list[slot] = item;
|
||||||
SendUpdatePackets();
|
SendUpdatePackets();
|
||||||
|
@ -304,7 +297,7 @@ namespace FFXIVClassic_Map_Server.actors.chara.player
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
list[slot].quantity -= quantity;
|
list[slot].quantity -= quantity;
|
||||||
//DoDatabaseUpdateQuantity(toDelete.uniqueId);
|
DoDatabaseQuantity(list[slot].uniqueId, list[slot].quantity);
|
||||||
}
|
}
|
||||||
|
|
||||||
isDirty[slot] = true;
|
isDirty[slot] = true;
|
||||||
|
@ -387,7 +380,7 @@ namespace FFXIVClassic_Map_Server.actors.chara.player
|
||||||
#region Packet Functions
|
#region Packet Functions
|
||||||
public void SendFullInventory(Player player)
|
public void SendFullInventory(Player player)
|
||||||
{
|
{
|
||||||
player.QueuePacket(InventorySetBeginPacket.BuildPacket(owner.actorId, inventoryCapacity, inventoryCode));
|
player.QueuePacket(InventorySetBeginPacket.BuildPacket(owner.actorId, itemPackageCapacity, itemPackageCode));
|
||||||
SendInventoryPackets(player, 0);
|
SendInventoryPackets(player, 0);
|
||||||
player.QueuePacket(InventorySetEndPacket.BuildPacket(owner.actorId));
|
player.QueuePacket(InventorySetEndPacket.BuildPacket(owner.actorId));
|
||||||
}
|
}
|
||||||
|
@ -483,21 +476,21 @@ namespace FFXIVClassic_Map_Server.actors.chara.player
|
||||||
|
|
||||||
public void RefreshItem(Player player, InventoryItem item)
|
public void RefreshItem(Player player, InventoryItem item)
|
||||||
{
|
{
|
||||||
player.QueuePacket(InventorySetBeginPacket.BuildPacket(owner.actorId, inventoryCapacity, inventoryCode));
|
player.QueuePacket(InventorySetBeginPacket.BuildPacket(owner.actorId, itemPackageCapacity, itemPackageCode));
|
||||||
SendInventoryPackets(player, item);
|
SendInventoryPackets(player, item);
|
||||||
player.QueuePacket(InventorySetEndPacket.BuildPacket(owner.actorId));
|
player.QueuePacket(InventorySetEndPacket.BuildPacket(owner.actorId));
|
||||||
}
|
}
|
||||||
|
|
||||||
public void RefreshItem(Player player, params InventoryItem[] items)
|
public void RefreshItem(Player player, params InventoryItem[] items)
|
||||||
{
|
{
|
||||||
player.QueuePacket(InventorySetBeginPacket.BuildPacket(owner.actorId, inventoryCapacity, inventoryCode));
|
player.QueuePacket(InventorySetBeginPacket.BuildPacket(owner.actorId, itemPackageCapacity, itemPackageCode));
|
||||||
SendInventoryPackets(player, items.ToList());
|
SendInventoryPackets(player, items.ToList());
|
||||||
player.QueuePacket(InventorySetEndPacket.BuildPacket(owner.actorId));
|
player.QueuePacket(InventorySetEndPacket.BuildPacket(owner.actorId));
|
||||||
}
|
}
|
||||||
|
|
||||||
public void RefreshItem(Player player, List<InventoryItem> items)
|
public void RefreshItem(Player player, List<InventoryItem> items)
|
||||||
{
|
{
|
||||||
player.QueuePacket(InventorySetBeginPacket.BuildPacket(owner.actorId, inventoryCapacity, inventoryCode));
|
player.QueuePacket(InventorySetBeginPacket.BuildPacket(owner.actorId, itemPackageCapacity, itemPackageCode));
|
||||||
SendInventoryPackets(player, items);
|
SendInventoryPackets(player, items);
|
||||||
player.QueuePacket(InventorySetEndPacket.BuildPacket(owner.actorId));
|
player.QueuePacket(InventorySetEndPacket.BuildPacket(owner.actorId));
|
||||||
}
|
}
|
||||||
|
@ -512,9 +505,9 @@ namespace FFXIVClassic_Map_Server.actors.chara.player
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (owner is Player)
|
if (owner is Player)
|
||||||
Database.AddItem((Player)owner, addedItem, inventoryCode);
|
Database.AddItem((Player)owner, addedItem, itemPackageCode);
|
||||||
else if (owner is Retainer)
|
else if (owner is Retainer)
|
||||||
Database.AddItem((Retainer)owner, addedItem, inventoryCode);
|
Database.AddItem((Retainer)owner, addedItem, itemPackageCode);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void DoDatabaseQuantity(ulong itemDBId, int quantity)
|
private void DoDatabaseQuantity(ulong itemDBId, int quantity)
|
||||||
|
@ -523,9 +516,9 @@ namespace FFXIVClassic_Map_Server.actors.chara.player
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (owner is Player)
|
if (owner is Player)
|
||||||
Database.SetQuantity((Player)owner, itemDBId, inventoryCode);
|
Database.SetQuantity((Player)owner, itemDBId, itemPackageCode);
|
||||||
else if (owner is Retainer)
|
else if (owner is Retainer)
|
||||||
Database.SetQuantity((Retainer)owner, itemDBId, inventoryCode);
|
Database.SetQuantity((Retainer)owner, itemDBId, itemPackageCode);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void DoDatabaseRemove(ulong itemDBId)
|
private void DoDatabaseRemove(ulong itemDBId)
|
||||||
|
@ -570,7 +563,7 @@ namespace FFXIVClassic_Map_Server.actors.chara.player
|
||||||
DoneSendUpdate();
|
DoneSendUpdate();
|
||||||
|
|
||||||
player.QueuePacket(InventoryBeginChangePacket.BuildPacket(owner.actorId));
|
player.QueuePacket(InventoryBeginChangePacket.BuildPacket(owner.actorId));
|
||||||
player.QueuePacket(InventorySetBeginPacket.BuildPacket(owner.actorId, inventoryCapacity, inventoryCode));
|
player.QueuePacket(InventorySetBeginPacket.BuildPacket(owner.actorId, itemPackageCapacity, itemPackageCode));
|
||||||
//Send Updated Slots
|
//Send Updated Slots
|
||||||
SendInventoryPackets(player, items);
|
SendInventoryPackets(player, items);
|
||||||
//Send Remove packets for tail end
|
//Send Remove packets for tail end
|
||||||
|
@ -596,7 +589,7 @@ namespace FFXIVClassic_Map_Server.actors.chara.player
|
||||||
|
|
||||||
public bool IsFull()
|
public bool IsFull()
|
||||||
{
|
{
|
||||||
return endOfListIndex >= inventoryCapacity;
|
return endOfListIndex >= itemPackageCapacity;
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool IsSpaceForAdd(uint itemId, int quantity, int quality)
|
public bool IsSpaceForAdd(uint itemId, int quantity, int quality)
|
||||||
|
|
|
@ -1070,14 +1070,14 @@ namespace FFXIVClassic_Map_Server.Actors
|
||||||
public void CheckBazaarFlags()
|
public void CheckBazaarFlags()
|
||||||
{
|
{
|
||||||
bool isDealing = false, isRepairing = false, seekingItem = false;
|
bool isDealing = false, isRepairing = false, seekingItem = false;
|
||||||
lock (GetInventory(Inventory.BAZAAR))
|
lock (GetItemPackage(Inventory.BAZAAR))
|
||||||
{
|
{
|
||||||
foreach (InventoryItem item in GetInventory(Inventory.BAZAAR).GetRawList())
|
foreach (InventoryItem item in GetItemPackage(Inventory.BAZAAR).GetRawList())
|
||||||
{
|
{
|
||||||
if (item == null)
|
if (item == null)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
if (item.GetBazaarMode() == InventoryItem.TYPE_SINGLE || item.GetBazaarMode() == InventoryItem.TYPE_STACK)
|
if (item.GetBazaarMode() == InventoryItem.TYPE_SINGLE || item.GetBazaarMode() == InventoryItem.TYPE_MULTI || item.GetBazaarMode() == InventoryItem.TYPE_STACK)
|
||||||
isDealing = true;
|
isDealing = true;
|
||||||
if (item.GetBazaarMode() == InventoryItem.TYPE_SEEK_REPAIR)
|
if (item.GetBazaarMode() == InventoryItem.TYPE_SEEK_REPAIR)
|
||||||
isRepairing = true;
|
isRepairing = true;
|
||||||
|
@ -1091,27 +1091,19 @@ namespace FFXIVClassic_Map_Server.Actors
|
||||||
|
|
||||||
charaWork.eventTemp.bazaarRetail = isDealing;
|
charaWork.eventTemp.bazaarRetail = isDealing;
|
||||||
charaWork.eventTemp.bazaarRepair = isRepairing;
|
charaWork.eventTemp.bazaarRepair = isRepairing;
|
||||||
charaWork.eventTemp.bazaarMateria = GetInventory(Inventory.MELDREQUEST).GetCount() == 0;
|
charaWork.eventTemp.bazaarMateria = GetItemPackage(Inventory.MELDREQUEST).GetCount() == 0;
|
||||||
|
|
||||||
ActorPropertyPacketUtil propPacketUtil = new ActorPropertyPacketUtil("charaWork/bazaar", this);
|
ActorPropertyPacketUtil propPacketUtil = new ActorPropertyPacketUtil("charaWork/bazaar", this);
|
||||||
propPacketUtil.AddProperty("charaWork.eventTemp.bazaarRetail");
|
propPacketUtil.AddProperty("charaWork.eventTemp.bazaarRetail");
|
||||||
propPacketUtil.AddProperty("charaWork.eventTemp.bazaarRepair");
|
propPacketUtil.AddProperty("charaWork.eventTemp.bazaarRepair");
|
||||||
propPacketUtil.AddProperty("charaWork.eventTemp.bazaarMateria");
|
propPacketUtil.AddProperty("charaWork.eventTemp.bazaarMateria");
|
||||||
QueuePackets(propPacketUtil.Done());
|
QueuePackets(propPacketUtil.Done());
|
||||||
}
|
}
|
||||||
|
|
||||||
public Inventory GetInventory(ushort type)
|
|
||||||
{
|
|
||||||
if (itemPackages.ContainsKey(type))
|
|
||||||
return itemPackages[type];
|
|
||||||
else
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
public int GetCurrentGil()
|
public int GetCurrentGil()
|
||||||
{
|
{
|
||||||
if (GetInventory(Inventory.CURRENCY_CRYSTALS).HasItem(1000001))
|
if (HasItem(1000001))
|
||||||
return GetInventory(Inventory.CURRENCY_CRYSTALS).GetItemByCatelogId(1000001).quantity;
|
return GetItemPackage(Inventory.CURRENCY_CRYSTALS).GetItemByCatelogId(1000001).quantity;
|
||||||
else
|
else
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -13,7 +13,8 @@ namespace FFXIVClassic_Map_Server.dataobjects
|
||||||
public const byte TAG_DEALING = 0xC9;
|
public const byte TAG_DEALING = 0xC9;
|
||||||
public const byte TAG_ATTACHED = 0xCA;
|
public const byte TAG_ATTACHED = 0xCA;
|
||||||
|
|
||||||
public const byte TYPE_SINGLE = 12;
|
public const byte TYPE_SINGLE = 11;
|
||||||
|
public const byte TYPE_MULTI = 12;
|
||||||
public const byte TYPE_STACK = 13;
|
public const byte TYPE_STACK = 13;
|
||||||
public const byte TYPE_SEEK_ITEM = 20;
|
public const byte TYPE_SEEK_ITEM = 20;
|
||||||
public const byte TYPE_SEEK_REPAIR = 30;
|
public const byte TYPE_SEEK_REPAIR = 30;
|
||||||
|
@ -212,18 +213,18 @@ namespace FFXIVClassic_Map_Server.dataobjects
|
||||||
tags[0] = isAttached ? TAG_ATTACHED : (byte)0;
|
tags[0] = isAttached ? TAG_ATTACHED : (byte)0;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void SetDealing(byte mode, uint price)
|
public void SetDealing(byte mode, int price)
|
||||||
{
|
{
|
||||||
tags[0] = TAG_DEALING;
|
tags[0] = TAG_DEALING;
|
||||||
tagValues[0] = mode;
|
tagValues[0] = mode;
|
||||||
|
|
||||||
if (mode == TYPE_SINGLE || mode == TYPE_STACK)
|
if (mode == TYPE_SINGLE || mode == TYPE_MULTI || mode == TYPE_STACK)
|
||||||
{
|
{
|
||||||
dealingVal = 1;
|
dealingVal = 1;
|
||||||
dealingMode = DEALINGMODE_PRICED;
|
dealingMode = DEALINGMODE_PRICED;
|
||||||
dealingAttached1 = 1;
|
dealingAttached1 = 1;
|
||||||
dealingAttached2 = 1000001;
|
dealingAttached2 = (uint) price;
|
||||||
dealingAttached3 = price;
|
dealingAttached3 = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -10,13 +10,44 @@ All bazaar args have a Reward (The item the person who fufills the request gets)
|
||||||
|
|
||||||
function onEventStarted(player, actor, triggerName, rewardItem, seekItem, bazaarMode, arg1, bazaarActor, rewardAmount, seekAmount, arg2, arg3, type9ItemIds)
|
function onEventStarted(player, actor, triggerName, rewardItem, seekItem, bazaarMode, arg1, bazaarActor, rewardAmount, seekAmount, arg2, arg3, type9ItemIds)
|
||||||
|
|
||||||
--Get reward reference or itemId
|
local originalReward = nil;
|
||||||
|
local originalSeek = nil;
|
||||||
|
|
||||||
|
--Handle Reward
|
||||||
|
if (type(rewardItem) == "number") then
|
||||||
|
rewardItem = GetWorldManager():CreateItem(rewardItem, rewardAmount);
|
||||||
|
else
|
||||||
|
rewardItem = player:GetItem(rewardItem);
|
||||||
|
originalReward = rewardItem;
|
||||||
|
if (bazaarMode ~= 11) then
|
||||||
|
rewardItem = GetWorldManager():CreateItem(rewardItem.itemId, rewardAmount, rewardItem.quality);
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
--Get seek reference or itemid
|
--Handle Seek
|
||||||
|
if (type(seekItem) == "number") then
|
||||||
|
seekItem = GetWorldManager():CreateItem(seekItem, rewardAmount);
|
||||||
|
else
|
||||||
|
seekItem = player:GetItem(seekItem);
|
||||||
|
originalSeek = seekItem;
|
||||||
|
if (bazaarMode ~= 11) then
|
||||||
|
seekItem = GetWorldManager():CreateItem(seekItem.itemId, seekAmount, seekItem.quality);
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
--Tell worldmaster to add bazaar entry with reward, seek, rewardAmount, seekAmount, and bazaarMode
|
--If not selling, remove the seek item
|
||||||
|
if (bazaarMode ~= 11 and bazaarMode ~= 12 and bazaarMode ~= 13) then
|
||||||
|
if (originalSeek ~= nil) then
|
||||||
|
player:RemoveItem(originalSeek, seekAmount);
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
--Remove reward items from inventory
|
--Remove the reward item
|
||||||
|
if (originalReward ~= nil) then
|
||||||
|
player:RemoveItem(originalReward, rewardAmount);
|
||||||
|
end
|
||||||
|
|
||||||
|
GetWorldManager():AddToBazaar(player, rewardItem, seekItem, rewardAmount, seekAmount, bazaarMode);
|
||||||
|
|
||||||
player:EndEvent();
|
player:EndEvent();
|
||||||
|
|
||||||
|
|
|
@ -27,7 +27,7 @@ function onTrigger(player, argc, qty, name, lastName)
|
||||||
qty = tonumber(qty) or 1;
|
qty = tonumber(qty) or 1;
|
||||||
location = INVENTORY_CURRENCY;
|
location = INVENTORY_CURRENCY;
|
||||||
|
|
||||||
local added = player:GetInventory(location):AddItem(currency, qty, 1);
|
local added = player:GetItemPackage(location):AddItem(currency, qty, 1);
|
||||||
local messageID = MESSAGE_TYPE_SYSTEM_ERROR;
|
local messageID = MESSAGE_TYPE_SYSTEM_ERROR;
|
||||||
local message = "unable to add gil";
|
local message = "unable to add gil";
|
||||||
|
|
||||||
|
|
|
@ -40,7 +40,7 @@ function onTrigger(player, argc, item, qty, location, name, lastName)
|
||||||
location = INVENTORY_NORMAL;
|
location = INVENTORY_NORMAL;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
local added = player:getInventory(location):addItem(item, qty, 1);
|
local added = player:getItemPackage(location):addItem(item, qty, 1);
|
||||||
|
|
||||||
if added then
|
if added then
|
||||||
message = string.format("Added item %u of kind %u to %s", item, location, player:GetName());
|
message = string.format("Added item %u of kind %u to %s", item, location, player:GetName());
|
||||||
|
|
Loading…
Add table
Reference in a new issue