Click to Select [code]
#1
QoL suggestion for anyone copying scripts manually in code tags

On many forums where code is hosted there is a selection button so you don't have to manually scroll to select all the lines within the code.

I tested and simply right-clicking and doing a browser-based "select all" selects everything on the page, not just in the code

In my particular use-case I have 200+ lines of code and I'd imagine there's existing cubescript that is also similarly long if not longer

docsection [New]

//----------------------------------------------------------------------------

docident [scalelight] [Scales nearest/selected light];

docargument [S] [Size change (percentage)] [] [0];

docargument [I] [Intensity change (percentage)] [] [0];

//----------------------------------------------------------------------------

docident [togglelockselent] [toggles isolated selection of an entity, where the entity is selected as the closest entity regardless of any closer entities.];

docremark [The desired entity must be the closest entity when making selection.];

//----------------------------------------------------------------------------

docident [filter_sel] [filters selections(s) to cubes matching at least one of the provided values];

docargument [T] [Type of filter applied to selection(s)] [] [0];

docargument [V] [Up to seven values to match, depending on the filter] [] [1];

docremark [The following filters are supported:];
docremark [];
docremark [Textures:]
docremark [FLOOR_T, WALL_T, UPWALL_T, CEIL_T, where V is the slot number];
docremark [];
docremark [Heights:]
docremark [FLOOR_H, CEIL_H, where V is the height];
docremark [];
docremark [Types:]
docremark [SOLID, HEIGHTFIELD, CORNER, SPACE, where (V > 0) is matching the type, and (V <= 0) excluding the type];
docremark [];
docremark [Functions:]
docremark [DISSOLVE, where V is the percent of cubes to randomly remove from the selection(s)];
docremark [SUBTRACT, where V is the number of selections to subtract from the selection(s)];
docremark [MERGE, where V is unused];
docremark [];

docexample [filter_sel CEIL_T 0] [selects only cubes in the current selection(s) with the skymap as the ceiling texture];
docexample [] [];
docexample [filter_sel DISSOLVE 80] [removes 80% of the selection(s) randomly];

//----------------------------------------------------------------------------

docident [filter_sel FLOOR_T] [filters selections(s) to cubes using one of the provided floor textures];

docargument [T] [Up to seven texture slots to match] [] [0];

//----------------------------------------------------------------------------

docident [filter_sel WALL_T] [filters selections(s) to cubes using one of the provided wall textures];

docargument [T] [Up to seven texture slots to match] [] [0];

//----------------------------------------------------------------------------

docident [filter_sel UPWALL_T] [filters selections(s) to cubes using one of the provided upper wall textures];

docargument [T] [Up to seven texture slots to match] [] [0];

//----------------------------------------------------------------------------

docident [filter_sel CEIL_T] [filters selections(s) to cubes using one of the provided ceiling textures];

docargument [T] [Up to seven texture slots to match] [] [0];

//----------------------------------------------------------------------------

docident [filter_sel FLOOR_H] [filters selections(s) to cubes with one of the provided floor heights];

docargument [H] [Up to seven heights to match] [] [0];

//----------------------------------------------------------------------------

docident [filter_sel CEIL_H] [filters selections(s) to cubes with one of the provided ceiling heights];

docargument [H] [Up to seven heights to match] [] [0];

//----------------------------------------------------------------------------

docident [filter_sel SOLID] [filters selections(s) to cubes that are/aren't solid];

docargument [V] [valid integer] [] [0];
docremark [V > 0 searches for solids, removing non-solids]
docremark [V <= 0 searches for non-solids, removing solids]

//----------------------------------------------------------------------------

docident [filter_sel HEIGHTFIELD] [filters selections(s) to cubes that are/aren't heightfields];

docargument [V] [valid integer] [] [0];
docremark [V > 0 searches for heightfields, removing non-heightfields]
docremark [V <= 0 searches for non-heightfields, removing heightfields]

//----------------------------------------------------------------------------

docident [filter_sel CORNER] [filters selections(s) to cubes that are/aren't corners];

docargument [V] [valid integer] [] [0];
docremark [V > 0 searches for corners, removing non-corners]
docremark [V <= 0 searches for non-corners, removing corners]

//----------------------------------------------------------------------------

docident [filter_sel SPACE] [filters selections(s) to cubes that are/aren't spaces];

docargument [V] [valid integer] [] [0];
docremark [V > 0 searches for spaces, removing non-spaces]
docremark [V <= 0 searches for non-spaces, removing spaces]
docremark []
docremark ["Space" cubes are cubes not matching any other unique type, e.g. heightfields]

//----------------------------------------------------------------------------

docident [filter_sel DISSOLVE] [Removes P percent of selection(s) randomly];

docargument [P] [percentage of cubes to remove from selections(s)] [] [0];

//----------------------------------------------------------------------------

docident [filter_sel SUBTRACT] [Subtracts the last N selections from all other selections];

docargument [N] [Number of selections to subtract] [] [0];

//----------------------------------------------------------------------------

docident [filter_sel MERGE] [Combines and condenses overlapping selections];

//----------------------------------------------------------------------------

docident [curtex] [Prints texture slot information of the selected cube, or the cube at X / Y];
docargument [P] [Position of texture to check] [FLOOR, WALL, UPWALL, CEIL, ALL] [0];
docargument [X] [X coordinate of cube to check] [optional] [0];
docargument [Y] [Y coordinate of cube to check] [optional] [0];
docremark [If no coordinate arguments are provided, curtex will list textures(s) for the currently selected cube];
docremark [];
docremark [Note: Without x/y input, curtex works with the top-left cube of the most recent selection]
docexample [curtex WALL] [prints the texture slot used for the wall of the selected cube];

//--------------------------------------------

docident [texname] [returns the filename of the selected cube's texture at position P]
docargument [P] [Position of texture to return] [FLOOR, WALL, UPWALL, CEIL] [0];
docexample [echo (texname FLOOR)] [prints the filename of the selected cube's floor texture]

//--------------------------------------------

docident [getcurtex] [returns texture slot number of the selected cube, or the cube at X / Y];
docargument [P] [Position of texture to return] [FLOOR, WALL, UPWALL, CEIL, ALL] [0];
docargument [X] [X coordinate of cube to check] [optional] [0];
docargument [Y] [Y coordinate of cube to check] [optional] [0];
docremark [If no coordinate arguments are provided, getcurtex will list textures(s) for the currently selected cube];
docremark [];
docremark [Note: Without x/y input, getcurtex works with the top-left cube of the most recent selection]
docremark [];
docremark [Returns -1 on error];
docexample [getcurtex FLOOR 100 75] [returns the texture slot used for the floor at position 100/75];

//--------------------------------------------

docident [curheight] [Prints height information of the selected cube, or the cube at X / Y];
docargument [P] [Position of height to check] [FLOOR, CEIL, BOTH] [0];
docargument [X] [X coordinate of cube to check] [optional] [0];
docargument [Y] [Y coordinate of cube to check] [optional] [0];
docremark [If no coordinate arguments are provided, curheight will list height(s) for the currently selected cube];
docremark [];
docremark [Note: Without x/y input, curheight works with the top-left cube of the most recent selection]
docexample [curheight CEIL] [prints the ceiling height of the selected cube];

//--------------------------------------------

docident [getcurheight] [returns the height of the selected cube, or the cube at X / Y];
docargument [P] [Position of height to check] [FLOOR, CEIL] [0];
docargument [X] [X coordinate of cube to check] [optional] [0];
docargument [Y] [Y coordinate of cube to check] [optional] [0];
docremark [If no coordinate arguments are provided, getcurheight will return the height of the currently selected cube];
docremark [];
docremark [Note: Without x/y input, getcurheight works with the top-left cube of the most recent selection]
docremark [];
docremark [Returns -255 on error];
docexample [getcurheight FLOOR 100 75] [returns the floor height at position 100/75];

//----------------------------------------------------------------------------

docident [undo_sel] [removes last N selection(s) from the list of selections];
docargument [N] [Number of selections to remove] [If no argument provided, a value of 1 is used] [0];
docexample [undo_sel 2] [removes the last two selections made from the list of selections.];

//----------------------------------------------------------------------------

docident [select_all] [removes all current selections and selects entire map area, including bounding walls];

//----------------------------------------------------------------------------

docident [equalize_sels] [levels the floor/ceiling of all selections, with the min/max height gathered from all of them];

docargument [T] [an integer denoting the type] [0 (floor), 2 (ceiling)] [0];

docremark [This differs from /equalize in that /equalize_sels levels all selections at once, rather than each selection having it's own min/max height]

//----------------------------------------------------------------------------

docident [clearrecenttex] [clears the history of recent textures used in the current map];

//-------------------------------------------------------------------

docident [cleanedit] [turns on/off clean edit mode];
docargument [V] [0(off)...1(on)] [] [0];
docremark [While editing in clean edit mode, objects/guides not normally visible remain unvisible]
docremark [i.e. The grid guidlines, selection borders, entity sparkles, clips, playerstart arrows, and closest entity information are hidden]

//-------------------------------------------------------------------

docident [togglecleanedit] [inverses the on/off state of cleanedit];

//-------------------------------------------------------------------

docident [savesel] [Stores the list of current selections to later be recalled by /reselect];

//-------------------------------------------------------------------

docident [reselect] [Removes all current selections and selects the list of cubes previously stored with /savesel];

//-------------------------------------------------------------------

docident [tex2front] [Brings the selected cube's texture slot used in position P to the front of its recent textures list];
docargument [P] [The position of the cube's texture to bring to front] [FLOOR, WALL, UPWALL, CEIL] [0];
docremark [tex2front works with the top-left cube of the most recent selection]

//-------------------------------------------------------------------

docident [paste_half] [Pastes the floor/ceiling of a previously copied selection, leaving the opposite half unmodified];
docremark [The choice of floor or ceiling is derived from which the player is looking at]

//-------------------------------------------------------------------

I've seen several different options from MyBB so this seems reasonable to do though I confess I'm not personally familiar with MyBB

[Image: ezgif-com-gif-maker.gif]
Thanks given by:
#2
How easy would this be to install?
I don't see any reason not to import this functionality aside from the effort itself.

If we don't get this functionality, what would be the best way for end-users to append many lines of text to a configuration file? Would a .bat file be preferred? Does that work in other platforms? Wanting to make it as easy as possible (for now I can at least provide explicit directions for users)

Would be really cool if scripts could be on the XRD server and installed or even browsed for in-game in a future release
Thanks given by:
#3
Done
Thanks given by: Felix-The-Ghost
#4
v62
Thanks given by:
#5
Thank you XRD, so much nicer
Thanks given by: