Nem's Tools - HLLib
BlitzMax Forums/BlitzMax Programming/Nem's Tools - HLLib
| ||
| HLLib is a library for loading all Half-Life and Half-Life 2 package and file formats. I was interested in it for loading HL2 packages, but it requires some C classes and I stopped. I got up to the point where I could open a .gcf package file. I am putting this up here in case someone else is interested in it. The lib can be downloaded here: http://nemesis.thewavelength.net/index.php?p=35 file$="C:/Program Files/Steam/steamapps/base source
engine 2.gcf"
file=RealPath(file)
Const HL_MODE_INVALID = $00
Const HL_MODE_READ = $01
Const HL_MODE_WRITE = $02
Const HL_MODE_CREATE = $04
Const HL_MODE_VOLATILE = $08
Const HL_MODE_NO_FILEMAPPING = $10
Const HL_MODE_QUICK_FILEMAPPING = $20
Const HL_VERSION=0
Const HL_PACKAGE_NONE=0
Const HL_PACKAGE_BSP=1
Const HL_PACKAGE_GCF=2
Const HL_PACKAGE_PAK=3
Const HL_PACKAGE_VBSP=4
Const HL_PACKAGE_WAD=5
Const HL_PACKAGE_XZP=6
Const HL_PACKAGE_ZIP=7
Const HL_PACKAGE_NCF=8
Const HL_ID_INVALID=$ffffffff
HLIB_HL=loadlibrarya("hllib.dll")
Global hlInitialize()
Global hlShutdown()
Global hlPackageOpenFile:Byte(file$z,uimode:Int)
Global hlPackageGetRoot:Byte Ptr()
Global hlGetInteger:Int(thing:Int)
Global hlGetPackageTypeFromName:Int(file$z)
Global hlCreatePackage:Int(PackageType:Int,uiPackage:Byte Ptr)
Global hlBindPackage:Int(package:Int)
hlInitialize=getprocaddress(HLIB_HL,"hlInitialize")
hlGetInteger=getprocaddress(HLIB_HL,"hlGetInteger")
hlPackageOpenFile=getprocaddress(HLIB_HL,"hlPackageOpenFile")
hlPackageGetRoot=getprocaddress(HLIB_HL,"hlPackageGetRoot")
hlGetPackageTypeFromName=getprocaddress(HLIB_HL,"hlGetPackageTypeFromName")
hlCreatePackage=getprocaddress(HLIB_HL,"hlCreatePackage")
hlBindPackage=getprocaddress(HLIB_HL,"hlBindPackage")
hlShutdown=getprocaddress(HLIB_HL,"hlShutdown")
hlInitialize()
Print "Version: "+hlGetInteger(HL_VERSION)
Print "File: "+file
format=hlGetPackageTypeFromName(file)
Print "Format: "+format
If Not hlCreatePackage(format,Varptr package) RuntimeError "Error creating package."
Print "Package: "+package
hlBindPackage package
If Not hlPackageOpenFile(file,HL_MODE_READ) RuntimeError "Error reading package."
If Not hlPackageGetRoot() Notify "SHIT"
hlShutdown() |