

                            
                              
                               
           ۲
                               
                              
                      ew  ser    oting

                                  Version 3.1

                     (C) 1994 by Killean of BeerWares Utils


   What's new in this version

FINALLY.  The version you've all been waiting for.  NO more com routines.  NO
  more crappy ansi slowdowns.  NUV is now run PURELY within Renegade's menu
  structure.  So what does this mean?  You're going to have to make a few
  modifications to your RG setup.  Nothing huge, just a few minor additions,
  but I HIGHLY recommend reading this entire file first.

NUVMENU.EXE is now the main executable's name.  My original idea was to keep
  it as NUVote, but decided against it as it would be easier to setup over
  previously existing NUV setups.

-------------------------------------------------------------------------------
This version is basically a quick bug fix.  I, after numerous 'complaints',
  found that unreged sysops couldn't add any new users.  What can I say.  :)

  Also, if you ever get an error #100, its a good bet you data files somehow
  got corrupted, so I would definately advise deleting them (FBNUV and NUVDEL).
-------------------------------------------------------------------------------

   Author's Note

I started writing this program about a year ago, mainly because I just wasn't
  happy with any of the other so-called NUV programs on the market.  I didn't
  have too much programming experience, just a few good ideas.  Frankly, I'm
  quite surprised at the amount of support this product has gotten, with the
  total number of registered sysops coming in at over 60 and growing daily.

  Well, its now a year later, and I guess you could call this version the
  'aniversary rewrite'.  I've found a ton of more efficient ways of coding
  and I think you'll be very happy with this program now.  I certainly am.

  Thanks (greets?) go to:

     Vapor (of 404)   - I never would have released this if it hadn't been for
                        him (and I would have had alot more free time :)
     Wayne Campbell   - My first alpha sysop.  You were a great help in those
                        'early days'. Sorry you're running another software.
     Sexual Chocolate - One of the few people in the 'scene' I would consider
                        a true friend.  You've been a ton of help.
     Marley Man       - A veritable fountain of great ideas for renegade, and a
                        dedicated sysop.  Thanks man.
     Mercury          - Full of wonderful comments and (cough) critisism,
                        and a good coder. What was that about you and crack? :)
     Soul Rebel       - You 'eleeeeeeeete' dude.  Stick with RG you jerk. :)

     Quazar           - The best co-sysop anyone could have, and a hell of an
                        artist.
     Cott Lang        - Ahem.  Nice (10 line dizs) work (10 line dizs) dude.

     The Rest of the Alpha Sysops  -  Thanks a ton dudes.

QUICK PLUG->  go download 'Progeny' and read it.


   Disclaimer

Wow, never thought I would actually put this in my dox, but here goes:

  This program is NOT garunteed to completely adhere to its predetermined
  operations laid out by this document, and the author is in NO WAY to be
  held responsible for ANY of its actions or outcomes, and BY UNZIPPING
  AND RUNNING NUVote in any way shape or form SHIFTS COMPLETE RESPON-
  SIBILITY to the end user of this product's results.

  This program is SHAREWARE.  You like it, after a 15 day evaluation
  period you pay for it, or you delete it.  'Nuff said.  Sorry I had to.


   Introduction

So, what is an NUV you ask?  Bascially, its a completely configurable process
  for your RG BBS that allows all your validated sysops to 'vote' on all of
  your new users.  In other words, its an extra quality control for your board,
  and also a time saving device that handles all of your new user stuff.
  Here's what happens:

  First - a new user calls and, after filling out the questionniares, he is
          added to the main NUV data file (FBNUV.DAT).
  Second- a normal, validated user calls up, runs NUV, and votes Yes, No, or
          Abstain on that new user after viewing his info-form answers, message
          to the sysop, and comments if any.
  Third - the new user either obtains enought votes to get validated or nuked.
          If validated, he gets upgraded to your defined level and is removed
          from the NUV system.  If nuked, his name is placed into the BLACK.LST
          (registered versions only) and his info is moved into a 'storage'
          file (NUVDEL.DAT), and is not deleted from your board until after
          he/she calls back to check his status.

I'm assuming in this document that you already have a pretty good working
  knowledge of how to implement 'advanced' features in Renegade.  I'm not
  going to hold your hand and wipe your butt with setting up NUV, but feel
  free to send any reasonnable questions to me or any of the alpha sysops
  and we'll try and help as much as we can.

Thats pretty much it.  Registered systems have the following advantages:

      -  use of the blacklist feature
      -  can view the new user's message to the sysop
      -  have more than five users being voted on at a time
      -  nag removal from software
      -  complete author support, as well as a dedicated 'staff'


   Operation

NUV is run completely by command-line parameters, and is quite easy to operate.
  I will run through each one and its uses (multinode systems have slightly
  different command line options, which will be explained later):

Main (essential) Commandline Operations:

          NOTE:  the <username> MUST be within the '[ ]' brackets.


  NUVMenu CHECK [<username>]

     Searches the data files for <username>.  All output goes to the file
     NUVRESLT.ANS.

  NUVMenu START [<username>]

     Initializes the voting process for the validated user.  The RG menu
     NUVSTART handles the outcome.  Should be only used once per voting.

  NUVMenu VOTE [<username>] <new user number> <vote>

     The actual vote of <username> for <new user number>.  Handled for you in
     Normal mode. In Expert mode, the parameter <new user number> is omitted.

  NUVMenu SKIP [<username>]

     Used only in Expert mode, this option will skip the 'current' user being
     voted on, and go to the next one if any.  In Normal mode, the only thing
     you have to do to skip to the next user is hit 'S', which will go to the
     next new user's menu.

     In both cases, skipping from the last new user to vote on will jump back
     to the very first user left to vote on.


  Note:  An optional parameter 'VERBOSE' can be added to the above oper-
         ations when testing.  It MUST be the very last parameter.



Secondary (non-essential) Commandline Operations:

  NUVMenu SCAN <flag>

     Transverses through the USERS.DAT file, giving all the validated users
     <flag> if there is a new user they haven't voted on yet.  Lets you
     run NUV only when the current user needs to, not when there's no new
     users to vote on.

  NUVMenu LIST <output file>

     Using NUVLIST.ANS as the header, it creates a listing of the current users
     being voted on and their stats.  No MCIs right now, maybe later.

  NUVMenu UPDATE <method> NOPAUSE NOMOVE

     Tranverses the data files and updates all the new user info, and checks
     for deletion, validation, etc.  <method> can be either:

        1: use FBNUV.DAT   (current new users being voted on)
        2: use NUVDEL.DAT  (file of nuked users waiting for callback)

     Each user in the file will be checked against your USERS.DAT file.  Just
     hit <ESC> to go through the users, and hit <UP/DOWN> arrows to scroll
     through the comments.

     Your new user .ASW file is also updated when using method 1.  Only the
     answers of the users being voted on will remain.  All other answers will
     be moved to the old user .ASW file, which you define.  This little
     feature IMMENSELY speeds up the voting process.

     The parameter NOPAUSE removes all the pauses from this process in order
     for it to be run as an event, and is optional.

     The parameter NOMOVE skips the transfer of the answers to the old user
     .ASW file, and is also optional.



   Setup

First, what one must do to setup NUV is to unzip all your ansi files to your
  RG's MISC directory (the ansis are found in NUVANSI.ZIP). The NUVOTE and
  CONFIG executables can be run from any directory, as long as they are all
  together.

  Also, copy NUVMENU.INF to your MISC directory as well.  This info-form is
  what is used for all comments when voting, and you can modify it in any way
  as long as you mantain that basic ';A *' in some way..  all blanks and MCIs
  in the answers are filtered out.

  Next, I would go into RG's setup area, hit 'G' for subscription setup, and
  then edit the title of whatever you want new users to be upgraded to.  This
  is where the sysop note is read from, and you can use the area code MCI
  (&#) anywhere in this string. The '&#' code will be replaced by the first
  three digits of the area code, and is completely optional.

  When running the NUVOTE and CONFIG programs, make sure you have the
  NUVDATA.DAT file in the same directory.  These executables can be in any
  directory you want, as long as they are together.         

For the next part, just run the CONFIG.EXE program (? = Help).

  The configuration should be pretty much self-explanitory, and I have included
  the system data file (NUVDATA.DAT) along with it to help get you started.
  And yes, the strings support pipe colors (foreground (|00 - |15) and back-
  ground colors (|16 - |23)) as well as RG ^ colors (reading the default
  color scheme).

          A BBS Path (include trailing \) : C:\RG\
          B Validation Level(s) Setup     : A B No
          C Menu to Quit To               : FIRST2
          D Yes Votes to Validate         : 5
          E No Votes to Delete            : 5
          F Toggles                       : [No ] [No ] [No ] [No ]
          G Menu Handling Mode            : Normal
          H UserNote Setup                : in City/State
          I Name of New User Answer Files : NEWUSER.ASW  OLDUSERS.ASW
          J Name of Bulletin file (w ext.): BULLET8.ANS
          K Registration Number           : 00-000-0000-00000


     A: FULL path of your main renegade directory.
     B: This option is to determine which validation level to upgrade
        new users to.  The first parameter is the New User level, the
        second is the Validated Level, and the third option is either 'No'
        for Disabled where the user is just Nuked, or a letter corresponding
        to the Deleted level.  If the third option is on, Nuked users will
        be upgraded to that subsription level instead of being placed into
        the NUVDEL.DAT file and then deleted.
     C: 'Quit To':  this option determines which menu the voting user
        will be sent to after he finishes voting.
     D: Number of votes needed to validate a new user.
     E: Number of votes needed to 'nuke' a new user.
     F: Toggles
          1: Force Voting     - sets if voting users can't quit or abstain.
          2: Blacklisting     - turns the BlackListing options on.
          3: Viewing NU's Msg - allows voting users to see the new users'
                                message to the sysop.
          4: Multinode        - turns Multinode support on. See 'Multi-Node
                                Setup' for further details.
     G: How NUV handles your RG menus- Expert, Normal, or Shell modes.
     H: This option directs to where NUV should write the optinal UserNote to.
     I: These filenames are where the new user's questionnaire answers are read
        from during the voting process, and where they are read to when using
        the UPDATE feature.  Both are to be found in your RG MISC directory.
     J: Name of bulletin file used to write NUKE messages to.  Not fully
        implemented yet.
     K: Registration number used to determine if you have a registered
        copy or not.




For adding the new user:

  If you haven't already, create the NEWUSER.INF in your RG MISC directory.
  This info-form is used automatically when a new user logs in, so you can
  use it to add the new users to the voting process by adding:

       ;TNUVINTRO.ANS               <-- shows the introduction screen
       ;D-NUVMenu CHECK [%U]         <-- runs NUVMenu and adds the user
       ;TNUVRESLT.ANS               <-- shows the new user what happened

  You should also add an option in your login process, by linking multiple
  commands together, to do something of the same, so the new user can call
  back and 'check' their status.




For the validated user voting process:

  In a convient spot, like your FIRST menu, link two commands together -

     -CMD--Options----------
       D-  NUVMenu START [%U]    <--- 'D-' runs NUVMenu with NO drop file
       -^  NUVSTART             <--- sends the user to vote

  This is initialize the voting menus, and then send him into it.  NUVSTART,
  a semaphore menu used in all voting setups, will either start him voting,
  or show the 'No more users to vote on' string and quit.  You MUST send the
  user to NUVSTART for NUV to work properly.

  Next, create the menu you have defined as the 'Quit To' menu.  This menu
  is where the voting user will be sent to after he finishes voting.  You
  could possibly do some more logon procedures here, or just set it to MAIN.
  'Tis up to you.

  And thats it for the setup.  Pretty simple.  :)



   Expert, Normal, and Shell Modes

There are now three different modes you can have NUV operate under -

    Normal Mode -  NUV will COMPLETELY handle the RG menus for you, so all you
                   have to do is just send the voting user to NUVSTART and be
                   done with it.  I would try this method for a while first to
                   become comfortable with it.

                   NUV will generate ALL the menus for EACH user to be voted
                   on, as well as all the different possible stat screens for
                   each user.  These menus are not deleted, but are written
                   over each time.

    Expert Mode -  In this mode, NUV will only write one menu, NUVSTART.  All
                   other menus are to be made by you, so as to allow lightbars
                   and other multi-menu combinations.  The initial menu you
                   use MUST be called NUVMAIN, for this is the menu the user
                   goes to after leaving NUVSTART.  I have included a sample
                   menu for you.

                   NUV will find the first user in the list (FBNUV.DAT) that
                   the voting user hasn't voted on yet.  Using the SKIP
                   commandline here will 'skip' the current new user being
                   voted on, and will ignore him until the START commandline
                   is run again.

    Shell Mode  -  Same as Normal Mode, but instead the semaphore menu will
                   list the users currently needed to be voted on, using
                   strings L - N on page 2 (header, middle, and footer).
                   The voting user can then choose directly which user he
                   wants to vote on.


Now, in order to not get you UTTERLY confused here, I shall attempt to show you
  exactly what happens here, and all the different possible things you can do
  under each mode:

                             --  Normal Mode  --

      Menu:                  ANSIs Shown:

      NUVSTART               NUVINTRO.ANS
         
      NUVMAIN#               NUVMAIN#.ANS, generated from NUVMENU.ANS
                            NUVHELP2.ANS (help file)
                            NUV#.CMT (user comments)
                            NUV#.MSG (user message)
                            NUV#.ANS (user questionnaire answers)
         
      NUV#V                  none, uses string L, page 3.
         
 (depending upon how the user votes, it'll branch 1 of three ways here)
         
      NUV#YC/NUV#NC/NUV#AC   none, uses string M, page 3.
                            NUV#.DUN (shown after voting)
         
      NUVSTART               none - no ansi each consecutive time voting



                             -- Expert Mode --

      NUVSTART               NUVINTRO.ANS
         
      NUVMAIN                NUVMAIN.ANS    generated from NUVMENU.ANS
                            NUV.CMT        (the comments)
                            NUV.MSG        (the message)
                            NUV.ANS        (the answers)
                            NUV.VOT        generated from NUVOTEON.ANS
                            NUV.DUN        (the new users stats after voting)
                            ???????.???    (whatever other ansis you want to
                                           show)
         
      ????????               You can use any menus you want here.
         
      NUVSTART               You always need to go back to this menu in order
                             to make sure there's no one left to vote on.




   Multi-Node Setups

The NUV system becomes a tad more complex for the multi-node setups out there,
  and hence, I opted to change the command line parameters slightly for the
  four main command line operations (CHECK / START / VOTE / SKIP).  These
  options will only go into effect if MultiNode (option E in CONFIG) is
  toggled to Yes:

  NUVMenu CHECK <node number>

  NUVMenu START <node number>

  Normal Mode:
     NUVMenu VOTE <node number> <new user number> <vote>
  Expert Mode:
     NUVMenu VOTE <node number> <vote>
     NUVMenu SKIP <node number>

  Basically the same, but this way it'll read in a DORINFO#.DEF (# being the
  node number) for the pertinent info, so therfore you MUST drop with the door
  file everytime you run this.

Next, instead of just copying NUVMENU.INF over to your MISC directory, you
  need to copy it to NUVMENU#.INF, with # being the node number, for all
  possible nodes you run on your system.  This allows NUV to know which node
  left which comment.  Be sure to keep just plain NUVMENU.INF intact, as that
  file is used to 'match up' with the aswers for blank line appending.

Also, there are few minor differences for the output.  First, instead of just
  plain 'NUVRESLT.ANS' for the output filename for the CHECK operations,
  NUV will output 'NUVRSLT#.ANS' with # referring to the node num again.

  Next, instead of send the voting user to NUVSTART, you need to send him to
  NUVSTRT#.  Since you can't change menus with MCI codes in the menu names,
  you have to create and link together a command for each node.  For example,

  -ACS--CMD--Options----------
        DD   NUVMenu START [%U]      <--- note the 'DD' instead of just 'D-'
   n1   -^   NUVSTRT1
   n2   -^   NUVSTRT2
   n3   -^   NUVSTRT3
   etc..

As well as adding this instead to your .INF file:

       ;TNUVINTRO.ANS               <-- shows the introduction screen
       ;DDNUVMenu CHECK %N           <-- runs NUVMenu and adds the user
       ;TNUVRSLT%N.ANS              <-- show the new user what happened

Its pretty much a general rule of thumb that when running multi-node options,
  NUV will add the node number to the end of the file name, right before the
  extention.  In Expert mode, the new file names are:

   NUVMAIN#.ANS    generated from NUVMENU.ANS
   NUV#.CMT        (the comments)
   NUV#.MSG        (the message)
   NUV#.ANS        (the answers)
   NUV#.VOT        generated from NUVOTEON.ANS
   NUV#.DUN        (the new users stats after voting)

   where '#' is the node number of the user voting.

Doing these few things will completely render your system multi-node com-
  patible.  All the subsequent menus, text files, etc. are named differently
  in order to correspond only to whatever ever node is running NUV by adding
  the node number to the end of the name, and is handled completely by NUV.




   Data Files

This list of data files that will be in use by the NUV system:

    Included in NUV package:
     NUVDATA.DAT  -  Contains all configuration information for NUV and
                     essential for NUV operation.  Must be in the same dir
                     as the NUVOTE, NUQUES, and CONFIG.

    Generated by running NUV:  (located in the MAIN RG directory)
     FBNUV.DAT    -  Main list of new users currently being voted upon.
     NUVDEL.DAT   -  List of NUKED new users prior to calling back and
                     becoming deleted.
     BLACK.LST    -  A text listing of NUKED new users, which is read (if it
                     exists) for black-listed users.  User names are added
                     to the list everytime a new user is NUKED by the NUVOTE
                     program.  Registered versions only.

  In Normal mode, you will also see a TON of NUV*.MNUs in your MENU directory.
  This is to be expected.  The menus are not erased, and are just writen over
  every time you run NUV.


   NUV ANSi Screens

     NUVBlack.ANS -  Shown to new users upon finding their name in the
                     BLACK.LST file.
                     Converts into NUVRESLT.ANS.

     NUVInfo.ANS  -  Information screen given after hitting a '|' key from
                     the main prompt.

     NUVIntro.ANS -  Initial screen shown to user.

     NUVHelp.ANS  -  Screen shown to the voting user in Shell mode, off the
                     NUVSTART semaphore menu.

     NUVHelp2.ANS -  Help screen shown to the voting user during Normal and
                     Shell modes when voting on the individual new users.

   * NUVoted.ANS  -  Stat screen given after voting on a new user.
                     Converts into NUVRESLT.ANS.

   * NUVMenu2.ANS -  Screen shown when the 'MENU' formatting style is used.
                     Converts into NUVMAIN#.ANS.

   * NUVStats.ANS -  Shown to a new user logging on while he is still currently
                     being voted on.  String P, Page 1, will be shown to the
                     user is this file does not exist.
                     Converts into NUVRESLT.ANS.

     NUVList.ANS  -  Header used for outputting the current list of new users
                     being voted on.

     NUVForce.ANS -  Shown only when a voting user tries to quit or abstain
                     from voting when the Force Voting option in the config
                     is toggled 'Yes'.

   * NUVNuked.ANS -  Shown to the user after he's called back and found himself
                     waiting in the nuke list (NNUVDEL.DAT), basically his
                     final stats.  String R, Page 1, will be shown to the user
                     if this file does not exist, and is converted into
                     NUVRESLT.ANS as well.

   * NUVoteOn.ANS -  Used in Expert mode, this file is used to create NUV.VOT,
                     which is the voting prompt ansi that can be used when
                     when voting on the user.  String L, Page 3 will be used
                     if this file does not exist.



  *  These screens all contain NUV-specific MCI codes, and will not be
      directly shown to the user.


   MCI Codes

This is a list of the current MCI codes (case sensitive) used in the sysop-
  defined strings and the stat screens:

     &A - Number of Abstentions
     &D - Delay
     &M - Carriage Return
     &N - Number of No Votes
     &O - User Name currently Online
     &P - Pause
     &R - User Number in NUV data file
     &S - User Number in RG (only used in the NUVVAL and NUVDEL batch files)
     &T - Number of Total Votes
     &U - Name of User being voted on
     &V - Total TO be voted on
     &Y - Number of Yes Votes
     &# - Area Code MCI

  Many of these codes will be converted into their corresponding RG counter-
  part.  For example, '&P' becomes '%PA', '&M' becomes '%LF' in Renegade.
  These codes were added just for compatibility for previous NUVote versions,
  and can just as easily be substitued by their RG counterpart.


   String Descriptions

NOTE:  Many of these strings are not used any more since converting to the
       'new' 3.0 method of implementation, but these following descriptions
       will still give you a good idea of what's going on.

   Page(1) 
     L: User does not exist.
        Given when NUV can't find the user in your USERS.DAT file.
     M: User has already been validated.
        Shown when the new user in the FBNUV.DAT file has an sl greater than
        the level you have set in the config program.
     N: User # to vote on (?=Help) Prompt.
        The main prompt in the NUV program.
     O: Adding User.  Users will now vote on you.
        Shown to a new user when he is added to the list in the FBNUV.DAT.
     P: Current Voting Results: ...
        Shown to new user when he calls back but is still being voted on.
     R: Your Final Voting Stats WERE as follows: ...
        Shown to new user when he calls back and finds he was nuked by the
        NUV team.

   Page(2) 
     L: New user list heading.
        Top of the list of new users to vote on before the main prompt.  Used
        in Shell mode.
     M: New user list middle.
        Contains the MCI's for the Name, #, etc. of user being voted on.  Used
        in Shell mode.
     N: New user list footing.
        Bottom of the list of new users, right before prompt.  Used in Shell
        mode.
     O: No more users to vote on...
        Given when all users have been voted on, or there are no users in
        the FBNUV.DAT file.
     P: View info-form for...
        Prompt for asking the users thats voting if he wants to see the
        new user's questionnaire answers.
     R: Comments header.
        This line preceeds the list of comments given by the voting users.

   Page(3) 
     L: How do you vote on (Y/N/A)...
        Prompt for voting users to give an Y or N or A answer (just Y and N
        if the Force Voting option is on).
     M: Add a comment?
        Prompt for asking voting users if the want to leave a comment about
        the new user being voted on.
     N: Thanks for voting..
        Given to the voting user if he quits from the main prompt.
     O: Validating ...
        String stating that the new user has recieved enough yes votes and
        is being validated.
     P: Nuking ...
        String stating that the new user has recieved enough no votes and is
        being deleted.
     R: String to be used to be writen to a possible bulliten file whenever
        someone gets NUKED.  Not fully implemented yet.

   Page(4) 
     L: View new user's message to sysop?
        Prompt for voting users to answer Yes if they want to see the message
        or No if they don't.
     M: Enter Comment:
        Prompt for voting users to enter a comment for the new user that
        they are voting on.
     N: Which Command?:
     O: No Comments Yet.
        Just a quick line that says there are no comments made yet about the
        new user being voted on.
     P: not used...
     R: not used...



   Registration

Last but not least, REGISTRATION...

  If you would like a REGISTERED copy of NUVMenu (and I know you do), please
  send $10 (american money only please) to:

   Steve Kerr
   500 Northside Circle NW  Apt. LL-12  <---  New Apt. Number!
   Atlanta, GA  30309

Please include either a phone number where I can reach you, or an address, or
  at least somewhere for me to give you your REGISTRATION code.  Without it,
  you are limited to only 5 users at one time in the NUV list, no blacklisting,
  and you get this huge NAG line every time you run it...  plus you never know
  if there might be this little routine in there to format your HD or not, so
  its usually a good idea.... :)



Please report all problems and questions to:

   Steve Kerr @
   Library of Trantor BBS: 404-920-7711 (sysop: Ben Linebeck)
   or
   Killean @
   Digital Wasteland     : 404-933-9253 (sysop: Atomic Punk)
                           404-955-0325

   (or if you know the number to my BBS I can be reached there too..)


Leave me e-mail I I'll get back to you as soon as possible.

