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:
parent
08dfd22bfa
commit
611140568e
4 changed files with 26 additions and 34 deletions
|
@ -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();
|
||||||
|
|
||||||
|
|
|
@ -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:
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
|
@ -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);
|
||||||
|
|
Loading…
Add table
Reference in a new issue