The MUD Client "How do I do that?" thread

Here we discussed clients, mappers, tunnels and their settings.
Locked
pinion
Posts: 33
Joined: Wed May 28, 2008 4:02 am

The MUD Client "How do I do that?" thread

Post by pinion »

Let this thread serve as a place to ask questions about triggers and scripting etc via MUD clients. My questions:

In ZMUD, how do I make a reply trigger/alias/macro whatever?

Furthermore, in ZMUD, how do I make a trigger to group someone when they raise their hand?
Jahara
Posts: 228
Joined: Sat Feb 23, 2008 9:55 pm
Location: Indiana, USA
Contact:

Re: The MUD Client "How do I do that?" thread

Post by Jahara »

I moved the topic to the other forum since it isn't really game-related, but a general client question thread. Here are my REALLY old settings from back in '99:

Code: Select all

#ALIAS loot+ {#T+ Autoloot} {Auto}


#ALIAS loot- {#T- Autoloot} {Auto}


#ALIAS bash+ {#T+ Bash} {Auto}


#ALIAS bash- {#T- Bash} {Auto}


#ALIAS flee+ {#T+ AutoFlee} {Auto}


#ALIAS flee- {#T- AutoFlee} {Auto}


#ALIAS assist+ {#T+ AutoAssist} {Auto}


#ALIAS assist- {#T- AutoAssist} {Auto}


#ALIAS ta {#VAR target %1;#SH ~[ ~@target set to {%1}. ~]} {target}


#ALIAS mmt {cast 'magic missile' @target} {target}


#ALIAS ctt {cast 'chill touch' @target} {target}


#ALIAS bht {cast 'burning hands' @target} {target}


#ALIAS sgt {cast 'shocking grasp' @target} {target}


#ALIAS lbt {cast 'lightning bolt' @target} {target}


#ALIAS cpt {cast 'colour spray' @target} {target}


#ALIAS fbt {cast 'fireball' @target} {target}


#ALIAS qkt {cast 'earthquake' @target} {target}


#ALIAS sht {shoot @target} {target}


#ALIAS kk {k @target} {target}


#ALIAS bb {bash @target} {target}


#ALIAS td {#VAR door %1;#SH ~[ ~@door set to {%1}. ~]} {door}


#ALIAS od {open @door} {door}


#ALIAS cd {close @door} {door}


#ALIAS tt {#VAR track %1;#SH ~[ ~@track set to {%1}. ~]} {track}


#ALIAS tr {track @track} {track}


#ALIAS butchermeat {#IF (%1 < 11) {#SH;#SH Butch;#COLOR 3;#LOO 1,%1 {butcher %{i}.corpse};#SH Done!;#COLOR 3} {#SH For Safety Reasons ButcherMeat only allows 10 max butchers.;#COLOR 4}} {CookMeat}


#ALIAS cookmeat {#IF (%1 < 11) {#SH;#SH CookMeat;#COLOR 3;#LOO 1,%1 {cook %{i}.meat};#SH Done!;#COLOR 3} {#SH For Safety Reasons CookMeat only allows 10 max cookings.;#COLOR 4}} {CookMeat}


#ALIAS ber {cha moo ber} {MoodAlertCast}


#ALIAS a {cha moo agg} {MoodAlertCast}


#ALIAS bra {cha moo bra} {MoodAlertCast}


#ALIAS norm {cha moo nor} {MoodAlertCast}


#ALIAS pru {cha moo pru} {MoodAlertCast}


#ALIAS wim {cha moo wim} {MoodAlertCast}


#ALIAS att {cha ale att} {MoodAlertCast}


#ALIAS vig {cha ale vig} {MoodAlertCast}


#ALIAS nora {cha ale nor} {MoodAlertCast}


#ALIAS par {cha ale par} {MoodAlertCast}


#ALIAS csq {cha spe qui} {MoodAlertCast}


#ALIAS csf {cha spe fas} {MoodAlertCast}


#ALIAS csn {cha spe nor} {MoodAlertCast}


#ALIAS cst {cha spe tho} {MoodAlertCast}


#TRIGGER {@Leader sends * sprawling with a powerful bash.} {assist @Leader} {AutoAssist} 517


#TRIGGER {@Leader*crush} {assist @Leader} {AutoAssist} 517


#TRIGGER {* is dead! R.I.P.} {assist @Leader} {AutoAssist} 517


#TRIGGER {PANIC! You couldn't escape!} {FLEE} {AutoFlee} 517


#TRIGGER {PANIC! You can't quit the fight!} {FLEE} {AutoFlee} 517


#TRIGGER {R.I.P.} {get coins all.corpse;#T+ SpamCheck} {AutoLoot} 517


#TRIGGER {You fall to the ground.} {#COLOR 4;stand} {Bash} 517


#TRIGGER {(%w) seems to have recovered * senses.} {bash} {Bash} 517


#TRIGGER {You * hungry.} {#COLOR 6} {Color} 517


#TRIGGER {You * thirsty.} {#COLOR 6} {Color} 517


#TRIGGER {You are now a member of (&Leader)'s group.} {#COLOR 6} {Group} 517


#TRIGGER {Slip! You fumble... and hit yourself.} {#COLOR 4;assist @Leader} {Group} 517


#TRIGGER {Ooops! You fumble... and hit yourself HARD!} {#COLOR 4;assist @Leader} {Group} 517


#TRIGGER {You are rescued by (&temp), you are confused!} {#COLOR 6;assist @temp} {Group} 517


#TRIGGER {* joins (@Leader)'s fight.} {#COLOR 2;assist @Leader} {Group} 517


#TRIGGER {You feel sleepy.} {#COLOR 5;st} {Life} 517


#TRIGGER {Your limbs are becoming cold and heavy, your eyelids close.} {#COLOR 5;wake;st} {Life} 517


#TRIGGER {The drowsiness completely overwhelms you.} {#COLOR 5;wake;st} {Life} 517


#TRIGGER {You feel very sleepy... zzzzzz} {#COLOR 5;wake;st} {Life} 517


#TRIGGER {You feel less tired.} {#COLOR 2;wake;st} {Life} 517


#TRIGGER {You begin to see scars fade away and a feeling of health comes over you.} {#COLOR 2} {Life} 517


#TRIGGER {You are too exhausted.} {#COLOR 6} {Life} 517


#TRIGGER {You need to climb to go there.} {#COLOR 3} {Life} 517


#TRIGGER {You need to swim to go there} {#COLOR 3} {Life} 517


#TRIGGER {You feel very bad, you scratch yourself.} {#COLOR 4} {Life} 517


#TRIGGER {%d/%d hit, %d/%d mana and %d/%d moves.} {#nomap} {Nomap} 517


#TRIGGER {Saving %w.} {#nomap} {Nomap} 517


#TRIGGER {^A * stands here, ridden by you} {#nomap} {Nomap} 517


#TRIGGER {^A * is standing here, ridden by you} {#nomap} {Nomap} 517


#TRIGGER {%w tells you '*} {#nomap} {Nomap} 517


#TRIGGER {%w says '*} {#nomap} {Nomap} 517


#TRIGGER {%w yells '*} {#nomap} {Nomap} 517


#TRIGGER {%w narrates '*} {#nomap} {Nomap} 517


#TRIGGER {%w sings '*} {#nomap} {Nomap} 517


#TRIGGER {%w shouts '*} {#nomap} {Nomap} 517


#TRIGGER {&FleeingPerson panics, and attempts to flee.} {#if(left%(@FleeingPerson,2)!="a ")(#T+PersonFlee)();#if(left%(@FleeingPerson,3)!="an ")(#T+PersonFlee)()} {PersonTryFlee} 517


#TRIGGER {@FleeingPerson leaves (%w)} {tell @FleeingPerson You fled %1!;#GAG;#T- PersonFlee;#T+ SpamCheck} {PersonFlee} 517


#TRIGGER {(%d)/(%d) hit, (%d)/(%d) mana, and (%d)/(%d) moves.} {emote reports: %1/%2 hit     %3/%4 mana     %5/%6 moves;#T- ScorePrint} {ScorePrint} 517


#TRIGGER {(%d)/(%d) hit, and (%d)/(%d) moves.} {emote reports:   %1/%2 hit     %3/%4 moves;#T- ScorePrint} {ScorePrint} 517


#TRIGGER {No-one by that name here...} {#GAG;#T- Spamcheck} {SpamCheck} 517


#TRIGGER {You can't tell!} {#GAG;#T- SpamCheck} {SpamCheck} 517


#TRIGGER {You can't find a coins in any corpse.} {#GAG;#T- SpamCheck} {SpamCheck} 517


#TRIGGER {You don't see any corpse to get things from.} {#GAG;#T- SpamCheck} {SpamCheck} 517


#TRIGGER {You can't find any coins.} {#GAG;#T- SpamCheck} {SpamCheck} 517


#TRIGGER {^Needed: (%d) xp, (%d) tp.} {emote needs %1 xp and %2 tp to level.;#T- StatsPrint} {StatsPrint} 517


#TRIGGER {^Needed: (%d) xp, (%d),(%d) tp.} {emote needs %1 xp and %2,%3 tp to level.;#T- StatsPrint} {StatsPrint} 517


#TRIGGER {^Needed: (%d),(%d) xp, (%d) tp.} {emote needs %1,%2 xp and %3 tp to level.;#T- StatsPrint} {StatsPrint} 517


#TRIGGER {^Needed: (%d),(%d) xp, (%d),(%d) tp.} {emote needs %1,%2 xp and %3,%4 tp to level.;#T- StatsPrint} {StatsPrint} 517


#TRIGGER {^Needed: (%d),(%d),(%d) xp, (%d) tp.} {emote needs %1,%2,%3 xp and %4 tp to level.;#T- StatsPrint} {StatsPrint} 517


#TRIGGER {^Needed: (%d),(%d),(%d) xp, (%d),(%d) tp.} {emote needs %1,%2,%3 xp and %4,%5 tp to level.;#T- StatsPrint} {StatsPrint} 517


#TRIGGER {^Needed: (%d),(%d),(%d) xp, (%d),(%d),(%d) tp.} {emote needs %1,%2,%3 xp and %4,%5,%6 tp to level.;#T- StatsPrint} {StatsPrint} 517


#TRIGGER {^Needed: (%d),(%d) xp, (%d),(%d),(%d) tp.} {emote needs %1,%2 xp and %3,%4,%5 tp to level.;#T- StatsPrint} {StatsPrint} 517


#TRIGGER {^Needed: (%d) xp, (%d),(%d),(%d) tp.} {emote needs %1 xp and %2,%3,%4 tp to level.;#T- StatsPrint} {StatsPrint} 517


#TRIGGER {sc* @} {#T+ ScorePrint} {Stuff} 517


#TRIGGER {sc* !} {#T+ ScorePrint} {Stuff} 517


#TRIGGER {stat @} {#T+ StatsPrint} {Stuff} 517


#TRIGGER {stat !} {#T+ StatsPrint} {Stuff} 517


#TRIGGER {&temp leaves east.$} {#GAG;#SH @temp leaves E A S T.} {Modifier} 517


#TRIGGER {&temp leaves west.$} {#GAG;#SH @temp leaves W E S T.} {Modifier} 517


#TRIGGER {&temp leaves north.$} {#GAG;#SH @temp leaves N O R T H.} {Modifier} 517


#TRIGGER {&temp leaves south.$} {#GAG;#SH @temp leaves S O U T H.} {Modifier} 517


#TRIGGER {&temp leaves down.$} {#GAG;#SH @temp leaves D O W N.} {Modifier} 517


#TRIGGER {&temp leaves up.$} {#GAG;#SH @temp leaves U P.} {Modifier} 517


#TRIGGER {&temp has arrived from the east.$} {#GAG;#SH @temp has arrived from the E A S T.} {Modifier} 517


#TRIGGER {&temp has arrived from the west.$} {#GAG;#SH @temp has arrived from the W E S T.} {Modifier} 517


#TRIGGER {&temp has arrived from the north.$} {#GAG;#SH @temp has arrived from the N O R T H.} {Modifier} 517


#TRIGGER {&temp has arrived from the south.$} {#GAG;#SH @temp has arrived from the S O U T H.} {Modifier} 517


#TRIGGER {&temp has arrived from below.$} {#GAG;#SH @temp has arrived from B E L O W.} {Modifier} 517


#TRIGGER {&temp has arrived from above.$} {#GAG;#SH @temp has arrived from A B O V E.} {Modifier} 517


#TRIGGER {&temp leaves east riding &temp2.$} {#GAG;#SH @temp leaves E A S T riding @temp2} {Modifier} 517


#TRIGGER {&temp leaves west riding &temp2.$} {#GAG;#SH @temp leaves W E S T riding @temp2} {Modifier} 517


#TRIGGER {&temp leaves north riding &temp2.$} {#GAG;#SH @temp leaves N O R T H riding @temp2} {Modifier} 517


#TRIGGER {&temp leaves south riding &temp2.$} {#GAG;#SH @temp leaves S O U T H riding @temp2} {Modifier} 517


#TRIGGER {&temp leaves down riding &temp2.$} {#GAG;#SH @temp leaves D O W N riding @temp2} {Modifier} 517


#TRIGGER {&temp leaves up riding &temp2.$} {#GAG;#SH @temp leaves U P riding @temp2} {Modifier} 517


#TRIGGER {&temp has arrived from the east riding &temp2.$} {#GAG;#SH @temp has arrived from the E A S T riding @temp2} {Modifier} 517


#TRIGGER {&temp has arrived from the west riding &temp2.$} {#GAG;#SH @temp has arrived from the W E S T riding @temp2} {Modifier} 517


#TRIGGER {&temp has arrived from the north riding &temp2.$} {#GAG;#SH @temp has arrived from the N O R T H riding @temp2} {Modifier} 517


#TRIGGER {&temp has arrived from the south riding &temp2.$} {#GAG;#SH @temp has arrived from the S O U T H riding @temp2} {Modifier} 517


#TRIGGER {&temp has arrived from below riding &temp2.$} {#GAG;#SH @temp has arrived from B E L O W riding @temp2} {Modifier} 517


#TRIGGER {&temp has arrived from above riding &temp2.$} {#GAG;#SH @temp has arrived from A B O V E riding @temp2} {Modifier} 517


#TRIGGER {The sun sets *.$} {#COLOR 3} {Set} 517


#TRIGGER {The * has begun.$} {#COLOR 3} {Set} 517


#TRIGGER {The sun rises *.$} {#COLOR 3} {Set} 517


#TRIGGER {The &door is closed.$} {#GAG;#ECHO The @door seems to be closed. ~[ @door ~]} {Set} 517


#TRIGGER {The &door seems to be closed.$} {#GAG;#SH The @door seems to be closed. ~[ @door ~]} {Set} 517


#TRIGGER {&temp - A &temp2 '(&door)'$} {#GAG;#echo @temp - A @temp2 '@door'. ~[ @door ~]} {Set} 517


#TRIGGER {^Needed: * xp} {#ECHO Target: @target, Track: @track, Door: @door} {Set} 517


Apparently there are some illegal actions in there from when I was a noob. But I think your answer is somewhere in there :-P
coyote
Posts: 22
Joined: Tue May 20, 2008 8:59 pm

Re: The MUD Client "How do I do that?" thread

Post by coyote »

pinion wrote:Let this thread serve as a place to ask questions about triggers and scripting etc via MUD clients. My questions:

In ZMUD, how do I make a reply trigger/alias/macro whatever?

Furthermore, in ZMUD, how do I make a trigger to group someone when they raise their hand?
1: type #alias {aliasname} {commands to be executed} or #action {string} {commands to be executed} {groupname if you want, not a must-have though}, but to do something like a reply alias, you will need to both use triggers and variables, in addition to your alias itself. I wouldn't recommend trying this yourself if you can't do a raise/group trigger of the top of your head.

2: #action {%1 raises handn blah blah} {group %1} {autogroup}
...The "autogroup" is the name of the grouping that trigger would be in, so at any time later you can do "T+ autogroup" or "#T- autogroup" to enable/disable them at will. Of course, you could turn the T +/- into an #alias, too.

3: If you're REALLY sharp, you can make a toggle on/off macro to turn on/off ALL your triggers that matter, so you don't exccidentally leave your ZBLAM trigger on in a pk battle and get nuked for it or something equally crummy. I HIGHLY recommend learning macros in ZMUD before anything else besides basic #aliasing, because they have already been created, and you can just overwrite the diagonal direction with something useful such as bash, or backstab @target, #2 shoot, etc. MUME doesn't use NW/NE/SW/SE, that leaves you with 11 different potential macro commands at your fingertips on your numpad, which means that spammable combat commands, ride/lead, and flee are all very VERY accessible. :ugeek:

my numpade currently uses:

Code: Select all

NUM5 = flee
NUM1 = bash/backstab @target (depending on character)
NUM7 = rescue @ward / reco (recover arrows)
NUM3 = clo exit
NUM9 = clo exit
NUM0 = hit @target / #2 shoot
NUM"/" = ride @one (the in and out of label I give my preferred mount)
NUM"*" = lead
DEC = tt   (tt is #alias {label target}, which sets whatever I'm hitting as (target)
Here's the quick and dirty of what you'd want to set up to do a reply alias.
1: make an alias called "lastteller" or something similar.
2: make a trigger along the lines of "#action {%1 tells you '%2} {#var lastteller %1}
3: make an alias "#alias reply {tel @lastteller }

-that's it. Now, you'll end up with some issues eventually using this simplistic of a reply alias, since if anyone sends you a tell (including mobs and faketells) while you're typing a reply, it'll switch your lastteller variable before you're doing typing a sentence. To combat this, you can set up a second alias and variable, (I use "tt") which will keep track of the last person YOU sent a tell to. something along the lines of "#var lasttelltarget" and then add the command "#var lasttelltarget @lastteller" IMMEDIATELY BEFORE the "#var lastteller %1" command in your action you already made, seperated by a semicolon.

variable names don't matter, but I'd really recommend making them long and descriptive over short and easy to lose track of. You never TYPE your variable names, but rather use aliases to manually set them if you have to manually enter them in.

Here's a copy of my experience-gained-reporting trigger, which does nothing but echo the amount of exp gained since the last kill I gained credit for. It's a pretty (I think) clear example of the same thing you'd do for your "reply" alias setup. I don't use a reply alias anymore, but you could easily copy-paste most of this to cobble together your own.

Code: Select all

#action {You receive your share of experience.} {info %M exp: %X tp: %T}
#action {Coyote exp: %1 tp: %2} {#var exptill %1;#var tptill %2;#gag;#math expd {@expold - @exptill};#echo {_____===== EXPERIENCE GAINED: @expd ====____};#var expold @exptill}
This is a pretty sloppy trigger setup, but it works a treat more than 90% of the time, and since I already track tps till next level, I could easily add that in if I felt a need at a later time.



..if you have any ZMud-related questions I can handle some low-level and mid-level stuff, I've used ZMud for like 12 or 14 years, and I used to be a programming major in college. My code may be sloppy, drunk, or ponderous, but it works! :o

Characters: Bumblin, Dantes, Coyote
pinion
Posts: 33
Joined: Wed May 28, 2008 4:02 am

Re: The MUD Client "How do I do that?" thread

Post by pinion »

Thanks for the replies so far. I actually decided recently to switch to JMC and am still getting used to it. I like the simple no frills interface though, reminds me of a lean Google type style. Anyway, I looked through the JMC manual but must have missed it -- how do I create a targeting variable/alias in JMC? For example in zMUD I have my targeting setup like this:

I have a variable simply named target.
I have an alias called t that contains this string:
target=%1
#ECHO Target set to: %1

Finally I have some hotkeys like f1 f2 f3 which contain k @target, bash @target, etc.

Can someone explain how to create a similar setup in JMC?
Kuri
Posts: 11
Joined: Tue Mar 11, 2008 9:42 pm

Re: The MUD Client "How do I do that?" thread

Post by Kuri »

#alias t {#var target %1;#showme {Target set to: %1}}
#bind {F1}{k $target}
...
etc

This should work, but forgive me if it doesn't - I don't have access to a jmc client right now. The syntax could be a bit wrong, but I guess you can figure it out yourself.
pinion
Posts: 33
Joined: Wed May 28, 2008 4:02 am

Re: The MUD Client "How do I do that?" thread

Post by pinion »

That worked with a minor change, #bind is actually #hotkey

One annoying thing about the target is that if i do say a t orc, and its set to target orc, then I do just a t (nothing after it) it doesnt clear the target. If I hit f1 it still is hitting orc. Any idea how to make it so that when I type t with no arguments after it clears the target completely?
Eorberl
Posts: 53
Joined: Sun Feb 24, 2008 12:47 am
Location: Hobart, Australia

Re: The MUD Client "How do I do that?" thread

Post by Eorberl »

What's the purpose? You will have a hotkey which does absolutely nothing then, where leaving the target set will possibly help you out in situations where you suddenly have to press it before you think about setting the target.

I really don't know if/how you can clear a variable in JMC, but if you're just scared of hitting some friendly mob if you had the target set to... "man" or something, just make an alias to set the target to "me" or "self" -- anything which isn't a keyword for a mob would be fine.
coyote
Posts: 22
Joined: Tue May 20, 2008 8:59 pm

Re: The MUD Client "How do I do that?" thread

Post by coyote »

Eorberl wrote:What's the purpose? You will have a hotkey which does absolutely nothing then, where leaving the target set will possibly help you out in situations where you suddenly have to press it before you think about setting the target.

I really don't know if/how you can clear a variable in JMC, but if you're just scared of hitting some friendly mob if you had the target set to... "man" or something, just make an alias to set the target to "me" or "self" -- anything which isn't a keyword for a mob would be fine.
Yeah this, I'd probably set it to a non-word though, such as "0"

Otherwise, to do what he asked, you'd probably have to set an if/then statement to check to see if there is no argument, which I dunno if can be done in JMC, but programmatically it is generally not that hard. Putting if/then statements into triggers can introduce some slowdown, but with a macro it would be pretty safe, I'd imagine, since it's only checking once.
pinion
Posts: 33
Joined: Wed May 28, 2008 4:02 am

Re: The MUD Client "How do I do that?" thread

Post by pinion »

Does anyone know a good way to capture logs via JMC? I don't like manually having to create a log when I start up the client.
Matu
Posts: 21
Joined: Thu Mar 13, 2008 8:51 am
Location: Tartu

Re: The MUD Client "How do I do that?" thread

Post by Matu »

pinion wrote:Does anyone know a good way to capture logs via JMC? I don't like manually having to create a log when I start up the client.
I tried to do this and didn't exactly figure out how to, but here is the general idea:

First action - trigger time from logging in (message about roleplay).
Second action - trigger logging according to real-time in time message (#act {Real time is %1 %2 %3 %4:%5:%6 %7 GMT.} {#log %1%2%3%4%5%6%7.txt}

It doesn't exactly work like this as for me it overwrote the same log file, but otherwise with a little bit of tinkering it should wark. Also don't forget to add #log command to rent command so it stops logging when you log out :)
Locked