@infernus/core 0.8.7 → 0.9.1

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.
Files changed (106) hide show
  1. package/dist/bundle.d.ts +1553 -1551
  2. package/dist/bundle.js +1 -1
  3. package/dist/bundle.mjs +1 -0
  4. package/package.json +10 -3
  5. package/rollup.config.mjs +5 -2
  6. package/.eslintrc +0 -3
  7. package/src/controllers/command/index.ts +0 -57
  8. package/src/controllers/filterscript/index.ts +0 -69
  9. package/src/controllers/gamemode/index.ts +0 -277
  10. package/src/controllers/gamemode/settings.ts +0 -3
  11. package/src/controllers/gametext/index.ts +0 -61
  12. package/src/controllers/gangzone/baseGangZone.ts +0 -284
  13. package/src/controllers/gangzone/gangZoneBus.ts +0 -8
  14. package/src/controllers/gangzone/gangZoneEvent.ts +0 -91
  15. package/src/controllers/gangzone/index.ts +0 -2
  16. package/src/controllers/i18n/index.ts +0 -81
  17. package/src/controllers/index.ts +0 -12
  18. package/src/controllers/menu/baseMenu.ts +0 -203
  19. package/src/controllers/menu/index.ts +0 -2
  20. package/src/controllers/menu/menuBus.ts +0 -8
  21. package/src/controllers/menu/menuEvent.ts +0 -76
  22. package/src/controllers/netstats/index.ts +0 -43
  23. package/src/controllers/npc/index.ts +0 -2
  24. package/src/controllers/npc/npcEvent.ts +0 -26
  25. package/src/controllers/npc/npcFunc.ts +0 -64
  26. package/src/controllers/player/basePlayer.ts +0 -980
  27. package/src/controllers/player/index.ts +0 -3
  28. package/src/controllers/player/pauseChecker.ts +0 -39
  29. package/src/controllers/player/playerBus.ts +0 -9
  30. package/src/controllers/player/playerEvent.ts +0 -468
  31. package/src/controllers/promise/client/index.ts +0 -31
  32. package/src/controllers/promise/dialog/index.ts +0 -143
  33. package/src/controllers/textdraw/baseTextDraw.ts +0 -416
  34. package/src/controllers/textdraw/index.ts +0 -2
  35. package/src/controllers/textdraw/textdrawBus.ts +0 -8
  36. package/src/controllers/textdraw/textdrawEvent.ts +0 -61
  37. package/src/controllers/vehicle/baseVehicle.ts +0 -503
  38. package/src/controllers/vehicle/index.ts +0 -2
  39. package/src/controllers/vehicle/vehicleBus.ts +0 -8
  40. package/src/controllers/vehicle/vehicleEvent.ts +0 -201
  41. package/src/enums/artwork.ts +0 -5
  42. package/src/enums/clickSources.ts +0 -3
  43. package/src/enums/dialogStyles.ts +0 -8
  44. package/src/enums/editResponseTypes.ts +0 -5
  45. package/src/enums/index.ts +0 -18
  46. package/src/enums/invalid.ts +0 -13
  47. package/src/enums/keys.ts +0 -25
  48. package/src/enums/limits.ts +0 -18
  49. package/src/enums/marker.ts +0 -5
  50. package/src/enums/netstat.ts +0 -11
  51. package/src/enums/npc.ts +0 -11
  52. package/src/enums/object.ts +0 -25
  53. package/src/enums/player.ts +0 -92
  54. package/src/enums/record.ts +0 -5
  55. package/src/enums/specialActions.ts +0 -22
  56. package/src/enums/streamer.ts +0 -10
  57. package/src/enums/textdrawFonts.ts +0 -23
  58. package/src/enums/vehicle.ts +0 -32
  59. package/src/enums/weapon.ts +0 -82
  60. package/src/interfaces/index.ts +0 -233
  61. package/src/logger/index.ts +0 -24
  62. package/src/main.ts +0 -6
  63. package/src/types/index.ts +0 -48
  64. package/src/utils/EventBus.ts +0 -60
  65. package/src/utils/animateUtils.ts +0 -2504
  66. package/src/utils/colorUtils.ts +0 -43
  67. package/src/utils/helperUtils.ts +0 -403
  68. package/src/utils/vehicleUtils.ts +0 -321
  69. package/src/wrapper/native/callbacks/index.ts +0 -395
  70. package/src/wrapper/native/functions/index.ts +0 -3131
  71. package/src/wrapper/streamer/3dtext/3dTextBus.ts +0 -8
  72. package/src/wrapper/streamer/3dtext/3dTextEvent.ts +0 -70
  73. package/src/wrapper/streamer/3dtext/base3DText.ts +0 -184
  74. package/src/wrapper/streamer/3dtext/index.ts +0 -2
  75. package/src/wrapper/streamer/actor/actorBus.ts +0 -8
  76. package/src/wrapper/streamer/actor/actorEvent.ts +0 -95
  77. package/src/wrapper/streamer/actor/baseActor.ts +0 -278
  78. package/src/wrapper/streamer/actor/index.ts +0 -2
  79. package/src/wrapper/streamer/area/areaBus.ts +0 -8
  80. package/src/wrapper/streamer/area/areaEvent.ts +0 -99
  81. package/src/wrapper/streamer/area/baseArea.ts +0 -450
  82. package/src/wrapper/streamer/area/index.ts +0 -2
  83. package/src/wrapper/streamer/checkpoint/baseCheckpoint.ts +0 -136
  84. package/src/wrapper/streamer/checkpoint/checkPointBus.ts +0 -8
  85. package/src/wrapper/streamer/checkpoint/checkPointEvent.ts +0 -100
  86. package/src/wrapper/streamer/checkpoint/index.ts +0 -2
  87. package/src/wrapper/streamer/common/index.ts +0 -318
  88. package/src/wrapper/streamer/index.ts +0 -9
  89. package/src/wrapper/streamer/mapIcon/baseMapIcon.ts +0 -128
  90. package/src/wrapper/streamer/mapIcon/index.ts +0 -2
  91. package/src/wrapper/streamer/mapIcon/mapIconBus.ts +0 -8
  92. package/src/wrapper/streamer/mapIcon/mapIconEvent.ts +0 -67
  93. package/src/wrapper/streamer/object/baseObject.ts +0 -415
  94. package/src/wrapper/streamer/object/index.ts +0 -2
  95. package/src/wrapper/streamer/object/objectBus.ts +0 -8
  96. package/src/wrapper/streamer/object/objectEvent.ts +0 -177
  97. package/src/wrapper/streamer/pickup/basePickup.ts +0 -114
  98. package/src/wrapper/streamer/pickup/index.ts +0 -2
  99. package/src/wrapper/streamer/pickup/pickupBus.ts +0 -8
  100. package/src/wrapper/streamer/pickup/pickupEvent.ts +0 -84
  101. package/src/wrapper/streamer/raceCP/baseRaceCP.ts +0 -151
  102. package/src/wrapper/streamer/raceCP/index.ts +0 -2
  103. package/src/wrapper/streamer/raceCP/raceCPBus.ts +0 -8
  104. package/src/wrapper/streamer/raceCP/raceCPEvent.ts +0 -100
  105. package/tsconfig.json +0 -16
  106. /package/{LICENSE → LICENSE.md} +0 -0
@@ -1,91 +0,0 @@
1
- import type { ICommonGangZoneKey } from "@/interfaces";
2
- import type { TCommonCallback } from "@/types";
3
- import { promisifyCallback } from "@/utils/helperUtils";
4
- import { OnGameModeExit } from "@/wrapper/native/callbacks";
5
- import {
6
- OnPlayerEnterGangZone,
7
- OnPlayerEnterPlayerGangZone,
8
- OnPlayerLeaveGangZone,
9
- OnPlayerLeavePlayerGangZone,
10
- } from "@infernus/wrapper";
11
- import type { Player } from "../player";
12
- import type { GangZone } from "./baseGangZone";
13
- import { gangZoneBus, gangZoneHooks } from "./gangZoneBus";
14
-
15
- export class GangZoneEvent<P extends Player, G extends GangZone<P>> {
16
- readonly gangZones = new Map<ICommonGangZoneKey, G>();
17
- private readonly players;
18
- constructor(playersMap: Map<number, P>, destroyOnExit = true) {
19
- this.players = playersMap;
20
- gangZoneBus.on(
21
- gangZoneHooks.created,
22
- (res: { key: ICommonGangZoneKey; value: G }) => {
23
- this.gangZones.set(res.key, res.value);
24
- }
25
- );
26
- gangZoneBus.on(gangZoneHooks.destroyed, (res: ICommonGangZoneKey) => {
27
- if (this.gangZones.has(res)) this.gangZones.delete(res);
28
- });
29
- if (destroyOnExit) {
30
- OnGameModeExit(() => {
31
- this.gangZones.forEach((g) => g.destroy());
32
- this.gangZones.clear();
33
- });
34
- }
35
-
36
- OnPlayerEnterGangZone((playerId, gangZoneId): number => {
37
- const p = this.players.get(playerId);
38
- if (!p) return 0;
39
- const g = this.gangZones.get({ id: gangZoneId, global: true });
40
- if (!g) return 0;
41
- const pFn = promisifyCallback(
42
- this,
43
- "onPlayerEnter",
44
- "OnPlayerEnterGangZone"
45
- );
46
- return pFn(p, g);
47
- });
48
-
49
- OnPlayerEnterPlayerGangZone((playerId, gangZoneId): number => {
50
- const p = this.players.get(playerId);
51
- if (!p) return 0;
52
- const g = this.gangZones.get({ id: gangZoneId, global: false });
53
- if (!g) return 0;
54
- const pFn = promisifyCallback(
55
- this,
56
- "onPlayerEnter",
57
- "OnPlayerEnterPlayerGangZone"
58
- );
59
- return pFn(p, g);
60
- });
61
-
62
- OnPlayerLeaveGangZone((playerId, gangZoneId): number => {
63
- const p = this.players.get(playerId);
64
- if (!p) return 0;
65
- const g = this.gangZones.get({ id: gangZoneId, global: true });
66
- if (!g) return 0;
67
- const pFn = promisifyCallback(
68
- this,
69
- "onPlayerLeave",
70
- "OnPlayerLeaveGangZone"
71
- );
72
- return pFn(p, g);
73
- });
74
-
75
- OnPlayerLeavePlayerGangZone((playerId, gangZoneId): number => {
76
- const p = this.players.get(playerId);
77
- if (!p) return 0;
78
- const g = this.gangZones.get({ id: gangZoneId, global: false });
79
- if (!g) return 0;
80
- const pFn = promisifyCallback(
81
- this,
82
- "onPlayerLeave",
83
- "OnPlayerLeavePlayerGangZone"
84
- );
85
- return pFn(p, g);
86
- });
87
- }
88
-
89
- onPlayerEnter?(player: P, gangZone: G): TCommonCallback;
90
- onPlayerLeave?(player: P, gangZone: G): TCommonCallback;
91
- }
@@ -1,2 +0,0 @@
1
- export * from "./baseGangZone";
2
- export * from "./gangZoneEvent";
@@ -1,81 +0,0 @@
1
- import type { TLocales } from "@/types";
2
- import { encode, decode, encodingExists } from "iconv-lite";
3
- import { logger } from "@/logger";
4
- import { get, mapKeys, merge, omit, snakeCase } from "lodash";
5
-
6
- export class I18n {
7
- constructor(
8
- private defaultLocale: keyof TLocales,
9
- private locales: TLocales
10
- ) {
11
- this.defaultLocale = snakeCase(defaultLocale);
12
- this.locales = I18n.snakeLocaleKeys(locales);
13
- }
14
-
15
- addLocales = (locales: TLocales): void => {
16
- merge(this.locales, I18n.snakeLocaleKeys(locales));
17
- };
18
-
19
- removeLocales = (...props: any[]): void => {
20
- this.locales = omit(this.locales, props);
21
- };
22
-
23
- $t = (
24
- key: string,
25
- replaceable?: any[] | undefined | null,
26
- locale: keyof TLocales = this.defaultLocale
27
- ): string => {
28
- const incomingLocale = this.locales[snakeCase(locale)];
29
- const defaultLocale = get(this.locales[this.defaultLocale], key);
30
- // "server.welcome" => zh_cn["server"]["welcome"];
31
- const dotVal = get(incomingLocale, key, defaultLocale);
32
- if (dotVal === undefined) {
33
- logger.warn(`[i18n]: cannot find ${locale}["${key}"]`);
34
- return "undefined";
35
- }
36
- if (typeof dotVal !== "string") return JSON.stringify(dotVal);
37
- let strDotVal = dotVal;
38
- if (replaceable && replaceable.length) {
39
- // %s Used to declare as a slot and for future replacement
40
- const placeholder = /%s/i;
41
- for (let i = 0; i < replaceable.length; i++) {
42
- const matches = strDotVal.match(placeholder);
43
- if (matches === null) break;
44
- strDotVal = strDotVal.replace(placeholder, replaceable[i]);
45
- }
46
- }
47
- return strDotVal;
48
- };
49
-
50
- // determine if the incoming character encoding type is valid
51
- static isValidate(charset: string): void {
52
- if (!encodingExists(charset)) {
53
- logger.fatal(`[i18n]: unknown charset ${charset}`);
54
- process.exit(1);
55
- }
56
- }
57
-
58
- // convert utf8 strings to different encoded byte stream arrays
59
- // used to solve the internationalization language display display messy problem
60
- // https://github.com/AmyrAhmady/samp-node/issues/2
61
- static encodeToBuf(content: string, charset: string): number[] {
62
- I18n.isValidate(charset);
63
- return [...encode(content, charset), 0];
64
- }
65
-
66
- // convert byte stream arrays of different encodings to utf8 strings
67
- static decodeFromBuf(buf: Buffer | number[], charset: string): string {
68
- I18n.isValidate(charset);
69
- const buffer = buf instanceof Buffer ? buf : Buffer.from(buf);
70
- return decode(buffer, charset);
71
- }
72
-
73
- // Truncate the string to the EOS tag to get the actual valid data
74
- static getValidStr(byteArr: number[]) {
75
- return byteArr.slice(0, byteArr.indexOf(0));
76
- }
77
-
78
- static snakeLocaleKeys(locales: TLocales) {
79
- return mapKeys(locales, (_, key) => snakeCase(key));
80
- }
81
- }
@@ -1,12 +0,0 @@
1
- export * from "./i18n";
2
- export * from "./promise/dialog";
3
- export * from "./npc";
4
- export * from "./player";
5
- export * from "./vehicle";
6
- export * from "./gamemode";
7
- export * from "./netstats";
8
- export * from "./gametext";
9
- export * from "./menu";
10
- export * from "./gangzone";
11
- export * from "../wrapper/streamer";
12
- export * from "./textdraw";
@@ -1,203 +0,0 @@
1
- import { LimitsEnum } from "@/enums";
2
- import { logger } from "@/logger";
3
- import * as fns from "@/wrapper/native/functions";
4
- import {
5
- IsMenuDisabled,
6
- IsMenuRowDisabled,
7
- GetMenuItems,
8
- GetMenuPos,
9
- GetMenuColumnWidth,
10
- GetMenuColumnHeader,
11
- GetMenuItem,
12
- } from "@infernus/wrapper";
13
-
14
- import type { Player } from "../player";
15
- import { menuBus, menuHooks } from "./menuBus";
16
-
17
- export class Menu {
18
- private static menuCount = 0;
19
- private _id = -1;
20
- private _itemCount = 0;
21
- get itemCount() {
22
- return this._itemCount;
23
- }
24
- get id() {
25
- return this._id;
26
- }
27
- private _title: string;
28
- get title(): string {
29
- return this._title;
30
- }
31
- set title(value: string) {
32
- this._title = value;
33
- }
34
- private _columns = 1;
35
- get columns(): number {
36
- return this._columns;
37
- }
38
- set columns(value: number) {
39
- if (value !== 1 && value !== 2) {
40
- logger.error(
41
- "[Menu]: The menu column number interval is between 1 and 2"
42
- );
43
- return;
44
- }
45
- this._columns = value;
46
- }
47
- private _x: number;
48
- get x(): number {
49
- return this._x;
50
- }
51
- set x(value: number) {
52
- this._x = value;
53
- }
54
- private _y: number;
55
- get y(): number {
56
- return this._y;
57
- }
58
- set y(value: number) {
59
- this._y = value;
60
- }
61
- private _col1width: number;
62
- get col1width(): number {
63
- return this._col1width;
64
- }
65
- set col1width(value: number) {
66
- this._col1width = value;
67
- }
68
- private _col2width: number;
69
- get col2width(): number {
70
- return this._col2width;
71
- }
72
- set col2width(value: number) {
73
- this._col2width = value;
74
- }
75
-
76
- constructor(
77
- title: string,
78
- columns: number,
79
- x: number,
80
- y: number,
81
- col1width: number,
82
- col2width: number
83
- ) {
84
- this._title = title;
85
- this.columns = columns;
86
- this._x = x;
87
- this._y = y;
88
- this._col1width = col1width;
89
- this._col2width = col2width;
90
- }
91
- create(): void | this {
92
- if (this._id !== -1) return logger.error("[Menu]: Cannot be created twice");
93
- if (Menu.menuCount === LimitsEnum.MAX_MENUS) {
94
- return logger.error(
95
- "[Menu]: The maximum number of menus allowed to be created has been reached 128"
96
- );
97
- }
98
- this._id = fns.CreateMenu(
99
- this.title,
100
- this.columns,
101
- this.x,
102
- this.y,
103
- this.col1width,
104
- this.col2width
105
- );
106
- menuBus.emit(menuHooks.created, this);
107
- Menu.menuCount++;
108
- return this;
109
- }
110
- destroy(): void | this {
111
- if (this._id === -1)
112
- return logger.error("[Menu]: Cannot destroy before create");
113
- fns.DestroyMenu(this.id);
114
- menuBus.emit(menuHooks.destroyed, this);
115
- return this;
116
- }
117
- addItem(column: number, title: string): void | this {
118
- if (this._id === -1)
119
- return logger.error("[Menu]: Cannot addItem before create");
120
- if (this._itemCount === LimitsEnum.MAX_MENU_ROW)
121
- return logger.error(
122
- "[Menu]: The maximum number of items allowed to be added has been reached 12"
123
- );
124
- if (column !== 0 && column !== 1)
125
- return logger.error("[Menu]: Wrong number of columns");
126
- fns.AddMenuItem(this.id, column, title);
127
- this._itemCount++;
128
- return this;
129
- }
130
- setColumnHeader(column: number, header: string): void | this {
131
- if (this._id === -1)
132
- return logger.error("[Menu]: Cannot setColumnHeader before create");
133
- if (column !== 0 && column !== 1)
134
- return logger.error("[Menu]: Wrong number of columns");
135
- fns.SetMenuColumnHeader(this.id, column, header);
136
- return this;
137
- }
138
- disable(): void | this {
139
- if (this._id === -1)
140
- return logger.error("[Menu]: Cannot disable menu before create");
141
- fns.DisableMenu(this.id);
142
- return this;
143
- }
144
- disableRow(row: number) {
145
- if (this._id === -1)
146
- return logger.error("[Menu]: Cannot disable row before create");
147
- if (row < 0 || row > this.itemCount - 1)
148
- return logger.error("[Menu]: Wrong number of rows");
149
- fns.DisableMenuRow(this.id, row);
150
- }
151
- isValid(): boolean {
152
- return fns.IsValidMenu(this.id);
153
- }
154
- showForPlayer<P extends Player>(player: P): void | number {
155
- if (this._id === -1)
156
- return logger.error("[Menu]: Cannot show menu before create");
157
- return fns.ShowMenuForPlayer(this.id, player.id);
158
- }
159
- hideForPlayer<P extends Player>(player: P): void | number {
160
- if (this._id === -1)
161
- return logger.error("[Menu]: Cannot hide menu before create");
162
- return fns.HideMenuForPlayer(this.id, player.id);
163
- }
164
- static getMenu<M extends Menu, P extends Player>(
165
- player: P,
166
- menus: Array<M>
167
- ): M | undefined {
168
- return menus.find((m) => m.id === fns.GetPlayerMenu(player.id));
169
- }
170
- isDisabled(): boolean {
171
- if (this._id === -1) return false;
172
- return IsMenuDisabled(this.id);
173
- }
174
- isRowDisabled(row: number): boolean {
175
- if (this._id === -1) return false;
176
- if (row < 0 || row > this._itemCount) return false;
177
- return IsMenuRowDisabled(this.id, row);
178
- }
179
- getItems(column: number): number {
180
- if (this._id === -1) return 0;
181
- return GetMenuItems(this.id, column);
182
- }
183
- getPos() {
184
- if (this._id === -1) return { fX: this.x, fY: this.y };
185
- return GetMenuPos(this.id);
186
- }
187
- getColumnWidth() {
188
- if (this.id === -1)
189
- return { fColumn1: this.col1width, fColumn2: this.col2width };
190
- return GetMenuColumnWidth(this.id);
191
- }
192
- getColumnHeader(column: number): void | string {
193
- if (this._id === -1)
194
- return logger.error("[Menu]: Cannot get column header before create");
195
- return GetMenuColumnHeader(this.id, column);
196
- }
197
- getItem(column: number, item: number): void | string {
198
- if (this._id === -1)
199
- return logger.error("[Menu]: Cannot get item before create");
200
- if (item < 0 || item > this.getItems(column) - 1) return undefined;
201
- return GetMenuItem(this.id, column, item);
202
- }
203
- }
@@ -1,2 +0,0 @@
1
- export * from "./baseMenu";
2
- export * from "./menuEvent";
@@ -1,8 +0,0 @@
1
- import { EventBus } from "@/utils/eventBus";
2
-
3
- export enum menuHooks {
4
- created = "OnMenuCreate",
5
- destroyed = "OnMenuDestroy",
6
- }
7
-
8
- export const menuBus = new EventBus();
@@ -1,76 +0,0 @@
1
- import { InvalidEnum } from "@/enums";
2
- import type { TCommonCallback } from "@/types";
3
- import { promisifyCallback } from "@/utils/helperUtils";
4
- import {
5
- OnGameModeExit,
6
- OnPlayerExitedMenu,
7
- OnPlayerSelectedMenuRow,
8
- } from "@/wrapper/native/callbacks";
9
- import { GetPlayerMenu } from "@/wrapper/native/functions";
10
- import type { Player } from "../player";
11
- import type { Menu } from "./baseMenu";
12
- import { menuBus, menuHooks } from "./menuBus";
13
-
14
- export class MenuEvent<P extends Player, M extends Menu> {
15
- private readonly menus = new Map<number, M>();
16
- private readonly players;
17
-
18
- constructor(playersMap: Map<number, P>, destroyOnExit = true) {
19
- this.players = playersMap;
20
- menuBus.on(menuHooks.created, (menu: M) => {
21
- this.menus.set(menu.id, menu);
22
- });
23
- menuBus.on(menuHooks.destroyed, (menu: M) => {
24
- this.menus.delete(menu.id);
25
- });
26
- if (destroyOnExit) {
27
- OnGameModeExit(() => {
28
- this.menus.forEach((m) => m.destroy());
29
- this.menus.clear();
30
- });
31
- }
32
- OnPlayerExitedMenu((playerid: number): number => {
33
- const menu = this.findMenuById(GetPlayerMenu(playerid));
34
- if (!menu) return 0;
35
- const player = this.findPlayerById(playerid);
36
- if (!player) return 0;
37
- const pFn = promisifyCallback(
38
- this,
39
- "onPlayerExited",
40
- "OnPlayerExitedMenu"
41
- );
42
- return pFn(player, menu);
43
- });
44
- OnPlayerSelectedMenuRow((playerid: number, row: number): number => {
45
- const menu = this.findMenuById(GetPlayerMenu(playerid));
46
- if (!menu) return 0;
47
- const player = this.findPlayerById(playerid);
48
- if (!player) return 0;
49
- const pFn = promisifyCallback(
50
- this,
51
- "onPlayerSelectedRow",
52
- "OnPlayerSelectedMenuRow"
53
- );
54
- return pFn(player, menu, row);
55
- });
56
- }
57
- onPlayerExited?(player: P, menu: M): TCommonCallback;
58
- onPlayerSelectedRow?(player: P, menu: M, row: number): TCommonCallback;
59
-
60
- private findPlayerById(playerid: number) {
61
- return this.players.get(playerid);
62
- }
63
-
64
- findMenuById(menuId: number) {
65
- if (menuId === InvalidEnum.MENU) return undefined;
66
- return this.menus.get(menuId);
67
- }
68
-
69
- getMenusArr(): Array<M> {
70
- return [...this.menus.values()];
71
- }
72
-
73
- getMenusMap(): Map<number, M> {
74
- return this.menus;
75
- }
76
- }
@@ -1,43 +0,0 @@
1
- import type { ConnectionStatusEnum } from "@/enums";
2
- import * as fns from "@/wrapper/native/functions";
3
- import type { Player } from "../player";
4
-
5
- export class NetStats {
6
- // eslint-disable-next-line @typescript-eslint/no-empty-function
7
- private constructor() {}
8
- static getNetworkStats(): string {
9
- return fns.GetNetworkStats();
10
- }
11
- static getPlayerNetworkStats<P extends Player>(player: P): string {
12
- return fns.GetPlayerNetworkStats(player.id);
13
- }
14
- static getBytesReceived<P extends Player>(player: P): number {
15
- return fns.NetStats_BytesReceived(player.id);
16
- }
17
- static getBytesSent<P extends Player>(player: P): number {
18
- return fns.NetStats_BytesSent(player.id);
19
- }
20
- static getConnectionStatus<P extends Player>(
21
- player: P
22
- ): ConnectionStatusEnum {
23
- return fns.NetStats_ConnectionStatus(player.id);
24
- }
25
- static getConnectedTime<P extends Player>(player: P): number {
26
- return fns.NetStats_GetConnectedTime(player.id);
27
- }
28
- static getIpPort<P extends Player>(player: P): string {
29
- return fns.NetStats_GetIpPort(player.id);
30
- }
31
- static getMessagesReceived<P extends Player>(player: P): number {
32
- return fns.NetStats_MessagesReceived(player.id);
33
- }
34
- static getMessagesRecvPerSecond<P extends Player>(player: P): number {
35
- return fns.NetStats_MessagesRecvPerSecond(player.id);
36
- }
37
- static getMessagesSent<P extends Player>(player: P): number {
38
- return fns.NetStats_MessagesSent(player.id);
39
- }
40
- static getPacketLossPercent<P extends Player>(player: P): number {
41
- return fns.NetStats_PacketLossPercent(player.id);
42
- }
43
- }
@@ -1,2 +0,0 @@
1
- export * from "./npcEvent";
2
- export * from "./npcFunc";
@@ -1,26 +0,0 @@
1
- import type { TCommonCallback } from "@/types";
2
- import { OnClientMessage, promisifyCallback } from "@/utils/helperUtils";
3
- import {
4
- OnNpcConnect,
5
- OnNpcDisconnect,
6
- OnNPCModeExit,
7
- OnNPCModeInit,
8
- OnNPCSpawn,
9
- } from "@/wrapper/native/callbacks";
10
-
11
- export class NpcEvent {
12
- constructor() {
13
- OnNpcConnect(promisifyCallback(this, "onConnect", "OnNpcConnect"));
14
- OnNpcDisconnect(promisifyCallback(this, "onDisconnect", "OnNpcDisconnect"));
15
- OnNPCModeInit(promisifyCallback(this, "onModeInit", "OnNPCModeInit"));
16
- OnNPCModeExit(promisifyCallback(this, "onModeExit", "OnNPCModeExit"));
17
- OnNPCSpawn(promisifyCallback(this, "onSpawn", "OnNPCSpawn"));
18
- OnClientMessage(promisifyCallback(this, "onClientMessage"));
19
- }
20
- onConnect?(myplayerid: number): TCommonCallback;
21
- onDisconnect?(reason: string): TCommonCallback;
22
- onModeInit?(): TCommonCallback;
23
- onModeExit?(): TCommonCallback;
24
- onSpawn?(): TCommonCallback;
25
- onClientMessage?(colour: number, text: string): TCommonCallback;
26
- }
@@ -1,64 +0,0 @@
1
- import type { RecordTypesEnum } from "@/enums";
2
- import { ERecordStatus } from "@/enums";
3
- import { logger } from "@/logger";
4
- import {
5
- ConnectNPC,
6
- StartRecordingPlayback,
7
- StopRecordingPlayback,
8
- PauseRecordingPlayback,
9
- ResumeRecordingPlayback,
10
- StartRecordingPlayerData,
11
- StopRecordingPlayerData,
12
- } from "@/wrapper/native/functions";
13
- import type { Player } from "../player";
14
-
15
- export class NpcFunc {
16
- // eslint-disable-next-line @typescript-eslint/no-empty-function
17
- private constructor() {}
18
- private static recordStatus: ERecordStatus;
19
- static readonly connectNPC = ConnectNPC;
20
- static startRecordingPlayerData<P extends Player>(
21
- player: P,
22
- recordtype: RecordTypesEnum,
23
- recordname: string
24
- ): void {
25
- if (player.isRecording)
26
- return logger.warn("[NpcFunc]: It should be stopped before recording");
27
- StartRecordingPlayerData(player.id, recordtype, recordname);
28
- player.isRecording = true;
29
- }
30
- static stopRecordingPlayerData<P extends Player>(player: P): void {
31
- if (!player.isRecording)
32
- return logger.warn("[NpcFunc]: It should be started before stop");
33
- StopRecordingPlayerData(player.id);
34
- player.isRecording = false;
35
- }
36
- static startRecordingPlayback(
37
- playbacktype: RecordTypesEnum,
38
- recordname: string
39
- ): void {
40
- if (NpcFunc.recordStatus >= ERecordStatus.start)
41
- return logger.warn("[NpcFunc]: The current status cannot be replayed");
42
- StartRecordingPlayback(playbacktype, recordname);
43
- NpcFunc.recordStatus = ERecordStatus.start;
44
- }
45
- static stopRecordingPlayback(): void {
46
- if (NpcFunc.recordStatus < ERecordStatus.start)
47
- return logger.warn("[NpcFunc]: The current status cannot be stopped");
48
- StopRecordingPlayback();
49
- NpcFunc.recordStatus = ERecordStatus.none;
50
- }
51
-
52
- static pauseRecordingPlayback() {
53
- if (NpcFunc.recordStatus !== ERecordStatus.start)
54
- return logger.warn("[NpcFunc]: The current status cannot be paused");
55
- PauseRecordingPlayback();
56
- NpcFunc.recordStatus = ERecordStatus.pause;
57
- }
58
- static resumeRecordingPlayback() {
59
- if (NpcFunc.recordStatus !== ERecordStatus.pause)
60
- return logger.warn("[NpcFunc]: The current status cannot be paused");
61
- ResumeRecordingPlayback();
62
- NpcFunc.recordStatus = ERecordStatus.start;
63
- }
64
- }