LUNI Research
- This topic has 3 replies, 2 voices, and was last updated 9 years, 2 months ago by .
Viewing 4 posts - 1 through 4 (of 4 total)
Viewing 4 posts - 1 through 4 (of 4 total)
- You must be logged in to reply to this topic.
Home › Forums › General Discussion › LUNI Research
In the last few weeks, i have been developing LUNI, learning how it works, improving it and doing some research.
Because the project is really messy right now, I will not contribute to the public repo right now, but i figured some of the reserach I did and concepts I made could be shared to help others finding their way through the source code.
So for anyone interested, here is
I might add additional research as I go along, I hope this helps some people, if you have additional questions or ideas, I would be glad to discuss them.
NOTE: I am not an “official” LUNI developer, I cannot speak for this project, but I am working with the LUNI source to create a server.
That communication process is very nice and easy to understand, and the session states are also interesting. I actually understand each part of the packet header thanks to the docs by humanoid, but I’m still trying to work with LDF, especially in world_2a.bin. I’ve got the decompressed version thanks to Jon’s script, but I don’t understand how all of the keys and their values work. Might you be able to explain this to me?
If you mean LDF Key/Values in general, Appendix A of the docs explains that quite well.
[L:4] - number of keys
[L:1] - key length in bytes
[L:V] - key, wchar
[L:1] - data type (see below)
[L:according to data type] - data
Is the basic structure of a LDF part.
Now there is a list of data types:
0 : String (variable wstring?)
1 : s32
3 : Float (32bit, signed)
5 : u32
7 : Boolean (8bit, 0 or 1)
8 : s64
9 : s64, Used only for (object?) IDs?
13 : bytes?
for each key/value pair that you want to encode, just write
– the length of your key string *2 (bytelength) in one byte
– the key itself with wchar_t’s / as wstring
– the data type as 1 byte
– the data itself
for the data itself, just write them out with the specified length or for variable length data types, prepend the data with a u32/unsigned long length specifier.
Okay, the data type section was the part that I totally missed. Thanks for explaining it all to me 🙂 hopefully now I can work with world_2a.bin in its decompressed form.
Comments are currently closed.