Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 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
- purseButton = nil
- function init()
- connect(LocalPlayer, {
- onInventoryChange = onInventoryChange,
- onBlessingsChange = onBlessingsChange
- })
- connect(g_game, { onGameStart = refresh })
- g_keyboard.bindKeyDown('Ctrl+I', toggle)
- inventoryButton = modules.client_topmenu.addRightGameToggleButton('inventoryButton', tr('Inventory') .. ' (Ctrl+I)', '/images/topbuttons/inventory', toggle)
- inventoryButton:setOn(true)
- inventoryWindow = g_ui.loadUI('inventory', modules.game_interface.getRightPanel())
- inventoryWindow:disableResize()
- inventoryPanel = inventoryWindow:getChildById('contentsPanel')
- purseButton = inventoryPanel:getChildById('purseButton')
- local function purseFunction()
- local purse = g_game.getLocalPlayer():getInventoryItem(InventorySlotPurse)
- if purse then
- g_game.use(purse)
- end
- end
- purseButton.onClick = purseFunction
- refresh()
- inventoryWindow:setup()
- end
- function terminate()
- disconnect(LocalPlayer, {
- onInventoryChange = onInventoryChange,
- onBlessingsChange = onBlessingsChange
- })
- disconnect(g_game, { onGameStart = refresh })
- g_keyboard.unbindKeyDown('Ctrl+I')
- inventoryWindow:destroy()
- inventoryButton:destroy()
- end
- function toggleAdventurerStyle(hasBlessing)
- for slot = InventorySlotFirst, InventorySlotLast do
- local itemWidget = inventoryPanel:getChildById('slot' .. slot)
- if itemWidget then
- itemWidget:setOn(hasBlessing)
- end
- end
- end
- function refresh()
- scheduleEvent(function()
- modules.game_interface.gameMapPanel:setVisibleDimension({ width = 27, height = 23 })
- end, 100)
- local player = g_game.getLocalPlayer()
- for i = InventorySlotFirst, InventorySlotPurse do
- if g_game.isOnline() then
- onInventoryChange(player, i, player:getInventoryItem(i))
- else
- onInventoryChange(player, i, nil)
- end
- toggleAdventurerStyle(player and Bit.hasBit(player:getBlessings(), Blessings.Adventurer) or false)
- end
- purseButton:setVisible(g_game.getFeature(GamePurseSlot))
- 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
- if slot == InventorySlotPurse then
- if g_game.getFeature(GamePurseSlot) then
- purseButton:setEnabled(item and true or false)
- end
- return
- end
- local itemWidget = inventoryPanel:getChildById('slot' .. slot)
- if item then
- itemWidget:setStyle('InventoryItem')
- itemWidget:setItem(item)
- else
- itemWidget:setStyle(InventorySlotStyles[slot])
- itemWidget:setItem(nil)
- end
- end
- function onBlessingsChange(player, blessings, oldBlessings)
- local hasAdventurerBlessing = Bit.hasBit(blessings, Blessings.Adventurer)
- if hasAdventurerBlessing ~= Bit.hasBit(oldBlessings, Blessings.Adventurer) then
- toggleAdventurerStyle(hasAdventurerBlessing)
- end
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement