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
ralgith
Sorcerer


Joined: 13 Jan 2006
Posts: 715

PostPosted: Mon Nov 17, 2008 7:14 pm   

Pattern Help
 
Ok, I have the following script:

Code:
#CLASS {Automatic Practice|AutoGetAll}
#TRIGGER {(*)%s(%d)%s(%d)%s(%d)} {
  #CLASS {Automatic Practice|Vars}
  #ADDKEY ToPracDB %1 %concat( %2, "|", %3, "|", %4)
  #CLASS 0
  }
#CLASS 0


But when it captures multi-word spell names, it doesn't work right and I get THIS (I manually edited this to make it easier to read for viewing purposes...):
Code:
#CLASS {Automatic Practice|Vars}
#VAR ToPracDB {
complete=healing
cure=light
group=massive
heal=over
mana=133|90|90
power=heal
refresh=10|90|83
restoration=48|90|83
massive=heal
fast=healing
meditation=33|90|14
}
#CLASS 0


Here is the input:
Code:
Skill                              Level  Maxskill    Current
complete healing                    103      90         83 
cure blindness                      13       90         83 
cure critical wounds                0        90         83 
cure disease                        8        90         83 
cure light wounds                   0        90         83 
group heal                          58       90         0   
group restoration                   93       90         0   
heal                                2        90         83 
mana                                133      90         90 
power heal                          28       90         83 
group massive heal                  158      90         0   
heal over time                      153      90         77 
refresh                             10       90         83 
restoration                         48       90         83 
massive heal                        133      90         0   
fast healing                        28       90         14 
meditation                          33       90         14 

8226hp 6741m 1606mv>


How do I fix the pattern, it looks right to me... I mean this should be pretty straightforward.
_________________
CrossOver: Windows Compatibility on Mac and Linux CMUD Advocate
Reply with quote
Rappy
Wanderer


Joined: 15 Jul 2005
Posts: 96

PostPosted: Mon Nov 17, 2008 9:08 pm   
 
The %s is picking up the space between the first and second words, best option is to change it to a regex trigger and use...

Code:
#REGEX {([\w ]+)\s(\d)\s(\d)\s(\d)}

And you should think about somehow turning it on and off so this 'loose' trigger doesn't catch other randomness from the MUD.

Look into #T+ and create an alias (possibly the same command you use to check that listing... IE #ALIAS skilllist {#T+ skillgroup;~skilllist} and then add a #T- triggered off your prompt %dhp %dm %dmv>

-Rappy
_________________
Windows 11 Pro,
cMUD 3.34
Reply with quote
ralgith
Sorcerer


Joined: 13 Jan 2006
Posts: 715

PostPosted: Mon Nov 17, 2008 9:25 pm   
 
%s should only pick up a space right BEFORE a number though. So something is broken as can be there.

And yes Rappy, its already T+/-'ed ;)

Regardless, I'll use the REGEX, but dammit, the other SHOULD work. The space between words should not make the pattern match since the net param isn't a NUMBER ;) How is a word getting picked up as %2 when it is a (%d) in the pattern? Something is SERIOUSLY broken there. Oh well, meh.
_________________
CrossOver: Windows Compatibility on Mac and Linux CMUD Advocate
Reply with quote
charneus
Wizard


Joined: 19 Jun 2005
Posts: 1876
Location: California

PostPosted: Mon Nov 17, 2008 9:28 pm   
 
Rappy: that shouldn't cause a problem, as the (*)%s(%d) matches anything FOLLOWED by a space or more FOLLOWED by a digit. Therefore, it should match asfks seied skiei 4 without a flaw.

This can be tested by stripping it down to just #SAY First param is %1 and second param is %2.

Test that against the output and see if it matches correctly. It should.

Charneus
Reply with quote
ralgith
Sorcerer


Joined: 13 Jan 2006
Posts: 715

PostPosted: Mon Nov 17, 2008 9:39 pm   
 
I found the problem. And I feel dumb now since this is a problem I've encountered sooo many times and I just forgot it when I wrote the code.

I need to put double quotes around my %1 to properly read the space into the var.

Code:
#CLASS {Automatic Practice|AutoGetAll}
#TRIGGER {(*)%s(%d)%s(%d)%s(%d)} {
  #CLASS {Automatic Practice|Vars}
  #ADDKEY ToPracDB "%1" %concat( %2, "|", %3, "|", %4)
  #CLASS 0
  }
#CLASS 0


Sorry for wasting your time guys *feels stupid*
_________________
CrossOver: Windows Compatibility on Mac and Linux CMUD Advocate
Reply with quote
Progonoi
Magician


Joined: 28 Jan 2007
Posts: 430

PostPosted: Mon Nov 17, 2008 9:54 pm   
 
Heh, I was about to suggest that or {}'s. Basically when there's a possibility of the key being more than one word you should use it.
Though, perhaps another way would be %-1 and then you wouldn't need to use quotes nor {}'s.
_________________
The Proud new owner of CMud.

--------------------------------
Intel Core i5-650 3,2GHz
4 DD3 RAM
GTX 460 768MB
Win 7 Home Premium 64x
--------------------------------
Reply with quote
ralgith
Sorcerer


Joined: 13 Jan 2006
Posts: 715

PostPosted: Mon Nov 17, 2008 10:13 pm   
 
Can't use %-1 since there is a %2 to use ;)
But yes, I got it :p
_________________
CrossOver: Windows Compatibility on Mac and Linux CMUD Advocate
Reply with quote
MattLofton
GURU


Joined: 23 Dec 2000
Posts: 4834
Location: USA

PostPosted: Mon Nov 17, 2008 10:22 pm   
 
If you replace the * with a narrower pattern, it will work properly. [%w%s] will work, but you'll probably have to %trim() the result.

You could even attempt to try using 2 consecutive plain-text spaces in the pattern to get rid of the trimming need, but ZMud might strip that out automatically or might not match it.
_________________
EDIT: I didn't like my old signature
Reply with quote
ralgith
Sorcerer


Joined: 13 Jan 2006
Posts: 715

PostPosted: Mon Nov 17, 2008 11:26 pm   
 
Right Matt, except I want it to work on multiple words as well as singles.
_________________
CrossOver: Windows Compatibility on Mac and Linux CMUD Advocate
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