Register to post in forums, or Log in to your existing account
 

Play RetroMUD
Post new topic  Reply to topic     Home » Forums » zMUD General Discussion
apryl
Newbie


Joined: 26 Jun 2002
Posts: 2
Location: USA

PostPosted: 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
Reply with quote
Vijilante
SubAdmin


Joined: 18 Nov 2001
Posts: 5182

PostPosted: 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.
Reply with quote
apryl
Newbie


Joined: 26 Jun 2002
Posts: 2
Location: USA

PostPosted: 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
Reply with quote
seamer
Magician


Joined: 26 Feb 2001
Posts: 358
Location: Australia

PostPosted: 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...
Reply with quote
Vijilante
SubAdmin


Joined: 18 Nov 2001
Posts: 5182

PostPosted: 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.
Reply with quote
seamer
Magician


Joined: 26 Feb 2001
Posts: 358
Location: Australia

PostPosted: 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...
Reply with quote
Kjata
GURU


Joined: 10 Oct 2000
Posts: 4379
Location: USA

PostPosted: Sat Jun 29, 2002 3:08 pm   
 
Try using:
%expandlist(@better, %crlf)

instead of the #FORALL

Kjata
Reply with quote
Vijilante
SubAdmin


Joined: 18 Nov 2001
Posts: 5182

PostPosted: 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.
Reply with quote
seamer
Magician


Joined: 26 Feb 2001
Posts: 358
Location: Australia

PostPosted: Sun Jun 30, 2002 1:32 am   
 
sweet, both suggestions work..big thanks

Why oh WHY did I have pass door on...
Reply with quote
Display posts from previous:   
Post new topic   Reply to topic     Home » Forums » zMUD General Discussion All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum

© 2009 Zugg Software. Hosted by Wolfpaw.net