home *** CD-ROM | disk | FTP | other *** search
/ The Devil's Doorknob BBS Capture (1996-2003) / devilsdoorknobbbscapture1996-2003.iso / Dloads / WWIVMODS / MODSUNKN.ZIP / MLMENU12.TXT < prev    next >
Text File  |  1990-08-05  |  15KB  |  428 lines

  1. MODNET 9/10 -- A Mail Menu
  2. Yet another of those mods that were simply too big to squeeze into one of the 
  3. other files (I make 14k my break-point for deciding these things).
  4. -=>mtb<=-
  5. ══════════════════════════════════════════════════════════════════════════════
  6.  
  7. Suicidal Maniac #1 @6865
  8. Thu May 10 17:52:07 1990
  9.  
  10.  ▒                              -MLMNU12.MOD-                                 ▒
  11.  ▒                                                                            ▒
  12.  ▒                     The New and Improved Mail Menu Mod                     ▒
  13.  
  14. Hello and welcome to yet another chocolatey mod.  I had been using Adam
  15. Rogers's Mail Menu Mod since I first registered WWIV and have been happily
  16. satisfied with this product, but it still had room for some pretty nice
  17. improvements.  I left the "A"utomessage on the Main menu, before I got rid of
  18. the auto message, so you will not see it on this menu.  What I have added is
  19. some features that I thought made sense to have in the message section.  First,
  20. I made it so that users could select their full-screen editor from the message
  21. menu.  Making them go to a seperate menu to change that made me think of RBBS,
  22. sorry if you just ate.  So you will notice that option near the bottom.  After
  23. that, I thought "Well, why not go ahead and throw in the other configurations?"
  24. Oh boy, don't get me started.  So, now we have on our message menu, the ability
  25. to forward your mail (Why not? That's where you send it!), the ability to
  26. configure your newscan, and the ability to upload a message.  The mod did not
  27. let a user enter more than one keystroke at the menu prompt.  I fixed this
  28. problem.  It was a very small flaw in the programming, and one no longer
  29. remains.  I saw this nice little mod that a sysop put up on the Modnet called
  30. the CASE#.MOD.  It didn't work because he forgot a break; statement, but I
  31. found that one real quick and implemented it in this.  I have also put in
  32. a nice little addition for you sysops, BOARDEDIT from the message menu.
  33. Ahh, I knew you guys were wondering about that!  As you look through this mod
  34. you will see a lot of changes that were made from the original mod.  I added
  35. a little more color to the Captain's prompt and took a lot of the blocky look
  36. out of it that it had.  Anyway, enough with discussing the mods I made, you
  37. can just look at them...  On with the show...
  38.  
  39. ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
  40. STEP UNO
  41.  
  42. Load up BBS.C in your Turbo C editor.  Hit ^QF and search for "mainmenu"
  43. without the quotes.  Now, go up to the line just before void mainmenu();
  44. and block read this puppy in.  (If you don't know how to block read, I suggest
  45. you learn it, because this would be a bitch to type in.)
  46.  
  47. void messmenu()
  48. {
  49.   char *s,*num,s1[81],s2[81];
  50.   int abort;
  51.   int i,done1;
  52.   long l;
  53.  
  54.   if ((sysstatus_expert & thisuser.sysstatus)==0)
  55.     printfile("MESSMENU");
  56.  
  57.   s1[0]=0;
  58.   nl();
  59.   nl();
  60.   tleft(1);
  61.   prt(7,"Time Left");
  62.   prt(1,": ");
  63.   ansic(3);
  64.   print("",ctim(nsl()),"");
  65.   s1[0]=0;
  66.   if (usub[cursub].subnum==-1) {
  67.     cursub=0;
  68.     if (usub[cursub].subnum==-1) {
  69.       strcpy(s1,"[] No Subs Available :");
  70.     }
  71.   }
  72. if (s1[0]==0) {
  73.   prt(4,"{");
  74.   if (subboards[usub[cursub].subnum].type)
  75.     prt(4,"Network");
  76.   else prt(4,"Local");
  77.   prt(4," Message Area");
  78.   prt(4,"}");
  79.   nl();
  80.   prt(7,"[(");
  81.   prt(3,usub[cursub].keys);
  82.   prt(7,")*(");
  83.   prt(1,subboards[usub[cursub].subnum].name);
  84.   prt(7,")]");
  85.   prt(0,": ");
  86. }
  87.   helpl=1;
  88.   s=mmkey(0);  /* Fixes the one key Thingy */
  89.   helpl=0;
  90.   if (s[0])
  91.     for (i=0; i<32; i++)
  92.       if (strcmp(usub[i].keys,s)==0)
  93.         cursub=i;
  94.   sysopchar(s);
  95.  
  96.   if ((strcmp(s,"BOARDEDIT")==0) && (so())) {
  97.     sysoplog("@ Ran Boardedit");
  98.     boardedit();
  99.   }
  100.   if ((strcmp(s,"LOAD")==0) && (so())) {  /* Of Course! */
  101.     nl();
  102.     prt(2,"Filename? ");
  103.     input(s1,50);
  104.     if (s1[0]) {
  105.       nl();
  106.       prt(5,"Allow editing? ");
  107.       if (yn()) {
  108.         nl();
  109.         load_workspace(s1,0);
  110.       } else {
  111.         nl();
  112.         load_workspace(s1,1);
  113.       }
  114.     }
  115.   }
  116.   if ((strcmp(s,"MAILR")==0) && (so())) /* Another one */
  117.     if (checkpw()) {
  118.       sysoplog("@ Read all mail");
  119.       mailr();
  120.     }
  121.  
  122. /*---------------Non-Sysop-Commands-------------------*/
  123.   if (strcmp(s,"QSCAN")==0) {
  124.     nl();
  125.     prt(5,"Clear Q-Scan pointers? ");
  126.     if (yn()) {
  127.       for (i=0; i<33; i++)
  128.         thisuser.qscnptr[i]=status.qscanptr-1L;
  129.       nl();
  130.       pl("Q-Scan pointers cleared.");
  131.       nl();
  132.     }
  133.   }
  134.  
  135.   if (strcmp(s,"NET")==0)  /* Definetly needed to be added */
  136.     print_net_listing();
  137.  
  138.   if (strcmp(s,"/C")==0) {                             /* You may want to */
  139.     thisuser.sysstatus ^= sysstatus_funky_colors;      /* comment this    */
  140.     nl();                                              /* command out if  */
  141.     if (thisuser.sysstatus & sysstatus_funky_colors)   /* you are using   */
  142.       pl("Extra colors enabled.");                     /* version 4.11    */
  143.     else
  144.       pl("Extra colors turned OFF.");
  145.     nl();
  146.   }
  147.  
  148.   if ((s[1]==0) && (s[0]!=0)) {
  149.     switch(s[0]) {
  150.       case '?':
  151.         if ((sysstatus_expert & thisuser.sysstatus))
  152.           printfile("MESSMENU");                       /* Prints the menu */
  153.         break;
  154.       case 'Q':
  155.         curmes=0;                                      /* Returns to main */
  156.       break;
  157.       case 'O':
  158.         helpl=12;
  159.         nl();
  160.         nl();
  161.     prt(5,"Hit the road? ");
  162.         if (yn()) {
  163.           outchr(12);
  164.           print("Time on   = ",ctim(timer()-timeon),"");
  165.           printfile("LOGOFF");  /* Now you can create LOGOFF.ANS and it will */
  166.     curmes=0;                   /* print correctly                           */
  167.           hangup=1;
  168.         }
  169.         break;
  170.       case '+':
  171.       case '>':
  172.         if (usub[cursub+1].subnum>=0)
  173.           ++cursub;
  174.         else
  175.           cursub=0;
  176.         break;
  177.       case '-':
  178.       case '<':
  179.         if (cursub>0)
  180.           --cursub;
  181.         else {
  182.           while (usub[cursub+1].subnum>=0)
  183.             ++cursub;
  184.         }
  185.         break;
  186.       case 'E':
  187.         send_email();
  188.         break;
  189.       case 'C':
  190.         strcpy(irt,"Feedback.");
  191.         email(1,0,0,0);
  192.         break;
  193.       case 'K':
  194.         helpl=8;
  195.         kill_old_email();
  196.         break;
  197.       case 'M':
  198.         if (thisuser.waiting>0) {
  199.           readmail();
  200.         } else {
  201.           nl();
  202.           pl("Moron + Typewriter = M.");nl();nl(); /* Just to make 'em laugh */
  203.           pl("You have no mail!");
  204.           nl();
  205.         }
  206.         break;
  207.       case 'N':
  208.         express=0;
  209.         expressabort=0;
  210.         nscan(0);
  211.         break;
  212.       case 'P':
  213.         irt[0]=0;
  214.         if (usub[0].subnum!=-1)
  215.           post();
  216.         break;
  217.       case 'F':
  218.         i=0;
  219.         express=0;
  220.         expressabort=0;
  221.         qscan(cursub,&i);
  222.         break;
  223. /*    case 'G':                         If you have the   
  224.         nl();                           Quoter & Joker    
  225.         full_external("Q&J",0,1);       in your main BBS  
  226.         break; */                    /* Dir, uncomment  */
  227.       case 'R':                      /* this command.   */
  228.         helpl=15;
  229.         remove_post();
  230.         break;
  231.       case 'S':
  232.         express=0;
  233.         expressabort=0;
  234.         scan2();
  235.         break;
  236.       case 'U':
  237.         list_users();
  238.         break;
  239.       case 'X':
  240.         thisuser.sysstatus ^= sysstatus_expert;
  241.         break;
  242.       case '*':
  243.         sublist();
  244.         break;
  245.       case '#':
  246.         do {
  247.           done1=0;
  248.           nl();
  249.           prt(2,"Which sub would you like to go to? (?=list) ");
  250.           num=mmkey(0);
  251.           if (strcmp(num,"?")==0) {
  252.             sublist();
  253.            }
  254.           for (i=0; i<32; i++)
  255.             if (strcmp(usub[i].keys,num)==0) {
  256.               cursub=i;
  257.               done1=1;
  258.             }
  259.         } while ((!hangup) && (!done1));
  260.       break;
  261.       case '!':              /* Added - SM */
  262.         upload_post();
  263.         break;
  264.       case '=':              /* Added - SM */
  265.         config_qscan();
  266.         break;
  267.       case ':':
  268.         modify_mailbox();    /* Added - SM */
  269.         break;
  270.       case '%':
  271.         if (okansi())        /* New in v1.2 */
  272.         select_editor();     /* Added - SM */
  273.         break;
  274.       case 'T':              /* New in v1.2 */  /* Jumps to Transfer Section */
  275.         curmes=0
  276.         curdloads=1
  277.         break;
  278.       case 'Z':
  279.         express=1;
  280.         expressabort=0;
  281.         l=thisuser.sysstatus;
  282.         if (l & sysstatus_pause_on_page)
  283.           thisuser.sysstatus ^= sysstatus_pause_on_page;
  284.         nscan(0);
  285.         express=0;
  286.         expressabort=0;
  287.         thisuser.sysstatus=l;
  288.         break;
  289.     }
  290.   }
  291.   helpl=0;
  292. }
  293.  
  294.  
  295.  
  296. ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
  297. STEP DOS
  298.  
  299. Still in BBS.C, go down to void mainmenu().  Remove case 'M': and add this one:
  300.  
  301.       case 'M':
  302.         curmes=1;
  303.         break;
  304.  
  305. ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
  306. STEP TRES
  307.  
  308. Now that you have the message system ready to run, go through and delete all of
  309. the message commands from the main menu.  These should include:
  310.  
  311. case 'E':
  312. case '+':
  313. case '-':
  314. case '>':
  315. case '<':
  316. case 'K':
  317. case 'P':
  318. case 'N':
  319. case 'R':
  320. case 'S':
  321. case '*':
  322. case 'Z':
  323.  
  324.  
  325. ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
  326. STEP CUATRO
  327.  
  328. Ok, now we have to tell the BBS that this little mod is there, so still
  329. in BBS.C search main_menu_label and make the following changes:
  330.  
  331.      main_menu_label:
  332.       while (!hangup) {
  333.         if (curdloads)
  334.           dlmainmenu();
  335.         else if (curmes)    /* ADD */
  336.           messmenu();       /* ADD */
  337.         else if (curdloads) /* ADD */    /* New in v1.2 */
  338.           dlmainmenu();     /* ADD */    /* New in v1.2 */
  339.         else
  340.           mainmenu();
  341.  
  342. ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
  343. STEP CINCO
  344.  
  345. Now, load up VARS.H and search for this line:
  346.  
  347.    int cursub,curdir,curdloads,msgreadlogon;
  348.  
  349. Now let's add curmes in there so it looks like this:
  350.  
  351.    int cursub,curdir,curdloads,curmes,msgreadlogon;
  352.  
  353. There, now it is fully operable and you need a menu.  Go to the next step.
  354.  
  355. ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
  356. STEP SEIS
  357.  
  358. Now, change your main menu to have only the commands that are left there
  359. showing.  Now we have to create a message menu.  I will include that in the
  360. package since everyone will have the same options.  Now, to make life easier
  361. for you, I have changed the menu command in the code to print a file, so you
  362. will not have to worry about appending this to your menus.msg.  Here's
  363. MESSMENU.MSG ...
  364.  
  365.                               --- Message Menu ---
  366.  
  367. C)omment to Sysop          E)mail another user
  368. X)pert Mode                K)ill old Email
  369. U)ser List                 M)Read your mail
  370. S)can Message Base         P)ost a message
  371. N)ew-scan (Global)         R)emove a message
  372. F)ast scan sub             *)List of accessible subs
  373. Z)ippy New Scan            T)ransfer Section
  374.  
  375. + or >)Up one sub          #)Change Sub
  376. - or <)Down one sub        Also to select a sub enter that
  377.                                  sub's number at the prompt.
  378. !)Upload a post
  379. =)Configure your N-scan       //QSCAN -  Clear Qscan Pointers
  380. :)Forward/Unforward Mailbox   //NET   -  WWIVnet BBS Listing
  381. %)Select Fullscreen Editor    Q)uit to Main Menu
  382. G)et a Quote & Joke           O)Log Off - /O for quick!
  383.  
  384. Now, it is up to you to remember the sysop commands, I mean there are only
  385. 3.  I just figured there wouldn't be any real use in adding a sysop menu for
  386. just those commands.
  387.    
  388.    Now rebuild all and you are set!                                           
  389.    Thanks a lot to Adam Rogers for his excellent mod, without it this one    
  390.    would not even be here.                                                   
  391.    Stay tuned for my next project.  A sysop menu!                            
  392.                                                                               
  393.    Dirty Bird's Nest @6865 - The World's First and Only Chocolate BBS        
  394.    618-397-7687 - Extensive WWIV Support - 300/1200/2400/4800/9600 HST       
  395.    150 MB - Complete Cosmetic Makeover of WWIV                               
  396.                                                                              
  397.    DISCLAIMER:                                                               
  398.                                                                              
  399.    If this mod breaks your computer, you own both parts.  If this mod causes 
  400.    loss of appetite, severe itching, drowsiness, or convulsions, stop use    
  401.    consult a physician before using again.                                   
  402.                                                                              
  403.   If you use this, tell 1@6865 that you do!                                  
  404.                                                                               
  405.  
  406.  Revision changes for v1.2 -
  407.  
  408.  Well, I noticed a couple mistakes I had made on my programming up there,
  409.  so I have fixed them.  First of all, I told you to create a file called
  410.  MESSMENU.MSG, but I didn't tell the command to print that file, it was
  411.  still looking for menu #16.  Well, it has been fixed.  I also found a
  412.  mistake I had made with the full-screen editors, non-ansi users could
  413.  access them and they would just get stuck there and would have to drop
  414.  carrier to get off.  Now, it makes sure that the user can support ansi,
  415.  if they can't they cannot access the editors.
  416.  
  417.  I also added a nice feature - a jump to the transfer section.  I will put
  418.  in the next revision the mod to get the xfer section to jump to the message
  419.  section.  I have also added a mod that when a user hits G, it will run the
  420.  Quoter and Joker, so if you have the Quoter and Joker in your main BBS
  421.  directory, remove the comment identifiers from the case 'G': command, if
  422.  you do not have the Quoter and Joker just remove it from the menu.
  423.  
  424.  Once again, I hope you like the mod and make use of it.
  425.  
  426.  Suicidal Maniac
  427.  !@6865
  428.