Download

Pickup structure from radial menu only.

I want to make it so the player can pickup structures but from the radial menu only. (e.g. Turrets)

Any ideas?

Thanks!

Copy the blueprint of whatever structure you’re modifying, open up the BP editor and search Pickup.
Then change the Pickup Gives Item to whatever you want. It will automatically add the “pick up item” option to the radial menu.

Thanks, I know that already. I want it in the radial menu only to avoid accidental pickups.

When I open up the Primal Structure Wood Wall blueprint and do a search for pick up, there is no option for what your saying? Any idea if I am in the right area of the blueprint for this?

Holy thread necro…

No, wrong blueprint. You need the other one - the non-Primal one, every structure has two.

-WM

[MENTION=421970]Mister Gizmo[/MENTION] This is why we need the BASE blueprints to be named as such in the Dev Kit, the “Pick Up” option is in the BASE bp, the one with the 3d model aka static mesh.

If you only have 1 viable option for a radial menu E by default is that one option, otherwise it is the First option in the Radial menu, which goes Turn On|Off → Open Inventory → Enter Pin → Pick up.
If you can find why Destroy is not allowed to be the option for E you will find how to prevent the option for Pick Up. I have not looked so I can’t provide any more insight, but E has never been Destroy for anything I have done so far.

An example to change Pickup on E to pickup only on Hold E and timer

Hi, I experimented myself a lot with changing the pickup to appear later in the radial menu.
Most importantly: you need to enable Blueprint Multi Use Entries in the Blueprint of the Item Structure you want to enable Pickup In.
You also need to assign the correct blueprint to the Pickup Value of said blueprint.
Then you need to implement the Function BPGet Multi Use Entries in the Graph part Section of that blueprint.
I have provide 2 samples: one with an inventory container and one without.
If you want you can write your own logic to handle Multiuse of your object with demolish, access inventory, pickup, … But I find it easier to simply adapt the priority of the Pickup Action. With an inventory I leave the default to Access Inventory for E. Demolish and Pickup you need to hold E.
To prevent even further mishaps I put a timer on the Pickup action aswell.
Here is the example for my custom Mortar And Pestle.

Explanation of this graph:
First I loop the existing MultiUseEntries Array in a ForEachLoopWithBreak.
I split that Array in each individual MultiUse Entry with a Break MultiUseEntry Function
I compare the index of that Multiuse Entry with 203 (The index of the Pickup action) in a Branch.
The True Branch Sets the Multiuse Entry of my loop to a local variable of the type Multiuse Entry.
The False Branch does nothing!
I use the function Set Members in Multiuse Entry. I assign each value of the local variable to this function except priority which I change to -1.
I also give an Entry and Default Entry Activation timer of 1.
Then I use the function Set Array Elem: I use the MultiuseEntries Array with which I started. The index is the one from my ForEachwithBreakLoop.
The item is my local MultiUseEntry Variable.
After this step I break my loop as I found my Pickup Entry.
I concluded with the completed Step of my Loop to the Returnnode where I once again assign the Multiuse Array with which I started, but only now contains a change value.

The beauty of this system is that you keep functionality intact and not needing to write all your own handling of pickup, demolishing, … .
Also since you need to Hold E and wait out the Timer on Pickup: it is nearly impossible to do a Pickup by mistake.
Also if you do not assign a Blueprint to the Pickup Gives Item in the Blueprint, everything keeps functioning as usual.
Also you can fiddle with priority levels to have it appear after demolish on the wheel, but than you need to assign a priority of -1001 or lower (-1002, …).

For structures as Walls, floors, … without inventory. You slighty need to change the routine to include an extra MultiUseEntry.
Which you make with function MakeMultiUseEntry. Give it priority 0 or more so that it appears first, text can be something along the lines of Hold for Options (like Standard) and index (of MultiuseEntry) of 0. Add it to the array of incoming MultiUseEntries and than continue with the same logic as above.
Now you need to hold E before being able to demolish or Pickup and both with an nice OOPS timer on it.

I hope this helps anyone else. I took some trial and error, but this seem to work fine.
If you write a total conversion and adapt the files directly you only need to put it on the most base blueprint of you choosing as all will inherit the function. If you want to prevent pickup, simply do not assign a Pickup Gives Item entry.

I hope someone finds this useful.
Guinaro

An easier way is to override the default option by adding a new entry with a higher priority.

@Guinaro Would you mind sharing the event and try use graphs? I tried P0k3r’s and it gave the me looks, but I could walk right up and pick up the item even though it said Hold for Options.

This is what I am currently using, and it works great except when the item is damaged. Once an item is damaged it defaults back to the default pickup option.

UnrealTournament.txt (14.5 KB)

You don’t need a mutli-use entry for pickup. It automatically appears if you link an item to “Pick up gives item”.

only problem is that is that if ppl dismount next the item it will pick up that item thats why ppl add an extra entry

Yes, but in that case you only need the graph Pok3r posted. I was replying to jhawl since in his pics he has the pickup as a separate multi-use.

People seem to love overcomplicating things at times… this is all you need to do - no TryMulti replacement or ClientDoMulti logic needed, just set the item to pick up in the defaults and add this to the GetMulti logic and presto.

https://forums.unrealengine.com/attachment.php?attachmentid=96430&stc=1

-WM

dont forget to enable blue print multi use enteries in ur BP

Ok, tried it on a piece, but got this.

Unless, i’m missing something.

confused. what is the issue? is the item not being picked up or something? what are you saying the issue is?

The issue with the default e pickup is that’s it’s to easy to pick stuff up accidently. Biggest example I have is the doorframe. Set default e pickup on a doorframe and try and open the door a couple times. If you just run up and hit e most likely your gonna pick up the doorframe and not open the door. I have gotten many complaints on roof pieces too. Players trying to do things with the dino’s and picking up roof pieces. That is why everyone wants it in radial menu. However just being in the radial menu isn’t perfect either because double clicking e caused the samething. Therefore that is why so many people want the e pick up in the radial with a 1-2 sec delay.

what i was meaning it, what was the issue that you had with the code listed above…
either way, I personally couldn’t get Pokers code to work. i used the original code from Guinaro and modified it to work with any items (with or without inventory). This code will place the PICKUP open as the very last option in the list. it also makes it so that if there is NO option, then it will make it so that E will not function unless there is normally a default action. will also add a 1sec timer (which you can increase).

example screenshots


below is the copy of my code. when you add it, make sure you add it to the “BPGet Multi Use Entry” and not the default Event. when you paste it in, it won’t auto link to the start and end nodes, you will need to do that part manually. limitation with the copy/paste.

I’ve never wanted to make something able to be picked up so wasn’t sure what the string would actually be, I just used PickUp as that worked for someone else prior. As yours appears to be different, this should cover all possibilities.

-WM

I still think Pok3r’s way is the simplest. At least that’s what I used for my structures and it works like a charm. Prevents accidental pickups, but makes it easy to pickup as well.

Also in my opinion it’s rather useless to even make graph for things like the Campfire as it already has a function for default E press. Unless you really want the pickup in a specific order and want that timer as well.