Cycle Inventory Items (CMS)

From The Official Visionaire Studio: Adventure Game Engine Wiki
Name Type By
Cycle Inventory Items Definition AFRLme

This script allows you to cycle through the items in your inventory system.

Instructions

1. Add the main script to the Visionaire Studio Script Editor & set the script as a definition script.
2. Edit the slots = 0 value inside of the script to the amount of inventory slots you added to your interface.
3. By default the script will only allow you to cycle the inventory items when the amount of items in the inventory equals the same or greater than the amount of inventory slots. You can toggle between the default mode & always cycle by creating an execute a script action containing:

toggleCycleMode()

4. To cycle inventory items forward (ascending) you should create an execute a script action containing:

cycleItems(true)

5. To cycle inventory items backwards (descending) you should create an execute a script action containing:

cycleItems(false)

Main Script

--[[
Cycle inventory items by ascending or descending order [v2.1] (15/09/2022)
Written by AFRLme [Lee Clarke]
-- + --
email: afrlme@outlook.com
paypal: afrlme@zoho.com
patreon: https://www.patreon.com/AFRLme
portfolio: https://afrl.me
-- + --
This script is donation optional. In game credit is non-negotiable.
You are free to: ¹ use it in your game(s). ² modify the script.
Do not remove - or edit - this comment block.
--]]

-- * local variables * --
local char, items, item, amt -- empty variables
local slots = 0 -- define inventory slot amount here
local cycle = false -- false = only cycle inventory when item amount equals same as or more than inventory slots. true = always cycle

-- * function for changing cycle mode * --
function toggleCycleMode()
 if cycle then cycle = false else cycle = true end
end

-- * function for cycling through the inventory items * --
function cycleItems(asc)
 char = game.CurrentCharacter -- store current character
 items = char.Items -- store inventory items into a table
 amt = #items -- get index number of last item
 if cycle or amt >= slots then
  if asc then item = items[amt]; table.remove(items, amt); table.insert(items, 1, item) else item = items[1]; table.remove(items, 1); table.insert(items, item) end
  game.CurrentCharacter.Items = items -- update the inventory
 end
end