1
Fork 0
mirror of https://bitbucket.org/Ioncannon/project-meteor-server.git synced 2025-04-22 04:37:47 +00:00

Fixed broken KickEvent. Cleaned up Retainers to use the ItemPacakageUpdate packet. Fixed db references for retainer inventory.

This commit is contained in:
Filip Maj 2017-12-17 15:25:42 -05:00
parent 08dfd22bfa
commit 611140568e
4 changed files with 26 additions and 34 deletions

View file

@ -1548,6 +1548,7 @@ namespace FFXIVClassic_Map_Server
itemId, itemId,
server_items_modifiers.id AS modifierId, server_items_modifiers.id AS modifierId,
quantity, quantity,
isExclusive,
quality, quality,
durability, durability,
@ -1568,10 +1569,10 @@ namespace FFXIVClassic_Map_Server
FROM retainers_inventory FROM retainers_inventory
INNER JOIN server_items ON serverItemId = server_items.id INNER JOIN server_items ON serverItemId = server_items.id
LEFT JOIN server_items_modifiers ON server_items.id = server_items_modifiers.id LEFT JOIN server_items_modifiers ON server_items.id = server_items_modifiers.id
WHERE characterId = @charId AND itemPackage = @type"; WHERE characterId = @retainerId AND itemPackage = @type";
MySqlCommand cmd = new MySqlCommand(query, conn); MySqlCommand cmd = new MySqlCommand(query, conn);
cmd.Parameters.AddWithValue("@retainerId", retainer.getRetainerId()); cmd.Parameters.AddWithValue("@retainerId", retainer.GetRetainerId());
cmd.Parameters.AddWithValue("@type", type); cmd.Parameters.AddWithValue("@type", type);
ushort slot = 0; ushort slot = 0;
@ -1583,10 +1584,9 @@ namespace FFXIVClassic_Map_Server
uint itemId = reader.GetUInt32("itemId"); uint itemId = reader.GetUInt32("itemId");
int quantity = reader.GetInt32("quantity"); int quantity = reader.GetInt32("quantity");
byte itemType = reader.GetByte("itemType");
byte qualityNumber = reader.GetByte("quality"); byte qualityNumber = reader.GetByte("quality");
bool hasModifier = reader.IsDBNull(reader.GetOrdinal("modifierId")); bool hasModifier = !reader.IsDBNull(reader.GetOrdinal("modifierId"));
InventoryItem.ItemModifier modifier = null; InventoryItem.ItemModifier modifier = null;
if (hasModifier) if (hasModifier)
@ -1781,7 +1781,7 @@ namespace FFXIVClassic_Map_Server
MySqlCommand cmd = new MySqlCommand(query, conn); MySqlCommand cmd = new MySqlCommand(query, conn);
cmd.Parameters.AddWithValue("@serverItemId", addedItem.uniqueId); cmd.Parameters.AddWithValue("@serverItemId", addedItem.uniqueId);
cmd.Parameters.AddWithValue("@retainerId", retainer.getRetainerId()); cmd.Parameters.AddWithValue("@retainerId", retainer.GetRetainerId());
cmd.Parameters.AddWithValue("@itemPackage", type); cmd.Parameters.AddWithValue("@itemPackage", type);
cmd.Parameters.AddWithValue("@quantity", addedItem.quantity); cmd.Parameters.AddWithValue("@quantity", addedItem.quantity);
@ -1812,7 +1812,7 @@ namespace FFXIVClassic_Map_Server
"; ";
MySqlCommand cmd = new MySqlCommand(query, conn); MySqlCommand cmd = new MySqlCommand(query, conn);
cmd.Parameters.AddWithValue("@retainerId", retainer.getRetainerId()); cmd.Parameters.AddWithValue("@retainerId", retainer.GetRetainerId());
cmd.Parameters.AddWithValue("@serverItemId", serverItemId); cmd.Parameters.AddWithValue("@serverItemId", serverItemId);
cmd.ExecuteNonQuery(); cmd.ExecuteNonQuery();

View file

@ -238,8 +238,13 @@ namespace FFXIVClassic_Map_Server
//Item Package Request //Item Package Request
case 0x0131: case 0x0131:
UpdateItemPackagePacket packageRequest = new UpdateItemPackagePacket(subpacket.data); UpdateItemPackagePacket packageRequest = new UpdateItemPackagePacket(subpacket.data);
if (Server.GetWorldManager().GetPCInWorld(packageRequest.actorID) != null) if (Server.GetWorldManager().GetActorInWorld(packageRequest.actorID) != null)
Server.GetWorldManager().GetPCInWorld(packageRequest.actorID).SendItemPackage(session.GetActor(), packageRequest.packageId); {
((Character)Server.GetWorldManager().GetActorInWorld(packageRequest.actorID)).SendItemPackage(session.GetActor(), packageRequest.packageId);
break;
}
if (session.GetActor().GetSpawnedRetainer() != null && session.GetActor().GetSpawnedRetainer().actorId == packageRequest.actorID)
session.GetActor().GetSpawnedRetainer().SendItemPackage(session.GetActor(), packageRequest.packageId);
break; break;
//Group Created Confirm //Group Created Confirm
case 0x0133: case 0x0133:

View file

@ -18,7 +18,6 @@ namespace FFXIVClassic_Map_Server.actors.chara.npc
private uint retainerId; private uint retainerId;
private Player ownerPlayer; private Player ownerPlayer;
private Dictionary<ushort, Inventory> inventories = new Dictionary<ushort, Inventory>();
public Retainer(uint retainerId, ActorClass actorClass, Player player, float posX, float posY, float posZ, float rot) public Retainer(uint retainerId, ActorClass actorClass, Player player, float posX, float posY, float posZ, float rot)
: base(0, actorClass, "myretainer", player.GetZone(), posX, posY, posZ, rot, 0, 0, null) : base(0, actorClass, "myretainer", player.GetZone(), posX, posY, posZ, rot, 0, 0, null)
@ -27,33 +26,16 @@ namespace FFXIVClassic_Map_Server.actors.chara.npc
this.ownerPlayer = player; this.ownerPlayer = player;
this.actorName = String.Format("_rtnre{0:x7}", actorId); this.actorName = String.Format("_rtnre{0:x7}", actorId);
inventories[Inventory.NORMAL] = new Inventory(this, MAXSIZE_INVENTORY_NORMAL, Inventory.NORMAL); itemPackages[Inventory.NORMAL] = new Inventory(this, MAXSIZE_INVENTORY_NORMAL, Inventory.NORMAL);
inventories[Inventory.CURRENCY_CRYSTALS] = new Inventory(this, MAXSIZE_INVENTORY_CURRANCY, Inventory.CURRENCY_CRYSTALS); itemPackages[Inventory.CURRENCY_CRYSTALS] = new Inventory(this, MAXSIZE_INVENTORY_CURRANCY, Inventory.CURRENCY_CRYSTALS);
inventories[Inventory.BAZAAR] = new Inventory(this, MAXSIZE_INVENTORY_BAZAAR, Inventory.BAZAAR); itemPackages[Inventory.BAZAAR] = new Inventory(this, MAXSIZE_INVENTORY_BAZAAR, Inventory.BAZAAR);
inventories[Inventory.NORMAL].InitList(Database.GetInventory(this, Inventory.NORMAL)); itemPackages[Inventory.NORMAL].InitList(Database.GetInventory(this, Inventory.NORMAL));
inventories[Inventory.CURRENCY_CRYSTALS].InitList(Database.GetInventory(this, Inventory.CURRENCY_CRYSTALS)); itemPackages[Inventory.CURRENCY_CRYSTALS].InitList(Database.GetInventory(this, Inventory.CURRENCY_CRYSTALS));
inventories[Inventory.BAZAAR].InitList(Database.GetInventory(this, Inventory.BAZAAR)); itemPackages[Inventory.BAZAAR].InitList(Database.GetInventory(this, Inventory.BAZAAR));
} }
public Inventory GetInventory(ushort type) public uint GetRetainerId()
{
if (inventories.ContainsKey(type))
return inventories[type];
else
return null;
}
public void SendFullRetainerInventory(Player player)
{
player.QueuePacket(InventoryBeginChangePacket.BuildPacket(actorId));
inventories[Inventory.NORMAL].SendFullInventory(player);
inventories[Inventory.CURRENCY_CRYSTALS].SendFullInventory(player);
inventories[Inventory.BAZAAR].SendFullInventory(player);
player.QueuePacket(InventoryEndChangePacket.BuildPacket(actorId));
}
public uint getRetainerId()
{ {
return retainerId; return retainerId;
} }

View file

@ -1694,7 +1694,7 @@ namespace FFXIVClassic_Map_Server.Actors
runningEvents.Pop(); runningEvents.Pop();
List<LuaParam> lParams = LuaUtils.CreateLuaParamList(parameters); List<LuaParam> lParams = LuaUtils.CreateLuaParamList(parameters);
SubPacket spacket = KickEventPacket.BuildPacket(actorId, actor.actorId, 0x75dc1, conditionName, lParams); SubPacket spacket = KickEventPacket.BuildPacket(actorId, actor.actorId, 0x75dc1705, conditionName, lParams);
spacket.DebugPrintSubPacket(); spacket.DebugPrintSubPacket();
QueuePacket(spacket); QueuePacket(spacket);
} }
@ -1885,6 +1885,11 @@ namespace FFXIVClassic_Map_Server.Actors
} }
} }
public Retainer GetSpawnedRetainer()
{
return currentSpawnedRetainer;
}
public void StartTradeTransaction(Player otherPlayer) public void StartTradeTransaction(Player otherPlayer)
{ {
myOfferings = new Inventory(this, 4, Inventory.TRADE, true); myOfferings = new Inventory(this, 4, Inventory.TRADE, true);