lenix 1.7.6 → 1.7.8

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 (2) hide show
  1. package/client/client.ts +73 -65
  2. package/package.json +1 -1
package/client/client.ts CHANGED
@@ -1,54 +1,7 @@
1
1
  import { repeat } from '../shared/repeat.ts'
2
2
  import type { Vec3, Vec4 } from '../shared/types.ts'
3
3
 
4
- export const client: {
5
- entity: {
6
- handle: (entityNetId?: number) => number
7
- netId: (entity?: number) => number
8
- coords: {
9
- (excludeH: true, entity?: number, isAlive?: boolean): Vec3;
10
- (excludeH?: false, entity?: number, isAlive?: boolean): Vec4
11
- }
12
- teleport: (
13
- x: number,
14
- y: number,
15
- z: number,
16
- h?: number,
17
- entity?: number,
18
- clearArea?: boolean,
19
- alive?: boolean,
20
- deadDisable?: boolean,
21
- ragdol?: boolean
22
- ) => void
23
- playAnim: (
24
- dict: string,
25
- name: string,
26
- blendIn?: number,
27
- blendOut?: number,
28
- ped?: number,
29
- duration?: number,
30
- flag?: number,
31
- playbackFrom?: number,
32
- x?: boolean,
33
- y?: boolean,
34
- z?: boolean
35
- ) => Promise<void>
36
- stopAnim: (dict: string, ped?: number) => void
37
- }
38
- player: {
39
- serverId: (playerId?: number) => number
40
- id: (serverId?: number) => number
41
- storage: {
42
- set: <Storage>(
43
- ...args: {
44
- [K in keyof Storage]: [key: K, value: Storage[K]];
45
- }[keyof Storage]
46
- ) => void;
47
- get: <Storage, K extends keyof Storage>(key: K) => Storage[K];
48
- delete: <Storage>(key: keyof Storage) => void
49
- }
50
- }
51
- } = {
4
+ export const client = {
52
5
  entity: {
53
6
  /**
54
7
  * Gets the local entity handle from a network ID.
@@ -64,7 +17,7 @@ export const client: {
64
17
  * - entity(pedNetId) -> local ped handle
65
18
  * - entity() -> your own player ped handle
66
19
  */
67
- handle: (entityNetId = client.entity.netId()) => NetworkGetEntityFromNetworkId(entityNetId),
20
+ handle: (entityNetId: number) => NetworkGetEntityFromNetworkId(entityNetId),
68
21
 
69
22
  /**
70
23
  * Gets the network ID for an entity.
@@ -79,15 +32,15 @@ export const client: {
79
32
  * - netId(targetPed) -> network ID of that ped
80
33
  * - netId() -> network ID of your own player ped
81
34
  */
82
- netId: (entity = PlayerPedId()) => NetworkGetNetworkIdFromEntity(entity),
35
+ netId: (entity: number) => NetworkGetNetworkIdFromEntity(entity),
83
36
 
84
37
  /**
85
38
  * Gets entity coordinates and heading.
86
39
  */
87
40
  coords: (() => {
88
- function coords(excludeH: true, entity?: number, isAlive?: boolean): Vec3
89
- function coords(excludeH?: false, entity?: number, isAlive?: boolean): Vec4
90
- function coords(excludeH = false, entity = client.entity.handle(), isAlive = true) {
41
+ function coords(entity: number, excludeH?: true, isAlive?: boolean): Vec3
42
+ function coords(entity: number, excludeH?: false, isAlive?: boolean): Vec4
43
+ function coords(entity: number, excludeH = false, isAlive = true) {
91
44
  const entityCoords = GetEntityCoords(entity, isAlive) as Vec3
92
45
 
93
46
  if (excludeH) return entityCoords
@@ -102,22 +55,28 @@ export const client: {
102
55
  })(),
103
56
 
104
57
  /* */
105
- teleport: (x, y, z, h,
106
- entity = client.entity.handle(),
58
+ teleport: (
59
+ entity: number,
60
+ x: number,
61
+ y: number,
62
+ z: number,
63
+ h?: number,
107
64
  clearArea = false,
108
65
  alive = true,
109
66
  deadDisable = false,
110
67
  ragdol = false
111
68
  ) => {
112
69
  SetEntityCoords(entity, x, y, z, alive, deadDisable, ragdol, clearArea)
113
- SetEntityHeading(entity, h ?? client.entity.coords()[3])
70
+ h && SetEntityHeading(entity, h)
114
71
  },
115
72
 
116
73
  /* */
117
- playAnim: async (dict, name,
74
+ playAnim: async (
75
+ ped: number,
76
+ dict: string,
77
+ name: string,
118
78
  blendIn = 2.0,
119
79
  blendOut = 2.0,
120
- ped = client.entity.handle(),
121
80
  duration = -1,
122
81
  flag = 0,
123
82
  playbackFrom = 0.0,
@@ -131,7 +90,7 @@ export const client: {
131
90
  },
132
91
 
133
92
  /* */
134
- stopAnim: (dict: string, ped = client.entity.handle()) => {
93
+ stopAnim: (ped: number, dict: string) => {
135
94
  RemoveAnimDict(dict)
136
95
  ClearPedTasks(ped)
137
96
  }
@@ -149,7 +108,7 @@ export const client: {
149
108
  * - id(targetServerId) -> target player's client player ID
150
109
  * - id() -> your own client player ID
151
110
  */
152
- id: (serverId) => serverId ? GetPlayerFromServerId(serverId) : PlayerId(),
111
+ id: (serverId?: number) => serverId !== undefined ? GetPlayerFromServerId(serverId) : PlayerId(),
153
112
 
154
113
  /**
155
114
  * Gets a player's server ID from their client player ID.
@@ -163,13 +122,62 @@ export const client: {
163
122
  * - serverId(targetPlayerId) -> target player's server ID
164
123
  * - serverId() -> your own server ID
165
124
  */
166
- serverId: (playerId = client.player.id()) => GetPlayerServerId(playerId),
125
+ serverId(playerId?: number) {
126
+ return GetPlayerServerId(playerId ?? this.id())
127
+ },
128
+
129
+ /* */
130
+ entity: (playerId?: number) => playerId !== undefined ? GetPlayerPed(playerId) : PlayerPedId(),
131
+
132
+ /* */
133
+ netId(playerId?: number) {
134
+ return PedToNet(this.entity(playerId))
135
+ },
167
136
 
137
+ /* */
138
+ coords(excludeH?: true, isAlive?: boolean) {
139
+ return client.entity.coords(this.entity(), excludeH, isAlive)
140
+ },
141
+
142
+ /* */
143
+ teleport(
144
+ x: number,
145
+ y: number,
146
+ z: number,
147
+ h?: number,
148
+ clearArea?: boolean,
149
+ alive?: boolean,
150
+ deadDisable?: boolean,
151
+ ragdol?: boolean
152
+ ) {
153
+ return client.entity.teleport(this.entity(), x, y, z, h, clearArea, alive, deadDisable, ragdol)
154
+ },
155
+
156
+ /* */
157
+ /* TODO: support booleans and numbers, and maybe even json */
168
158
  storage: {
169
- set: (key, value) => SetResourceKvp(key, value),
170
- get: (key) => GetResourceKvpString(key),
171
- delete: (key) => DeleteResourceKvp(key),
159
+ set: <Storage>(
160
+ ...[key, value]: {
161
+ [K in keyof Storage]: [key: Extract<K, string>, value: Storage[K] extends string ? Storage[K] : string]
162
+ }[keyof Storage]
163
+ ) => SetResourceKvp(key, value),
164
+
165
+ get: <Storage, K extends Extract<keyof Storage, string>>(
166
+ key: K,
167
+ init?: Extract<Storage[K], string>
168
+ ): Storage[K] extends string ? Storage[K] : string => {
169
+ const get = GetResourceKvpString
170
+ if (get(key) === null) {
171
+ if (init === undefined || init === null) throw new Error(`Failed to get Storage<${key}> value, reason: The key was never assigned before and you did not provided an initiate value`)
172
+ client.player.storage.set<Storage>(key, init)
173
+ }
174
+ return get(key) as Storage[K] extends string ? Storage[K] : string
175
+ },
176
+
177
+ delete: <Storage>(
178
+ key: Extract<keyof Storage, string>
179
+ ) => DeleteResourceKvp(key),
172
180
  /* TODO: add on event */
173
181
  }
174
182
  }
175
- }
183
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lenix",
3
- "version": "1.7.6",
3
+ "version": "1.7.8",
4
4
  "description": "Typed FiveM utilities for client, server, shared, and NUI scripts",
5
5
  "author": "Lenix",
6
6
  "license": "MIT",