Register for your free account! | Forgot your password?

Go Back   elitepvpers > Popular Games > Silkroad Online > SRO Coding Corner
You last visited: Today at 19:07

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



[Open-Source] SlimPK2 - A Pk2 framework written in c#

Discussion on [Open-Source] SlimPK2 - A Pk2 framework written in c# within the SRO Coding Corner forum part of the Silkroad Online category.

Reply
 
Old   #1
 
elite*gold: 0
Join Date: Mar 2009
Posts: 48
Received Thanks: 75
[Open-Source] SlimPK2 - A Pk2 framework written in c#

Hey guys,
has been long since a new release but here we go:

A complete (read/write elements) PK2 integration for the .NET framework.

First of all, please do not ask stupid questions!
This project is open source and if you have any questions please check the source-code on github (link below).

The whole code is documented and should be easy to understand.

Quick guide


General information

SlimPK2 supports 3 modes to work with a .pk2 file archive:

Index - Will create a special index of files, to get access to path variables (Less efficient but easy to use)
BlockIndex - Will create an index "as-is" without special classes for files/directories.
FreeBrowse - Will not create any index at all. You can now use PK2Archive.GetNavigator() to navigate through the archive. (fastest)

How to
You can initialize a new PK2 archive using the following code:

var PK2 = new PK2Archive("myPath", PK2Config.GetDefault());

Feel free to check out the PK2Config.cs class. This class alows you to provide more parameters such as "key", "mode" and "base key".

Using the navigator

As explained above, the PK2Navigator class (PK2Archive.GetNavigator()) allows you to freely browse the PK2 archive. That means, that only the root block is being loaded at the beginning to grant a default location. You can not access any PK2 index at all! The Navigator class has many functions that allow you to browse through the PK2.

Create new files

Use PK2Entry.Create() to create new items within the PK2.

Delete/rename files

The following example can also be used to delete/rename directories! PK2Archive.GetFile("path").Delete(); PK2Archive.GetDirectory("path").Rename("new name");

Known bugs

I did not test everything. It could be that it's not possible to create items in the root directory at the moment. If you find any other bugs feel free to create a pull request. I don't give you ANY support!

Link to the project:


Anyone who found a bug? Pull-request or did not happen.
torstmn is offline  
Thanks
11 Users
Old 03/25/2016, 15:52   #2
 
elite*gold: 60
Join Date: Jan 2010
Posts: 48
Received Thanks: 253
Hey,

I just checked your code and I think it's a really cool project, great implementation and well-documented.

I am just curious about one thing, is there any reason why you used the singleton-pattern? I personally don't like it. This way it's not possible to open
multiple archives at the "same time" (well actually you can but it will lead to unexpected results). You have to dispose an instance before you create another.
Imagine two different classes which both have an instance to the PK2Archive class (probably even in a multi-threaded Enviromnment), now things get really tricky.

Anyways, thank your for this release

Stratti
Stratti is offline  
Old 03/26/2016, 18:26   #3

 
KingDollar's Avatar
 
elite*gold: 1117
Join Date: Dec 2013
Posts: 858
Received Thanks: 806
nice release
KingDollar is offline  
Reply


Similar Threads Similar Threads
[Open Source]ServerManager (Open Server files is Closed)
04/16/2015 - SRO PServer Guides & Releases - 10 Replies
Hello Since a guy called "nevetS" Afraid of sharing he's source code i decided to write a similar program with better features first of all flame is not allowed any flame comments will be reported this program made in less than 10 minutes (not so special) Features : when you open the program you will see a form similar to this one
NextCo V2 Extreamly basic source framework
06/02/2014 - CO2 PServer Guides & Releases - 21 Replies
NextCo V2 is an attempt to increase my programming skills and pawn the fear of start on a new source from scratch, this is a basic framework with impulse database classes also was using original trinity as reference there is nothing fancy, i've worked so hard to get a better design (ex. socket system and the CPacket class which is child of IPacket and parent of the rest of packets classes that you won't need to write every method all over again at every class and still will use all of...
[Open-Source][C#] EloBuddy, open source League of Legends Bot
05/27/2014 - League of Legends Hacks, Bots, Cheats & Exploits - 8 Replies
-- Snipped --



All times are GMT +1. The time now is 19:08.


Powered by vBulletin®
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2026 elitepvpers All Rights Reserved.