Event Dispatchers: How to return a value from an event dispatcher?

I just read it all, and you are trying to use dispatchers for something they are not designed for. So again read my yesterday evening post above. You need many talk to one setup for items. However it will require some array of their states (and state is best done as STRUCT). And for array they need integer index. And it should be unique for items.

For situation where ALL items are same class you just make event they all can call and use in one of CORE bluepritns, like game mode (best if game is not multiplayer).

However when items may be different classes. When you game BP_item that has all code for communication, then you make BP_apple as child class to parent class BP_Item (inheritance), then you make more new classes BP_Tool BP_rock BP_wood etc. So you can have many different item classes that should communicate in same way (and have it in BP_item parent class).

For such situation you create blueprint interfaces. Those let all your other classes that are not BP_Item or child classes of it, so everything else can CAST TO interface (that is common for items) instead of various child classes. Simplifies stuff.

ps.
In dispatchers you can add variable they send over to all items. Just click on dispatcher in details panel in blueprint it was declared. There you can add variables. However dispatchers can ONLY send or communicate one way. From blueprint it is declared to anything else that has code ASSIGNED its event to that dispatcher.