|
Amylon Novice
Joined: 31 Jan 2003 Posts: 49 Location: Australia
|
Posted: Wed Feb 05, 2003 7:54 am
#echoing a stringlist in list form |
Greetings fellow Zmudians,
I have a question for you all, does anyone know how I can use this:
#var players Traer|Drake|Synn|Jasmine|Valandra|Rangek|Dimm|Mastermune
and make an #echo that will look like this?
---------
Players
---------
Traer
Drake
Synn
Jasmine
Valandra
Rangek
Dimm
Mastermune
I can do the first bit easy enough (the 2 lines and players tile) but what I need help with is breaking the string down again so it will echo as a list instead of a string with |.
Any help greatly appreciated.
Amylon
--------------------
#trigger {(*) tells you, '} {tell %1 NO}
-------------------- |
|
|
|
TonDiening GURU
Joined: 26 Jul 2001 Posts: 1958 Location: Canada
|
Posted: Wed Feb 05, 2003 8:13 am |
Try something like:
#ECHO ---------
#ECHO Players
#ECHO ---------
#FORALL @players {#ECHO %i}
Ton Diening |
|
|
|
Amylon Novice
Joined: 31 Jan 2003 Posts: 49 Location: Australia
|
Posted: Wed Feb 05, 2003 8:19 am |
Thank you! This forum is incredible, Ton answered my question in less than 20 minutes!
Three Cheers for the Zmudian elite!
--------------------
#trigger {(*) tells you, '} {tell %1 NO}
-------------------- |
|
|
|
Mathian Newbie
Joined: 30 Apr 2004 Posts: 9 Location: Australia
|
Posted: Thu May 06, 2004 9:25 am |
Ok then, I have a stringlist that has spaces in it like this:
Cohosh 18|Bellwort 16|Deathdust 67
And I would like it to echo like this:
Code: |
Cohosh 18
Bellwort 16
Deathdust 67 |
Instead of like this:
Cohosh 18
Bellwort 16
Deathdust 67
Any ideas?
Thanks in advance!
edited to actually show what I meant! |
|
|
|
nexela Wizard
Joined: 15 Jan 2002 Posts: 1644 Location: USA
|
Posted: Thu May 06, 2004 10:26 am |
Ok if what your getting at is linning up the numbers this leaps into my mind *TESTED*
#FORALL @players {#ECHO %word( "%i", 1)%repeat( " ", 25-%len( %word( "%i", 1)))%word( "%i", 2)} |
|
|
|
Mathian Newbie
Joined: 30 Apr 2004 Posts: 9 Location: Australia
|
Posted: Thu May 06, 2004 11:54 am |
You rock!
|
|
|
|
nexela Wizard
Joined: 15 Jan 2002 Posts: 1644 Location: USA
|
Posted: Thu May 06, 2004 2:14 pm |
Of course I forget to Mention Using Data Records (not to be confused with Zmuds Database Module) would probaly be eaiser to update and has a lot of nifty features. as an example if your storing Names and Levels
Data to add:
char1 lvl 5
char2 lvl 39
char3 lvl 12
Code stuffs to enter it
PLevels.char1=5
Plevel.char2=39
Plevel.char3=12
Code Stuffs to retrieve it.
#LOOPDB @Plevel {#SHOW "Player %key is level %val}
or
#SHOWDB @PLevel
or
#SHOW %expanddb(@PLevel,%crlf,": ")
Using those commands and functions among others you could loop through the record and easily show how many are of a certain level, or who all is a certain level etc, plus if the level changes its easier to change then a string list. |
|
|
|
remus Wanderer
Joined: 06 Jul 2002 Posts: 53 Location: Australia
|
Posted: Fri Nov 26, 2004 11:49 am |
I was wondering how that could be applied within the #stat window?
I have a list that captures my who list names and levels like this:
TA- 3|UW- 1 [ Baron 81] Reggy Parker is stranger
NoCln|NoTmp [ Lord 57] Kannis Jacker is Wierd
#TR {(%d)] (%w)} {#add cwho "%2 %1"}
At present I just have my #stat window value set like this:
WHO
%item( @cwho, "1")
%item( @cwho, "2")
%item( @cwho, "3")
%item( @cwho, "4")
%item( @cwho, "5")
%item( @cwho, "6")
%item( @cwho, "7")
%item( @cwho, "8")
%item( @cwho, "9")
%item( @cwho, "10")
but this shows like this
Kannis 81
Reggy 57
What I want is
Kannis 81
Reggy 57
Also is there a better way to do my #stat window?
Any ideas? |
|
_________________ Once the Known was unknown now its Known...
Do you know it??? |
|
|
|
nexela Wizard
Joined: 15 Jan 2002 Posts: 1644 Location: USA
|
Posted: Fri Nov 26, 2004 11:55 am |
Instead of all those seperate items you could use this [read the helpfile for correct syntax this is off thetop of my head]
%expandlist(@Cwho,%cr)
as for spacing it out Ill have to get back to ya right now I need sleep :p |
|
|
|
remus Wanderer
Joined: 06 Jul 2002 Posts: 53 Location: Australia
|
Posted: Sun Nov 28, 2004 6:49 pm |
Thanks for the Expandlist commmand that has been a total help to me in more ways than just the status window. I find it amazing that the smallest things often change so much. I have basically rewritten a heap of string related commands and such after just learning this simple thing.
Thanks Nexela.
Any luck with the spacing issue?
Thanks |
|
_________________ Once the Known was unknown now its Known...
Do you know it??? |
|
|
|
Vijilante SubAdmin
Joined: 18 Nov 2001 Posts: 5182
|
Posted: Mon Nov 29, 2004 12:42 am |
Since your entire list uses the form "%w %d", you can easily convert it to a record variable. Simple code to do the conversion and update your current trigger.
#VAR tempcwho {%replace(@cwho," ","=")}
#VAR cwho {}
#ADDKEY cwho {@tempcwho}
#UNVAR tempcwho
#TR {(%d)] (%w)} {#addkey cwho "%2 %1"}
Next we use a a somewhat complex expansion trick to format it in the status window. There probably is another way to do it (something involving %subregex), but I can't quite think of it right now.
#STAT {%expandlist(%exec(%literal(#LOOPDB @cwho {%format("&s&12.0f",%key,%val)})),%cr)} |
|
_________________ The only good questions are the ones we have never answered before.
Search the Forums |
|
|
|
remus Wanderer
Joined: 06 Jul 2002 Posts: 53 Location: Australia
|
Posted: Mon Nov 29, 2004 9:40 am |
So then I would have this?
#TR {(%d)] (%w)} {#addkey cwho "%2 %1"}
And all the rest above in the who alias like this?
#alias who
Value:
#VAR tempcwho {%replace(@cwho," ","=")}
#VAR cwho {}
#ADDKEY cwho {@tempcwho}
#UNVAR tempcwho
~who
And then this line in the status window?
%expandlist(%exec(%literal(#LOOPDB @cwho {%format("&s&12.0f",%key,%val)})),%cr) |
|
_________________ Once the Known was unknown now its Known...
Do you know it??? |
|
|
|
Vijilante SubAdmin
Joined: 18 Nov 2001 Posts: 5182
|
Posted: Mon Nov 29, 2004 11:06 am |
You got the trigger and status window stuff right. The rest is just a one time thing that you put in the command line to convert your variable from a list to a record.
#VAR tempcwho {%replace(@cwho," ","=")}
#VAR cwho {}
#ADDKEY cwho {@tempcwho}
#UNVAR tempcwho
Goes directly in the command once then is done. |
|
_________________ The only good questions are the ones we have never answered before.
Search the Forums |
|
|
|
remus Wanderer
Joined: 06 Jul 2002 Posts: 53 Location: Australia
|
Posted: Mon Nov 29, 2004 11:59 am |
It works as far as creating a #var cwho that looks like this:
Gary 45||jeremy 53||mark 12||Jamie 12||
But the status window doesnt work at all.
Also it causes the other stuff within the Status window to flicker as if something is trying to constantly refresh the window behind the scenes.
#LOOPDB is also causing an error in scripting but I am assuming this is to do with a # being within {} which zmud doesnt like? |
|
_________________ Once the Known was unknown now its Known...
Do you know it??? |
|
|
|
nexela Wizard
Joined: 15 Jan 2002 Posts: 1644 Location: USA
|
Posted: Mon Nov 29, 2004 1:32 pm |
First of all I wouldn't recomend using #Commands via %exec in the status window so I did some thinking on how this could be accomplished more to come in a minute.
For you problem with the variable it is looking like you will prolly have to manualy change it to a data record. or if you have a backup try this instead one time command line entry script then you might be able to use Vijilantes method (I havn't tested his) or my method
#VAR tempcwho {@cwho}
#VAR cwho ""
#FORAL @tempcwho {#ADDKEY cwho %i}
#UNVAR tempcwho
After we have our new DB all figured out we move on to step two an expression trigger to create a formated string list. It is run anytime a variable is updated or changed can't remember which but in either case should be what we want. *please note this might not export correctly*
#TRIGGER (1=1) {
#VAR statcwho ""
#LOOPDB @cwho {#ADDITEM statcwho {%format( "&-10s&5.0f", %key, %val)}}
}
In the %format the -10 is the left justification of the key string. change this to be a couple spaces bigger then the length of your longest name in the DB (keep the -), The 5.0 is the right justification of the numerical value with no decimals if you want them to be lined up with the highest place digit use just .0 else change the 5 to the length of the biggest number you will store +1 or keep as is.
Now in our status window just stick this in there whereever you wan't it
%expandlist(@statcwho)
Tested and works however this might cause a lil Zmud lag if the DB contains many items (+50) in that case I would change the expression trigger to an alarm that executes every 30 minutes of connect time *example below*, The below example uses an alias so you can just type updatecwho to update it immediatly.
#ALARM "statcwhoalarm" {-30:00} {updatecwho}
#ALIAS updatecwho {
#VAR statcwho ""
#LOOPDB @cwho {#ADDITEM statcwho {%format( "&-10s&5.0f", %key, %val)}}
}
Also see page two of this post for a fix on one of your triggers. I meant to edit it into this post damnit! :P |
|
|
|
nexela Wizard
Joined: 15 Jan 2002 Posts: 1644 Location: USA
|
Posted: Mon Nov 29, 2004 1:35 pm |
Quote: |
#TR {(%d)~] (%w)} {#addkey cwho "%2 %1"} |
Actually for that trigger you would want this....
#TR {(%d)] (%w)} {#addkey cwho "%2" "%1"} |
|
|
|
nexela Wizard
Joined: 15 Jan 2002 Posts: 1644 Location: USA
|
Posted: Tue Nov 30, 2004 2:35 am |
And even after some more thinking you could skip the loopdb etc all together and just format a string list as you add items don't ask me how I missed this it must be that one track train of thought thing
#TRIGGER "addcwho" {(%d)~] (%w)} {#ADDITEM statcwho {%format( "&-10s&5.0f", "%2", "%1")}}
then just use an expandlist in the status window like normal *untested but in theroy should work*
This might also be possible with a Data-record but Im not going any further with it :P |
|
|
|
remus Wanderer
Joined: 06 Jul 2002 Posts: 53 Location: Australia
|
Posted: Tue Nov 30, 2004 8:59 am |
That last one is perfect and so much easier! Thanks
|
|
_________________ Once the Known was unknown now its Known...
Do you know it??? |
|
|
|
remus Wanderer
Joined: 06 Jul 2002 Posts: 53 Location: Australia
|
Posted: Mon Dec 13, 2004 8:32 pm |
I have decided to try something harder and I thought these should work but for some reason they dont work properly or not at all?
Here is my who list
Code: |
----------===========Mortals===========----------
Clan Temple
......|...... [War/Sha Elf 2] Gaffiron the Purple Teletubie
......|...... [Thi/War Hum 5] Hido the Human Thief
......|...... [Wwf Dem 21] Mortical, Creature of Nightmares
......|...... [Thi/Mag Shd 22] Tashor, Silent Stalker
TA- 0 |...... [Nec/Mag Eld 25] Adrianna Bloodmoor, Temptress of Demise
......|...... [Nec/Mag Shd 26] <O> <E> Flurra the shadowy Myst
TA- 1 |...... [ Lord 50] Tyross Mizzerym,- Malice
HD- 2 |SF- 0 [ Lady 52] Mendra Silentblade, Fallen Angel
CF- 2 |...... [ Lord 62] Rangek Ath'loren Philosopher of the Flames
PA- 8 |SF- 0 [ Lady 66] Zinhai Ak'Thun, Symphonic Torment
HD- 5 |SF- 4 [ Lady 69] [PK] Amestrise Nururaama, Malicious Martyr of Misery
CF- 3 |...... [ Baron 80] Mags, Death & Living Reconciled
TA- 7 |TE- 2 [ Count 102] Roan Et'Argnae {Drunken Master}
MI- 5 |GD- 0 [ Count 105] [PK] Hiro Yuy, Visage of Death
HY- 8 |...... [ Count 108] Cerethon Lomendir, The Sentinel
PA- 5 |...... [ Count 112] Nantek
MI- 8 |GD- 3 [ Count 121] <QUESTING> Correus Treveri, Spirit of Dominance
----------==========Immortals==========----------
CF- 9 |TE- 6 [ Heroine ] <Building> Alastrine, Amhartan of the Realm |
And these are the triggers I have
#TRIGGER {(%w)- (%d) ~|* (%d)~] (%w) } {#IF (%1=CF) {#ADDITEM cfwho {%format( "&-10s&5.0f", "%3", "%5")}};#IF (%1=PA) {#ADDITEM pawho {%format("&-10s&5.0f", "%3", "%5")}};#IF (%1=HD) {#ADDITEM hdwho {%format( "&-10s&5.0f", "%3", "%5")}};#IF (%1=TR) {#ADDITEM trwho {%format( "&-10s&5.0f", "%3", "%5")}};#IF (%1=TA) {#ADDITEM tawho {%format( "&-10s&5.0f", "%3", "%5")}};#IF (%1=MI) {#ADDITEM miwho {%format( "&-10s&5.0f", "%3", "%5")}}}
#TRIGGER "addcwho" {......~|* (%d)~] (%w) } {#ADDITEM statcwho {%format( "&-10s&5.0f", "%2", "%1")}}
#TRIGGER "addcwho" {(%w)- (%d) ~|* (%d)~] ({@flags}) (%w) } {#IF (%1=CF) {#ADDITEM cfwho {%format( "&-10s&5.0f", "%3", "%5")}};#IF (%1=PA) {#ADDITEM pawho {%format("&-10s&5.0f", "%3", "%5")}};#IF (%1=HD) {#ADDITEM hdwho {%format( "&-10s&5.0f", "%3", "%5")}};#IF (%1=TR) {#ADDITEM trwho {%format( "&-10s&5.0f", "%3", "%5")}};#IF (%1=TA) {#ADDITEM tawho {%format( "&-10s&5.0f", "%3", "%5")}};#IF (%1=MI) {#ADDITEM miwho {%format( "&-10s&5.0f", "%3", "%5")}}}
To save you some pain here is the main one not in script form:
Code: |
Trigger: ^(%w)- (%d) ~|* (%d)~] (%w)
Value:
#IF (%1=CF) {#ADDITEM cfwho {%format( "&-10s&5.0f", "%3", "%5")}}
#IF (%1=PA) {#ADDITEM pawho {%format("&-10s&5.0f", "%3", "%5")}}
#IF (%1=HD) {#ADDITEM hdwho {%format( "&-10s&5.0f", "%3", "%5")}}
#IF (%1=TR) {#ADDITEM trwho {%format( "&-10s&5.0f", "%3", "%5")}}
#IF (%1=TA) {#ADDITEM tawho {%format( "&-10s&5.0f", "%3", "%5")}}
#IF (%1=MI) {#ADDITEM miwho {%format( "&-10s&5.0f", "%3", "%5")}}
|
The third trigger is almost the same but has the {(@flags)} which checks for <questing> [PK] etc.
The only info I really need in these is
1) The clan Initials ie CF HY etc, so that I can put them each into there own string for easy displaying in the status window.
2) The Level
3) The players name.
The second is for grabbing unclanned/untemple people. At present this does catch the stuff to statcwho but it puts an empty line under the captured text on the screen. (weird isnt it)
I have yet to build the fourth which catches temple but no clan.
Any ideas why they dont work?
Help most gratefully appreciated |
|
_________________ Once the Known was unknown now its Known...
Do you know it??? |
|
|
|
remus Wanderer
Joined: 06 Jul 2002 Posts: 53 Location: Australia
|
Posted: Tue Dec 14, 2004 8:50 pm |
Just a quick note to say since posting this I have tried it as a long nested if statement like below but still no luck:
Code: |
#IF (%1=CF) {#ADDITEM cfwho {%format( "&-10s&5.0f", "%3", "%5")}} {#IF (%1=PA) {#ADDITEM pawho {%format("&-10s&5.0f", "%3", "%5")}}} {#IF (%1=HD) {#ADDITEM hdwho {%format( "&-10s&5.0f", "%3", "%5")}}} {#IF (%1=TR) {#ADDITEM trwho {%format( "&-10s&5.0f", "%3", "%5")}}} {#IF (%1=TA) {#ADDITEM tawho {%format( "&-10s&5.0f", "%3", "%5")}}} {#IF (%1=MI) {#ADDITEM miwho {%format( "&-10s&5.0f", "%3", "%5")}}}
|
|
|
_________________ Once the Known was unknown now its Known...
Do you know it??? |
|
|
|
megamog75 Enchanter
Joined: 20 Nov 2002 Posts: 627 Location: USA
|
Posted: Wed Dec 15, 2004 3:53 am |
remus, From your example above would you please scetch me what you would like this to look like in the status window.
I am extremly adaptive and creative when it comes to that window and this sounds like something I would like to take a crack at
Thank you |
|
_________________ megamog75
I will do this.Nothing in my life matters except this.No moment in my life exists except this moment.I am born in this moment, and if I fail, I will die in this moment. Raistlin Majere |
|
|
|
remus Wanderer
Joined: 06 Jul 2002 Posts: 53 Location: Australia
|
Posted: Wed Dec 15, 2004 6:15 am |
I have done the status window, it is the triggers that I cant get to capture the text that are the problem. When I test the trigger by copying a line from th who is works perfect and allocates each thing to %1 %2 %3 etc. But when I try to use it to capture it doesnt capture as all? I thought maybe the block of test that does who is to scrolled to fast that Zmud cant catch evry line and parse it?
But then zmud never has aproblem with doing that for inventory which is longer so I cant find the problem.
As to the status window I have just dont it like this:
Code: |
%ansi( cyan, bright)WHO IS ON DS
%ansi( white)%expandlist( @statcwho)
%ansi( red, bright)Online:%ansi( white) %numitems( @statcwho)
%ansi( black).
%ansi( cyan, bright)CF Who
%expandlist( @cfwho)
%ansi( cyan, bright)HoD Who
%expandlist( @hdwho)
%ansi( cyan, bright)HY Who
%expandlist( @hywho)
%ansi( cyan, bright)MI Who
%expandlist( @miwho)
%ansi( cyan, bright)PA Who
%expandlist( @pawho)
%ansi( cyan, bright)TA Who
%expandlist( @tawho)
%ansi( cyan, bright)CF Who
%expandlist( @cfwho)
%ansi( black).
%ansi( red, bright)Imm Who
%expandlist( @immwho)
|
|
|
_________________ Once the Known was unknown now its Known...
Do you know it??? |
|
|
|
remus Wanderer
Joined: 06 Jul 2002 Posts: 53 Location: Australia
|
Posted: Sat Dec 18, 2004 4:30 pm |
Can anyone see why they dont work? If the answer is that you cant could you tell me that too, It might be something I am missing. I really need an opinion.
|
|
_________________ Once the Known was unknown now its Known...
Do you know it??? |
|
|
|
|
|