| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979 |
- #nop -------------------------------------------------------------------------
- #nop Learn by example
- #nop -------------------------------------------------------------------------
- #nop -------------------------------------------------------------------------
- #nop Loop through room 1 to 1000 and change the color of rooms with the
- #nop static (16) flag to <168>.
- #nop -------------------------------------------------------------------------
- #loop 1 1000 vnum
- {
- #map at $vnum
- {
- #map get roomflags result;
- #if {$result & 16}
- {
- #map set roomcolor <168>
- }
- }
- }
- #nop -------------------------------------------------------------------------
- #nop Capture system information. #script stores the output as a list,
- #nop hence the need to convert it into a normal variable.
- #nop -------------------------------------------------------------------------
- #script {dir} {pwd}
- #var dir $dir[1]
- #script {home} {echo $HOME}
- #var home $home[1]
- #nop -------------------------------------------------------------------------
- #nop Automatically reconnect on disconnect.
- #nop -------------------------------------------------------------------------
- #event {SESSION CONNECTED}
- {
- #event {SESSION DISCONNECTED}
- {
- #gts #delay 5 {#session %0 %1 %3}
- }
- }
- #nop -------------------------------------------------------------------------
- #nop Execute a random social at random time intervals.
- #nop -------------------------------------------------------------------------
- #tick {randomsocial}
- {
- #delay {1d180}
- {
- #switch {1d4}
- {
- #case {1} {cheer}
- #case {2} {greet all}
- #case {3} {smile}
- #case {4} {laugh self}
- }
- }
- }
- {200}
- #nop -------------------------------------------------------------------------
- #nop Maintain a friendlist. %i creates a case insensitive regex.
- #nop -------------------------------------------------------------------------
- #variable {friendlist}
- {
- {bubba};{pamela};{cookie};{harry potter}
- }
- #function isfriend
- {
- #return &friendlist[%i%0];
- }
- #act {%1 follows you.}
- {
- #if {@isfriend{%1}}
- {
- group %1
- };
- #else
- {
- unfollow %1
- }
- }
- #alias {addfriend}
- {
- #format name %l {%0};
- #var friendlist[$name] {};
- #showme $name has been added to your friendlist.
- }
- #alias {delfriend}
- {
- #format name %l {%0};
- #if {@isfriend{$name}}
- {
- #unvar friendlist[$name];
- #showme $name has been deleted from your friendlist.
- };
- #else
- {
- #showme $name is not on your friendlist.
- }
- }
- #nop -------------------------------------------------------------------------
- #nop Append a goto to your current room when saving a map. You can use
- #nop #map return instead.
- #nop -------------------------------------------------------------------------
- #alias {savemap}
- {
- #map write %0;
- #map get roomvnum room;
- #system echo '#map goto $room' >> %0
- }
- #nop -------------------------------------------------------------------------
- #nop Log all text to a file with a timestamp with decisecond precision.
- #nop -------------------------------------------------------------------------
- #function {timestamp}
- {
- #format utime {%U};
- #format result {%t.%m} {%Y-%m-%d %H:%M:%S} {$utime % 1000000 / 100000}
- }
- #event {RECEIVED LINE}
- {
- #line log mylog.txt {<178>@timestamp{} \};
- #line log mylog.txt
- }
- #nop -------------------------------------------------------------------------
- #nop Old school tick support.
- #nop -------------------------------------------------------------------------
- #tick {oldtick}
- {
- #delay 50 #showme #10 SECONDS TO TICK!!;
- #showme #TICK!!!
- }
- {60}
- #alias {ticklist}
- {
- #info tickers save;
- #echo {<128>%+20s %+20s %+20s} {Name} {Interval} {Remaining};
- #draw Yellow scroll line 1 1 1 62;
- #format utime %U;
- #loop 1 &info[TICKERS][] index
- {
- #math uval $info[TICKERS][+$index][arg3] * 1000000;
- #echo {%+20s %+20s %+20m}
- {$info[TICKERS][+$index][arg1]}
- {$info[TICKERS][+$index][arg3]}
- {($uval - ($utime - $info[TICKERS][+$index][arg4]) % $uval) / 1000000.00}
- }
- }
- #nop -------------------------------------------------------------------------
- #nop Execute speedwalks with .
- #nop -------------------------------------------------------------------------
- #alias {.%0}
- {
- #var cnt {};
- #parse {%0} {char}
- {
- #if {"$char" >= "0" && "$char" <= "9"}
- {
- #var cnt $cnt$char
- };
- #elseif {"$cnt" == ""}
- {
- #send $char
- };
- #else
- {
- #$cnt #send $char;
- #var cnt {}
- }
- }
- }
- #nop -------------------------------------------------------------------------
- #nop Targetting script
- #nop -------------------------------------------------------------------------
- #var targets {}
- #alias {target}
- {
- #if {"%0" == ""}
- {
- #showme {Current targets: $targets[]}
- };
- #elseif {&targets[%0]}
- {
- #unvar targets[%0];
- #showme Target '%0' removed.
- };
- #else
- {
- #var targets[%0] {};
- #showme Target '%0' added.
- }
- }
- #act {%1 arrives}
- {
- #if {&targets[%1]} {kill %1}
- }
- #act {%1 is standing here}
- {
- #if {&targets[%1]} {kill %1}
- }
- #action {%1 is dead! R.I.P.}
- {
- #if {&targets[%1]} {target %1}
- }
- #nop -------------------------------------------------------------------------
- #nop Show xterm 256 colors.
- #nop -------------------------------------------------------------------------
- #var temp {}
- #foreach {0;1;2;3;4;5;6;7;8;9;10;11;12;13;14;15} {var1}
- {
- #showme {$var1 \e[38;5;${var1}m}
- }
- #foreach {a;b;c;d;e;f} {var1}
- {
- #foreach {a;b;c;d;e;f} {var2}
- {
- #foreach {a;b;c;d;e;f} {var3}
- {
- #var temp {$temp <$var1$var2$var3><<888>$var1$var2$var3>}
- };
- #showme $temp;
- #var temp {}
- }
- }
- #loop 0 23 cnt
- {
- #format temp {$temp <g%+02s><<888>g%+02s} {$cnt} {$cnt};
- }
- #showme $temp
- #nop -------------------------------------------------------------------------
- #nop Draw a health bar.
- #nop -------------------------------------------------------------------------
- #alias {hpbar}
- {
- #math {hp_percent}{100 * %1 / %2};
- #math {hpbars1} {$hp_percent / 5};
- #math {hpbars2} {20 - $hpbars1};
- #format {hpbar} {<011>%+${hpbars1}s<099><000>%+${hpbars2}s<099> };
- #showme [$hpbar]
- }
- #alias {test}
- {
- hpbar 30 100
- }
- #nop -------------------------------------------------------------------------
- #nop Syntax: sleep <seconds to delay> {commands}
- #nop
- #nop If there is already a pending sleep the delay will be stacked.
- #nop -------------------------------------------------------------------------
- #var sleeptime 0
- #var sleepcurr 0
- #alias {sleep %1 %2}
- {
- #format sleeptime %U;
- #if {$sleeptime > $sleepcurr}
- {
- #math sleepcurr $sleeptime + (%1) * 1000000;
- #delay {%1} %2;
- };
- #else
- {
- #math sleepcurr $sleepcurr + (%1) * 1000000;
-
- #delay {($sleepcurr - $sleeptime) / 1000000.000} %2
- }
- }
- #nop -------------------------------------------------------------------------
- #nop This function and substitution will highlight spelling errors as red.
- #nop -------------------------------------------------------------------------
- #function spellcheck
- {
- #format result %S %1;
- #if {$result == 0}
- {
- #var result %1
- };
- #else
- {
- #var result <118>%1<900>
- }
- }
- #substitute {{\b[a-zA-Z]+\b}} {@spellcheck{%1}}
- #nop -------------------------------------------------------------------------
- #nop This function and substitution will add a speed reader to the split line
- #nop -------------------------------------------------------------------------
- #split
- #function spellcheck
- {
- #format result %S %1;
- #if {$result == 0}
- {
- #var result %1
- };
- #else
- {
- #var result <118>%1<900>
- };
- #list speedread ins -1 {$result}
- }
- #substitute {{\b[a-zA-Z]+\b}} {@spellcheck{%1}}
- #tick {speedread}
- {
- #if {&{speedread[]}}
- {
- #draw tile -2 1 -2 20 {$speedread[1]};
- #list speedread delete 1
- }
- }
- {0.1}
- #nop -------------------------------------------------------------------------
- #nop This function tests the random number engine
- #nop -------------------------------------------------------------------------
- #alias random
- {
- #var random {};
- #loop 1 1000 cnt
- {
- #math tmp 1d1000000000 % 10;
- #math random[$tmp] $random[$tmp] + 1
- };
- #var random
- }
- #nop -------------------------------------------------------------------------
- #nop This macro allows pasting multi-line code fragments on pressing ctrl-v
- #nop -------------------------------------------------------------------------
- #macro {\cv}
- {
- #cursor {convert meta} on;
- #line oneshot #event {CATCH RECEIVED INPUT}
- {
- #line sub {esc} #var paste {%0};
- #replace paste {\\n\\n} {;};
- #replace paste {\\n} {};
- #replace paste {\\t} {};
- #replace paste {;;} {;};
- #1 {$paste}
- }
- }
- #nop -------------------------------------------------------------------------
- #nop This macro allows pasting multi-line code fragments on pressing ctrl-v
- #nop followed by pressing ctrl-enter
- #nop -------------------------------------------------------------------------
- #macro {\e[13;5u}
- {
- #cursor get tmp;
- #cursor home;
- #cursor set {#line sub esc };
- #cursor enter
- }
- #nop -------------------------------------------------------------------------
- #nop This event will cause tintin to always report your screen width as 80
- #nop columns
- #nop -------------------------------------------------------------------------
- #event {CATCH IAC DO NAWS}
- {
- #screen get rows ROWS;
- #format ROWS %a $ROWS;
- #send {\xFF\xFB\x1F\xFF\xFA\x1F\x50\x00${ROWS}\x00\xFF\xF0\}
- }
- #nop -------------------------------------------------------------------------
- #nop Remove duplicate lines and add a counter. Does not work in gts because
- #nop it uses named delays.
- #nop -------------------------------------------------------------------------
- #var repeat[str] {}
- #var repeat[cnt] 1
- #act {~%+}
- {
- #if {{%0} === {$repeat[str]}}
- {
- #math repeat[cnt] $repeat[cnt] + 1;
- #delay {repeat} {repeat_show} {0}
- };
- #else
- {
- repeat_show;
- #var repeat[str] {%0}
- };
- #line gag
- }
- #alias {repeat_check}
- {
- #if {$repeat[cnt] <= 1}
- {
- #line ignore #showme {$repeat[str]}
- };
- #else
- {
- #line ignore #showme {($repeat[cnt]) %0}
- };
- #var repeat[str] {};
- #var repeat[cnt] 1
- }
- #nop -------------------------------------------------------------------------
- #nop These macros will allow you to move around with the arrow keys while
- #nop holding down the control key. You can move ne by pressing arrow up +
- #nop right simultaniously. Move up by pressing arrow up + down simultaniously.
- #nop Move down by pressing arrow left + right simultaniously.
- #nop -------------------------------------------------------------------------
- #macro {\e[1;5A} {#cursor macro preserve;#delay {move} {#cursor macro reset;n} {0.05}}
- #macro {\e[1;5C} {#cursor macro preserve;#delay {move} {#cursor macro reset;e} {0.05}}
- #macro {\e[1;5B} {#cursor macro preserve;#delay {move} {#cursor macro reset;s} {0.05}}
- #macro {\e[1;5D} {#cursor macro preserve;#delay {move} {#cursor macro reset;w} {0.05}}
- #macro {\e[1;5A\e[1;5A} {#undelay {move};#cursor macro reset;n;n}
- #macro {\e[1;5C\e[1;5C} {#undelay {move};#cursor macro reset;e;e}
- #macro {\e[1;5B\e[1;5B} {#undelay {move};#cursor macro reset;s;s}
- #macro {\e[1;5D\e[1;5D} {#undelay {move};#cursor macro reset;w;w}
- #macro {\e[1;5A\e[1;5B} {#undelay {move};#cursor macro reset;u}
- #macro {\e[1;5B\e[1;5A} {#undelay {move};#cursor macro reset;u}
- #macro {\e[1;5C\e[1;5D} {#undelay {move};#cursor macro reset;d}
- #macro {\e[1;5D\e[1;5C} {#undelay {move};#cursor macro reset;d}
- #macro {\e[1;5A\e[1;5C} {#undelay {move};#cursor macro reset;ne}
- #macro {\e[1;5C\e[1;5A} {#undelay {move};#cursor macro reset;ne}
- #macro {\e[1;5B\e[1;5C} {#undelay {move};#cursor macro reset;se}
- #macro {\e[1;5C\e[1;5B} {#undelay {move};#cursor macro reset;se}
- #macro {\e[1;5D\e[1;5B} {#undelay {move};#cursor macro reset;sw}
- #macro {\e[1;5B\e[1;5D} {#undelay {move};#cursor macro reset;sw}
- #macro {\e[1;5D\e[1;5A} {#undelay {move};#cursor macro reset;nw}
- #macro {\e[1;5A\e[1;5D} {#undelay {move};#cursor macro reset;nw}
- #nop -------------------------------------------------------------------------
- #nop Place tells in the top 5 lines of the screen
- #nop -------------------------------------------------------------------------
- #VARIABLE {COMMS} {}
- #ACTION {~%1 tells you %2}
- {
- addtowin %1 tells you %2
- }
- #ACTION {~%1 chats %2}
- {
- addtowin %1 chats %2
- }
- #ALIAS {addtowin}
- {
- #format temp {%w} {%0};
- #loop {1} {&temp[]} {cnt}
- {
- #list COMMS ins -1 {$temp[$cnt]}
- };
- #while {&COMMS[] > 100}
- {
- #list COMMS del 1
- };
- showwin
- }
- #ALIAS {showwin}
- {
- #screen clear square 1 1 5 -1;
- #list temp create $COMMS[-5..-1];
- #loop {1} {&temp[]} {cnt}
- {
- #regexp {$temp[$cnt]} {^$}
- {
- #nop
- };
- #else
- {
- #line ignore #showme {$temp[$cnt]} {$cnt} {1}
- }
- }
- }
- #ALIAS {test}
- {
- #split 5 1;
- #showme <138>Bubba tells you 'hello';
- #showme <158>Pamela chats 'bye';
- }
- #nop -------------------------------------------------------------------------
- #nop Display two sessions next to each other
- #nop -------------------------------------------------------------------------
- #event {SCREEN RESIZE}
- {
- #var ROWS %0;
- #var COLS %1;
- #draw line 1 {$COLS / 2} -3 {$COLS / 2};
- #left #screen scroll 1 1 -3 {$COLS / 2 - 1};
- #right #screen scroll 1 {$COLS / 2 + 1} -3 -1;
- }
- #event {PROGRAM START}
- {
- #screen raise SCREEN RESIZE;
- #ses right localhost 4321;
- #ses left localhost 4321;
- }
- #event {SESSION CREATED}
- {
- #var name %0;
- }
- #event {SESSION ACTIVATED}
- {
- #gts #var active %0;
- }
- #event {RECEIVED OUTPUT}
- {
- #if {"@gts{$active}" == "$name"}
- {
- #return;
- };
- #switch {"$name"}
- {
- #case {"left"} {#draw Red boxed foreground buffer 1 1 -3 {$COLS / 2 - 1};};
- #case {"right"}{#draw Red boxed foreground buffer 1 {$COLS / 2 + 1} -3 -1};
- };
- }
- #nop -------------------------------------------------------------------------
- #nop Follow the group leader on the map.
- #nop -------------------------------------------------------------------------
- #var short_dir
- {
- {north}{n}
- {northeast}{ne}
- {east}{e}
- {southeast}{se}
- {south}{s}
- {southwest}{sw}
- {west}{w}
- {northwest}{nw}
- }
- #action {%1 walks %2.$}
- {
- #var {follow_targets[%1]} {$short_dir[%2]}
- }
- #action {^You follow %1.$}
- {
- #if {&follow_targets[%1]}
- {
- #map move $follow_targets[%1]
- }
- }
- #nop -------------------------------------------------------------------------
- #nop Use mouse click to change the input cursor's position.
- #nop -------------------------------------------------------------------------
- #config mouse on
- #split
- #event {SHORT-CLICKED MOUSE BUTTON ONE -1}
- {
- #cursor position %1
- }
- #nop -------------------------------------------------------------------------
- #nop Move the VT100 map from the top to the right of the screen
- #nop -------------------------------------------------------------------------
- #map create
- #map flag vtmap
- #map flag unicode
- #map goto 1
- #split 0 1 0 -80;
- #map offset 1 82 -5 -1
- #screen resize horizontal 120
- #nop -------------------------------------------------------------------------
- #nop Add clickable session tabs at the top of the screen
- #nop -------------------------------------------------------------------------
- #event {PROGRAM START}
- {
- #split 3 1;
- #config mouse on;
- #var active gts;
- session_activated gts;
- }
- #event {SESSION CREATED}
- {
- #gts session_activated %0
- }
- #event {SESSION ACTIVATED}
- {
- #gts session_activated %0
- }
- #alias {session_activated}
- {
- #line sub esc #var sessions[$active] {<138>\e]68;2;TABS;#$active\a\e[4;24m$active\e[24m};
- #var active {%0};
- #line sub esc #var sessions[%0] {<128>\e]68;2;TABS;#nop\a\e[4;24m%0\e[24m};
- #draw foreground Azure table 1 1 3 -1 {$sessions[%*]}
- }
- #event {PRESSED SECURE LINK TABS MOUSE BUTTON ONE}
- {
- %4
- }
- #nop -------------------------------------------------------------------------
- #nop Add basic MXP link and color handling
- #nop -------------------------------------------------------------------------
- #config mouse on
- #event {IAC DO MXP}
- {
- #send {\xFF\xFB\x5B\}
- }
- #function {mxp_link}
- {
- #line sub esc #var result {\e]68;1;%1;%2\a\e[4m%3\e[24m}
- }
- #act {~\e[1z<VERSION>} {#send {\e[4z<VERSION MXP=1.0 CLIENT=TINTIN++ VERSION=2.02.04>}}
- #act {~\e[1z<SUPPORT>} {#send {\e[4z<SUPPORTS +SEND +COLOR>}}
- #sub {~\e[4z<COLOR #%1>%2\e[4z</COLOR>} {<f%1>%2<900>}
- #sub {~\e[4z<SEND HREF="%1">%2\e[4z</SEND>} {@mxp_link{MXP;%1;%2}}
- #event {PRESSED LINK MXP MOUSE BUTTON ONE}
- {
- #send {%4}
- }
- #sub {~\e[4z{<RExits>|</RExits>|<RDesc>|</RDesc>|<PROMPT>|</PROMPT>|<RName>|</RName>}} {}
- #sub {~\e[4z<RNum %d />} {}
- #sub {<} {<}
- #sub {>} {>}
- #nop -------------------------------------------------------------------------
- #nop Example script for using #list indexing.
- #nop -------------------------------------------------------------------------
- #var players[1] {{name}{bubba}{age}{15}{level}{24}}
- #var players[2] {{name}{pamela}{age}{19}{level}{2}}
- #var players[3] {{name}{ronald}{age}{69}{level}{13}}
- #var players[4] {{name}{bubba}{age}{26}{level}{30}}
- #var players[5] {{name}{ronald}{age}{11}{level}{31}}
- #alias {display}
- {
- #var out {};
- #loop 1 &players[] cnt
- {
- #var out[$cnt] {$cnt;$players[+$cnt][name];$players[+$cnt][age];$players[+$cnt][level]};
- };
- #draw scroll grid table 1 1 2+&players[]*2 80 $out[%*]
- }
- #alias {test1}
- {
- #list players index name;
- #list players order;
- display
- }
- #alias {test2}
- {
- #list players index name;
- #list players order;
- #list players reverse;
- display;
- }
- #alias {test3}
- {
- #list players index name;
- #list players order;
- #list players index level;
- #list players order;
- display
- }
- #nop -------------------------------------------------------------------------
- #nop This creates two input lines that can be switched between using the tab
- #nop key.
- #nop -------------------------------------------------------------------------
- #line quiet #split
- #macro {\t} {inputswitch}
- #var input[width] 1
- #alias {inputswitch}
- {
- #cursor get {input[current]};
- #cursor clear;
- #cursor set {$input[buffer2]};
- #cursor end;
- #var input[buffer2] {$input[current]};
- #draw Ebony tile {-1-$input[width]} 1 -2 -1 {$input[buffer2]}
- }
- #nop -------------------------------------------------------------------------
- #nop This allows for split screen scroll back, just use the mouse wheel in
- #nop the upper half of the screen.
- #nop -------------------------------------------------------------------------
- #event {PROGRAM START}
- {
- #config mouse on;
- #var SCROLL[MODE] 0;
- #split 0 1;
- #screen raise SCREEN RESIZE;
- }
- #event {SCREEN RESIZE}
- {
- #var ROWS %0;
- #var COLS %1;
- #screen get SCROLL_TOP_ROW SCROLL[TOP_ROW];
- #screen get SCROLL_TOP_COL SCROLL[TOP_COL];
- #screen get SCROLL_BOT_ROW SCROLL[BOT_ROW];
- #screen get SCROLL_BOT_COL SCROLL[BOT_COL];
- }
- #EVENT {SCROLLED MOUSE WHEEL UP}
- {
- #if {$SCROLL[MODE] == 0}
- {
- #if {%0 < $ROWS / 2}
- {
- #var SCROLL[MODE] 1;
- #var SCROLL[OLD_ROW] $SCROLL[BOT_ROW];
- #math SCROLL[BOT_ROW] $SCROLL[OLD_ROW] / 2;
- #var BUFFER {};
- #screen scroll $SCROLL[TOP_ROW] $SCROLL[TOP_COL] $SCROLL[BOT_ROW] $SCROLL[BOT_COL];
- #draw red teed line $SCROLL[BOT_ROW]+1 $SCROLL[TOP_COL] $SCROLL[BOT_ROW]+1 $SCROLL[BOT_COL];
- #screen clear square $SCROLL[BOT_ROW]+2 $SCROLL[TOP_COL] $SCROLL[OLD_ROW] $SCROLL[BOT_COL];
- };
- };
- #if {$SCROLL[MODE] == 1}
- {
- #buffer up 1
- }
- }
- #EVENT {SCROLLED MOUSE WHEEL DOWN}
- {
- #if {$SCROLL[MODE] == 1}
- {
- #if {%0 < $ROWS / 2}
- {
- #buffer down 1;
- #buffer info save SCROLL[INFO];
- #if {$SCROLL[INFO][LINE] == -1}
- {
- #var SCROLL[MODE] 0;
- #var SCROLL[BOT_ROW] $SCROLL[OLD_ROW];
- #split 0 1;
- #buffer end;
- }
- }
- }
- }
- #event {RECEIVED LINE}
- {
- #if {$SCROLL[MODE] == 1}
- {
- #if {&BUFFER[] > $ROWS}
- {
- #list BUFFER del 1
- };
- #list BUFFER add {%0};
- #draw tile $SCROLL[BOT_ROW]+2 $SCROLL[TOP_COL] $SCROLL[OLD_ROW] $SCROLL[BOT_COL] $BUFFER[%*];
- }
- }
- #nop -------------------------------------------------------------------------
- #nop This is a script to connect to Gemstone 4.
- #nop Visit play.net/gs4, login, and hit the 'GO PLAY' button.
- #nop Select the Storm Front radio button and hit the 'GO PLAY' button.
- #nop Save the .sal file to your script directory and name it gemstone.sal.
- #nop Use the 'gemstone' alias to connect.
- #nop -------------------------------------------------------------------------
- #alias {gemstone}
- {
- #var gemstone {};
- #line oneshot #action {^GAMEHOST=%*} {#var gemstone[host] %%1};
- #line oneshot #action {^GAMEPORT=%*} {#var gemstone[port] %%1};
- #line oneshot #action {^KEY=%*} {#var gemstone[key] %%1};
- #scan txt gemstone.sal;
- #if {&gemstone[] != 3}
- {
- #showme Failed to load gemstone.sal file.;
- #return
- };
- #ses gemstone $gemstone[host] $gemstone[port];
- #send {$gemstone[key]};
- #send {>/FE:JAVA}
- }
- #nop -------------------------------------------------------------------------
- #nop Start a dated log file in the logs directory when a session connects. See
- #nop #help time for the available date options for #format %t.
- #nop -------------------------------------------------------------------------
- #event {SESSION CONNECTED}
- {
- #format date %t %Y-%m-%d-%H-%M;
- #log append logs/%0_$date.log
- }
- #nop -------------------------------------------------------------------------
- #nop Sometimes an error doesn't give enough information and it's useful to
- #nop see the calling script.
- #nop -------------------------------------------------------------------------
- #event {RECEIVED ERROR}
- {
- #echo <118>%h { TOKENIZER };
- #info tokenizer -1;
- #echo <118>%h
- }
- #nop -------------------------------------------------------------------------
- #nop It can be annoying to have short commands clog up the command history.
- #nop This script will remove commands shorter than 3 letters.
- #nop -------------------------------------------------------------------------
- #event {HISTORY UPDATE}
- {
- #if {{%0} != {%+3*%*}}
- {
- #history delete
- }
- }
- #nop -------------------------------------------------------------------------
- #nop Run to a room when you click it on the vtmap.
- #nop -------------------------------------------------------------------------
- #config mouse on
- #event {MAP SHORT-CLICKED MOUSE BUTTON ONE}
- {
- #map run {%0} 0.25
- }
- #nop -------------------------------------------------------------------------
- #nop zMUD has the feature where your last command is highlighted and any input
- #nop other than enter will clear it. This scripts reproduces this behavior.
- #nop -------------------------------------------------------------------------
- #CONFIG REPEAT_ENTER ON
- #event {HISTORY UPDATE}
- {
- #delay 0 #line ignore #showme {<aaf><FFF><788>%0<088>} {-1};
- #var last_input {%0}
- }
- #event {PROCESSED KEYPRESS}
- {
- #if {{%1} != {10} && {$last_input} !== {}}
- {
- #var last_input {};
- #line ignore #showme {} {-1};
- #cursor end;
- #history insert {}
- }
- }
- #nop -------------------------------------------------------------------------
- #nop
- #nop -------------------------------------------------------------------------
|