diff --git a/data/scripts/base/chara/npc/object/RetainerFurniture.lua b/data/scripts/base/chara/npc/object/RetainerFurniture.lua index 1e82cbd6..1f812a38 100644 --- a/data/scripts/base/chara/npc/object/RetainerFurniture.lua +++ b/data/scripts/base/chara/npc/object/RetainerFurniture.lua @@ -39,9 +39,9 @@ function onEventStarted(player, npc, triggerName) while (true) do choice = callClientFunction(player, "eventTalkRetainerMenu", false, true); if (choice == 1) then - doItemTrade(player, npc); + doItemTrade(player, retainer); elseif (choice == 2) then - doBazaar(player, npc); + doBazaar(player, retainer); elseif (choice == 7) then callClientFunction(player, "eventTalkRetainerMannequin", 0); elseif (choice == 8) then diff --git a/data/scripts/base/chara/npc/retainer/OrdinaryRetainer.lua b/data/scripts/base/chara/npc/retainer/OrdinaryRetainer.lua index 69f13f70..2131a414 100644 --- a/data/scripts/base/chara/npc/retainer/OrdinaryRetainer.lua +++ b/data/scripts/base/chara/npc/retainer/OrdinaryRetainer.lua @@ -24,6 +24,10 @@ function init(npc) return false, false, 0, 0; end +function onSpawn(player, npc) + npc:SendFullRetainerInventory(player); +end + function onEventStarted(player, retainer, triggerName) while (true) do diff --git a/data/scripts/retainer.lua b/data/scripts/retainer.lua index e142d95e..7348bd20 100644 --- a/data/scripts/retainer.lua +++ b/data/scripts/retainer.lua @@ -22,16 +22,18 @@ function doItemTrade(player, retainer) callClientFunction(player, "eventTalkRetainerItemTrade", 1); while (true) do - resultCode, type7Param, un1, quantity, itemId, unk2 = callClientFunction(player, "eventTalkRetainerItemTrade", 2); + resultCode, type7Param, un1, quantity, itemId, quality = callClientFunction(player, "eventTalkRetainerItemTrade", 2); --Retreieve - if (resultCode == 31) then - --UpdatePlayer - --UpdateRetainer + if (resultCode == 31) then + retainer:GetInventory(type7Param.inventoryType):RemoveItemAtSlot(type7Param.slot, quantity); + retainer:GetInventory(type7Param.inventoryType):SendUpdatePackets(player, true); + player:GetInventory(type7Param.inventoryType):AddItem(itemId, quantity, quality); --Entrust - elseif (resultCode == 32) then - --UpdatePlayer - --UpdateRetainer + elseif (resultCode == 32) then + player:GetInventory(type7Param.inventoryType):RemoveItemAtSlot(type7Param.slot, quantity); + retainer:GetInventory(type7Param.inventoryType):AddItem(itemId, quantity, quality); + retainer:GetInventory(type7Param.inventoryType):SendUpdatePackets(player, true); end callClientFunction(player, "eventReturnResult", resultCode, false);