LeagueToolkit is a library for parsing and editing assets from League of Legends
If you want to talk to the developers or other people in the community, join our discord server:
LeagueToolkit is a library for parsing and editing assets from League of Legends
Home Page: https://leaguetoolkit.github.io/LeagueToolkit/
License: GNU General Public License v3.0
Not sure if the discord still exists, but the invite link provided in Fantome projects is currently invalid.
else if(valueObjectType == typeof(string))
{
valueType = InibinFlags.StringList;
}
//Add typeof(string)
Needed to add baked light's into the maps. So we don't need to use obj files anymore ^^
code should be documented so it's easy to understand what it does
An NVR to OBJ converter is not present yet. This would be a first step towards legacy modding.
Example: Zac.skn
Hi. How to use Fantome.Libraries.League? Can't figure it out, I don't understand this topic, I just need to convert scb to obj.
Currently applications using LeagueToolkit have to include Crauzer/ZstdSharp
again because otherwise the zstd-libs are not copied (which is probably due to the use of link). But this is a bit intuitive (especially since it is not mentioned anywhere).
Could we possibly solve this via our cspoj
? And while we are at it could we possibly copy only the corresponding dll
/dylib
/so
depending on the build OS? All three are not really needed when building for a specific OS.
I think we should use System.Text.Json
for our work with JSON. The migration itself should not be wild. Actually only the following has to be done:
All JSON properties would need to be changed as follows:
(The [JsonInclude]
is required the private
setter otherwise will not be set)
[JsonPropertyName("alignment")]
[JsonInclude]
public uint Alignment { get; private set; }
Then the converters would have to be updated:
public override MetaDumpMapStorageType Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
{
string storage = reader.GetString();
and
public override void Write(Utf8JsonWriter writer, MetaDumpMapStorageType value, JsonSerializerOptions options)
{
throw new NotImplementedException();
}
Then attributes for the two properties Version
and Classes
would have to be added to MetaDump.cs
.
[JsonPropertyName("version")]
public string Version { get; set; }
[JsonPropertyName("classes")]
public Dictionary<string, MetaDumpClass> Classes { get; set; }
And the "Deserialize" function should look like this:
public static MetaDump Deserialize(string dump) => JsonSerializer.Deserialize<MetaDump>(dump);
So far so simple. But unfortunately the WriteMetaClasses
part would have to be adjusted again and that's a bit out of my knowledge, so I didn't make a PR :/
Project missing OBJFace and OBJFile class, I checked the commit record, was found in the
0b942b4
the commit was removed, but the commit message is to modify the project name, after I manually add these two classes, compile successfully, accidentally delete?
Hi,
I want to edit a PropertyBin to change some settings. Unfortunately the setters for e.g. BinTreeBool are set to Private. So I have to remove the property and add it with a changed value. This changes the order unnecessarily.
Is there any particular reason for this? Or am I missing something?
Hi, could you please possibly update the nuget package accordingly? It still points to 2.4.2
Between 2.4.2 and 3.0.2 was roughly 1 1/2 years.
Is there a rough plan on how to proceed with the versions? Or would prerelease-packages be something to think about? So one could make a prerelease e.g. with each PR (that would be possibly frequently) or in certain time intervals). So you could do a prerelease e.g. with every PR (that would possibly be a bit frequent) or in certain time intervals.
I would like to use the change from #188, but I don't know when a new release is coming. Means the only possibility for me would be back to git submodule which is kinda not so cool.
Hi, I'm trying to fix an error in lol2gltf executable, but it's crashing trying to load the animations when using Fantome library.
I'm trying to load this animation but it's crashing with this output. Here are the skl and skn file just in case.
System.ArgumentException: An item with the same key has already been added. Key: 219888547
at System.Collections.Generic.Dictionary`2.TryInsert(TKey key, TValue value, InsertionBehavior behavior)
at Fantome.Libraries.League.IO.AnimationFile.Animation.ReadCompressed(BinaryReader br)
at Fantome.Libraries.League.IO.AnimationFile.Animation..ctor(Stream stream)
at Fantome.Libraries.League.IO.AnimationFile.Animation..ctor(String fileLocation)
Not really a LeagueToolkit
issue but I don`t know where else exactly to put this. (maybe we can use discussions)
I have unpacked the wads with Obsidian and wanted to look at them with Scavenger. But I noticed that many names are not known. So I took the source code and included the newest Meta. Unfortunately this helped me only conditionally. A lot of properties just don't have a name. These values seem to come from the FIELDS_HASHTABLE.txt
(or, hashes.binfields.txt). Unfortunately this file is already 2 months old.
Is there anything I can do?
PS:
Only reference to LeagueToolkit
would be the questions if we could update LeagueToolkit.Meta.Classes
to the v13 patch? :)
Would be great to have a fbx import / export support. Obj files are limited like I can use only 1 UV.
A lot of skins have switched to using version 3 property bins, which cannot be read by LeagueToolkit. While I have no idea how to properly reverse engineer binary files, it seems like the general structure is still the same since the new files can be read just fine if I change the version number back to 2 in a hex editor.
Here's a sample property bin version 3 file Pantheon.wad.client.zip.
Tested on the old beta summoners rift map.
https://drive.google.com/file/d/1fSRnAUVPHMMPJEm3BjMPx9BDfL3Ytou9/view?usp=sharing
Issue: Some uv's for the terrain are fucked up and don't exist. Reason could be the oversized terrain uv which is used to repeat the texures over the map.
Issue: Exporting to wgeo and then to obj makes the models messed up. Only export to wgeo and using Wooxy to export the models work. Solution I do not know now
System.NullReferenceException: "Object reference not set to an instance of an object."
"x" was "zero".
Happens when open the .mapgeo file.
base Akali.skn
A lot of the ancient code in this project can be improved with new C# features and such
What I saw is that any custom model is invisible when loading ingame. But in Obsidian is appears normally. Using the old League.Library works. Appear on all new versions of LeagueToolkit
I wanted to replace Newtonsoft.Json
with System.Text.Json
. But to test the whole thing I need this meta_11.8.370.4668.json
or the one from the current patch. Where can I download it?
Should be 62 bytes name, 1 byte type, 1 byte ignore collision flag
I tried to activate netstandard2.0
as TargetFramework. But this is not so easy. Apart from a few changes in the project, the following packages unfortunately do not support 2.0
XXHash3.NET => No support for 2.0
ZstdSharp => No support for 2.0
Crauzer/ZstdSharp
could possibly be replaced by oleg-st/ZstdSharp
but I didn't look into that. For Crauzer/XXHash3.NET
I don`t know a replacement right now.
I would not release a version of my tool in .NET Framework 4.7.2
. Because this is natively installed on almost all Windows versions and therefore the EXE remains extremely small. netstandard2.0
I will be doing this change due to difficulty of maintaining/doing CI/CD for a .NET monorepo.
It's possible that the project might be split into several packages in the future, but currently it doesn't make much sense except for meta classes.
In the SimpleSkinGltfExtensions.ToGltf
function, it would be favourable to be able to provide raw texture data (in byte[]
form or similar) instead of having it be a SixLabors.ImageSharp.Image
parameter.
This would get rid of the SixLabors.Imagesharp
dependency (it is not used anymore else in this project) and should work without issues, as decoding and reencoding the image is not necessary for gltf; the SharpGLTF.Memory.MemoryImage
constructors takes raw byte[]
data anyways.
This also solves the current issue in the lol2gltf project where material textures are most prominently in the dds format, which ImageSharp doesn't support by default without an additional package that isn't on nuget yet.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.