omegga 1.2.9 → 1.3.0
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 +20 -1
- package/dist/brickadia/config.js +26 -90
- package/dist/brickadia/config.js.map +1 -1
- package/dist/brickadia/server.js +294 -293
- package/dist/brickadia/server.js.map +1 -1
- package/dist/cli/auth.js +149 -177
- package/dist/cli/auth.js.map +1 -1
- package/dist/cli/config.js +64 -66
- package/dist/cli/config.js.map +1 -1
- package/dist/cli/index.js +14 -14
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/installer.js +37 -43
- package/dist/cli/installer.js.map +1 -1
- package/dist/cli/plugin.js +651 -682
- package/dist/cli/plugin.js.map +1 -1
- package/dist/cli/terminal.js +811 -733
- package/dist/cli/terminal.js.map +1 -1
- package/dist/config/formats/format_js.js +6 -6
- package/dist/config/formats/format_js.js.map +1 -1
- package/dist/config/formats/format_yml.js +7 -10
- package/dist/config/formats/format_yml.js.map +1 -1
- package/dist/config/index.js +46 -68
- package/dist/config/index.js.map +1 -1
- package/dist/config/reader.js +16 -27
- package/dist/config/reader.js.map +1 -1
- package/dist/config/validator.js +23 -25
- package/dist/config/validator.js.map +1 -1
- package/dist/config/writer.js +11 -21
- package/dist/config/writer.js.map +1 -1
- package/dist/index.js +18 -64
- package/dist/index.js.map +1 -1
- package/dist/info/default_commands.json.js +39 -0
- package/dist/info/default_commands.json.js.map +1 -0
- package/dist/logger.js +61 -60
- package/dist/logger.js.map +1 -1
- package/dist/main.js +424 -471
- package/dist/main.js.map +1 -1
- package/dist/omegga/auth.js +101 -148
- package/dist/omegga/auth.js.map +1 -1
- package/dist/omegga/commandInjector.js +261 -251
- package/dist/omegga/commandInjector.js.map +1 -1
- package/dist/omegga/index.js +14 -52
- package/dist/omegga/index.js.map +1 -1
- package/dist/omegga/logWrangler.js +224 -275
- package/dist/omegga/logWrangler.js.map +1 -1
- package/dist/omegga/matchers/auth.js +36 -50
- package/dist/omegga/matchers/auth.js.map +1 -1
- package/dist/omegga/matchers/chat.js +49 -71
- package/dist/omegga/matchers/chat.js.map +1 -1
- package/dist/omegga/matchers/command.js +25 -36
- package/dist/omegga/matchers/command.js.map +1 -1
- package/dist/omegga/matchers/exit.js +15 -18
- package/dist/omegga/matchers/exit.js.map +1 -1
- package/dist/omegga/matchers/index.js +26 -40
- package/dist/omegga/matchers/index.js.map +1 -1
- package/dist/omegga/matchers/init.js +20 -23
- package/dist/omegga/matchers/init.js.map +1 -1
- package/dist/omegga/matchers/interact.js +58 -64
- package/dist/omegga/matchers/interact.js.map +1 -1
- package/dist/omegga/matchers/join.js +74 -95
- package/dist/omegga/matchers/join.js.map +1 -1
- package/dist/omegga/matchers/leave.js +43 -56
- package/dist/omegga/matchers/leave.js.map +1 -1
- package/dist/omegga/matchers/mapChange.js +26 -35
- package/dist/omegga/matchers/mapChange.js.map +1 -1
- package/dist/omegga/matchers/minigameJoin.js +24 -31
- package/dist/omegga/matchers/minigameJoin.js.map +1 -1
- package/dist/omegga/matchers/version.js +42 -49
- package/dist/omegga/matchers/version.js.map +1 -1
- package/dist/omegga/player.js +527 -527
- package/dist/omegga/player.js.map +1 -1
- package/dist/omegga/plugin/interface.js +91 -98
- package/dist/omegga/plugin/interface.js.map +1 -1
- package/dist/omegga/plugin/plugin_jsonrpc_stdio.js +524 -429
- package/dist/omegga/plugin/plugin_jsonrpc_stdio.js.map +1 -1
- package/dist/omegga/plugin/plugin_node_safe/proxyOmegga.js +282 -294
- package/dist/omegga/plugin/plugin_node_safe/proxyOmegga.js.map +1 -1
- package/dist/omegga/plugin/plugin_node_safe.js +365 -393
- package/dist/omegga/plugin/plugin_node_safe.js.map +1 -1
- package/dist/omegga/plugin/plugin_node_unsafe.js +119 -179
- package/dist/omegga/plugin/plugin_node_unsafe.js.map +1 -1
- package/dist/omegga/plugin.js +402 -347
- package/dist/omegga/plugin.js.map +1 -1
- package/dist/omegga/server.js +742 -774
- package/dist/omegga/server.js.map +1 -1
- package/dist/omegga/wrapper.js +64 -91
- package/dist/omegga/wrapper.js.map +1 -1
- package/dist/plugin.js +11 -31
- package/dist/plugin.js.map +1 -1
- package/dist/softconfig.js +121 -100
- package/dist/softconfig.js.map +1 -1
- package/dist/updater/steam.js +97 -112
- package/dist/updater/steam.js.map +1 -1
- package/dist/util/brdb.js +496 -528
- package/dist/util/brdb.js.map +1 -1
- package/dist/util/brick/checkBounds.js +11 -15
- package/dist/util/brick/checkBounds.js.map +1 -1
- package/dist/util/brick/constants.js +723 -174
- package/dist/util/brick/constants.js.map +1 -1
- package/dist/util/brick/displayName.js +204 -211
- package/dist/util/brick/displayName.js.map +1 -1
- package/dist/util/brick/getBounds.js +29 -41
- package/dist/util/brick/getBounds.js.map +1 -1
- package/dist/util/brick/getBrickSize.js +6 -7
- package/dist/util/brick/getBrickSize.js.map +1 -1
- package/dist/util/brick/getScaleAxis.js +24 -30
- package/dist/util/brick/getScaleAxis.js.map +1 -1
- package/dist/util/brick/index.js +8 -29
- package/dist/util/brick/index.js.map +1 -1
- package/dist/util/brick/rotate.js +29 -34
- package/dist/util/brick/rotate.js.map +1 -1
- package/dist/util/brick/setOwnership.js +13 -19
- package/dist/util/brick/setOwnership.js.map +1 -1
- package/dist/util/chat.js +53 -44
- package/dist/util/chat.js.map +1 -1
- package/dist/util/color.js +112 -124
- package/dist/util/color.js.map +1 -1
- package/dist/util/file.js +54 -98
- package/dist/util/file.js.map +1 -1
- package/dist/util/index.js +84 -106
- package/dist/util/index.js.map +1 -1
- package/dist/util/map.js +18 -20
- package/dist/util/map.js.map +1 -1
- package/dist/util/pattern.js +6 -9
- package/dist/util/pattern.js.map +1 -1
- package/dist/util/time.js +31 -34
- package/dist/util/time.js.map +1 -1
- package/dist/util/uuid.js +10 -8
- package/dist/util/uuid.js.map +1 -1
- package/dist/util/wsl.js +19 -25
- package/dist/util/wsl.js.map +1 -1
- package/dist/version.js +7 -9
- package/dist/version.js.map +1 -1
- package/dist/webserver/backend/api.js +784 -874
- package/dist/webserver/backend/api.js.map +1 -1
- package/dist/webserver/backend/calendar.js +14 -17
- package/dist/webserver/backend/calendar.js.map +1 -1
- package/dist/webserver/backend/database.js +563 -613
- package/dist/webserver/backend/database.js.map +1 -1
- package/dist/webserver/backend/index.js +153 -191
- package/dist/webserver/backend/index.js.map +1 -1
- package/dist/webserver/backend/metrics.js +219 -248
- package/dist/webserver/backend/metrics.js.map +1 -1
- package/dist/webserver/backend/util.js +47 -68
- package/dist/webserver/backend/util.js.map +1 -1
- package/dist/worker.js +322 -0
- package/dist/worker.js.map +1 -0
- package/package.json +14 -10
- package/templates/safe-ts/omegga.d.ts +1 -1
- package/vite.backend.config.mts +46 -0
- package/vite.frontend.config.mts +58 -0
- package/vitest.backend.config.mts +7 -0
- package/dist/brickadia/config.d.ts +0 -3
- package/dist/brickadia/presets.d.ts +0 -65
- package/dist/brickadia/presets.js +0 -3
- package/dist/brickadia/presets.js.map +0 -1
- package/dist/brickadia/server.d.ts +0 -36
- package/dist/brickadia/types.d.ts +0 -45
- package/dist/brickadia/types.js +0 -3
- package/dist/brickadia/types.js.map +0 -1
- package/dist/cli/auth.d.ts +0 -26
- package/dist/cli/config.d.ts +0 -10
- package/dist/cli/index.d.ts +0 -30
- package/dist/cli/installer.d.ts +0 -1
- package/dist/cli/plugin.d.ts +0 -22
- package/dist/cli/terminal.d.ts +0 -25
- package/dist/config/authorizer.d.ts +0 -2
- package/dist/config/authorizer.js +0 -38
- package/dist/config/authorizer.js.map +0 -1
- package/dist/config/formats/format_js.d.ts +0 -3
- package/dist/config/formats/format_yml.d.ts +0 -3
- package/dist/config/index.d.ts +0 -18
- package/dist/config/reader.d.ts +0 -3
- package/dist/config/types.d.ts +0 -50
- package/dist/config/types.js +0 -3
- package/dist/config/types.js.map +0 -1
- package/dist/config/validator.d.ts +0 -6
- package/dist/config/writer.d.ts +0 -3
- package/dist/index.d.ts +0 -22
- package/dist/info/default_commands.json +0 -29
- package/dist/logger.d.ts +0 -41
- package/dist/main.d.ts +0 -1
- package/dist/omegga/auth.d.ts +0 -9
- package/dist/omegga/commandInjector.d.ts +0 -35
- package/dist/omegga/index.d.ts +0 -7
- package/dist/omegga/logWrangler.d.ts +0 -32
- package/dist/omegga/matchers/auth.d.ts +0 -10
- package/dist/omegga/matchers/chat.d.ts +0 -10
- package/dist/omegga/matchers/command.d.ts +0 -7
- package/dist/omegga/matchers/exit.d.ts +0 -3
- package/dist/omegga/matchers/index.d.ts +0 -3
- package/dist/omegga/matchers/init.d.ts +0 -3
- package/dist/omegga/matchers/interact.d.ts +0 -4
- package/dist/omegga/matchers/join.d.ts +0 -4
- package/dist/omegga/matchers/leave.d.ts +0 -4
- package/dist/omegga/matchers/mapChange.d.ts +0 -3
- package/dist/omegga/matchers/minigameJoin.d.ts +0 -9
- package/dist/omegga/matchers/types.d.ts +0 -5
- package/dist/omegga/matchers/types.js +0 -3
- package/dist/omegga/matchers/types.js.map +0 -1
- package/dist/omegga/matchers/version.d.ts +0 -3
- package/dist/omegga/player.d.ts +0 -81
- package/dist/omegga/plugin/interface.d.ts +0 -30
- package/dist/omegga/plugin/plugin_jsonrpc_stdio.d.ts +0 -23
- package/dist/omegga/plugin/plugin_node_safe/proxyOmegga.d.ts +0 -145
- package/dist/omegga/plugin/plugin_node_safe/worker.d.ts +0 -1
- package/dist/omegga/plugin/plugin_node_safe/worker.js +0 -367
- package/dist/omegga/plugin/plugin_node_safe/worker.js.map +0 -1
- package/dist/omegga/plugin/plugin_node_safe.d.ts +0 -23
- package/dist/omegga/plugin/plugin_node_unsafe.d.ts +0 -13
- package/dist/omegga/plugin.d.ts +0 -63
- package/dist/omegga/server.d.ts +0 -166
- package/dist/omegga/types.d.ts +0 -49
- package/dist/omegga/types.js +0 -3
- package/dist/omegga/types.js.map +0 -1
- package/dist/omegga/wrapper.d.ts +0 -32
- package/dist/plugin.d.ts +0 -916
- package/dist/softconfig.d.ts +0 -67
- package/dist/tsconfig.tsbuildinfo +0 -1
- package/dist/updater/index.d.ts +0 -1
- package/dist/updater/index.js +0 -10
- package/dist/updater/index.js.map +0 -1
- package/dist/updater/steam.d.ts +0 -52
- package/dist/util/brdb.d.ts +0 -31
- package/dist/util/brick/checkBounds.d.ts +0 -8
- package/dist/util/brick/constants.d.ts +0 -18
- package/dist/util/brick/displayName.d.ts +0 -7
- package/dist/util/brick/getBounds.d.ts +0 -5
- package/dist/util/brick/getBrickSize.d.ts +0 -3
- package/dist/util/brick/getScaleAxis.d.ts +0 -3
- package/dist/util/brick/index.d.ts +0 -14
- package/dist/util/brick/rotate.d.ts +0 -16
- package/dist/util/brick/setOwnership.d.ts +0 -12
- package/dist/util/chat.d.ts +0 -23
- package/dist/util/color.d.ts +0 -13
- package/dist/util/file.d.ts +0 -5
- package/dist/util/index.d.ts +0 -183
- package/dist/util/map.d.ts +0 -6
- package/dist/util/pattern.d.ts +0 -1
- package/dist/util/time.d.ts +0 -39
- package/dist/util/uuid.d.ts +0 -3
- package/dist/util/wsl.d.ts +0 -2
- package/dist/version.d.ts +0 -2
- package/dist/webserver/backend/api.d.ts +0 -115
- package/dist/webserver/backend/calendar.d.ts +0 -5
- package/dist/webserver/backend/database.d.ts +0 -150
- package/dist/webserver/backend/index.d.ts +0 -30
- package/dist/webserver/backend/metrics.d.ts +0 -3
- package/dist/webserver/backend/types.d.ts +0 -114
- package/dist/webserver/backend/types.js +0 -3
- package/dist/webserver/backend/types.js.map +0 -1
- package/dist/webserver/backend/util.d.ts +0 -2
- package/dist/webserver/index.d.ts +0 -2
- package/dist/webserver/index.js +0 -9
- package/dist/webserver/index.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","
|
|
1
|
+
{"version":3,"file":"init.js","sources":["../../../src/omegga/matchers/init.ts"],"sourcesContent":["import Logger from '@/logger';\nimport { MatchGenerator } from './types';\n\nconst init: MatchGenerator<void> = _omegga => {\n return {\n // listen for auth messages\n pattern(_line, logMatch) {\n // line is not generic console log\n if (!logMatch) return;\n\n const { generator, data } = logMatch.groups;\n\n if (!generator.match(/^LogInit$/)) return;\n\n // check if log is the kill server log\n if (data.match(/we are not the first instance of this executable/)) {\n Logger.warn(\n 'W> WARNING'.yellow,\n 'You are running multiple brickadia instances, this better be intentional',\n );\n }\n },\n\n callback() {},\n };\n};\n\nexport default init;\n"],"names":["Logger"],"mappings":";;;AAGA,MAAM,OAA6B,CAAA,YAAW;AAC5C,SAAO;AAAA;AAAA,IAEL,QAAQ,OAAO,UAAU;AAEvB,UAAI,CAAC,SAAU;AAEf,YAAM,EAAE,WAAW,KAAA,IAAS,SAAS;AAErC,UAAI,CAAC,UAAU,MAAM,WAAW,EAAG;AAGnC,UAAI,KAAK,MAAM,kDAAkD,GAAG;AAClEA,eAAAA,QAAO;AAAA,UACL,aAAa;AAAA,UACb;AAAA,QAAA;AAAA,MAEJ;AAAA,IACF;AAAA,IAEA,WAAW;AAAA,IAAC;AAAA,EAAA;AAEhB;;"}
|
|
@@ -1,69 +1,63 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
const logger_1 = __importDefault(require("../../logger"));
|
|
7
|
-
const brick_1 = require("../../util/brick");
|
|
2
|
+
Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
|
|
3
|
+
const logger = require("../../logger.js");
|
|
4
|
+
const displayName = require("../../util/brick/displayName.js");
|
|
8
5
|
const interactRegExp = /^Player "(?<name>[^"]+)" \((?<id>[^,]+), (?<pawn>[^,]+), (?<controller>[^)]+)\) interacted with brick "(?<brick>[^\"]+)" at (?<x>-?\d+) (?<y>-?\d+) (?<z>-?\d+), message: "(?<message>.*)".$/;
|
|
9
6
|
const customEventRegExp = /^event:(?<name>[^:]+)(:(?<args>.*))?$/;
|
|
10
|
-
const interact = omegga => {
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
omegga.emit('interact', interaction);
|
|
65
|
-
},
|
|
66
|
-
};
|
|
7
|
+
const interact = (omegga) => {
|
|
8
|
+
return {
|
|
9
|
+
// listen for auth messages
|
|
10
|
+
pattern(_line, logMatch) {
|
|
11
|
+
if (!logMatch) return;
|
|
12
|
+
const { generator, data } = logMatch.groups;
|
|
13
|
+
if (generator !== "LogBrickadia") return;
|
|
14
|
+
const match = data.match(interactRegExp);
|
|
15
|
+
if (match) {
|
|
16
|
+
let blob = null, error = false, json = false;
|
|
17
|
+
if (match.groups.message?.startsWith("json:")) {
|
|
18
|
+
json = true;
|
|
19
|
+
try {
|
|
20
|
+
blob = JSON.parse(match.groups.message.slice(5));
|
|
21
|
+
} catch (err) {
|
|
22
|
+
logger.default.verbose("Error parsing interact event json", data, err);
|
|
23
|
+
error = true;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
const convertedBrick = displayName.convertDisplayName(match.groups.brick) ?? [];
|
|
27
|
+
return {
|
|
28
|
+
player: {
|
|
29
|
+
id: match.groups.id,
|
|
30
|
+
name: match.groups.name,
|
|
31
|
+
controller: match.groups.controller,
|
|
32
|
+
pawn: match.groups.pawn
|
|
33
|
+
},
|
|
34
|
+
brick_name: match.groups.brick,
|
|
35
|
+
brick_asset: convertedBrick[0],
|
|
36
|
+
brick_size: convertedBrick[1],
|
|
37
|
+
position: [
|
|
38
|
+
Number(match.groups.x),
|
|
39
|
+
Number(match.groups.y),
|
|
40
|
+
Number(match.groups.z)
|
|
41
|
+
],
|
|
42
|
+
message: match.groups.message,
|
|
43
|
+
json,
|
|
44
|
+
error,
|
|
45
|
+
data: blob
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
},
|
|
49
|
+
callback(interaction) {
|
|
50
|
+
const match = interaction.message.match(customEventRegExp);
|
|
51
|
+
if (match) {
|
|
52
|
+
omegga.emit(
|
|
53
|
+
`event:${match.groups.name}`,
|
|
54
|
+
interaction.player,
|
|
55
|
+
...match.groups.args?.replace(/\\,/g, "{ESCAPED_COMMA}").split(",").filter((v) => typeof v !== "undefined").map((v) => v.replace(/\{ESCAPED_COMMA\}/g, ",")) ?? []
|
|
56
|
+
);
|
|
57
|
+
}
|
|
58
|
+
omegga.emit("interact", interaction);
|
|
59
|
+
}
|
|
60
|
+
};
|
|
67
61
|
};
|
|
68
62
|
exports.default = interact;
|
|
69
|
-
//# sourceMappingURL=interact.js.map
|
|
63
|
+
//# sourceMappingURL=interact.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interact.js","
|
|
1
|
+
{"version":3,"file":"interact.js","sources":["../../../src/omegga/matchers/interact.ts"],"sourcesContent":["import { MatchGenerator } from './types';\nimport { BrickInteraction } from '@/plugin';\nimport Logger from '@/logger';\nimport { convertDisplayName } from '@util/brick';\n\nconst interactRegExp =\n /^Player \"(?<name>[^\"]+)\" \\((?<id>[^,]+), (?<pawn>[^,]+), (?<controller>[^)]+)\\) interacted with brick \"(?<brick>[^\\\"]+)\" at (?<x>-?\\d+) (?<y>-?\\d+) (?<z>-?\\d+), message: \"(?<message>.*)\".$/;\n\nconst customEventRegExp = /^event:(?<name>[^:]+)(:(?<args>.*))?$/;\n\nconst interact: MatchGenerator<BrickInteraction> = omegga => {\n return {\n // listen for auth messages\n pattern(_line, logMatch) {\n // line is not generic console log\n if (!logMatch) return;\n\n const { generator, data } = logMatch.groups;\n\n if (generator !== 'LogBrickadia') return;\n\n const match = data.match(interactRegExp);\n\n // check if log is the kill server log\n if (match) {\n let blob: any = null,\n error = false,\n json = false;\n if (match.groups.message?.startsWith('json:')) {\n json = true;\n try {\n blob = JSON.parse(match.groups.message.slice(5));\n } catch (err) {\n Logger.verbose('Error parsing interact event json', data, err);\n error = true;\n }\n }\n\n const convertedBrick = convertDisplayName(match.groups.brick) ?? [];\n\n return {\n player: {\n id: match.groups.id,\n name: match.groups.name,\n controller: match.groups.controller,\n pawn: match.groups.pawn,\n },\n brick_name: match.groups.brick,\n brick_asset: convertedBrick[0],\n brick_size: convertedBrick[1],\n position: [\n Number(match.groups.x),\n Number(match.groups.y),\n Number(match.groups.z),\n ],\n message: match.groups.message,\n json,\n error,\n data: blob,\n };\n }\n },\n\n callback(interaction) {\n const match = interaction.message.match(customEventRegExp);\n if (match) {\n omegga.emit(\n `event:${match.groups.name}`,\n interaction.player,\n ...(match.groups.args\n ?.replace(/\\\\,/g, '{ESCAPED_COMMA}')\n .split(',')\n .filter(v => typeof v !== 'undefined')\n .map(v => v.replace(/\\{ESCAPED_COMMA\\}/g, ',')) ?? []),\n );\n }\n\n omegga.emit('interact', interaction);\n },\n };\n};\n\nexport default interact;\n"],"names":["Logger","convertDisplayName"],"mappings":";;;;AAKA,MAAM,iBACJ;AAEF,MAAM,oBAAoB;AAE1B,MAAM,WAA6C,CAAA,WAAU;AAC3D,SAAO;AAAA;AAAA,IAEL,QAAQ,OAAO,UAAU;AAEvB,UAAI,CAAC,SAAU;AAEf,YAAM,EAAE,WAAW,KAAA,IAAS,SAAS;AAErC,UAAI,cAAc,eAAgB;AAElC,YAAM,QAAQ,KAAK,MAAM,cAAc;AAGvC,UAAI,OAAO;AACT,YAAI,OAAY,MACd,QAAQ,OACR,OAAO;AACT,YAAI,MAAM,OAAO,SAAS,WAAW,OAAO,GAAG;AAC7C,iBAAO;AACP,cAAI;AACF,mBAAO,KAAK,MAAM,MAAM,OAAO,QAAQ,MAAM,CAAC,CAAC;AAAA,UACjD,SAAS,KAAK;AACZA,mBAAAA,QAAO,QAAQ,qCAAqC,MAAM,GAAG;AAC7D,oBAAQ;AAAA,UACV;AAAA,QACF;AAEA,cAAM,iBAAiBC,YAAAA,mBAAmB,MAAM,OAAO,KAAK,KAAK,CAAA;AAEjE,eAAO;AAAA,UACL,QAAQ;AAAA,YACN,IAAI,MAAM,OAAO;AAAA,YACjB,MAAM,MAAM,OAAO;AAAA,YACnB,YAAY,MAAM,OAAO;AAAA,YACzB,MAAM,MAAM,OAAO;AAAA,UAAA;AAAA,UAErB,YAAY,MAAM,OAAO;AAAA,UACzB,aAAa,eAAe,CAAC;AAAA,UAC7B,YAAY,eAAe,CAAC;AAAA,UAC5B,UAAU;AAAA,YACR,OAAO,MAAM,OAAO,CAAC;AAAA,YACrB,OAAO,MAAM,OAAO,CAAC;AAAA,YACrB,OAAO,MAAM,OAAO,CAAC;AAAA,UAAA;AAAA,UAEvB,SAAS,MAAM,OAAO;AAAA,UACtB;AAAA,UACA;AAAA,UACA,MAAM;AAAA,QAAA;AAAA,MAEV;AAAA,IACF;AAAA,IAEA,SAAS,aAAa;AACpB,YAAM,QAAQ,YAAY,QAAQ,MAAM,iBAAiB;AACzD,UAAI,OAAO;AACT,eAAO;AAAA,UACL,SAAS,MAAM,OAAO,IAAI;AAAA,UAC1B,YAAY;AAAA,UACZ,GAAI,MAAM,OAAO,MACb,QAAQ,QAAQ,iBAAiB,EAClC,MAAM,GAAG,EACT,OAAO,OAAK,OAAO,MAAM,WAAW,EACpC,IAAI,CAAA,MAAK,EAAE,QAAQ,sBAAsB,GAAG,CAAC,KAAK,CAAA;AAAA,QAAC;AAAA,MAE1D;AAEA,aAAO,KAAK,YAAY,WAAW;AAAA,IACrC;AAAA,EAAA;AAEJ;;"}
|
|
@@ -1,98 +1,77 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
const
|
|
7
|
-
const
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
//
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
// find the joining player that has a matching state
|
|
76
|
-
const player = joiningPlayers.find(p => p.state === state);
|
|
77
|
-
// no player found
|
|
78
|
-
if (!player)
|
|
79
|
-
return;
|
|
80
|
-
// assign the controller and state, remove the player from the joining players
|
|
81
|
-
player.controller = controller;
|
|
82
|
-
player.state = state;
|
|
83
|
-
joiningPlayers.splice(joiningPlayers.indexOf(player), 1);
|
|
84
|
-
// return the newly joined player
|
|
85
|
-
return new player_1.default(omegga, player.name, player.displayName, player.id, player.controller, player.state);
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
},
|
|
89
|
-
// when there's a match, emit a join event and add the player to the player list
|
|
90
|
-
callback(player) {
|
|
91
|
-
omegga.emit('join', player);
|
|
92
|
-
omegga.players.push(player);
|
|
93
|
-
omegga.emit('plugin:players:raw', omegga.players.map(p => p.raw()));
|
|
94
|
-
},
|
|
95
|
-
};
|
|
2
|
+
Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
|
|
3
|
+
const player = require("../player.js");
|
|
4
|
+
const join = (omegga) => {
|
|
5
|
+
const userJoinInfo = [];
|
|
6
|
+
const joiningPlayers = [];
|
|
7
|
+
const stateRegExp = /BP_PlayerState_C .+?PersistentLevel\.(?<state>BP_PlayerState_C_\d+)\.UserName = (?<name>.+)$/;
|
|
8
|
+
const controllerRegExp = /BP_PlayerState_C .+?PersistentLevel\.(?<state>BP_PlayerState_C_\d+)\.Owner = .*?BP_PlayerController_C'.+?:PersistentLevel.(?<controller>BP_PlayerController_C_\d+)'/;
|
|
9
|
+
return {
|
|
10
|
+
// listen for join events and wait for PlayerController info
|
|
11
|
+
pattern(line, logMatch) {
|
|
12
|
+
if (logMatch) {
|
|
13
|
+
const { generator, counter, data } = logMatch.groups;
|
|
14
|
+
let joinData = userJoinInfo.find((l) => l.counter === counter);
|
|
15
|
+
if (generator === "LogServerList") {
|
|
16
|
+
if (!joinData) {
|
|
17
|
+
joinData = { counter };
|
|
18
|
+
userJoinInfo.push(joinData);
|
|
19
|
+
}
|
|
20
|
+
const match = data.match(
|
|
21
|
+
/^(?<field>UserName|UserId|DisplayName): (?<value>.+)$/
|
|
22
|
+
);
|
|
23
|
+
if (match) {
|
|
24
|
+
joinData[match.groups.field] = match.groups.value;
|
|
25
|
+
}
|
|
26
|
+
} else if (generator == "LogNet") {
|
|
27
|
+
const match = data.match(/^Join succeeded: (.+)$/);
|
|
28
|
+
if (match && joinData.DisplayName === match[1]) {
|
|
29
|
+
userJoinInfo.splice(userJoinInfo.indexOf(joinData), 1);
|
|
30
|
+
joiningPlayers.push({
|
|
31
|
+
displayName: joinData.DisplayName,
|
|
32
|
+
name: joinData.UserName,
|
|
33
|
+
id: joinData.UserId
|
|
34
|
+
});
|
|
35
|
+
omegga.writeln("GetAll BRPlayerState UserName");
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
} else if (joiningPlayers.length) {
|
|
39
|
+
const stateMatch = line.match(stateRegExp);
|
|
40
|
+
const controllerMatch = line.match(controllerRegExp);
|
|
41
|
+
if (stateMatch) {
|
|
42
|
+
const { name, state } = stateMatch.groups;
|
|
43
|
+
const player2 = joiningPlayers.find((p) => p.name === name);
|
|
44
|
+
if (!player2 || omegga.players.some((p) => p.state === state)) return;
|
|
45
|
+
player2.state = state;
|
|
46
|
+
omegga.writeln(`GetAll BRPlayerState Owner Name=${state}`);
|
|
47
|
+
} else if (controllerMatch) {
|
|
48
|
+
const { controller, state } = controllerMatch.groups;
|
|
49
|
+
const player$1 = joiningPlayers.find((p) => p.state === state);
|
|
50
|
+
if (!player$1) return;
|
|
51
|
+
player$1.controller = controller;
|
|
52
|
+
player$1.state = state;
|
|
53
|
+
joiningPlayers.splice(joiningPlayers.indexOf(player$1), 1);
|
|
54
|
+
return new player.default(
|
|
55
|
+
omegga,
|
|
56
|
+
player$1.name,
|
|
57
|
+
player$1.displayName,
|
|
58
|
+
player$1.id,
|
|
59
|
+
player$1.controller,
|
|
60
|
+
player$1.state
|
|
61
|
+
);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
},
|
|
65
|
+
// when there's a match, emit a join event and add the player to the player list
|
|
66
|
+
callback(player2) {
|
|
67
|
+
omegga.emit("join", player2);
|
|
68
|
+
omegga.players.push(player2);
|
|
69
|
+
omegga.emit(
|
|
70
|
+
"plugin:players:raw",
|
|
71
|
+
omegga.players.map((p) => p.raw())
|
|
72
|
+
);
|
|
73
|
+
}
|
|
74
|
+
};
|
|
96
75
|
};
|
|
97
76
|
exports.default = join;
|
|
98
|
-
//# sourceMappingURL=join.js.map
|
|
77
|
+
//# sourceMappingURL=join.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"join.js","
|
|
1
|
+
{"version":3,"file":"join.js","sources":["../../../src/omegga/matchers/join.ts"],"sourcesContent":["import Player from '@omegga/player';\nimport { MatchGenerator } from './types';\n\nconst join: MatchGenerator<Player> = omegga => {\n // username + id and a log counter to keep track of actual join messages\n const userJoinInfo: {\n counter: string;\n UserName?: string;\n UserId?: string;\n DisplayName?: string;\n }[] = [];\n\n // username + id to get player state and controller\n const joiningPlayers: {\n displayName: string;\n name: string;\n id: string;\n state?: string;\n controller?: string;\n }[] = [];\n\n // patterns to match PlayerState and PlayerController objects in GetAll commands\n const stateRegExp =\n /BP_PlayerState_C .+?PersistentLevel\\.(?<state>BP_PlayerState_C_\\d+)\\.UserName = (?<name>.+)$/;\n const controllerRegExp =\n /BP_PlayerState_C .+?PersistentLevel\\.(?<state>BP_PlayerState_C_\\d+)\\.Owner = .*?BP_PlayerController_C'.+?:PersistentLevel.(?<controller>BP_PlayerController_C_\\d+)'/;\n\n return {\n // listen for join events and wait for PlayerController info\n pattern(line, logMatch) {\n if (logMatch) {\n const { generator, counter, data } = logMatch.groups;\n let joinData = userJoinInfo.find(l => l.counter === counter);\n\n // LogServerList includes the new user information\n if (generator === 'LogServerList') {\n // create joindata if it doesn't exist\n if (!joinData) {\n joinData = { counter };\n userJoinInfo.push(joinData);\n }\n\n // match on username or user id\n const match = data.match(\n /^(?<field>UserName|UserId|DisplayName): (?<value>.+)$/,\n );\n\n // put that value in the join data\n if (match) {\n joinData[\n match.groups.field as 'UserName' | 'UserId' | 'DisplayName'\n ] = match.groups.value;\n }\n\n // LogNet lets us know the player successfully joined\n } else if (generator == 'LogNet') {\n // find which player joined\n const match = data.match(/^Join succeeded: (.+)$/);\n\n // make sure this joindata corresponds to this player\n // TODO: [BRICKADIA] display name used here instead of username...\n if (match && joinData.DisplayName === match[1]) {\n // remove that player from our buffer\n userJoinInfo.splice(userJoinInfo.indexOf(joinData), 1);\n\n // found joined player, now we need to find the BRPlayerState\n joiningPlayers.push({\n displayName: joinData.DisplayName,\n name: joinData.UserName,\n id: joinData.UserId,\n });\n\n // get the state of all players so we can determine which is this player\n // TODO: maybe also use the ReplicatedJoinTime, which matches the time for these logs\n omegga.writeln('GetAll BRPlayerState UserName');\n }\n }\n\n // only match state and controllers if we have joining players\n } else if (joiningPlayers.length) {\n const stateMatch = line.match(stateRegExp);\n const controllerMatch = line.match(controllerRegExp);\n\n // this line matches our PlayerName -> PlayerState pattern\n if (stateMatch) {\n const { name, state } = stateMatch.groups;\n\n // find the joining player that has a matching name\n const player = joiningPlayers.find(p => p.name === name);\n\n // check if another player is already using this state or if there's any joining player with this name\n if (!player || omegga.players.some(p => p.state === state)) return;\n\n // this player owns this state, find the controller now\n player.state = state;\n omegga.writeln(`GetAll BRPlayerState Owner Name=${state}`);\n\n // this line matches our PlayerState -> PlayerController pattern\n } else if (controllerMatch) {\n const { controller, state } = controllerMatch.groups;\n\n // find the joining player that has a matching state\n const player = joiningPlayers.find(p => p.state === state);\n\n // no player found\n if (!player) return;\n\n // assign the controller and state, remove the player from the joining players\n player.controller = controller;\n player.state = state;\n joiningPlayers.splice(joiningPlayers.indexOf(player), 1);\n\n // return the newly joined player\n return new Player(\n omegga,\n player.name,\n player.displayName,\n player.id,\n player.controller,\n player.state,\n );\n }\n }\n },\n // when there's a match, emit a join event and add the player to the player list\n callback(player) {\n omegga.emit('join', player);\n omegga.players.push(player);\n omegga.emit(\n 'plugin:players:raw',\n omegga.players.map(p => p.raw()),\n );\n },\n };\n};\n\nexport default join;\n"],"names":["player","Player"],"mappings":";;;AAGA,MAAM,OAA+B,CAAA,WAAU;AAE7C,QAAM,eAKA,CAAA;AAGN,QAAM,iBAMA,CAAA;AAGN,QAAM,cACJ;AACF,QAAM,mBACJ;AAEF,SAAO;AAAA;AAAA,IAEL,QAAQ,MAAM,UAAU;AACtB,UAAI,UAAU;AACZ,cAAM,EAAE,WAAW,SAAS,KAAA,IAAS,SAAS;AAC9C,YAAI,WAAW,aAAa,KAAK,CAAA,MAAK,EAAE,YAAY,OAAO;AAG3D,YAAI,cAAc,iBAAiB;AAEjC,cAAI,CAAC,UAAU;AACb,uBAAW,EAAE,QAAA;AACb,yBAAa,KAAK,QAAQ;AAAA,UAC5B;AAGA,gBAAM,QAAQ,KAAK;AAAA,YACjB;AAAA,UAAA;AAIF,cAAI,OAAO;AACT,qBACE,MAAM,OAAO,KACf,IAAI,MAAM,OAAO;AAAA,UACnB;AAAA,QAGF,WAAW,aAAa,UAAU;AAEhC,gBAAM,QAAQ,KAAK,MAAM,wBAAwB;AAIjD,cAAI,SAAS,SAAS,gBAAgB,MAAM,CAAC,GAAG;AAE9C,yBAAa,OAAO,aAAa,QAAQ,QAAQ,GAAG,CAAC;AAGrD,2BAAe,KAAK;AAAA,cAClB,aAAa,SAAS;AAAA,cACtB,MAAM,SAAS;AAAA,cACf,IAAI,SAAS;AAAA,YAAA,CACd;AAID,mBAAO,QAAQ,+BAA+B;AAAA,UAChD;AAAA,QACF;AAAA,MAGF,WAAW,eAAe,QAAQ;AAChC,cAAM,aAAa,KAAK,MAAM,WAAW;AACzC,cAAM,kBAAkB,KAAK,MAAM,gBAAgB;AAGnD,YAAI,YAAY;AACd,gBAAM,EAAE,MAAM,MAAA,IAAU,WAAW;AAGnC,gBAAMA,UAAS,eAAe,KAAK,CAAA,MAAK,EAAE,SAAS,IAAI;AAGvD,cAAI,CAACA,WAAU,OAAO,QAAQ,KAAK,CAAA,MAAK,EAAE,UAAU,KAAK,EAAG;AAG5D,UAAAA,QAAO,QAAQ;AACf,iBAAO,QAAQ,mCAAmC,KAAK,EAAE;AAAA,QAG3D,WAAW,iBAAiB;AAC1B,gBAAM,EAAE,YAAY,MAAA,IAAU,gBAAgB;AAG9C,gBAAMA,WAAS,eAAe,KAAK,CAAA,MAAK,EAAE,UAAU,KAAK;AAGzD,cAAI,CAACA,SAAQ;AAGbA,mBAAO,aAAa;AACpBA,mBAAO,QAAQ;AACf,yBAAe,OAAO,eAAe,QAAQA,QAAM,GAAG,CAAC;AAGvD,iBAAO,IAAIC,OAAAA;AAAAA,YACT;AAAA,YACAD,SAAO;AAAA,YACPA,SAAO;AAAA,YACPA,SAAO;AAAA,YACPA,SAAO;AAAA,YACPA,SAAO;AAAA,UAAA;AAAA,QAEX;AAAA,MACF;AAAA,IACF;AAAA;AAAA,IAEA,SAASA,SAAQ;AACf,aAAO,KAAK,QAAQA,OAAM;AAC1B,aAAO,QAAQ,KAAKA,OAAM;AAC1B,aAAO;AAAA,QACL;AAAA,QACA,OAAO,QAAQ,IAAI,CAAA,MAAK,EAAE,KAAK;AAAA,MAAA;AAAA,IAEnC;AAAA,EAAA;AAEJ;;"}
|
|
@@ -1,59 +1,46 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
if (!(res instanceof Promise))
|
|
45
|
-
return;
|
|
46
|
-
try {
|
|
47
|
-
const player = await res;
|
|
48
|
-
omegga.players.splice(omegga.players.indexOf(player), 1);
|
|
49
|
-
omegga.emit('leave', player);
|
|
50
|
-
omegga.emit('plugin:players:raw', omegga.players.map(p => p.raw()));
|
|
51
|
-
}
|
|
52
|
-
catch (e) {
|
|
53
|
-
logger_1.default.error('error getting player leave', e);
|
|
54
|
-
}
|
|
55
|
-
},
|
|
56
|
-
};
|
|
2
|
+
Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
|
|
3
|
+
const logger = require("../../logger.js");
|
|
4
|
+
const leave = (omegga) => {
|
|
5
|
+
const ownerRegExp = /Owner: (BP_PlayerController_C_\d+)/;
|
|
6
|
+
return {
|
|
7
|
+
// listen for leave events and wait for PlayerController info
|
|
8
|
+
pattern(_line, logMatch) {
|
|
9
|
+
if (!logMatch) return;
|
|
10
|
+
const { generator, data } = logMatch.groups;
|
|
11
|
+
if (generator !== "LogNet" || !data.startsWith("UChannel::Close:"))
|
|
12
|
+
return;
|
|
13
|
+
const match = data.match(ownerRegExp);
|
|
14
|
+
if (!match) return null;
|
|
15
|
+
const getLeavingPlayer = () => omegga.players.find((p) => p.controller === match[1]);
|
|
16
|
+
let found = getLeavingPlayer();
|
|
17
|
+
return new Promise((resolve, reject) => {
|
|
18
|
+
let tries = 50;
|
|
19
|
+
function attempt() {
|
|
20
|
+
found = getLeavingPlayer();
|
|
21
|
+
if (found) return resolve(found);
|
|
22
|
+
if (tries-- < 0) return reject("ghost player " + match[1]);
|
|
23
|
+
setTimeout(attempt, 50);
|
|
24
|
+
}
|
|
25
|
+
attempt();
|
|
26
|
+
});
|
|
27
|
+
},
|
|
28
|
+
// when there's a match, remove the player from the player list, emit a leave event
|
|
29
|
+
async callback(res) {
|
|
30
|
+
if (!(res instanceof Promise)) return;
|
|
31
|
+
try {
|
|
32
|
+
const player = await res;
|
|
33
|
+
omegga.players.splice(omegga.players.indexOf(player), 1);
|
|
34
|
+
omegga.emit("leave", player);
|
|
35
|
+
omegga.emit(
|
|
36
|
+
"plugin:players:raw",
|
|
37
|
+
omegga.players.map((p) => p.raw())
|
|
38
|
+
);
|
|
39
|
+
} catch (e) {
|
|
40
|
+
logger.default.error("error getting player leave", e);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
};
|
|
57
44
|
};
|
|
58
45
|
exports.default = leave;
|
|
59
|
-
//# sourceMappingURL=leave.js.map
|
|
46
|
+
//# sourceMappingURL=leave.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"leave.js","
|
|
1
|
+
{"version":3,"file":"leave.js","sources":["../../../src/omegga/matchers/leave.ts"],"sourcesContent":["import { MatchGenerator } from './types';\nimport { OmeggaPlayer } from '@/plugin';\nimport Logger from '@/logger';\n\nconst leave: MatchGenerator<Promise<OmeggaPlayer>> = omegga => {\n // pattern to get PlayerController from a leave message\n const ownerRegExp = /Owner: (BP_PlayerController_C_\\d+)/;\n\n return {\n // listen for leave events and wait for PlayerController info\n pattern(_line, logMatch) {\n // line is not generic console log\n if (!logMatch) return;\n\n const { generator, data } = logMatch.groups;\n // check if log is a disconnect log\n if (generator !== 'LogNet' || !data.startsWith('UChannel::Close:'))\n return;\n\n // get the PlayerController from the leave message if there is one (there should be)\n const match = data.match(ownerRegExp);\n if (!match) return null;\n\n // helper func for finding player with this controller\n const getLeavingPlayer = () =>\n omegga.players.find(p => p.controller === match[1]);\n\n let found = getLeavingPlayer();\n\n // attempt to find the player over the course of 2 seconds\n // this is because a player can join before all their data is collected\n return new Promise((resolve, reject) => {\n let tries = 50;\n function attempt() {\n found = getLeavingPlayer();\n\n if (found) return resolve(found);\n if (tries-- < 0) return reject('ghost player ' + match[1]);\n\n setTimeout(attempt, 50);\n }\n attempt();\n });\n },\n // when there's a match, remove the player from the player list, emit a leave event\n async callback(res) {\n if (!(res instanceof Promise)) return;\n\n try {\n const player = await res;\n omegga.players.splice(omegga.players.indexOf(player), 1);\n omegga.emit('leave', player);\n omegga.emit(\n 'plugin:players:raw',\n omegga.players.map(p => p.raw()),\n );\n } catch (e) {\n Logger.error('error getting player leave', e);\n }\n },\n };\n};\n\nexport default leave;\n"],"names":["Logger"],"mappings":";;;AAIA,MAAM,QAA+C,CAAA,WAAU;AAE7D,QAAM,cAAc;AAEpB,SAAO;AAAA;AAAA,IAEL,QAAQ,OAAO,UAAU;AAEvB,UAAI,CAAC,SAAU;AAEf,YAAM,EAAE,WAAW,KAAA,IAAS,SAAS;AAErC,UAAI,cAAc,YAAY,CAAC,KAAK,WAAW,kBAAkB;AAC/D;AAGF,YAAM,QAAQ,KAAK,MAAM,WAAW;AACpC,UAAI,CAAC,MAAO,QAAO;AAGnB,YAAM,mBAAmB,MACvB,OAAO,QAAQ,KAAK,OAAK,EAAE,eAAe,MAAM,CAAC,CAAC;AAEpD,UAAI,QAAQ,iBAAA;AAIZ,aAAO,IAAI,QAAQ,CAAC,SAAS,WAAW;AACtC,YAAI,QAAQ;AACZ,iBAAS,UAAU;AACjB,kBAAQ,iBAAA;AAER,cAAI,MAAO,QAAO,QAAQ,KAAK;AAC/B,cAAI,UAAU,EAAG,QAAO,OAAO,kBAAkB,MAAM,CAAC,CAAC;AAEzD,qBAAW,SAAS,EAAE;AAAA,QACxB;AACA,gBAAA;AAAA,MACF,CAAC;AAAA,IACH;AAAA;AAAA,IAEA,MAAM,SAAS,KAAK;AAClB,UAAI,EAAE,eAAe,SAAU;AAE/B,UAAI;AACF,cAAM,SAAS,MAAM;AACrB,eAAO,QAAQ,OAAO,OAAO,QAAQ,QAAQ,MAAM,GAAG,CAAC;AACvD,eAAO,KAAK,SAAS,MAAM;AAC3B,eAAO;AAAA,UACL;AAAA,UACA,OAAO,QAAQ,IAAI,CAAA,MAAK,EAAE,KAAK;AAAA,QAAA;AAAA,MAEnC,SAAS,GAAG;AACVA,uBAAO,MAAM,8BAA8B,CAAC;AAAA,MAC9C;AAAA,IACF;AAAA,EAAA;AAEJ;;"}
|
|
@@ -1,38 +1,29 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
Object.
|
|
3
|
-
const
|
|
4
|
-
const mapChange = omegga => {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
if (map) {
|
|
28
|
-
// dont emit on startup or when there is no current map
|
|
29
|
-
if (omegga.started && omegga.currentMap)
|
|
30
|
-
omegga.emit('mapchange', { map });
|
|
31
|
-
// set omegga's current map
|
|
32
|
-
omegga.currentMap = map;
|
|
33
|
-
}
|
|
34
|
-
},
|
|
35
|
-
};
|
|
2
|
+
Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
|
|
3
|
+
const map = require("../../util/map.js");
|
|
4
|
+
const mapChange = (omegga) => {
|
|
5
|
+
const mapChangeRegExp = /^Took .+ seconds to LoadMap\((?<map>.+)\)$/;
|
|
6
|
+
return {
|
|
7
|
+
// listen for commands messages
|
|
8
|
+
pattern(_line, logMatch) {
|
|
9
|
+
if (!logMatch) return;
|
|
10
|
+
const { generator, data } = logMatch.groups;
|
|
11
|
+
if (generator !== "LogLoad") return;
|
|
12
|
+
const matchChange = data.match(mapChangeRegExp);
|
|
13
|
+
if (matchChange && matchChange.groups && matchChange.groups.map) {
|
|
14
|
+
return map.brn2n(matchChange.groups.map);
|
|
15
|
+
}
|
|
16
|
+
return null;
|
|
17
|
+
},
|
|
18
|
+
// when there's a match, emit the comand event
|
|
19
|
+
callback(map2) {
|
|
20
|
+
if (map2) {
|
|
21
|
+
if (omegga.started && omegga.currentMap)
|
|
22
|
+
omegga.emit("mapchange", { map: map2 });
|
|
23
|
+
omegga.currentMap = map2;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
};
|
|
36
27
|
};
|
|
37
28
|
exports.default = mapChange;
|
|
38
|
-
//# sourceMappingURL=mapChange.js.map
|
|
29
|
+
//# sourceMappingURL=mapChange.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mapChange.js","
|
|
1
|
+
{"version":3,"file":"mapChange.js","sources":["../../../src/omegga/matchers/mapChange.ts"],"sourcesContent":["import { brn2n } from '@util/map';\nimport { MatchGenerator } from './types';\n\nconst mapChange: MatchGenerator<string> = omegga => {\n // LogLoad: Took 0.396473 seconds to LoadMap(/Game/Maps/Plate/Plate)\n const mapChangeRegExp = /^Took .+ seconds to LoadMap\\((?<map>.+)\\)$/;\n\n return {\n // listen for commands messages\n pattern(_line, logMatch) {\n // line is not generic console log\n if (!logMatch) return;\n\n const { generator, data } = logMatch.groups;\n // check if log is a world log\n if (generator !== 'LogLoad') return;\n\n // match the log to the map change finish pattern\n const matchChange = data.match(mapChangeRegExp);\n if (matchChange && matchChange.groups && matchChange.groups.map) {\n return brn2n(matchChange.groups.map);\n }\n\n return null;\n },\n // when there's a match, emit the comand event\n callback(map) {\n // if the only argument is an empty string, ignore it\n if (map) {\n // dont emit on startup or when there is no current map\n if (omegga.started && omegga.currentMap)\n omegga.emit('mapchange', { map });\n\n // set omegga's current map\n omegga.currentMap = map;\n }\n },\n };\n};\n\nexport default mapChange;\n"],"names":["brn2n","map"],"mappings":";;;AAGA,MAAM,YAAoC,CAAA,WAAU;AAElD,QAAM,kBAAkB;AAExB,SAAO;AAAA;AAAA,IAEL,QAAQ,OAAO,UAAU;AAEvB,UAAI,CAAC,SAAU;AAEf,YAAM,EAAE,WAAW,KAAA,IAAS,SAAS;AAErC,UAAI,cAAc,UAAW;AAG7B,YAAM,cAAc,KAAK,MAAM,eAAe;AAC9C,UAAI,eAAe,YAAY,UAAU,YAAY,OAAO,KAAK;AAC/D,eAAOA,UAAM,YAAY,OAAO,GAAG;AAAA,MACrC;AAEA,aAAO;AAAA,IACT;AAAA;AAAA,IAEA,SAASC,MAAK;AAEZ,UAAIA,MAAK;AAEP,YAAI,OAAO,WAAW,OAAO;AAC3B,iBAAO,KAAK,aAAa,EAAE,KAAAA,KAAA,CAAK;AAGlC,eAAO,aAAaA;AAAA,MACtB;AAAA,IACF;AAAA,EAAA;AAEJ;;"}
|