I think if I remember correctly, you do use BlockHint(); and use it in conjunction with the internal lang name of the hint which can be found in base_english.lang.
For example, if I didn't want to see the hint:
HINT:You need to find a lantern before one can be turned on.
Then I would have to find its corresponding 'hint' dialogue in base_english.lang, which in this case is
LanternNoItem. (All hints can be found in the category called "Hints".)
Hence, my code would be:
OnStart();
{
BlockHint("LanternNoItem");
}
You can test this certain one by not having a lantern and just pressing F. If you don't see any hint text, congrats! It works and I was right without testing it! ^^ Should it work, then you have the detrimental task of blocking all the hints by copy-pasting the rest of the hint names. I believe also that you only need to call them in
OnStart(); of your first map. Any more than that would be inefficient coding. If you are using a Global.hps though, it may be of use to also use it in OnGameStart(); but I have no idea how global.hps works.
Otherwise, I am not too sure.
Edit: Also, you can call a ShowHint(); at any time if you need to have the hint show more than once. You're best to use it at a specific moment though, rather than having it appear constantly.