Okay, done. Try this script out:
The first one should be run at the start of the mission. Nothing is passed to it, so just type [] exec "hot potato.sqs". Of course, you can name this whatever you want.
;//hot potato.sqs
actionCounter = 0
catching_grenade = FALSE
_catch_range = 15
? cadetmode : _catch_range = 25
#Top
thrown_grenade = FALSE
@ player distance nearestObject[player, "GrenadeHand"] <= _catch_range
_grenade = nearestObject[player, "GrenadeHand"]
? !catching_grenade : player addaction ["Catch Grenade","grenadecatch.sqs"]
@ player distance _grenade >= _catch_range OR thrown_grenade
player removeaction actionCounter
actionCounter = actionCounter + 1
goto "Top"
Basically, this waits until a grenade is close to the player (the exact distance can be changed; it is called "_catch_range" and is at the top of the script), then adds an action to the player. It won't add another action until the old one is removed. This action calls the next script:
;//grenadecatch.sqs
? catching_grenade : exit
catching_grenade = TRUE
_grenade = nearestObject[player, "GrenadeHand"]
@getpos _grenade select 2 <= 1
player switchmove "CombatThrowGrenadeEnd"
_grenade setpos getpos dump
;//NOTE BELOW!
thrown_grenade = TRUE
catching_grenade = FALSE
This script will wait until the grenade almost hits the deck, then makes the player do a little throw move. Now, I don't have resistance, so I can't use the setvelocity command. What I did was place a logic named "dump" on the map, and made the action move the grenade to the dump (see the noted line in the code). This would obviously be better suited for the setvelocity command here. However, like I said, I don't have OFPR (for whatever reason...), so I can't test the setvelocity command (LCD, maybe you would be interested). But I would make it send the grenade in whatever direction the player is facing, and slightly up.
Maybe: _grenade setVelocity [(getpos player select 0) + (10 * sin getdir player), (getpos player select 0) + (10 * cos getdir player, 5]. You could tweak the xy (10) and z (5) values to make it look realistic.
I haven't tested the script with multiple grenades being thrown at me at once, but it should still work in that case. Hope this helps!
--General Barron