|
Fewyn Wanderer
Joined: 27 Sep 2002 Posts: 83
|
Posted: Sat Mar 06, 2004 11:32 pm
Script help |
I have a trigger that will capture all says that occur when I can see them. Here is the trigger
Code: |
#TRIGGER {You say: } {
:CHANNEL:#SAYPROMPT {%time( hh:nn)}
#CAP CHANNEL
#GAG
}
|
But sometimes it a say can be multiple lines of text like this
quote:
You say: This is a Test. This is a Test. This is a Test. This is a Test. This is a Test. This is a Test. This is a Test. This is a Test. This is a Test.
This is a Test. This is a Test. This is a Test. This is a Test. This is a Test. This is a Test. This is a Test. This is a Test. This is a Test.
This is a Test. This is a Test. This is a Test.
see how it is indented?
But I can't seem to figure out how to get it to capture the rest of the say?
As it works now this is what goes in the CHANNEL window:
quote:
17:04You say: This is a Test. This is a Test. This is a Test. This is a Test. This is a Test. This is a Test. This is a Test. This is a Test. This is a Test.
And this goes into the main mud window:
quote:
This is a Test. This is a Test. This is a Test. This is a Test. This is a Test. This is a Test. This is a Test. This is a Test. This is a Test.
This is a Test. This is a Test. This is a Test.
I'll be very very very happy if anyone is able to help :)
-fewyn |
|
|
|
shalimar GURU
Joined: 04 Aug 2002 Posts: 4691 Location: Pensacola, FL, USA
|
Posted: Sun Mar 07, 2004 12:22 am |
some muds let you tweak to column width of the output the send you (essentially their own way to word wrap, eg. COLS) you want zmud to candle the wordwrapping to do this the easy way... ask one of the coders if there is a command for this and set it to the largest number possible, then your trigger will work.
if that doesnt do it you will need a #case statement |
|
|
|
Fewyn Wanderer
Joined: 27 Sep 2002 Posts: 83
|
Posted: Sun Mar 07, 2004 1:34 am |
ah.... that works ok but it does some funky things to the mud (like i have to scroll sideways sometimes to read some room descs)... Anyone know of another way?
|
|
|
|
Danlo Magician
Joined: 28 Nov 2003 Posts: 313 Location: Australia
|
Posted: Sun Mar 07, 2004 2:09 pm |
If your say's are followed by a blank line, the following will work:
#TRIGGER SayCap {You say:} {}
#COND {*} {#if (%null(%line)=1) {#state SayCap 0} {:CHANNEL:#SAYPROMPT {%time( hh:nn)};#CAP CHANNEL;#GAG}} {ReParse}
#COND {*} {#state SayCap 1} {ReParse} |
|
|
|
Fewyn Wanderer
Joined: 27 Sep 2002 Posts: 83
|
Posted: Sun Mar 07, 2004 5:47 pm |
That won't work.... as it will loop over and over again and finally I'll have to close zMUD manually.
|
|
|
|
musishun00 Wanderer
Joined: 16 Dec 2003 Posts: 77 Location: USA
|
Posted: Sun Mar 07, 2004 9:45 pm |
Does it not work because you don't have a blank line after your says or for another reason?
|
|
|
|
Fewyn Wanderer
Joined: 27 Sep 2002 Posts: 83
|
Posted: Mon Mar 08, 2004 11:11 pm |
It doesn't give a blank line... it indents the next line of text.
|
|
|
|
Fewyn Wanderer
Joined: 27 Sep 2002 Posts: 83
|
Posted: Thu Mar 11, 2004 2:35 am |
Anyone ? Please!
|
|
|
|
LightBulb MASTER
Joined: 28 Nov 2000 Posts: 4817 Location: USA
|
Posted: Thu Mar 11, 2004 8:45 am |
There's really only one way of handling multi-line operations.
1. Identify the beginning and the end.
2. Make a trigger using the beginning pattern to act on the first line and enable the other triggers.
3. Make a normally disabled trigger to match and act on every line until you come to the end.
4. Make a trigger to match the ending pattern and disable the second trigger.
Whether you use separate triggers, or just one multi-class trigger, or variables and #IFs, or some other method, the principle remains the same:
Start at the beginning, carry on until the end, and then stop.
You've identified the beginning pattern. Now, figure out how to identify the end of the text you want to capture.
This may work. If not, you've already been given several ideas which should be more than enough to give you a good start on finding your own method.
#TR capture {You say: } {:CHANNEL:#SAYP {%time( hh:nn)};#CAP CHANNEL;#GAG}
#COND {(*)} {#IF %begins( "%1", " ") {#CAP CHANNEL;#GAG} {#STATE capture 0}} {Looplines|Param=9} |
|
|
|
Fewyn Wanderer
Joined: 27 Sep 2002 Posts: 83
|
Posted: Fri Mar 12, 2004 12:36 am |
omg.... i love you lightbulb it works PERFECT.... THANK YOU SO VERY MUCH.... I've been trying on my own for the last couple months and never could figure it out :D
|
|
|
|
|
|