EDIT: While reading through this thread I forgot the main topic was how to force them to duck, not how to block duck ;D!
Using CmdStart won't work because jumping/ducking is handled client side.
The best solution I've come across is to trick the server into thinking you are already jumping/ducking. The only problem with this is the client will start to do the jump/duck on their screen until the server tells the client they are not (so the player will start their jump/duck but won't get far). Other players will not see the jumping/ducking player doing the jump/duck however.
PHP Code:
public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR);
RegisterHam(Ham_Player_PreThink, "player", "fwd_Player_PreThink");
}
public fwd_Player_PreThink(iClient)
set_pev(iClient, pev_oldbuttons, pev(iClient, pev_oldbuttons)|IN_JUMP|IN_DUCK);