[JX] Full source code VBNet - Unpack pak, Cần ae phát triển thêm
Follow us on
Follow us on Facebook Follow us on Twitter Linked In Flickr Watch us on YouTube My Space Blogger
 
Kết quả 1 đến 7 của 7
  1. #1
    Thành Viên GameDev24's Avatar
    Ngày tham gia
    Jan 2024
    Bài viết
    9
    Thanks
    3
    Thanked 6 Times in 4 Posts

    Icon7 Full source code VBNet - Unpack pak, Cần ae phát triển thêm

    Như tiêu đề code
    [Only registered and activated users can see links. ]
    Code:
    'https://www.clbgamesvn.com/diendan/showthread.php?t=314825
    Imports System
    Imports System.Collections
    Imports System.IO
    Imports System.IO.Compression
    Imports System.Linq.Expressions
    Imports System.Runtime
    Imports System.Text
    Imports System.Text.RegularExpressions
    Imports UclCompression
    
    Module Program
    
        Public br As BinaryReader
        Public input As String
    
        <Obsolete>
        Sub Main(args As String())
            If args.Count = 0 Then
                Console.WriteLine("Tool UnPack - 2CongLC.vn :: 2024")
            Else
                input = args(0)
            End If
            Dim p As String = Nothing
            If IO.File.Exists(input) Then
    
                br = New BinaryReader(File.OpenRead(input))
                Dim signature As String = New String(br.ReadChars(4)) ' Offset = 0, Length = 4
                Dim count As Int32 = br.ReadInt32 ' Offset = 4, Length = 4
                Dim index As Int32 = br.ReadInt32 ' Offset = 8, Length = 4
                Dim data As Int32 = br.ReadInt32 ' Offset = 12, Length = 4
                Dim crc32 As Int32 = br.ReadInt32 ' Offset = 16, Length = 4
                Dim reserved As Byte() = br.ReadBytes(12) 'Offset = 20, Length = 12
    
                Console.WriteLine("sig : {0}", signature)
                Console.WriteLine("count : {0}", count)
                Console.WriteLine("index : {0}", index)
                Console.WriteLine("data : {0}", data)
                Console.WriteLine("crc32 : {0}", crc32)
    
                br.BaseStream.Seek(index, SeekOrigin.Begin)
                Dim subfiles As New List(Of FileData)()
                For i As Int32 = 0 To count - 1
                    subfiles.Add(New FileData)
                Next
    
                p = Path.GetDirectoryName(input) & "\" & Path.GetFileNameWithoutExtension(input)
                Directory.CreateDirectory(p)
    
                For Each fd As FileData In subfiles
    
                    Console.WriteLine("File ID : {0} - File Offset : {1} - File Size : {2} -  IsCompress : {3}", fd.id, fd.offset, fd.size, fd.isCompressType)
    
                    br.BaseStream.Seek(fd.offset, SeekOrigin.Begin)
                    Dim buffer As Byte() = br.ReadBytes(fd.size)
                    Dim temp As Byte() = Nothing
    
                    ' If fd.iscompressType = 1 Or fd.iscompressType = 32 Then
                    ' Console.WriteLine("UnCompress Size : {0}", fd.compressSize)
                    '  temp = Ucl.NRV2B_Decompress_8(buffer, fd.compressSize)
                    '  Else
                    temp = buffer
                    '  End If
    
    
                    Dim ext As String = GetExtension(buffer)
    
                    Using bw As New BinaryWriter(File.Create(p & "//" & fd.id & ext))
                        bw.Write(buffer)
                    End Using
    
    
                Next
    
                Console.WriteLine("unpack done!!!")
            End If
            Console.ReadLine()
        End Sub
    
        Class FileData
            Public id As Int32 'Length = 4
            Public offset As Int32 'Length = 4
            Public size As Int32 'Length = 4
            Public compressSize As Int32 'Length = 3
            Public iscompressType As Byte 'Length = 1
    
            Public Sub New()
                id = br.ReadInt32
                offset = br.ReadInt32
                size = br.ReadInt32
                Dim len As UInt32 = 0
                len = len Or CUInt(br.ReadByte)
                len = len Or CUInt(br.ReadByte) << 8
                len = len Or CUInt(br.ReadByte) << 16
                compressSize = len
                iscompressType = br.ReadByte
            End Sub
        End Class
    
    
        Public Function Hash(ByVal fileName As String) As UInt32
            Dim id As UInt32 = 0
            Dim index As Int32 = 0
            For Each c As Char In fileName
                If (AscW(c) >= AscW("A")) AndAlso (AscW(c) <= AscW("Z")) Then
                    id= (id + (++index) * (AscW(c) + AscW("a") - AscW("A"))) Mod &H8000000BUI * &HFFFFFFEF
                Else
                    id = (id + (++index) * AscW(c)) Mod &H8000000BUI * &HFFFFFFEF
                End If
            Next
            Return (id Xor &H12345678)
        End Function
    
    End Module
    Đã có thư viện ucl compression, nhưng ko tìm ra được đoạn uncompress size . Mong các cao nhân hoàn thiện giúp .
    Khách viếng thăm hãy cùng GameDev24 xây dựng diễn đàn CLBGAMESVN vững mạnh nhé!

  2. Các thành viên gởi lời cảm ơn đến GameDev24 vì bài viết này !

    trananh88vt (13-06-24)

  3. #2
    ☆ ★ ☆ ★ ☆ ★ ☆ ★ ☆ ★ ☆ ★ ☆
    Ngày tham gia
    Jun 2011
    Đang ở
    ████████
    Bài viết
    1,486
    Thanks
    99
    Thanked 448 Times in 192 Posts

    Ðề: Full source code VBNet - Unpack pak, Cần ae phát triển thêm

    cái đoạn ' If fd.iscompressType = 1 Or fd.iscompressType = 32 Then ' Console.WriteLine("UnCompress Size : {0}", fd.compressSize) ' temp = Ucl.NRV2B_Decompress_8(buffer, fd.compressSize) ' Else temp = buffer ' End Iflà bạn tự thêm ' vào hay chủ source họ thêm vào thế?
    1 x 9 + 2 = 11
    12 x 9 + 3 = 111
    123 x 9 + 4 = 1111
    1234 x 9 + 5 = 11111
    12345 x 9 + 6 = 111111
    123456 x 9 + 7 = 1111111
    1234567 x 9 + 8 = 11111111
    12345678 x 9 + 9 = 111111111
    123456789 x 9 +10= 1111111111

  4. #3
    Thành Viên GameDev24's Avatar
    Ngày tham gia
    Jan 2024
    Bài viết
    9
    Thanks
    3
    Thanked 6 Times in 4 Posts

    Ðề: Full source code VBNet - Unpack pak, Cần ae phát triển thêm

    Trích dẫn Gửi bởi SaoThaiBinh72 [Only registered and activated users can see links. ]
    cái đoạn ' If fd.iscompressType = 1 Or fd.iscompressType = 32 Then ' Console.WriteLine("UnCompress Size : {0}", fd.compressSize) ' temp = Ucl.NRV2B_Decompress_8(buffer, fd.compressSize) ' Else temp = buffer ' End Iflà bạn tự thêm ' vào hay chủ source họ thêm vào thế?
    Mình đọc trên source và code như vậy.
    Cái khó là ko tìm ra unzize cho ucl bên ko giải nén được
    Khách viếng thăm hãy cùng GameDev24 xây dựng diễn đàn CLBGAMESVN vững mạnh nhé!

  5. #4
    ☆ ★ ☆ ★ ☆ ★ ☆ ★ ☆ ★ ☆ ★ ☆
    Ngày tham gia
    Jun 2011
    Đang ở
    ████████
    Bài viết
    1,486
    Thanks
    99
    Thanked 448 Times in 192 Posts

    Ðề: Full source code VBNet - Unpack pak, Cần ae phát triển thêm

    Thử sửa thành đoạn này xem If fd.isCompressType = 1 Or fd.isCompressType = 32 Then Dim uncompressSize As Integer = fd.size Console.WriteLine("UnCompress Size : {0}", uncompressSize) temp = Ucl.NRV2B_Decompress_8(buffer, uncompressSize) Else temp = buffer End If

    --- Chế độ gộp bài viết ---

    Cái thằng clb giờ sao nó ngu vậy không biết, cái khung trả lời mất hết bbcode, viết xuống dòng thì cứ dính vào với nhau. Cải lùi thật.
    1 x 9 + 2 = 11
    12 x 9 + 3 = 111
    123 x 9 + 4 = 1111
    1234 x 9 + 5 = 11111
    12345 x 9 + 6 = 111111
    123456 x 9 + 7 = 1111111
    1234567 x 9 + 8 = 11111111
    12345678 x 9 + 9 = 111111111
    123456789 x 9 +10= 1111111111

  6. #5
    Hóng JX2 Team dragonwall's Avatar
    Ngày tham gia
    May 2006
    Đang ở
    nơi đây hóng Jx2
    Bài viết
    265
    Thanks
    17
    Thanked 113 Times in 50 Posts

    Icon14 Ðề: Full source code VBNet - Unpack pak, Cần ae phát triển thêm

    Khách viếng thăm hãy cùng dragonwall xây dựng diễn đàn CLBGAMESVN vững mạnh nhé!

  7. #6
    Thành Viên
    Ngày tham gia
    Sep 2021
    Bài viết
    17
    Thanks
    2
    Thanked 10 Times in 2 Posts

    Ðề: Full source code VBNet - Unpack pak, Cần ae phát triển thêm

    Unpack source C++
    Code:
    {	
    	if (path.length() < 5)
    	{
    		printf("Unpack file pak");
    		return -1;
    	}
    	if (path.substr(path.length() - 4, 4) != ".pak")
    	{
    		printf("Unpack file pak");
    		return -1;
    	}
    	FILE* _pBinFile = fopen(path.c_str(), "rb");
    	if (!_pBinFile) {
    		return -1;
    	}
    	string _FileListBuff;
    	RWFile::LoadFile("list.txt", _FileListBuff);
    	
    	char currentDir[MAX_PATH];
    	GetCurrentDirectory(MAX_PATH, currentDir);
    	string unpackDir = string(currentDir) + "\\unpack\\";
    
    	::MakeSureDirectoryPathExists(unpackDir.c_str());
    	fseek(_pBinFile, 0, SEEK_END);
    	UINT _FileSize = ftell(_pBinFile);
    	fseek(_pBinFile, 0, SEEK_SET);
    	if (_FileSize < sizeof(XPackFileHeader)) {
    		fclose(_pBinFile);
    		return -1;
    	}
    	XPackFileHeader	Header;
    	if (fread((void*)&Header, sizeof(Header), 1, _pBinFile) != 1) {
    		fclose(_pBinFile);
    		return -1;
    	}
    	if (*(int*)(&Header.cSignature) != XPACKFILE_SIGNATURE_FLAG ||
    		Header.uCount == 0 ||
    		Header.uIndexTableOffset < sizeof(XPackFileHeader) ||
    		Header.uIndexTableOffset >= _FileSize ||
    		Header.uDataOffset < sizeof(XPackFileHeader) ||
    		Header.uDataOffset >= _FileSize)
    	{
    		fclose(_pBinFile);
    		return -1;
    	}
    	vector<XPackIndexInfo> kIndexs(Header.uCount);
    	fseek(_pBinFile, Header.uIndexTableOffset, SEEK_SET);
    	if (ftell(_pBinFile) != Header.uIndexTableOffset) {
    		fclose(_pBinFile);
    		return -1;
    	}
    	if (fread((void*)&kIndexs[0], sizeof(XPackIndexInfo)*Header.uCount, 1, _pBinFile) != 1) {
    		fclose(_pBinFile);
    		return -1;
    	}
    
    	int count = (int)Header.uCount;
    	long lCompressType = TYPE_UCL;
    	unsigned int uSize = 0;
    	unsigned int uDestLength;
    	string _Buff;
    	string _RawBuff;
    	char fileName[MAX_PATH];
    	if (!_FileListBuff.empty())
    	{
    		int lineIdx = 1;
    		string line;
    		char* p = (char*)_FileListBuff.c_str();
    
    }
    Lần sửa cuối bởi nhatminh3110, ngày 24-06-24 lúc 11:06 PM.
    Khách viếng thăm hãy cùng nhatminh3110 xây dựng diễn đàn CLBGAMESVN vững mạnh nhé!

  8. Các thành viên gởi lời cảm ơn đến nhatminh3110 vì bài viết này !

    GameDev24 (25-06-24)

  9. #7
    Thành Viên GameDev24's Avatar
    Ngày tham gia
    Jan 2024
    Bài viết
    9
    Thanks
    3
    Thanked 6 Times in 4 Posts

    Ðề: Full source code VBNet - Unpack pak, Cần ae phát triển thêm

    Trích dẫn Gửi bởi nhatminh3110 [Only registered and activated users can see links. ]
    Unpack source C++
    Code:
    {	
    	if (path.length() < 5)
    	{
    		printf("Unpack file pak");
    		return -1;
    	}
    	if (path.substr(path.length() - 4, 4) != ".pak")
    	{
    		printf("Unpack file pak");
    		return -1;
    	}
    	FILE* _pBinFile = fopen(path.c_str(), "rb");
    	if (!_pBinFile) {
    		return -1;
    	}
    	string _FileListBuff;
    	RWFile::LoadFile("list.txt", _FileListBuff);
    	
    	char currentDir[MAX_PATH];
    	GetCurrentDirectory(MAX_PATH, currentDir);
    	string unpackDir = string(currentDir) + "\\unpack\\";
    
    	::MakeSureDirectoryPathExists(unpackDir.c_str());
    	fseek(_pBinFile, 0, SEEK_END);
    	UINT _FileSize = ftell(_pBinFile);
    	fseek(_pBinFile, 0, SEEK_SET);
    	if (_FileSize < sizeof(XPackFileHeader)) {
    		fclose(_pBinFile);
    		return -1;
    	}
    	XPackFileHeader	Header;
    	if (fread((void*)&Header, sizeof(Header), 1, _pBinFile) != 1) {
    		fclose(_pBinFile);
    		return -1;
    	}
    	if (*(int*)(&Header.cSignature) != XPACKFILE_SIGNATURE_FLAG ||
    		Header.uCount == 0 ||
    		Header.uIndexTableOffset < sizeof(XPackFileHeader) ||
    		Header.uIndexTableOffset >= _FileSize ||
    		Header.uDataOffset < sizeof(XPackFileHeader) ||
    		Header.uDataOffset >= _FileSize)
    	{
    		fclose(_pBinFile);
    		return -1;
    	}
    	vector<XPackIndexInfo> kIndexs(Header.uCount);
    	fseek(_pBinFile, Header.uIndexTableOffset, SEEK_SET);
    	if (ftell(_pBinFile) != Header.uIndexTableOffset) {
    		fclose(_pBinFile);
    		return -1;
    	}
    	if (fread((void*)&kIndexs[0], sizeof(XPackIndexInfo)*Header.uCount, 1, _pBinFile) != 1) {
    		fclose(_pBinFile);
    		return -1;
    	}
    
    	int count = (int)Header.uCount;
    	long lCompressType = TYPE_UCL;
    	unsigned int uSize = 0;
    	unsigned int uDestLength;
    	string _Buff;
    	string _RawBuff;
    	char fileName[MAX_PATH];
    	if (!_FileListBuff.empty())
    	{
    		int lineIdx = 1;
    		string line;
    		char* p = (char*)_FileListBuff.c_str();
    
    }
    Đoạn code vbnet xuất được danh sách file ra rồi. Cái id nó dùng hash để mã hóa tên với đường dẫn tệp tin.
    Đang mắc ở đoạn lấy size để giải nén cho kiểu ucl compress.
    Xem ở code cũ thì giải nén được ucl nó bảo lỗi ko giải nén được.
    Đoạn c++ bạn gửi đầy đủ chứ kia là mấy dòng kiểm tra điều kiện chứ có phải code chính đâu
    Khách viếng thăm hãy cùng GameDev24 xây dựng diễn đàn CLBGAMESVN vững mạnh nhé!

 

 

Các Chủ đề tương tự

  1. Trả lời: 1
    Bài viết cuối: 06-06-24, 12:38 PM
  2. [JX] Share source code VBNet - Unpack file Pak jx1, jx2, kiếm thế, phong thần 3 b
    Bởi GameDev24 trong diễn đàn Võ Lâm Truyền Kỳ (Jx Server)
    Trả lời: 0
    Bài viết cuối: 01-06-24, 04:54 PM
  3. Chia sẻ lại các tool mã hóa giải mã các webgame cũ được code = VBNet
    Bởi MrChuCong trong diễn đàn CHUYÊN ĐỀ WEB GAMES
    Trả lời: 2
    Bài viết cuối: 15-05-20, 11:48 PM
  4. [JX] Ai có phần mềm unpack file pak và phần mềm xem chỉnh sửa file SPR thì cho em xin
    Bởi heodat139 trong diễn đàn Hỏi Đáp/ Yêu Cầu
    Trả lời: 0
    Bài viết cuối: 25-05-15, 08:43 PM
  5. UNPACK dữ liệu spr.pak hay image.pak = thủ công
    Bởi Čħīċķėň trong diễn đàn Guides - Kho Lưu trữ
    Trả lời: 21
    Bài viết cuối: 23-10-10, 09:27 PM

Quyền viết bài

  • Bạn Không thể gửi Chủ đề mới
  • Bạn Không thể Gửi trả lời
  • Bạn Không thể Gửi file đính kèm
  • Bạn Không thể Sửa bài viết của mình
  •  
Múi giờ GMT +7. Bây giờ là 03:46 PM.
vBulletin®, Copyright ©2000-2011, Jelsoft Enterprises Ltd.
CLBGamesVN không chịu trách nhiệm về Luật Bản Quyền của các tài liệu, bài viết v.v...được đăng tải trên diễn đàn này.
Diễn đàn phát triển dưới sự đóng góp của tất cả thành viên. BQT chỉ là những người thành lập ra sân chơi, quản lý và duy trì về mặt kỹ thuật, nội dung khi hợp lệ.