Sometimes, it's easier to use obvious workarounds than to overcomplicate things. To solve this problem without regions and triggers (and generally, without any settings for a garrison, even without assigning it a name), you'll need a brief introduction to OOP, a discussion of several new, complex functions, and an understanding of tables in Lua.
Jewilly, if you're interested in an elegant solution, I'll just say what it's based on:
Using the IsTilePassable function, you can check the location of blocked cells relative to the center of the object (for a garrison, one is above, one is below). After identifying the garrison's orientation, the hero is simply moved to the other side using SetObjectPosition with teleportation type 0 (without animation) if the hero's owner is not a banned player (all of this is done through a touch trigger).
And for aesthetics, you can create a "Garrison" class with methods like BanPlayer, UnbanPlayer, and other similar things if you want to add any effects, additional messages, and so on.
_________________
Группа картостроителей
Там ответы на вопросы, руководства, гайды и прочее
Discord-сервер "Герои 5: S.T.A.L.K.E.R"
Сервер по модификации "Герои 5: S.T.A.L.K.E.R"
_________________