To make custom ladder working in game you need set up extension for your ladder in ytyp (CExtensionDefLadder)

It works either for embedded collision and for static.

First ofcorse you need to create ladder with embedded collision or you can use vanilla ladder (mostly they dont have embedded collisions) and create embedded or static collision for it.
Then create ytyp using neos script (https://github.com/carmineos/gtav-maxscripts)
Set flag 0 for ladder (<flags value="0"/>)
Now copy extension from here and replace <extensions/> in your ytyp with copied values.

Now you need to change 5 entries: name, offsetPosition, bottom, top, normal.

name - replace yor_ladder_name_here with name of your ladder.

top - to get values use pivot of ladder. (dont move mesh!) and place it on top on center of first step of ladder and copy your coords into ytyp for top
offsetPosition - use same coords as in top

bottom - now place pivot on bottom on center of last step of ladder
and copy your coords into ytyp for bottom
normal - this value defines wheres is front of ladder (from which side player will climb up)
so if your ladder is created parallel to grid then no prob - use 1 or -1 for x or y depends wheres is front of your ladder:
but if your ladder is rotated, not parallel to grid then you will need coords by setting pivot in one unit from ladder under 90 degrees
in overall best way is to create ladder parallel to grid.

And tip: if you have few ladders in one ydr use same method as above but for each ladder so in ytyp there will be one entry for ydr with multiple extensions CExtensionDefLadder - each extension for each ladder.