Action RPG Inventory System

How long will it be on sale?

Until tuesday/wednesday

Can this be used in multiple creatures as if they were controlled by the player? For instance you click on one creature, that is the player and you can do things with its inventory, you can only do if it was the player. Then you choose another creature and its inventory has the same feature set as the previous creature you controlled. Or is it designed to be used with just one creature as the player? Hope my question makes sense.

Great Inventory System!

If you keep the inventory component on the player controller they can all share the inventory.
If you move it to the Character then each character can have it’s own Inventory.

In the demo the player has the Inventory on the controller and it’s quite trivial to move it to the character. The NPC’s have it on the character.
So depending on the type of game you want it is fairly easy to move it to the places you want.

When changing the controls to more of an FPS style, as instructed in your video tutorial, I noticed that the cursor has unwanted behavior. Whenever UI Mode is true, the cursor will appear in a random place (wherever it was last, but just hidden). This can get annoying for the player. Could anyone give me advice on how to make the cursor locked to one area? Instead of just appearing wherever it was last? That way, when you’re running around and open something up, you can have a good idea of where your cursor is going to show up, for example, the center of the screen.

	APlayerController* PlayerController = Cast<APlayerController>(GetController());

	if (PlayerController)
		const ULocalPlayer* LocalPlayer = PlayerController->GetLocalPlayer();
		if (LocalPlayer && LocalPlayer->ViewportClient)
			FViewport* Viewport = LocalPlayer->ViewportClient->Viewport; 
			if (Viewport)
				FVector2D ViewportSize;
				const int32 X = static_cast<int32>(ViewportSize.X * 0.5f);
				const int32 Y = static_cast<int32>(ViewportSize.Y * 0.5f);

				Viewport->SetMouse(X, Y);


Hi @Pirate

I bought it. I am impressed with this inventory system.


how would you go about getting how many, of a certain item, you have in your inventory, from a new blueprint.

Just cast to the player controller then the inventory component then loop the inventory for the type of item.

Alas my casting foo is poor.

i feel a lot of trial and error in my near future lol

could you help me set this up in blueprints please?

You want to get the players viewport size to determine the resolution.
Then you divide the X and Y screen sizes by 2 to get the center and set the mouse cursor to that new value.

Now when you are switching back to UI mode you can just call this logic to reset the cursor to the center.

This is actually a great learning exercise to figure out on your own. Development is all about learning and breaking down those brick walls that block your progress.

@Pirate One thing I’ve noticed has been a lot of work has been adding variables to the Inventory Item structure, mainly because things have to be linked up in all the spots where you use the break link and immediately make the link (usually to update amount, it seems). But I think I found an easy way to handle this: Rather than remaking the links, you can use “Set members in InventoryItem”, then while that node is selected, you can (in the details panel) choose which items you want updated, and just plug things in accordingly. Just a thought, but it might help if someone wanted to add more stats and minimize the follow-up work.

Yes I just checked it out and this Set Members in STRUCTNAME node is really good.
I’m going to put together an update which replaces all the Struct breaks with this node. I’m not sure if they had it back in 4.9 when I made the inventory and if they did I feel like a right idiot for not knowing about it sooner.

For people wanting to replace all the areas where structs are broken and made basically just open any blueprint and search for “Break InventoryItem” or “Make InventoryItem” and uncheck this blueprint only it should be easy for people to update this themselves. Same should be done with the UI Item struct as well.

Nice find i also didn’t know about that node, i have just updated my project and replaced all the makes with that Set Members Node.

[FONT=arial black]Hi @Pirate

[FONT=arial black]I loved the Data tables and components approach in your system!!!

About the situation: The interactive text does not works**. It was not covered in the tutorial how to migrate inventory in the custom project.
Here I migrated all using Epic’s standards. And everything was fine, but lacked the interactive text when I get close to objects.
Another situation: About mouse cursor conflicting with third person camera**

I need to know how to configure the mouse cursor that is always on while I play. As the game a third person game, is the mouse cursor that moves and not the orbital camera.
I have to press the left mouse button to to hold my third person orbital camera, but this button is uset for shield defense.

[FONT=arial black]The Ideal for my game is the mouse cursor only appears when the inventory is called by pressing the ‘I’ or ‘E’ key for example. And disappear when I press ‘I’ and/or ‘E’ key again.

And Again,

All this has been covered in pervious posts, and Pirate has also made a tutorial showing you how you can change the mouse cursor, you need to added the post process martiral to you character blueprint to enable the Interact text.

Thank you @OverRated_AU For their help with the interactive text, I’ll try it.

Sorry for the question again. As a buyer I asked the Pirate support, exclusively, by solution for my specific problem. I have not followed this thread, post per post, more or less 14 post pages, just for lack of time and realease deadline. I’ll try to search it in the previous posts.


No worries, the Inventory is currently setup for a RPG game which will always show the mouse pointer, watch pirates Tutorial here it will help you change the mouse logic to a TPS/FPS style.

I try to help people that are new to the inventory as i know it well.