Indeed, in single player you could handle it with scripting, using only a few buttons, if you would like. For example, you could make one screen, which would show the floor number, and when you would
use it, the floor number would change. Then another button would take the elevator to the desired floor shown on the screen. Although even this would be a bit tricky and would need some very sophisticated scripting, and func_buttons piled on top of each other, because you can't design such a shader that would have 20 anim frames. But not a big deal.
Of course, the much more inferior MP doesn't give you any tools for this kind of work
Sorry about that. But I had to say it at least once during my long mapping career
