Help - Search - Members - Calendar
Full Version: Kmuddy
Achaea's Forums > Off-Topic > Tech Support > Client Help
_alex_
Ok, a long time ago, when I had a windows box, I had a char. Nexus was lovely, easy to use, woot! However, I then installed Ubuntu, waited a couple of years, and wanted a new character, and couldn't for the life of me get nexus working. Being a relative linux newbie, I had great trouble finding the info to:

1) choose a client
2) install the client
3) use the client

and, now I'm pretty happy with Kmuddy, I thought I'd post a 'this is hopefully what al the linux/achaea newbies are looking for' thread.

1) CHOOSE A CLIENT

I looked around, and there are several options out there for clients. Tinyfugue, Mudlet, Kmuddy, Kildclient, to mention the ones I've tried, as well as (under WINE) MUSHclient and Zmud. I've ended up on Kmuddy because I don't like running things under WINE, I had great trouble binding keys to macros with Mudlet and TF, and I ragequit kildclient having got frustrated with the obtuse language (aliases use $1, triggers use $_1, you need to add a {perleval => 1} to every alias in which you want to change a variable, and so on). This left Kmuddy.

2) INSTALL KMUDDY

Go HERE. If you try to install the ubuntu8.04 deb file, and you get an error which says 'could not find libartskde4.so.1' or similar, you need to compile from source. It's not hard - click 'compile from source', extract the download into your ~/Downloads/ folder, and do the following:

-open your terminal emulator of choice
-cd ~/Downloads/Kmuddy-0.8/ (assuming that's what the extracted file is called)
-./configure
-make
-sudo make install (you'll need to type your password)

Hey presto! You're done.

3) USE KMUDDY

The manual is HERE. There are just a couple of things: to get at aliases, triggers &c, you need to go to profiles=>object editor and a seperate window will open. To change the colours you see (I found the dark green a bit too dark, for instance) go to Settings=>Global settings. Lastly, if you get messages saying that the log file can't be opened, go to profile=>mud preferences=>directories, and in the 'transcripts' box put /home/USER/kmuddytranscripts, or something (where USER is your username).

______________________

Also: here's an emotion I wrote, feedback and/or streamlining would be appreciated. If you type lk!, it sends 'em shouts excitedly ++ "LOOK!"', but if you specify a string after, for instance 'rapier', it searches through your inv, picks the first matching item, and sends 'em shouts excitedly, waving $3 in the air ++ "LOOK!"', where $3 is the long description of the item.

Alias: ^lk!(.*)
Type: regular expression
Code:
CODE
/if [strlen("$1") >2]
/set lk 1
/set lkmatch $1
ii $1
/else
em shouts excitedly ++ "LOOK!"
/endif


Trigger: You are wielding:
Type: exact match
Code:
CODE
/set lksearch 1


Trigger: ^[ ]+([a-zA-Z]+)(\d+):[ ]+(.*)in your (right|left) hand\.$
Type: Regular expression
Code:
CODE
/if [strpos("$matched",$lkmatch) >= 0]
/if [$lk == 1]
/if [$lksearch == 1]
em shouts excitedly, waving $3 in the air ++ "LOOK!"
/set lk 0
/set lksearch 0
/set lkmatch
/endif
/endif
/endif


Trigger: ^ ([a-zA-Z]+)(\d+)[ ]+(.*)$
Type: Regular expression
Code:
CODE
/if [strpos("$matched",$lkmatch) >= 0]
/if [$lk == 1]
/if [$lksearch == 1]
em shouts excitedly, waving $3 in the air ++ "LOOK!"
/set lk 0
/set lksearch 0
/set lkmatch
/endif
/endif
/endif


__________________
edit: Typo
Dexodro
Kmuddy is pretty great. Only thing I didn't like about it was its lack of elseif.

I've switched to Mudlet now, though, and prefer it.
_alex_
How come? I gave up on mudlet because I couldn't find a way to bind CTRL+key and ALT+key, which was a bit of a downer.
vadimuses
This has been fixed in trunk (while we come up with a better way of binding keys and not interfering with the common shortcuts).

For now, you'd do capture, ctrl, capture, button.
Dexodro
Sorry... but for my imperian character :

CODE
/if [ $stance == "Ein-Fasit" ]
sitara vertical $target
sitara lateral $target
sitara vertical $target
/else
/if [ $stance == "Vae-Sant" ]
sitara lateral $target
sitara vertical $target
sitara lateral $target
/else
/if [ $stance == "None" ]
sitara lateral $target
sitara lateral $target
sitara lateral $target
/else
/if [ $stance == "Gyanis" ]
sitara lateral $target
sitara lateral $target
sitara vertical $target
/else
/if [ $stance == "Laesan" ]
sitara crescentcut $target
sitara lateral $target
sitara vertical $target
/else
/if [ $stance == "Rizet" ]
sitara lateral $target
sitara vertical $target
sitara lateral $target
/endif
/endif
/endif
/endif
/endif
/endif


to a simpler :

CODE
if stance == "Ein-Fasit" then
  send("sitara vertical " .. target)
  send("sitara lateral " .. target)
  send("sitara vertical " .. target)
elseif stance == "Vae-Sant" then
  send("sitara lateral " .. target)
  send("sitara vertical " .. target)
  send("sitara lateral " .. target)
elseif stance == "None" then
  send("sitara lateral " .. target)
  send("sitara lateral " .. target)
  send("sitara lateral " .. target)
elseif stance == "Gyanis" then
  send("sitara lateral " .. target)
  send("sitara lateral " .. target)
  send("sitara vertical " .. target)
elseif stance == "Laesan" then
  send("sitara crescentcut " .. target)
  send("sitara lateral " .. target)
  send("sitara vertical " .. target)
elseif stance == "Rizet" then
  send("sitara lateral " .. target)
  send("sitara vertical " .. target)
  send("sitara lateral " .. target)
end


Elseifs are important to me sad.gif
_alex_
Why do you even need else, let alone elseif?

CODE
/if [ $stance == "Ein-Fasit" ]
sitara vertical $target;sitara lateral $target;sitara vertical $target
/endif
/if [ $stance == "Vae-Sant" ]
sitara lateral $target;sitara vertical $target;sitara lateral $target
/endif
/if [ $stance == "None" ]
sitara lateral $target;sitara lateral $target;sitara lateral $target
/endif
/if [ $stance == "Gyanis" ]
sitara lateral $target;sitara lateral $target;sitara vertical $target
/endif
/if [ $stance == "Laesan" ]
sitara crescentcut $target;sitara lateral $target;sitara vertical $target
/endif
/if [ $stance == "Rizet" ]
sitara lateral $target;sitara vertical $target;sitara lateral $target
/endif
Dexodro
That's too many ifs. tongue.gif
vadimuses
Efficiency.
Gorlasintan
QUOTE (Dexodro @ Jun 23 2009, 10:28 AM) *
That's too many ifs. tongue.gif

CODE
#SWITCH (@stance)
  ("Ein-Fasit")
    {
    sitara vertical @target
    sitara lateral @target
    sitara vertical @target
    }
  ("Vae-Sant")
    {
    sitara lateral @target
    sitara vertical @target
    sitara lateral @target
    }
  ("None")
    {
    sitara lateral @target
    sitara lateral @target
    sitara lateral @target
    }
  ("Gyanis")
    {
    sitara lateral @target
    sitara lateral @target
    sitara vertical @target
    }
  ("Laesan")
    {
    sitara crescentcut @target
    sitara lateral @target
    sitara vertical @target
    }
  ("Rizet")
    {
    sitara lateral @target
    sitara vertical @target
    sitara lateral @target
    }


I did it with no ifs. Do I win?

EDIT: Omg DT's The Root of All Evil on their live album Score is 50 kinds of epic. omg.
Trevize
QUOTE (_alex_ @ Jun 23 2009, 11:25 AM) *
Why do you even need else, let alone elseif?

If you have multiple ifs, it checks each. If you do an if-elseif-else it will only go far enough to find a match. Faster. Plus an else allows catching of exceptions.
Dusty
QUOTE (_alex_ @ Jun 23 2009, 10:25 AM) *
Why do you even need else, let alone elseif?

To expand on Trevize's point...
CODE
/if [ $stance == "Ein-Fasit" ]
sitara vertical $target;sitara lateral $target;sitara vertical $target
/elseif
/if [ $stance == "Vae-Sant" ]
sitara lateral $target;sitara vertical $target;sitara lateral $target
/elseif
/if [ $stance == "None" ]
sitara lateral $target;sitara lateral $target;sitara lateral $target
/elseif
/if [ $stance == "Gyanis" ]
sitara lateral $target;sitara lateral $target;sitara vertical $target
/elseif
/if [ $stance == "Laesan" ]
sitara crescentcut $target;sitara lateral $target;sitara vertical $target
/else
/if [ $stance == "Rizet" ]
sitara lateral $target;sitara vertical $target;sitara lateral $target
/endif

Why check for more than you need? If your stance is Vae-Sant, then there is absolutely no need to do checks for the rest, therefor you're wasting processor power running scripts that will never have even a remote chance of being needed at the time.
When you start working with large loops and such, you definitely don't want to sit running 5 loops at the same time when you could in actuality only be running the one that you actually need.
_alex_
QUOTE (vadimuses @ Jun 23 2009, 04:46 PM) *
Efficiency.



@me: you have much to learn, young padawan
Bannin
script name: blarg
CODE
#!/usr/bin/perl
use Switch;

switch ($ARGV[0]) { # I think?
case "Ein-Fasit"    { print "do\nthings\n" }
case "Vae-Sant" { print "do\nstuff\n" }
}


alias name: blarg
body: /exec blarg $1




...right?
vadimuses
Yeah, that goes.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Invision Power Board © 2001-2009 Invision Power Services, Inc.