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
stark62
Wanderer


Joined: 04 Apr 2003
Posts: 94
Location: United Kingdom

PostPosted: Wed Aug 29, 2012 11:06 am   

Extracting multiple info
 
OK been trying all sorts of stuff and nothing really works for me

What I am trying to do is this - I get this text

Pouch #1262 contains 133 batches of Acaana, 86 batches of Ajkara, 77 batches of Akmar, 75 batches of Athanzar, 237 batches of Blackroot, 71 batches of Bukandas.
Pouch #3564 contains 138 batches of Kelventari, 143 batches of Dynallca, 120 batches of Erasmus, 233 batches of Etarka, 157 batches of Exaar, 120 batches of Grelixar.
Pouch #6469 contains 2 batches of Quarri, 19 batches of Sata, 27 batches of Siriena, 94 batches of Tyrlar, 14 batches of Kathkusa, 5 batches of Wirren.

So what i want is each herb and quantity put into a stringlist or something eg listpouch

so then hopefully it will read like

Acaana 133
Ajkara 86
Akmar 75

I tried capturing using (%d) batches of (%w) but that doesnt get all of them for some reason - then tried to make

Pouch #(%d) contains (%d) batches of (%w), (%d) batches of (%w), (%d) batches of (%w), (%d) batches of (%w), (%d) batches of (%w), (%d) batches of (%w).

Hoped this might then capture each pouch full but does not seem to

ANY IDEAS ???????
Reply with quote
shalimar
GURU


Joined: 04 Aug 2002
Posts: 4690
Location: Pensacola, FL, USA

PostPosted: Wed Aug 29, 2012 12:11 pm   
 
{(%d) batches of (%w)}

should work if you check the repeat within line for the trigger... if not try something like...

#TR {Pouch ~#(%d) contains (*).} {
templist = %replace(%param(2), ",", "|")
#FORALL templist {
#NOOP %match(%i, "(%d) batches of (%w)", num, item)
#ADDITEM listPouch %concat(@item, " ", @num)
}}
_________________
Discord: Shalimarwildcat
Reply with quote
stark62
Wanderer


Joined: 04 Apr 2003
Posts: 94
Location: United Kingdom

PostPosted: Wed Aug 29, 2012 12:36 pm   
 
Sorry whats the repeat within line - and where do i find it pls??
Reply with quote
shalimar
GURU


Joined: 04 Aug 2002
Posts: 4690
Location: Pensacola, FL, USA

PostPosted: Wed Aug 29, 2012 3:50 pm   
 
it should be in the more or advanced section of the trigger within the editor, normally its below the value textbox

what it does is allow the trigger to fire for each time it matches on a given line, instead of just the first match
_________________
Discord: Shalimarwildcat
Reply with quote
MattLofton
GURU


Joined: 23 Dec 2000
Posts: 4834
Location: USA

PostPosted: Wed Aug 29, 2012 7:09 pm   
 
Wrong forum, Shalimar. This is for ZMud, not CMud.

Quote:

I tried capturing using (%d) batches of (%w) but that doesnt get all of them for some reason


The reason for this is that ZMud only matches each trigger pattern once on a given line, and always in the broadest form of said pattern.

Your more explicit matching based on 6 different items in the contains list should have worked just fine, so either you made a mistake in the line being received or in the pattern you made from it. Of course, it will not match on lines with either less than 6 items or if the line contains an item that has only 1 batch instead of multiple batches.
_________________
EDIT: I didn't like my old signature
Reply with quote
shalimar
GURU


Joined: 04 Aug 2002
Posts: 4690
Location: Pensacola, FL, USA

PostPosted: Wed Aug 29, 2012 10:23 pm   
 
repeat within line was new for CMUD? coulda swore it was old school
_________________
Discord: Shalimarwildcat
Reply with quote
jodibecks
Newbie


Joined: 20 Sep 2012
Posts: 1

PostPosted: Thu Sep 20, 2012 1:24 am   
 
I just knew of this feature.
Reply with quote
stark62
Wanderer


Joined: 04 Apr 2003
Posts: 94
Location: United Kingdom

PostPosted: Thu Sep 20, 2012 1:41 am   
 
Thanks Matt - got it to work but like you said it only works if the full pattern is correct.

Thanks anyway as if nothing else I am slowly picking up how things logically work.
Reply with quote
megamog75
Enchanter


Joined: 20 Nov 2002
Posts: 627
Location: USA

PostPosted: Fri Sep 28, 2012 11:47 pm   
 
Hi, I gave a stab at this as it was close to what I am working on and gave me a chance to re-familiarize myself after taking a really long break.
There is probably many other ways to do this and it probably could be cleaned up and nested better.
Saying that, it does work, hope it helps

#TRIGGER {^Pouch ~#%d contains (*).} {#ADDI HH "%1";#VAR HH %replace( @HH, " batches of ", "-");#VAR HH %replace( @HH, ", ", "|");#var AH %numitems( @HH);#Loop @AH,1 {#SH %item( @HH, %i)};#VAR HH ""}

Which displays as thus:

Pouch #1262 contains 133 batches of Acaana, 86 batches of Ajkara, 77 batches of Akmar, 75 batches of Athanzar, 237 batches of Blackroot, 71 batches of Bukandas.
71-Bukandas
237-Blackroot
75-Athanzar
77-Akmar
86-Ajkara
133-Acaana
Pouch #3564 contains 138 batches of Kelventari, 143 batches of Dynallca, 120 batches of Erasmus, 233 batches of Etarka, 157 batches of Exaar, 120 batches of Grelixar.
120-Grelixar
157-Exaar
233-Etarka
120-Erasmus
143-Dynallca
138-Kelventari
Pouch #6469 contains 2 batches of Quarri, 19 batches of Sata, 27 batches of Siriena, 94 batches of Tyrlar, 14 batches of Kathkusa, 5 batches of Wirren.
5-Wirren
14-Kathkusa
94-Tyrlar
27-Siriena
19-Sata
2-Quarri
_________________
megamog75 Smile
I will do this.Nothing in my life matters except this.No moment in my life exists except this moment.I am born in this moment, and if I fail, I will die in this moment. Raistlin Majere
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