FTE EXTENDEDTEXTCODES

From Quake Wiki

Console text parsing has some fancy new character encoding.

Encoding Description
^0 (Q3) black text
^1 (Q3) red text
^2 (Q3) green text
^3 (Q3) yellow text
^4 (Q3) blue text
^5 (Q3) cyan text
^6 (Q3) magenta text
^7 (Q3) white
^8 (BX) half-alpha white
^9 (BX) half-intensity white (grey)
^&FB

This pattern denotes ansi colours.

F Upper-case hex char denoting the foreground colour, or '-' for white.
B Upper-case hex char denoting the background colour, or '-' for clear.
Hex Char Colour
0 black
1 blue
2 green
3 cyan
4 red
5 magenta
6 brown
7 light grey
8 dark grey
9 light blue
A light green
B light cyan
C light red
D light magenta
E yellow
F white
^[

This pair of chars denotes a console link. Console links are often clickable or can contain other information (their text+data being copied to the input line when shift-clicked). A console link is terminated with the ^] char sequence, and any backslash character defines the start of hidden data stored within the link, which can define the action to be taken should the link be clicked. Any colour codes specified within the link will be reset at the end of it - the next character following the link closure will inherit its colours from the state at the start of when the link was parsed. The ^[ and ^] chars will NOT be displayed, so you may wish to write your link as:

^[[Hey look! A link!]\cmd\linkclicked^]

The above will then send a 'linkclicked' client command to the server when clicked. If a centerprint contains such a link, the mouse cursor will be released, allowing the user to click their choice of links.

^b Causes the text to pulse/blink. Annoying people is fun.
^d Revert to the default colour state.
^m or ^a These two patterns toggle the Alternative character set (equivelent to Masking text with the high bit in quake's vanilla character encoding).
^h Toggles the half-alpha flag. Such text will be that bit harder to read.
^s Push the current colour state. The stack is only about 4 states deep.
^r Pop the current colour state.
^^ Just expands to a single chevron, to avoid markup issues.
^UXXXX Denotes a 16bit unicode codepoint.

Note that vanilla quake's chars are mapped to the private-use range at 0xE0XX, and this can be used to generate such chars regardless of the value of com_parseutf8.

^{XXXXXX} Denotes a full unicode codepoint. the hex value given can legitimately be as high as 0x10FFFF. Higher codepoints are likely to be accepted fine, but are technically not valid unicode as they cannot be expressed with UTF-16.
^xRGB This pattern changes the foreground colour to the specified hex RGB colour, for a total of 4096 different possible colours.

Note that not all the other flags can be used at the same time, so eg the blink flag may be disabled, and the background colour forgotten.

^`u8:TEXT`= This weird pattern defines that the TEXT will be interpretted as always being in the UTF-8 character set, regardless of the value of com_parseutf8 or equivelent cvar.
Problematic markup. This is not required to be implemented, but is documented here for completeness.
Encoding Description
&cRGB ezquake's markup, equivelent to ^xRGB.
&r ezquake's markup, reverts to white text.
=`k8:TEXT'= The included TEXT will be interpreted in the koi8u charset, common for encoding russian text (tweaked to deal with ukranian's extra characters).

If the engine is not configured for unicode, console text entry may result in characters automatically being encoded using the ^{} or ^U encoding mechanism. Such text will likely need a unicode font (via freetype) in order to be readable.


Centerprint Flags.
Prefix Behaviour
/. Stops looking for more prefixes. The following char is the first char of the centerprint body (also disables any intermission-based default flags).
/P Persistent. These centerprints will never time out. Additionally, they will have an opaque background. Perfect for must-read messages. Clear these centerprints with a follow-up 0-length centerprint.
/C Cursor. Forces the availability of a mouse cursor. Note that the cursor will also be forced if there is a link within the centerprint, so this is more for consistency than anything else.
/W typeWriter. This centerprint's text will appear slowly over time, like the finale text when you complete an episode.
/S Stay. This centerprint will never time out (but without an opaque background).
/M Mask. Forces a background without making the centerprint persistent.
/O Obituary. The centerprint will displayed in the lower third of the screen.
/B Bottom-align the text to the centerprint area.
/T Top-align the text to the centerprint area.
/L Left-align the text to the centerprint area, instead of centering the text.
/R Right-align the text to the centerprint area, instead of centering the text.
/FR Clear intermission flag. There is no other way to cancel an intermission.
/FI Standard Intermission flag. Equivelent to svc_intermission. Typically results in the scoreboard/map results getting shown.
/FF Finale. Equivelent to svc_finale
/Ff Finale, but still respective viewofs.
/INAME: Custom title image matching NAME. If /M or /P was also used then this instead becomes a general background image.
Console Link Keys
Key Meaning
<CUSTOM KEY> CSQC is able to intercept console link clicks via the CSQC_ConsoleLink entrypoint. This is the priority action on clicks, but the following actions may still be useful whenever the csqc is not running (eg: once a game has ended). Also, note that the engine may generate console links of its own (eg: from the dir command), so be careful about blocking unknown actions.
player When clicked, displays a small list of actions availble to act upon the associated player.
Action key's meaning
mute Mutes them, disabling or enabling their voip.
ignore Causes the client to ignore all chat messages that appear to come from this player (including voip). Click again to un-ignore.
spec Attempts to change spectator view to follow the clicked player.
kick This attempts to kick the unfortunate player (but not ban them). This may involve rcon command attempts.
ban This attempts to kick-ban the unfortunate player. This may involve rcon command attempts.
<NO ACTION> Display the applicable actions in the console footer.
menu Invokes 'menu_cmd conlink VALUE' when clicked, for menuqc's use.
connect Invokes 'connect VALUE' when clicked, to easily connect to a server.
join Invokes 'join VALUE' when clicked, to easily connect to a server (and play, ignoring the spectator cvar's value).
observe Invokes 'observe VALUE' when clicked, to easily spectate a server (regardless of the spectator cvar's value).
qtv Invokes 'qtvplay VALUE' when clicked, to easily watch a qtv stream.
demo Invokes 'playdemo VALUE' when clicked, to easily play a listed demo.
map Invokes 'map VALUE' when clicked, to easily start the named map.
modelviewer Invokes 'modelviewer VALUE' when clicked, to easily preview a model. Yeah, not that useful for users but quite handy when you type 'dir progs/*.mdl'. Also displays a quick preview on mouse-over.
type Replaces the current input line with the key's value, without executing it (so the user has a chance of aborting if it would screw them over).
desc Displays the value as console-footer text when clicked, for hidden info.
cmd Sends the VALUE as a clientcommand to the server, for ssqc to (ab)use.
say When clicked, sends the VALUE as a chat message, for users to make quickie chat menus.
echo Just prints the key's VALUE to the console when clicked, which may be useful for verbose info that you wanted to detract focus from.
dir Lists the contents of the given directory. Note that this generates various new links.
edit Opens the VALUE file in the engine's built-in text editor.
impulse Sends the given impulse to the server.
film Attempts to play the named movie file.
img When in a textless-link, the VALUE specifies an image to be displayed in place of the link. This ONLY works when the link is at the start of the line.
w The width to use for the img key.
h The height to use for the img key.
fbimg A fallback image, in case the img takes a while to load or otherwise fails to load.
tipimg A shader to display on mouse-over.
tiprawimg Names an image to display bypassing the use of any custom shaders, displayed on mouse-over.
tip tooltip text that's displayed on mouse-over.