Page 1 of 1

TinyFugue basics

Posted: 22 Aug 2010 15:06
by Rhaegar
This thread is for those who would like to start using this awesome client, but don't really know where/how to start.

Note: This guide is intended for TF version 4.01 stable, some of the things might be different in 5.0 beta and more modern builds.

Where do I get it?

Windows: http://www.druware.com/downloads/tf-40s1-w.zip
Mac: http://www.druware.com/downloads/tf-40s1-osx.dmg.gz
Unix: http://sourceforge.net/projects/tinyfugue/ (source file that needs to be compiled)

There are also other OS's supported, like OS/2, BeOS etc. You can check everything here:
http://tinyfugue.sourceforge.net/

Note for Unix based systems users: The TF source is very old one indeed and it won't compile on newer systems. What you need to do is replace the history.c and history.h files in the source with the ones I attached here.

Ok, now I got it installed and all, what's next?

The next things to look into, is the .tfrc (or just tfrc on Windows) file. This is the equivalent to your config/ini files for other things.

Mine looks more or less like this:

Code: Select all

/set lp on
/set visual off
/set hiliteattr r

/histsize 10000

/load kbstack.tf
/load alias.tf
/load /cygdrive/d/genesis/tf/genesis_scripts/general/hilites.tf
/load /cygdrive/d/genesis/tf/genesis_scripts/general/aliases.tf
/load /cygdrive/d/genesis/tf/genesis_scripts/general/items.tf
/load /cygdrive/d/genesis/tf/genesis_scripts/general/travel.tf
/load /cygdrive/d/genesis/tf/genesis_scripts/general/teams.tf
/load /cygdrive/d/genesis/tf/genesis_scripts/general/combat.tf
/load /cygdrive/d/genesis/tf/genesis_scripts/general/herbing.tf
/load /cygdrive/d/genesis/tf/genesis_scripts/general/statistics.tf

/addworld -Tlp gen mud.genesismud.org 3011
Let's break it down into pieces now.

Code: Select all

/set lp on
Most LP muds, Diku muds, telnetd, and some other types of servers send unterminated prompts, that is, prompts that do not end with newline or any other special character. Normally, TF will not display text until a newline is received, so you may not see the prompt until after you press return. But if the %{lp} flag is on, TF will attempt to separate these prompts from normal text and display them correctly.

Code: Select all

/set visual off
This is a matter of personal preference, by default it is on and what it does is creating a horizontal line, separating your input from the server output (ie: you have clear separation of world/client). It can be useful for typing long lines of text.
I prefer the oldschool look, especially that TF is smart and even without visual on, your prompt and input always remain in the same place and aren't broken by server output moving on.

Code: Select all

/set hiliteattr r
This sets the default hilites we will see with /partial and /hilite commands.
Possible options are:
B - bold (default)
r - reverse (switching the foreground and background colours)
u - underline
C<name> - colour

Code: Select all

/histsize 10000
Defines how many lines can be stored in history (useful for some advanced macros, you may just as well omit it)

Code: Select all

/load kbstack.tf
/load alias.tf
Loading additional functionality for TF. alias.tf allows us to create aliases and kbstack.tf is a very useful tool for additional keybindings: save the current line with ESC-DOWN and recall it later with ESC-UP. There are also other files that can help in that, like changing your keybindings to bash or emacs ones.

Code: Select all

/load /cygdrive/d/genesis/tf/genesis_scripts/general/hilites.tf
...
Loading triggers stored in files. Note how the path starts with /cygdrive/, it's from the Windows machine as TF was written primarily for Unix systems and requires cygwin to change the paths into ones it can recognize.

Code: Select all

/addworld -Tlp gen mud.genesismud.org 3011
This simple function adds the default world we'll be connecting to (you can add more if you wish, you can have several worlds open at once in TF and switch between them if you like to). How it works: -T is for type, lp is obvious choice here, gen is the name we assign to our world and then follows the address. The name can be used with commands like /dc <name(optional>(disconnect) and /world <name>(connect).

Ok, I'm all set up for start, how do I make my triggers and stuff?

Here's the list of some basic TF commands and how do they work.

Code: Select all

/help
Obviously, the most important command of them all.

Code: Select all

/hilite <text>
/partial <text>
This is for highlighting entire line (hilite) or specific words (partial) using your default hiliteattr.

Code: Select all

/alias <name> <job> [%; <another job> %; <another job> ...]
Aliases just like your standard gen stuff. With the exception that you can put a lot of stuff there and it will be executed much faster. %; separator between jobs is equal to pressing [Return] on your keyboard.

Code: Select all

/def <options> <name> = <body>
/undef <name>
This is used to create/remove your basic triggers. Typical usage would be:

Code: Select all

/def -F -t'*some text*' my_first_trigger = smile
Which would make you smile upon receiving some text from the server.

Code: Select all

/echo <attributes(optional)> <text>
This is primarily used for your client to "talk to you". I'm using it it inform me when 60 seconds passed from the last time I ate a herb, when I'm changing some settings etc.

Code: Select all

/repeat <time> <repetitions> <action>
This makes your client repeat <action> every <time> <repetitions> times.

Code: Select all

/repeat -180 5000 health all
This example will make your character check health all every 3 minutes and will do so 5000 times (waiting 3 minutes between each time of course).

Code: Select all

/repeat -0 10 drink from fountain
This example will make you instantly drink from fountain 10 times (not waiting between repetitions).

Post any questions you might have. For more advanced triggers/macros examples you can check out the TF threads with scripts I've made on this forum.
Hope you'll find it useful.

Re: TinyFugue basics

Posted: 23 Aug 2010 14:35
by Rhynox
Cool, thanks! I tried it for Linux some time ago, but found it too complex and decided to use mmucl, which uses TCL scripting (which, even if I am not likely to use anytime soon, at least helps grow my CV :D). However, since Mudmaster doesn't work anymore under Windows 7 and it is no longer developed, I will give TF a new try with your post.

Re: TinyFugue basics

Posted: 23 Aug 2010 15:26
by Rhaegar
Just let me know if you would have any problems with it.
And remember to get the 4.01 version (latest stable), not later betas.

Re: TinyFugue basics

Posted: 23 Aug 2010 20:09
by Uther
Got any good cut n paste for it ? TF for windows that is.
I hate the cut n paste in TF for windows. Got any solution for that ?

Re: TinyFugue basics

Posted: 23 Aug 2010 21:26
by Rhaegar
Uther wrote:Got any good cut n paste for it ? TF for windows that is.
I hate the cut n paste in TF for windows. Got any solution for that ?

Code: Select all

  Some additional keyboard operations can be defined by /loading these library
  files:

  kb-bash.tf
          keybindings like those in bash
  kb-emacs.tf
          keybindings like those in emacs
  kbregion.tf
          cut-and-paste operations
  kbstack.tf
          save the current line with ESC-DOWN and recall it later with ESC-UP.

  See the comments at the top of each file for further documentation.

For more complete information, see "keybindings".
And looking into kbregion.tf shows this:

Code: Select all

/def -ib'^x@'	= /kb_set_mark
/def -ib'^xx'	= /kb_cut_region
/def -ib'^x<'	= /kb_copy_region
/def -ib'^x>'	= /kb_paste_buffer
/def -ib'^x^x'	= /kb_exchange_point_and_mark
You can combine it with kbfunc.tf and kb-bash/emacs.tf for some really nice functionality (removing extra spaces, forward/backward kill word, transpose characters, toupper, tolower, history searching with single keystroke and what not).

Re: TinyFugue basics

Posted: 18 Sep 2010 23:07
by Yanus
Just one question, 'cause I'm curious: why are you using ver. 4.0 instead of ver. 5.0 beta 8? TF 5.0b8 is stable as rock.
I wish there were multiline regexp and proper drag&drop from telnet window (which is not going to happen cause I'm using putty :( ).
Again: why 4.01 and not 5.0b8?

Re: TinyFugue basics

Posted: 13 Jan 2011 17:27
by Rhaegar
Yanus wrote:why 4.01 and not 5.0b8?
I guess it has grown on me. All of the scripts I have and people I know are using 4.01 (some functions are different since 5.0) and I really don't feel like re-doing everything I have just for the sake of switching to newer version. Not to mention I'd have to learn some things again.

Re: TinyFugue basics

Posted: 19 Jan 2011 05:17
by Rhaegar
I decided to give it a shot and 5.08b sure does seem stable. They also got rid of some of the incompatibilities with earlier versions. A definite improvement over the last beta I tried (was 5.01 I believe) and I think I'll be using it from now on.