Action RPG Inventory System

hi i in need of help…so i’ve integrated arpgis and als v4 ( into my project…i wanna do when i equip a specific weapon,it will play that weapon aniamtion overlay state…what i’ve tried so far is in inventoryitem struct,i added a new element called “OverlayState” of type alsoverlaystate…what this do is when i define the item properties,i can set the weapon to use its overlay state for example,if i equip a bow,it will play that bow overlay state…after that in equipmentinventorycomponent,inventorymanagercomponent in the equipitem,unequipitem,updateequippedmeshes and updatemainhandweapon,i break the struct of inventory item and i set the overlay state( picture below)…i thought this should play the weapon overlay state,for bow it will play the aiming overlay…but it didnt and i get this error…anyone know any solution i can do?ping me

my discord:KhaiSaki#1061

Just wanted to say Thanks for this! I have the inventory working fine, but do you think I could work out how to add a bloody item via blueprints - all good, works so thanks again

It’s been 5 years since your original reply to this question. I was wondering if you had ever gotten a chance to re-visit this?

can you please show a tutorial of how to convert a mesh that isn’t made with the ue4 skeleton to one that will work with this system?

i took a look at the items provided and for example, the helmet is floating in the sky (not at 0,0,0) and has some spine bone references??

i did a search and pirate said that it was because it’s more professional that way…but doesn’t UE kind of moves attached items along with the bones now?

We did enable saving and loading the inventory and various character stats (location, health, and so forth) to a DB through a java socket server ( via the LE Socket Connection plugin). The socket server is fast but this might more readily be done with some of the modern web methods.

Because of the overlaps between the AdvSocSys and ARPGIS, we encountered many incompatibilities and removed the AdvSocSys. In our application, chat and the player groups should be handled by separate servers and there are much better chat solutions now available

RL has kept me from working on any programming for about a year now and all of this is rusty to me and I’d have to do a major review to recall any of the details.


i was wondering if there is some option how to turn on/turn off the saving system. It´s included in this? I am really not sure. If it´s not, how to save all whole inventory?

I’m at a bit of a crossroads here. Whilst trying to utilize the inventory system, I ran into a snag. Note that in my controller, if i enable the Play Game logic as shown, the character drops into the world and all is well… then it displays my login screen and character selection (which is bad). This means the systems work and don’t break anything. Ruling out any issues with the UI elements that are being fired. All that’s happening from a gameplay standpoint is grabbing the character from the db and setting it as a struc in the playercharacter.

But if I disconnect Play Game (which fires after the character selection phase after CLT_DisplayLogin), this delays the initialization of the inventory system until after a character is selected. There’s no other magic happening, just a bunch of UI mumbo-jumbo beforehand. It gives the following errors, which indicate that the server is not initializing properly and setting references to both the playerinventory and that characterreference.

This baffles me, because if I fire it manually tied to event beginplay, it works fine. However, if I let the UI make the call later, the errors come up and inventory doesn’t work. The only thing that’s non-standard is that I’m not calling the hud into the viewport until initialization of the inventory system.

It’s pretty simple, but has me stumped, it’s almost like I’m waiting too long to initialize the inventory and something’s happening through replication or delayed and I can’t for the life of me find it.

I initially thought that I was re-writing a variable at some point, but narrowed it down to timing. Play Game fires off your initialization like in the marketplace project. If called manually up-front, we’re fine but the entire login/character creation/selection happens after entering the world, which won’t do.

The ONLY difference is removing the connection from Play-Game in the playercharacter below.

I have tried absolutely everything I can think of, even removing pieces down to just firing a login widget then calling playgame and it still fails without any of the login logic happening.

I know this may be silly or simple, but I’ve spent a couple days debugging this and following variables to try to find out where the breaking point is, ruling out the entire entry UI system. The only way that I can get it to work is if I initialize the inventory and drop the character into the world immediately, anything else results in referencing bad variables.

As a side-note, I have a thorough knowledge of the inventory system and have dug into it pretty deep in the last few weeks. In the screenshots below, it works (wrong, but it works). In a perfect world, the playgame function would not be called from the playercharacter, this is a work-around to make it work until I find a good fix.

Player Controller:

​Player Character:

This is the call from My UI to the PlayGame logic:


Update: Found out that a second player borks it also.

Background: I have a login, server selection, character creation and world.
During initial testing, I had two servers and one client, separate projects, they have been consolidated for ease.
I have a dedicated server build as well as client build.
I moved the sql into a savefile, since resetting it was easier than wiping sql each iteration. (so basically everything’s really simple presently)
So the flow currently is:

  1. Client connects to the server (fake loading level fired event)
  2. Server displays login (widget mumbo-jumbo, sets account variable in playercharacter)
  3. Then character creation/selection (widget mumbo-jumbo, sets my characters array and current character variable in playercharacter)
  4. Then Play Game (inventory initialization happens here) -> multicasts current character to all other players actor renders (updates nameplate and cosmetics)
  5. Streams the starting zone level to the player and teleports them to the correct spot (or last saved coordinates).

If play game fires before the login screen (and transfers execution to it), it works. (what this means is that the game starts and the login screen displays with a blank character) Once the character is created/chosen, it updates the character in-game).

If play game fires normally, login and character selection takes place, then when you drop into the game, inventory doesn’t work.

Either way, when a secondary player joins, inventory fails as soon as it initializes (before or after login).

I hope that makes sense.

Has anyone had any success with trying to change out the player controller responsibility to a player state or character? Been working on this for about a week now (been too timid to until now lol)

I’ve nearly got it but I’m not generating an inventory. I’m wondering if a player state is not able to do this

Update: I’ve managed to get the inventory grid to generate from the player state instead of the controller. The controller just calls the UI elements now. Throwing some errors trying to generate the equipment inventory (player inventory) from the player state though. For some reason it is not a huge fan of the idea. Going to do some more tinkering

this project does not have a save system

Scyclone, unsure if you’ve fixed your issue yet, but the most effective method to fix this problem would be to export your custom weapon mesh to a 3rd party program
such as Blender and manually adjust the rotation of the skeletal mesh and then reimport. Hope this helps :slight_smile:

Maybe this would help. Tutorial - Action RPG Inventory System - Weapon Import/Export - YouTube

Why would you even what to move the inventory from the controller ?

That is a simple fix check the tooltip widget.

Hello! First of all, thank you so much for this inventory system. I managed to migrate it into my project and am nearly there with full integration. I’m just having a few issues with the cursor and object interaction.

My project is a 3d side scroller. I’m not using my own playercontroller, just the InventoryPlayerController. I’ve got to the point where I can open up the inventory, but I cannot interact with anything in my bag or character. Right clicking makes the cursor disappear and become immovable. I also cannot interact with any object set in the world. Any ideas on why my cursor will not interact with anything?

I’m still learning a lot, but any advice would be greatly appreciated. Thanks.

Side note, I’ve disabled some of the third person functionality, and character keyboard movement in the InventoryPlayerController since I will not be using it at all.

Try full screen. Also if you have any other widgets (non ARPGIS) try temporarily disabling them see if it helps. and make sure the line trace for objects trace channel in the player controller is set to block that channel in the objects collision settings.

Ah thank you! This fixed the problem with the HUD, now I can interact with objects in the inventory now. Awesome!

Although I still can’t seem to click on anything in the world. I can’t use any of the useable or world objects. I was unable to find anything relating to ‘trace’ in the objects collision settings. Since I’m in a 3d sidescroller setting, I’m wondering if the camera is throwing the cursor off? I can’t even get an outline over usable objects when my cursor hovers over them.

In the player controller go to “Get usable actor” function. Make sure trace channel is set to visible (or if you have a custom one), Can also set debug type to duration or persistent to make sure it is shooting trace ( and check your camera )

Then on world item, click on it, in the details pane, click on static mesh and check the collision, make sure that channel from the lane trace is blocked.

Oh my dude right on thank you. That led me right to the issue! Now I can interact with objects. Thank you soooo much.

hello, i hope everyone is fine and doing well.

can anyone help me with changing the camera back to ue4 default where the camera moves along with the mouse (the third person default template)

in the action rpg, we have to hold the right mouse button down.

i have tried deleting the branch node to check if the rmb is held down but all it does is make the camera movable when i hold down other mouse buttons.

i checked other parts of the code and found that there is also a third person/first person view swap. (this is something that is confusing. there is no point making this replicated as it should not matter to the server if the player is in first or third person mode? )

anyway i tried disabling all of these but i still have to hold a mouse button down to move the camera. can anyone please help?


If I remember correctly in the player controller, begin play, there is a setup or initialize function. In there change the game mode and ui to game mode only and uncheck show mouse cursor.

The issue you will run into however is whenever you hit I or any other windows, you will not have mouse control so make a function to toggle between game mode and ui and game mode only and show mouse cursor.