Depending on the size of the area to block movement there are a few ways to do it.
1 - Do as Proleric suggested and make a .pwk that blocks movement.
2 - Also as Proleric stated, if using the CEP, use their invisible placeables to block movement. You set them to "activated" to see them when placing them and set them to "deactivated" afterwards so they are not seen IG.
3 - Place the script found below in the OnEntered event of a generic trigger that is drawn just outside of the perimeter of the placeable. It'll block movement for PCs only. Having it affect NPCs tends to break their AIs and they'll get stuck.
void MoveBackAction(location locBackLocation)
{
SetCommandable(TRUE);
ClearAllActions();
ActionMoveToLocation(locBackLocation);
ActionWait(0.6);
ActionDoCommand(SetCommandable(TRUE));
SetCommandable(FALSE);
}
void HitForceFieldAndForceBack(object oCreature, vector vLastPostion)
{
vector vCurrentPosition= GetPosition(oCreature);
vector vNewPosition= Vector();
vNewPosition.x= vCurrentPosition.x - (vCurrentPosition.x - vLastPostion.x) * 1.75;
vNewPosition.y= vCurrentPosition.y - (vCurrentPosition.y - vLastPostion.y) * 1.75;
location locNewLocation= Location(GetArea(oCreature), vNewPosition, GetFacing(oCreature));
AssignCommand(oCreature, MoveBackAction(locNewLocation));
}
void main()
{
object oCreature= GetEnteringObject();
if (!GetIsPC(oCreature)) return;
AssignCommand(oCreature, ActionDoCommand(SetCommandable(FALSE)));
vector vCreature= GetPosition(oCreature);
DelayCommand(0.1, HitForceFieldAndForceBack(oCreature, vCreature));
}