grf-file-extractor 1.0.35
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +33 -0
- package/dist/index.js +32 -0
- package/dist/index.mjs +7 -0
- package/index.js +192 -0
- package/lib/Loaders/GameFile.js +368 -0
- package/lib/Loaders/GameFileDecrypt.js +346 -0
- package/lib/Utils/BinaryReader.js +334 -0
- package/lib/Utils/BinaryWriter.js +326 -0
- package/lib/Utils/Inflate.js +382 -0
- package/lib/Utils/Struct.js +76 -0
- package/lib/Vendors/text-encoding.js +2494 -0
- package/lib/cps.js +72 -0
- package/lib/extractor.js +258 -0
- package/lib/grf.js +41 -0
- package/package.json +24 -0
- package/profile.js +17 -0
- package/src/index.ts +3 -0
- package/tsconfig.json +18 -0
- package/tsup.config.ts +10 -0
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Utils/Struct.js
|
|
3
|
+
*
|
|
4
|
+
* Implement C like structure in JS, example:
|
|
5
|
+
*
|
|
6
|
+
* var auth = new Struct(
|
|
7
|
+
* "unsigned char username[24]",
|
|
8
|
+
* "unsigned char password[24]",
|
|
9
|
+
* "bool stay_connect",
|
|
10
|
+
* "float version",
|
|
11
|
+
* "int tick"
|
|
12
|
+
* );
|
|
13
|
+
*
|
|
14
|
+
* fp.readStruct(auth);
|
|
15
|
+
*
|
|
16
|
+
* This file is part of ROBrowser, Ragnarok Online in the Web Browser (http://www.robrowser.com/).
|
|
17
|
+
*
|
|
18
|
+
* @author Vincent Thibault
|
|
19
|
+
*/
|
|
20
|
+
|
|
21
|
+
"use strict";
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* Struct Constructor
|
|
26
|
+
*
|
|
27
|
+
* @param {string[]} C like structure
|
|
28
|
+
*/
|
|
29
|
+
function Struct()
|
|
30
|
+
{
|
|
31
|
+
var args, unsigned;
|
|
32
|
+
var i, count, total = 0, size, len;
|
|
33
|
+
var type, name, func;
|
|
34
|
+
var out = {};
|
|
35
|
+
|
|
36
|
+
len = arguments.length;
|
|
37
|
+
|
|
38
|
+
for (i = 0; i < len; ++i) {
|
|
39
|
+
|
|
40
|
+
args = arguments[i].match(/(unsigned\s)?(bool|char|short|int|long|float|double)\s([a-zA-Z0-9_-]+)(\[(\d+)\])?;?/);
|
|
41
|
+
unsigned = !!args[1];
|
|
42
|
+
type = args[2].toLowerCase();
|
|
43
|
+
name = args[3];
|
|
44
|
+
count = args[5] ? parseInt(args[5], 10) : 1;
|
|
45
|
+
|
|
46
|
+
switch (type) {
|
|
47
|
+
case "bool": size=1; func = "int8"; break;
|
|
48
|
+
case "char": size=1; func = "int8"; break;
|
|
49
|
+
case "short": size=2; func = "int16"; break;
|
|
50
|
+
case "int": size=4; func = "int32"; break;
|
|
51
|
+
case "long": size=4; func = "int32"; break;
|
|
52
|
+
case "float": size=4; func = "float32"; break;
|
|
53
|
+
case "double": size=8; func = "float64"; break;
|
|
54
|
+
default:
|
|
55
|
+
throw new Error("Struct() - Undefined type '" + type + "'.");
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
func = "get" + ( unsigned ? "U" + func : func.charAt(0).toUpperCase() + func.substr(1) );
|
|
59
|
+
total += size * count;
|
|
60
|
+
|
|
61
|
+
out[ name ] = {
|
|
62
|
+
func: func,
|
|
63
|
+
count: count
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
this._list = out;
|
|
69
|
+
this.size = total;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
/**
|
|
74
|
+
* Export
|
|
75
|
+
*/
|
|
76
|
+
module.exports = Struct;
|