Originally Posted by OnePL
new bool:BlockLight = false;
The default value of the variable is 0 (false).
This doesn't matter. It's not bad to explicit the default value, I mean, for beginners but it's not bad to do not write it too.
Your cvar is already containing a float, so you would use get_pcvar_float and not get_pcvar_num. Also, you can use get_gametime to check when he can toggle flashlight again, no need for a task.
Also, reseting in client_connect and disconnect doesn't make sense, just do it in client_disconnect.
OnePL: FM_CmdStart is generally not a good way, since it's called many times and here you also have an alternative way.