A terminal screen-scraping client enhanced with features for various communication protocols such as telnet/ssh/etc. Serves as a macro pre-processor and proprietary interpreter based scripting language. Includes Peer-To-Peer chat relay.
- CREATED BY: Latency McLaughlin
- FRAMEWORK: .NET Core 2.0
- SUPPORTS: Visual Studio, DotGNU, Rider, MonoDevelop, etc.
- UPDATED: 10/9/2017
- TAGS: C# .NET TinTin TinTin++ TinTin# Client Interpreter
- VERSION: v3.0.0
TinTin++ is a MUD client primarily written for Unix-like systems and is now available for multi-platform use. It is one of the oldest MUD clients in existence and a successor of the TINTIN(++) client.
According to its author, TINTIN stands for "The kIckiN Tickin dIkumud clieNt".
TINTIN originated as a single file containing 700 lines of C code, allowing triggers and aliases, that was posted on Usenet by Peter Unold on April 1, 1992. On October 6 1992 Peter Unold made his final release, TINTIN III, which was a much more matured and feature rich program.
In 1993 the development of TINTIN was continued by Bill Reiss who announced the release of TinTin++ v1.0 on July 3, 1993. On April 25, 1994 TinTin++ 1.5 was announced, which was a joint effort by Bill Reiss, David A. Wagner, Rob Ellsworth, and Jeremy C. Jack.
After the 1.5 release in 1994 active development came to a halt. TinTin++ 1.5 had gained significant popularity however, and being public domain this resulted in many derivative works like zMUD, yTin, Lyntin, Pueblo, WinTin95, and GGMud.
In 1998 development was continued briefly by Rob Elsworth who incorporated several patches by Sverre Normann before handing over development to Davin Chan who re-licensed the software to GNU GPL on July 12th, 2001 in his final release of TinTin++ 1.86b.
In 2004 development was continued by Igor van den Hoven.
In 2017 development was continued by Latency McLaughlin and had ported it to .NET Core in C# as a universal platform for all and a complete re-write and overhaul consoladating several systems and making things easier to use.
TinTin# is a console telnet client enhanced with features that work particularly well for playing MUDs, though it allows connecting to Linux and Bulletin Board System servers as well.
To enhance game play on MUDs, the client can create a split screen arrangement, which divides the interface into input, output, and status areas. Input handling is enhanced with readline-like input editing, macro, and alias support. Text received from the server can be highlighted or set to execute triggers written in the TINTIN scripting language, which resembles the C/C++/C#/Java programming languages.
TinTin# has various other features that are commonly found in modern MUD clients, such as automapping, MCCP, friend-to-friend messaging, logging in HTML, and a TELNET event handler.
Supported Protocols
Character Mode | Directly transmit the mud client's input, required for BBSes, *NIX servers, and Roguelike MUDs. |
GMCP | Generic Mud Communication Protocol. |
Go Ahead | Allows the server to indicate the end of output for better mud client side prompt handling. |
IPv6 | Allows 128-bit IP addresses. |
MCCP | Mud Client Compression Protocol. |
MSDP | Mud Server Data Protocol. |
MSSP | Mud Server Status Protocol. |
MudMaster Chat | Instant messaging and file transfers over private P2P connections. |
NAWS | Sends the mud client's window size to the server. |
Regular Expressions | Use powerful Perl Compatible Regular Expressions in triggers and commands. |
TELNET | Connect to *NIX servers and BBSes using TELOPT negotiations. |
VT100 | Displays both mud client and server side text interfaces. |
xterm 256 colors | Highlight in 256 colors instead of the traditional 16 colors. |
Program Features
Action | Triggers a script when a matching line of text is found. |
Alias | Allows command shortcuts bundling multiple commands together. |
All | Execute commands across multiple sessions. |
Associative Arrays | Fast and flexible variable system using nested associative arrays. |
Auto Mapper | Creates an interactive map to help visualize and navigate the game world. |
Bell | Rings the terminal bell. |
Buffer | Manipulates the scrollback buffer. |
Class | Labels a set of triggers to belong to a given class which allows removing or saving them independently. |
Chat | Used to create peer to peer connections to other clients. |
Chat_Protocol | Inter-mud chat protocols. |
Colors | Displays the color list and attributes for the terminal. |
Config | Displays the environment variables used by the client and offers re-assignments to them if specified. |
Control Flow | Uses braces for nesting, Break, Case, Continue, Default, If, Else, Elseif, Forall, Foreach, Loop, Return, Switch, and While statements, allowing C-like programming. |
Cr | Carriage return. |
Cursor | Adds customizable input editing with macros. |
Debug | Enables the debugging mode giving useful information for finding bugs in your scripts. |
Delay | Executes a script after a set amount of seconds has passed. |
Echo | Echos a string verbatim. |
End | Terminates the process and closes all sessions. |
Escape_Codes | Displays the list of escape codes available. |
Event | Executes a script when an event occurs. |
Format | Formats text using a printf like syntax. |
Function | Executes a script and substitutes the function call with the return value. |
Gag | Prevents lines of text from being displayed. Alias for #substitute {message} {} |
Greeting | A greeting message to be specified or overridden. |
Grep | Searches and displays matching lines in the scrollback buffer. |
Help | Displays documentation for a given command or displays the list as a collection if no argument was specified. |
Highlight | Changes the color of incoming text. |
History Buffer | Stores the last commands you typed. Press UP to scroll through the list, or ctrl-r to find matches. |
Ignore | Toggles verbatim all the nodes associated per list type specified that were registered. |
Info | Displays the amount of nodes per list type registered. |
Input editing | Input editing and handling that is almost identical to the Linux shell. |
Keypad | Keypad configuration layout. |
Kill | Iterates the command specified and removes registered statements associated. |
Line | Redirects control of the output line being sent as a pre-trigger. |
Lists | Stores information as a list instead of as an associative array. |
Log | Logs incoming data as HTML, VT100, or plain text. |
Macro | Assigns commands to any possible key combination. |
Map | Used for the auto-mapper. |
Math | Uses 64 bit floating point arithmatic and logical expressions. |
Mathexp | Mathematical expressions are used for calculations and boolean if checks. |
Message | Toggles output being sent verbatim for individual commands. |
Name | Uses the session name unique to the running session as a macro which was appended to the command list. Renders context switching or indirect session command execution. |
Nop | No operation statement. |
OSInfo | Retrieves operating system information. |
Parse | Works similarly to a LINQ aggregate statement. |
Path | Records movements and creates a list of commands to move from one location to another. |
Pathdir | Bitvectored cardinal direction configuration macros. |
Prompt | Captures lines and places them on the split line for the creation of status bars. |
Session | Opens one or multiple sessions to connect to a server. |
Read | Reads in a script file. Script code can be indented and spaced out over several lines. |
Regexp | Used to compare the given string to the given regular expression. |
Repeat | Repeats the same command multiple times. |
Replace | Searchs the variable for the given string in oldtext and replace it with the string given in newtext. |
Run | Runs a given application, such as ssh, or sftp, with access to all of TinTin++'s scripting capabilities. |
Scan | Reads in an ANSI or plain text log file so you can view it in the scrollback buffer. |
Script | Runs the given script written in bash, lua, perl, php, python, ruby, etc, storing the output as a variable or processing it as a command. |
Scrollback | Stores up to one million lines of text which can be viewed using page-up/down. |
Send | Sends the text directly to the terminal. |
Showme | Displays the registered statements or greps those when argument is specified. |
Snoop | Displays output from multiple sessions active uniquely specified. |
Speedwalk | Builds an array of cardinal directions specified with semi-colon delimiter and executes the unrolling. |
Split Screen | Splits the screen in an input, output, and status area. |
Substitute | Matches text or patterns and replaces them with a substitute text. |
Suspend | Suspends the process to give control back to the shell. |
Switchboard | Iterates the commands registered, including macros auto-generated. |
System | Execute commands from the shell. |
Tab Completion | Recalls hard to spell words by typing the first couple of letters and pressing tab till the right match shows up. By default the scrollback buffer is used for tabbing. |
Textin | Reads in a script file to be ammended globally. |
Ticker | Asynchronous trigger with timeout to execute statements. |
UnTab | Removes the completion word from the tab completion list. |
Variable | Variables are global for each session and can be accessed by adding a $ before the variable name. |
Wildcards | Used for string match searches using regular expressions. |
Write | Write out scripts that are automatically indented, making scripts easy to read and debug. |
Writebuffer | Writes the scrollback buffer to file. |
Zap | Closes the active session. If no session is active it will terminate the program. |
Shortcut | Comment |
---|---|
Ctrl +A / HOME |
Beginning of line |
Ctrl +B / ← |
Backward one character |
Ctrl +C |
Send EOF |
Ctrl +E / END |
End of line |
Ctrl +F / → |
Forward one character |
Ctrl +H / Backspace |
Delete previous character |
Tab |
Command line completion |
Shift +Tab |
Backwards command line completion |
Ctrl +J / Enter |
Line feed |
Ctrl +K |
Cut text to the end of line |
Ctrl +L |
Clear line |
Ctrl +M |
Same as Enter key |
Ctrl +N / ↓ |
Forward in history |
Ctrl +P / ↑ |
Backward in history |
Ctrl +U |
Cut text to the start of line |
Ctrl +W |
Cut previous word |
Backspace |
Delete previous character |
Delete |
Delete succeeding character |
This library can be installed using NuGet:
Name: TinTin# Source: nuget.org
GNU LESSER GENERAL PUBLIC LICENSE - Version 3, 29 June 2007