|
apryl Newbie
Joined: 26 Jun 2002 Posts: 2 Location: USA
|
Posted: Wed Jun 26, 2002 8:22 pm
need help with text formatting in 6.16 |
Hi. I've been trying to figure this one out for awhile but to no avail. I am using zmud 6.16 and what I want to do is to send a certain @var that contains a string into a function like thing where it'll insert some %ansi colors before certain key words. For example if:
@testVar1 = "This is just a test string."
And I want to convert that to:
@testVar1 = "This is just a %ansi(bold,red)test string."
How would I do something like this? It needs to be a function (not necessarily the zmud definition of a function) of some type since I need to call it at more than just one place. Any help would be appreciated! Thanks!
Apryl |
|
|
|
Vijilante SubAdmin
Joined: 18 Nov 2001 Posts: 5182
|
Posted: Wed Jun 26, 2002 11:09 pm |
You can use %replace for this quite readily.
In your example I would guess "test" is the key word, so the code snippet would be:
TestVar1=%replace(@TestVar1,"test","%ansi(bold,red)test")
Of course I think you only want the one word colored so...
TestVar1=%replace(@TestVar1,"test","%ansi(bold,red)test%ansi(default)")
Now for a much more generic function...
#FU WordColor {%replace(@{%1},"%2","%ansi(%3)%2%ansi(default)")}
That would take your variable name, the word(s) you want colored and the color you want it like this...
TestVar1="This is just a test string. Test."
TestVar2=@WordColor(TestVar1,"test","bold,red")
and the result...
"This is just a %ansi(bold,red)test%ansi(default) string. Test."
Note that the "test" was replaced, but the "Test" wasn't, %replace is a case-sensitive function. |
|
|
|
apryl Newbie
Joined: 26 Jun 2002 Posts: 2 Location: USA
|
Posted: Fri Jun 28, 2002 2:01 pm |
Thanks, that actually works well if the @TestVar1 is a string. But I'm running into problems if the string in @TestVar1 references other variables.
So for example:
@TestVar1 =
"@testValue1 is the value1!%cr
@testValue2 is the value2 of this!"
then I am doing this to set my status window to show the string in @TestVar1:
#stw @TestVar1
All that works fine so far, but I can't figure out how to color the text in @TestVar1. I am doing it this way because @TestVar1 is created on the fly so it's not always the same. So in this example, how would I make the text 'value1' in bold red? I tried your function by doing:
#var TestVar1 @WordColor(TestVar1,"value1","bold,red")
But it seems to go into an infinite loop... something about @TestVar1 referencing other vars in it is messing it up it seems? I hope this made sense, thanks for any help again!
Apryl |
|
|
|
seamer Magician
Joined: 26 Feb 2001 Posts: 358 Location: Australia
|
Posted: Fri Jun 28, 2002 5:05 pm |
have you tried recording variables with ansi already in them? from what i can see, #stw doesnt do any kind of formatting with colour beyond %ansi...<muddled head aura>
maybe an example of what you wanted to do would help get more jucier answers *stares at the sky*
Why oh WHY did I have pass door on... |
|
|
|
Vijilante SubAdmin
Joined: 18 Nov 2001 Posts: 5182
|
Posted: Fri Jun 28, 2002 10:07 pm |
I really should stop opening cans of worms.
#FU WordColor {%replace(%expand(@{%1},1),"%2","%ansi(%3)%2%ansi(default)")}
The expand function allow you to control how much gets expanded. That sounded really lame, anyhow that would give all the info in testvar1 to to the replace, but leave @testValue1 and @testValue2 as variable references. |
|
|
|
seamer Magician
Joined: 26 Feb 2001 Posts: 358 Location: Australia
|
Posted: Sat Jun 29, 2002 2:54 pm |
my turn for a question
%ansi( green, bold)Bot Status: %ansi( magenta, bold)%proper( @afk)
%ansi( green, bold)EQ: %ansi( magenta, bold)%upper( @eq)%cr
%ansi( brown)Wielding: %ansi( white)%proper( @weap)
%ansi( brown)Position: %ansi( white)%proper( @awake)%cr
%ansi( red, bold)%upper( @lethargy%cr@haste)%cr%cr
%ansi( blue, bold)Protectives:%ansi( gray)%cr%upper( @sanctuary)%cr@bless%cr@fly%cr@protectevil%cr@protectgood%cr@shield%cr@stoneskin%cr@armor%cr%cr%ansi( 159)@regen%cr@talon%cr@giant%ansi( 0)%cr%cr
%ansi( cyan)Improved:%ansi( white)
#FORALL @better {%i}
#SHOW ""
this sits in my #stw, and the only broken bit is the #forall...how would i make it print this variable nicely with each value on its own line? i can see at least 2 uses for it, tracking spells/skills i improve in a session, and record if any equipment gets damaged..just cant get it right
can ye help?
Why oh WHY did I have pass door on... |
|
|
|
Kjata GURU
Joined: 10 Oct 2000 Posts: 4379 Location: USA
|
Posted: Sat Jun 29, 2002 3:08 pm |
Try using:
%expandlist(@better, %crlf)
instead of the #FORALL
Kjata |
|
|
|
Vijilante SubAdmin
Joined: 18 Nov 2001 Posts: 5182
|
Posted: Sat Jun 29, 2002 10:24 pm |
You can also swap that line with this %replace(@better,"|",%cr). The status window does not preform any commands, hence everything must be done using functions and variables.
|
|
|
|
seamer Magician
Joined: 26 Feb 2001 Posts: 358 Location: Australia
|
Posted: Sun Jun 30, 2002 1:32 am |
sweet, both suggestions work..big thanks
Why oh WHY did I have pass door on... |
|
|
|
|
|