Note: All codes must be uppercase and sandwiched between @ symbols (e.g. @USER@). System Information Code Description Ver --------------------------------------------------------------------------- o New @-codes: - SMB_GROUP Current message group name - SMB_GROUP_DESC Current message group description (long name) - SMB_GROUP_NUM Current message group number - SMB_SUB Current message sub-board name - SMB_SUB_DESC Current message sub-board description - SMB_SUB_CODE Current message sub-board internal code - SMB_SUB_NUM Current message sub-board number - MSG_TO Current message to-user name/number/address - MSG_TO_NAME Current message to-user name - MSG_TO_EXT Current message to-user extension (number) - MSG_TO_NET Current message to-user network address - MSG_FROM Current message from-user name/number/address - MSG_FROM_EXT Current message from-user extension (number) - MSG_FROM_NET Current message from-user network address - MSG_SUBJECT Current message subject - MSG_DATE Current message date/time - MSG_TIMEZONE Current message timezone - MSG_ATTR Current message attributes o All @-codes now support the -L and -R variations for fixed length display (left or right justified) Example: [@name-l___________________@] BBS Name of BBS BOARDNAME Name of BBS CONF Name of current Group and Sub-board CONFNUM Number of current Group and Sub-board CONN Connection description (modem type, "Telnet", "Local") 2.3c DATE Current system date DIR Current file directory short description DIR-L[...] " " padded and left justified DIR-R[...] " " padded and right justified DIRL Current file directory long description DIRL-L[...] " " padded and left justified DIRL-R[...] " " padded and right justified DN Number of current file directory DL " " padded and left justified (4 chars wide) DR " " padded and right justified (4 chars wide) FIDOADDR System's primary FidoNet address 2.3c FREESPACE Free disk space available for uploads GRP Current message group short description GRP-L[...] " " padded and left justified GRP-R[...] " " padded and right justified GRPL Current message group long description GRPL-L[...] " " padded and left justified GRPL-R[...] " " padded and right justified GN Number of current message group GL " " padded and left justified (4 chars wide) GR " " padded and right justified (4 chars wide) INETADDR System's Internet Address (as configured in SCFG) 2.3c LASTCALLERNODE Name of user last on this node LASTCALLERSYSTEM LIB Current file library short description LIB-L[...] " " padded and left justified LIB-R[...] " " padded and right justified LIBL Current file library long description LIBL-L[...] " " padded and left justified LIBL-R[...] " " padded and right justified LN Number of current file library LL " " padded and left justified (4 chars wide) LR " " padded and right justified (4 chars wide) LOCAL-IP System's IP address 3.0b LOCATION System location (city, state) 2.3c NOACCESS Why user was denied access (last false ARS) NODE Number of current node NODE### Status of node number ### NUMCALLS NUMDIR Number of current library and directory PREVON QUESTION Current Yes/No question (for TEXT\MENU\YESNO.*) QWKID System's QWK BBS-ID 2.3c REV Software revision (single letter) STATS.LOGONS Total logons during history of system 3.0b STATS.LTODAY Total logons today 3.0b STATS.TIMEON Total time used during history of system (in minutes) 3.0b STATS.TTODAY Total time used today (in minutes) 3.0b STATS.ULS Total uploads today 3.0b STATS.ULB Total bytes uploaded today 3.0b STATS.DLS Total download today 3.0b STATS.DLB Total bytes downloaded today 3.0b STATS.PTODAY Total posts today 3.0b STATS.ETODAY Total e-mails sent today 3.0b STATS.FTODAY Total feedbacks sent today 3.0b STATS.NUSERS Total number of new users today 3.0b SUB Current message sub-board short description SUB-L[...] " " padded and left justified SUB-R[...] " " padded and right justified SUBL Current message sub-board long description SUBL-L[...] " " padded and left justified SUBL-R[...] " " padded and right justified SN Number of current message sub-board SL " " padded and left justified (4 chars wide) SR " " padded and right justified (4 chars wide) SYSDATE Current system date SYSOP Name of System Operator SYSTIME Current system time TCALLS Total number of logons for system TFILE Total number of files on system TIME Current system time TMSG Total number of messages on system TNODE Total number of nodes on system TUSER Total number of user slots on system VER BBS version number WHO Display status of all active nodes User Information Code Description Ver --------------------------------------------------------------------------- ADDR1 User's street address ALIAS User's name or alias BAUD User's connect rate (DCE) in bps BDATE User's birthdate (MM/DD/YY) BPS BYTELIMIT User's free credits per day BYTESLEFT User's total credits CALLS Total number of logons for user CID Caller's Caller-ID info or IP address 2.3c CITY User's city COMPANY User's company name or real name CPU User's computer type (v2.x) or hostname (v3.x) DATA DATAPHONE DAYBYTES Number of free credits used today by user DLBYTES Total bytes downloaded by user DLFILES Total files downloaded by user DLKLIMIT User's total credits (in kilobytes) DOWNK Total kilobytes downloaded by user DOWNS EXDATE User's expiration date (MM/DD/YY) EXPDATE EXPDAYS Days left before user expires FIRST User's first name/alias FIRSTREAL User's first real/company name FROM User's location (City, State) HANDLE User's chat handle HOMEPHONE HOST 2.3c IP 2.3c KBLEFT User's total credits (in kilobytes) KBLIMIT User's free credits per day (in kilobytes) LAST User's last name (alias) LASTDATEON Date of user's last logon (MM/DD/YY) LASTNEW Date of user's last new file scan (MM/DD/YY) LASTON Date and time of user's last logon LASTTIMEON Time of user's last logon (HH:MM am) LASTREAL User's last real/company name LEFT MAILW Number of mail messages waiting for current user MAILW:x Number of mail messages waiting for current user #x MAILP Number of pending mail messages sent by current user MAILP:x Number of pending mail messages sent by current user #x MAXDK MEMO Date of user's last password modification MEMO1 User's note MEMO2 MINLEFT User's time left in minutes MSGLEFT Total number of messages posted by user MSGREAD Number of messages read by user this call MSGSLEFT NAME User's name or alias NAME-L[...] User's name (padded and left justified) NAME-R[...] User's name (padded and right justified) NEWFILETIME Date and time of user's last new file scan NUMTIMESON PHONE User's phone number (###-###-####) REAL User's real first name SEC User's security level SECURITY SINCE Date of user's first call (MM/DD/YY) STATE User's state (from location) TIMELEFT TIMELIMIT Maximum time per call in minutes TIMEON Time used this call in minutes TIMEUSED TLEFT Time left (H:MM:SS) TPERC Time allowed per call (H:MM:SS) TPERD Time allowed per day (H:MM:SS) TUSED Time used this call (H:MM:SS) UPBYTES Total bytes uploaded by user UPFILES Total files uploaded by user UPK Total kilobytes uploaded by user UPS USER User's name or alias (same as ALIAS) ZIP User's zip/postal code Display Code Description Ver --------------------------------------------------------------------------- AUTOMORE Toggle automatic pausing BEEP Generate a beep BELL CLS Clear screen CRLF Carriage return/line-feed pair 3.0b MENU:filename Display a menu file (from TEXT\MENU directory) MSGREPLY Command key to reply to last message 3.0b MSGREREAD Command key used to re-read last message 3.0b NOPAUSE MORE PAUSE Immediately produces a [Hit a key] prompt PON Toggles automatic screen pause for everyone POFF Toggles automatic screen pause for everyone TYPE:filename Display a specific filename UP Move cursor up one row (ANSI) 3.0b UP:n Move cursor up n rows (ANSI) 3.0b DOWN Move cursor down one row (ANSI) 3.0b DOWN:n Move cursor down n rows (ANSI) 3.0b RIGHT Move cursor right one column (ANSI) 3.0b RIGHT:n Move cursor right n columns (ANSI) 3.0b LEFT Move cursor left one column (ANSI) 3.0b LEFT:n Move cursor left n columns (ANSI) 3.0b GOTOXY:x,y Move cursor to x/y (1-based) (ANSI) 3.0b PUSHXY Save current cursor position (ANSI) 3.0b POPXY Restore saved cursor position (ANSI) 3.0b Miscellaneous There a few special Synchronet specific @-Codes which require a parameter (following the colon and before the terminating @ symbol): Code Description --------------------------------------------------------------------------- HANGUP Immediately disconnect user SETSTR:STR Sets the current Baja command string to STR EXEC:MODNAME Execute a loadable (Baja) module, EXEC\MODNAME.BIN TYPE:FILENAME Display a specific filename (must specify path and file ext.) MENU:FILENAME Display a menu file (from TEXT\MENU with automatic file ext.) Synchronet command line specifiers may be used in the FILENAME parameter to the TYPE: @-Code allowing symbolic replacment for specific Synchronet directories (%!, %z, %k, %j, etc). Examples: @EXEC:MYMOD@ @TYPE:%zSYSTEM.MSG@ @MENU:YESNO@ [17.3] - Customization: Message Color Codes Synchronet supports six different Color Code formats. When Synchronet encounters one of these Color Codes in a message, it changes the text following the Color Code to the specified color. Support of the formats which are not native to Synchronet (WWIV, Celerity, Renegade, PCBoard, and Wildcat) can be toggled on and off from the Synchronet Configuration utility (System->Message Options->Extra Attribute Codes). The non-Synchronet color codes (Extra Attribute Codes) only affect the text that is displayed on the SAME LINE. When using Synchronet color codes, the new color is retained from line to line until another color code is processed or the end of the text is reached. Synchronet Format The native Synchronet Color Code format (preferred) consists of a Control-A followed by a singe character. The following is a list of valid Control-A Color Codes: Foreground Background ---------- ---------- Black K 0 Red R 1 Green G 2 Yellow Y 3 Blue B 4 Magenta M 5 Cyan C 6 White W 7 Attribute Description --------- ----------- High H High Intensity Blink I Blinking Normal N No Special Attributes (Normal) Pause P Insert a Pause Prompt into message Pause Reset Q Reset the line counter for the auto screen-pause Delay , Insert a Tenth Second Delay into message Delay ; Insert a Half Second Delay into message Delay . Insert a Two Second Delay into message Date D Display the system date Time T Display the system time Cls L Insert a Form Feed (Ctrl-L, Clear Screen) into message Clreol > Clear to End of Line (leave cursor in current position) Bckspc < Non-destructive backspace (Ctrl-H) CR [ Carriage return (Ctrl-M) LF ] Line feed (Ctrl-J) Ctrl-A A Send an actual Ctrl-A character Sync S Synchronize output with remote system EOF Z End of displayable text in this file Normal - Same as 'N' but only sends ANSI codes if the (minus) High Intensity, Blinking, or Background attribute is set. Normal _ Same as 'N' but only sends ANSI codes if the (underscore) Blinking or Background attribute is set. Synchronet also supports Special Control-A codes used to hide text from users not meeting certain criteria (i.e.: Security Level or Flags from Flag Set #1). The following is a list of Special Control-A codes, and a brief description of each code's usage: Code Description ------------------------------------------------------------------------------- ^A thru ^Z Only display the following text to users with the corresponding flag A through Z turned on (from Flag Set #1). ! Toggle the text display off/on for users of less than level 10. @ " " 20. # " " 30. $ " " 40. % " " 50. ^ " " 60. & " " 70. * " " 80. ( " " 90. ) Restore the displaying of text to ALL users. " Display contents of (from your TEXT directory) High Bit (greater than ASCII 127) Used for cursor right positioning. WWIV Format Synchronet also supports Color Codes which are native to WWIV BBS software. These codes consist of a Control-C followed by a number (0 through 7): Code Color ---- ----- 0 Normal 1 High Intensity Cyan 2 High Intensity Yellow 3 Normal Magenta 4 High Intensity White with Blue Background 5 Normal Green 6 High Intensity Blinking Red 7 High Intensity Blue 8 Low Intensity Blue 9 Low Intensity Cyan Celerity Format Synchronet also supports Color Codes which are native to Celerity BBS software. These codes consist of a pipe symbol '|' followed by a letter (case sensitive): Code Color (foreground) ---- ------------------ k Normal Black b Normal Blue g Normal Green c Normal Cyan r Normal Red m Normal Magenta y Brown w Normal White d High Intensity Black B High Intensity Blue G High Intensity Green C High Intensity Cyan R High Intensity Red M High Intensity Magenta Y Yellow W High Intensity White S * Swap foreground and background Example: "|b|S|W" would set the current color to high intensity white on a blue background. Note: Due to conflicting escape sequences (namely, the pipe character), Celerity color codes are not supported when using RIP terminal mode. Renegade Format Synchronet also supports Color Codes which are native to Renegade BBS software. These codes consist of a pipe symbol '|' followed by a number (0-23): Code Color ---- ----- 0 Normal Black 1 Normal Blue 2 Normal Green 3 Normal Cyan 4 Normal Red 5 Normal Magenta 6 Brown 7 Normal White 8 High Intensity Black 9 High Intensity Blue 10 High Intensity Green 11 High Intensity Cyan 12 High Intensity Red 13 High Intensity Magenta 14 Yellow 15 High Intensity White 16 Background Black 17 Background Blue 18 Background Green 19 Background Cyan 20 Background Red 21 Background Magenta 22 Background Brown 23 Background White Example: "|15|17" would set the current color to high intensity white on a blue background. Note: Due to conflicting escape sequences (namely, the pipe character), Renegade color codes are not supported when using RIP terminal mode. PCBoard/Wildcat Format Two of the Color Code formats which Synchronet supports (PCBoard and Wildcat) use similar, yet cryptic, methods of displaying colors. The PCBoard method uses the format "@X", and Wildcat uses the format "@@". The following is a list of the Background and Foreground choices available: Color Attribute Color Attribute ------------ ----- --------- ------------ ----- --------- 0 Black Normal 0 Black Normal 1 Blue " 1 Blue " 2 Green " 2 Green " 3 Cyan " 3 Cyan " 4 Red " 4 Red " 5 Magenta " 5 Magenta " 6 Brown " 6 Brown " 7 White " 7 White " 8 Black Blinks Foreground 8 Black High Intensity 9 Blue " 9 Blue " A Green " A Green " B Cyan " B Cyan " C Red " C Red " D Magenta " D Magenta " E Brown " E Yellow " F White " F White " Example: "@1F@" in Wildcat format and "@X1F" in PCBoard format would set the current color to high intensity white on a blue background. [17.4] - SIF Questionnaire File An automatic new user SIF questionnaire can be specified in SCFG->System. If a newuser SIF is specified, all users who logon and don't have a copy of the answered questionnaire data in their user file will be given the questionnaire upon logon. The sysop can view the answered questionnaire from User Edit with the '#' command. For convenience, the sysop can create a second (abbreviated) SIF file for his own use in viewing user's answers. The two SIF files (input and output) should be identical with the exception of what is in the 'text' portion. format: textmode[mod][l][r][x][.n]["str"] element descriptions: STX is the ASCII code for start of text (ASCII 2 / Ctrl-B) ETX is the ASCII code for end of text (ASCII 3 / Ctrl-C) text is any number of ASCII characters - Synchronet Ctrl-A codes supported mode text input mode desired for this field. Possible mode values are: c single character s string of characters mod optional mode modifier. Possible mode modifiers are: n numeric characters only u input converted to uppercase f forced word capitalization ('s' mode only) l input line will be displayed (inverse bar of maximum input length) r a carriage return / line feed pair will be appended to this field in the data buffer. Only use this field if you want the data buffer or file to be more readable. All data is on one line otherwise. x maximum string length allowed (required for non-template 's' mode) n minimum string length allowed (only applicable with 's' input mode) str 1: in 's' modes, a template string that defines what will be displayed at the prompt and what type of characters the user can input. All characters other than 'N', 'A' or '!' are printed at the prompt. Occurances of 'N', 'A' or '!' define which type of character the user can input for each character position. 'N' allows the user only to enter a numeric character, 'A' allows only alphabetic, and '!' allows any character. Popular templates are "NNN-NNN-NNNN" for phone number input or "NN/NN/NN" for date input. 2: in 'c' modes, a string that defines which characters the user will be allowed to input (not case sensitive), usually used for multiple choice answers. Most common allowed characters are "ABCD..." or "1234...". If this string is specified in 'c' input mode, 'u' and 'n' have no effect and input will be converted to uppercase automatically. Example 1: Enter string: sulr8.3 Prints the prompt, "Enter string: ", then a line of 8 blue spaces (an input bar, if you like), would convert all of user's input to uppercase, allow the user to input a maximum of eight characters, a minimum of three and append a CRLF onto the end of the data field. Example 2: A> First Answer B> Second Answer C> Third Answer Which: c"ABC" Prints "A> First Answer" "B> Second Answer" etc... then allows the user to input one character, either A,B, or C. No other characters will be accepted as input. Example 3: Enter phone number: s"NNN-NNN-NNNN" Prints "Enter phone number: ", then allows the user to input only numbers in the 'N' character positions, and automatically skips over the '-' characters. See EXAMPLE.SIF in the SBBS\TEXT directory for more information. [17.5] - GURU.DAT The Synchronet Guru is an artificial intelligence engine that users can chat with for entertainment or educational purposes. You may wish to fool the users into believing the guru is a live human, or tell them up-front that it's just a program. You may have up to 500 different guru available to chat with on your BBS, each with its own "personality" and "intelligence". You add additional gurus in SCFG->Chat Options->Artificial Gurus. You can specify access requirements (see the ARS chapter for details) for each guru, allowing you to have specific gurus for different groups of users or allow users to choose which guru they want to chat with. The gurus of your BBS can be "taught" to respond to keywords and phrasing that your users use when chatting with him. The default guru's "brain" is a file named GURU.DAT that is kept in the CTRL directory. It is a special data file that contains logic expressions and lists of responses. Before you edit the GURU.DAT file, be sure you understand exactly what you are doing, as the neuro system that interprets the GURU.DAT file does not handle syntax errors very well. The basic structure of the GURU.DAT is as follows: (expression) response response (expression) response response () response response response You may include as many Expression/Response sets as you like, as long as the file size does not exceed 64k or the amount of available memory. Each expression contains one or more string of characters that The Guru may respond to and logic operators. The string must be in all uppercase and may not contain the following characters: ~^|&() If the expression just contains one string (e.g. (HELLO)) and that string is used in the users input, The Guru will pick a random response from the list that follows that expression. The Guru will only use one response for each line input by the user, so as soon as a "true" expression is encountered, a response is made and the evaluation of the user's line is complete. All expressions are evaluated from the top of the file down, so if a true expression is encountered toward the top of the file, all of the remaining expressions are ignored until the next evaluation. Notice that the last set of responses is preceded by a pair of empty parenthesis. This is an "always true" expression and should always be the last expression in the file. Omitting this fall-through expression is a syntax error. If all the previous expressions are evaluated as false, then a response will be picked from the set following the fall-through expression. The simplest form of an expression is just a string of uppercase letters (with or without spaces). If the string is followed by a tilde '~', the string will be evaluated as true even if the string is embedded in another string (e.g. if the user types "XhelloX", an expression of (HELLO) would evaluate as false, but an expression of (HELLO~) would evaluate as true). You can also specify that the string must be the beginning of the users input line by following the string with a caret '^'symbol (e.g. if the user types "I said, Hello!", an expression of (HELLO) would evaluate to true, but an expression of (HELLO^) would be false). An expression can contain multiple strings connected with logic symbols. The valid logic symbols are & (and) and | (or) (e.g. if you have the expression (HELLO&GURU) the user must type both "hello" and "guru" in the input line in order for the expression to be true. If you have the expression (HELLO|HI), it will be evaluated as true if the users includes either "hello" or "hi" in his input string). Nested evaluations are supported (e.g. the expression, (GURU&(HELLO|HI)) will evaluate as true if the user inputs either "guru" and "hello", or "guru" and "hi"). Expressions may also contain AR strings within square brackets ([ and ]). The expression (HELLO&GURU&[LEVEL 20]) would evaluate as TRUE only if the user typed the words "HELLO" and "GURU" and had a level of 20 or higher. See the ARS chapter for details on the AR string syntax and possible keywords. RESPONSES: Each expression can be followed by up to 100 responses and each response can be up to 512 bytes long. Responses can not contain the characters ( or ) and may only span several lines if the last character of each continued line is a back-slash '\'. Responses are picked at random from the group below the first expression that is evaluated as true. The more responses you have to each expression, the less likely The Guru is to repeat himself. The Guru can also respond with information about the current user or perform an action. To initiate these special responses, you must precede a valid response variable with a back-quote (`) character. The valid response variables and their definitions are as follows: A User's alias (name, if Aliases not allowed) B User's birth date C User's computer type D User's download bytes G Guru's name H Hang up on the user (immediately) I System's QWK ID J Current day of the month L User's security level M Current month N User's note (location, if Aliases not allowed) O Sysop's name P User's phone number Q Quit chat R User's real name (address, if Aliases not allowed) S System name T Current time U User's upload bytes W Current day of the week Y Current year Z User's zip/postal code $ User's credits # User's age ! Toggle The Guru's typing mistakes Off/On _ Pause in response Three of the above response variables only have effect when the user is chatting with The Guru in the "Local" mode and not from multinode chat. These are the 'Q'uit chat (which is the only means of the exiting without hitting Alt-G locally), '!' Toggle typing mistakes, and '_' pause in response. e.g. The expression/response pair: (HELLO) Hello there, `a... would display "Hello there, Joey..." if Joey were to say "hello" to The Guru. See CTRL\GURU.DAT for more detailed examples of GURU.DAT programming.