Thanks tltrude
I don't know much about triggers and scripts but this is how I think i should make it (please be gentle

)
The Hatch:
1. Make my hatch brush and put an origin brush on the end I want the hinge to be.
2. Select the hatch brush and origin and make it a script_object.
3. Press 'n' and enter 'targetname = trap_door'
4. Deselect everything.
The Trigger:
1. Make a brush the size of my hatch out of the 'trigger' texture (does it have to be thicker than my hatch brush or can it be the same size?)
2. Make the trigger brush a trigger_use.
3. Press 'n' and enter 'targetname = trap_door_trigger'
4. Deselect everything.
The Script:
1. Open up 'Notepad'
2. Enter the following:
trap_door_mover:
$trap_door_trigger waittill trigger
$trap_door time 2
$trap_door playsound ("door_wood_open_move" + (randomint(3) + 1))
$trap_door rotateXup 90
$trap_door waitmove
$trap_door playsound door_wood_open_stop
wait 20
$trap_door playsound ("door_wood_close_move" + (randomint(1) + 1))
$trap_door rotateXdown 90
$trap_door waitmove
$trap_door playsound ("door_wood_close_stop" + (randomint(2) + 1))
goto trap_door_mover
end
3. Save it as trap_door.scr ???
4. Put it in 'Mainta' ---> 'Scripts'
That's it (Gulp!)
I am going to make quite a few of these hatchs, do I need to give each hatch a different name in 'The Hatch: No. 3' and 'The Trigger: No.3' above?
For example:
The Hatch:
3. targetname = trap_door1
The Trigger:
3. targetname = trap_door1_trigger
I don't need to change the script though???