DEPRECATED
SYNOPSIS
        int query_mud_port(void)
        int query_mud_port(object user)
        int query_mud_port(int num)

DESCRIPTION
        Returns the port number the parser uses for user connections.

        If no argument is given, the port for this_player() is
        returned. If this_player() is not existing or not interactive,
        the first port number open for connections is returned.

        If an user object is given, the port used for its connection
        is returned.
        If a positive number is given, the <num>th port number the
        parser uses for connections is returned (given that there are
        that many ports).
        If -1 is given, the number of ports open for connections is
        returned.

SEE ALSO
        query_udp_port(E)
