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 >
Wrap
BASIC Source File
|
2001-07-11
|
8KB
|
253 lines
rem convert program for v4.6 maintenance upgrade.
rem renames .new to .dat and upgrades old bad record lengths
rem and upgrades containers for permanent attribute.
rem $include: 'dndcnvt.inc'
on error goto error.routine
OldContainerRecLen=Len(OldContainerRec)
NewContainerRecLen=Len(NewContainerRec)
OldRoomRecLen=Len(OldRoomRec)
NewRoomRecLen=Len(NewRoomRec)
OldUserRecLen=Len(OldUserRec)
NewUserRecLen=Len(NewUserRec)
color 15,0
print "Dndcnvt for v4.6a:"
' after first run, dndcnvt will delete or rename .new files.
if dir$("*.new")="" then
color 14,0
print "No new data files found."
color 7,0
print "Exiting to system."
end
endif
' display header
color 15,0
print "Converts v4.5a files to v4.6a."
' display info
color 14,0
print "This program does not convert"
print "any versions previous to v4.5a,"
' get user response
color 15,0
print "If you are sure about converting, then press y to continue,"
print "otherwise exit to Dos and delete all .dat files, then restart"
print "this conversion program which will then rename all new .dat files:";
locate ,,1
x$=""
while x$=""
x$=inkey$
wend
if x$="y" then
goto start.conversion
endif
color 7,0
print "Exiting to system:"
end
' start
start.conversion:
' go through all .new files
do
' see if .new file exists
f$=dir$("*.new")
if f$="" then
exit do
endif
' set kill flag
kill.file=-1
' see if corresponding .dat file exists
g$=left$(f$,instr(f$,"."))+"dat"
if dir$(g$)="" then
' rename the .new file to .dat file
kill.file=0
name f$ as g$
else
' check special case for old nonplyrs.dat
if lcase$(g$)="nonplyrs.dat" then
close
open g$ for random as #1 len=1
r!=lof(1)
if r!/186=r!\186 then
close
kill.file=0
kill g$
name f$ as g$
color 13,0
print "Nonplyrs.dat file updated."
endif
endif
' old rooms was 978 bytes per record, new file is 980 bytes.
if lcase$(g$)="rooms.dat" then
close
open g$ for random as #1 len=1
r!=lof(1)
if r!/978=r!\978 then
gosub upgrade.room.file
color 13,0
print "Rooms.dat file upgraded."
endif
endif
' old users was 1106 bytes per record, new file is 1112 bytes.
if lcase$(g$)="users.dat" then
close
open g$ for random as #1 len=1
r!=lof(1)
if r!/1106=r!\1106 then
gosub upgrade.user.file
color 13,0
print "Users.dat file upgraded."
endif
endif
endif
' remove the .new file
if kill.file then
kill f$
endif
loop
color 14,0
print "Data files converted."
color 7,0
print "Exiting to system."
end
upgrade.room.file:
close
if dir$("rooms.bkp")<>"" then
kill "rooms.bkp"
endif
name "rooms.dat" as "rooms.bkp"
open "rooms.bkp" for random as #1 len=oldroomreclen
open "rooms.dat" for random as #2 len=newroomreclen
for l=1 to lof(1)/oldroomreclen
get 1,l,oldroomrec
newroomrec.Action=oldroomrec.action
newroomrec.MonsterClass=oldroomrec.monsterclass
newroomrec.ShortDesc=oldroomrec.shortdesc
for m=1 to 5
newroomrec.LongDesc(m)=oldroomrec.longdesc(m)
next
for m=1 to 12
newroomrec.Direct(m)=oldroomrec.direct(m)
next
for m=1 to 20
newroomrec.Flags(m)=oldroomrec.flags(m)
newroomrec.Object(m)=oldroomrec.object(m)
newroomrec.ObjCharges(m)=oldroomrec.objcharges(m)
newroomrec.Treasure(m)=oldroomrec.treasure(m)
newroomrec.TreCharges(m)=oldroomrec.trecharges(m)
next
newroomrec.container.Closed=oldroomrec.container.closed
newroomrec.container.ContainerName=oldroomrec.container.containername
newroomrec.container.Locked=oldroomrec.container.locked
newroomrec.container.Keyed=oldroomrec.container.keyed
newroomrec.container.ShortName=oldroomrec.container.shortname
for m=1 to 5
newroomrec.container.Charges(m)=oldroomrec.container.charges(m)
newroomrec.container.Inventory(m)=oldroomrec.container.inventory(m)
newroomrec.container.Invisible(m)=oldroomrec.container.invisible(m)
newroomrec.container.TreasureName(m)=oldroomrec.container.treasurename(m)
next
newroomrec.container.Permanent=-1 ' this is the new container attribute!
put 2,l,newroomrec
next
return
upgrade.user.file:
close
if dir$("users.bkp")<>"" then
kill "users.bkp"
endif
name "users.dat" as "users.bkp"
open "users.bkp" for random as #1 len=olduserreclen
open "users.dat" for random as #2 len=newuserreclen
for l=1 to lof(1)/olduserreclen
get 1,l,olduserrec
newuserrec.CodeName=olduserrec.codename
newuserrec.PassWord=olduserrec.password
newuserrec.ClassName=olduserrec.classname
newuserrec.ClassType=olduserrec.classtype
for m=1 to 20
newuserrec.Inv(m)=olduserrec.inv(m)
newuserrec.Charges(m)=olduserrec.charges(m)
newuserrec.Object(m)=olduserrec.object(m)
newuserrec.ObjCharges(m)=olduserrec.objcharges(m)
next
for m=1 to 7
newuserrec.Stats(m)=olduserrec.stats(m)
next
for m=1 to 4
newuserrec.Weapons(m)=olduserrec.weapons(m)
next
newuserrec.Room=olduserrec.room
newuserrec.Level=olduserrec.level
newuserrec.Experience=olduserrec.experience
newuserrec.Gold=olduserrec.gold
newuserrec.NumCalls=olduserrec.numcalls
newuserrec.Fatigue=olduserrec.fatigue
newuserrec.FatigueMax=olduserrec.fatiguemax
newuserrec.Vitality=olduserrec.vitality
newuserrec.VitalityMax=olduserrec.vitalitymax
newuserrec.Magic=olduserrec.magic
newuserrec.MagicMax=olduserrec.magicmax
newuserrec.Poison=olduserrec.poison
newuserrec.Borrow=olduserrec.borrow
newuserrec.Invisible=olduserrec.invisible
newuserrec.Race=olduserrec.race
newuserrec.Proficiency=olduserrec.proficiency
newuserrec.Bank=olduserrec.bank
newuserrec.Sort=olduserrec.sort
newuserrec.MonstersKilled=olduserrec.monsterskilled
newuserrec.Brief=olduserrec.brief
newuserrec.DateOn=olduserrec.dateon
newuserrec.Beauty=olduserrec.beauty
newuserrec.Glamour=olduserrec.glamour
newuserrec.Psionic=olduserrec.psionic
newuserrec.PsionicMax=olduserrec.psionicmax
newuserrec.Align1=olduserrec.align1
newuserrec.Align2=olduserrec.align2
newuserrec.Flags=olduserrec.flags
newuserrec.MaxCalls=olduserrec.maxcalls
newuserrec.FromHour=olduserrec.fromhour
newuserrec.FromMin=olduserrec.frommin
newuserrec.ToHour=olduserrec.tohour
newuserrec.ToMin=olduserrec.tomin
newuserrec.Echo=olduserrec.echo
newuserrec.LastMessage=olduserrec.lastmessage
newuserrec.Linefeeds=olduserrec.linefeeds
newuserrec.Linelength=olduserrec.linelength
newuserrec.Pagelength=olduserrec.pagelength
newuserrec.Wordwrap=olduserrec.wordwrap
for m=1 to 3
newuserrec.container(m).Closed=olduserrec.container(m).closed
newuserrec.container(m).ContainerName=olduserrec.container(m).containername
newuserrec.container(m).Locked=olduserrec.container(m).locked
newuserrec.container(m).Keyed=olduserrec.container(m).keyed
newuserrec.container(m).ShortName=olduserrec.container(m).shortname
for n=1 to 5
newuserrec.container(m).Charges(n)=olduserrec.container(m).charges(n)
newuserrec.container(m).Inventory(n)=olduserrec.container(m).inventory(n)
newuserrec.container(m).Invisible(n)=olduserrec.container(m).invisible(n)
newuserrec.container(m).TreasureName(n)=olduserrec.container(m).treasurename(n)
next
newuserrec.container(m).Permanent=-1 ' this is the new container attribute!
next
put 2,l,newuserrec
next
return
error.routine:
color 15,0
print "Critical error!"
end