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


Joined: 12 Feb 2003
Posts: 93
Location: USA

PostPosted: Wed Sep 19, 2012 1:08 am   

Package Issue
 
I have started breaking my settings files down into packages for easier
distribution and organization just recently.

One thing I find rather annoying as I have upwards of 60 different characters and sessions in my cmud,
is this:
I make a new package, add whatever settings to it, get it all set up properly. save it, attach it to a session.
Then I log on a new session, and it automatically uses that package as well. Generally this ends up with me
having duplicate of a loginscript, triggers firing, etc. Is there a way to set a new package to NOT be automatically
used by every session that logs on?
It would be much easier for me to use that behavior versus logging up each session individually and unchecking
the package in each sessions window.

Also, invariably when I have to load up each session to uncheck, my cmud will gobble 50% CPU and freeze up,
requiring me to force quite it via task manager due to the loading of so many files it seems.
_________________
Mumra the Everliving, Realms of Despair
216.251.47.10 Port 4000
Reply with quote
MattLofton
GURU


Joined: 23 Dec 2000
Posts: 4834
Location: USA

PostPosted: Wed Sep 19, 2012 1:47 am   
 
Quote:
logging up each session individually and unchecking the package in each sessions window.


The advanced tab in Window objects has absolutely nothing to do with the inclusion or removal of packages from a session. All this tab does is tell the window what scripts in other packages it can or cannot use.

Quote:
Is there a way to set a new package to NOT be automatically used by every session that logs on?


Yes, you can go to Preferences and change the list of default packages. You can also do this on an individual session basis by editing the Session Properties and modifying the list in the Packages tab. In neither case do you have to open up a session.
_________________
EDIT: I didn't like my old signature
Reply with quote
Mumra
Wanderer


Joined: 12 Feb 2003
Posts: 93
Location: USA

PostPosted: Wed Sep 19, 2012 2:17 am   
 
MattLofton wrote:
Quote:
logging up each session individually and unchecking the package in each sessions window.


The advanced tab in Window objects has absolutely nothing to do with the inclusion or removal of packages from a session. All this tab does is tell the window what scripts in other packages it can or cannot use.


If it is using the scripts in other packages.. that I do not want to.. I don't see how you can say it has nothing to do with inclusion or removal of packages for a session. If I uncheck it from the session.. 'List of packages ENABLED for this window' it stops. So that to me says it is included. :\

Also, the package I am referring to is not even listed in the 'default packages'. But if I have it open on a character using it, every session still uses it, unless I Uncheck it in the 'list of packages enabled' box on each individual session.

EDIT: I assume that is because these are not 'new' sessions as it says in the preferences window.
_________________
Mumra the Everliving, Realms of Despair
216.251.47.10 Port 4000
Reply with quote
Mumra
Wanderer


Joined: 12 Feb 2003
Posts: 93
Location: USA

PostPosted: Wed Sep 19, 2012 5:26 am   
 
So, no solution to make packages not work across all chars loaded, other than loading each one individual and unchecking the package?

Because the package isn't listed in the 'default packages' for new characters.
Nor is it listed in the 'Session Properties' Packages.


Perhaps I am not using the correct terminlogy by saying packages. I will try to explain in detail what is occurring.

I have 2 'brewer' characters. Each with empty sessions, and no packages loaded other than the default three included with Cmud 2.37.
English Keypad
English Directions
Clickable URLs

I make a new package. I write up fantastic brewing, and scribing settings in this package which I will refer to as 'ALLBREWING' here. Adding in an OnConnect Event in case of disconnects so the bots can reconnect and continue brewing/scribing. I make sure this package is checked for both of my brewers in the 'Advanced' window in the settings. I notice this is now called a Module, as it has no window I guess. Either way. the bots brew and scribe away merrily, perfectly.

I then load another session. It has it's own OnConnect Event for instance. Now, both OnConnect Event's fire off, giving me a load of spam that I don't need for instance. Open Settings, Advanced, Bam. the ALLBREWING is checked for the new session I loaded. That's just a small example. I am forced to uncheck it in the 'Advanced' "List of Packages enabled for this module' to stop this crosstalk and such. I have over 60 different sessions as I said. So now I have to load every session, and uncheck this option because I might at sometime use other characters while my brewers are loaded and thus suffer multiple events, etc.

What I would like is for when I open a package with a session via New Package, for instance... it is only loaded for that session. Not every session that loads while that session is loaded.

Hopefully that is a little more clear. :\
_________________
Mumra the Everliving, Realms of Despair
216.251.47.10 Port 4000
Reply with quote
ins0mnia
Novice


Joined: 23 Jan 2011
Posts: 42
Location: United States

PostPosted: Wed Sep 19, 2012 6:03 am   
 
I can confirm this..

1) Create a new MageChar session and add a new Mage package, close
2) Create a new ClericChar session and add a Cleric package, close
3) Open MageChar then open ClericChar to make a supersession, the Cleric package will have been activated on the MageChar window and vice versa.

This isn't a big issue for 2 sessions/characters, but with more it's a problem. I don't see a simple way to get around this without code duplication ie. copy the Mage module to each mage's session.

I would just use multiple windows under a single Mage package/session, but this screws up the mapper.
Reply with quote
Rahab
Wizard


Joined: 22 Mar 2007
Posts: 2320

PostPosted: Wed Sep 19, 2012 12:55 pm   
 
Yes, the behavior you are seeing is normal. By default when you load a session, any other modules that have already been loaded are enabled, unless they
have been specifically disabled. This is what people would want most frequently, so this is the default behavior. There is no way currently to alter this behavior.
To disable the packages you would need to manually unmark the checkboxes, as you have been doing. Once you have done this, it will remember the setting
for the future, but I'm afraid there is no way to avoid doing this the one time.
Reply with quote
shalimar
GURU


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

PostPosted: Wed Sep 19, 2012 2:27 pm   
 
this can be done by script as well, as i had to figure out when my capturing packages enabled themselves for the windows they capture to, resulting in infinite loops as it recaptures itself indefinately, and ididnt want all my end users having to constantly go in and uncheck boxes. (automatic windows update closing CMUD seems to reset this boxes to checked)


Code:
<event event="onLoad" priority="360" id="30">
  <value>$list=%names
#CALL %pop($list)
#FORALL $list {#CALL @pkgState(%i, %class, 0)}</value>
</event>


<func name="pkgState" id="31">
  <value>#IF (!$window OR !$package) {
  #SAY "Syntax: #CALL @pkgState(window, package, optional 0 or 1)"
  #EXIT
  }
#IF %null( $boolean) {#IF %ismember( $package, %packages( $window)) {$boolean = 0} {$boolean = 1}}
$packages = %packages( $window)
#IF $boolean {#CALL %packages( $window, %additem( $package, $packages))} {#CALL %packages( $window, %delitem( $package, $packages))}</value>
  <arglist>$window,$package,$boolean</arglist>
</func>
_________________
Discord: Shalimarwildcat
Reply with quote
ins0mnia
Novice


Joined: 23 Jan 2011
Posts: 42
Location: United States

PostPosted: Wed Sep 19, 2012 8:00 pm   
 
Rahab wrote:
This is what people would want most frequently, so this is the default behavior.


I don't see how that makes sense. If a package from a first session is not even loaded on the second session, why would I want it to default the package to on when loading said second session?
Opening an already existing session should be consistent with that session's settings, not change them.

Cmud simply doesn't lend well to multiplay because of overlooked points as this, mapper locations being tied to sessions instead of just windows, and just a million other niggles that exist from not being tested to this purpose. I know Zugg spent a lot of time considering implementation for multiplay, but without proper testing and use cases there's no way he could even discover these issues.

shalimar, thanks for the useful response. I'll definitely play with that soon.
Reply with quote
Mumra
Wanderer


Joined: 12 Feb 2003
Posts: 93
Location: USA

PostPosted: Wed Sep 19, 2012 9:45 pm   
 
Where exactly am I putting that Shalimar?
_________________
Mumra the Everliving, Realms of Despair
216.251.47.10 Port 4000
Reply with quote
shalimar
GURU


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

PostPosted: Thu Sep 20, 2012 12:23 am   
 
you put that in the XML tab of a new function and a new event settings
_________________
Discord: Shalimarwildcat
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