diff options
author | Kae <80987908+Novaenia@users.noreply.github.com> | 2025-02-01 13:29:49 +1100 |
---|---|---|
committer | Kae <80987908+Novaenia@users.noreply.github.com> | 2025-02-01 13:29:49 +1100 |
commit | 574c62bc32a99891295ecdcf671c7e3145c7aab2 (patch) | |
tree | 1e2bc58b3bf34b649529c5330c60483bbd033fcf /assets/opensb/scripts | |
parent | 690d47995f6733eef9b28bd2ebef2c237b61b159 (diff) |
allow item pasting to stack
Diffstat (limited to 'assets/opensb/scripts')
-rw-r--r-- | assets/opensb/scripts/opensb/player/copy_paste.lua | 18 |
1 files changed, 15 insertions, 3 deletions
diff --git a/assets/opensb/scripts/opensb/player/copy_paste.lua b/assets/opensb/scripts/opensb/player/copy_paste.lua index 2a15af4..f301427 100644 --- a/assets/opensb/scripts/opensb/player/copy_paste.lua +++ b/assets/opensb/scripts/opensb/player/copy_paste.lua @@ -24,13 +24,18 @@ local function copyItem() local item = player.swapSlotItem() or player.primaryHandItem() or player.altHandItem() if not item then return end - clipboard.setText(sb.printJson(item, 2)) - local message = string.format("Copied ^cyan;%s^reset; to clipboard", getItemName(item)) + local message = "^#f00;Failed to write to clipboard^reset;" + if clipboard.setText(sb.printJson(item, 2)) then + message = string.format("Copied ^cyan;%s^reset; to clipboard", getItemName(item)) + end interface.queueMessage(message, 4, 0.5) end local function pasteItem() - if player.swapSlotItem() then return end + if not clipboard.available() then + return interface.queueMessage("^#f00;Clipboard unavailable^reset;", 4, 0.5) + end + local swap = player.swapSlotItem() local data = getClipboardText() if not data then return end @@ -38,6 +43,13 @@ local function pasteItem() if not success then popupError("Error parsing clipboard item", result) else + if swap then + if swap.name == result.name and sb.jsonEqual(swap.parameters, result.parameters) then + result.count = (tonumber(result.count) or 1) + (tonumber(swap.count) or 1) + else + return interface.queueMessage("^#f00;Cursor is occupied^reset;", 4, 0.5) + end + end local success, err = pcall(player.setSwapSlotItem, result) if not success then popupError("Error loading clipboard item", err) else |