                      Ŀ
 W W I V   C H R O N I C L E S 

Ŀ
Modifications For Dummies! by Spotnick 1@5497


   If there is something that I dislike about WWIV modifications, it's that
75% of them never work on the first time you install them. For some reason,
there is always a bug somewhere in the modification, and you wasted your time
installing them.

   Well, I am one of those modification authors that write modifications
that always need a fix, because I was having problems to extract the mod from
inside WWIV and put it in a text file. Many other authors are regular to the
"D" revision of their modifications, and sometimes there are more...

   To start being careful about that, I remember receiving a e-mail that made
me realize that it would be better for me to test them before posting anything,
thats what I started to do then, and also asked for beta testers to check them
out before their release. It was great, but of course, there is NOTHING that
can stop an error from getting in there.

   So to you, novice or intermediate modders, even those who are well
known to produce qualitity modifications, you should all follow those simple
rules:

         Never release a modification before a rough test on your own system
          for a specific period of time (1 Month is good).

         Ask some people to test the modification for you before releasing it.

         Install your modification on a virgin copy of WWIV before releasing
          it. Follow your own text file and act if you were modding for the
          first time.

         Make your modification to fit the more possible with WWIV standards
          functions, avoid the "you must have *.MOD installed to use this
          modification" unless it is one of your own modifications, or something
          very popular. Because most of the time, people don't have that
          installed and will have to look everywhere to find it before
          installing your modification. A kind of pain that will reduce the
          activity of your own modification.


   If you follow those simple rules, you will have success in the WWIV world.
Because you will be known as a bug-free modificator and people will start
trusting you. Note that there are other things that you must follow, that is
why I decided to include this ethical code for WWIV modificators. This is
generally what most Sysop use, but in case you didn't know, here it is:
I will take my own modifications group example to follow the ethical code:

                  Ŀ
                   WWIV Modifications Ethical Code 
                  

The Header


             
                       Alternative Worlds Presents                      
   Ŀ
    Mod Name        ALTW-02A.MOD                                       
    Difficulty      ۱ (5/10)                                 :
    WWIV Version    4.24                                               
    Date Affected   10/24/94                                           
   : Files Affected  BBS.C / MODEM.C / NETSUP.C / VARS.H / XINIT.C      
    Description     VGA Waiting For Caller Screen Status Screen        
    ſ
             A French Mod Division Release - (C) 1994 FutureSoft         
          


  Avoid too long headers: Generally, most of the Sysops hate that. The example
   has a fancy header, but it isn't too long, so you can see it in less than a
   half screen. DO NOT PUT COLOR CODES IN THEM! This will be a pain when people
   will see them in their text editor when doing the modifications.

  Mod Name Line: Generally, you input the filename you wish, not more than
                  7 letters, and it should have the extension *.MOD and not
                  *.WWIVVERSION, because this cause many problems to SysOp that
                  collect modifications. You must use a name that is specific to
                  your alias or system name, to avoid incompatibility with
                  modifications below WWIV v4.22 where there was no ethical code.
                  You have to put a number also to show that this is your xth
                  modification, and put the revision letter if it is a revision.

                      ALTW-02A.MOD
                      ^^^^ ^ ^
                       |___|_|____________ ALTW, specific to Alternative Worlds
                           | |
                           |_|____________ 02, this is the 2nd modification
                             |
                             |____________ A, this is revision A.

                  If you follow this example, it will help you on your way to
                  hall of fame <grin>, because it will be easy to find your
                  modifications on a BBS that put mods in their directories.
                  Double check to be sure that nobody else uses your acronym.

  Difficulty Line:  Put yourself at the time you started modding, and think
                     of the difficulty your modification would be to install.
                     You can use a graphical meter: ۱
                     or put the numbers: (5/10)
                     This will help novice modders to ask for help to install
                     some modifications, or to be more careful than others.

  WWIV Version Line:  Tell on which version you installed the modification
                       and TESTED the modification. Do not include future
                       versions of WWIV unless you are sure that it is going
                       to work. We saw too many people tell "should work with
                       v4.23" and that were using "open/read/write" without
                       the multi-instance modifications needed and this is
                       very important. In the example, you see v4.24, well,
                       as a Beta site of WWIV, I can assure you that this will
                       work with v4.24. I did a small mistake by not including
                       the Beta number (which is eta 3). Do not include
                       previous versions of WWIV unless you've tested it also,
                       a v4.23 modifications won't necessairly work under
                       v4.22, so then people using v4.22 will be aware that
                       it is possible that the modification won't work.

  The Date Line: Very useful for system that produce mods collection, to put
                  your modification in the right collection. Also shows that
                  it is a repost if someone post your modification again.

  The Files Affected Line: This is very important also, it should how many
                            files your modification will affect, and will warn
                            the person if it affects any of the major *.H that
                            need an entire compilation. It will also help
                            SysOp to think if they already modified that file
                            before reaching the last step of your modification
                            and finding out that they have a totally different
                            function instead of yours.

  The Description Line: A very BRIEF description of what your modification
                         does, not more than ONE line, keep in mind that this
                         is what people will check first, so you need to have
                         a punch line there. If your punch line is interesting,
                         people will check the extended description section.

  The Name Line: Include your handle or modification group name, to know
                  who did that modification.

  The Copyright Line: Now that we know that modifications can be copyrighted,
                       but keep in mind that all WWIV code included is
                       copyrighted to WWIV Software Services, you have the
                       right to include your own copyright notice. I suggest
                       you put the diclaimer at the end of the file instead
                       of the top, because this generally bugs people very much,
                       only if it is more than one line.

Introduction


  The Long Description: A verbose description of what your modification will
                         do, generally, it is better if you include a snap
                         shot of what it will look like also. You need to
                         describe each features of your modification. Include
                         also multi-taskers under which your modification has
                         been tested. This can be very useful. You should also
                         put the compiler name and version that you used to
                         do this modification. I already did modifications that
                         weren't working with older versions of Turbo C.

  Requirements: Include anything that is needed to use your modification. If
                 you need another place, this is the place where you put the
                 name of this modification. Example:

                 Requirements for using this modification:

                   - VGA Graphic Card Or Better
                   - VGA Monitor or Better
                   - WWIV v4.23 or higher (tested on v4.24 Beta 3)

  Thanks: This is where you give credit where it is due, generally it would
           be a shame to forget Wayne Bell in those lines, since it is his
           software you are modifying. Also put here the name of each and
           every single person you might have stolen code from. This is very
           important, just like when you do a report, you have to include all
           your sources.

  Upgrading Informations: If your modification is a revision, you need to
                           tell people that installed your modification, what
                           to do to upgrade from previous version, which steps
                           to proceed, etc... this is NEEDED in each mods that
                           you procude.

  Legend: Include this because it might confuse some people if you produce
           modifications that doesn't use the same standards. Example:

                       ͸
                        =  Existing Line      
                        +  Add this line      
                        -  Remove this line   
                        *  Modify this line   
                       

           Note also that some people use 1 space between the code, and some
           doesn't. There is no standard for this, but it will be a good place
           to put a note about it. This won't change a thing, but make the
           source code more easy to see.

  Warning Line: Do like most of modders, include a warning line even if you
                 have tested your modification. Tell people to do BACKUPS of
                 their source before installing your modification. This is
                 important.

Body Of The Modification


  Steps: Seperate your steps so it can be easily found. We use this standard:

[Step 1]

          So we are sure that nodoby will miss a step. Don't include more than
          one operation in each step. Do not include modifications to more than
          one function in each step. Put at least 2 existing lines, so people
          can locate more easily. It is also VERY IMPORTANT that you do NOT put
          color codes at the end of each line (after the ';' code generally)
          even if it makes your mod ugly at the display, because this causes
          pain to everyone when they try to install your modification from
          an extracted post.



The End Of File


  Compiler Informations: Tell people if they need to do a MAKE FCNS, if there
                          is a change to the makefile, please tell them under
                          which compiler you did this modification, and also
                          notice if they need to do a full or partial
                          compilation.

  Informations Lines: Tell people where they can reach you, name of your
                       BBS, phone number and network address of the main
                       WWIV networks you are in. You don't have to include
                       local networks generally, but you can do that too.
                       If you have a sub about your modifications, leave a
                       note here for people to know how to get support from
                       you. If you don't plan to do support, it is the place
                       to tell that, because you should generally get mail
                       from the modifications you did.

And you are done, following all those steps should end with a clear text file,
ready to post on the modification subs all around. If you upload your mod to
a system, please include in the archive a FILE_ID.DIZ or DESC.SDI inside it,
with your description. Here is the example we use in French Mod Division:

Shut-Down System For WWIV

Mod Name       : ALTW-27.MOD
Difficulty      ۱
WWIV Version    4.23/v4.24
Date Affected   10/25/94

A French Mod Division Release..

So people will see that when they download or list the files. Be sure that
the first line is the description, because stock WWIV version with file
tagging doesn't allow to show more than 1 line, so this is the important line.

If you post the modification, there is also an ethical code for the title you
use. I already tried to have people do it another way, and I got tons of
replies to keep it the way it is. PLEASE do that, it is very important, else
your modification may suffer from that, because it is needed for SysOps that
extract modifications do their xfer area:

Title:  FILENAME.MOD: Breif Description Of Your Modification.

Once this is done, then everything should be perfect. Again, this is a
standard. You might not conform to it, but this is what should help people to
follow a code that will help the WWIV community.

Ŀ
Modifications Of The Month by Spotnick 1@5497


  I decided to steal this idea from Filo 1@2050 IceNET from inside WWIVnews.
I was once in this issue in WWIVnews and I tought it would be a good idea to
add this to IceNEWS since this is the only real monthly WWIV newsletter.

  To be in this section, a modification must follow the following rules:

     Must be small or medium.
     Must conform to the ethical code, or at least be clear.
     Must not include any UUcoded stuff inside.
     Must be easy to install.
     Be Unique, shouldn't need any other modifications
      or be from somebody else.

  I will judge only ONE modification by month, for exception will be this issue
because there were good modifications posted in October, and I decided that
this should be worth it. It is also clear that I won't include my own
modifications to this section. Those modifications can also have errors
because I don't have the time to test them all, but it is the basic idea
behind them.


Mod Of The Month, October 1994


  I decided to give this honor to Zu Digital, the half of the Asylum Mod
  Group. This modification adds to WWIV what many software has, the ability
  to download a FILES.BBS from the system. This is helpful to SysOp, because
  they can download it and do a //UPLOADFILE after that at it will
  automatically upload the files with their description. The mod is well
  documented, but have several word wrap problems to fit in a 80x25 display,
  so please don't be rough on it! This modification has never been posted
  on any subs to my knowledge yet.


A Small mod that will build a FILES.BBS in batch downloads.  It also builds
a non-standard FILES_EX.BBS which contains the extended descriptions also.

This mod is automatic... once it is installed, just forget about it.

Look, not seperate .C files, and this time the userrec is untouched!!!
Only 3 steps to install!


My side of the code presented here is public domain, use it like you want,
since it is PD, the only restrictions presented are those in of WWIV and
Wayne Bell's copyright on WWIV (all 14 lines of his source used here).


Btw, your author is Zu Digital -- programmed on 10/04/94


----------------------------
Step 1) BATCH.C in function make_dl_batch_list, add the following at the
        very end.

== void make_dl_batch_list(char *listfn)
== {

.... (Skip to the bottom of the mod)

==         ok=0;
==       if (ok) {
==         sh_write(f,s,strlen(s));
==         at += batch[i].time;
==         addk += thisk;
==       }
==     }
==   }
++   /* Start FILES.BBS addition */
++   i = create_filesbbs();   /* Go create the FILES.BBS files  */
++   switch(i)                /* find out how successful it was */
++   {
++     case 2:                /* both files were created...     */
++       sprintf(s, "%sFILES_EX.BBS\r\n", syscfgovr.tempdir); /* add ext desc f
ile to download list */
++       sh_write(f, s, strlen(s));
++     case 1:                /* This falls through on purpose  */
++       sprintf(s, "%sFILES.BBS\r\n", syscfgovr.tempdir);   /* Add FILES.BBS t
o download list */
++       sh_write(f, s, strlen(s));
++   }
++   /* End FILES.BBS addition */
==
==
==   sh_close(f);
== }




----------------------------
Step 2) FCNS.H - Add the following, or MAKE FCNS

int create_filesbbs(void)




----------------------------
Step 3) Add the following function somewhere, in BATCH.C or some overlaid
file somewhere, it don't matter...


/* Start FILES.BBS addition */
int create_filesbbs(void)
{
  FILE *filebbs, *filebbs_ex;
  char filename1[130], filename2[130], *ext_desc;
  int batch_pos = 0, file_base, file_pos, abort = 0, next = 0, ret;
  uploadsrec u;


  sprintf(filename1, "%sFILES.BBS", syscfgovr.tempdir);
  sprintf(filename2, "%sFILES_EX.BBS", syscfgovr.tempdir);

  pl("Building FILES.BBS...");

  filebbs = fsh_open(filename1, "wt");   /* Try to open FILES.BBS file */
  if(!filebbs)                           /* if it can't be done, abort */
  {
    pl("Couldn't create FILE.BBS");
    return 0;                  /* return of 0 means no files.bbs was created */
  }

  filebbs_ex = fsh_open(filename2, "wb");/* now try to open EXT. desc FILES.BBS
 */
                                         /* If it fails, no big deal
 */

  while(batch_pos < numbatch)            /* Loop through batch QUEUE */
  {
    if(batch[batch_pos].sending)         /* If we are sending this file... */
    {
      dliscan1(batch[batch_pos].dir);    /* Read dir info, to include 'dlfn' */

      file_base=sh_open1(dlfn,O_RDONLY | O_BINARY); /* open up directory file *
/

      /* And loop through until the file is found */
      for (file_pos=1; (file_pos<=numf) && (!abort) && (!hangup); file_pos++)
      {
        SETREC(file_base,file_pos);
        sh_read(file_base,(void *)&u,sizeof(uploadsrec));  /* Read in upload re
cord */
        if(compare(batch[batch_pos].filename,u.filename))  /* If the file match
es... */
        {
          file_pos = numf+1;             /* make for loop fail test so it stops
... */

          /* Add filename and description to FILES.BBS */
          fprintf(filebbs, "%-12.12s %s\n", strupr(stripfn(u.filename)), u.desc
ription);

          if(filebbs_ex)                 /* Only if FILE_EX.BBS was opened */
          {
            /* Add filename and description to it too */
            fprintf(filebbs_ex, "%-12.12s %s\r\n", strupr(stripfn(u.filename)),
 u.description);

            if(u.mask & mask_extended) /* If there is an extended description *
/
            {
              ext_desc = read_extended_description(u.filename); /* Read it in *
/

              if(ext_desc)              /* (Was it read in? */
              {
                fprintf(filebbs_ex, "%s\r\n", ext_desc);  /* Print it FILES_EX.
BBS */
                free(ext_desc);         /* Free up memory allocated by read ext
 description */
              }
            }  /* End of if upload record has an extended description */
          }    /* End of if filebbs_ex was properly opened           */
        }      /* End of if this batch filename was found as this uploadrec
        else if (!empty())     /* Allow this to be aborted... I guess */
          checka(&abort,&next);
      }        /* End of for loop, looping through file base */
      file_base=sh_close(file_base);

      ++batch_pos;       /* go onto next batch record */
    }          /* End of if check this file is being sent (as opposed to receiv
e) */
  }            /* End of while loop looping through batch QUEUE */


  if(filebbs_ex)  /* return of 2 means both FILES.BBS and FILES_EX.BBS */
    ret = 2;        /* was created and ready to download                 */
  else
    ret = 1;        /* 1 means only FILES.BBS was created (0 means none) */

  fclose(filebbs);
  if(filebbs_ex);   /* Since it may not have been opened, make sure it is safe
*/
    fclose(filebbs_ex);

  return ret;
}
/* End FILES.BBS addition */




Mod Of The Month - November 1994



 To be determined later. Text will be sent in the IceNEWS subs to add here.



Well, that concluded the 2nd WWIV Chronicles, I hope you didn't fall asleep
while reading it. If you have comments, don't hesitate to e-mail me.





