InventorySlotStyles = { [InventorySlotHead] = "HeadSlot", [InventorySlotNeck] = "NeckSlot", [InventorySlotBack] = "BackSlot", [InventorySlotBody] = "BodySlot", [InventorySlotRight] = "RightSlot", [InventorySlotLeft] = "LeftSlot", [InventorySlotLeg] = "LegSlot", [InventorySlotFeet] = "FeetSlot", [InventorySlotFinger] = "FingerSlot", [InventorySlotAmmo] = "AmmoSlot" } inventoryWindow = nil inventoryPanel = nil inventoryButton = nil function init() connect(LocalPlayer, { onInventoryChange = onInventoryChange }) connect(g_game, { onGameStart = refresh }) g_keyboard.bindKeyDown('Ctrl+I', toggle) inventoryWindow = g_ui.loadUI('inventory.otui', modules.game_interface.getRightPanel()) inventoryWindow:disableResize() inventoryPanel = inventoryWindow:getChildById('contentsPanel') inventoryButton = TopMenu.addRightGameToggleButton('inventoryButton', tr('Inventory') .. ' (Ctrl+I)', 'inventory.png', toggle) inventoryButton:setOn(true) refresh() end function terminate() disconnect(LocalPlayer, { onInventoryChange = onInventoryChange }) disconnect(g_game, { onGameStart = refresh }) g_keyboard.unbindKeyDown('Ctrl+I') inventoryWindow:destroy() inventoryButton:destroy() end function refresh() local player = g_game.getLocalPlayer() for i=InventorySlotFirst,InventorySlotLast do if g_game.isOnline() then onInventoryChange(player, i, player:getInventoryItem(i)) else onInventoryChange(player, i, nil) end end end function toggle() if inventoryButton:isOn() then inventoryWindow:close() inventoryButton:setOn(false) else inventoryWindow:open() inventoryButton:setOn(true) end end function onMiniWindowClose() inventoryButton:setOn(false) end -- hooked events function onInventoryChange(player, slot, item, oldItem) if slot >= InventorySlotPurse then return end local itemWidget = inventoryPanel:getChildById('slot' .. slot) if item then itemWidget:setStyle('Item') itemWidget:setItem(item) else itemWidget:setStyle(InventorySlotStyles[slot]) itemWidget:setItem(nil) end end