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

Play RetroMUD
Post new topic  Reply to topic     Home » Forums » CMUD General Discussion
xekon
Apprentice


Joined: 11 Oct 2007
Posts: 154

PostPosted: Tue Jun 09, 2009 7:52 am   

help, how do I create a loop that will work correctly from a status window
 
the code in my status window is enormous, I do however have my variable setup in a way that I could easily make the code 1/18 its size if I could figure out how to loop within a status window.... I dont need help rewriting my code, I just need to see an example of how to make a loop that will work from within a Status Window.

Code:
%if(%class(cp1)==1,%ansi(red)"[========= "%ansi(high,green)"{"%ansi(high,cyan)"Campaign"%ansi(high,green)"} "%ansi(red)"=========]"%cr
%if(%numkeys(@mob_cp)>=1,%ansi(white)%left(%item(@mob_cp,1),25) %if(%item(%db(@mob_cp,%item(@mob_cp,1)),3)!="",%ansi(cyan)%left(%item(%db(@mob_cp,%item(@mob_cp,1)),3),30) %cr,) %if(%item(%db(@mob_cp,%item(@mob_cp,1)),2)!="",%ansi(cyan)%left(%item(%db(@mob_cp,%item(@mob_cp,1)),2),30) %cr,) %if(%item(%db(@mob_cp,%item(@mob_cp,1)),1)!="",%ansi(cyan)%left(%item(%db(@mob_cp,%item(@mob_cp,1)),1),30) %cr,)
%if(%numkeys(@mob_cp)>1,%ansi(white)%left(%item(@mob_cp,2),25) %if(%item(%db(@mob_cp,%item(@mob_cp,2)),3)!="",%ansi(cyan)%left(%item(%db(@mob_cp,%item(@mob_cp,2)),3),30) %cr,) %if(%item(%db(@mob_cp,%item(@mob_cp,2)),2)!="",%ansi(cyan)%left(%item(%db(@mob_cp,%item(@mob_cp,2)),2),30) %cr,) %if(%item(%db(@mob_cp,%item(@mob_cp,2)),1)!="",%ansi(cyan)%left(%item(%db(@mob_cp,%item(@mob_cp,2)),1),30) %cr,)
%if(%numkeys(@mob_cp)>2,%ansi(white)%left(%item(@mob_cp,3),25) %if(%item(%db(@mob_cp,%item(@mob_cp,3)),3)!="",%ansi(cyan)%left(%item(%db(@mob_cp,%item(@mob_cp,3)),3),30) %cr,) %if(%item(%db(@mob_cp,%item(@mob_cp,3)),2)!="",%ansi(cyan)%left(%item(%db(@mob_cp,%item(@mob_cp,3)),2),30) %cr,) %if(%item(%db(@mob_cp,%item(@mob_cp,3)),1)!="",%ansi(cyan)%left(%item(%db(@mob_cp,%item(@mob_cp,3)),1),30) %cr,)
%if(%numkeys(@mob_cp)>3,%ansi(white)%left(%item(@mob_cp,4),25) %if(%item(%db(@mob_cp,%item(@mob_cp,4)),3)!="",%ansi(cyan)%left(%item(%db(@mob_cp,%item(@mob_cp,4)),3),30) %cr,) %if(%item(%db(@mob_cp,%item(@mob_cp,4)),2)!="",%ansi(cyan)%left(%item(%db(@mob_cp,%item(@mob_cp,4)),2),30) %cr,) %if(%item(%db(@mob_cp,%item(@mob_cp,4)),1)!="",%ansi(cyan)%left(%item(%db(@mob_cp,%item(@mob_cp,4)),1),30) %cr,)
%if(%numkeys(@mob_cp)>4,%ansi(white)%left(%item(@mob_cp,5),25) %if(%item(%db(@mob_cp,%item(@mob_cp,5)),3)!="",%ansi(cyan)%left(%item(%db(@mob_cp,%item(@mob_cp,5)),3),30) %cr,) %if(%item(%db(@mob_cp,%item(@mob_cp,5)),2)!="",%ansi(cyan)%left(%item(%db(@mob_cp,%item(@mob_cp,5)),2),30) %cr,) %if(%item(%db(@mob_cp,%item(@mob_cp,5)),1)!="",%ansi(cyan)%left(%item(%db(@mob_cp,%item(@mob_cp,5)),1),30) %cr,)
%if(%numkeys(@mob_cp)>5,%ansi(white)%left(%item(@mob_cp,6),25) %if(%item(%db(@mob_cp,%item(@mob_cp,6)),3)!="",%ansi(cyan)%left(%item(%db(@mob_cp,%item(@mob_cp,6)),3),30) %cr,) %if(%item(%db(@mob_cp,%item(@mob_cp,6)),2)!="",%ansi(cyan)%left(%item(%db(@mob_cp,%item(@mob_cp,6)),2),30) %cr,) %if(%item(%db(@mob_cp,%item(@mob_cp,6)),1)!="",%ansi(cyan)%left(%item(%db(@mob_cp,%item(@mob_cp,6)),1),30) %cr,)
%if(%numkeys(@mob_cp)>6,%ansi(white)%left(%item(@mob_cp,7),25) %if(%item(%db(@mob_cp,%item(@mob_cp,7)),3)!="",%ansi(cyan)%left(%item(%db(@mob_cp,%item(@mob_cp,7)),3),30) %cr,) %if(%item(%db(@mob_cp,%item(@mob_cp,7)),2)!="",%ansi(cyan)%left(%item(%db(@mob_cp,%item(@mob_cp,7)),2),30) %cr,) %if(%item(%db(@mob_cp,%item(@mob_cp,7)),1)!="",%ansi(cyan)%left(%item(%db(@mob_cp,%item(@mob_cp,7)),1),30) %cr,)
%if(%numkeys(@mob_cp)>7,%ansi(white)%left(%item(@mob_cp,8),25) %if(%item(%db(@mob_cp,%item(@mob_cp,8)),3)!="",%ansi(cyan)%left(%item(%db(@mob_cp,%item(@mob_cp,8)),3),30) %cr,) %if(%item(%db(@mob_cp,%item(@mob_cp,8)),2)!="",%ansi(cyan)%left(%item(%db(@mob_cp,%item(@mob_cp,8)),2),30) %cr,) %if(%item(%db(@mob_cp,%item(@mob_cp,8)),1)!="",%ansi(cyan)%left(%item(%db(@mob_cp,%item(@mob_cp,8)),1),30) %cr,)
%if(%numkeys(@mob_cp)>8,%ansi(white)%left(%item(@mob_cp,9),25) %if(%item(%db(@mob_cp,%item(@mob_cp,9)),3)!="",%ansi(cyan)%left(%item(%db(@mob_cp,%item(@mob_cp,9)),3),30) %cr,) %if(%item(%db(@mob_cp,%item(@mob_cp,9)),2)!="",%ansi(cyan)%left(%item(%db(@mob_cp,%item(@mob_cp,9)),2),30) %cr,) %if(%item(%db(@mob_cp,%item(@mob_cp,9)),1)!="",%ansi(cyan)%left(%item(%db(@mob_cp,%item(@mob_cp,9)),1),30) %cr,)
%if(%numkeys(@mob_cp)>9,%ansi(white)%left(%item(@mob_cp,10),25) %if(%item(%db(@mob_cp,%item(@mob_cp,10)),3)!="",%ansi(cyan)%left(%item(%db(@mob_cp,%item(@mob_cp,10)),3),30) %cr,) %if(%item(%db(@mob_cp,%item(@mob_cp,10)),2)!="",%ansi(cyan)%left(%item(%db(@mob_cp,%item(@mob_cp,10)),2),30) %cr,) %if(%item(%db(@mob_cp,%item(@mob_cp,10)),1)!="",%ansi(cyan)%left(%item(%db(@mob_cp,%item(@mob_cp,10)),1),30) %cr,)
%if(%numkeys(@mob_cp)>10,%ansi(white)%left(%item(@mob_cp,11),25) %if(%item(%db(@mob_cp,%item(@mob_cp,11)),3)!="",%ansi(cyan)%left(%item(%db(@mob_cp,%item(@mob_cp,11)),3),30) %cr,) %if(%item(%db(@mob_cp,%item(@mob_cp,11)),2)!="",%ansi(cyan)%left(%item(%db(@mob_cp,%item(@mob_cp,11)),2),30) %cr,) %if(%item(%db(@mob_cp,%item(@mob_cp,11)),1)!="",%ansi(cyan)%left(%item(%db(@mob_cp,%item(@mob_cp,11)),1),30) %cr,)
%if(%numkeys(@mob_cp)>11,%ansi(white)%left(%item(@mob_cp,12),25) %if(%item(%db(@mob_cp,%item(@mob_cp,12)),3)!="",%ansi(cyan)%left(%item(%db(@mob_cp,%item(@mob_cp,12)),3),30) %cr,) %if(%item(%db(@mob_cp,%item(@mob_cp,12)),2)!="",%ansi(cyan)%left(%item(%db(@mob_cp,%item(@mob_cp,12)),2),30) %cr,) %if(%item(%db(@mob_cp,%item(@mob_cp,12)),1)!="",%ansi(cyan)%left(%item(%db(@mob_cp,%item(@mob_cp,12)),1),30) %cr,)
%if(%numkeys(@mob_cp)>12,%ansi(white)%left(%item(@mob_cp,13),25) %if(%item(%db(@mob_cp,%item(@mob_cp,13)),3)!="",%ansi(cyan)%left(%item(%db(@mob_cp,%item(@mob_cp,13)),3),30) %cr,) %if(%item(%db(@mob_cp,%item(@mob_cp,13)),2)!="",%ansi(cyan)%left(%item(%db(@mob_cp,%item(@mob_cp,13)),2),30) %cr,) %if(%item(%db(@mob_cp,%item(@mob_cp,13)),1)!="",%ansi(cyan)%left(%item(%db(@mob_cp,%item(@mob_cp,13)),1),30) %cr,)
%if(%numkeys(@mob_cp)>13,%ansi(white)%left(%item(@mob_cp,14),25) %if(%item(%db(@mob_cp,%item(@mob_cp,14)),3)!="",%ansi(cyan)%left(%item(%db(@mob_cp,%item(@mob_cp,14)),3),30) %cr,) %if(%item(%db(@mob_cp,%item(@mob_cp,14)),2)!="",%ansi(cyan)%left(%item(%db(@mob_cp,%item(@mob_cp,14)),2),30) %cr,) %if(%item(%db(@mob_cp,%item(@mob_cp,14)),1)!="",%ansi(cyan)%left(%item(%db(@mob_cp,%item(@mob_cp,14)),1),30) %cr,)
%if(%numkeys(@mob_cp)>14,%ansi(white)%left(%item(@mob_cp,15),25) %if(%item(%db(@mob_cp,%item(@mob_cp,15)),3)!="",%ansi(cyan)%left(%item(%db(@mob_cp,%item(@mob_cp,15)),3),30) %cr,) %if(%item(%db(@mob_cp,%item(@mob_cp,15)),2)!="",%ansi(cyan)%left(%item(%db(@mob_cp,%item(@mob_cp,15)),2),30) %cr,) %if(%item(%db(@mob_cp,%item(@mob_cp,15)),1)!="",%ansi(cyan)%left(%item(%db(@mob_cp,%item(@mob_cp,15)),1),30) %cr,)
%if(%numkeys(@mob_cp)>15,%ansi(white)%left(%item(@mob_cp,16),25) %if(%item(%db(@mob_cp,%item(@mob_cp,16)),3)!="",%ansi(cyan)%left(%item(%db(@mob_cp,%item(@mob_cp,16)),3),30) %cr,) %if(%item(%db(@mob_cp,%item(@mob_cp,16)),2)!="",%ansi(cyan)%left(%item(%db(@mob_cp,%item(@mob_cp,16)),2),30) %cr,) %if(%item(%db(@mob_cp,%item(@mob_cp,16)),1)!="",%ansi(cyan)%left(%item(%db(@mob_cp,%item(@mob_cp,16)),1),30) %cr,)
%if(%numkeys(@mob_cp)>16,%ansi(white)%left(%item(@mob_cp,17),25) %if(%item(%db(@mob_cp,%item(@mob_cp,17)),3)!="",%ansi(cyan)%left(%item(%db(@mob_cp,%item(@mob_cp,17)),3),30) %cr,) %if(%item(%db(@mob_cp,%item(@mob_cp,17)),2)!="",%ansi(cyan)%left(%item(%db(@mob_cp,%item(@mob_cp,17)),2),30) %cr,) %if(%item(%db(@mob_cp,%item(@mob_cp,17)),1)!="",%ansi(cyan)%left(%item(%db(@mob_cp,%item(@mob_cp,17)),1),30) %cr,)
%if(%numkeys(@mob_cp)>17,%ansi(white)%left(%item(@mob_cp,18),25) %if(%item(%db(@mob_cp,%item(@mob_cp,18)),3)!="",%ansi(cyan)%left(%item(%db(@mob_cp,%item(@mob_cp,18)),3),30) %cr,) %if(%item(%db(@mob_cp,%item(@mob_cp,18)),2)!="",%ansi(cyan)%left(%item(%db(@mob_cp,%item(@mob_cp,18)),2),30) %cr,) %if(%item(%db(@mob_cp,%item(@mob_cp,18)),1)!="",%ansi(cyan)%left(%item(%db(@mob_cp,%item(@mob_cp,18)),1),30) %cr,)
,),),),),),),),),),),),),),),),),),%ansi(red)"Campaign is finished Go Turn IN"),%ansi(red)"No GQuest, Quest, or Campaign")
Reply with quote
Rahab
Wizard


Joined: 22 Mar 2007
Posts: 2320

PostPosted: Tue Jun 09, 2009 12:47 pm   
 
You can only use functions there, and there are no functions which perform looping.

Are you sure you won't consider help to rewrite it?
Reply with quote
xekon
Apprentice


Joined: 11 Oct 2007
Posts: 154

PostPosted: Tue Jun 09, 2009 12:49 pm   
 
hmmm does this mean I would need to perform loop operations prior to the status window and rebuild the status window as I need to?
Reply with quote
Rahab
Wizard


Joined: 22 Mar 2007
Posts: 2320

PostPosted: Tue Jun 09, 2009 1:06 pm   
 
That may be one way to do it, but your code is complicated enough that I can't make out exactly what you're doing in a cursory look.
Reply with quote
xekon
Apprentice


Joined: 11 Oct 2007
Posts: 154

PostPosted: Tue Jun 09, 2009 1:09 pm   
 
I have a datarecord that can have anywhere between 1 and 18 keys. I am then displaying the keys with their values if they are not nil. Also the value for every key is a string list.
Reply with quote
Taz
GURU


Joined: 28 Sep 2000
Posts: 1395
Location: United Kingdom

PostPosted: Tue Jun 09, 2009 4:33 pm   
 
%exec
_________________
Taz :)
Reply with quote
xekon
Apprentice


Joined: 11 Oct 2007
Posts: 154

PostPosted: Tue Jun 09, 2009 6:34 pm   
 
thank you, thank you, thank you, thank you, thank you, thank you, exactly what I was looking for.
Reply with quote
xekon
Apprentice


Joined: 11 Oct 2007
Posts: 154

PostPosted: Tue Jun 09, 2009 10:20 pm   
 
You wouldnt happen to know how to make use of %exec without that seperator "|" showing up?
Reply with quote
Arminas
Wizard


Joined: 11 Jul 2002
Posts: 1265
Location: USA

PostPosted: Tue Jun 09, 2009 11:10 pm   
 
Why not create a function that fills a variable with the text you need to display in the status window? Place the variable in the status window and call the function whenever you update the mob_cp variable?

As for the "|" you could use the %subchar function... Though I suggest the above solution instead.
_________________
Arminas, The Invisible horseman
Windows 7 Pro 32 bit
AMD 64 X2 2.51 Dual Core, 2 GB of Ram
Reply with quote
Display posts from previous:   
Post new topic   Reply to topic     Home » Forums » CMUD 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