Worlds of Carnage
https://www.wocmud.org/forum/

an example of BS Zones?
https://www.wocmud.org/forum/viewtopic.php?f=20&t=129
Page 1 of 2

Author:  Grael [ Mon Jul 18, 2005 8:45:18pm ]
Post subject:  an example of BS Zones?

Guess I never really understood the power or potential of scripting zones. Are there any help docs? Any examples that we could see?

Author:  Blobbie [ Mon Jul 18, 2005 9:44:42pm ]
Post subject:  Re: an example of BS Zones?

Quote:
Guess I never really understood the power or potential of scripting zones. Are there any help docs? Any examples that we could see?
Wel for instance properly randomizing the location of items in the cretan shark area so that players can't beeline to the key was done by using a BlobbieScript zone reset. Feel free to try and decipher for yourselves what is happening in the following zone BlobbieScript:
Code:
protect { static @whaleShark1 if( !%isValid( @whaleShark1 ) ) #@whaleShark1 = %load( mobile, 125205, 125206 ) #%setCharStat( @whaleShark1, npcGroup, 125206 ) endif static @largeShark1 if( !%isValid( @largeShark1 ) ) #@largeShark1 = %load( mobile, 125204, 125213 ) #%setCharStat( @largeShark1, npcGroup, 125207 ) endif //---- static @dolphin1 if( !%isValid( @dolphin1 ) ) #@dolphin1 = %load( mobile, 125217, 125218 ) #%setCharStat( @dolphin1, npcGroup, 125202 ) endif static @dolphin2 if( !%isValid( @dolphin2 ) ) #@dolphin2 = %load( mobile, 125217, 125223 ) #%setCharStat( @dolphin2, npcGroup, 125202 ) endif static @dolphin3 if( !%isValid( @dolphin3 ) ) #@dolphin3 = %load( mobile, 125217, 125204 ) #%setCharStat( @dolphin3, npcGroup, 125202 ) endif //---- static @lamprey1 if( !%isValid( @lamprey1 ) ) #@lamprey1 = %load( mobile, 125208, 125205 ) #%setCharStat( @lamprey1, npcGroup, 125210 ) endif static @lamprey2 if( !%isValid( @lamprey2 ) ) #@lamprey2 = %load( mobile, 125208, 125205 ) #%setCharStat( @lamprey2, npcGroup, 125210 ) endif static @lamprey3 if( !%isValid( @lamprey3 ) ) #@lamprey3 = %load( mobile, 125208, 125208 ) #%setCharStat( @lamprey3, npcGroup, 125210 ) endif static @lamprey4 if( !%isValid( @lamprey4 ) ) #@lamprey4 = %load( mobile, 125208, 125208 ) #%setCharStat( @lamprey4, npcGroup, 125210 ) endif static @lamprey5 if( !%isValid( @lamprey5 ) ) #@lamprey5 = %load( mobile, 125208, 125217 ) #%setCharStat( @lamprey5, npcGroup, 125210 ) endif static @lamprey6 if( !%isValid( @lamprey6 ) ) #@lamprey6 = %load( mobile, 125208, 125217 ) #%setCharStat( @lamprey6, npcGroup, 125210 ) endif static @lamprey7 if( !%isValid( @lamprey7 ) ) #@lamprey7 = %load( mobile, 125208, 125222 ) #%setCharStat( @lamprey7, npcGroup, 125210 ) endif static @lamprey8 if( !%isValid( @lamprey8 ) ) #@lamprey8 = %load( mobile, 125208, 125222 ) #%setCharStat( @lamprey8, npcGroup, 125210 ) endif static @lamprey9 if( !%isValid( @lamprey9 ) ) #@lamprey9 = %load( mobile, 125208, 125224 ) #%setCharStat( @lamprey9, npcGroup, 125210 ) endif static @lamprey10 if( !%isValid( @lamprey10 ) ) #@lamprey10 = %load( mobile, 125208, 125224 ) #%setCharStat( @lamprey10, npcGroup, 125210 ) endif static @lamprey11 if( !%isValid( @lamprey11 ) ) #@lamprey11 = %load( mobile, 125208, 125228 ) #%setCharStat( @lamprey11, npcGroup, 125210 ) endif static @lamprey12 if( !%isValid( @lamprey12 ) ) #@lamprey12 = %load( mobile, 125208, 125228 ) #%setCharStat( @lamprey12, npcGroup, 125210 ) endif //---- static @jellyfish1 if( !%isValid( @jellyfish1 ) ) #@jellyfish1 = %load( mobile, 125202, 125224 ) #%setCharStat( @jellyfish1, npcGroup, 125205 ) endif static @squid1 if( !%isValid( @squid1 ) ) #@squid1 = %load( mobile, 125203, 125228 ) #%setCharStat( @squid1, npcGroup, 125204 ) endif static @whale1 if( !%isValid( @whale1 ) ) #@whale1 = %load( mobile, 125210, 125200 ) #%setCharStat( @whale1, npcGroup, 125201 ) endif //---- static @stuff if( %isNull( @stuff ) ) { #@stuff->1 = 125218 #@stuff->2 = 125219 #@stuff->3 = 125220 #@stuff->4 = 125200 #@stuff->5 = -1 #@stuff->6 = 125221 #@stuff->7 = 125222 #@stuff = %arrayShuffle( @stuff ) } endif //---- static @greatWhite1 if( !%isValid( @greatWhite1 ) ) #@greatWhite1 = %load( mobile, 125212, 125215 ) #%setCharStat( @greatWhite1, npcGroup, 125207 ) endif static @limb1 if( !%isValid( @limb1 ) ) #@limb1 = %load( object, 125202, @greatWhite1 ) endif static @hand1 if( !%isValid( @hand1 ) ) #@hand1 = %load( object, 125210, @greatWhite1, hold ) endif static @treasure1 if( !%isValid( @treasure1 ) && !%isPc( %getOwner( @hand1 ) ) ) #@treasure1 = %load( object, @stuff->1, @hand1 ) endif //---- static @greatWhite2 if( !%isValid( @greatWhite2 ) ) #@greatWhite2 = %load( mobile, 125212, 125217 ) #%setCharStat( @greatWhite2, npcGroup, 125207 ) endif static @limb2 if( !%isValid( @limb2 ) ) #@limb2 = %load( object, 125202, @greatWhite2 ) endif static @hand2 if( !%isValid( @hand2 ) ) #@hand2 = %load( object, 125210, @greatWhite2, hold ) endif static @treasure2 if( !%isValid( @treasure2 ) && !%isPc( %getOwner( @hand2 ) ) ) #@treasure2 = %load( object, @stuff->2, @hand2 ) endif //---- static @greatWhite3 if( !%isValid( @greatWhite3 ) ) #@greatWhite3 = %load( mobile, 125212, 125209 ) #%setCharStat( @greatWhite3, npcGroup, 125207 ) endif static @limb3 if( !%isValid( @limb3 ) ) #@limb3 = %load( object, 125226, @greatWhite3 ) endif static @hand3 if( !%isValid( @hand3 ) ) #@hand3 = %load( object, 125210, @greatWhite3, hold ) endif static @treasure3 if( !%isValid( @treasure3 ) && !%isPc( %getOwner( @hand3 ) ) ) #@treasure3 = %load( object, @stuff->3, @hand3 ) endif //---- static @greatWhite4 if( !%isValid( @greatWhite4 ) ) #@greatWhite4 = %load( mobile, 125212, 125211 ) #%setCharStat( @greatWhite4, npcGroup, 125207 ) endif static @limb4 if( !%isValid( @limb4 ) ) #@limb4 = %load( object, 125227, @greatWhite4 ) endif static @hand4 if( !%isValid( @hand4 ) ) #@hand4 = %load( object, 125210, @greatWhite4, hold ) endif static @treasure4 if( !%isValid( @treasure4 ) && !%isPc( %getOwner( @hand4 ) ) ) #@treasure4 = %load( object, @stuff->4, @hand4 ) endif //---- static @greatWhite5 if( !%isValid( @greatWhite5 ) ) #@greatWhite5 = %load( mobile, 125212, 125213 ) #%setCharStat( @greatWhite5, npcGroup, 125207 ) endif static @limb5 if( !%isValid( @limb5 ) ) #@limb5 = %load( object, 125226, @greatWhite5 ) endif static @hand5 if( !%isValid( @hand5 ) ) #@hand5 = %load( object, 125210, @greatWhite5, hold ) endif static @treasure5 if( !%isValid( @treasure5 ) && !%isPc( %getOwner( @hand5 ) ) ) #@treasure5 = %load( object, @stuff->5, @hand5 ) endif //---- static @greatWhite6 if( !%isValid( @greatWhite6 ) ) #@greatWhite6 = %load( mobile, 125212, 125212 ) #%setCharStat( @greatWhite6, npcGroup, 125207 ) endif static @limb6 if( !%isValid( @limb6 ) ) #@limb6 = %load( object, 125227, @greatWhite6 ) endif static @hand6 if( !%isValid( @hand6 ) ) #@hand6 = %load( object, 125210, @greatWhite6, hold ) endif static @treasure6 if( !%isValid( @treasure6 ) && !%isPc( %getOwner( @hand6 ) ) ) #@treasure6 = %load( object, @stuff->6, @hand6 ) endif //---- static @greatWhite7 if( !%isValid( @greatWhite7 ) ) #@greatWhite7 = %load( mobile, 125212, 125208 ) #%setCharStat( @greatWhite7, npcGroup, 125207 ) endif static @limb7 if( !%isValid( @limb7 ) ) #@limb7 = %load( object, 125227, @greatWhite7 ) endif static @hand7 if( !%isValid( @hand7 ) ) #@hand7 = %load( object, 125210, @greatWhite7, hold ) endif static @treasure7 if( !%isValid( @treasure7 ) && !%isPc( %getOwner( @hand7 ) ) ) #@treasure7 = %load( object, @stuff->7, @hand7 ) endif //---- #@exit = %getRoomExits( 125226 )->down #%setExitStat( @exit, isLocked, 1 ) #@exit = %getRoomExits( 125244 )->up #%setExitStat( @exit, isLocked, 1 ) } endprotect
For the record, this was implemented ages ago, and I could have done it better, but I felt lazy. Also using resolutions would make it a lot clearer... eg:
Code:
#%setCharStat( @greatWhite7, npcGroup, 125207 )
Would be cleaner as:
Code:
#@greatWhite7->npcGroup = 125207

Author:  Blobbie [ Mon Jul 18, 2005 9:52:08pm ]
Post subject:  Re: an example of BS Zones?

Quote:
Guess I never really understood the power or potential of scripting zones. Are there any help docs? Any examples that we could see?
Another good use, that I haven't done yet but is simple enough, you can use it to re-arrange maze structures between zone resets. Very cool if you don't want your maze to be eternally solved after a person first solves it. Just need 3 or 4 rooms that the zone re-arranges the connections on.

Author:  Kayenta [ Mon Jul 18, 2005 9:54:19pm ]
Post subject: 

Good lord. I actually think I understand part of that. wow......................

Author:  Grael [ Tue Jul 19, 2005 7:35:15am ]
Post subject: 

Quote:
Good lord. I actually think I understand part of that. wow......................
Once you learn the quests, the logic behind some of the stuff (when we're so privledged to see it) becomes more understandable!

Author:  Pazam [ Tue Jul 19, 2005 5:04:40pm ]
Post subject: 

in my experience, it is a heck of a lot easier to understand what is already scripted. i almost always understand what blob shows me or what i read but when it comes time to write my own, i usually have more trouble. maybe it's just me =p

Author:  Blobbie [ Tue Jul 19, 2005 7:18:36pm ]
Post subject: 

Quote:
in my experience, it is a heck of a lot easier to understand what is already scripted. i almost always understand what blob shows me or what i read but when it comes time to write my own, i usually have more trouble. maybe it's just me =p
A good part of that is because the functions and variable names I use tend to speak for themselves. However if you aren't completely familiar weith the function library then starting from scratch is much more difficult since you need to seek out what functions you can use to achieve your goal. Viewing my code simplfies that stage since they are presented to you without the need to know the whole library.

Author:  Kayenta [ Tue Jul 19, 2005 8:58:44pm ]
Post subject: 

theres a library of this stuff?!?!?!?!?!?!?

Author:  Pazam [ Tue Jul 19, 2005 9:01:40pm ]
Post subject: 

of course.

Author:  Blobbie [ Tue Jul 19, 2005 9:34:15pm ]
Post subject: 

Quote:
theres a library of this stuff?!?!?!?!?!?!?
Start reading dog!

http://www.wocmud.org/Carnage/blobbieScript/index.phtml

It's all explained. See the "triggers" and "functions" links for the "library" :)

Author:  Kayenta [ Wed Jul 20, 2005 10:09:33am ]
Post subject: 

wow................................. is all i have to say right now...........

Author:  Grael [ Wed Jul 20, 2005 11:35:28am ]
Post subject: 

Quote:
wow................................. is all i have to say right now...........
Don't try to absorb it all at once. As I said, I don't mind lending a hand Kay. It's probably easiest to learn some of the easier functions, and how to use variables properly, then get into the mass number of functions in BS on an as needed basis.

Author:  Kayenta [ Wed Jul 20, 2005 11:44:02am ]
Post subject: 

heheh yeah, was a tad overwhelming =) dont worry, ill keep buggin ya =)

cheers

Author:  Grael [ Wed Jul 20, 2005 11:48:16am ]
Post subject: 

Quote:
heheh yeah, was a tad overwhelming =) dont worry, ill keep buggin ya =)

cheers
Feel free.

Author:  Blobbie [ Wed Jul 20, 2005 2:31:36pm ]
Post subject: 

Quote:
heheh yeah, was a tad overwhelming =)
Whenever it feels like it's overwhelming, just think of lil' ol' me hammering away to not only bring you the BlobbieScript engine, the functions, the triggers, but also the mind-numbing documentation *grin*.

Page 1 of 2 All times are UTC-04:00
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/