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


Joined: 01 Aug 2005
Posts: 76

PostPosted: Fri Mar 16, 2007 2:21 am   

Package Scope
 
I'm trying to understand the scope rules for the new package feature, and I need some help. I've created a new session called TEST, so it gets a package called TEST. I then created another package called YAP (yet another package) that got added to the session. I then created another package called YAP2. Now, I then created a variable in TEST named testVariable. In the YAP package, I created an alias named test that attempts to print the value of testVariable with the #ECHO command. Even if I enable the TEST package as visible for the YAP package/module, I cannot access testVariable from inside YAP. I cannot get access to testVariable until I move it into YAP2 and make YAP2 visible to YAP.

If this description of the packages/settings isn't clear, here's a picture of the 'All Packages' view in the package/settings editor.

What is going on? If I enable it making is visible/usable, should I not be able to see/use it, even if it's in the default session package?
Reply with quote
Fang Xianfu
GURU


Joined: 26 Jan 2004
Posts: 5155
Location: United Kingdom

PostPosted: Fri Mar 16, 2007 2:36 am   
 
The variable's inside a window. Settings inside windows aren't ever visible to any settings outside that window. In order to make the setting visible outside the window, you need to put it in a module. In order to make the setting visible outside the package, you need to set that module either to Global or External publication.

So to make the variable accesible to the YAP alias, create a module inside the TEST package and set it to Global. Move testVariable inside it and you're done.
_________________
Rorso's syntax colouriser.

- Happy bunny is happy! (1/25)
Reply with quote
Aleron
Wanderer


Joined: 01 Aug 2005
Posts: 76

PostPosted: Fri Mar 16, 2007 2:52 am   
 
Ah, interesting. Thank you very much for clearing that up.
Reply with quote
hogarius
Adept


Joined: 29 Jan 2003
Posts: 221
Location: islands.genesismuds.org

PostPosted: Fri Mar 16, 2007 11:07 am   
 
Fang, that simple explanation was wonderful. I've not really needed or tried to mess with packages and modules and such, but your short reply "clicked" and helps me understand them and their relationships better than everything I've seen, even if I still don't need to use them.

Sometimes concise is very cool. Well done!
Reply with quote
Aleron
Wanderer


Joined: 01 Aug 2005
Posts: 76

PostPosted: Fri Mar 16, 2007 11:41 am   
 
hogarius wrote:
Fang, that simple explanation was wonderful. I've not really needed or tried to mess with packages and modules and such, but your short reply "clicked" and helps me understand them and their relationships better than everything I've seen, even if I still don't need to use them.


Agreed. That piece helped me realize how to structure all my scripts in CMUD. I figured if anything in another package couldn't see my settings in the main package (that were under the main window), I'd just put everything in external packages. That's not the way I wanted to go. :)
Reply with quote
bishopnenar
Beginner


Joined: 20 Mar 2007
Posts: 27

PostPosted: Tue Mar 20, 2007 5:39 pm   
 
I have been having a similar problem.

I have this:

- [Main Window]
| |
| |_ [Main Module] (set to global)
|
|
|
|
-[New Package] (set to global)

In "Main Module" I have the HEALTH variable.
In "New Package" I have the following alias;
#ALIAS autosip {#IF (@health<@htd) {drink health} {#ECHO Nothing}}

Very basic, but every time I autosip, I drink health no matter what my health is. HTD is a set number that is figured with triggers in "New Package".
Thought I set everything as mentioned in this topic, but doesn't seem to work for me.

Any advice?


Later I tried just moving everything need to the "New Package" and for some reason my #IF is reading backwards?! My Health is GREATER THEN the htd number and it tries to drink health?!
Reply with quote
Tech
GURU


Joined: 18 Oct 2000
Posts: 2733
Location: Atlanta, USA

PostPosted: Tue Mar 20, 2007 6:37 pm   
 
Well for starters, you have you module under your window. This should not be. They are not designed to work like that (it's an outstanding to-do for Zugg to disable the capability to do so.).

Try this organization.


- [Main Window]
|
- [Main Module]
|
|
- [New Package]


If that still doesn't work try putting a space in the command like so. I'm not are of any parsing issues in this scenario but it's possible you uncovered a parsing error. i can't test this since I'm not able to access CMUD at work.

#ALIAS autosip {#IF (@health < @htd) {drink health} {#ECHO Nothing}}
_________________
Asati di tempari!
Reply with quote
Fang Xianfu
GURU


Joined: 26 Jan 2004
Posts: 5155
Location: United Kingdom

PostPosted: Wed Mar 21, 2007 1:34 am   
 
Also, my advice would be that if you don't intend to give out your packages, you probably don't need to use them. Packages overcomplicate things in most situations. That said, there's definitely something weird going on here.

I recreated the scenario you describe (minus the improper module placement) and had the alias print the value of @health that it was seeing - it always printed null. Since null's interpreted as 0 by expression evaluation, that's why it's always coming out as true.

This shouldn't be happening, because the alias will look in global modules after it's looked in the current package, won't it? Can anyone else confirm this happening.

If it does turn out to be a bug you should start another thread too.
Reply with quote
bishopnenar
Beginner


Joined: 20 Mar 2007
Posts: 27

PostPosted: Thu Mar 22, 2007 12:01 am   
 
Fang Xianfu wrote:

This shouldn't be happening, because the alias will look in global modules after it's looked in the current package, won't it? Can anyone else confirm this happening.

If it does turn out to be a bug you should start another thread too.


Got the modules right, seems to work.

BUT, I have everything under one main module now (for the chuck of my coding) I was writting a VERY basic #IF

#IF (@flame) {belch;morph jaguar} {morph jaguar}

@flame was TRUE, the alias kept firing the false statement. I tried #If (@flame = 1) and #IF (@flame=1).

Is there something simply wrong with my Cmud? This should be the most basic #IF, correct? Again the alias and variable are in different class folders but the same module.

Please any advice. Here is the compiled code too if that helps:
0000 LINE 0 ; #IF (@flame) {belch;morph jaguar} {morph jaguar}
0012 PUSHEXP 0028
0020 JUMP 0064
0028 VARREF @flame <flame> (class Aetolia)
0052 SETEXP 0 0
0064 ARGSTR @flame
0080 PUSHLOC 0096
0088 JUMP 0168
0096 ALIAS belch (-1) <?> (class Aetolia)
0124 STR 'jaguar'
0140 ALIAS morph (1) <?> (class Aetolia)
0168 ARGSTR belch;morph jaguar
0196 PUSHLOC 0212
0204 JUMP 0256
0212 STR 'jaguar'
0228 ALIAS morph (1) <?> (class Aetolia)
0256 ARGSTR morph jaguar
0276 CMD if (3)
Reply with quote
Fang Xianfu
GURU


Joined: 26 Jan 2004
Posts: 5155
Location: United Kingdom

PostPosted: Thu Mar 22, 2007 1:04 am   
 
Post a new thread about this bug and Zugg will take a look at it. I can't get the different classes thing to fail, which would suggest that your package is corrupt, but the different packages thing still fails even with totally new packages. They'll probably suggest that you mail the package to support@zuggsoft.com, but post the thread to make sure.
_________________
Rorso's syntax colouriser.

- Happy bunny is happy! (1/25)
Reply with quote
Tech
GURU


Joined: 18 Oct 2000
Posts: 2733
Location: Atlanta, USA

PostPosted: Thu Mar 22, 2007 7:48 am   
 
I agree with Fang... I just tested your #if statement and it works perfectly fine here. So I suspect your package maybe messed up from earlier versions.
_________________
Asati di tempari!
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