5. Why doesn't semiclip work when I hook FM_ShouldCollide, check if touched and toucher's classname is 'player' then use forward_return(FMV_CELL, 0) and return FMRES_SUPERCEDE ? But it works for grenades...
ShouldCollide is used for non-player entity move. So it can be used for non-player against non-player and non-player against player collides. Player move uses its own "PlayerMove" (PM) code.