For weapons capable of automatic firing, how to add a delay to single-shot?

I’ve set up automatic fire using blueprints & timers similarly to this post.

Shooting is achieved by an event that fires a bullet and loops every second(or WeaponFireRate). Automatic fire works great and as expected. The issue is that some weapons that I want to use will have a slow firing rate with automatic fire and you can circumvent that by rapidly clicking left click. I’ve tried some fixes like setting a variable “isFiring” on and off in spots and branching the firing with that but I must’ve missed something because that didn’t work; also tried a time-consuming workaround involving a cooldown timer set to the duration of the remaining OnFire timer before that gets cleared with my StopFiring event – huge waste of time because I couldn’t figure it out there as well.

Has anyone solved this issue before or know of a way to fix it? I’ve searched around a bit and found one post having the same issue but no answer.

I’ve looked for weeks on this topic and haven’t seen a single video even gloss over it

Hi iLukey. I’ve got something for you an your automatic rifle :P. You have to set the speed (BPM) you want for each weapon and set them as automatic or not. With those variable you’ll be fine to make something like this. So everygun with shoot a different speed with BPM variable and the retriggerable delay if your weapon are automatic or not.
So you can hold the fire key and shoot everything :smiley:
Dont forget for managing all the different info for all gun i’m working with data table.

1 Like

(post deleted by author)

Among many other criteria I use a bIsFiring? bool in a macro. The macro is called several times across the processing of the input action.

The character class, where input is handled, I use a different variant of the macro check. It’s quite a bit more simplified. It basically just checking that the base conditions are met. Has a gun, it’s equipped, you aren’t jumping or in water (swimming).

If the check clears I call Client Weapon Fire in the weapon class. It’s job is to determine the firing mode to use vs the client outright calling a mode. All weapon logic is handled in the weapon class.

Input → Can Fire (character) → Client Fire Weapon → Can Fire (weapon) → Switch(mode)


For Single fire we call the Semi Auto Firing.

Single Autonomous Firing executes a macro that checks firing conditions. It’s conditions are purely about the states of the weapon. No consideration for character movement or environment.

Upon meeting macro conditions we sequence through the firing logic (projectile prep) and then call the Obj Pool for a projectile. The Semi Auto ROF Timer is called directly after which sets bIsFiring? to True. The server is RPC’d on the next sequence step.