How to implement strafing, diagonal movement, and step limiters

I have a few questions concerning how to program some of my ideas for a movement system into a project and would appreciate your help.
Firstly, I would like to be able to switch the current side movement system (third person blueprint) to a strafing system, as is common in most FPS games.
Secondly, I would like to know how to make a diagonal movement option (I will be using w, e, r, s, d, f, z, and v as my movement keys).
Finally, I would like to know how to limit all movements except forward to one step per time the respective key is depressed.
Is this possible? If so, how do I do it? Thank you in advance for any help you can give me.

I can provide suggestion regarding limiting movement to one step per time the respective key is depressed:

  • Add a branch with condition ‘Is Button X pressed’ for every movement buton with respective buton instead of X and make the boolean value change to ‘true’ every time the buton is pressed, then change to ‘false’ when it is released. Continue input effect along ‘false’ branching path.
  • At the end of input effect of every buton add boolean state change to ‘true’ for as long as it’s held

I hope that helps

I can provide suggestion regarding limiting movement to one step per time the respective key is depressed:

  • Add a branch with condition ‘Is Button X pressed’ for every movement buton with respective buton instead of X and make the boolean value change to ‘true’ every time the buton is pressed, then change to ‘false’ when it is released. Continue input effect along ‘false’ branching path.
  • At the end of input effect of every buton add boolean state change to ‘true’ for as long as it’s held

I hope that helps