Help making a status bar

Scripts and support for your favorite MUD client.
Sonon
Sojourner
Posts: 162
Joined: Sun Sep 12, 2004 8:33 pm
Location: San Antonio,Texas
Contact:

Help making a status bar

Postby Sonon » Sun Sep 19, 2004 11:14 pm

i could use some help making a status bar if you have any sugjestions please post them thanks
Botef
Sojourner
Posts: 1056
Joined: Fri May 10, 2002 5:01 am
Location: Eastern Washington
Contact:

Postby Botef » Mon Sep 20, 2004 9:44 pm

I dont know how many people use a similar system to me. I'm finding I need to do a lot of heavy tweaking now that I'm reaching a higher level and have a need to be more functional and automated (by that I mean not having to type full commands - in otherwords, clever alias use, not bots)

Here is an older screenshot of my setup. Note the crappy color because its a 16-bit bmp I made in haste to show xilissisix one night. I should note its changed quite a bit, as this was early on when I was still learning how to make things work.

http://www.playspoon.com/mook/screen.bmp

My setup is not very efficent, and I'm still tweaking it to make it more functional but I can explain how I went about putting it together and you should be able to figure everything out. I use zMud 3.06, the old shitty free version which I dont suggest, unless you like it locking up when you move more than 18 rooms in a row really fast.

The first thing I setup in my status window (not bar) was an HP / Vit display so when I'm moving at 200 miles per hour I can see how many moves I have left.

To do that, I have a trigger that looks for a %dh/ and than puts %d into a variable I've named ahp. I'm not at home, so I may get some syntax wrong - Ill check when Im home and update any errors.

To do this, I have a trigger that looks for: < (%d)h/
The command it runs when it sees this is: #var ahp %1

This takes the numerical number %d and stores in in the variable ahp.
The same holds true for max hp, only it would be: /(%d)H
and the command would be: #var mhp %1

The status window is essential a bunch of made up text and my variables.
It would look like this in the status window:

Health Points....... @ahp / @mhp

The same system is used for movement points, you just need to adjust the trigger to capture the appropriate number. Since it takes these numbers from the full display, it updates constantly which makes keeping an eye on my moves during travel very easy.

The next set of functions gets it info from the score command. That being my current XP, my Platinum (Whats in the bank only - dont have much need for a read out of all my coins, I just like to know whats in the bank)

To do this, I needed a way for it to update itself without me typing score everytime I wanted it updated. So, the first trigger I made was:

trigger: You receive your share
command: score

I also, insert my looter into this trigger. My loot trig gets tagged right after score making my command for kills I receive XP on:

command: score; take @loot @target

We'll cover this in a bit.

I should make an EXTREME note here on the updater. YOU WANT IT OFF ANYTIME YOUR GOING TO BE KILLING LOTS OF MOBS AT ONCE! In example, I forgot to disable it on an RP mission, and when 15 brownies all died at once, I went linkless because I spammed score a million times. If anyone has a more efficent version to this updater, let me know.

So now we have it calling score whenever I get XP. Now we need triggers to capture my current XP, Plats in Bank, and Level to variables. Again, its the same as with the HP. You need the words that trigger it and where to store it.

Trigger: Experience (%d)
Command: #var exp %1

Same goes for Platinum. I should note my platnium trigg is very broken, in that anytime the word platinum goes by and a digit it gets set to this amount. I havent bothered doing anything to fix this because its simply not an issue for me - yet.

I dont actually have it capture my name or title. I could in theory, if I knew how to capture words, but theres no need, I can update that anytime I want. My level on the other hand is the same as experience, coming from the score readout.

Trigger: Level (%d)
Command: #var lvl %1

And again, to make these show in your status window or bar, you use @lvl or @exp or whatever the variable is with a '@' in front.

The next thing I have is active spells, which Im currently tweaking to allow more spells to be listed. Most people just have GSAY callers for when things run out, but I like having a display so I can know whats active without having to type score.

To do this, you need to build a lot of triggers. For example, Levitate has a number of different triggers needed. Since you can land, it can run out, I can innate and people can cast it on me, I need triggers for each one.

I dont remember what these all are, so I'll use invis as an example because I actully remember them somewhat:

Trigger: You vanish
Command: #var vis {Invisable}

Trigger: You feel less transparent
Command: #var vis { }

So note there are more than these, and constructing your spell triggers takes time. In my current setup, I only have four spells, Invis, DI, Levitate and Coldshield. In the current system I'm building this will be replaced with call letters, so I can have more spells in the same space.

Eventually it might look like this for me:

[DI] [IV] [DS] [CS]

And so forth, with them not being present ( [ ] ) when they are not active. Again, to include these in a status window you just insert the variable along with whatever text needs to preceed, or follow what you have.

Active Spells

@vis
@float

And so on.

The final thing in my setup I use is a meager targetting system that I've since started overhauling to be more group friendly. However, the fundementals are the same, save for the use of arrays in my new setup.

Since I play a necro, I like to have control over all my pets without the need to have a million alias' for controlling them. Again, Im changing my setup to be more efficent now that I am in larger groups, but the concepts are the same.

The first thing I need is control over my tanker pets vs. my caster pets.
Normally, I have orf (order followers) as my alias for controlling my group. So if I type "orf burp" it sends order followers burp. For combat, I dont want my entire group of pets doing the same thing. I want tankers tanking and casters casting. This can be a nightmare to manage with alias', so I created this target system to supplement that.

The first thing we need is a way to set my targets and my allies (This is where Im chaning things so I can have an array of different 'types' of allies, tanker, etc - as well as multiple targets.).

I have three alias' for doing this. set, ally and ally2.

Alias: set
Command: #var target

Alias: ally
Command: #var ally

Now, I simply type set and my targets call name. For example, 'set soldier' Works the same for allies, 'ally Xilissisix' (sorry xil, your the example for this post!)

From here, its up to you how you want to use these variables. I dont like having to set targets everytime I cast my own spells, but I do for my caster pets. So now, I simply type pspec to run a alias for my casters. Since my tankers cant cast spells, I use my orf alias, but Im modifing all this so Ill have to post my new setup sometime.

Alias: pspec
Command: orf cast 'spectral hand' @target

Now I can order my casters to do a variety of functions without having to type an alias and a target. I used to type pspec soldier, now I simply type pspec and it does the rest.

The same goes for my tankers. I wont go into much detail, as my setup from here on out is a personal taste based on how I play and has no merit to anyone who is not a necro.

If your a warrior, you would instead want an alias to start your attack. For example, instead of having to type bash soldier you can simply set an alias for bash like so:

Alias: bash
Command: bash @target

This is especially useful when the mob your fighting has some annoying name to type out. You can essentialy use this target system in millions of different ways, as all your really doing is setting the variable @target to whatever your fighting. Going back to are looter, we see take @loot @target.

Since turning my looter on and off is annoying, I simply use @loot for a poor mans on/off.

Alias: sloot
Command: #var loot

So, I set loot to 'all' to take all from target, or 'coins' to take just money.
And thus, when I want looer of, I set loot to 'nothing'.

Again, not being at my machine I'm not 100% on the triggers. I'm pretty sure I got it all right, but I'll check latet and let you know.

I also suggest you set up some coloring triggers. To color a word, its #cw and to color a line its #co

Trigger: group-says
Command: #co 4

The # is your color, I believe 0-9, after which it repeats with the bold color your client is set to. I color all my GSAYS (And projects if your an evil race) as well as Tells so they stand out from the drab green and catch my attention.

I also color all the spells I use.

Trigger: detect invisibility
command: #cw 4

#cw colors the word(s) in your trigger to whatever color you set (the #)
#co colors the entire line of text your trigger words are on.

Hopefully this gives your enough info to start building your own setup. I should recapture a screenshot of my current setup as its a bit different than the one above. Hope this helps you, and feel free to ask any other questions.


I'm no zMud specialist, and had to ask a lot of questions in my thread to get this all working, but I love it - and it works perfectly for my purposes.
Also, since Im using zMud 3. something, things may be different for you.
Alilsil
Sojourner
Posts: 29
Joined: Thu Jul 04, 2002 5:01 am
Location: Oslo

Postby Alilsil » Thu Dec 23, 2004 9:13 pm

in group command show a little bar that changes with colors

#TRIGGER {*%s(%d)/(%d)%shit,%s%d/%d%smove,%s%d/%d%s{psp|man} (%*)$} {#MATH groupstatus ((%1*10)/%2);groupstatusnamelength = {%len( %3)};#MATH groupstatusspace (10-@groupstatusnamelength);#IF (@groupstatus<1) {#VA groupstatus 1};#IF (@groupstatus>10) {#VA groupstatus 10};#IF (@groupstatus>7) {#SUB {%line %repeat( " ", @groupstatusspace)%ansi( green)%repeat( "•", @groupstatus)%ansi( grey)%repeat( "•", %eval( 10 - @groupstatus))}} {#NOOP};#IF (@groupstatus<=7) {#SUB {%line %repeat( " ", @groupstatusspace)%ansi( yellow)%repeat( "•", @groupstatus)%ansi( grey)%repeat( "•", %eval( 10 - @groupstatus))}} {#NOOP};#IF (@groupstatus<=3) {#SUB {%line %repeat( " ", @groupstatusspace)%ansi( red)%repeat( "•", @groupstatus)%ansi( grey)%repeat( "•", %eval( 10 - @groupstatus))}} {#NOOP}}

Return to “MUD Client Help”

Who is online

Users browsing this forum: No registered users and 11 guests