I'd use different movemodes;
Define a skill or variable, movemode or something, then, in the players code:
if(movemode == 0) // no ladder climbing
{
///// do normal movement....
}
else // ladder climbing
{
/////////////////////////////////////////////////////7
//// limit code to z axis, depending on camera angle
}
Set the movemode in an event or something...
That's the basics, have no time to write it all now, if you need more detailed code, PM me....