home *** CD-ROM | disk | FTP | other *** search
/ ftp.wwiv.com / ftp.wwiv.com.zip / ftp.wwiv.com / pub / MISC / DNDOOR46.ZIP / DNDCNVT.BAS < prev    next >
BASIC Source File  |  2001-07-11  |  8KB  |  253 lines

  1. rem convert program for v4.6 maintenance upgrade.
  2. rem renames .new to .dat and upgrades old bad record lengths
  3. rem and upgrades containers for permanent attribute.
  4.  
  5. rem $include: 'dndcnvt.inc'
  6. on error goto error.routine
  7.  
  8. OldContainerRecLen=Len(OldContainerRec)
  9. NewContainerRecLen=Len(NewContainerRec)
  10.  
  11. OldRoomRecLen=Len(OldRoomRec)
  12. NewRoomRecLen=Len(NewRoomRec)
  13.  
  14. OldUserRecLen=Len(OldUserRec)
  15. NewUserRecLen=Len(NewUserRec)
  16.  
  17. color 15,0
  18. print "Dndcnvt for v4.6a:"
  19.  
  20. ' after first run, dndcnvt will delete or rename .new files.
  21. if dir$("*.new")="" then
  22.    color 14,0
  23.    print "No new data files found."
  24.    color 7,0
  25.    print "Exiting to system."
  26.    end
  27. endif
  28.  
  29. ' display header
  30. color 15,0
  31. print "Converts v4.5a files to v4.6a."
  32.  
  33. ' display info
  34. color 14,0
  35. print "This program does not convert"
  36. print "any versions previous to v4.5a,"
  37.  
  38. ' get user response
  39. color 15,0
  40. print "If you are sure about converting, then press y to continue,"
  41. print "otherwise exit to Dos and delete all .dat files, then restart"
  42. print "this conversion program which will then rename all new .dat files:";
  43. locate ,,1
  44. x$=""
  45. while x$=""
  46.    x$=inkey$
  47. wend
  48. if x$="y" then
  49.    goto start.conversion
  50. endif
  51. color 7,0
  52. print "Exiting to system:"
  53. end
  54.  
  55. ' start
  56. start.conversion:
  57.  
  58. ' go through all .new files
  59. do
  60.    ' see if .new file exists
  61.    f$=dir$("*.new")
  62.    if f$="" then
  63.       exit do
  64.    endif
  65.  
  66.    ' set kill flag
  67.    kill.file=-1
  68.  
  69.    ' see if corresponding .dat file exists
  70.    g$=left$(f$,instr(f$,"."))+"dat"
  71.    if dir$(g$)="" then
  72.       ' rename the .new file to .dat file
  73.       kill.file=0
  74.       name f$ as g$
  75.    else
  76.       ' check special case for old nonplyrs.dat
  77.       if lcase$(g$)="nonplyrs.dat" then
  78.          close
  79.          open g$ for random as #1 len=1
  80.          r!=lof(1)
  81.          if r!/186=r!\186 then
  82.             close
  83.             kill.file=0
  84.             kill g$
  85.             name f$ as g$
  86.             color 13,0
  87.             print "Nonplyrs.dat file updated."
  88.          endif
  89.       endif
  90.       ' old rooms was 978 bytes per record, new file is 980 bytes.
  91.       if lcase$(g$)="rooms.dat" then
  92.          close
  93.          open g$ for random as #1 len=1
  94.          r!=lof(1)
  95.          if r!/978=r!\978 then
  96.             gosub upgrade.room.file
  97.             color 13,0
  98.             print "Rooms.dat file upgraded."
  99.          endif
  100.       endif
  101.       ' old users was 1106 bytes per record, new file is 1112 bytes.
  102.       if lcase$(g$)="users.dat" then
  103.          close
  104.          open g$ for random as #1 len=1
  105.          r!=lof(1)
  106.          if r!/1106=r!\1106 then
  107.             gosub upgrade.user.file
  108.             color 13,0
  109.             print "Users.dat file upgraded."
  110.          endif
  111.       endif
  112.    endif
  113.    ' remove the .new file
  114.    if kill.file then
  115.       kill f$
  116.    endif
  117. loop
  118. color 14,0
  119. print "Data files converted."
  120. color 7,0
  121. print "Exiting to system."
  122. end
  123.  
  124. upgrade.room.file:
  125. close
  126. if dir$("rooms.bkp")<>"" then
  127.    kill "rooms.bkp"
  128. endif
  129. name "rooms.dat" as "rooms.bkp"
  130. open "rooms.bkp" for random as #1 len=oldroomreclen
  131. open "rooms.dat" for random as #2 len=newroomreclen
  132. for l=1 to lof(1)/oldroomreclen
  133.    get 1,l,oldroomrec
  134.    newroomrec.Action=oldroomrec.action
  135.    newroomrec.MonsterClass=oldroomrec.monsterclass
  136.    newroomrec.ShortDesc=oldroomrec.shortdesc
  137.    for m=1 to 5
  138.       newroomrec.LongDesc(m)=oldroomrec.longdesc(m)
  139.    next
  140.    for m=1 to 12
  141.       newroomrec.Direct(m)=oldroomrec.direct(m)
  142.    next
  143.    for m=1 to 20
  144.       newroomrec.Flags(m)=oldroomrec.flags(m)
  145.       newroomrec.Object(m)=oldroomrec.object(m)
  146.       newroomrec.ObjCharges(m)=oldroomrec.objcharges(m)
  147.       newroomrec.Treasure(m)=oldroomrec.treasure(m)
  148.       newroomrec.TreCharges(m)=oldroomrec.trecharges(m)
  149.    next
  150.    newroomrec.container.Closed=oldroomrec.container.closed
  151.    newroomrec.container.ContainerName=oldroomrec.container.containername
  152.    newroomrec.container.Locked=oldroomrec.container.locked
  153.    newroomrec.container.Keyed=oldroomrec.container.keyed
  154.    newroomrec.container.ShortName=oldroomrec.container.shortname
  155.    for m=1 to 5
  156.       newroomrec.container.Charges(m)=oldroomrec.container.charges(m)
  157.       newroomrec.container.Inventory(m)=oldroomrec.container.inventory(m)
  158.       newroomrec.container.Invisible(m)=oldroomrec.container.invisible(m)
  159.       newroomrec.container.TreasureName(m)=oldroomrec.container.treasurename(m)
  160.    next
  161.    newroomrec.container.Permanent=-1 ' this is the new container attribute!
  162.    put 2,l,newroomrec
  163. next
  164. return
  165.  
  166. upgrade.user.file:
  167. close
  168. if dir$("users.bkp")<>"" then
  169.    kill "users.bkp"
  170. endif
  171. name "users.dat" as "users.bkp"
  172. open "users.bkp" for random as #1 len=olduserreclen
  173. open "users.dat" for random as #2 len=newuserreclen
  174. for l=1 to lof(1)/olduserreclen
  175.    get 1,l,olduserrec
  176.    newuserrec.CodeName=olduserrec.codename
  177.    newuserrec.PassWord=olduserrec.password
  178.    newuserrec.ClassName=olduserrec.classname
  179.    newuserrec.ClassType=olduserrec.classtype
  180.    for m=1 to 20
  181.       newuserrec.Inv(m)=olduserrec.inv(m)
  182.       newuserrec.Charges(m)=olduserrec.charges(m)
  183.       newuserrec.Object(m)=olduserrec.object(m)
  184.       newuserrec.ObjCharges(m)=olduserrec.objcharges(m)
  185.    next
  186.    for m=1 to 7
  187.       newuserrec.Stats(m)=olduserrec.stats(m)
  188.    next
  189.    for m=1 to 4
  190.       newuserrec.Weapons(m)=olduserrec.weapons(m)
  191.    next
  192.    newuserrec.Room=olduserrec.room
  193.    newuserrec.Level=olduserrec.level
  194.    newuserrec.Experience=olduserrec.experience
  195.    newuserrec.Gold=olduserrec.gold
  196.    newuserrec.NumCalls=olduserrec.numcalls
  197.    newuserrec.Fatigue=olduserrec.fatigue
  198.    newuserrec.FatigueMax=olduserrec.fatiguemax
  199.    newuserrec.Vitality=olduserrec.vitality
  200.    newuserrec.VitalityMax=olduserrec.vitalitymax
  201.    newuserrec.Magic=olduserrec.magic
  202.    newuserrec.MagicMax=olduserrec.magicmax
  203.    newuserrec.Poison=olduserrec.poison
  204.    newuserrec.Borrow=olduserrec.borrow
  205.    newuserrec.Invisible=olduserrec.invisible
  206.    newuserrec.Race=olduserrec.race
  207.    newuserrec.Proficiency=olduserrec.proficiency
  208.    newuserrec.Bank=olduserrec.bank
  209.    newuserrec.Sort=olduserrec.sort
  210.    newuserrec.MonstersKilled=olduserrec.monsterskilled
  211.    newuserrec.Brief=olduserrec.brief
  212.    newuserrec.DateOn=olduserrec.dateon
  213.    newuserrec.Beauty=olduserrec.beauty
  214.    newuserrec.Glamour=olduserrec.glamour
  215.    newuserrec.Psionic=olduserrec.psionic
  216.    newuserrec.PsionicMax=olduserrec.psionicmax
  217.    newuserrec.Align1=olduserrec.align1
  218.    newuserrec.Align2=olduserrec.align2
  219.    newuserrec.Flags=olduserrec.flags
  220.    newuserrec.MaxCalls=olduserrec.maxcalls
  221.    newuserrec.FromHour=olduserrec.fromhour
  222.    newuserrec.FromMin=olduserrec.frommin
  223.    newuserrec.ToHour=olduserrec.tohour
  224.    newuserrec.ToMin=olduserrec.tomin
  225.    newuserrec.Echo=olduserrec.echo
  226.    newuserrec.LastMessage=olduserrec.lastmessage
  227.    newuserrec.Linefeeds=olduserrec.linefeeds
  228.    newuserrec.Linelength=olduserrec.linelength
  229.    newuserrec.Pagelength=olduserrec.pagelength
  230.    newuserrec.Wordwrap=olduserrec.wordwrap
  231.    for m=1 to 3
  232.       newuserrec.container(m).Closed=olduserrec.container(m).closed
  233.       newuserrec.container(m).ContainerName=olduserrec.container(m).containername
  234.       newuserrec.container(m).Locked=olduserrec.container(m).locked
  235.       newuserrec.container(m).Keyed=olduserrec.container(m).keyed
  236.       newuserrec.container(m).ShortName=olduserrec.container(m).shortname
  237.       for n=1 to 5
  238.          newuserrec.container(m).Charges(n)=olduserrec.container(m).charges(n)
  239.          newuserrec.container(m).Inventory(n)=olduserrec.container(m).inventory(n)
  240.          newuserrec.container(m).Invisible(n)=olduserrec.container(m).invisible(n)
  241.          newuserrec.container(m).TreasureName(n)=olduserrec.container(m).treasurename(n)
  242.       next
  243.       newuserrec.container(m).Permanent=-1 ' this is the new container attribute!
  244.    next
  245.    put 2,l,newuserrec
  246. next
  247. return
  248.  
  249. error.routine:
  250. color 15,0
  251. print "Critical error!"
  252. end
  253.