home *** CD-ROM | disk | FTP | other *** search
/ The Devil's Doorknob BBS Capture (1996-2003) / devilsdoorknobbbscapture1996-2003.iso / Dloads / SYSOP / MODS1.ZIP / CREDIT-1.MOD < prev    next >
Text File  |  1993-10-27  |  29KB  |  739 lines

  1. ┌────────────────────────────────────────────────────────────────────────────┐
  2. │ Mod Name: Credit.mod (v1.0)    Mod Author(s): Arc Angel    WWIVNet 1@4067  │
  3. │ Difficulty: Fairly advanced, quite a few changes to the code               │
  4. │ WWIV Version: WWIV v4.22       Date: 10/23/93                              │
  5. │ Files Affected: batch,bbs,bbsutl,conio,lilo,newuser,sr,uedit,utility,*.h   │
  6. │ Description: A credit system for WWIV with dl earnings & free files        │
  7. └────────────────────────────────────────────────────────────────────────────┘
  8.  
  9. Extended:   This modification gives WWIV an advanced credit system complete
  10.             with : 
  11.             * earned credit based on downloads of files the user had
  12.               uploaded (ek)
  13.             * earned dl credit tracked even on extracted downloads
  14.             * change exemptions in addition to ratio exemptions (so charges
  15.               to the account during the exemption period do not adversely
  16.               affect the user later) (exemption 4)
  17.               exempted k is stored to track this (xk), thus specific 
  18.               amounts of exempted credit can be added to an account
  19.               (credit balance is calculated as:
  20.                uk/req_ratio + ek*dl_earned_multiplier - dk + xk)
  21.             * exemption expiration dates (exemptions are valid through 
  22.               the end of the date of expiration)
  23.             * (the time exemption is implemented) (exemption 1)
  24.             * exemptions and the exemption expiration date is shown
  25.               on the (y)our info screen in the main menu and xfer menu
  26.             * the F1 editor and //uedit are modified to allow editing
  27.               the transfer credits ("c" edits credits in //uedit)
  28.             * the xfer command //FREE can be used to mark files as
  29.               free downloads. Free downloads still earn credit for
  30.               the uploader as normal. Files extracted from free downloads
  31.               are also free.
  32.             * the batchfile lists are changed to include size and time
  33.  
  34. Disclaimer: I am not responsible for any problems or complications due to your
  35.             use of this modification. I urge you to make a full backup of your
  36.             BBS and keep it for at least a few weeks after beginning to use
  37.             your new code.
  38.  
  39. Key         +  Add this Line
  40.  
  41.  
  42.  
  43. diff -H -b -p ./batch.c Credit/batch.c
  44. *** ./batch.c   Thu Dec 03 19:56:36 1992
  45. --- credit/batch.c      Fri Oct 22 20:34:40 1993
  46. *************** void listbatch(void)
  47. *** 29,34 ****
  48. --- 29,36 ----
  49.   {
  50.     char s[81];
  51.     int abort,i;
  52. +   /* Credit MOD */ char s1[81];
  53. +   /* Credit MOD */ int i1;
  54.   
  55.     abort=0;
  56.     nl();
  57. *************** void listbatch(void)
  58. *** 35,40 ****
  59. --- 37,43 ----
  60.     outstr(get_string(864));
  61.     npr("%d  ",numbatch);
  62.     if (numbatchdl) {
  63. +     /* Credit MOD */ npr("Size - %ldk  ",((batchlen+1023)/1024));
  64.       outstr(get_string(865));
  65.       pl(ctim(batchtime));
  66.     } else
  67. *************** void listbatch(void)
  68. *** 41,46 ****
  69. --- 44,50 ----
  70.       nl();
  71.     nl();
  72.     for (i=0; (i<numbatch) && (!abort) && (!hangup); i++) {
  73. +     /* Credit MOD
  74.       if (batch[i].sending)
  75.         sprintf(s,"%d. (D) %s   %s  %s",i+1, batch[i].filename,
  76.         ctim(batch[i].time),
  77. *************** void listbatch(void)
  78. *** 48,53 ****
  79. --- 52,73 ----
  80.       else
  81.         sprintf(s,"%d. (U) %s             %s",i+1,batch[i].filename,
  82.         directories[batch[i].dir].name);
  83. +     Credit MOD */
  84. +     /* Credit MOD */ if (batch[i].sending) {
  85. +     /* Credit MOD */   sprintf(s,"  . (D) %.13s      k  %.8s  %.30s",batch[i].filename,ctim(batch[i].time),directories[batch[i].dir].name);
  86. +     /* Credit MOD */   itoa(i+1,s1,10);
  87. +     /* Credit MOD */   for (i1=0; i1<strlen(s1); i1++)
  88. +     /* Credit MOD */     s[2-strlen(s1)+i1]=s1[i1];
  89. +     /* Credit MOD */   ltoa((((batch[i].len)+1023)/1024),s1,10);
  90. +     /* Credit MOD */   for (i1=0; i1<strlen(s1); i1++)
  91. +     /* Credit MOD */     s[26-strlen(s1)+i1]=s1[i1];
  92. +     /* Credit MOD */ }
  93. +     /* Credit MOD */ else {
  94. +     /* Credit MOD */   sprintf(s,"  . (U) %.13s                   %.30s",batch[i].filename,directories[batch[i].dir].name);
  95. +     /* Credit MOD */   itoa(i+1,s1,10);
  96. +     /* Credit MOD */   for (i1=0; i1<strlen(s1); i1++)
  97. +     /* Credit MOD */     s[2-strlen(s1)+i1]=s1[i1];
  98. +     /* Credit MOD */ }
  99.   
  100.       pla(s,&abort);
  101.     }
  102. *************** void delbatch(int i)
  103. *** 60,65 ****
  104. --- 80,87 ----
  105.     if (i<numbatch) {
  106.       if (batch[i].sending) {
  107.         batchtime -= batch[i].time;
  108. +       /* Credit MOD */ batchcharge -= batch[i].charge;
  109. +       /* Credit MOD */ batchlen -= batch[i].len;
  110.         --numbatchdl;
  111.       }
  112.       --numbatch;
  113. *************** void downloaded(char *fn, long cps)
  114. *** 74,79 ****
  115. --- 96,103 ----
  116.     int i,i1;
  117.     uploadsrec u;
  118.     char s[81];
  119. +   /* Credit MOD */ char s1[81], s2[81];
  120. +   /* Credit MOD */ userrec uu;
  121.  
  122.     for (i1=0; i1<numbatch; i1++) {
  123.       if ((strcmp(fn,batch[i1].filename)==0) && (batch[i1].sending)) {
  124. *************** void downloaded(char *fn, long cps)
  125. *** 82,89 ****
  126. --- 106,118 ----
  127.         if (i>0) {
  128.         SETREC(i);
  129.         read(dlf,(void *)&u,sizeof(uploadsrec));
  130. +       /* Credit MOD */ if (u.filetype!='F') {
  131.         ++thisuser.downloaded;
  132.         thisuser.dk += (int) ((u.numbytes+1023)/1024);
  133. +       /* Credit MOD */     if (thisuser.exempt & exempt_charge && before_end_of_day(thisuser.exempt_daten))
  134. +       /* Credit MOD */       thisuser.xk += (unsigned long) (u.numbytes+1023)/1024;
  135. +       /* Credit MOD */ }
  136. +       /* Credit MOD */ if (usernum!=u.ownerusr && !(thisuser.exempt & (exempt_ratio | exempt_charge) && before_end_of_day(thisuser.exempt_daten)))
  137.         ++u.numdloads;
  138.         SETREC(i);
  139.         write(dlf,(void *)&u,sizeof(uploadsrec));
  140. *************** void downloaded(char *fn, long cps)
  141. *** 92,102 ****
  142. --- 121,151 ----
  143.         else
  144.           sprintf(s,get_stringx(1,43),u.filename);
  145.         sysoplog(s);
  146. +       /* Credit MOD
  147.         if (syscfg.sysconfig & sysconfig_log_dl) {
  148.           sprintf(s,get_stringx(1,51),
  149.             nam(&thisuser,usernum), u.filename, date());
  150.           ssm(u.ownerusr,0,s);
  151.         }
  152. +       Credit MOD */
  153. +       /* Credit MOD */ if ((usernum!=u.ownerusr) && !(thisuser.exempt & (exempt_ratio | exempt_charge) && before_end_of_day(thisuser.exempt_daten))) {
  154. +       /* Credit MOD */   if ((u.ownersys==0) && (u.ownerusr!=0)) {
  155. +       /* Credit MOD */     read_user(u.ownerusr,&uu);
  156. +       /* Credit MOD */     if ((uu.inact & inact_deleted)==0) {
  157. +       /* Credit MOD */        uu.ek += (1023L+u.numbytes)/1024L;
  158. +       /* Credit MOD */        write_user(u.ownerusr,&uu);
  159. +       /* Credit MOD */     }
  160. +       /* Credit MOD */     if ((syscfg.sysconfig & sysconfig_log_dl) &&
  161. +       /* Credit MOD */         (uu.dsl>=directories[batch[i1].dir].dsl) &&
  162. +       /* Credit MOD */         (uu.age>=directories[batch[i1].dir].age) &&
  163. +       /* Credit MOD */         (!directories[batch[i1].dir].dar ||
  164. +       /* Credit MOD */          (directories[batch[i1].dir].dar & uu.dar)!=0)) {
  165. +       /* Credit MOD */        ltoa((1023L+(u.numbytes*extcfg.dl_earnings_multiplier))/1024L,s2,10);
  166. +       /* Credit MOD */        sprintf(s1,"%.20s downloaded %.13s on %.8s, %.5sk credit earned.",nam(&thisuser,usernum),stripfn(u.filename),date(),s2);
  167. +       /* Credit MOD */        ssm(u.ownerusr,0,s1);
  168. +       /* Credit MOD */     }
  169. +       /* Credit MOD */   }
  170. +       /* Credit MOD */ }
  171.         }
  172.         closedl();
  173.         delbatch(i1);
  174. *************** void uploaded(char *fn, long cps)
  175. *** 255,266 ****
  176. --- 304,318 ----
  177.               }
  178.             }
  179.             closedl();
  180. +         /* Credit MOD */ if (d1>=0)
  181.           delbatch(i1);
  182.           return;
  183.         }
  184.         }
  185.         closedl();
  186. +       /* Credit MOD
  187.         delbatch(i1);
  188. +       Credit MOD */
  189.         if (try_to_ul(fn)) {
  190.         sprintf(s,get_stringx(1,55), fn);
  191.         sysoplog(s);
  192. *************** void ymbatchdl(int had)
  193. *** 290,296 ****
  194. --- 342,351 ----
  195.  
  196.     if (!incom)
  197.       return;
  198. +   /* Credit MOD
  199.     sprintf(s,get_stringx(1,57),numbatchdl, ctim(batchtime));
  200. +   Credit MOD */
  201. +   /* Credit MOD */ sprintf(s,"Ymodem BATCH DL, %d files, size=%ldk, time=%s",numbatchdl, ((batchlen+1023)/1024), ctim(batchtime));
  202.     if (had)
  203.       strcat(s,get_stringx(1,58));
  204.     sysoplog(s);
  205. *************** void ymbatchdl(int had)
  206. *** 303,310 ****
  207. --- 358,369 ----
  208.       tleft(1);
  209.       if ((syscfg.req_ratio>0.0001) && (ratio()<syscfg.req_ratio))
  210.         rr=1;
  211. +     /* Credit MOD
  212.       if (thisuser.exempt & exempt_ratio)
  213.         rr=0;
  214. +     Credit MOD */
  215. +     /* Credit MOD */ if (thisuser.exempt & (exempt_ratio | exempt_charge) && before_end_of_day(thisuser.exempt_daten))
  216. +     /* Credit MOD */   rr=0;
  217.       if (!batch[cur].sending) {
  218.         rr=0;
  219.         ++cur;
  220. *************** void ymbatchdl(int had)
  221. *** 316,322 ****
  222. --- 375,384 ----
  223.           delbatch(cur);
  224.           closedl();
  225.         } else {
  226. +       /* Credit MOD
  227.         sprintf(s,get_stringx(1,59),numbatchdl,ctim(batchtime));
  228. +       Credit MOD */
  229. +       /* Credit MOD */ sprintf(s,"%d files left, Size left = %ldk, Time left = %s\r\n",numbatchdl,((batchlen+1023)/1024),ctim(batchtime));
  230.         outs(s);
  231.           SETREC(i);
  232.           read(dlf,(void *)&u,sizeof(uploadsrec));
  233. *************** void make_dl_batch_list(char *listfn)
  234. *** 465,476 ****
  235. --- 527,546 ----
  236.         cd_to(cdir);
  237.         sprintf(s,"%s%s\r\n",s1,stripfn(batch[i].filename));
  238.         ok=1;
  239. +       /* Credit MOD
  240.         if (nsl() < (batch[i].time + at))
  241. +       Credit MOD */
  242. +       /* Credit MOD */ if (nsl() < (batch[i].time + at) && !(thisuser.exempt & exempt_time && before_end_of_day(thisuser.exempt_daten)))
  243.         ok=0;
  244. +       /* Credit, Credit MOD
  245.         thisk=(batch[i].len+1023)/1024;
  246.         if ((syscfg.req_ratio>0.0001) && (ratio1(addk+thisk)<syscfg.req_ratio) &&
  247.           (!(thisuser.exempt & exempt_ratio)))
  248.         ok=0;
  249. +       Credit, Credit MOD */
  250. +       /* Credit, Credit MOD */ thisk=(batch[i].len+1023)/1024;
  251. +       /* Credit, Credit MOD */ if (((double)(balance()-addk) < 0.0) && !(thisuser.exempt & (exempt_ratio | exempt_charge) && before_end_of_day(thisuser.exempt_daten)))
  252. +       /* Credit, Credit MOD */   ok=0;
  253.         if (ok) {
  254.         write(f,s,strlen(s));
  255.         at += batch[i].time;
  256. *************** void dszbatchdl(int had, char *cmdln, ch
  257. *** 582,589 ****
  258. --- 652,662 ----
  259.     char listfn[81],dl[100];
  260.  
  261.  
  262. +   /* Credit MOD
  263.     sprintf(dl,get_stringx(1,61),
  264.           desc, numbatchdl, ctim(batchtime));
  265. +   Credit MOD */
  266. +   /* Credit MOD */ sprintf(dl,"%s BATCH DL, %d files, size=%ldk, time=%s",desc,numbatchdl,((batchlen+1023)/1024),ctim(batchtime));
  267.     if (had)
  268.       strcat(dl,get_stringx(1,58));
  269.     sysoplog(dl);
  270. *************** void dszbatchul(int had, char *cmdln, ch
  271. *** 618,624 ****
  272. --- 691,699 ----
  273.     ti=timer()-ti;
  274.     if (ti<0)
  275.       ti += 24.0*3600.0;
  276. +   /* Credit MOD
  277.     thisuser.extratime += ti;
  278. +   Credit MOD */
  279.   }
  280.  
  281.   /****************************************************************************/
  282. *************** void batchdl(void)
  283. *** 658,663 ****
  284. --- 733,739 ----
  285.   {
  286.     int i,abort,done,i1,i2,had,dsz;
  287.     char s[81],s1[81],ch,ch1;
  288. +   /* Credit MOD */ long old_balance;
  289.  
  290.     done=0;
  291.     if (numbatch==0) {
  292. *************** void batchdl(void)
  293. *** 704,709 ****
  294. --- 780,787 ----
  295.             numbatch=0;
  296.             numbatchdl=0;
  297.           batchtime=0.0;
  298. +         /* Credit MOD */ batchcharge=0;
  299. +         /* Credit MOD */ batchlen=0;
  300.           done=1;
  301.             pl(get_string(875));
  302.           }
  303. *************** void batchdl(void)
  304. *** 723,728 ****
  305. --- 801,807 ----
  306.         i=get_protocol(xf_up_batch);
  307.         if (i>0) {
  308.  
  309. +         /* Credit MOD */ old_balance = balance();
  310.           dszbatchul(had, externs[i-6].receivebatchfn, externs[i-6].description);
  311.  
  312.           if (!had) {
  313. *************** void batchdl(void)
  314. *** 730,735 ****
  315. --- 809,815 ----
  316.             outstr(get_string(782));
  317.             npr("%-6.3f\r\n",ratio());
  318.           }
  319. +         /* Credit MOD */ npr("You %s have a credit balance of: %ldk\r\n",((old_balance == balance()) ? "still" : "now"),balance());
  320.           done=1;
  321.           }
  322.           break;
  323. *************** void batchdl(void)
  324. *** 752,757 ****
  325. --- 832,838 ----
  326.         i=get_protocol(xf_bi);
  327.         if (i>0) {
  328.  
  329. +         /* Credit MOD */ old_balance = balance();
  330.           bibatch(had, externs[i-6].bibatchfn, externs[i-6].description);
  331.  
  332.           if (!had) {
  333. *************** void batchdl(void)
  334. *** 759,764 ****
  335. --- 840,846 ----
  336.             outstr(get_string(782));
  337.             npr("%-6.3f\r\n",ratio());
  338.           }
  339. +         /* Credit MOD */ npr("You %s have a credit balance of: %ldk\r\n",((old_balance == balance()) ? "still" : "now"),balance());
  340.           done=1;
  341.         }
  342.           break;
  343. *************** void batchdl(void)
  344. *** 785,790 ****
  345. --- 867,873 ----
  346.  
  347.         i=get_protocol(xf_down_batch);
  348.         if (i>0) {
  349. +         /* Credit MOD */ old_balance = balance();
  350.  
  351.           if (i==4) {
  352.             if (over_intern && (over_intern[2].othr & othr_override_internal) &&
  353. *************** void batchdl(void)
  354. *** 800,805 ****
  355. --- 883,889 ----
  356.             outstr(get_string(782));
  357.             npr("%-6.3f\r\n",ratio());
  358.           }
  359. +         /* Credit MOD */ npr("You %s have a credit balance of: %ldk\r\n",((old_balance == balance()) ? "still" : "now"),balance());
  360.           done=1;
  361.         }
  362.         break;
  363.  
  364.  
  365.  
  366. diff -H -b -p ./bbs.c Credit/bbs.c
  367. *** ./bbs.c     Mon Jan 11 19:37:54 1993
  368. --- credit/bbs.c        Fri Oct 22 18:03:06 1993
  369. *************** void mainmenu(void)
  370. *** 558,563 ****
  371. --- 558,567 ----
  372.       set_x_only(1, "POSTS.TXT", 0);
  373.       nscan(0);
  374.       set_x_only(0, NULL, 0);
  375. +     /* Credit MOD */ tempfreefile=1;
  376. +     /* Credit MOD */ strcpy(tempfilename,"POSTS");
  377. +     /* Credit MOD */ tempownersys=0;
  378. +     /* Credit MOD */ tempownerusr=0;
  379.       add_arc("OFFLINE", "POSTS.TXT", 0);
  380.       download_temp_arc("OFFLINE", 0);
  381.     }
  382. *************** void dlmainmenu(void)
  383. *** 799,804 ****
  384. --- 803,810 ----
  385.       sysopchar(s1);
  386.     } else
  387.       sysopchar(s);
  388. +   /* Credit MOD */ if ((strcmp(s,"FREE")==0) && (so()))
  389. +   /* Credit MOD */   freefile();
  390.     if (strcmp(s,"/O")==0)
  391.       hangup=1;
  392.     if (strcmp(s,"/S")==0) {
  393. *************** void dlmainmenu(void)
  394. *** 806,811 ****
  395. --- 812,821 ----
  396.       set_x_only(1,"FILES.TXT", 1);
  397.       searchall();
  398.       set_x_only(0, NULL, 0);
  399. +     /* Credit MOD */ tempfreefile=1;
  400. +     /* Credit MOD */ strcpy(tempfilename,"FILELIST");
  401. +     /* Credit MOD */ tempownersys=0;
  402. +     /* Credit MOD */ tempownerusr=0;
  403.       add_arc("TEMP", "FILES.TXT", 1);
  404.     }
  405.     if ((strcmp(s,"/?")==0) && (dcs()))
  406.  
  407.  
  408.  
  409. diff -H -b -p ./bbsutl.c Credit/bbsutl.c
  410. *** ./bbsutl.c  Fri Jan 08 21:42:12 1993
  411. --- credit/bbsutl.c     Fri Oct 22 17:32:14 1993
  412. *************** void yourinfo(void)
  413. *** 491,496 ****
  414. --- 491,498 ----
  415.     } else
  416.       nl();
  417.     outstr(get_string(606)); pln(thisuser.dsl);
  418. +   /* Credit MOD */ if (thisuser.exempt && before_end_of_day(thisuser.exempt_daten))
  419. +   /* Credit MOD */   npr("Exemptions     : %s%s%s%sthrough %s\r\n",
  420. +   /* Credit MOD */       (thisuser.exempt & exempt_time ? "time " : ""),
  421. +   /* Credit MOD */       (thisuser.exempt & exempt_ratio ? "balance " : ""),
  422. +   /* Credit MOD */       (thisuser.exempt & exempt_charge ? "charges " : ""),
  423. +   /* Credit MOD */       (thisuser.exempt & exempt_post ? "post " : ""),
  424. +   /* Credit MOD */       ntos(thisuser.exempt_daten));
  425.     outstr(get_string(366)); pl(thisuser.laston);
  426.     outstr(get_string(607)); pln(thisuser.logons);
  427.     outstr(get_string(608)); pln(thisuser.ontoday);
  428.  
  429.  
  430.  
  431. diff -H -b -p ./conio.c Credit/conio.c
  432. *** ./conio.c   Wed Dec 30 17:33:08 1992
  433. --- credit/conio.c      Sat Oct 23 01:23:20 1993
  434. *************** void val_cur_user(void)
  435. *** 684,689 ****
  436. --- 684,690 ----
  437.     char sl[4],dsl[4],exempt[4],sysopsub[4],ar[17],dar[17],restrict[17],rst[17],
  438.          tl[50];
  439.     int cp,i,done,rc,wx,wy;
  440. +   /* Credit MOD */ char ex_dt[9], ndl[33],uk[34],dk[34],ek[34],xk[34],nul[33],gold[33],posts[34],logons[34],timeon[34];
  441.  
  442.     pr_wait(1);
  443.     savescreen(&screensave);
  444. *************** void val_cur_user(void)
  445. *** 690,696 ****
  446. --- 691,711 ----
  447.     curatr=7;
  448.     wx=15;
  449.     wy=4;
  450. +   /* Credit MOD
  451.     makewindow(wx,wy,50,7);
  452. +   Credit MOD */
  453. +   /* Credit MOD */ makewindow(wx,wy,50,10);
  454. +   /* Credit MOD */ ltoa(thisuser.dk,dk,10);
  455. +   /* Credit MOD */ ltoa(thisuser.uk,uk,10);
  456. +   /* Credit MOD */ ltoa(thisuser.ek,ek,10);
  457. +   /* Credit MOD */ ltoa(thisuser.xk,xk,10);
  458. +   /* Credit MOD */ itoa((int)thisuser.downloaded,ndl,10);
  459. +   /* Credit MOD */ itoa((int)thisuser.uploaded,nul,10);
  460. +   /* Credit MOD */ gcvt(thisuser.gold,10,gold);
  461. +   /* Credit MOD */ itoa((int)thisuser.msgpost,posts,10);
  462. +   /* Credit MOD */ itoa((int)thisuser.logons,logons,10);
  463. +   /* Credit MOD */ ultoa((unsigned long)thisuser.timeon,timeon,10);
  464. +   /* Credit MOD */ strcpy(ex_dt,ntos(thisuser.exempt_daten));
  465.     itoa((int)thisuser.sl,sl,10);
  466.     itoa((int)thisuser.dsl,dsl,10);
  467.     itoa((int)thisuser.exempt,exempt,10);
  468. *************** void val_cur_user(void)
  469. *** 721,729 ****
  470. --- 736,754 ----
  471.     movecsr(wx+2,wy+2); sprintf(tl,get_stringx(1,79),dsl); outs(tl);
  472.     movecsr(wx+26,wy+2); sprintf(tl,get_stringx(1,80),dar); outs(tl);
  473.     movecsr(wx+2,wy+3); sprintf(tl,get_stringx(1,81),exempt); outs(tl);
  474. +   /* Credit MOD */ movecsr(wx+12,wy+3); sprintf(tl,"- %s",ex_dt); outs(tl);
  475.     movecsr(wx+26,wy+3); sprintf(tl,get_stringx(1,82),restrict); outs(tl);
  476.     movecsr(wx+2,wy+4); sprintf(tl,get_stringx(1,83),sysopsub); outs(tl);
  477. +   /* Credit MOD
  478.     movecsr(wx+2,wy+5); sprintf(tl,get_stringx(1,84),thisuser.note); outs(tl);
  479. +   Credit MOD */
  480. +   /* Credit MOD */ movecsr(wx+26,wy+4); sprintf(tl,"GOLD : %s",gold); outs(tl);
  481. +   /* Credit MOD */ movecsr(wx+2,wy+5); sprintf(tl,"UL= %3s/%6s/%6s",nul,uk,ek); outs(tl);
  482. +   /* Credit MOD */ movecsr(wx+2,wy+6); sprintf(tl,"DL= %3s/%6s/%6s",ndl,dk,xk); outs(tl);
  483. +   /* Credit MOD */ movecsr(wx+26,wy+5); sprintf(tl,"# OF LOGONS : %s",logons); outs(tl);
  484. +   /* Credit MOD */ movecsr(wx+26,wy+6); sprintf(tl,"TIME ONLINE : %s",timeon); outs(tl);
  485. +   /* Credit MOD */ movecsr(wx+26,wy+7); sprintf(tl,"POSTED MSGS : %s",posts); outs(tl);
  486. +   /* Credit MOD */ movecsr(wx+2,wy+8); sprintf(tl,get_stringx(1,84),thisuser.note); outs(tl);
  487.     while (done==0) {
  488.       switch(cp) {
  489.         case 0:
  490. *************** void val_cur_user(void)
  491. *** 763,769 ****
  492. --- 788,803 ----
  493.           itoa((int)thisuser.exempt,exempt,10);
  494.           sprintf(tl,"%-3s",exempt); outs(tl);
  495.           break;
  496. +       /* Credit MOD */ case 5:
  497. +       /* Credit MOD */   movecsr(wx+14,wy+3);
  498. +       /* Credit MOD */   editline(ex_dt,8,ALL,&rc,"");
  499. +       /* Credit MOD */   thisuser.exempt_daten=ston(ex_dt);
  500. +       /* Credit MOD */   sprintf(tl,"%8s",ex_dt); outs(tl);
  501. +       /* Credit MOD */   break;
  502. +       /* Credit MOD
  503.         case 5:
  504. +       Credit MOD */
  505. +       /* Credit MOD */ case 6:
  506.         movecsr(wx+32,wy+3);
  507.         editline(restrict,16,SET,&rc,rst);
  508.         thisuser.restrict=0;
  509. *************** void val_cur_user(void)
  510. *** 771,777 ****
  511. --- 805,814 ----
  512.           if (restrict[i]!=32)
  513.             thisuser.restrict |= (1 << i);
  514.         break;
  515. +       /* Credit MOD
  516.         case 6:
  517. +       Credit MOD */
  518. +       /* Credit MOD */ case 7:
  519.         movecsr(wx+12,wy+4);
  520.         editline(sysopsub,3,NUM_ONLY,&rc,"");
  521.         *qsc= atoi(sysopsub);
  522. *************** void val_cur_user(void)
  523. *** 778,792 ****
  524. --- 815,909 ----
  525.         itoa((int)*qsc,sysopsub,10);
  526.         sprintf(tl,"%-3s",sysopsub); outs(tl);
  527.         break;
  528. +       /* Credit MOD
  529.         case 7:
  530. +       Credit MOD */
  531. +       /* Credit MOD */ case 8:
  532. +       /* Credit MOD */         movecsr(wx+33,wy+4);
  533. +       /* Credit MOD */         editline(gold,15,NUM_ONLY,&rc,"");
  534. +       /* Credit MOD */         thisuser.gold = atof(gold);
  535. +       /* Credit MOD */         gcvt(thisuser.gold,10,gold);
  536. +       /* Credit MOD */         sprintf(tl,"%-15s",gold); outs(tl);
  537. +       /* Credit MOD */         break;
  538. +       /* Credit MOD */ case 9:
  539. +       /* Credit MOD */         movecsr(wx+6,wy+5);
  540. +       /* Credit MOD */         editline(nul,3,NUM_ONLY,&rc,"");
  541. +       /* Credit MOD */         thisuser.uploaded=(int) atoi(nul);
  542. +       /* Credit MOD */         itoa((int)thisuser.uploaded,nul,10);
  543. +       /* Credit MOD */         sprintf(tl,"%3s",nul); outs(tl);
  544. +       /* Credit MOD */         break;
  545. +       /* Credit MOD */ case 10:
  546. +       /* Credit MOD */         movecsr(wx+10,wy+5);
  547. +       /* Credit MOD */         editline(uk,6,NUM_ONLY,&rc,"");
  548. +       /* Credit MOD */         thisuser.uk=atol(uk);
  549. +       /* Credit MOD */         ltoa(thisuser.uk,uk,10);
  550. +       /* Credit MOD */         sprintf(tl,"%6s",uk); outs(tl);
  551. +       /* Credit MOD */         break;
  552. +       /* Credit MOD */ case 11:
  553. +       /* Credit MOD */         movecsr(wx+17,wy+5);
  554. +       /* Credit MOD */         editline(ek,6,NUM_ONLY,&rc,"");
  555. +       /* Credit MOD */         thisuser.ek=atol(ek);
  556. +       /* Credit MOD */         ultoa(thisuser.ek,ek,10);
  557. +       /* Credit MOD */         sprintf(tl,"%6s",ek); outs(tl);
  558. +       /* Credit MOD */         break;
  559. +       /* Credit MOD */ case 12:
  560. +       /* Credit MOD */         movecsr(wx+6,wy+6);
  561. +       /* Credit MOD */         editline(ndl,3,NUM_ONLY,&rc,"");
  562. +       /* Credit MOD */         thisuser.downloaded=(int) atoi(ndl);
  563. +       /* Credit MOD */         itoa((int)thisuser.downloaded,ndl,10);
  564. +       /* Credit MOD */         sprintf(tl,"%3s",ndl); outs(tl);
  565. +       /* Credit MOD */         break;
  566. +       /* Credit MOD */ case 13:
  567. +       /* Credit MOD */         movecsr(wx+10,wy+6);
  568. +       /* Credit MOD */         editline(dk,6,NUM_ONLY,&rc,"");
  569. +       /* Credit MOD */         thisuser.dk=atol(dk);
  570. +       /* Credit MOD */         ultoa(thisuser.dk,dk,10);
  571. +       /* Credit MOD */         sprintf(tl,"%6s",dk); outs(tl);
  572. +       /* Credit MOD */         break;
  573. +       /* Credit MOD */ case 14:
  574. +       /* Credit MOD */         movecsr(wx+17,wy+6);
  575. +       /* Credit MOD */         editline(xk,6,NUM_ONLY,&rc,"");
  576. +       /* Credit MOD */         thisuser.xk=atol(xk);
  577. +       /* Credit MOD */         ultoa(thisuser.xk,xk,10);
  578. +       /* Credit MOD */         sprintf(tl,"%6s",xk); outs(tl);
  579. +       /* Credit MOD */         break;
  580. +       /* Credit MOD */ case 15:
  581. +       /* Credit MOD */         movecsr(wx+40,wy+5);
  582. +       /* Credit MOD */         editline(logons,8,NUM_ONLY,&rc,"");
  583. +       /* Credit MOD */         thisuser.logons=(int) atoi(logons);
  584. +       /* Credit MOD */         itoa((int)thisuser.logons,logons,10);
  585. +       /* Credit MOD */         sprintf(tl,"%8s",logons); outs(tl);
  586. +       /* Credit MOD */         break;
  587. +       /* Credit MOD */ case 16:
  588. +       /* Credit MOD */         movecsr(wx+40,wy+6);
  589. +       /* Credit MOD */         editline(timeon,8,NUM_ONLY,&rc,"");
  590. +       /* Credit MOD */         thisuser.timeon=atof(timeon);
  591. +       /* Credit MOD */         ultoa((unsigned long)thisuser.timeon,timeon,10);
  592. +       /* Credit MOD */         sprintf(tl,"%8s",timeon); outs(tl);
  593. +       /* Credit MOD */         break;
  594. +       /* Credit MOD */ case 17:
  595. +       /* Credit MOD */         movecsr(wx+40,wy+7);
  596. +       /* Credit MOD */         editline(posts,8,NUM_ONLY,&rc,"");
  597. +       /* Credit MOD */         thisuser.msgpost=(int) atoi(posts);
  598. +       /* Credit MOD */         itoa((int)thisuser.msgpost,posts,10);
  599. +       /* Credit MOD */         sprintf(tl,"%8s",posts); outs(tl);
  600. +       /* Credit MOD */         break;
  601. +       /* Credit MOD */ case 18:
  602. +       /* Credit MOD */                movecsr(wx+8,wy+8);
  603. +       /* Credit MOD
  604.         movecsr(wx+8,wy+5);
  605. +       Credit MOD */
  606.         editline(thisuser.note,40,ALL,&rc,"");
  607.         break;
  608.       }
  609.       switch(rc) {
  610.         case DONE: done=1; break;
  611. +       /* Credit MOD
  612.         case NEXT: cp=(cp+1) % 8; break;
  613.         case PREV: cp--; if (cp==-1) cp=7;  break;
  614. +       Credit MOD */
  615. +       /* Credit MOD */ case NEXT: cp=(cp+1) % 19; break;
  616. +       /* Credit MOD */ case PREV: cp--; if (cp==-1) cp=18;  break;
  617.       }
  618.     }
  619.     restorescreen(&screensave);
  620. *************** void tleft(int x)
  621. *** 1088,1094 ****
  622. --- 1205,1214 ----
  623.     curatr=cc;
  624.     movecsr(cx,cy);
  625.     if ((x) && (useron))
  626. +     /* Credit MOD
  627.       if (nsln==0.0) {
  628. +     Credit MOD */
  629. +     /* Credit MOD */ if ((nsln==0.0) && (! (thisuser.exempt & exempt_time && before_end_of_day(thisuser.exempt_daten)))) {
  630.         nl();
  631.         pl(get_string(926));
  632.         nl();
  633.  
  634.  
  635.  
  636. diff -H -b -p ./lilo.c Credit/lilo.c
  637. *** ./lilo.c    Thu Dec 03 19:55:02 1992
  638. --- credit/lilo.c       Fri Oct 22 18:24:24 1993
  639. *************** void logon(void)
  640. *** 475,480 ****
  641. --- 475,481 ----
  642.     nscandate=thisuser.daten;
  643.     batchtime=0.0;
  644.     numbatchdl=numbatch=0;
  645. +   /* Credit MOD */ batchcharge=batchlen=0;
  646.     i1=0;
  647.     for (i=0; i<20; i++) {
  648.       if (questused[i])
  649. *************** void logoff(void)
  650. *** 519,526 ****
  651. --- 520,529 ----
  652.     ton=timer()-timeon;
  653.     thisuser.timeon += ton;
  654.     thisuser.timeontoday += (ton-extratimecall);
  655. +   /* Credit MOD */ if (! (thisuser.exempt & exempt_time && before_end_of_day(thisuser.exempt_daten))) {
  656.     status.activetoday += (int) (ton/60.0);
  657.     save_status();
  658. +   /* Credit MOD */ }
  659.  
  660.  
  661.  
  662. diff -H -b -p ./newuser.c Credit/newuser.c
  663. *** ./newuser.c Tue Dec 08 19:35:02 1992
  664. --- credit/newuser.c    Fri Oct 22 23:13:14 1993
  665. *************** void newuser(void)
  666. *** 740,745 ****
  667. --- 740,746 ----
  668.       }
  669.       write_user(usernum,&thisuser);
  670.       close_user();
  671. +     /* Credit MOD */ disassociate_uploads(usernum);
  672.       write_qscn(usernum, qsc, 0);
  673.       isr(usernum,thisuser.name);
  674.       ok=0;
  675.  
  676.  
  677.  
  678. diff -H -b -p ./sr.c Credit/sr.c
  679. *** ./sr.c      Thu Dec 03 19:56:10 1992
  680. --- credit/sr.c Fri Oct 22 18:24:22 1993
  681. *************** void maybe_internal(char *fn, int *xferr
  682. *** 463,469 ****
  683. --- 463,472 ----
  684.   }
  685.  
  686.  
  687. + /* Credit MOD
  688.   void send_file(char *fn, int *sent, int *abort, char ft, char *sfn, int dn, long fs)
  689. + Credit MOD */
  690. + /* Credit MOD */ void send_file(char *fn, int *sent, int *abort, char ft, char *sfn, int dn, long fs, long fc)
  691.   {
  692.     int i,i1,ok;
  693.     double percent,t;
  694. *************** void send_file(char *fn, int *sent, int
  695. *** 519,525 ****
  696. --- 522,538 ----
  697.             t=(12.656) / ((double) (modem_speed)) * ((double)(fs));
  698.           else
  699.             t=0.0;
  700. +         /* Credit MOD
  701.           if (nsl()<=(batchtime + t)) {
  702. +         Credit MOD */
  703. +         /* Credit MOD */ if (((double)(balance()-batchcharge) < 0.0) && !(thisuser.exempt & (exempt_ratio | exempt_charge) && before_end_of_day(thisuser.exempt_daten))) {
  704. +         /* Credit MOD */   nl();
  705. +         /* Credit MOD */   pl("Batch list exceeds credit limit.");
  706. +         /* Credit MOD */   nl();
  707. +         /* Credit MOD */   *sent=0;
  708. +         /* Credit MOD */   *abort=0;
  709. +         /* Credit MOD */ } else
  710. +         /* Credit MOD */ if (nsl()<=(batchtime + t) && !(thisuser.exempt & exempt_time && before_end_of_day(thisuser.exempt_daten))) {
  711.             nl();
  712.             pl(get_string(901));
  713.             nl();
  714. *************** void send_file(char *fn, int *sent, int
  715. *** 534,539 ****
  716. --- 547,554 ----
  717.                 *abort=0;
  718.             } else {
  719.               batchtime += t;
  720. +             /* Credit MOD */ batchcharge += fc;
  721. +             /* Credit MOD */ batchlen += fs;
  722.               strcpy(batch[numbatch].filename,sfn);
  723.               batch[numbatch].dir=dn;
  724.                 batch[numbatch].time=t;
  725. *************** void send_file(char *fn, int *sent, int 
  726. *** 544,551 ****
  727. --- 559,569 ----
  728.                 ++numbatchdl;
  729.                 nl();
  730.                 pl(get_string(903));
  731. +             /* Credit MOD
  732.               sprintf(s,"%s - %d  %s - %s",get_string(904),
  733.                       numbatch, get_string(905),ctim(batchtime));
  734. +             Credit MOD */
  735. +             /* Credit MOD */ sprintf(s,"Batch: Files - %d  Size - %ldk  Time - %s",numbatch,((batchlen+1023)/1024),ctim(batchtime));
  736.               nl();
  737.                 pl(s);
  738.                 nl();
  739.