|
darkspot Apprentice
Joined: 29 Jul 2002 Posts: 105
|
Posted: Sat Mar 15, 2008 1:12 am
Multi Line Capture |
I tried searching, but couldn't find any of the old topics. I'm stumped, I avoided conditions forever, because it always broke on me. But I figured I'll give it another shot.
#trigger {you tell} {#capture tells}
#cond { %s*} {#capture tells} {looppar|param=50}
ALTERNATIVELY
#cond { %s*} {#capture tells} {looplines|param=50}
Either way, it wants to go through 50 lines before it says okay I can capture another tell. I can get tells of 1 to infinite lines (most I had was around 30). It's server side parsing (those bastards) and it can't be removed. Is there some way to tell it to stop? The end line is USUALLY > or blank, BUT sometimes it's anything, the major difference is the tells extra lines will usually be at least 5 or more spaces to start (Depends on the person's name sending) and the other lines at most usually have 3 or 4 (hence 5 spaces then %s on the cond). So roughly the end line is any line that DOESN'T start with 5 spaces. It might be just a blank line, a > or anything else for that matter. If this is posted somewhere else still point me to it, I did try searching and I must just be using the wrong keywords. I used to think there was some Achea Channel capture that did almost exactly this with different syntaxes but same idea, but I couldn't find it. |
|
|
|
Leitia Adept
Joined: 04 May 2007 Posts: 292 Location: Boston
|
Posted: Sat Mar 15, 2008 2:26 am |
[editing out things here because I did not understand the question]
OK I think this is the solution, sorry the prompt is not reliable, in this link it says how to match everything but the lines with 5 spaces. I think I know that offhand but you will like this
http://www.regular-expressions.info/
no that's not right either, I give up |
|
|
|
Tech GURU
Joined: 18 Oct 2000 Posts: 2733 Location: Atlanta, USA
|
Posted: Sat Mar 15, 2008 6:44 am |
Maybe something akin to this will do the trick. I tend to use two triggers for this, since you never really know the number of lines.
Code: |
#trigger {you tell} {#capture tells;#T+ TellCapture}
#cond {^[^ ]{5}} {#T- TellCapture} {regex}
#TRIGGER TellCapture { } {#capture tells} |
That's mostly off the top of my head but should do the trick. The first one turns on TellCapture so that it keeps going until the end. It will stop at any line that doesn't start with 5 spaces. |
|
_________________ Asati di tempari! |
|
|
|
shalimar GURU
Joined: 04 Aug 2002 Posts: 4702 Location: Pensacola, FL, USA
|
Posted: Sat Mar 15, 2008 8:06 am |
need a space between pattern and value brackets on tellcapture
|
|
_________________ Discord: Shalimarwildcat |
|
|
|
Fang Xianfu GURU
Joined: 26 Jan 2004 Posts: 5155 Location: United Kingdom
|
Posted: Sat Mar 15, 2008 5:24 pm |
I hope you don't mind, I went back and fixed that space and your pattern. You don't need to begin or end a trigger with * ever.
|
|
|
|
darkspot Apprentice
Joined: 29 Jul 2002 Posts: 105
|
Posted: Sat Mar 15, 2008 6:11 pm |
I like it. I was using ^{ | |} but it was breaking a little and that was the condition and ... yeah it was missing occasional lines (I think empty lines). I like that but I don't QUITe get how the {^{^ }*} works. I looked and ^ means don't match... so don't match 5 spaces, then don't match ANYTHING else... wouldn't you want 5 spaces? It seems to work so far so I won't argue, just trying to learn how and why things work so I can use them if I ever need/want to later.
|
|
|
|
darkspot Apprentice
Joined: 29 Jul 2002 Posts: 105
|
Posted: Sat Mar 15, 2008 6:34 pm |
Okay it makes some more sense. As ^ is the start line character. I have a single problem and I am not quite sure how to make it work. Sometimes as I said it's a blank line. It's rare, but it does happen.
ALSO
when I get two things with you tell to start it, that are both one line, it fails. Is there a way to arrange the priority or somesuch to make it able to fire on itself twice if the state pushes it back? |
|
|
|
darkspot Apprentice
Joined: 29 Jul 2002 Posts: 105
|
Posted: Sat Mar 15, 2008 6:40 pm |
What about making the extra tellcapture trigger... fire on the other version... So something like..
Code: |
#trigger {you tell} {#capture tells;#T+ TellCapture}
#cond {^[^ ]{5}} {T- TellCapture} {regex}
#TRIGGER TellCapture {^{ |you tell}} {#capture tells}
|
Thing is I got this feeling if there's then three in a row (also possible) it'd capture the next one twice.... but... at that point could put a trigger in the tell window to remove extra duplicate lines.. something like... #trigger {*} {#if (%line = %line2) {#gag}} seems... extra to have to do that to the tell window. |
|
|
|
Tech GURU
Joined: 18 Oct 2000 Posts: 2733 Location: Atlanta, USA
|
Posted: Sat Mar 15, 2008 7:32 pm |
No worries. As I said, it was mostly at the top of my head.
|
|
_________________ Asati di tempari! |
|
|
|
darkspot Apprentice
Joined: 29 Jul 2002 Posts: 105
|
Posted: Sat Mar 15, 2008 9:23 pm |
Here's how I ended up. And yes I know it's not what I said, but I had multiple versions, one for channels, and one for tells, all had the same problem but luckily only channels had the able to follow each other problem.
Code: |
#trigger channelcapture {<{kingdom|clan|world}>} {#capture tells;#t+ tellcapture}
#cond {^[^ ]} {#t- TellCapture}
// Sorry I couldn't get the other version to work... but this one did. Without the [^ ]{5} and then no regex needed.
#trigger {you tell} {#capture tells;#t+ tellcapture}
#cond {^[^ ]} {#t- TellCapture}
#trigger {tells you} {#capture tells;#t+ tellcapture}
#cond {^[^ ]} {#t- TellCapture}
#trigger TellCapture {^ } {#capture tells}
#trigger {<{clan|kingdom|world}>} {#t- tellcapture;#state channelcapture 0}
// notice this has clan first. This is abusing that in zmud I don't know any priority except classes, and in the same classes it goes alphabetically, SO make this one fire first.
|
|
|
|
|
darkspot Apprentice
Joined: 29 Jul 2002 Posts: 105
|
Posted: Fri Mar 21, 2008 12:35 am |
Code: |
#trigger {<{clan|kingdom|religion}>l} {#capture tells;#T+ TellCapture}
#cond {^[^ ]{5}} {#T- TellCapture} {regex}
#TRIGGER TellCapture { } {#capture tells}
|
Does anyone have any idea for a fix if you get two lines in a row? only some channels can, religion/clan. But it CAN fire twice in a row
For instance
Mike <clan> Hiya!
Mike <clan> How is everyone?
The script worked this time, I got frustrated cause something was buggy and I finally picked out why. The things can happen line after each other. any ideas? |
|
|
|
|
|