@armoury/fivem-framework-client 1.0.54 → 1.0.55
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/dist/cjs/client/client-action-points.js +8 -13
- package/dist/cjs/client/client-entities.js +4 -5
- package/dist/cjs/client/services/client-action-points.service.js +6 -10
- package/dist/cjs/client/services/client-blips.service.js +2 -3
- package/dist/cjs/client/services/client-markers.service.js +3 -4
- package/dist/cjs/client/services/client-translate.service.js +1 -2
- package/dist/cjs/client/services/client-waypoints.service.js +1 -1
- package/dist/cjs/client/services/i18n/i18n.service.js +2 -3
- package/dist/esm/client/client-action-points.js +8 -13
- package/dist/esm/client/client-entities.js +4 -5
- package/dist/esm/client/services/client-action-points.service.js +6 -10
- package/dist/esm/client/services/client-blips.service.js +2 -3
- package/dist/esm/client/services/client-markers.service.js +3 -4
- package/dist/esm/client/services/client-translate.service.js +1 -2
- package/dist/esm/client/services/client-waypoints.service.js +1 -1
- package/dist/esm/client/services/i18n/i18n.service.js +2 -3
- package/package.json +2 -2
|
@@ -35,16 +35,15 @@ let ClientActionPoints = class ClientActionPoints extends client_entities_1.Clie
|
|
|
35
35
|
pos: marker.pos,
|
|
36
36
|
range: marker.renderDistance,
|
|
37
37
|
action: async () => {
|
|
38
|
-
var _a, _b, _c, _d, _e, _f, _g;
|
|
39
38
|
if (marker.textureDict && !Cfx.Client.HasStreamedTextureDictLoaded(marker.textureDict)) {
|
|
40
39
|
Cfx.Client.RequestStreamedTextureDict(marker.textureDict, true);
|
|
41
40
|
while (!Cfx.Client.HasStreamedTextureDictLoaded(marker.textureDict)) {
|
|
42
41
|
await (0, fivem_framework_common_1.Delay)(100);
|
|
43
42
|
}
|
|
44
43
|
}
|
|
45
|
-
Cfx.Client.DrawMarker(marker.marker, marker.pos[0], marker.pos[1], marker.pos[2], 0.0, 0.0, 0.0,
|
|
44
|
+
Cfx.Client.DrawMarker(marker.marker, marker.pos[0], marker.pos[1], marker.pos[2], 0.0, 0.0, 0.0, marker.rotation?.[0] || 0.0, marker.rotation?.[1] || 0.0, marker.rotation?.[2] || 0.0, marker.scale, marker.scale, marker.scale, marker.rgba[0], marker.rgba[1], marker.rgba[2], marker.rgba[3], false, true, 2, false, (marker.textureDict || null), (marker.textureName || null), false);
|
|
46
45
|
if (marker.underlyingCircle) {
|
|
47
|
-
Cfx.Client.DrawMarker(marker.underlyingCircle.marker, marker.pos[0], marker.pos[1], marker.pos[2] - 0.9, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, marker.underlyingCircle.scale, marker.underlyingCircle.scale, marker.underlyingCircle.scale,
|
|
46
|
+
Cfx.Client.DrawMarker(marker.underlyingCircle.marker, marker.pos[0], marker.pos[1], marker.pos[2] - 0.9, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, marker.underlyingCircle.scale, marker.underlyingCircle.scale, marker.underlyingCircle.scale, marker.underlyingCircle.rgba?.[0] || marker.rgba[0], marker.underlyingCircle.rgba?.[1] || marker.rgba[1], marker.underlyingCircle.rgba?.[2] || marker.rgba[2], marker.underlyingCircle.rgba?.[3] || marker.rgba[3], false, true, 2, false, null, null, false);
|
|
48
47
|
}
|
|
49
48
|
}
|
|
50
49
|
})));
|
|
@@ -102,14 +101,12 @@ let ClientActionPoints = class ClientActionPoints extends client_entities_1.Clie
|
|
|
102
101
|
return false;
|
|
103
102
|
}
|
|
104
103
|
removeActionPoint(actionPoint) {
|
|
105
|
-
|
|
106
|
-
if ((_b = (_a = this._actionPoints[this.roundToNearest(actionPoint.pos[0], this.chunkRadius)]) === null || _a === void 0 ? void 0 : _a[this.roundToNearest(actionPoint.pos[1], this.chunkRadius)]) === null || _b === void 0 ? void 0 : _b.length) {
|
|
104
|
+
if (this._actionPoints[this.roundToNearest(actionPoint.pos[0], this.chunkRadius)]?.[this.roundToNearest(actionPoint.pos[1], this.chunkRadius)]?.length) {
|
|
107
105
|
this._actionPoints[this.roundToNearest(actionPoint.pos[0], this.chunkRadius)][this.roundToNearest(actionPoint.pos[1], this.chunkRadius)] =
|
|
108
106
|
this._actionPoints[this.roundToNearest(actionPoint.pos[0], this.chunkRadius)][this.roundToNearest(actionPoint.pos[1], this.chunkRadius)].filter((_actionPoint) => _actionPoint.id != actionPoint.id);
|
|
109
107
|
}
|
|
110
108
|
}
|
|
111
109
|
onThreadTriggered(optimizationType) {
|
|
112
|
-
var _a, _b;
|
|
113
110
|
if (optimizationType === 'chunk-checker') {
|
|
114
111
|
this._cachedPlayerPosition = Cfx.Client.GetEntityCoords(Cfx.Client.PlayerPedId(), true);
|
|
115
112
|
const [nearestX, nearestY] = [this.roundToNearest(this._cachedPlayerPosition[0], this.chunkRadius), this.roundToNearest(this._cachedPlayerPosition[1], this.chunkRadius)];
|
|
@@ -118,20 +115,19 @@ let ClientActionPoints = class ClientActionPoints extends client_entities_1.Clie
|
|
|
118
115
|
}
|
|
119
116
|
this._cachedPlayerRoundedPosition = [nearestX, nearestY];
|
|
120
117
|
this._cachedIsPlayerInAnyVehicle = Cfx.Client.IsPedInAnyVehicle(Cfx.Client.PlayerPedId(), false);
|
|
121
|
-
if (
|
|
118
|
+
if (this._actionPoints[this._cachedPlayerRoundedPosition[0]]?.[this._cachedPlayerRoundedPosition[1]]?.length) {
|
|
122
119
|
this.addToTickUnique({
|
|
123
120
|
id: `${Cfx.Client.GetCurrentResourceName()}_actionpoints`,
|
|
124
121
|
function: (() => {
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
const _actionPoint = (_c = this._actionPoints[this._cachedPlayerRoundedPosition[0]]) === null || _c === void 0 ? void 0 : _c[this._cachedPlayerRoundedPosition[1]][i];
|
|
122
|
+
for (let i = 0; i < this._actionPoints[this._cachedPlayerRoundedPosition[0]]?.[this._cachedPlayerRoundedPosition[1]]?.length; i++) {
|
|
123
|
+
const _actionPoint = this._actionPoints[this._cachedPlayerRoundedPosition[0]]?.[this._cachedPlayerRoundedPosition[1]][i];
|
|
128
124
|
if ((0, fivem_framework_common_1.calculateDistance)([_actionPoint.pos[0], _actionPoint.pos[1], _actionPoint.pos[2], this._cachedPlayerPosition[0], this._cachedPlayerPosition[1], _actionPoint.pos[2]]) <= (_actionPoint.range || 1.0) + (this._cachedIsPlayerInAnyVehicle && !_actionPoint.onfootOnly ? 5 : 0)) {
|
|
129
125
|
const actionPassed = (!_actionPoint.onceIf || _actionPoint.onceIf()) && (!_actionPoint.onfootOnly || !Cfx.Client.IsPedInAnyVehicle(Cfx.Client.PlayerPedId(), false)) && (!_actionPoint.inVehicleOnly || Cfx.Client.IsPedInAnyVehicle(Cfx.Client.PlayerPedId(), false));
|
|
130
126
|
if (actionPassed) {
|
|
131
127
|
_actionPoint.action();
|
|
132
128
|
}
|
|
133
129
|
if ((_actionPoint.once || _actionPoint.onceIf) && actionPassed) {
|
|
134
|
-
|
|
130
|
+
this._actionPoints[this._cachedPlayerRoundedPosition[0]]?.[this._cachedPlayerRoundedPosition[1]].splice(i, 1);
|
|
135
131
|
i--;
|
|
136
132
|
}
|
|
137
133
|
}
|
|
@@ -145,9 +141,8 @@ let ClientActionPoints = class ClientActionPoints extends client_entities_1.Clie
|
|
|
145
141
|
}
|
|
146
142
|
}
|
|
147
143
|
debug_ActionPoints() {
|
|
148
|
-
var _a, _b;
|
|
149
144
|
let totalActionPoints = 0;
|
|
150
|
-
const currentAreaActionPoints =
|
|
145
|
+
const currentAreaActionPoints = this.actionPoints[this.roundToNearest(this._cachedPlayerPosition[0], this.chunkRadius)]?.[this.roundToNearest(this._cachedPlayerPosition[1], this.chunkRadius)]?.length || 0;
|
|
151
146
|
Object.keys(this.actionPoints).forEach((posXAsStr) => {
|
|
152
147
|
const posX = Number(posXAsStr);
|
|
153
148
|
Object.keys(this.actionPoints[posX]).forEach((posYAsStr) => {
|
|
@@ -44,17 +44,16 @@ let ClientEntities = class ClientEntities extends client_base_1.ClientBase {
|
|
|
44
44
|
this.assignDefaultEntityListeners();
|
|
45
45
|
}
|
|
46
46
|
createBlips(blips) {
|
|
47
|
-
const _blips = blips.map((blip) => (
|
|
47
|
+
const _blips = blips.map((blip) => ({ ...blip, instance: null }));
|
|
48
48
|
this._blips.push(..._blips);
|
|
49
49
|
this.refreshBlips();
|
|
50
50
|
}
|
|
51
51
|
createBlip(blip) {
|
|
52
|
-
var _a;
|
|
53
52
|
const _blip = (!blip.type || blip.type === 'coords'
|
|
54
53
|
? Cfx.Client.AddBlipForCoord(blip.pos[0], blip.pos[1], blip.pos[2])
|
|
55
54
|
: (blip.type === 'range'
|
|
56
55
|
? Cfx.Client.AddBlipForRadius(blip.pos[0], blip.pos[1], blip.pos[2], blip.scale || 1.0)
|
|
57
|
-
: Cfx.Client.AddBlipForEntity(
|
|
56
|
+
: Cfx.Client.AddBlipForEntity(blip.entityId ?? Cfx.Client.PlayerPedId())));
|
|
58
57
|
if (!blip.type || blip.type !== 'range') {
|
|
59
58
|
Cfx.Client.SetBlipScale(_blip, blip.scale || 1.0);
|
|
60
59
|
}
|
|
@@ -98,7 +97,7 @@ let ClientEntities = class ClientEntities extends client_base_1.ClientBase {
|
|
|
98
97
|
pos,
|
|
99
98
|
longRange: true
|
|
100
99
|
});
|
|
101
|
-
this.createCheckpoint(2, pos[0], pos[1], pos[2], null, null, null, diameter, color_mappings_1.COLOR_MAPPINGS[color
|
|
100
|
+
this.createCheckpoint(2, pos[0], pos[1], pos[2], null, null, null, diameter, color_mappings_1.COLOR_MAPPINGS[color ?? 0][0], color_mappings_1.COLOR_MAPPINGS[color ?? 0][1], color_mappings_1.COLOR_MAPPINGS[color ?? 0][2], 255, 0);
|
|
102
101
|
if (routeColor !== -1) {
|
|
103
102
|
Cfx.Client.SetBlipRoute(_waypoint, true);
|
|
104
103
|
if (routeColor) {
|
|
@@ -143,7 +142,7 @@ let ClientEntities = class ClientEntities extends client_base_1.ClientBase {
|
|
|
143
142
|
}
|
|
144
143
|
/** Defines permanent markers. Handles draw-per-tick automatically. */
|
|
145
144
|
createMarkers(markers) {
|
|
146
|
-
const _markers = markers.map((marker) => (
|
|
145
|
+
const _markers = markers.map((marker) => ({ ...marker, instance: null }));
|
|
147
146
|
this._markers.push(..._markers);
|
|
148
147
|
}
|
|
149
148
|
clearMarkers() {
|
|
@@ -52,8 +52,7 @@ let ClientActionPointsService = class ClientActionPointsService {
|
|
|
52
52
|
this._actionPoints[nearestX][nearestY].push(actionPoint);
|
|
53
53
|
}
|
|
54
54
|
remove(actionPoint) {
|
|
55
|
-
|
|
56
|
-
if ((_b = (_a = this._actionPoints[this.roundToNearest(actionPoint.pos[0], this.chunkRadius)]) === null || _a === void 0 ? void 0 : _a[this.roundToNearest(actionPoint.pos[1], this.chunkRadius)]) === null || _b === void 0 ? void 0 : _b.length) {
|
|
55
|
+
if (this._actionPoints[this.roundToNearest(actionPoint.pos[0], this.chunkRadius)]?.[this.roundToNearest(actionPoint.pos[1], this.chunkRadius)]?.length) {
|
|
57
56
|
this._actionPoints[this.roundToNearest(actionPoint.pos[0], this.chunkRadius)][this.roundToNearest(actionPoint.pos[1], this.chunkRadius)] =
|
|
58
57
|
this._actionPoints[this.roundToNearest(actionPoint.pos[0], this.chunkRadius)][this.roundToNearest(actionPoint.pos[1], this.chunkRadius)].filter((_actionPoint) => _actionPoint.id != actionPoint.id);
|
|
59
58
|
}
|
|
@@ -86,7 +85,6 @@ let ClientActionPointsService = class ClientActionPointsService {
|
|
|
86
85
|
return false;
|
|
87
86
|
}
|
|
88
87
|
onThreadTriggered(optimizationType) {
|
|
89
|
-
var _a, _b;
|
|
90
88
|
if (optimizationType === 'chunk-checker') {
|
|
91
89
|
this._cachedPlayerPosition = Cfx.Client.GetEntityCoords(Cfx.Client.PlayerPedId(), true);
|
|
92
90
|
const [nearestX, nearestY] = [this.roundToNearest(this._cachedPlayerPosition[0], this.chunkRadius), this.roundToNearest(this._cachedPlayerPosition[1], this.chunkRadius)];
|
|
@@ -95,20 +93,19 @@ let ClientActionPointsService = class ClientActionPointsService {
|
|
|
95
93
|
}
|
|
96
94
|
this._cachedPlayerRoundedPosition = [nearestX, nearestY];
|
|
97
95
|
this._cachedIsPlayerInAnyVehicle = Cfx.Client.IsPedInAnyVehicle(Cfx.Client.PlayerPedId(), false);
|
|
98
|
-
if (
|
|
96
|
+
if (this._actionPoints[this._cachedPlayerRoundedPosition[0]]?.[this._cachedPlayerRoundedPosition[1]]?.length) {
|
|
99
97
|
this._ticksService.addUnique({
|
|
100
98
|
id: `${Cfx.Client.GetCurrentResourceName()}_actionpoints`,
|
|
101
99
|
function: (() => {
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
const _actionPoint = (_c = this._actionPoints[this._cachedPlayerRoundedPosition[0]]) === null || _c === void 0 ? void 0 : _c[this._cachedPlayerRoundedPosition[1]][i];
|
|
100
|
+
for (let i = 0; i < this._actionPoints[this._cachedPlayerRoundedPosition[0]]?.[this._cachedPlayerRoundedPosition[1]]?.length; i++) {
|
|
101
|
+
const _actionPoint = this._actionPoints[this._cachedPlayerRoundedPosition[0]]?.[this._cachedPlayerRoundedPosition[1]][i];
|
|
105
102
|
if ((0, fivem_framework_common_1.calculateDistance)([_actionPoint.pos[0], _actionPoint.pos[1], _actionPoint.pos[2], this._cachedPlayerPosition[0], this._cachedPlayerPosition[1], _actionPoint.pos[2]]) <= (_actionPoint.range || 1.0) + (this._cachedIsPlayerInAnyVehicle && !_actionPoint.onfootOnly ? 5 : 0)) {
|
|
106
103
|
const actionPassed = (!_actionPoint.onceIf || _actionPoint.onceIf()) && (!_actionPoint.onfootOnly || !Cfx.Client.IsPedInAnyVehicle(Cfx.Client.PlayerPedId(), false)) && (!_actionPoint.inVehicleOnly || Cfx.Client.IsPedInAnyVehicle(Cfx.Client.PlayerPedId(), false));
|
|
107
104
|
if (actionPassed) {
|
|
108
105
|
_actionPoint.action();
|
|
109
106
|
}
|
|
110
107
|
if ((_actionPoint.once || _actionPoint.onceIf) && actionPassed) {
|
|
111
|
-
|
|
108
|
+
this._actionPoints[this._cachedPlayerRoundedPosition[0]]?.[this._cachedPlayerRoundedPosition[1]].splice(i, 1);
|
|
112
109
|
i--;
|
|
113
110
|
}
|
|
114
111
|
}
|
|
@@ -122,9 +119,8 @@ let ClientActionPointsService = class ClientActionPointsService {
|
|
|
122
119
|
}
|
|
123
120
|
}
|
|
124
121
|
debug_ActionPoints() {
|
|
125
|
-
var _a, _b;
|
|
126
122
|
let totalActionPoints = 0;
|
|
127
|
-
const currentAreaActionPoints =
|
|
123
|
+
const currentAreaActionPoints = this.actionPoints[this.roundToNearest(this._cachedPlayerPosition[0], this.chunkRadius)]?.[this.roundToNearest(this._cachedPlayerPosition[1], this.chunkRadius)]?.length || 0;
|
|
128
124
|
Object.keys(this.actionPoints).forEach((posXAsStr) => {
|
|
129
125
|
const posX = Number(posXAsStr);
|
|
130
126
|
Object.keys(this.actionPoints[posX]).forEach((posYAsStr) => {
|
|
@@ -30,17 +30,16 @@ let ClientBlipsService = class ClientBlipsService {
|
|
|
30
30
|
}
|
|
31
31
|
// TODO: Why is createMultiple() not calling create()?
|
|
32
32
|
createMultiple(...blips) {
|
|
33
|
-
const _blips = blips.map((blip) => (
|
|
33
|
+
const _blips = blips.map((blip) => ({ ...blip, instance: null }));
|
|
34
34
|
this._blips.push(..._blips);
|
|
35
35
|
this.refresh();
|
|
36
36
|
}
|
|
37
37
|
create(blip) {
|
|
38
|
-
var _a;
|
|
39
38
|
const _blip = (!blip.type || blip.type === 'coords'
|
|
40
39
|
? Cfx.Client.AddBlipForCoord(blip.pos[0], blip.pos[1], blip.pos[2])
|
|
41
40
|
: (blip.type === 'range'
|
|
42
41
|
? Cfx.Client.AddBlipForRadius(blip.pos[0], blip.pos[1], blip.pos[2], blip.scale || 1.0)
|
|
43
|
-
: Cfx.Client.AddBlipForEntity(
|
|
42
|
+
: Cfx.Client.AddBlipForEntity(blip.entityId ?? Cfx.Client.PlayerPedId())));
|
|
44
43
|
if (!blip.type || blip.type !== 'range') {
|
|
45
44
|
Cfx.Client.SetBlipScale(_blip, blip.scale || 1.0);
|
|
46
45
|
}
|
|
@@ -26,23 +26,22 @@ let ClientMarkersService = class ClientMarkersService {
|
|
|
26
26
|
}
|
|
27
27
|
/** Defines permanent markers. Handles draw-per-tick automatically. */
|
|
28
28
|
create(...markers) {
|
|
29
|
-
const _markers = markers.map((marker) => (
|
|
29
|
+
const _markers = markers.map((marker) => ({ ...marker, instance: null }));
|
|
30
30
|
this._markers.push(..._markers);
|
|
31
31
|
this._actionPoints.create(...markers.map((marker) => ({
|
|
32
32
|
id: `${Cfx.Client.GetCurrentResourceName()}_marker_${marker.pos[0]}_${marker.pos[1]}`,
|
|
33
33
|
pos: marker.pos,
|
|
34
34
|
range: marker.renderDistance,
|
|
35
35
|
action: async () => {
|
|
36
|
-
var _a, _b, _c, _d, _e, _f, _g;
|
|
37
36
|
if (marker.textureDict && !Cfx.Client.HasStreamedTextureDictLoaded(marker.textureDict)) {
|
|
38
37
|
Cfx.Client.RequestStreamedTextureDict(marker.textureDict, true);
|
|
39
38
|
while (!Cfx.Client.HasStreamedTextureDictLoaded(marker.textureDict)) {
|
|
40
39
|
await (0, fivem_framework_common_1.Delay)(100);
|
|
41
40
|
}
|
|
42
41
|
}
|
|
43
|
-
Cfx.Client.DrawMarker(marker.marker, marker.pos[0], marker.pos[1], marker.pos[2], 0.0, 0.0, 0.0,
|
|
42
|
+
Cfx.Client.DrawMarker(marker.marker, marker.pos[0], marker.pos[1], marker.pos[2], 0.0, 0.0, 0.0, marker.rotation?.[0] || 0.0, marker.rotation?.[1] || 0.0, marker.rotation?.[2] || 0.0, marker.scale, marker.scale, marker.scale, marker.rgba[0], marker.rgba[1], marker.rgba[2], marker.rgba[3], false, true, 2, false, (marker.textureDict || null), (marker.textureName || null), false);
|
|
44
43
|
if (marker.underlyingCircle) {
|
|
45
|
-
Cfx.Client.DrawMarker(marker.underlyingCircle.marker, marker.pos[0], marker.pos[1], marker.pos[2] - 0.9, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, marker.underlyingCircle.scale, marker.underlyingCircle.scale, marker.underlyingCircle.scale,
|
|
44
|
+
Cfx.Client.DrawMarker(marker.underlyingCircle.marker, marker.pos[0], marker.pos[1], marker.pos[2] - 0.9, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, marker.underlyingCircle.scale, marker.underlyingCircle.scale, marker.underlyingCircle.scale, marker.underlyingCircle.rgba?.[0] || marker.rgba[0], marker.underlyingCircle.rgba?.[1] || marker.rgba[1], marker.underlyingCircle.rgba?.[2] || marker.rgba[2], marker.underlyingCircle.rgba?.[3] || marker.rgba[3], false, true, 2, false, null, null, false);
|
|
46
45
|
}
|
|
47
46
|
}
|
|
48
47
|
})));
|
|
@@ -28,8 +28,7 @@ let ClientTranslateService = class ClientTranslateService {
|
|
|
28
28
|
this._language = null;
|
|
29
29
|
}
|
|
30
30
|
instant(key) {
|
|
31
|
-
|
|
32
|
-
return ((_a = this._translations[this.language]) === null || _a === void 0 ? void 0 : _a[key]) || key;
|
|
31
|
+
return this._translations[this.language]?.[key] || key;
|
|
33
32
|
}
|
|
34
33
|
};
|
|
35
34
|
exports.ClientTranslateService = ClientTranslateService;
|
|
@@ -37,7 +37,7 @@ let ClientWaypointsService = class ClientWaypointsService {
|
|
|
37
37
|
pos,
|
|
38
38
|
longRange: true
|
|
39
39
|
});
|
|
40
|
-
this._checkpointsService.create(2, pos[0], pos[1], pos[2], null, null, null, diameter, color_mappings_1.COLOR_MAPPINGS[color
|
|
40
|
+
this._checkpointsService.create(2, pos[0], pos[1], pos[2], null, null, null, diameter, color_mappings_1.COLOR_MAPPINGS[color ?? 0][0], color_mappings_1.COLOR_MAPPINGS[color ?? 0][1], color_mappings_1.COLOR_MAPPINGS[color ?? 0][2], 255, 0);
|
|
41
41
|
if (routeColor !== -1) {
|
|
42
42
|
Cfx.Client.SetBlipRoute(_waypoint, true);
|
|
43
43
|
if (routeColor) {
|
|
@@ -15,9 +15,8 @@ const node_polyglot_1 = __importDefault(require("node-polyglot"));
|
|
|
15
15
|
const injection_js_1 = require("injection-js");
|
|
16
16
|
let I18n = class I18n {
|
|
17
17
|
static withOptions(options = {}) {
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|| options.defaultLanguage)) !== null && _a !== void 0 ? _a : 'en-US';
|
|
18
|
+
const language = (Cfx.Client.GetResourceKvpString('armoury:language')
|
|
19
|
+
|| options.defaultLanguage) ?? 'en-US';
|
|
21
20
|
return {
|
|
22
21
|
provide: fivem_framework_common_1.APP_INITIALIZER,
|
|
23
22
|
useValue: () => this.loadLanguage(language),
|
|
@@ -32,16 +32,15 @@ let ClientActionPoints = class ClientActionPoints extends ClientEntities {
|
|
|
32
32
|
pos: marker.pos,
|
|
33
33
|
range: marker.renderDistance,
|
|
34
34
|
action: async () => {
|
|
35
|
-
var _a, _b, _c, _d, _e, _f, _g;
|
|
36
35
|
if (marker.textureDict && !Cfx.Client.HasStreamedTextureDictLoaded(marker.textureDict)) {
|
|
37
36
|
Cfx.Client.RequestStreamedTextureDict(marker.textureDict, true);
|
|
38
37
|
while (!Cfx.Client.HasStreamedTextureDictLoaded(marker.textureDict)) {
|
|
39
38
|
await Delay(100);
|
|
40
39
|
}
|
|
41
40
|
}
|
|
42
|
-
Cfx.Client.DrawMarker(marker.marker, marker.pos[0], marker.pos[1], marker.pos[2], 0.0, 0.0, 0.0,
|
|
41
|
+
Cfx.Client.DrawMarker(marker.marker, marker.pos[0], marker.pos[1], marker.pos[2], 0.0, 0.0, 0.0, marker.rotation?.[0] || 0.0, marker.rotation?.[1] || 0.0, marker.rotation?.[2] || 0.0, marker.scale, marker.scale, marker.scale, marker.rgba[0], marker.rgba[1], marker.rgba[2], marker.rgba[3], false, true, 2, false, (marker.textureDict || null), (marker.textureName || null), false);
|
|
43
42
|
if (marker.underlyingCircle) {
|
|
44
|
-
Cfx.Client.DrawMarker(marker.underlyingCircle.marker, marker.pos[0], marker.pos[1], marker.pos[2] - 0.9, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, marker.underlyingCircle.scale, marker.underlyingCircle.scale, marker.underlyingCircle.scale,
|
|
43
|
+
Cfx.Client.DrawMarker(marker.underlyingCircle.marker, marker.pos[0], marker.pos[1], marker.pos[2] - 0.9, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, marker.underlyingCircle.scale, marker.underlyingCircle.scale, marker.underlyingCircle.scale, marker.underlyingCircle.rgba?.[0] || marker.rgba[0], marker.underlyingCircle.rgba?.[1] || marker.rgba[1], marker.underlyingCircle.rgba?.[2] || marker.rgba[2], marker.underlyingCircle.rgba?.[3] || marker.rgba[3], false, true, 2, false, null, null, false);
|
|
45
44
|
}
|
|
46
45
|
}
|
|
47
46
|
})));
|
|
@@ -99,14 +98,12 @@ let ClientActionPoints = class ClientActionPoints extends ClientEntities {
|
|
|
99
98
|
return false;
|
|
100
99
|
}
|
|
101
100
|
removeActionPoint(actionPoint) {
|
|
102
|
-
|
|
103
|
-
if ((_b = (_a = this._actionPoints[this.roundToNearest(actionPoint.pos[0], this.chunkRadius)]) === null || _a === void 0 ? void 0 : _a[this.roundToNearest(actionPoint.pos[1], this.chunkRadius)]) === null || _b === void 0 ? void 0 : _b.length) {
|
|
101
|
+
if (this._actionPoints[this.roundToNearest(actionPoint.pos[0], this.chunkRadius)]?.[this.roundToNearest(actionPoint.pos[1], this.chunkRadius)]?.length) {
|
|
104
102
|
this._actionPoints[this.roundToNearest(actionPoint.pos[0], this.chunkRadius)][this.roundToNearest(actionPoint.pos[1], this.chunkRadius)] =
|
|
105
103
|
this._actionPoints[this.roundToNearest(actionPoint.pos[0], this.chunkRadius)][this.roundToNearest(actionPoint.pos[1], this.chunkRadius)].filter((_actionPoint) => _actionPoint.id != actionPoint.id);
|
|
106
104
|
}
|
|
107
105
|
}
|
|
108
106
|
onThreadTriggered(optimizationType) {
|
|
109
|
-
var _a, _b;
|
|
110
107
|
if (optimizationType === 'chunk-checker') {
|
|
111
108
|
this._cachedPlayerPosition = Cfx.Client.GetEntityCoords(Cfx.Client.PlayerPedId(), true);
|
|
112
109
|
const [nearestX, nearestY] = [this.roundToNearest(this._cachedPlayerPosition[0], this.chunkRadius), this.roundToNearest(this._cachedPlayerPosition[1], this.chunkRadius)];
|
|
@@ -115,20 +112,19 @@ let ClientActionPoints = class ClientActionPoints extends ClientEntities {
|
|
|
115
112
|
}
|
|
116
113
|
this._cachedPlayerRoundedPosition = [nearestX, nearestY];
|
|
117
114
|
this._cachedIsPlayerInAnyVehicle = Cfx.Client.IsPedInAnyVehicle(Cfx.Client.PlayerPedId(), false);
|
|
118
|
-
if (
|
|
115
|
+
if (this._actionPoints[this._cachedPlayerRoundedPosition[0]]?.[this._cachedPlayerRoundedPosition[1]]?.length) {
|
|
119
116
|
this.addToTickUnique({
|
|
120
117
|
id: `${Cfx.Client.GetCurrentResourceName()}_actionpoints`,
|
|
121
118
|
function: (() => {
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
const _actionPoint = (_c = this._actionPoints[this._cachedPlayerRoundedPosition[0]]) === null || _c === void 0 ? void 0 : _c[this._cachedPlayerRoundedPosition[1]][i];
|
|
119
|
+
for (let i = 0; i < this._actionPoints[this._cachedPlayerRoundedPosition[0]]?.[this._cachedPlayerRoundedPosition[1]]?.length; i++) {
|
|
120
|
+
const _actionPoint = this._actionPoints[this._cachedPlayerRoundedPosition[0]]?.[this._cachedPlayerRoundedPosition[1]][i];
|
|
125
121
|
if (calculateDistance([_actionPoint.pos[0], _actionPoint.pos[1], _actionPoint.pos[2], this._cachedPlayerPosition[0], this._cachedPlayerPosition[1], _actionPoint.pos[2]]) <= (_actionPoint.range || 1.0) + (this._cachedIsPlayerInAnyVehicle && !_actionPoint.onfootOnly ? 5 : 0)) {
|
|
126
122
|
const actionPassed = (!_actionPoint.onceIf || _actionPoint.onceIf()) && (!_actionPoint.onfootOnly || !Cfx.Client.IsPedInAnyVehicle(Cfx.Client.PlayerPedId(), false)) && (!_actionPoint.inVehicleOnly || Cfx.Client.IsPedInAnyVehicle(Cfx.Client.PlayerPedId(), false));
|
|
127
123
|
if (actionPassed) {
|
|
128
124
|
_actionPoint.action();
|
|
129
125
|
}
|
|
130
126
|
if ((_actionPoint.once || _actionPoint.onceIf) && actionPassed) {
|
|
131
|
-
|
|
127
|
+
this._actionPoints[this._cachedPlayerRoundedPosition[0]]?.[this._cachedPlayerRoundedPosition[1]].splice(i, 1);
|
|
132
128
|
i--;
|
|
133
129
|
}
|
|
134
130
|
}
|
|
@@ -142,9 +138,8 @@ let ClientActionPoints = class ClientActionPoints extends ClientEntities {
|
|
|
142
138
|
}
|
|
143
139
|
}
|
|
144
140
|
debug_ActionPoints() {
|
|
145
|
-
var _a, _b;
|
|
146
141
|
let totalActionPoints = 0;
|
|
147
|
-
const currentAreaActionPoints =
|
|
142
|
+
const currentAreaActionPoints = this.actionPoints[this.roundToNearest(this._cachedPlayerPosition[0], this.chunkRadius)]?.[this.roundToNearest(this._cachedPlayerPosition[1], this.chunkRadius)]?.length || 0;
|
|
148
143
|
Object.keys(this.actionPoints).forEach((posXAsStr) => {
|
|
149
144
|
const posX = Number(posXAsStr);
|
|
150
145
|
Object.keys(this.actionPoints[posX]).forEach((posYAsStr) => {
|
|
@@ -41,17 +41,16 @@ let ClientEntities = class ClientEntities extends ClientBase {
|
|
|
41
41
|
this.assignDefaultEntityListeners();
|
|
42
42
|
}
|
|
43
43
|
createBlips(blips) {
|
|
44
|
-
const _blips = blips.map((blip) => (
|
|
44
|
+
const _blips = blips.map((blip) => ({ ...blip, instance: null }));
|
|
45
45
|
this._blips.push(..._blips);
|
|
46
46
|
this.refreshBlips();
|
|
47
47
|
}
|
|
48
48
|
createBlip(blip) {
|
|
49
|
-
var _a;
|
|
50
49
|
const _blip = (!blip.type || blip.type === 'coords'
|
|
51
50
|
? Cfx.Client.AddBlipForCoord(blip.pos[0], blip.pos[1], blip.pos[2])
|
|
52
51
|
: (blip.type === 'range'
|
|
53
52
|
? Cfx.Client.AddBlipForRadius(blip.pos[0], blip.pos[1], blip.pos[2], blip.scale || 1.0)
|
|
54
|
-
: Cfx.Client.AddBlipForEntity(
|
|
53
|
+
: Cfx.Client.AddBlipForEntity(blip.entityId ?? Cfx.Client.PlayerPedId())));
|
|
55
54
|
if (!blip.type || blip.type !== 'range') {
|
|
56
55
|
Cfx.Client.SetBlipScale(_blip, blip.scale || 1.0);
|
|
57
56
|
}
|
|
@@ -95,7 +94,7 @@ let ClientEntities = class ClientEntities extends ClientBase {
|
|
|
95
94
|
pos,
|
|
96
95
|
longRange: true
|
|
97
96
|
});
|
|
98
|
-
this.createCheckpoint(2, pos[0], pos[1], pos[2], null, null, null, diameter, COLOR_MAPPINGS[color
|
|
97
|
+
this.createCheckpoint(2, pos[0], pos[1], pos[2], null, null, null, diameter, COLOR_MAPPINGS[color ?? 0][0], COLOR_MAPPINGS[color ?? 0][1], COLOR_MAPPINGS[color ?? 0][2], 255, 0);
|
|
99
98
|
if (routeColor !== -1) {
|
|
100
99
|
Cfx.Client.SetBlipRoute(_waypoint, true);
|
|
101
100
|
if (routeColor) {
|
|
@@ -140,7 +139,7 @@ let ClientEntities = class ClientEntities extends ClientBase {
|
|
|
140
139
|
}
|
|
141
140
|
/** Defines permanent markers. Handles draw-per-tick automatically. */
|
|
142
141
|
createMarkers(markers) {
|
|
143
|
-
const _markers = markers.map((marker) => (
|
|
142
|
+
const _markers = markers.map((marker) => ({ ...marker, instance: null }));
|
|
144
143
|
this._markers.push(..._markers);
|
|
145
144
|
}
|
|
146
145
|
clearMarkers() {
|
|
@@ -49,8 +49,7 @@ let ClientActionPointsService = class ClientActionPointsService {
|
|
|
49
49
|
this._actionPoints[nearestX][nearestY].push(actionPoint);
|
|
50
50
|
}
|
|
51
51
|
remove(actionPoint) {
|
|
52
|
-
|
|
53
|
-
if ((_b = (_a = this._actionPoints[this.roundToNearest(actionPoint.pos[0], this.chunkRadius)]) === null || _a === void 0 ? void 0 : _a[this.roundToNearest(actionPoint.pos[1], this.chunkRadius)]) === null || _b === void 0 ? void 0 : _b.length) {
|
|
52
|
+
if (this._actionPoints[this.roundToNearest(actionPoint.pos[0], this.chunkRadius)]?.[this.roundToNearest(actionPoint.pos[1], this.chunkRadius)]?.length) {
|
|
54
53
|
this._actionPoints[this.roundToNearest(actionPoint.pos[0], this.chunkRadius)][this.roundToNearest(actionPoint.pos[1], this.chunkRadius)] =
|
|
55
54
|
this._actionPoints[this.roundToNearest(actionPoint.pos[0], this.chunkRadius)][this.roundToNearest(actionPoint.pos[1], this.chunkRadius)].filter((_actionPoint) => _actionPoint.id != actionPoint.id);
|
|
56
55
|
}
|
|
@@ -83,7 +82,6 @@ let ClientActionPointsService = class ClientActionPointsService {
|
|
|
83
82
|
return false;
|
|
84
83
|
}
|
|
85
84
|
onThreadTriggered(optimizationType) {
|
|
86
|
-
var _a, _b;
|
|
87
85
|
if (optimizationType === 'chunk-checker') {
|
|
88
86
|
this._cachedPlayerPosition = Cfx.Client.GetEntityCoords(Cfx.Client.PlayerPedId(), true);
|
|
89
87
|
const [nearestX, nearestY] = [this.roundToNearest(this._cachedPlayerPosition[0], this.chunkRadius), this.roundToNearest(this._cachedPlayerPosition[1], this.chunkRadius)];
|
|
@@ -92,20 +90,19 @@ let ClientActionPointsService = class ClientActionPointsService {
|
|
|
92
90
|
}
|
|
93
91
|
this._cachedPlayerRoundedPosition = [nearestX, nearestY];
|
|
94
92
|
this._cachedIsPlayerInAnyVehicle = Cfx.Client.IsPedInAnyVehicle(Cfx.Client.PlayerPedId(), false);
|
|
95
|
-
if (
|
|
93
|
+
if (this._actionPoints[this._cachedPlayerRoundedPosition[0]]?.[this._cachedPlayerRoundedPosition[1]]?.length) {
|
|
96
94
|
this._ticksService.addUnique({
|
|
97
95
|
id: `${Cfx.Client.GetCurrentResourceName()}_actionpoints`,
|
|
98
96
|
function: (() => {
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
const _actionPoint = (_c = this._actionPoints[this._cachedPlayerRoundedPosition[0]]) === null || _c === void 0 ? void 0 : _c[this._cachedPlayerRoundedPosition[1]][i];
|
|
97
|
+
for (let i = 0; i < this._actionPoints[this._cachedPlayerRoundedPosition[0]]?.[this._cachedPlayerRoundedPosition[1]]?.length; i++) {
|
|
98
|
+
const _actionPoint = this._actionPoints[this._cachedPlayerRoundedPosition[0]]?.[this._cachedPlayerRoundedPosition[1]][i];
|
|
102
99
|
if (calculateDistance([_actionPoint.pos[0], _actionPoint.pos[1], _actionPoint.pos[2], this._cachedPlayerPosition[0], this._cachedPlayerPosition[1], _actionPoint.pos[2]]) <= (_actionPoint.range || 1.0) + (this._cachedIsPlayerInAnyVehicle && !_actionPoint.onfootOnly ? 5 : 0)) {
|
|
103
100
|
const actionPassed = (!_actionPoint.onceIf || _actionPoint.onceIf()) && (!_actionPoint.onfootOnly || !Cfx.Client.IsPedInAnyVehicle(Cfx.Client.PlayerPedId(), false)) && (!_actionPoint.inVehicleOnly || Cfx.Client.IsPedInAnyVehicle(Cfx.Client.PlayerPedId(), false));
|
|
104
101
|
if (actionPassed) {
|
|
105
102
|
_actionPoint.action();
|
|
106
103
|
}
|
|
107
104
|
if ((_actionPoint.once || _actionPoint.onceIf) && actionPassed) {
|
|
108
|
-
|
|
105
|
+
this._actionPoints[this._cachedPlayerRoundedPosition[0]]?.[this._cachedPlayerRoundedPosition[1]].splice(i, 1);
|
|
109
106
|
i--;
|
|
110
107
|
}
|
|
111
108
|
}
|
|
@@ -119,9 +116,8 @@ let ClientActionPointsService = class ClientActionPointsService {
|
|
|
119
116
|
}
|
|
120
117
|
}
|
|
121
118
|
debug_ActionPoints() {
|
|
122
|
-
var _a, _b;
|
|
123
119
|
let totalActionPoints = 0;
|
|
124
|
-
const currentAreaActionPoints =
|
|
120
|
+
const currentAreaActionPoints = this.actionPoints[this.roundToNearest(this._cachedPlayerPosition[0], this.chunkRadius)]?.[this.roundToNearest(this._cachedPlayerPosition[1], this.chunkRadius)]?.length || 0;
|
|
125
121
|
Object.keys(this.actionPoints).forEach((posXAsStr) => {
|
|
126
122
|
const posX = Number(posXAsStr);
|
|
127
123
|
Object.keys(this.actionPoints[posX]).forEach((posYAsStr) => {
|
|
@@ -27,17 +27,16 @@ let ClientBlipsService = class ClientBlipsService {
|
|
|
27
27
|
}
|
|
28
28
|
// TODO: Why is createMultiple() not calling create()?
|
|
29
29
|
createMultiple(...blips) {
|
|
30
|
-
const _blips = blips.map((blip) => (
|
|
30
|
+
const _blips = blips.map((blip) => ({ ...blip, instance: null }));
|
|
31
31
|
this._blips.push(..._blips);
|
|
32
32
|
this.refresh();
|
|
33
33
|
}
|
|
34
34
|
create(blip) {
|
|
35
|
-
var _a;
|
|
36
35
|
const _blip = (!blip.type || blip.type === 'coords'
|
|
37
36
|
? Cfx.Client.AddBlipForCoord(blip.pos[0], blip.pos[1], blip.pos[2])
|
|
38
37
|
: (blip.type === 'range'
|
|
39
38
|
? Cfx.Client.AddBlipForRadius(blip.pos[0], blip.pos[1], blip.pos[2], blip.scale || 1.0)
|
|
40
|
-
: Cfx.Client.AddBlipForEntity(
|
|
39
|
+
: Cfx.Client.AddBlipForEntity(blip.entityId ?? Cfx.Client.PlayerPedId())));
|
|
41
40
|
if (!blip.type || blip.type !== 'range') {
|
|
42
41
|
Cfx.Client.SetBlipScale(_blip, blip.scale || 1.0);
|
|
43
42
|
}
|
|
@@ -23,23 +23,22 @@ let ClientMarkersService = class ClientMarkersService {
|
|
|
23
23
|
}
|
|
24
24
|
/** Defines permanent markers. Handles draw-per-tick automatically. */
|
|
25
25
|
create(...markers) {
|
|
26
|
-
const _markers = markers.map((marker) => (
|
|
26
|
+
const _markers = markers.map((marker) => ({ ...marker, instance: null }));
|
|
27
27
|
this._markers.push(..._markers);
|
|
28
28
|
this._actionPoints.create(...markers.map((marker) => ({
|
|
29
29
|
id: `${Cfx.Client.GetCurrentResourceName()}_marker_${marker.pos[0]}_${marker.pos[1]}`,
|
|
30
30
|
pos: marker.pos,
|
|
31
31
|
range: marker.renderDistance,
|
|
32
32
|
action: async () => {
|
|
33
|
-
var _a, _b, _c, _d, _e, _f, _g;
|
|
34
33
|
if (marker.textureDict && !Cfx.Client.HasStreamedTextureDictLoaded(marker.textureDict)) {
|
|
35
34
|
Cfx.Client.RequestStreamedTextureDict(marker.textureDict, true);
|
|
36
35
|
while (!Cfx.Client.HasStreamedTextureDictLoaded(marker.textureDict)) {
|
|
37
36
|
await Delay(100);
|
|
38
37
|
}
|
|
39
38
|
}
|
|
40
|
-
Cfx.Client.DrawMarker(marker.marker, marker.pos[0], marker.pos[1], marker.pos[2], 0.0, 0.0, 0.0,
|
|
39
|
+
Cfx.Client.DrawMarker(marker.marker, marker.pos[0], marker.pos[1], marker.pos[2], 0.0, 0.0, 0.0, marker.rotation?.[0] || 0.0, marker.rotation?.[1] || 0.0, marker.rotation?.[2] || 0.0, marker.scale, marker.scale, marker.scale, marker.rgba[0], marker.rgba[1], marker.rgba[2], marker.rgba[3], false, true, 2, false, (marker.textureDict || null), (marker.textureName || null), false);
|
|
41
40
|
if (marker.underlyingCircle) {
|
|
42
|
-
Cfx.Client.DrawMarker(marker.underlyingCircle.marker, marker.pos[0], marker.pos[1], marker.pos[2] - 0.9, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, marker.underlyingCircle.scale, marker.underlyingCircle.scale, marker.underlyingCircle.scale,
|
|
41
|
+
Cfx.Client.DrawMarker(marker.underlyingCircle.marker, marker.pos[0], marker.pos[1], marker.pos[2] - 0.9, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, marker.underlyingCircle.scale, marker.underlyingCircle.scale, marker.underlyingCircle.scale, marker.underlyingCircle.rgba?.[0] || marker.rgba[0], marker.underlyingCircle.rgba?.[1] || marker.rgba[1], marker.underlyingCircle.rgba?.[2] || marker.rgba[2], marker.underlyingCircle.rgba?.[3] || marker.rgba[3], false, true, 2, false, null, null, false);
|
|
43
42
|
}
|
|
44
43
|
}
|
|
45
44
|
})));
|
|
@@ -25,8 +25,7 @@ let ClientTranslateService = class ClientTranslateService {
|
|
|
25
25
|
this._language = null;
|
|
26
26
|
}
|
|
27
27
|
instant(key) {
|
|
28
|
-
|
|
29
|
-
return ((_a = this._translations[this.language]) === null || _a === void 0 ? void 0 : _a[key]) || key;
|
|
28
|
+
return this._translations[this.language]?.[key] || key;
|
|
30
29
|
}
|
|
31
30
|
};
|
|
32
31
|
ClientTranslateService = __decorate([
|
|
@@ -34,7 +34,7 @@ let ClientWaypointsService = class ClientWaypointsService {
|
|
|
34
34
|
pos,
|
|
35
35
|
longRange: true
|
|
36
36
|
});
|
|
37
|
-
this._checkpointsService.create(2, pos[0], pos[1], pos[2], null, null, null, diameter, COLOR_MAPPINGS[color
|
|
37
|
+
this._checkpointsService.create(2, pos[0], pos[1], pos[2], null, null, null, diameter, COLOR_MAPPINGS[color ?? 0][0], COLOR_MAPPINGS[color ?? 0][1], COLOR_MAPPINGS[color ?? 0][2], 255, 0);
|
|
38
38
|
if (routeColor !== -1) {
|
|
39
39
|
Cfx.Client.SetBlipRoute(_waypoint, true);
|
|
40
40
|
if (routeColor) {
|
|
@@ -9,9 +9,8 @@ import Polyglot from 'node-polyglot';
|
|
|
9
9
|
import { Injectable } from 'injection-js';
|
|
10
10
|
let I18n = class I18n {
|
|
11
11
|
static withOptions(options = {}) {
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|| options.defaultLanguage)) !== null && _a !== void 0 ? _a : 'en-US';
|
|
12
|
+
const language = (Cfx.Client.GetResourceKvpString('armoury:language')
|
|
13
|
+
|| options.defaultLanguage) ?? 'en-US';
|
|
15
14
|
return {
|
|
16
15
|
provide: APP_INITIALIZER,
|
|
17
16
|
useValue: () => this.loadLanguage(language),
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@armoury/fivem-framework-client",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.55",
|
|
4
4
|
"description": "Client APIs for the Armoury FiveM framework",
|
|
5
5
|
"main": "dist/cjs/client/index.js",
|
|
6
6
|
"module": "dist/esm/client/index.js",
|
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
"rxjs": "^7.8.1"
|
|
28
28
|
},
|
|
29
29
|
"peerDependencies": {
|
|
30
|
-
"@armoury/fivem-framework-common": "1.0.
|
|
30
|
+
"@armoury/fivem-framework-common": "1.0.55",
|
|
31
31
|
"node-polyglot": "2.6.0"
|
|
32
32
|
},
|
|
33
33
|
"publishConfig": {
|