The exact script may depend on whose controller you are using, but in general,
OnPCLoadMapEvent:
set .@map$, strcharinfo(3);
if (!compare(.@map$,"g_cas")) end;
if (((!agitcheck() && !compare(.@map$,"arug") && !compare(.@map$,"schg")) ||
!agitcheck2() && (compare(.@map$,"arug") || compare(.@map$,"schg"))) &&
!getcastledata(.@map$,1)) {
dispbottom "You are not allowed in this castle.";
sleep2 1000;
warp "SavePoint",0,0;
}
end;
/* If mapflags are not already set:
setarray .@Castles$[0],
"prtg_cas01","prtg_cas02","prtg_cas03","prtg_cas04","prtg_cas05",
"payg_cas01","payg_cas02","payg_cas03","payg_cas04","payg_cas05",
"gefg_cas01","gefg_cas02","gefg_cas03","gefg_cas04","gefg_cas05",
"aldeg_cas01","aldeg_cas02","aldeg_cas03","aldeg_cas04","aldeg_cas05",
"arug_cas01","arug_cas02","arug_cas03","arug_cas04","arug_cas05",
"schg_cas01","schg_cas02","schg_cas03","schg_cas04","schg_cas05";
for(set .@i,0; .@i<30; set .@i,.@i+1)
setmapflag .@Castles$[.@i], mf_loadevent;
end;
*/