Player Taking Damage

I’ve seen a few other posts about setting up a damage system, but none of them are working for me.

My game is entirely set within the same Persistent Level, so I’m putting a lot of my Blueprint functions in there, including my variables for player health. I have this set fine, and am drawing the value on screen fine.

My problem is when it comes to actually damaging the player. I’ve set up a volume that I’m using an Overlap Event on and then the “Apply Damage” function as pointed out in other threads I’ve seen. This is all fine until it comes to using the event “OnTakeAnyDamage” which will not place into the levels Blueprint unless it is assigned to an Actor within the level, which my Player Character is not. The only way I can get this Event to work correctly is if I place it in the Blueprint for my Character, which then does not work because my Health variable is in my Level Blueprint.

Another method I have had success is with setting up a boolean variable for whether the player is taking damage or not, and setting it to True when entering the volume, and False when exiting. I’ve then used the tick function and a branch to subtract “1” from the Health variable while set to True, however this drains the health at an extremely fast rate, and I do not know how to set it to only do X damage per second.

Is there another way of doing this? Is there some way of telling my Level Blueprint to pass the value of my Health variable on to the Character Blueprint and then return the new value back to the Level Blueprint after damage has been applied?

Hi man , unreal is organized in a certain way.
lets say that would be easioer plan the game in the same way the unreal is made BUT
For answer you:
You can send event in levelblueprint from player and actors,
you have to use an event dispatch, this is a good wayhttps://youtube.com/watch?v=IbiocEDwosw

Otherwise you can;
from level blueprint , keep reading the player for a new boolean variable you make in it.
When the player set it to 1, then the levelblueprint read it and you can Damage the player, and set that variable back to 0.
This can be an easy fix , but is a dirty one, is a waste of reading, since you have to keep reading that var forever , instead of receiving a change like the event.