AnomJobs - Trouble With Installation



  • I'm running into issues trying to install Anomaly Jobs, so I thought I'd ask here. It's one of the more necessary things to have, I think.

    I'm using this version:
    https://github.com/lashtear/Anomaly-Jobs/blob/master/full/jobs-full.txt

    I can't get much further than the first few bits:

    =============================================================================
    
                             Setting up Anomaly Jobs v6.4                         
      =============================================================================
    ANOMALY JOBS: Checking current installation.
    ANOMALY JOBS: No previous jobs installation found. Creating a new one.
    I don't see that here.
    I don't see that here.
    I don't see that here.
    

    That's as far as it goes. I thought maybe if I @created the jobs object manually it might work, but it does this:

    ANOMALY JOBS: Not a valid Jobs 5 or later installation.
    ANOMALY JOBS: Aborting. Cancel this script in your client.
    

    Has anyone run into this issue, and can I ask how you resolved it?


  • Tutorialist

    What are the permissions of the bit trying to install it? The "I don't see that here." makes me think that something isn't being created, or isn't being seen.



  • @cobaltasaurus I'm installing on #1, the starting Wizard bit. I thought the same, like it's not creating the object when it should.

    Here's the bit of code where it seems to get screwy:

    @switch [ifelse(isdbref(setr(0,switch(first(version()),PennMUSH,lsearch(all,eobjects,[strmatch(name(##),Job Global Object <JGO>)]),RhostMUSH,searchng(object=Job Global Object <JGO>),search(object=Job Global Object <JGO>)))),setq(1,get(%q0/VA)),[setq(1,switch(first(version()),PennMUSH,lsearch(all,eobjects,[strmatch(name(##),Job Database <JD>)]),RhostMUSH,searchng(object=Job Database <JD>),search(object=Job Database <JD>)))][setq(0,loc(%q1))])][isdbref(%q0)][and(isdbref(%q1),gte(edit(first(default(%q1/version,0),.),v,),5))]=0*,{think [ansi(hc,ANOMALY JOBS:)] No previous jobs installation found.  Creating a new one.;&JOB_GO %#=setr(0,create(Job Global Object <JGO>,10));&JOB_VA %#=setr(1,create(Job Database <JD>,10));&JOB_VB %#=setr(2,create(Job Tracker,10));&JOB_VC %#=setr(3,create(Job Parent Object <JPO>,10));&JOB_PATCH %#=0;@tel %q1=%q0;@tel %q2=%q0;@tel %q3=%q0;},10*,{think [ansi(hc,ANOMALY JOBS:)] [ansi(hr,Not a valid Jobs 5 or later installation.)];think [ansi(hc,ANOMALY JOBS:)] [ansi(hr,Aborting. Cancel this script in your client.)];&JOB_GO %#=#-1;&JOB_VA %#=#-1;&JOB_VB %#=#-1;&JOB_VC %#=#-1;&JOB_PATCH %#=1;},{think [ansi(hc,ANOMALY JOBS:)] Current installation found.  Updating.;&JOB_GO %#=%q0;&JOB_VA %#=%q1;&JOB_VB %#=get(%q0/VB);&JOB_VC %#=get(%q0/VC);&JOB_PATCH %#=1;}
    

  • Tutorialist

    @highfalutin What codebase are you installing on?



  • @cobaltasaurus Tinymux, version MUX 2.10.1.14.



  • @highfalutin What is it outputting if you put in just that line?



  • @skew

    With just that line:

    ANOMALY JOBS: No previous jobs installation found. Creating a new one.
    Set.
    Set.
    Set.
    Set.
    Set.
    I don't see that here.
    I don't see that here.
    I don't see that here.
    


  • @highfalutin Can you verify that all the additional objects were made?

    		&JOB_GO %#=setr(0,create(Job Global Object <JGO>,10));
    		&JOB_VA %#=setr(1,create(Job Database <JD>,10));
    		&JOB_VB %#=setr(2,create(Job Tracker,10));
    		&JOB_VC %#=setr(3,create(Job Parent Object <JPO>,10));
    

    It should be creating those 4 objects.



  • @skew Hmm. None of the objects were created.

    I noticed these attributes on my Wizard bit. Unsure if relevant:

    &JOB_VA me=#-1 OUT OF RANGE
    &JOB_VB me=#-1 OUT OF RANGE
    &JOB_VC me=#-1 OUT OF RANGE
    &JOB_PATCH me=0
    


  • Soooo... what happens next? I mean, if you just continue? I vaguely recall there being all sorts of nonsense "I don't see that here" when I did it last.



  • @skew Okay so! I did this: Manually @created the four objects, and manually set the &job_va, etc., attributes on myself with the dbrefs. I tried again after doing that, and while a lot of it worked, a lot of it still didn't. The spots where it failed were almost universally where JOB_PATCH was involved, which... I didn't have a JOB_PATCH attribute or object, so that makes sense.

    I went back up to lashtear's repository and grabbed the patch, and installed that first.

    Now I'm going through line by line of the full Anomaly Jobs file, muxifying them, then entering them one by one to make sure I can see exactly where it is if the setup borks. Thus far, none of the problem lines have been problems.

    Will update if this works. I think it might.



  • For the most part things seem to be working, with a few exceptions. The bbgroups weren't created by the installation, and for whatever reason I can't create "Job Tracker" manually. I can create any other bbgroup with any other name, but "Job Tracker" saves as "#-2" on the bbpocket and refuses to display even when the dbref is manually set. No idea...

    Lines that print "That's terrific, but what should I do with the list?" when entered:

    @dolist lcon([v(JOB_VC)])={@switch [first(version())]=PennMUSH,{@set ##=!HALT},{@set ##=!HALTED};@switch [first(version())]=TinyMUSH,{@set ##=!COMMANDS},{@set ##=NO_COMMAND};@set ##=UNFINDABLE;@switch [first(version())]=PennMUSH,{@set ##=WIZARD},{@set ##=INHERIT};}
    

    Problem lines (Those that just hung, no error messages):

    @switch [v(JOB_PATCH)]=1,{@dolist STARTUP BUCKET_HEADER DATA_CHARS2 DISPLAY_MYHEADERS DISPLAY_MYJOB MYJOBS_HEADER FIL_DELETE FN_ANSIFY FN_COORD2ANG FN_EASYPIE_PENN FN_EASYPIE_TINY FN_GENDATA MAP_GENDATA MAP_GENDATA2 PENN_PIE PENN10_PIE PENN12_PIE FN_NEW_JOBS FN_PACK IS_PLAYER JOBS_HEADER JOBS_HEADER2 MAP_ANSIFY MAP_ARTSGRAPH MAP_NAME2 MAP_NEW MAP_ISPLAYER MAP_PMATCH MAP_READERS={@switch [hasattr(v(JOB_VA),##)]=1,&## [v(JOB_VA)]}}
    
    @switch [v(JOB_PATCH)]=0,{&ACCESS [v(JOB_VC)]=lit([u(%va/FN_STAFFALL,%#)]);&ACCESS_DESC [v(JOB_VC)]=lit([u(%va/FN_STAFFALL,%0)]);&ACCESS_HELP [v(JOB_VC)]=lit([u(%va/FN_STAFFALL,%0)]);&ACCESS_HIDDEN [v(JOB_VC)]=lit([u(%va/FN_WIZONLY,%0)]);&ACCESS_LOCKED [v(JOB_VC)]=lit([u(%va/FN_WIZONLY,%0)]);&ACCESS_LOGFILE [v(JOB_VC)]=lit([u(%va/FN_WIZONLY,%0)]);&ACCESS_MYJOBS [v(JOB_VC)]=lit([u(%va/FN_WIZONLY,%0)]);&ACCESS_POST_APPROVE [v(JOB_VC)]=lit([u(%va/FN_WIZONLY,%0)]);&ACCESS_POST_COMPLETE [v(JOB_VC)]=lit([u(%va/FN_WIZONLY,%0)]);&ACCESS_POST_DENY [v(JOB_VC)]=lit([u(%va/FN_WIZONLY,%0)]);&ACCESS_TURNAROUND [v(JOB_VC)]=lit([u(%va/FN_WIZONLY,%0)]);}
    
    @switch [hasattr(v(JOB_VC),STAT_ART)]=0,{&STAT_ART [v(JOB_VC)]=0 0}
    
    @switch [v(JOB_PATCH)]=0,{think [setq(0,create(ADMIN,10))][setq(1,create(Job 1,10))];@Desc %q0=For game administrative issues.;@lock/Speech %q0=ACCESS/1;&ACCESS %q0=lit([u(%va/FN_STAFFALL,%#)]);@parent %q0=[v(JOB_VC)];@tel %q0=[v(JOB_VC)];think [ansi(hc,ANOMALY JOBS:)] Creating initial job.;&OPENED_BY %q1=%#;&OPENED_ON %q1=[secs()];&MODIFIED_ON %q1=[secs()];&STATUS %q1=1;&TITLE %q1=Welcome;@parent %q1=%q0;@tel %q1=[v(JOB_VA)];&NUM_COMMENT %q1=3;&LIST_STATS %q1=ADD|1;&PRIORITY %q1=1;&COMMENT_1 %q1=CRE|[secs()]|#0|Anomaly Jobs|Thank you for choosing Anomaly Jobs. This is fully-featured task tracking code that helps to keep games organized. Please see '+jobs/credits' for information on version, license and other credits.;&COMMENT_2 %q1=ADD|[secs()]|#0|Anomaly Jobs|Remember that /complete posts to the public BBS (unless changed for a bucket - see the help file on buckets). /approve and /deny sends mail to the job-creator, and posts to private BBS.;@set %q1=UNFINDABLE;&JOBS_NUM [v(JOB_VA)]=1;&MAX_JOBS [v(JOB_VA)]=200;@switch [first(version())]=TinyMUSH,{@set %q1=!COMMANDS},{@set %q1=NO_COMMAND}}
    
    @switch [v(JOB_PATCH)]=0,{think [setq(0,create(APPS,10))];@Desc %q0=Character applications submitted for review.;@lock/Speech %q0=ACCESS/1;&ALETTER_OTH %q0=lit(Application for approval submitted by [name(%1)].);&MLETTER_OTH %q0=lit(You have submitted an application for approval. Please give staff some time to process the application. You will hear back soon.);&MLETTER_APR %q0=lit(You have been approved by [name(%2)].);&PLETTER_APR %q0=lit([name(%2)] has approved [name(get(%0/OPENED_BY))] for roleplay.);&ACCESS %q0=lit([u(%va/FN_STAFFALL,%#)]);@parent %q0=[v(JOB_VC)];@tel %q0=[v(JOB_VC)]}
    
    @switch [v(JOB_PATCH)]=0,{think [setq(0,create(BUILD,10))];@Desc %q0=For building issues and typo reports.;@lock/Speech %q0=ACCESS/1;&PUBLIC %q0=1;&ACCESS %q0=lit([or(haspower(%#,builder),u(%va/FN_STAFFALL,%#))]);@set %q0=SAFE;@parent %q0=[v(JOB_VC)];@tel %q0=[v(JOB_VC)]}
    @switch [v(JOB_PATCH)]=0,{think [setq(0,create(CGEN,10))];@Desc %q0=For character generation problems and updates.;@lock/Speech %q0=ACCESS/1;&ACCESS %q0=lit([u(%va/FN_STAFFALL,%#)]);@parent %q0=[v(JOB_VC)];@tel %q0=[v(JOB_VC)]}
    @switch [v(JOB_PATCH)]=0,{think [setq(0,create(CODE,10))];@Desc %q0=For bugs and code enhancements.;@lock/Speech %q0=ACCESS/1;&PUBLIC %q0=1;&ACCESS %q0=lit([u(%va/FN_STAFFALL,%#)]);@set %q0=SAFE;@parent %q0=[v(JOB_VC)];@tel %q0=[v(JOB_VC)]}
    @switch [v(JOB_PATCH)]=0,{think [setq(0,create(FEEP,10))];@Desc %q0=Storage for unimplemented game ideas.;@lock/Speech %q0=ACCESS/1;&HIDDEN %q0=1;&ACCESS %q0=lit([u(%va/FN_STAFFALL,%#)]);@parent %q0=[v(JOB_VC)];@tel %q0=[v(JOB_VC)]}
    @switch [v(JOB_PATCH)]=0,{think [setq(0,create(FORUM,10))];@Desc %q0=Tabled discussion jobs. Feedback needed.;@lock/Speech %q0=ACCESS/1;&ACCESS %q0=lit([u(%va/FN_STAFFALL,%#)]);@parent %q0=[v(JOB_VC)];@tel %q0=[v(JOB_VC)]}
    
    @switch [v(JOB_PATCH)]=0,{think [setq(0,create(PITCH,10))];@Desc %q0=Pitched plots and stories.;@lock/Speech %q0=ACCESS/1;&ACCESS %q0=lit([u(%va/FN_STAFFALL,%#)]);&HIDDEN %q0=1;@set %q0=SAFE;@parent %q0=[v(JOB_VC)];@tel %q0=[v(JOB_VC)]}
    @switch [v(JOB_PATCH)]=0,{think [setq(0,create(PUB,10))];@Desc %q0=Public jobs. Everyone has +myjobs access.;@lock/Speech %q0=ACCESS/1;&ACCESS %q0=lit([u(%va/FN_STAFFALL,%#)]);&TRANSPARENT %q0=1;&PUBLIC %q0=1;&HOOK_CRE %q0=lit(@set %0/COMMENT_1=no_inherit);@parent %q0=[v(JOB_VC)];@tel %q0=[v(JOB_VC)]}
    @switch [v(JOB_PATCH)]=0,{think [setq(0,create(QUERY,10))];@Desc %q0=Query bucket.;@lock/Speech %q0=ACCESS/1;&PRIORITY %q0=2;&PUBLIC %q0=1;&ACCESS %q0=lit([u(%va/FN_STAFFALL,%#)]);&TURNAROUND %q0=168;&HOOK_OTH %q0=lit(@set %0/COMMENT_1=no_inherit;&ASSIGNED_TO %0=%1);&MLETTER_OTH %q0=lit(You have been issued an official query by the jobs system by [name(%2)]. You have [div(v(TURNAROUND),24)] days at the time of this mail to respond to the query%, otherwise staff may need to act on the issue without your input. To see your query%, please type '+myjob [last(name(%0))]'.);@set %q0=SAFE;@parent %q0=[v(JOB_VC)];@tel %q0=[v(JOB_VC)]}
    @switch [v(JOB_PATCH)]=0,{think [setq(0,create(REQ,10))];@Desc %q0=Player requests.;@lock/Speech %q0=ACCESS/1;&PUBLIC %q0=1;&PRIORITY %q0=2;&ACCESS %q0=lit([u(%va/FN_STAFFALL,%#)]);&TURNAROUND %q0=72;&LOGFILE %q0=reqlog;&MLETTER_OTH %q0=lit(You have requested '[name(%0)]: [get(%0/TITLE)]' from staff: %r%r%3%r%r[repeat(-,75)]%rSee '[ansi(h,+help myjobs)]' for help on how to display and add to your jobs.%r%rPlease give staff at least [u(me/TURNAROUND)] hours from the date of this mail to process your request.);@set %q0=SAFE;@parent %q0=[v(JOB_VC)];@tel %q0=[v(JOB_VC)]}
    @switch [v(JOB_PATCH)]=0,{think [setq(0,create(RP,10))];@Desc %q0=For storing potential plots.;@lock/Speech %q0=ACCESS/1;&ACCESS %q0=lit([u(%va/FN_STAFFALL,%#)]);&ACCESS_APPROVED %q0=lit([u(%va/FN_WIZONLY,%0)]);&ACCESS_ARC %q0=lit([u(%va/FN_STAFFALL,%0)]);&ACCESS_PLAYERS %q0=lit([u(%va/FN_STAFFALL,%0)]);&ACCESS_SCHEDULE %q0=lit([u(%va/FN_STAFFALL,%0)]);&ACCESS_STAFF %q0=lit([u(%va/FN_STAFFALL,%0)]);&ACCESS_SYNOPSIS %q0=lit([u(%va/FN_STAFFALL,%0)]);&ERROR_PLAYERS %q0=lit(I don't recognize [ansi(h,%qp)] as a player.);&ERROR_STAFF %q0=lit(I don't recognize [ansi(h,%qp)] as a player.);&HIDDEN %q0=1;&MAP_NAME %q0=lit([name(*%0)]);&PROCESS_APPROVED %q0=lit([setq(3,APPROVED)][setq(1,%0)]1);&PROCESS_ARC %q0=lit([setq(3,PLOT_ARC)][setq(1,u(%va/FN_STRTRUNC,%0,50))]);&PROCESS_PLAYERS %q0=lit([setq(3,PLAYERS)][ifelse(not(gt(strlen(u(%va/fn_trim,squish(iter(%0,ifelse(not(isdbref(pmatch(itext(0)))),setr(p,itext(0)),))))),0)),[setq(9,iter(%0,pmatch(itext(0))))][setq(8,get(%1/PLAYERS))][iter(%q9,ifelse(gt(member(%q8,##),0),setq(8,remove(%q8,##)),setq(8,setunion(%q8,##))))][setq(1,%q8)]1,0)]);&PROCESS_SCHEDULE %q0=lit([setq(3,SCHEDULE)][setq(1,u(%va/FN_STRTRUNC,%0,50))]1);&PROCESS_STAFF %q0=lit([setq(3,WRITER)][ifelse(not(gt(strlen(u(%va/fn_trim,squish(iter(%0,ifelse(not(isdbref(pmatch(itext(0)))),setr(p,itext(0)),))))),0)),[setq(9,iter(%0,pmatch(itext(0))))][setq(8,get(%1/WRITER))][iter(%q9,ifelse(gt(member(%q8,##),0),setq(8,remove(%q8,##)),setq(8,setunion(%q8,##))))][setq(1,%q8)]1,0)]);&PROCESS_SYNOPSIS %q0=lit([setq(3,BRIEF)][setq(1,%0)]1);&SUMMARY %q0=lit([rjust(ansi(hc,Approved:),10)]%b[ifelse(u(%va/FN_HASATTRP,%0,APPROVED),get(%0/APPROVED),Unapproved)]%r[rjust(ansi(hc,Players:),10)]%b[ifelse(u(%va/FN_HASATTRP,%0,PLAYERS),u(%va/FN_ITEMIZE,map(me/MAP_NAME,get(%0/PLAYERS),%b,|),|),Nobody)]%r[rjust(ansi(hc,Schedule:),10)]%b[ifelse(u(%va/FN_HASATTRP,%0,SCHEDULE),get(%0/SCHEDULE),Unset)]%r[rjust(ansi(hc,Arc:),10)]%b[ifelse(u(%va/FN_HASATTRP,%0,PLOT_ARC),get(%0/PLOT_ARC),Unset)]%r[rjust(ansi(hc,Staff:),10)]%b[ifelse(u(%va/FN_HASATTRP,%0,WRITER),u(%va/FN_ITEMIZE,map(me/MAP_NAME,get(%0/WRITER),%b,|),|),Nobody)]%r[rjust(ansi(hc,Synopsis:),10)]%b[ifelse(u(%va/FN_HASATTRP,%0,BRIEF),get(%0/BRIEF),Unset)]);&HELP %q0=lit(%r[space(5)]This bucket is for plots that have potential but aren't yet ready to run. Jobs in this bucket should remain here until the plot is approved to be run.%r%r[u(%va/FN_BREAK,ansi(hc,Settings for +job/sumset))]%r[ljust(ansi(h,PLAYERS),10)] Accepts <player> as a valid parameter.%r[ljust(ansi(h,SCHEDULE),10)] Describe when the plot is in effect.%r[ljust(ansi(h,ARC),10)] Describes the story arc associated to this plot.%r[ljust(ansi(h,STAFF),10)] Accepts <player> as a valid parameter.%r[ljust(ansi(h,SYNOPSIS),10)] A brief synopsis of the plot.%r[ljust(ansi(h,APPROVED),10)] Wiz-only, for approving plots. Accepts 'yes' or 'no'.);@parent %q0=[v(JOB_VC)];@tel %q0=[v(JOB_VC)]}
    
    @switch [v(JOB_PATCH)]=0,{think [setq(0,create(TECH,10))];@Desc %q0=Technology issues - weapon objects, etc.;@lock/Speech %q0=ACCESS/1;&ACCESS %q0=lit([u(%va/FN_STAFFALL,%#)]);@parent %q0=[v(JOB_VC)];@tel %q0=[v(JOB_VC)]}
    @switch [v(JOB_PATCH)]=0,{think [setq(0,create(THEME,10))];@Desc %q0=Thematic issues and discussion.;@lock/Speech %q0=ACCESS/1;&ACCESS %q0=lit([u(%va/FN_STAFFALL,%#)]);@parent %q0=[v(JOB_VC)];@tel %q0=[v(JOB_VC)]}
    @switch [v(JOB_PATCH)]=0,{think [setq(0,create(TPS,10))];@Desc TPS=Actively running tiny plots.;@lock/Speech TPS=ACCESS/1;&SUMMARY TPS=lit([rjust(ansi(hc,Approved:),10)]%b[ifelse(u(%va/FN_HASATTRP,%0,APPROVED),get(%0/APPROVED),Unapproved)]%r[rjust(ansi(hc,Players:),10)]%b[ifelse(u(%va/FN_HASATTRP,%0,PLAYERS),u(%va/FN_ITEMIZE,map(me/MAP_NAME,get(%0/PLAYERS),%b,|),|),Nobody)]%r[rjust(ansi(hc,Schedule:),10)]%b[ifelse(u(%va/FN_HASATTRP,%0,SCHEDULE),get(%0/SCHEDULE),Unset)]%r[rjust(ansi(hc,Arc:),10)]%b[ifelse(u(%va/FN_HASATTRP,%0,PLOT_ARC),get(%0/PLOT_ARC),Unset)]%r[rjust(ansi(hc,Staff:),10)]%b[ifelse(u(%va/FN_HASATTRP,%0,WRITER),u(%va/FN_ITEMIZE,map(me/MAP_NAME,get(%0/WRITER),%b,|),|),Nobody)]%r[rjust(ansi(hc,Synopsis:),10)]%b[ifelse(u(%va/FN_HASATTRP,%0,BRIEF),get(%0/BRIEF),Unset)]);&MAP_NAME TPS=lit([name(*%0)]);&ACCESS TPS=lit([u(%va/FN_STAFFALL,%#)]);&ACCESS_PLAYERS TPS=lit([u(%va/FN_STAFFALL,%0)]);&PROCESS_PLAYERS TPS=lit([setq(3,PLAYERS)][ifelse(not(gt(strlen(u(%va/fn_trim,squish(iter(%0,ifelse(not(isdbref(pmatch(itext(0)))),setr(p,itext(0)),))))),0)),[setq(9,iter(%0,pmatch(itext(0))))][setq(8,get(%1/PLAYERS))][iter(%q9,ifelse(gt(member(%q8,##),0),setq(8,remove(%q8,##)),setq(8,setunion(%q8,##))))][setq(1,%q8)]1,0)]);&ERROR_PLAYERS TPS=lit(I don't recognize [ansi(h,%qp)] as a player.);&ACCESS_SCHEDULE TPS=lit([u(%va/FN_STAFFALL,%0)]);&PROCESS_SCHEDULE TPS=lit([setq(3,SCHEDULE)][setq(1,u(%va/FN_STRTRUNC,%0,50))]1);&ERROR_SCHEDULE TPS=lit(You must enter a valid date string.);&ACCESS_ARC TPS=lit([u(%va/FN_STAFFALL,%0)]);&PROCESS_ARC TPS=lit([setq(3,PLOT_ARC)][setq(1,u(%va/FN_STRTRUNC,%0,50))]);&ACCESS_STAFF TPS=lit([u(%va/FN_STAFFALL,%0)]);&PROCESS_STAFF TPS=lit([setq(3,WRITER)][ifelse(not(gt(strlen(u(%va/fn_trim,squish(iter(%0,ifelse(not(isdbref(pmatch(itext(0)))),setr(p,itext(0)),))))),0)),[setq(9,iter(%0,pmatch(itext(0))))][setq(8,get(%1/WRITER))][iter(%q9,ifelse(gt(member(%q8,##),0),setq(8,remove(%q8,##)),setq(8,setunion(%q8,##))))][setq(1,%q8)]1,0)]);&ERROR_STAFF TPS=lit(I don't recognize [ansi(h,%qp)] as a player.);&ACCESS_SYNOPSIS TPS=lit([u(%va/FN_STAFFALL,%0)]);&PROCESS_SYNOPSIS TPS=lit([setq(3,BRIEF)][setq(1,%0)]1);&ACCESS_APPROVED TPS=lit([u(%va/FN_WIZONLY,%0)]);&PROCESS_APPROVED TPS=lit([setq(3,APPROVED)][setq(1,%0)]1);&HELP TPS=lit(%r[space(5)]This bucket is for currently active plots that are running on the grid. Care should be taken to keep the headers of these jobs up-to-date, especially in terms of Progress settings and due dates. When the plot is completed, the job should be set complete and left open until follow-up requests are completed.%r%r[u(%va/FN_BREAK,ansi(hc,Settings for +job/sumset))]%r[ljust(ansi(h,PLAYERS),10)] Accepts <player> as a valid parameter.%r[ljust(ansi(h,SCHEDULE),10)] Describe when the plot is in effect.%r[ljust(ansi(h,ARC),10)] Describes the story arc associated to this plot.%r[ljust(ansi(h,STAFF),10)] Accepts <player> as a valid parameter.%r[ljust(ansi(h,SYNOPSIS),10)] A brief synopsis of the plot.%r[ljust(ansi(h,APPROVED),10)] Wiz-only, for approving plots. Accepts 'yes' or 'no'.);@parent TPS=[v(JOB_VC)];@tel TPS=[v(JOB_VC)]}
    
    @switch [v(JOB_PATCH)]=0,{&HAS_ACCESS [v(JOB_VA)]=lit([or(haspower(%0,builder),u(%va/FN_STAFFALL,%0))]);&ADD_ACCESS [v(JOB_VA)]=lit([u(%va/FN_STAFFALL,%0)]);&APPROVE_ACCESS [v(JOB_VA)]=lit([u(%va/FN_STAFFALL,%0)]);&COMPLETE_ACCESS [v(JOB_VA)]=lit([u(%va/FN_STAFFALL,%0)]);&CREATE_ACCESS [v(JOB_VA)]=lit([u(%va/FN_STAFFALL,%0)]);&DENY_ACCESS [v(JOB_VA)]=lit([u(%va/FN_STAFFALL,%0)]);&EDIT_ACCESS [v(JOB_VA)]=lit([u(%va/FN_STAFFALL,%0)]);&GIVE_ACCESS [v(JOB_VA)]=lit([u(%va/FN_WIZONLY,%0)]);&LOG_ACCESS [v(JOB_VA)]=lit([u(%va/FN_WIZONLY,%0)]);&MAIL_ACCESS [v(JOB_VA)]=lit([u(%va/FN_STAFFALL,%0)]);&STATS_ACCESS [v(JOB_VA)]=lit([u(%va/FN_STAFFALL,%0)]);&CONFIG_ACCESS [v(JOB_VA)]=lit([u(%va/FN_STAFFALL,%0)]);}
    
    @switch [v(JOB_PATCH)]=0,{&JOB_LOGGING [v(JOB_VA)]=1;&LOGFILE [v(JOB_VC)]=joblog}
    
    @switch [v(JOB_PATCH)]=0,{&INSTALL_DATE [v(JOB_VA)]=[time()]}
    
    @switch [setq(0,switch(first(version()),PennMUSH,lsearch(all,eobjects,[strmatch(name(##),bbpocket)]),RhostMUSH,searchng(object=bbpocket),search(object=bbpocket)))][isdbref(%q0)][v(JOB_PATCH)]=0*,{think [ansi(hc,ANOMALY JOBS:)] Couldn't find Myrddin's BBS. Installation is not complete.},10,{think [ansi(hc,ANOMALY JOBS:)] Setting up the BBS.;&BBPOCKET [v(JOB_VC)]=%q0;+bbnewgroup Job Tracker;@wait 2={+bbnewgroup Staff Job Tracker};@wait 5={&POST_COMPLETE [setq(1,extract(u(%q0/GROUPS),dec(words(u(%q0/GROUPS))),1))][setq(2,last(u(%q0/GROUPS)))][setq(3,v(JOB_VB))][setq(4,switch(first(version()),RhostMUSH,lit(gte(bittype(%0),2)),PennMUSH,lit(orflags(%0,Wr)),lit(orflags(%0,WZ))))][v(JOB_VC)]=%q1;&POST_APPROVE [v(JOB_VC)]=%q2;&POST_DENY [v(JOB_VC)]=%q2;&POST_DELETE [v(JOB_VC)]=%q2;&CANREAD %q1=1;&CANWRITE %q1=%[or%(strmatch%(%%0,%q3%),%q4%)%];&CANREAD %q2=%q4;&CANWRITE %q2=%[or%(strmatch%(%%0,%q3%),%q4%)%];}},{think [ansi(hc,ANOMALY JOBS:)] Updating BBS settings.;&BBPOCKET [v(JOB_VC)]=%q0;@dolist [v(JOB_VC)] [lcon(v(JOB_VC))]={@switch [and(hasattr(##,POST_COMPLETE),isnum(get(##/POST_COMPLETE)))][and(hasattr(##,POST_APPROVE),isnum(get(##/POST_APPROVE)))][and(hasattr(##,POST_DENY),isnum(get(##/POST_DENY)))][and(hasattr(##,POST_DELETE),isnum(get(##/POST_DELETE)))]=1???,{&POST_COMPLETE ##=[extract(u(%q0/GROUPS),get(##/POST_COMPLETE),1)]},?1??,{&POST_APPROVE ##=[extract(u(%q0/GROUPS),get(##/POST_APPROVE),1)]},??1?,{&POST_DENY ##=[extract(u(%q0/GROUPS),get(##/POST_DENY),1)]},???1,{&POST_DELETE ##=[extract(u(%q0/GROUPS),get(##/POST_DELETE),1)]}}}
    
    @switch [v(JOB_PATCH)]=>0,{think [ansi(hc,ANOMALY JOBS:)] Checking hooks for compatibility.;@dolist [v(JOB_VC)] [lcon(v(JOB_VC))]={@switch [hasattr(##,HOOK_COMPLETE)][hasattr(##,HOOK_APPROVE)][hasattr(##,HOOK_DENY)][hasattr(##,HOOK_DELETE)]=1???,{think [ansi(hc,ANOMALY JOBS:)] ##/HOOK_COMPLETE not valid: move to ##/HOOK_COM;},?1??,{think [ansi(hc,ANOMALY JOBS:)] ##/HOOK_APPROVE not valid: move to ##/HOOK_APR;},??1?,{think [ansi(hc,ANOMALY JOBS:)] ##/HOOK_DENY not valid: move to ##/HOOK_DNY;},???1,{think [ansi(hc,ANOMALY JOBS:)] ##/HOOK_DELETE not valid: move to ##/HOOK_DEL;}}}
    @switch [v(JOB_PATCH)]=>0,{think [ansi(hc,ANOMALY JOBS:)] Updating special job access to unique player ID.;@dolist switch(first(version()),PennMUSH,lsearch(all,eplayers,[hasattrval(##,JOBSB)]),RhostMUSH,searchng(eplayer=hasattr(##,JOBSB)),search(eplayer=hasattr(##,JOBSB)))={think [name(##)] has access to buckets: [u([v(JOB_VA)]/FN_ITEMIZE,iter(get(##/JOBSB),name(first(itext(0),:)),|),|)];&JOBSB ##=iter(get(##/JOBSB),u([v(JOB_VA)]/FN_OBJID,first(itext(0),:)))}}
    @switch [v(JOB_PATCH)]=>0,{think [ansi(hc,ANOMALY JOBS:)] Updating new job indicators.;@dolist lcon(v(JOB_VA))={&LIST_JOBSN ##=[default(##/LIST_JOBSN,get(##/LIST_READERS))];}}
    


  • More thorough testing (a few days' worth!) revealed they're pretty much non-functional. Blah.

    In related news, does anyone know of a non-Anomaly-jobs system that handles requests somewhat similarly? Anything works, honestly, even something much simpler. I think the simpler it is the more likely I'll be to understand it (and be able to modify if needed - the simpler the better in that department). I scoured Gwen Morse's softcode wiki without success.



  • @highfalutin

    You might try quoting it a different way. The last time I tried to use AnomJobs for something, I had to use MUSHclient's quoting feature rather than copy/pasting from the file.

    Also I'm not familiar too much with TinyMUX, but maybe make sure you're not running out of money? Give yourself the max, make sure that when you are doing commands you're not out of money?



  • @bobotron @Highfalutin
    you should be pasting the file into muxify, probably. Is that what you're doing?



  • It definitely needs to be quoted by your client, with a one second (or more, I can't recall off hand) delay, so that all the code has time to run before you put the next bit in.



  • @Bobotron - Ooh, that was a good thought. Good on money; after some testing it looks like the Wizard bit doesn't consume money/has infinite pennies. I'm going to make a note of it as a possibility for future things regardless. I don't always code on the Wizard.

    @skew - Yes ma'am! Muxify has become my very best friend.

    @Tinuviel - I recall seeing that in the installation notes and having no idea what that meant. I'm gathering it doesn't mean copypaste into Muxify then drop into MUSHclient. What is quoting to a client? How does one go about that?

    I noticed it also said to quote in with a 1 second delay. As I don't know what quoting in is, I also don't know what the delay means. Oh god this could be the whole problem.



  • @highfalutin See the Input menu -> Send File.



  • @tinuviel Thank you.



  • Oookay, quoted to client with a 1000 millisecond delay (apparently that's a second, neat).

    It doesn't create the objects, which makes the rest of the file non-functional - ended up with about 6 minutes of "I don't see that here" spam. I'm suspecting the problem is that the first switch, the one that is supposed to generate the objects I need, just isn't working the way it should be.

    Edit: It's too complex for me to make much sense of, but at a glance... it looks like it checks for version and then processes the object creation based on which version you have. The only versions in the command, though, are PennMUSH and RhostMUSH. There's nothing there for Mux. Could that be it?