Building an RPG-Style Inventory

22

Index

Attached Files

The following files have been attached to this tutorial:

.c3p

inventory-system.c3p

Download now 344.98 KB

Stats

11,897 visits, 33,577 views

Tools

Translations

This tutorial hasn't been translated.

License

This tutorial is licensed under CC BY 4.0. Please refer to the license text if you wish to reuse, share or remix the content contained within this tutorial.

The handy thing about using arrays for these inventories, is that Construct has a built-in action to sort an array. So, sorting the inventory is actually pretty easy – it takes a little bit of pre-planning, but it does mean you can simply press one key and the inventory is sorted.

If you look at the item information, you'll notice that all of the items are listed alphabetically. This is purely for sorting reasons – by arranging the items in a specific order in the JSON file, you can affect how they're sorted in the inventory.

When adding items to the inventory, you'll end up with an array filled with a set of ID numbers. If you want to then sort them, in this case alphabetically, all it takes is the following event:

This only sorts a single inventory category at a time, but if you disable the Inventory picking condition, all of your categories will be sorted at once. This can be done at any time as long as the inventory is open, so the player can sort their inventory whenever they get new stuff! And you don't have to sort alphabetically either, it simply depends on what order you put things into your JSON file.

  • 10 Comments

  • Order by
Want to leave a comment? Login or Register an account!
  • Seriously one of the best tutorials/guides on Construct. This should have won some awards! :)

    My question is, next step, how would you set this up so that certain items are only available based on your character's level? Obviously you would need some value to increase (XP?) and when it hit a certain value (level?), new items could be "found" but putting that together is beyond me. However, for a superhero like Laura_D, it could be a fun project building off this gem.

    Thanks for all that you do!!

  • Hi Laura! I'm struggling to understand where the images for the items are being pulled in from. I don't see it mentioned in the tutorial. Could you please explain? Thanks!

      • [-] [+]
      • 1
      • Laura_D's avatar
      • Laura_D
      • Construct Team Community Manager
      • 1 points
      • (1 child)

      So, both the ItemShowcase and the ItemSlot objects have animation frames for each item. Then, in the JSON file, each item has an ID and these ID numbers dictate the order that the frames are stored in on the Showcase and Slot sprites.

      The Slot images are set from these ID numbers in the Inventory Category Settings event group, and the Showcase images are set during the UpdateInv function.

      Does that help?

  • Thanks for the tutorial Laura! Just a question, is there any reason you specify the items on a JSON file?

    Feels to me that it would be easier to manage if they were created individually under a folder or family since we load the json to memory anyway, unless there is a performance gain I'm missing.

      • [-] [+]
      • 2
      • Laura_D's avatar
      • Laura_D
      • Construct Team Community Manager
      • 2 points
      • (0 children)

      I've not done any testing in terms of performance, but for me, it was down to preference. I didn't want to have loads of different objects even if they were nicely sat in a folder! I assume it would still work using a different object for each item, but I've not tried it!

  • we know that CategoryName is an instance variable of the array(inventory) but where did ArrayName come from?

    edit:o, i just now know it, we can add a thing called parameter in the function.

  • i hope the no. of events is not greater than 50 cause i havent bought construct yet. maybe i can cut down some events for strings.

  • Load more comments (2 replies)