Git Product home page Git Product logo

tactlib's Introduction

TACTLib TACTLib

License: MIT


Usage:

Creating a ClientHandler

The ClientHandler is the base object that controls the CAS(C).

The path passed to ClientHandler should be the base path of the game install. E.g. where the game executables are. Upon creation, the client handler will load everything required for CASC operation.

string path = @"C:\ow\game\Overwatch";
ClientHandler clientHandler = new ClientHandler(path);

Logging:

Logging is handled through the TACTLib.Logger class. It has events that are triggered by TACTLib during runtime. Basic logging can be enabled by using TACTLib.Logger.RegisterBasic. That method also serves as an example of how to do custom logging. (see Logger.cs)

// enables the default basic logger. should be called *before* creating the client
Logger.RegisterBasic();

Product specific:

(none of this is true yet)

VFS: (Black Ops 4)
ClientHandler client = new ClientHandler(path);
if (client.VFS == null) {
    // invalid install
    return;
}
VFSFileTree vfs = client.VFS;
using (Stream stream = vfs.Open(@"zone\base.xpak")) {
    // do whatever
}
foreach (string fileName in vfs.Files.Where(x => x.StartsWith(@"zone\"))) {
    using(Stream stream = vfs.Open(fileName)) {
        // could do this too
    }
}
Tank: (Overwatch)

TACTLib is used internally in TankLib/DataTool.

ClientHandler client = new ClientHandler(path);
ProductHandler_Tank tankHandler = client.ProductHandler as ProdcuctHandler_Tank;
if (tankHandler == null) {
    // not a valid overwatch install
    return;
}
using (Stream stream = tankHandler.OpenFile(0xE00000000000895)) {  // open any asset you want
    // in this case, parse the material
}
WorldOfWarcraftV6: (World of Warcraft)

Not all features are implemented yet. Anything below is a concept.

ClientHandler client = new ClientHandler(path, new ClientCreateArgs {
  HandlerArgs = new ClientCreateArgs_WorldOfWarcraft {
    ListFile = "https://raw.githubusercontent.com/wowdev/wow-listfile/master/listfile.txt"
  }
});
ProductHandler_WorldOfWarcraftV6 wowHandler = client.ProductHandler as ProductHandler_WorldOfWarcraftV6;
if (wowHandler == null) {
    // not a valid warcraft install
    return;
}
using (Stream stream = wowHandler.OpenFile("world/maps/azuremyst isle (7.3 intro)/azuremyst isle (7.3 intro).wdt")) {  // open any asset you want
    // in this case, parse wdt
}
foreach(string file in wowHandler.GetFiles("world")) {
    // will be empty if listfile is invalid
}
foreach(string dir in wowHandler.GetDirectories("world")) {
    // will be empty if listfile is invalid
}

We can't wait to see the amazing things you will do with it

tactlib's People

Contributors

dependabot[bot] avatar hellpie avatar js41637 avatar pistonfx avatar prophetl33t avatar shalzuth avatar yretenai avatar zingballyhoo avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

tactlib's Issues

Using of the CMF key generation functions in CascLib

Hello,

I'd like to add some support of Overwatch into CascLib.

Because basically each build has its own key+IV generation, I would take the CMF sources from TACTLib, convert them into C++ and then include them into CascLib. It can be automated due to good similarity between C++ and C#.

AFAIK it should be OK with the MIT license used by TACTLib. I just want to ask nicely :-)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.