The CmdStart version should work fine, but this is the Orpheu for movement.
Code:
new OrpheuStruct:g_ppmove;
public plugin_init( )
{
OrpheuRegisterHook( OrpheuGetDLLFunction( "pfnPM_Move", "PM_Move" ), "PM_Move" );
OrpheuRegisterHook( OrpheuGetFunction( "PM_PlayerMove" ), "PM_PlayerMove" );
OrpheuRegisterHook( OrpheuGetFunction( "PM_Duck" ), "PM_Duck" );
OrpheuRegisterHook( OrpheuGetFunction( "PM_Jump" ), "PM_Jump" );
}
public OrpheuHookReturn:PM_Move( OrpheuStruct:ppmove, server )
{
g_ppmove = ppmove;
return OrpheuIgnored;
}
public OrpheuHookReturn:PM_PlayerMove( )
{
new iPlayer = OrpheuGetStructMember( g_ppmove, "player_index" ) + 1;
if( is_user_alive( iPlayer ) )
{
OrpheuSetStructMember( g_ppmove, "maxspeed", 0.0 );
}
return OrpheuIgnored;
}
public OrpheuHookReturn:PM_Jump( )
{
new iPlayer = OrpheuGetStructMember( g_ppmove, "player_index" ) + 1;
if( is_user_alive( iPlayer ) )
{
OrpheuSetStructMember( g_ppmove, "oldbuttons", OrpheuGetStructMember( g_ppmove, "oldbuttons" ) | IN_JUMP );
}
return OrpheuIgnored;
}
public OrpheuHookReturn:PM_Duck( )
{
new iPlayer = OrpheuGetStructMember( g_ppmove, "player_index" ) + 1;
if( is_user_alive( iPlayer ) )
{
new OrpheuStruct:cmd = OrpheuStruct:OrpheuGetStructMember( g_ppmove, "cmd" );
OrpheuSetStructMember( cmd, "buttons", OrpheuGetStructMember( cmd, "buttons" ) & ~IN_DUCK );
}
return OrpheuIgnored;
}
__________________