mirror of
https://bitbucket.org/Ioncannon/project-meteor-server.git
synced 2025-04-24 05:37:46 +00:00
Equipment now working. Still need to write database saving/loading.
This commit is contained in:
parent
b7fd3e442c
commit
c2f0b9d999
5 changed files with 168 additions and 57 deletions
|
@ -452,12 +452,12 @@ namespace FFXIVClassic_Lobby_Server
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
player.inventories[Inventory.NORMAL].initList(getInventory(player, 0, Inventory.NORMAL));
|
player.getInventory(Inventory.NORMAL).initList(getInventory(player, 0, Inventory.NORMAL));
|
||||||
player.inventories[Inventory.KEYITEMS].initList(getInventory(player, 0, Inventory.KEYITEMS));
|
player.getInventory(Inventory.KEYITEMS).initList(getInventory(player, 0, Inventory.KEYITEMS));
|
||||||
player.inventories[Inventory.CURRANCY].initList(getInventory(player, 0, Inventory.CURRANCY));
|
player.getInventory(Inventory.CURRANCY).initList(getInventory(player, 0, Inventory.CURRANCY));
|
||||||
player.inventories[Inventory.BAZAAR].initList(getInventory(player, 0, Inventory.BAZAAR));
|
player.getInventory(Inventory.BAZAAR).initList(getInventory(player, 0, Inventory.BAZAAR));
|
||||||
player.inventories[Inventory.MELDREQUEST].initList(getInventory(player, 0, Inventory.MELDREQUEST));
|
player.getInventory(Inventory.MELDREQUEST).initList(getInventory(player, 0, Inventory.MELDREQUEST));
|
||||||
player.inventories[Inventory.LOOT].initList(getInventory(player, 0, Inventory.LOOT));
|
player.getInventory(Inventory.LOOT).initList(getInventory(player, 0, Inventory.LOOT));
|
||||||
|
|
||||||
}
|
}
|
||||||
catch (MySqlException e)
|
catch (MySqlException e)
|
||||||
|
@ -581,7 +581,7 @@ namespace FFXIVClassic_Lobby_Server
|
||||||
cmd.ExecuteNonQuery();
|
cmd.ExecuteNonQuery();
|
||||||
cmd2.ExecuteNonQuery();
|
cmd2.ExecuteNonQuery();
|
||||||
|
|
||||||
insertedItem = new Item((uint)cmd.LastInsertedId, itemId, quantity, (ushort)player.inventories[type].getNextEmptySlot(), isUntradeable, quality, durability, 0, 0, 0, 0, 0, 0);
|
insertedItem = new Item((uint)cmd.LastInsertedId, itemId, quantity, (ushort)player.getInventory(type).getNextEmptySlot(), isUntradeable, quality, durability, 0, 0, 0, 0, 0, 0);
|
||||||
}
|
}
|
||||||
catch (MySqlException e)
|
catch (MySqlException e)
|
||||||
{ Console.WriteLine(e); }
|
{ Console.WriteLine(e); }
|
||||||
|
|
|
@ -432,14 +432,14 @@ namespace FFXIVClassic_Lobby_Server
|
||||||
if (client != null)
|
if (client != null)
|
||||||
{
|
{
|
||||||
Player p = client.getActor();
|
Player p = client.getActor();
|
||||||
p.inventories[Inventory.NORMAL].addItem(itemId, quantity, 1);
|
p.getInventory(Inventory.NORMAL).addItem(itemId, quantity, 1);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
foreach (KeyValuePair<uint, ConnectedPlayer> entry in mConnectedPlayerList)
|
foreach (KeyValuePair<uint, ConnectedPlayer> entry in mConnectedPlayerList)
|
||||||
{
|
{
|
||||||
Player p = entry.Value.getActor();
|
Player p = entry.Value.getActor();
|
||||||
p.inventories[Inventory.NORMAL].addItem(itemId, quantity, 1);
|
p.getInventory(Inventory.NORMAL).addItem(itemId, quantity, 1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -450,8 +450,8 @@ namespace FFXIVClassic_Lobby_Server
|
||||||
{
|
{
|
||||||
Player p = client.getActor();
|
Player p = client.getActor();
|
||||||
|
|
||||||
if (p.inventories.ContainsKey(type))
|
if (p.getInventory(type) != null)
|
||||||
p.inventories[type].addItem(itemId, quantity, 1);
|
p.getInventory(type).addItem(itemId, quantity, 1);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -459,8 +459,8 @@ namespace FFXIVClassic_Lobby_Server
|
||||||
{
|
{
|
||||||
Player p = entry.Value.getActor();
|
Player p = entry.Value.getActor();
|
||||||
|
|
||||||
if (p.inventories.ContainsKey(type))
|
if (p.getInventory(type) != null)
|
||||||
p.inventories[type].addItem(itemId, quantity, 1);
|
p.getInventory(type).addItem(itemId, quantity, 1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -470,14 +470,14 @@ namespace FFXIVClassic_Lobby_Server
|
||||||
if (client != null)
|
if (client != null)
|
||||||
{
|
{
|
||||||
Player p = client.getActor();
|
Player p = client.getActor();
|
||||||
p.inventories[Inventory.NORMAL].removeItem(itemId, quantity);
|
p.getInventory(Inventory.NORMAL).removeItem(itemId, quantity);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
foreach (KeyValuePair<uint, ConnectedPlayer> entry in mConnectedPlayerList)
|
foreach (KeyValuePair<uint, ConnectedPlayer> entry in mConnectedPlayerList)
|
||||||
{
|
{
|
||||||
Player p = entry.Value.getActor();
|
Player p = entry.Value.getActor();
|
||||||
p.inventories[Inventory.NORMAL].removeItem(itemId, quantity);
|
p.getInventory(Inventory.NORMAL).removeItem(itemId, quantity);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -488,8 +488,8 @@ namespace FFXIVClassic_Lobby_Server
|
||||||
{
|
{
|
||||||
Player p = client.getActor();
|
Player p = client.getActor();
|
||||||
|
|
||||||
if (p.inventories.ContainsKey(type))
|
if (p.getInventory(type) != null)
|
||||||
p.inventories[type].removeItem(itemId, quantity);
|
p.getInventory(type).removeItem(itemId, quantity);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -497,8 +497,8 @@ namespace FFXIVClassic_Lobby_Server
|
||||||
{
|
{
|
||||||
Player p = entry.Value.getActor();
|
Player p = entry.Value.getActor();
|
||||||
|
|
||||||
if (p.inventories.ContainsKey(type))
|
if (p.getInventory(type) != null)
|
||||||
p.inventories[type].removeItem(itemId, quantity);
|
p.getInventory(type).removeItem(itemId, quantity);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -508,14 +508,14 @@ namespace FFXIVClassic_Lobby_Server
|
||||||
if (client != null)
|
if (client != null)
|
||||||
{
|
{
|
||||||
Player p = client.getActor();
|
Player p = client.getActor();
|
||||||
p.inventories[Inventory.CURRANCY].addItem(itemId, quantity, 1);
|
p.getInventory(Inventory.CURRANCY).addItem(itemId, quantity, 1);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
foreach (KeyValuePair<uint, ConnectedPlayer> entry in mConnectedPlayerList)
|
foreach (KeyValuePair<uint, ConnectedPlayer> entry in mConnectedPlayerList)
|
||||||
{
|
{
|
||||||
Player p = entry.Value.getActor();
|
Player p = entry.Value.getActor();
|
||||||
p.inventories[Inventory.CURRANCY].addItem(itemId, quantity, 1);
|
p.getInventory(Inventory.CURRANCY).addItem(itemId, quantity, 1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -525,14 +525,14 @@ namespace FFXIVClassic_Lobby_Server
|
||||||
if (client != null)
|
if (client != null)
|
||||||
{
|
{
|
||||||
Player p = client.getActor();
|
Player p = client.getActor();
|
||||||
p.inventories[Inventory.CURRANCY].removeItem(itemId, quantity);
|
p.getInventory(Inventory.CURRANCY).removeItem(itemId, quantity);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
foreach (KeyValuePair<uint, ConnectedPlayer> entry in mConnectedPlayerList)
|
foreach (KeyValuePair<uint, ConnectedPlayer> entry in mConnectedPlayerList)
|
||||||
{
|
{
|
||||||
Player p = entry.Value.getActor();
|
Player p = entry.Value.getActor();
|
||||||
p.inventories[Inventory.CURRANCY].removeItem(itemId, quantity);
|
p.getInventory(Inventory.CURRANCY).removeItem(itemId, quantity);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -542,14 +542,14 @@ namespace FFXIVClassic_Lobby_Server
|
||||||
if (client != null)
|
if (client != null)
|
||||||
{
|
{
|
||||||
Player p = client.getActor();
|
Player p = client.getActor();
|
||||||
p.inventories[Inventory.KEYITEMS].addItem(itemId, 1, 1);
|
p.getInventory(Inventory.KEYITEMS).addItem(itemId, 1, 1);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
foreach (KeyValuePair<uint, ConnectedPlayer> entry in mConnectedPlayerList)
|
foreach (KeyValuePair<uint, ConnectedPlayer> entry in mConnectedPlayerList)
|
||||||
{
|
{
|
||||||
Player p = entry.Value.getActor();
|
Player p = entry.Value.getActor();
|
||||||
p.inventories[Inventory.KEYITEMS].addItem(itemId, 1, 1);
|
p.getInventory(Inventory.KEYITEMS).addItem(itemId, 1, 1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -559,14 +559,14 @@ namespace FFXIVClassic_Lobby_Server
|
||||||
if (client != null)
|
if (client != null)
|
||||||
{
|
{
|
||||||
Player p = client.getActor();
|
Player p = client.getActor();
|
||||||
p.inventories[Inventory.KEYITEMS].removeItem(itemId, 1);
|
p.getInventory(Inventory.KEYITEMS).removeItem(itemId, 1);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
foreach (KeyValuePair<uint, ConnectedPlayer> entry in mConnectedPlayerList)
|
foreach (KeyValuePair<uint, ConnectedPlayer> entry in mConnectedPlayerList)
|
||||||
{
|
{
|
||||||
Player p = entry.Value.getActor();
|
Player p = entry.Value.getActor();
|
||||||
p.inventories[Inventory.KEYITEMS].removeItem(itemId, 1);
|
p.getInventory(Inventory.KEYITEMS).removeItem(itemId, 1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
using FFXIVClassic_Map_Server.Actors;
|
using FFXIVClassic_Map_Server.Actors;
|
||||||
using FFXIVClassic_Map_Server.dataobjects;
|
using FFXIVClassic_Map_Server.dataobjects;
|
||||||
|
using FFXIVClassic_Map_Server.packets.send.actor.inventory;
|
||||||
using FFXIVClassic_Map_Server.packets.send.Actor.inventory;
|
using FFXIVClassic_Map_Server.packets.send.Actor.inventory;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
@ -34,12 +35,15 @@ namespace FFXIVClassic_Map_Server.actors.chara.player
|
||||||
private ushort inventoryCapacity;
|
private ushort inventoryCapacity;
|
||||||
private ushort inventoryCode;
|
private ushort inventoryCode;
|
||||||
private Item[] list;
|
private Item[] list;
|
||||||
|
private Inventory normalInventory;
|
||||||
|
|
||||||
public Equipment(Player ownerPlayer, ushort capacity, ushort code)
|
public Equipment(Player ownerPlayer, Inventory normalInventory, ushort capacity, ushort code)
|
||||||
{
|
{
|
||||||
owner = ownerPlayer;
|
owner = ownerPlayer;
|
||||||
inventoryCapacity = capacity;
|
inventoryCapacity = capacity;
|
||||||
inventoryCode = code;
|
inventoryCode = code;
|
||||||
|
list = new Item[inventoryCapacity];
|
||||||
|
this.normalInventory = normalInventory;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Item GetItemAtSlot(ushort slot)
|
public Item GetItemAtSlot(ushort slot)
|
||||||
|
@ -50,6 +54,20 @@ namespace FFXIVClassic_Map_Server.actors.chara.player
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void SendFullEquipment(bool doClear)
|
||||||
|
{
|
||||||
|
List<ushort> slotsToUpdate = new List<ushort>();
|
||||||
|
for (ushort i = 0; i < list.Length; i++)
|
||||||
|
{
|
||||||
|
if (list[i] == null && doClear)
|
||||||
|
slotsToUpdate.Add(0);
|
||||||
|
else if (list[i] != null)
|
||||||
|
slotsToUpdate.Add(i);
|
||||||
|
}
|
||||||
|
|
||||||
|
SendEquipmentPackets(slotsToUpdate);
|
||||||
|
}
|
||||||
|
|
||||||
public void SetEquipment(List<Tuple<ushort, Item>> toEquip)
|
public void SetEquipment(List<Tuple<ushort, Item>> toEquip)
|
||||||
{
|
{
|
||||||
List<ushort> slotsToUpdate = new List<ushort>();
|
List<ushort> slotsToUpdate = new List<ushort>();
|
||||||
|
@ -64,41 +82,68 @@ namespace FFXIVClassic_Map_Server.actors.chara.player
|
||||||
|
|
||||||
public void Equip(ushort slot, Item item)
|
public void Equip(ushort slot, Item item)
|
||||||
{
|
{
|
||||||
if (slot < list.Length)
|
if (slot >= list.Length)
|
||||||
list[slot] = item;
|
return;
|
||||||
|
|
||||||
|
owner.queuePacket(InventoryBeginChangePacket.buildPacket(owner.actorId));
|
||||||
|
|
||||||
|
if (list[slot] != null)
|
||||||
|
normalInventory.RefreshItem(list[slot], item);
|
||||||
|
else
|
||||||
|
normalInventory.RefreshItem(item);
|
||||||
|
|
||||||
|
owner.queuePacket(InventorySetBeginPacket.buildPacket(owner.actorId, inventoryCapacity, inventoryCode));
|
||||||
SendEquipmentPackets(slot, item);
|
SendEquipmentPackets(slot, item);
|
||||||
|
owner.queuePacket(InventorySetEndPacket.buildPacket(owner.actorId));
|
||||||
|
|
||||||
|
owner.queuePacket(InventoryEndChangePacket.buildPacket(owner.actorId));
|
||||||
|
|
||||||
|
list[slot] = item;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Unequip(ushort slot)
|
public void Unequip(ushort slot)
|
||||||
{
|
{
|
||||||
if (slot < list.Length)
|
if (slot >= list.Length)
|
||||||
list[slot] = null;
|
return;
|
||||||
|
|
||||||
|
owner.queuePacket(InventoryBeginChangePacket.buildPacket(owner.actorId));
|
||||||
|
|
||||||
|
normalInventory.RefreshItem(list[slot]);
|
||||||
|
|
||||||
|
owner.queuePacket(InventorySetBeginPacket.buildPacket(owner.actorId, inventoryCapacity, inventoryCode));
|
||||||
SendEquipmentPackets(slot, null);
|
SendEquipmentPackets(slot, null);
|
||||||
|
owner.queuePacket(InventorySetEndPacket.buildPacket(owner.actorId));
|
||||||
|
|
||||||
|
owner.queuePacket(InventoryEndChangePacket.buildPacket(owner.actorId));
|
||||||
|
|
||||||
|
list[slot] = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void SendEquipmentPackets(ushort equipSlot, Item item)
|
private void SendEquipmentPackets(ushort equipSlot, Item item)
|
||||||
{
|
{
|
||||||
if (item == null)
|
if (item == null)
|
||||||
owner.queuePacket(EquipmentListX01Packet.buildPacket(owner.actorId, equipSlot, 0));
|
owner.queuePacket(InventoryRemoveX01Packet.buildPacket(owner.actorId, equipSlot));
|
||||||
else
|
else
|
||||||
owner.queuePacket(EquipmentListX01Packet.buildPacket(owner.actorId, equipSlot, item.slot));
|
owner.queuePacket(EquipmentListX01Packet.buildPacket(owner.actorId, equipSlot, item.slot));
|
||||||
}
|
}
|
||||||
|
|
||||||
private void SendEquipmentPackets(List<ushort> slotsToUpdate)
|
private void SendEquipmentPackets(List<ushort> slotsToUpdate)
|
||||||
{
|
{
|
||||||
|
owner.queuePacket(InventorySetBeginPacket.buildPacket(owner.actorId, inventoryCapacity, inventoryCode));
|
||||||
|
|
||||||
int currentIndex = 0;
|
int currentIndex = 0;
|
||||||
|
|
||||||
while (true)
|
while (true)
|
||||||
{
|
{
|
||||||
if (list.Length - currentIndex >= 64)
|
if (slotsToUpdate.Count - currentIndex >= 64)
|
||||||
owner.queuePacket(EquipmentListX64Packet.buildPacket(owner.actorId, list, slotsToUpdate, ref currentIndex));
|
owner.queuePacket(EquipmentListX64Packet.buildPacket(owner.actorId, list, slotsToUpdate, ref currentIndex));
|
||||||
else if (list.Length - currentIndex >= 32)
|
else if (slotsToUpdate.Count - currentIndex >= 32)
|
||||||
owner.queuePacket(EquipmentListX32Packet.buildPacket(owner.actorId, list, slotsToUpdate, ref currentIndex));
|
owner.queuePacket(EquipmentListX32Packet.buildPacket(owner.actorId, list, slotsToUpdate, ref currentIndex));
|
||||||
else if (list.Length - currentIndex >= 16)
|
else if (slotsToUpdate.Count - currentIndex >= 16)
|
||||||
owner.queuePacket(EquipmentListX16Packet.buildPacket(owner.actorId, list, slotsToUpdate, ref currentIndex));
|
owner.queuePacket(EquipmentListX16Packet.buildPacket(owner.actorId, list, slotsToUpdate, ref currentIndex));
|
||||||
else if (list.Length - currentIndex > 1)
|
else if (slotsToUpdate.Count - currentIndex > 1)
|
||||||
owner.queuePacket(EquipmentListX08Packet.buildPacket(owner.actorId, list, slotsToUpdate, ref currentIndex));
|
owner.queuePacket(EquipmentListX08Packet.buildPacket(owner.actorId, list, slotsToUpdate, ref currentIndex));
|
||||||
else if (list.Length - currentIndex == 1)
|
else if (slotsToUpdate.Count - currentIndex == 1)
|
||||||
{
|
{
|
||||||
owner.queuePacket(EquipmentListX01Packet.buildPacket(owner.actorId, slotsToUpdate[currentIndex], list[currentIndex].slot));
|
owner.queuePacket(EquipmentListX01Packet.buildPacket(owner.actorId, slotsToUpdate[currentIndex], list[currentIndex].slot));
|
||||||
currentIndex++;
|
currentIndex++;
|
||||||
|
@ -107,6 +152,7 @@ namespace FFXIVClassic_Map_Server.actors.chara.player
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
owner.queuePacket(InventorySetEndPacket.buildPacket(owner.actorId));
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -40,6 +40,35 @@ namespace FFXIVClassic_Map_Server.actors.chara.player
|
||||||
list = itemsFromDB;
|
list = itemsFromDB;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Item getItem(ushort slot)
|
||||||
|
{
|
||||||
|
if (slot < list.Count)
|
||||||
|
return list[slot];
|
||||||
|
else
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void RefreshItem(Item item)
|
||||||
|
{
|
||||||
|
owner.queuePacket(InventorySetBeginPacket.buildPacket(owner.actorId, inventoryCapacity, inventoryCode));
|
||||||
|
sendInventoryPackets(item);
|
||||||
|
owner.queuePacket(InventorySetEndPacket.buildPacket(owner.actorId));
|
||||||
|
}
|
||||||
|
|
||||||
|
public void RefreshItem(params Item[] items)
|
||||||
|
{
|
||||||
|
owner.queuePacket(InventorySetBeginPacket.buildPacket(owner.actorId, inventoryCapacity, inventoryCode));
|
||||||
|
sendInventoryPackets(items.ToList());
|
||||||
|
owner.queuePacket(InventorySetEndPacket.buildPacket(owner.actorId));
|
||||||
|
}
|
||||||
|
|
||||||
|
public void RefreshItem(List<Item> items)
|
||||||
|
{
|
||||||
|
owner.queuePacket(InventorySetBeginPacket.buildPacket(owner.actorId, inventoryCapacity, inventoryCode));
|
||||||
|
sendInventoryPackets(items);
|
||||||
|
owner.queuePacket(InventorySetEndPacket.buildPacket(owner.actorId));
|
||||||
|
}
|
||||||
|
|
||||||
public void addItem(uint itemId, int quantity, byte quality)
|
public void addItem(uint itemId, int quantity, byte quality)
|
||||||
{
|
{
|
||||||
if (!isSpaceForAdd(itemId, quantity))
|
if (!isSpaceForAdd(itemId, quantity))
|
||||||
|
@ -173,6 +202,10 @@ namespace FFXIVClassic_Map_Server.actors.chara.player
|
||||||
sendInventoryRemovePackets(slotsToRemove);
|
sendInventoryRemovePackets(slotsToRemove);
|
||||||
|
|
||||||
owner.queuePacket(InventorySetEndPacket.buildPacket(owner.actorId));
|
owner.queuePacket(InventorySetEndPacket.buildPacket(owner.actorId));
|
||||||
|
|
||||||
|
if (inventoryCode == NORMAL)
|
||||||
|
owner.getEquipment().SendFullEquipment(false);
|
||||||
|
|
||||||
owner.queuePacket(InventoryEndChangePacket.buildPacket(owner.actorId));
|
owner.queuePacket(InventoryEndChangePacket.buildPacket(owner.actorId));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -210,6 +243,10 @@ namespace FFXIVClassic_Map_Server.actors.chara.player
|
||||||
sendInventoryRemovePackets((ushort)(oldListSize - 1));
|
sendInventoryRemovePackets((ushort)(oldListSize - 1));
|
||||||
|
|
||||||
owner.queuePacket(InventorySetEndPacket.buildPacket(owner.actorId));
|
owner.queuePacket(InventorySetEndPacket.buildPacket(owner.actorId));
|
||||||
|
|
||||||
|
if (inventoryCode == NORMAL)
|
||||||
|
owner.getEquipment().SendFullEquipment(false);
|
||||||
|
|
||||||
owner.queuePacket(InventoryEndChangePacket.buildPacket(owner.actorId));
|
owner.queuePacket(InventoryEndChangePacket.buildPacket(owner.actorId));
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -236,6 +273,10 @@ namespace FFXIVClassic_Map_Server.actors.chara.player
|
||||||
sendInventoryRemovePackets((ushort)(oldListSize - 1));
|
sendInventoryRemovePackets((ushort)(oldListSize - 1));
|
||||||
|
|
||||||
owner.queuePacket(InventorySetEndPacket.buildPacket(owner.actorId));
|
owner.queuePacket(InventorySetEndPacket.buildPacket(owner.actorId));
|
||||||
|
|
||||||
|
if (inventoryCode == NORMAL)
|
||||||
|
owner.getEquipment().SendFullEquipment(false);
|
||||||
|
|
||||||
owner.queuePacket(InventoryEndChangePacket.buildPacket(owner.actorId));
|
owner.queuePacket(InventoryEndChangePacket.buildPacket(owner.actorId));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -268,6 +309,31 @@ namespace FFXIVClassic_Map_Server.actors.chara.player
|
||||||
owner.queuePacket(InventoryListX01Packet.buildPacket(owner.actorId, item));
|
owner.queuePacket(InventoryListX01Packet.buildPacket(owner.actorId, item));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void sendInventoryPackets(List<Item> items)
|
||||||
|
{
|
||||||
|
int currentIndex = 0;
|
||||||
|
|
||||||
|
while (true)
|
||||||
|
{
|
||||||
|
if (items.Count - currentIndex >= 64)
|
||||||
|
owner.queuePacket(InventoryListX64Packet.buildPacket(owner.actorId, items, ref currentIndex));
|
||||||
|
else if (items.Count - currentIndex >= 32)
|
||||||
|
owner.queuePacket(InventoryListX32Packet.buildPacket(owner.actorId, items, ref currentIndex));
|
||||||
|
else if (items.Count - currentIndex >= 16)
|
||||||
|
owner.queuePacket(InventoryListX16Packet.buildPacket(owner.actorId, items, ref currentIndex));
|
||||||
|
else if (items.Count - currentIndex > 1)
|
||||||
|
owner.queuePacket(InventoryListX08Packet.buildPacket(owner.actorId, items, ref currentIndex));
|
||||||
|
else if (items.Count - currentIndex == 1)
|
||||||
|
{
|
||||||
|
owner.queuePacket(InventoryListX01Packet.buildPacket(owner.actorId, items[currentIndex]));
|
||||||
|
currentIndex++;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
private void sendInventoryPackets(int startOffset)
|
private void sendInventoryPackets(int startOffset)
|
||||||
{
|
{
|
||||||
int currentIndex = startOffset;
|
int currentIndex = startOffset;
|
||||||
|
|
|
@ -32,7 +32,7 @@ namespace FFXIVClassic_Map_Server.Actors
|
||||||
public const int MAXSIZE_INVENTORY_LOOT = 10;
|
public const int MAXSIZE_INVENTORY_LOOT = 10;
|
||||||
public const int MAXSIZE_INVENTORY_MELDREQUEST = 4;
|
public const int MAXSIZE_INVENTORY_MELDREQUEST = 4;
|
||||||
public const int MAXSIZE_INVENTORY_BAZAAR = 10;
|
public const int MAXSIZE_INVENTORY_BAZAAR = 10;
|
||||||
public const int MAXSIZE_INVENTORY_EQUIPMENT = 10;
|
public const int MAXSIZE_INVENTORY_EQUIPMENT = 35;
|
||||||
|
|
||||||
public const int TIMER_TOTORAK = 0;
|
public const int TIMER_TOTORAK = 0;
|
||||||
public const int TIMER_DZEMAEL = 1;
|
public const int TIMER_DZEMAEL = 1;
|
||||||
|
@ -61,8 +61,8 @@ namespace FFXIVClassic_Map_Server.Actors
|
||||||
public uint currentTitle;
|
public uint currentTitle;
|
||||||
|
|
||||||
//Inventory
|
//Inventory
|
||||||
public Dictionary<ushort, Inventory> inventories = new Dictionary<ushort, Inventory>();
|
private Dictionary<ushort, Inventory> inventories = new Dictionary<ushort, Inventory>();
|
||||||
public int[] invEquipment = new int[MAXSIZE_INVENTORY_EQUIPMENT];
|
private Equipment equipment;
|
||||||
|
|
||||||
//GC Related
|
//GC Related
|
||||||
public byte gcCurrent;
|
public byte gcCurrent;
|
||||||
|
@ -102,6 +102,8 @@ namespace FFXIVClassic_Map_Server.Actors
|
||||||
inventories[Inventory.BAZAAR] = new Inventory(this, MAXSIZE_INVENTORY_BAZAAR, Inventory.BAZAAR);
|
inventories[Inventory.BAZAAR] = new Inventory(this, MAXSIZE_INVENTORY_BAZAAR, Inventory.BAZAAR);
|
||||||
inventories[Inventory.LOOT] = new Inventory(this, MAXSIZE_INVENTORY_LOOT, Inventory.LOOT);
|
inventories[Inventory.LOOT] = new Inventory(this, MAXSIZE_INVENTORY_LOOT, Inventory.LOOT);
|
||||||
|
|
||||||
|
equipment = new Equipment(this, inventories[Inventory.NORMAL], MAXSIZE_INVENTORY_EQUIPMENT, Inventory.EQUIPMENT);
|
||||||
|
|
||||||
charaWork.property[0] = 1;
|
charaWork.property[0] = 1;
|
||||||
charaWork.property[1] = 1;
|
charaWork.property[1] = 1;
|
||||||
charaWork.property[2] = 1;
|
charaWork.property[2] = 1;
|
||||||
|
@ -432,6 +434,7 @@ namespace FFXIVClassic_Map_Server.Actors
|
||||||
playerSession.queuePacket(partyListPacket);
|
playerSession.queuePacket(partyListPacket);
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
#region Inventory & Equipment
|
||||||
queuePacket(InventoryBeginChangePacket.buildPacket(actorId));
|
queuePacket(InventoryBeginChangePacket.buildPacket(actorId));
|
||||||
inventories[Inventory.NORMAL].sendFullInventory();
|
inventories[Inventory.NORMAL].sendFullInventory();
|
||||||
inventories[Inventory.CURRANCY].sendFullInventory();
|
inventories[Inventory.CURRANCY].sendFullInventory();
|
||||||
|
@ -439,21 +442,9 @@ namespace FFXIVClassic_Map_Server.Actors
|
||||||
inventories[Inventory.BAZAAR].sendFullInventory();
|
inventories[Inventory.BAZAAR].sendFullInventory();
|
||||||
inventories[Inventory.MELDREQUEST].sendFullInventory();
|
inventories[Inventory.MELDREQUEST].sendFullInventory();
|
||||||
inventories[Inventory.LOOT].sendFullInventory();
|
inventories[Inventory.LOOT].sendFullInventory();
|
||||||
#region equipsetup
|
equipment.SendFullEquipment(false);
|
||||||
// EquipmentListX08Packet initialEqupmentPacket = new EquipmentListX08Packet();
|
|
||||||
// initialEqupmentPacket.setItem(EquipmentListX08Packet.SLOT_BODY, 5);
|
|
||||||
// initialEqupmentPacket.setItem(EquipmentListX08Packet.SLOT_HEAD, 3);
|
|
||||||
// initialEqupmentPacket.setItem(EquipmentListX08Packet.SLOT_UNDERSHIRT, 6);
|
|
||||||
// initialEqupmentPacket.setItem(EquipmentListX08Packet.SLOT_UNDERGARMENT, 7);
|
|
||||||
// initialEqupmentPacket.setItem(EquipmentListX08Packet.SLOT_MAINHAND, 2);
|
|
||||||
// initialEqupmentPacket.setItem(EquipmentListX08Packet.SLOT_LEGS, 8);
|
|
||||||
|
|
||||||
//Equip Init
|
|
||||||
// playerSession.queuePacket(InventorySetBeginPacket.buildPacket(actorId, 0x23, InventorySetBeginPacket.CODE_EQUIPMENT), true, false);
|
|
||||||
// playerSession.queuePacket(BasePacket.createPacket(initialEqupmentPacket.buildPackets(actorId), true, false));
|
|
||||||
// playerSession.queuePacket(InventorySetEndPacket.buildPacket(actorId), true, false);
|
|
||||||
#endregion
|
|
||||||
playerSession.queuePacket(InventoryEndChangePacket.buildPacket(actorId), true, false);
|
playerSession.queuePacket(InventoryEndChangePacket.buildPacket(actorId), true, false);
|
||||||
|
#endregion
|
||||||
|
|
||||||
playerSession.queuePacket(getInitPackets(actorId));
|
playerSession.queuePacket(getInitPackets(actorId));
|
||||||
|
|
||||||
|
@ -646,7 +637,15 @@ namespace FFXIVClassic_Map_Server.Actors
|
||||||
|
|
||||||
public Inventory getInventory(ushort type)
|
public Inventory getInventory(ushort type)
|
||||||
{
|
{
|
||||||
|
if (inventories.ContainsKey(type))
|
||||||
return inventories[type];
|
return inventories[type];
|
||||||
|
else
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Equipment getEquipment()
|
||||||
|
{
|
||||||
|
return equipment;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void runEventFunction(string functionName, params object[] parameters)
|
public void runEventFunction(string functionName, params object[] parameters)
|
||||||
|
|
Loading…
Add table
Reference in a new issue