Download

Action RPG Inventory System

Gage, Make sure you set the variable to ’ is usable ’ to true when they ragdoll and not before.
Also, since there’s a difference in physics generation between client and server, the enemy you might be trying to loot might be at a different spot than he is on the server if that makes sense :slight_smile:

If this is only happening on Muppet I would suggest going into the Muppet Blueprint and make sure each of the Interface Functions are all setup. Sometimes they can get unhooked when migrating. For the behavior you are seeing I would check the Interface Function GetContainerInventory first to make sure it is returning a reference of Muppets InventoryComponent.

If you are still having issues drop me a message at support@vanguardinteractive.com

Exactly if you are having troubles looting ragdolled corpses it’s because the servers position of the corpse and the clients can and most often will be different. This is the same issue you will run into with physics items. If you drop most items they will land in the same spot but things like apples may roll or when you kick them around they will get out of sync. That’s why in most multiplayer games physics is used for visual and not gameplay things. Like when a wall explodes it doesn’t matter if all the chunks land in the same place. You can sync physics over network in unreal but it’s not recommend and will be extremely bandwidth intensive.

If you are making a physics heavy game you can always change it to do the USE Actor check client side, then just tell the server what you want to use. If you do this though I would suggest trying to add in some anti hacking logic/checks to make it a little more secure though.

I’m happy this is on sale! Such a great asset for anyone building any game that has an inventory.

I was building an inventory system in C++ and bought this as an extra reference. Was happy to see this was component based system, so props for doing it in a good way.

What really drew me in was the way the items are equippable and displayed over the network. I’m interested in a weight painting tutorial for Maya, binding the item meshes to the skeleton. The weapons tutorials was a great reference, just need to similarly make sure I do weighting properly.

I saw it mentioned early in the thread but didn’t see it on Pirate’s YouTube channel. Maybe there is a guide someone can point me to?

edit: especially a guide on exporting parts off of infinity blades chars

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;
				LocalPlayer->ViewportClient->GetViewportSize(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.

Thanks

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.