In the last millennium, I developed a custom Hack & Slash gaming client for Windows ’98, because I wanted to embed both music and sound effects to enhance online play. The result was a big hit among its players. But as a Linux user, I could not get that cool feature… that is, until today.
The result is this Tcl/Expect script (listed below). First, you will need to make certain you have these dependent packages installed:
yum install expect fluid-soundfont-lite-patches timidity++
Next, you will need to fetch the multimedia files into your home directory:
svn co https://robert.hurst-ri.us/svn/rpgd/trunk/snd Music/hack
Then, setup your telnet session attributes in .telnetrc to automatically load when you connect:
robert.hurst-ri.us mode character set crlf off unset escape
And last, simply copy/paste the script below into an executable text file of your choice and run it.
#!/usr/bin/expect -f
# play a MIDI file
proc midi s {
set mid [string range $s 3 end-3]
set bool [string range $s end-1 end-1]
set cmd "killall playmus 2> /dev/null; playmus -v 25 Music/hack/$mid.mid &> /dev/null &"
system $cmd
}
# play a WAVE file
proc wave s {
set wav [string range $s 3 end-3]
set bool [string range $s end-1 end-1]
set cmd "play Music/hack/$wav.wav &> /dev/null"
if {$bool == 0} { set cmd "$cmd &" }
system $cmd
}
# connect to the game server ...
log_user 0
spawn telnet robert.hurst-ri.us 7000
wave "...dungeon;0."
expect_background {
-re "\033\\\[\\\{.*\\\}" { midi $expect_out(0,string); return }
-re "\033\\\[\\\[.*\\\]" { wave $expect_out(0,string); return }
-re "(.*)" { send_user -- $expect_out(0,string); }
}
interact






