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.
- package/client/client.ts +73 -65
- 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
|
|
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
|
|
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(
|
|
89
|
-
function coords(
|
|
90
|
-
function coords(
|
|
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: (
|
|
106
|
-
entity
|
|
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
|
|
70
|
+
h && SetEntityHeading(entity, h)
|
|
114
71
|
},
|
|
115
72
|
|
|
116
73
|
/* */
|
|
117
|
-
playAnim: async (
|
|
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: (
|
|
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
|
|
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: (
|
|
170
|
-
|
|
171
|
-
|
|
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
|
+
}
|