My way of making the buttons.
1) You make a button sector and add the sector effect 80 "Trigger Line Ex.(Floor Touch)" and add a new tag to it. This will be the target sector.
2) Then you create a control sector and add the linedef effect 302 "Linedef Executor: Once" (you only need this to use the button once if you want it to serve for first and final purpose) then tag this to the target sector (the red button sector).
On another linedef on the control sector, add the linedef effect 403 "Linedef Executor (plane movement): Move Tagged Sector's Floor" and tag this to the same red button, if you want this linedef to work you must adjust the floor height of the control sector to what you want the height to be when it is stepped on - since it's a button you're making you will decrease the floor height so make the control sector floor height less than the target sector floor height. (I don't think you need anymore images for this)
3) Now create an invisible intangible FOF control sector and tag the linedef to the red button target sector, make the top height of the FOF the same height of the target sector (the bottom height doesn't really matter but make it lower than the top height by at least 16 fracunits or more). Now add a new tag to the fof control sector (
not the linedef, the sector) and add the sector effect 64 "Trigger Line Ex.(Anywhere in Sector)", this can be used by any trigger to create an effect when the player touches this FOF in-game, this is what makes the button have a action when it's going down. However in this case it will be used by the trigger linedef 403 "Linedef Executor (plane movement): Move Tagged Sector's Floor". This trigger linedef will be set up on the another control sector it will be tagged to this GFZ block (this is a new sector I created by the way also make sure that you set the floor height to this block when using linedef 403):
(the gfz block where the cursor is pointing)
The plan is to make the GFZ block go down when you step on the button so we will add another lindef executor to one of the free linedefs on the new trigger control sector: 302 "Linedef Executor: Once", tag this to the FOF itself.
Now the whole thing should work, try testing it out (if you followed what I said) and take a look at...