You can, perhaps, hit "static physics" in the entity tab.
Then do an script area around the hatch, like this:
Now I guess you want to make player say "it's locked" when touching it. Go to your map script, and paste this code:
void int01(string &in asEntity)
{
SetMessage("Messages", "name_of_the_message_to_show", 5);
}
Put the "int01" here:
(Tick also "item_interaction" in the same window, below)
Of course "Messages" is the category in your extra_english.lang file, and "name_of_the_message_to_show" is the entry name of the message to appear.
When you do script, simply make the key or everything else you want to be used on the script area, like this:
Spoiler below!
void OnStart()
{
AddUseItemCallback("", "key_name", "ScriptArea_1", "UnlockHatch", true);
}
void UnlockHatch(string &in asItem, string &in asEntity)
{
SetPropStaticPhysics("hatch_ceiling_1", false);
SetEntityActive("ScriptArea_1", false);
PlaySoundAtEntity("", "unlock_door.snt", "hatch_ceiling_1", 0, false);
RemoveItem("key_name");
}
It should work fine, if you do this correctly.
EDIT: Forgot to put one thing, fixed.