@nativewrappers/redm-codegen 0.0.3 → 0.0.4

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 (205) hide show
  1. package/dist/classes/AnimScene.d.ts +82 -82
  2. package/dist/classes/AnimScene.d.ts.map +1 -1
  3. package/dist/classes/AnimScene.js +124 -124
  4. package/dist/classes/BaseModel.d.ts +29 -29
  5. package/dist/classes/BaseModel.d.ts.map +1 -1
  6. package/dist/classes/BaseModel.js +43 -43
  7. package/dist/classes/BaseTask.d.ts +43 -43
  8. package/dist/classes/BaseTask.d.ts.map +1 -1
  9. package/dist/classes/BaseTask.js +53 -53
  10. package/dist/classes/Cam.d.ts +82 -82
  11. package/dist/classes/Cam.d.ts.map +1 -1
  12. package/dist/classes/Cam.js +115 -115
  13. package/dist/classes/Entity.d.ts +250 -250
  14. package/dist/classes/Entity.d.ts.map +1 -1
  15. package/dist/classes/Entity.js +350 -350
  16. package/dist/classes/Interior.d.ts +27 -27
  17. package/dist/classes/Interior.d.ts.map +1 -1
  18. package/dist/classes/Interior.js +42 -42
  19. package/dist/classes/Ped.d.ts +55 -55
  20. package/dist/classes/Ped.d.ts.map +1 -1
  21. package/dist/classes/Ped.js +76 -76
  22. package/dist/classes/PedTask.d.ts +797 -797
  23. package/dist/classes/PedTask.d.ts.map +1 -1
  24. package/dist/classes/PedTask.js +1023 -1023
  25. package/dist/classes/PersChar.d.ts +13 -13
  26. package/dist/classes/PersChar.d.ts.map +1 -1
  27. package/dist/classes/PersChar.js +27 -27
  28. package/dist/classes/Pickup.d.ts +8 -8
  29. package/dist/classes/Pickup.d.ts.map +1 -1
  30. package/dist/classes/Pickup.js +15 -15
  31. package/dist/classes/Player.d.ts +185 -185
  32. package/dist/classes/Player.d.ts.map +1 -1
  33. package/dist/classes/Player.js +251 -251
  34. package/dist/classes/Prop.d.ts +130 -130
  35. package/dist/classes/Prop.d.ts.map +1 -1
  36. package/dist/classes/Prop.js +188 -188
  37. package/dist/classes/PropSet.d.ts +17 -17
  38. package/dist/classes/PropSet.d.ts.map +1 -1
  39. package/dist/classes/PropSet.js +25 -25
  40. package/dist/classes/VehicleTask.d.ts +23 -23
  41. package/dist/classes/VehicleTask.d.ts.map +1 -1
  42. package/dist/classes/VehicleTask.js +30 -30
  43. package/dist/classes/Volume.d.ts +39 -39
  44. package/dist/classes/Volume.d.ts.map +1 -1
  45. package/dist/classes/Volume.js +54 -54
  46. package/dist/classes/Weapon.d.ts +291 -291
  47. package/dist/classes/Weapon.d.ts.map +1 -1
  48. package/dist/classes/Weapon.js +414 -414
  49. package/dist/namespaces/Animscene.d.ts +63 -63
  50. package/dist/namespaces/Animscene.d.ts.map +1 -1
  51. package/dist/namespaces/Animscene.js +83 -83
  52. package/dist/namespaces/Audio.d.ts +464 -464
  53. package/dist/namespaces/Audio.d.ts.map +1 -1
  54. package/dist/namespaces/Audio.js +650 -650
  55. package/dist/namespaces/Bounty.d.ts +57 -57
  56. package/dist/namespaces/Bounty.d.ts.map +1 -1
  57. package/dist/namespaces/Bounty.js +90 -90
  58. package/dist/namespaces/CamStatics.d.ts +426 -426
  59. package/dist/namespaces/CamStatics.d.ts.map +1 -1
  60. package/dist/namespaces/CamStatics.js +609 -609
  61. package/dist/namespaces/Collection.d.ts +81 -81
  62. package/dist/namespaces/Collection.d.ts.map +1 -1
  63. package/dist/namespaces/Collection.js +113 -113
  64. package/dist/namespaces/Compendium.d.ts +38 -38
  65. package/dist/namespaces/Compendium.d.ts.map +1 -1
  66. package/dist/namespaces/Compendium.js +52 -52
  67. package/dist/namespaces/Crashlog.d.ts +10 -10
  68. package/dist/namespaces/Crashlog.d.ts.map +1 -1
  69. package/dist/namespaces/Crashlog.js +14 -14
  70. package/dist/namespaces/Databinding.d.ts +174 -174
  71. package/dist/namespaces/Databinding.d.ts.map +1 -1
  72. package/dist/namespaces/Databinding.js +266 -266
  73. package/dist/namespaces/EntityStatics.d.ts +110 -110
  74. package/dist/namespaces/EntityStatics.d.ts.map +1 -1
  75. package/dist/namespaces/EntityStatics.js +146 -146
  76. package/dist/namespaces/Graphics.d.ts +547 -547
  77. package/dist/namespaces/Graphics.d.ts.map +1 -1
  78. package/dist/namespaces/Graphics.js +731 -731
  79. package/dist/namespaces/Hud.d.ts +395 -395
  80. package/dist/namespaces/Hud.d.ts.map +1 -1
  81. package/dist/namespaces/Hud.js +564 -564
  82. package/dist/namespaces/InteriorStatics.d.ts +40 -40
  83. package/dist/namespaces/InteriorStatics.d.ts.map +1 -1
  84. package/dist/namespaces/InteriorStatics.js +56 -56
  85. package/dist/namespaces/Inventory.d.ts +107 -107
  86. package/dist/namespaces/Inventory.d.ts.map +1 -1
  87. package/dist/namespaces/Inventory.js +149 -149
  88. package/dist/namespaces/Itemdatabase.d.ts +5 -5
  89. package/dist/namespaces/Itemdatabase.d.ts.map +1 -1
  90. package/dist/namespaces/Itemdatabase.js +7 -7
  91. package/dist/namespaces/Map.d.ts +173 -173
  92. package/dist/namespaces/Map.d.ts.map +1 -1
  93. package/dist/namespaces/Map.js +240 -240
  94. package/dist/namespaces/Minigame.d.ts +56 -56
  95. package/dist/namespaces/Minigame.d.ts.map +1 -1
  96. package/dist/namespaces/Minigame.js +80 -80
  97. package/dist/namespaces/Network.d.ts +964 -964
  98. package/dist/namespaces/Network.d.ts.map +1 -1
  99. package/dist/namespaces/Network.js +1333 -1333
  100. package/dist/namespaces/Object.d.ts +240 -240
  101. package/dist/namespaces/Object.d.ts.map +1 -1
  102. package/dist/namespaces/Object.js +337 -337
  103. package/dist/namespaces/Pad.d.ts +95 -95
  104. package/dist/namespaces/Pad.d.ts.map +1 -1
  105. package/dist/namespaces/Pad.js +127 -127
  106. package/dist/namespaces/PedStatics.d.ts +18 -18
  107. package/dist/namespaces/PedStatics.d.ts.map +1 -1
  108. package/dist/namespaces/PedStatics.js +26 -26
  109. package/dist/namespaces/Perschar.d.ts +46 -46
  110. package/dist/namespaces/Perschar.d.ts.map +1 -1
  111. package/dist/namespaces/Perschar.js +66 -66
  112. package/dist/namespaces/Physics.d.ts +207 -207
  113. package/dist/namespaces/Physics.d.ts.map +1 -1
  114. package/dist/namespaces/Physics.js +315 -315
  115. package/dist/namespaces/PlayerStatics.d.ts +68 -68
  116. package/dist/namespaces/PlayerStatics.d.ts.map +1 -1
  117. package/dist/namespaces/PlayerStatics.js +95 -95
  118. package/dist/namespaces/Population.d.ts +86 -86
  119. package/dist/namespaces/Population.d.ts.map +1 -1
  120. package/dist/namespaces/Population.js +116 -116
  121. package/dist/namespaces/Posse.d.ts +43 -43
  122. package/dist/namespaces/Posse.d.ts.map +1 -1
  123. package/dist/namespaces/Posse.js +67 -67
  124. package/dist/namespaces/Propset.d.ts +59 -59
  125. package/dist/namespaces/Propset.d.ts.map +1 -1
  126. package/dist/namespaces/Propset.js +81 -81
  127. package/dist/namespaces/Shapetest.d.ts +11 -11
  128. package/dist/namespaces/Shapetest.d.ts.map +1 -1
  129. package/dist/namespaces/Shapetest.js +13 -13
  130. package/dist/namespaces/Stats.d.ts +90 -90
  131. package/dist/namespaces/Stats.d.ts.map +1 -1
  132. package/dist/namespaces/Stats.js +127 -127
  133. package/dist/namespaces/Streaming.d.ts +127 -127
  134. package/dist/namespaces/Streaming.d.ts.map +1 -1
  135. package/dist/namespaces/Streaming.js +193 -193
  136. package/dist/namespaces/Task.d.ts +346 -346
  137. package/dist/namespaces/Task.d.ts.map +1 -1
  138. package/dist/namespaces/Task.js +525 -525
  139. package/dist/namespaces/Telemetry.d.ts +176 -176
  140. package/dist/namespaces/Telemetry.d.ts.map +1 -1
  141. package/dist/namespaces/Telemetry.js +255 -255
  142. package/dist/namespaces/VolumeStatics.d.ts +64 -64
  143. package/dist/namespaces/VolumeStatics.d.ts.map +1 -1
  144. package/dist/namespaces/VolumeStatics.js +85 -85
  145. package/dist/namespaces/Water.d.ts +27 -27
  146. package/dist/namespaces/Water.d.ts.map +1 -1
  147. package/dist/namespaces/Water.js +41 -41
  148. package/dist/namespaces/WeaponStatics.d.ts +234 -234
  149. package/dist/namespaces/WeaponStatics.d.ts.map +1 -1
  150. package/dist/namespaces/WeaponStatics.js +320 -320
  151. package/dist/namespaces/Zone.d.ts +7 -7
  152. package/dist/namespaces/Zone.d.ts.map +1 -1
  153. package/dist/namespaces/Zone.js +9 -9
  154. package/package.json +1 -1
  155. package/src/classes/AnimScene.ts +133 -133
  156. package/src/classes/BaseModel.ts +50 -50
  157. package/src/classes/BaseTask.ts +55 -55
  158. package/src/classes/Cam.ts +126 -126
  159. package/src/classes/Entity.ts +365 -365
  160. package/src/classes/Interior.ts +43 -43
  161. package/src/classes/Ped.ts +86 -86
  162. package/src/classes/PedTask.ts +2067 -2067
  163. package/src/classes/PersChar.ts +34 -34
  164. package/src/classes/Pickup.ts +16 -16
  165. package/src/classes/Player.ts +296 -296
  166. package/src/classes/Prop.ts +203 -203
  167. package/src/classes/PropSet.ts +29 -29
  168. package/src/classes/VehicleTask.ts +32 -32
  169. package/src/classes/Volume.ts +61 -61
  170. package/src/classes/Weapon.ts +427 -427
  171. package/src/namespaces/Animscene.ts +86 -86
  172. package/src/namespaces/Audio.ts +760 -760
  173. package/src/namespaces/Bounty.ts +102 -102
  174. package/src/namespaces/CamStatics.ts +631 -631
  175. package/src/namespaces/Collection.ts +114 -114
  176. package/src/namespaces/Compendium.ts +59 -59
  177. package/src/namespaces/Crashlog.ts +16 -16
  178. package/src/namespaces/Databinding.ts +282 -282
  179. package/src/namespaces/EntityStatics.ts +158 -158
  180. package/src/namespaces/Graphics.ts +1140 -1140
  181. package/src/namespaces/Hud.ts +592 -592
  182. package/src/namespaces/InteriorStatics.ts +64 -64
  183. package/src/namespaces/Inventory.ts +165 -165
  184. package/src/namespaces/Itemdatabase.ts +8 -8
  185. package/src/namespaces/Map.ts +256 -256
  186. package/src/namespaces/Minigame.ts +92 -92
  187. package/src/namespaces/Network.ts +1392 -1392
  188. package/src/namespaces/Object.ts +350 -350
  189. package/src/namespaces/Pad.ts +127 -127
  190. package/src/namespaces/PedStatics.ts +30 -30
  191. package/src/namespaces/Perschar.ts +76 -76
  192. package/src/namespaces/Physics.ts +327 -327
  193. package/src/namespaces/PlayerStatics.ts +103 -103
  194. package/src/namespaces/Population.ts +131 -131
  195. package/src/namespaces/Posse.ts +67 -67
  196. package/src/namespaces/Propset.ts +92 -92
  197. package/src/namespaces/Shapetest.ts +14 -14
  198. package/src/namespaces/Stats.ts +143 -143
  199. package/src/namespaces/Streaming.ts +226 -226
  200. package/src/namespaces/Task.ts +498 -498
  201. package/src/namespaces/Telemetry.ts +261 -261
  202. package/src/namespaces/VolumeStatics.ts +87 -87
  203. package/src/namespaces/Water.ts +47 -47
  204. package/src/namespaces/WeaponStatics.ts +325 -325
  205. package/src/namespaces/Zone.ts +10 -10
@@ -11,414 +11,268 @@ import { inv, rai, raf, ras, rav, pvi, pvf, pvv, pvii, pvfi, _h, f } from '../ty
11
11
 
12
12
  export class Audio {
13
13
  /**
14
- * @param p0
14
+ * https://github.com/femga/rdr3_discoveries/tree/master/audio/audio_flags
15
+ *
16
+ * @param flagName
17
+ * @param toggle
15
18
  */
16
- static skipToNextScriptedConversationLine(p0: string | null): void {
17
- inv<void>('0x9663FE6B7A61EB00', p0);
19
+ static setAudioFlag(flagName: string | null, toggle: boolean): void {
20
+ inv<void>('0xB9EFD5C25018725A', flagName, toggle);
18
21
  }
19
22
 
20
23
  /**
21
- * @param ped
24
+ * @param vehicle
25
+ * @param toggle
26
+ */
27
+ static setHornEnabled(vehicle: Vehicle, toggle: boolean): void {
28
+ inv<void>('0x76D683C108594D0E', vehicle.handle, toggle);
29
+ }
30
+
31
+ /**
32
+ * p1 is possibly naSpeechAudibility, naSpeechType, or naSpeechEventTypeRequestPriority
33
+ * SKIP_* - START_*
34
+ *
35
+ * @param speechEventType Refer to [enum: naSpeechEventType]
22
36
  * @param p1
37
+ * @param p2
23
38
  */
24
- static stopCurrentPlayingSpeech(ped: Ped, p1: any): void {
25
- inv<void>('0x79D2F0E66F81D90D', ped.handle, p1);
39
+ static N_0x0D7FD6A55FD63AEF(speechEventType: number, p1: number, p2: boolean): void {
40
+ inv<void>('0x0D7FD6A55FD63AEF', speechEventType, p1, p2);
26
41
  }
27
42
 
28
- static clearConversationHistory(): void {
29
- inv<void>('0x33D51F801CB16E4F');
43
+ /**
44
+ * @param p0
45
+ * @param p1
46
+ * @param p2
47
+ * @param p3
48
+ * @param p4
49
+ */
50
+ static N_0x06C5DF5EE444BC6B(p0: any, p1: any, p2: any, p3: any, p4: any): void {
51
+ inv<void>('0x06C5DF5EE444BC6B', p0, p1, p2, p3, p4);
30
52
  }
31
53
 
32
54
  /**
33
- * @param eventName
55
+ * @param p0
34
56
  * @returns
35
57
  */
36
- static prepareMusicEvent(eventName: string | null): boolean {
37
- return inv<boolean>('0x1E5185B72EF5158A', eventName, rai());
58
+ static N_0x2B9C37C01BF25EDB(p0: any): any {
59
+ return inv<number>('0x2B9C37C01BF25EDB', p0);
38
60
  }
39
61
 
40
62
  /**
41
- * Starts Audio Loop
42
- * _PLAY_SOUND_FROM_ENTITY* - _PLAY_SOUND_FRONTEND*
43
- *
44
- * @param soundId
45
- * @param soundName
46
- * @param pos
47
- * @param soundsetName
48
- * @param p6
49
- * @param p7
50
- * @param p8
63
+ * @param p0
51
64
  */
52
- static playSoundFromPositionWithId(soundId: number, soundName: string | null, pos: Vector3, soundsetName: string | null, p6: boolean, p7: number, p8: boolean): void {
53
- inv<void>('0xDCF5BA95BBF0FABA', soundId, soundName, f(pos.x), f(pos.y), f(pos.z), soundsetName, p6, p7, p8);
65
+ static N_0x64B956F4E761DF5C(p0: any): void {
66
+ inv<void>('0x64B956F4E761DF5C', p0);
54
67
  }
55
68
 
56
69
  /**
57
70
  * @param p0
58
- * @param p1
59
- * @param p2
60
71
  */
61
- static N_0x8D29FDF565DED9AE(p0: any, p1: any, p2: any): void {
62
- inv<void>('0x8D29FDF565DED9AE', p0, p1, p2);
72
+ static setAudioOnlineTransitionStage(p0: string | null): void {
73
+ inv<void>('0x9B1FC259187C97C0', p0);
63
74
  }
64
75
 
65
76
  /**
66
- * @param eventName
67
- * @returns
77
+ * @param streamId
68
78
  */
69
- static triggerMusicEventWithHash(eventName: string | number): any {
70
- return inv<number>('0x05D6195FB4D428F4', _h(eventName));
79
+ static playStreamFrontend(streamId: number): void {
80
+ inv<void>('0x58FCE43488F9F5F4', streamId);
71
81
  }
72
82
 
73
83
  /**
74
- * @param soundId
84
+ * _IS_SOUND_RUNNING(?)
85
+ *
86
+ * @param audioName
87
+ * @param audioRef
75
88
  * @returns
76
89
  */
77
- static hasSoundIdFinished(soundId: number): any {
78
- return inv<number>('0x84848E1C0FC67DBB', soundId);
90
+ static N_0x580D71DFE0088E34(audioName: string | null, audioRef: string | null): boolean {
91
+ return inv<boolean>('0x580D71DFE0088E34', audioName, audioRef, rai());
79
92
  }
80
93
 
81
94
  /**
82
- * @param scene
95
+ * nullsub, doesn't do anything
96
+ *
97
+ * @param p0
83
98
  */
84
- static stopAudioScene(scene: string | null): void {
85
- inv<void>('0xDFE8422B3B94E688', scene);
99
+ static registerScriptWithAudio(p0: boolean): void {
100
+ inv<void>('0xC6ED9D5092438D91', p0);
86
101
  }
87
102
 
88
103
  /**
89
104
  * @param p0
90
105
  * @param p1
91
106
  */
92
- static N_0xA6847BBA4FCDD13F(p0: any, p1: any): void {
93
- inv<void>('0xA6847BBA4FCDD13F', p0, p1);
107
+ static N_0x35B8C070E0C16E2F(p0: any, p1: any): void {
108
+ inv<void>('0x35B8C070E0C16E2F', p0, p1);
94
109
  }
95
110
 
96
- /**
97
- * @param p0
98
- * @returns
99
- */
100
- static isScriptedSpeechPlaying(p0: any): boolean {
101
- return inv<boolean>('0xCC9AA18DCC7084F4', p0, rai());
111
+ static N_0x138ADB94F8B90616(): void {
112
+ inv<void>('0x138ADB94F8B90616');
102
113
  }
103
114
 
104
115
  /**
105
- * @param ped
116
+ * @param p0
106
117
  * @param p1
107
- * @param hash
118
+ * @param p2
108
119
  */
109
- static useFootstepScriptSweeteners(ped: Ped, p1: boolean, hash: string | number): void {
110
- inv<void>('0xBF4DC1784BE94DFA', ped.handle, p1, _h(hash));
120
+ static N_0x380A2E353AD30917(p0: any, p1: any, p2: any): void {
121
+ inv<void>('0x380A2E353AD30917', p0, p1, p2);
111
122
  }
112
123
 
113
124
  /**
114
- * whistleConfig: Ped.WhistlePitch (0.0 - 1.0), Ped.WhistleClarity (0.0 - 1.0), Ped.WhistleShape (0.0 - 10.0)
115
- *
116
- * @param ped
117
- * @param whistleConfig
118
- * @param value
125
+ * @param convoRoot
126
+ * @returns
119
127
  */
120
- static setWhistleConfigForPed(ped: Ped, whistleConfig: string | null, value: number): void {
121
- inv<void>('0x9963681A8BC69BF3', ped.handle, whistleConfig, f(value));
128
+ static createNewScriptedConversation(convoRoot: string | null): any {
129
+ return inv<number>('0xD2C91A0B572AAE56', convoRoot);
122
130
  }
123
131
 
124
132
  /**
125
- * @param ped
133
+ * @param p0
126
134
  * @param p1
127
135
  * @param p2
136
+ * @returns
128
137
  */
129
- static playAnimalVocalizationPheromoneVialResponse(ped: Ped, p1: string | number, p2: boolean): void {
130
- inv<void>('0x0E53530D9B2DB01D', ped.handle, _h(p1), p2);
138
+ static N_0x7678FE0455ED1145(p0: any, p1: any, p2: any): any {
139
+ return inv<number>('0x7678FE0455ED1145', p0, p1, p2);
131
140
  }
132
141
 
133
142
  /**
134
- * Only used in R* SP Scripts
135
- * Old Name: _UPDATE_SOUND_POSITION
136
- *
137
- * @param soundId
138
- * @param pos
143
+ * @param entity
144
+ * @param groupName
145
+ * @param p2
139
146
  */
140
- static updateSoundCoord(soundId: number, pos: Vector3): void {
141
- inv<void>('0x0286617C8FC50A53', soundId, f(pos.x), f(pos.y), f(pos.z));
147
+ static addEntityToAudioMixGroup(entity: Entity, groupName: string | null, p2: number): void {
148
+ inv<void>('0x153973AB99FE8980', entity.handle, groupName, f(p2));
142
149
  }
143
150
 
144
151
  /**
145
- * @param ambientZone
152
+ * @param ped
146
153
  * @param p1
147
- * @param p2
148
154
  */
149
- static setAmbientZoneStatePersistent(ambientZone: string | null, p1: boolean, p2: boolean): void {
150
- inv<void>('0x1D6650420CEC9D3B', ambientZone, p1, p2);
155
+ static stopCurrentPlayingAmbientSpeech(ped: Ped, p1: any): void {
156
+ inv<void>('0xB8BEC0CA6F0EDB0F', ped.handle, p1);
151
157
  }
152
158
 
153
159
  /**
154
- * speechEventType: https://github.com/Halen84/RDR3-Native-Flags-And-Enums/tree/main/naSpeechEventType
155
- * SKIP_* - START_*
156
- *
157
- * @param speechEventType
160
+ * @param p0
161
+ * @param ped
162
+ * @param p2
163
+ * @returns
158
164
  */
159
- static N_0x660A8F876DF1D4F8(speechEventType: number): void {
160
- inv<void>('0x660A8F876DF1D4F8', speechEventType);
165
+ static isPedInCurrentConversation(p0: string | null, ped: Ped, p2: any): boolean {
166
+ return inv<boolean>('0x049E937F18F4020C', p0, ped.handle, p2, rai());
161
167
  }
162
168
 
163
169
  /**
164
170
  * @param p0
165
- * @param p1
171
+ * @returns
166
172
  */
167
- static N_0x139A4B9DF2D26CBF(p0: any, p1: any): void {
168
- inv<void>('0x139A4B9DF2D26CBF', p0, p1);
173
+ static isScriptedConversionOngoing(p0: string | null): any {
174
+ return inv<number>('0xF01C570E0A0A1E67', p0);
169
175
  }
170
176
 
171
177
  /**
172
- * @param pos
173
- * @param streamId
178
+ * @param soundsetName
174
179
  */
175
- static playStreamFromPosition(pos: Vector3, streamId: number): void {
176
- inv<void>('0x21442F412E8DE56B', f(pos.x), f(pos.y), f(pos.z), streamId);
180
+ static releaseSoundset(soundsetName: string | null): void {
181
+ inv<void>('0x531A78D6BF27014B', soundsetName);
177
182
  }
178
183
 
179
184
  /**
180
- * @param entity
181
185
  * @returns
182
186
  */
183
- static getEntityAudioMixGroup(entity: Entity): number {
184
- return (inv<number>('0x8B25A18E390F75BF', entity.handle, rai())) & 0xFFFFFFFF;
187
+ static getSoundId(): number {
188
+ return inv<number>('0x430386FE9BF80B45', rai());
185
189
  }
186
190
 
187
191
  /**
188
- * @param convoRoot
189
- * @returns
192
+ * @param listeningToPed
193
+ * @param ped
194
+ * @param listenerName
190
195
  */
191
- static isScriptedConversationCreated(convoRoot: string | null): any {
192
- return inv<number>('0xD89504D9D7D5057D', convoRoot);
196
+ static N_0xA2323A2EAE32A290(listeningToPed: Ped, ped: Ped, listenerName: string | null): void {
197
+ inv<void>('0xA2323A2EAE32A290', listeningToPed.handle, ped.handle, listenerName);
193
198
  }
194
199
 
195
- static N_0xA2B851605748AD0E(): void {
196
- inv<void>('0xA2B851605748AD0E');
200
+ /**
201
+ * @param p0
202
+ * @returns
203
+ */
204
+ static N_0xF0EE69F500952FA5(p0: any): any {
205
+ return inv<number>('0xF0EE69F500952FA5', p0);
197
206
  }
198
207
 
199
208
  /**
200
- * @param convoRoot
209
+ * Old name: AUDIO_IS_SCRIPTED_MUSIC_PLAYING
210
+ *
201
211
  * @returns
202
212
  */
203
- static N_0x0CB3D1919E8D7CBA(convoRoot: string | null): boolean {
204
- return inv<boolean>('0x0CB3D1919E8D7CBA', convoRoot, rai());
213
+ static isMusicPlaying(): boolean {
214
+ return inv<boolean>('0x845FFC3A4FEEFA3E', rai());
205
215
  }
206
216
 
207
217
  /**
208
- * Name: ROPE_SETTINGS_DEFAULT
218
+ * Used in Script Function NET_CAMP_CLIENT_UPDATE_PED_ROLE_STATE_SHOP: hash exists! Playing hash
209
219
  *
210
- * @param ropeId
211
- * @param name
220
+ * @param ped
221
+ * @param p1
212
222
  */
213
- static N_0xF092B6030D6FD49C(ropeId: number, name: string | null): void {
214
- inv<void>('0xF092B6030D6FD49C', ropeId, name);
223
+ static N_0xB93A769B8B726950(ped: Ped, p1: string | number): void {
224
+ inv<void>('0xB93A769B8B726950', ped.handle, _h(p1));
225
+ }
226
+
227
+ /**
228
+ * @param variableName
229
+ * @param variableValue
230
+ * @param audioName
231
+ * @param audioRef
232
+ */
233
+ static setVariableOnSoundWithName(variableName: string | null, variableValue: number, audioName: string | null, audioRef: string | null): void {
234
+ inv<void>('0x9821B68CD3E05F2B', variableName, f(variableValue), audioName, audioRef);
215
235
  }
216
236
 
217
237
  /**
218
238
  * @param p0
219
- * @param currentScriptedConvoLine
220
- * @returns
239
+ * @param p1
221
240
  */
222
- static N_0x254B0241E964B450(p0: string | null, currentScriptedConvoLine: number): Ped | null {
223
- return createFromHandle<Ped>('Ped', inv<number>('0x254B0241E964B450', p0, currentScriptedConvoLine, rai()));
241
+ static N_0xD733528B6C35647A(p0: any, p1: any): void {
242
+ inv<void>('0xD733528B6C35647A', p0, p1);
224
243
  }
225
244
 
226
245
  /**
227
- * @param ped
228
- * @param vocalizationName
229
- * @param p2
246
+ * @param ambientZone
247
+ * @param p1
230
248
  */
231
- static playAnimalVocalization(ped: Ped, vocalizationName: string | null, p2: boolean): void {
232
- inv<void>('0xEE066C7006C49C0A', ped.handle, vocalizationName, p2);
249
+ static clearAmbientZoneListState(ambientZone: string | null, p1: boolean): void {
250
+ inv<void>('0x120C48C614909FA4', ambientZone, p1);
233
251
  }
234
252
 
235
253
  /**
236
254
  * @param p0
237
255
  * @param p1
238
256
  */
239
- static setPedInteriorWallaDensity(p0: number, p1: number): void {
240
- inv<void>('0x8BF907833BE275DE', f(p0), f(p1));
257
+ static N_0xE891504B2F0E2DBA(p0: any, p1: any): void {
258
+ inv<void>('0xE891504B2F0E2DBA', p0, p1);
241
259
  }
242
260
 
243
261
  /**
244
- * @param p0
262
+ * @param ped
245
263
  * @param p1
264
+ * @returns
246
265
  */
247
- static N_0xD47D47EFBF103FB8(p0: any, p1: any): void {
248
- inv<void>('0xD47D47EFBF103FB8', p0, p1);
266
+ static N_0xDF947FE0D551684E(ped: Ped, p1: string | null): boolean {
267
+ return inv<boolean>('0xDF947FE0D551684E', ped.handle, p1, rai());
249
268
  }
250
269
 
251
270
  /**
252
- * @param p0
271
+ * @param entity
253
272
  * @param p1
254
273
  */
255
- static N_0x5BC885EBD75FAA7D(p0: any, p1: any): void {
256
- inv<void>('0x5BC885EBD75FAA7D', p0, p1);
257
- }
258
-
259
- /**
260
- * Valid pain IDs: 0..12 these names are not official, but here is a list of the IDs:
261
- * 1 burning,
262
- * 2 drowning,
263
- * 3 coughing,
264
- * 4 nothing,
265
- * 5 nothing,
266
- * 6 coughing_2,
267
- * 7 nothing,
268
- * 8 nothing,
269
- * 9 hurtingSick?,
270
- * 10 hurtingFall?,
271
- * 11 nothing,
272
- * 12 choking
273
- *
274
- * @param ped
275
- * @param painId
276
- * @param p2
277
- * @param p3
278
- * @param isNetwork
279
- */
280
- static playPain(ped: Ped, painId: number, p2: number, p3: boolean, isNetwork: boolean): void {
281
- inv<void>('0xBC9AE166038A5CEC', ped.handle, painId, f(p2), p3, isNetwork);
282
- }
283
-
284
- /**
285
- * *STOP_AUDIO**
286
- *
287
- * @param p0
288
- */
289
- static N_0x6AB944DF68B512D3(p0: any): void {
290
- inv<void>('0x6AB944DF68B512D3', p0);
291
- }
292
-
293
- static N_0xDAD6CD07CAA4F382(): void {
294
- inv<void>('0xDAD6CD07CAA4F382');
295
- }
296
-
297
- /**
298
- * @param ped
299
- * @param p1
300
- */
301
- static stopCurrentPlayingAmbientSpeech(ped: Ped, p1: any): void {
302
- inv<void>('0xB8BEC0CA6F0EDB0F', ped.handle, p1);
303
- }
304
-
305
- /**
306
- * @param p0
307
- * @param ped
308
- * @param p2
309
- * @returns
310
- */
311
- static isPedInCurrentConversation(p0: string | null, ped: Ped, p2: any): boolean {
312
- return inv<boolean>('0x049E937F18F4020C', p0, ped.handle, p2, rai());
313
- }
314
-
315
- /**
316
- * @param p0
317
- * @returns
318
- */
319
- static isScriptedConversionOngoing(p0: string | null): any {
320
- return inv<number>('0xF01C570E0A0A1E67', p0);
321
- }
322
-
323
- /**
324
- * @param soundsetName
325
- */
326
- static releaseSoundset(soundsetName: string | null): void {
327
- inv<void>('0x531A78D6BF27014B', soundsetName);
328
- }
329
-
330
- /**
331
- * @returns
332
- */
333
- static getSoundId(): number {
334
- return inv<number>('0x430386FE9BF80B45', rai());
335
- }
336
-
337
- /**
338
- * @param listeningToPed
339
- * @param ped
340
- * @param listenerName
341
- */
342
- static N_0xA2323A2EAE32A290(listeningToPed: Ped, ped: Ped, listenerName: string | null): void {
343
- inv<void>('0xA2323A2EAE32A290', listeningToPed.handle, ped.handle, listenerName);
344
- }
345
-
346
- /**
347
- * @param p0
348
- * @returns
349
- */
350
- static N_0xF0EE69F500952FA5(p0: any): any {
351
- return inv<number>('0xF0EE69F500952FA5', p0);
352
- }
353
-
354
- /**
355
- * Old name: AUDIO_IS_SCRIPTED_MUSIC_PLAYING
356
- *
357
- * @returns
358
- */
359
- static isMusicPlaying(): boolean {
360
- return inv<boolean>('0x845FFC3A4FEEFA3E', rai());
361
- }
362
-
363
- /**
364
- * Used in Script Function NET_CAMP_CLIENT_UPDATE_PED_ROLE_STATE_SHOP: hash exists! Playing hash
365
- *
366
- * @param ped
367
- * @param p1
368
- */
369
- static N_0xB93A769B8B726950(ped: Ped, p1: string | number): void {
370
- inv<void>('0xB93A769B8B726950', ped.handle, _h(p1));
371
- }
372
-
373
- /**
374
- * @param variableName
375
- * @param variableValue
376
- * @param audioName
377
- * @param audioRef
378
- */
379
- static setVariableOnSoundWithName(variableName: string | null, variableValue: number, audioName: string | null, audioRef: string | null): void {
380
- inv<void>('0x9821B68CD3E05F2B', variableName, f(variableValue), audioName, audioRef);
381
- }
382
-
383
- /**
384
- * @param p0
385
- * @param p1
386
- */
387
- static N_0xD733528B6C35647A(p0: any, p1: any): void {
388
- inv<void>('0xD733528B6C35647A', p0, p1);
389
- }
390
-
391
- /**
392
- * @param ambientZone
393
- * @param p1
394
- */
395
- static clearAmbientZoneListState(ambientZone: string | null, p1: boolean): void {
396
- inv<void>('0x120C48C614909FA4', ambientZone, p1);
397
- }
398
-
399
- /**
400
- * @param p0
401
- * @param p1
402
- */
403
- static N_0xE891504B2F0E2DBA(p0: any, p1: any): void {
404
- inv<void>('0xE891504B2F0E2DBA', p0, p1);
405
- }
406
-
407
- /**
408
- * @param ped
409
- * @param p1
410
- * @returns
411
- */
412
- static N_0xDF947FE0D551684E(ped: Ped, p1: string | null): boolean {
413
- return inv<boolean>('0xDF947FE0D551684E', ped.handle, p1, rai());
414
- }
415
-
416
- /**
417
- * @param entity
418
- * @param p1
419
- */
420
- static N_0xE9694B2D6CB87B06(entity: Entity, p1: any): void {
421
- inv<void>('0xE9694B2D6CB87B06', entity.handle, p1);
274
+ static N_0xE9694B2D6CB87B06(entity: Entity, p1: any): void {
275
+ inv<void>('0xE9694B2D6CB87B06', entity.handle, p1);
422
276
  }
423
277
 
424
278
  /**
@@ -562,415 +416,305 @@ export class Audio {
562
416
  }
563
417
 
564
418
  /**
565
- * nullsub, doesn't do anything
419
+ * Only used in R* SP Script cv_mus_shared
566
420
  *
567
- * @param active
421
+ * @param convoRoot
422
+ * @param animScene
423
+ * @returns
568
424
  */
569
- static setGpsActive(active: boolean): void {
570
- inv<void>('0x3BD3F52BA9B1E4E8', active);
425
+ static N_0x79F9C57B8D0DFE90(convoRoot: string | null, animScene: AnimScene): boolean {
426
+ return inv<boolean>('0x79F9C57B8D0DFE90', convoRoot, animScene.handle, rai());
571
427
  }
572
428
 
573
- /**
574
- * Old name: _PLAY_SOUND_FROM_POSITION
575
- *
576
- * @param SoundName
577
- * @param pos
578
- * @param SetName
579
- * @param bOverNetwork
580
- * @param nNetworkRange
581
- * @param isExteriorLoc
582
- * @param p8
583
- */
584
- static playSoundFromCoord(SoundName: string | null, pos: Vector3, SetName: string | null, bOverNetwork: boolean, nNetworkRange: number, isExteriorLoc: boolean, p8: number): void {
585
- inv<void>('0xCCE219C922737BFA', SoundName, f(pos.x), f(pos.y), f(pos.z), SetName, bOverNetwork, nNetworkRange, isExteriorLoc, p8);
429
+ static forcePedPanicWalla(): void {
430
+ inv<void>('0x062D5EAD4DA2FA6A');
586
431
  }
587
432
 
588
433
  /**
589
- * @param streamName
590
- * @param soundSet
591
- * @returns
434
+ * @param p0
435
+ * @param p1
436
+ * @param p2
592
437
  */
593
- static loadStream(streamName: string | null, soundSet: string | null): boolean {
594
- return inv<boolean>('0x1F1F957154EC51DF', streamName, soundSet, rai());
438
+ static N_0xF64034D533CE8AAC(p0: any, p1: any, p2: any): void {
439
+ inv<void>('0xF64034D533CE8AAC', p0, p1, p2);
595
440
  }
596
441
 
597
442
  /**
598
443
  * @param p0
599
444
  * @param p1
445
+ * @param p2
446
+ * @param p3
447
+ * @param p4
448
+ * @param p5
600
449
  */
601
- static N_0x9EB779765E68C52E(p0: any, p1: any): void {
602
- inv<void>('0x9EB779765E68C52E', p0, p1);
450
+ static N_0x6DA15746D5CC1A92(p0: any, p1: any, p2: any, p3: any, p4: any, p5: any): void {
451
+ inv<void>('0x6DA15746D5CC1A92', p0, p1, p2, p3, p4, p5);
603
452
  }
604
453
 
605
- static N_0x43037ABFE214A851(): void {
606
- inv<void>('0x43037ABFE214A851');
454
+ /**
455
+ * Params: p5 seems to be always 0
456
+ *
457
+ * @param soundId
458
+ * @param soundName
459
+ * @param entity
460
+ * @param soundsetName
461
+ * @param p4
462
+ * @param p5
463
+ */
464
+ static playSoundFromEntityWithSet(soundId: number, soundName: string | null, entity: Entity, soundsetName: string | null, p4: boolean, p5: any): void {
465
+ inv<void>('0xF1C5310FEAA36B48', soundId, soundName, entity.handle, soundsetName, p4, p5);
607
466
  }
608
467
 
609
468
  /**
610
- * @returns
469
+ * @param p0
470
+ * @param p1
471
+ * @param p2
472
+ * @param p3
473
+ * @param p4
474
+ * @param p5
475
+ * @param p6
476
+ * @param p7
611
477
  */
612
- static N_0xA6A3A3F96B8B030E(): any {
613
- return inv<number>('0xA6A3A3F96B8B030E');
478
+ static N_0x5AE0CB5F35F034FD(p0: any, p1: any, p2: any, p3: any, p4: any, p5: any, p6: any, p7: any): void {
479
+ inv<void>('0x5AE0CB5F35F034FD', p0, p1, p2, p3, p4, p5, p6, p7);
614
480
  }
615
481
 
616
482
  /**
617
483
  * @param p0
484
+ * @param currentScriptedConvoLine
618
485
  * @returns
619
486
  */
620
- static isScriptedConversationPlaying(p0: string | null): any {
621
- return inv<number>('0x1ECC76792F661CF5', p0);
487
+ static N_0x935DBD96D4A3DA1F(p0: string | null, currentScriptedConvoLine: number): number {
488
+ return inv<number>('0x935DBD96D4A3DA1F', p0, currentScriptedConvoLine, rai());
622
489
  }
623
490
 
624
491
  /**
625
492
  * @param p0
626
- * @param p1
627
493
  */
628
- static setPortalSettingsOverride(p0: string | null, p1: string | null): void {
629
- inv<void>('0x044DBAD7A7FA2BE5', p0, p1);
494
+ static N_0xDC93F0948F2C28F4(p0: any): void {
495
+ inv<void>('0xDC93F0948F2C28F4', p0);
630
496
  }
631
497
 
632
498
  /**
499
+ * p1: Entity.Relationship
500
+ * p2: Player, Enemy, Teammate, Neutral
501
+ *
633
502
  * @param ped
634
- * @param disabled
635
- * @returns
503
+ * @param p1
504
+ * @param p2
636
505
  */
637
- static setIsScriptedSpeechDisabled(ped: Ped, disabled: boolean): any {
638
- return inv<number>('0xB2DE3AEBE31150E2', ped.handle, disabled);
506
+ static setSoundRelationshipOnPed(ped: Ped, p1: string | null, p2: string | null): void {
507
+ inv<void>('0x2E31ACA7477CF00F', ped.handle, p1, p2);
639
508
  }
640
509
 
641
510
  /**
642
- * @param p0
643
- * @param p1
644
- * @param p2
645
- * @param p3
646
- * @returns
647
- */
648
- static N_0x9D6DEC9791A4E501(p0: any, p1: any, p2: any, p3: any): any {
649
- return inv<number>('0x9D6DEC9791A4E501', p0, p1, p2, p3);
650
- }
651
-
652
- /**
653
- * Old Name: _STOP_SOUND_WITH_ID
654
- *
655
- * @param soundId
511
+ * @param audioName
512
+ * @param audioRef
656
513
  */
657
- static stopSound(soundId: number): void {
658
- inv<void>('0x3210BCB36AF7621B', soundId);
514
+ static stopSoundWithName(audioName: string | null, audioRef: string | null): void {
515
+ inv<void>('0x0F2A2175734926D8', audioName, audioRef);
659
516
  }
660
517
 
661
518
  /**
662
519
  * @param p0
520
+ * @param p1
663
521
  * @returns
664
522
  */
665
- static N_0xF336E9F989B3518F(p0: string | null): number {
666
- return inv<number>('0xF336E9F989B3518F', p0, rai());
523
+ static N_0xC369E2234E34A0CA(p0: any, p1: any): any {
524
+ return inv<number>('0xC369E2234E34A0CA', p0, p1);
667
525
  }
668
526
 
669
527
  /**
670
528
  * @param p0
671
529
  * @param p1
672
- */
673
- static N_0xFCDEC42B1C78B7F8(p0: any, p1: any): void {
674
- inv<void>('0xFCDEC42B1C78B7F8', p0, p1);
675
- }
676
-
677
- /**
678
- * @param ped
679
- */
680
- static N_0x8E901B65206C2D3E(ped: Ped): void {
681
- inv<void>('0x8E901B65206C2D3E', ped.handle);
682
- }
683
-
684
- /**
685
- * @param p0
686
- */
687
- static N_0x7E176C676F8652A9(p0: any): void {
688
- inv<void>('0x7E176C676F8652A9', p0);
689
- }
690
-
691
- /**
692
- * item: FUSE, value returned from 0x2E1CDC1FF3B8473E
693
- * soundSet: HUD_SHOP_SOUNDSET, COMPANIONS_ROBBERIES_SOUNDSET
694
- *
695
- * @param item
696
- * @param soundSet
697
530
  * @returns
698
531
  */
699
- static isScriptedAudioCustom(item: string | number, soundSet: string | number): any {
700
- return inv<number>('0x6DF942C4179BE5AB', _h(item), _h(soundSet));
532
+ static N_0x72E4D1C4639BC465(p0: Entity, p1: any): any {
533
+ return inv<number>('0x72E4D1C4639BC465', p0.handle, p1);
701
534
  }
702
535
 
703
536
  /**
704
- * @param p0
537
+ * @param audioName
538
+ * @param soundsetName
705
539
  * @returns
706
540
  */
707
- static N_0xD05A460328560477(p0: any): any {
708
- return inv<number>('0xD05A460328560477', p0);
541
+ static hasSoundAudioNameFinished(audioName: string | null, soundsetName: string | null): any {
542
+ return inv<number>('0x714A0EA7DE1167BE', audioName, soundsetName);
709
543
  }
710
544
 
711
545
  /**
712
- * Checks if the ped can play the speech or has the speech file, last parameter is usually false.
546
+ * *UNLOAD*[A-C]* - USE_*
713
547
  *
714
- * @param ped
715
- * @param speechName
716
- * @param unk
717
- * @returns
718
- */
719
- static doesContextExistForThisPed(ped: Ped, speechName: string | null, unk: boolean): boolean {
720
- return inv<boolean>('0x49B99BF3FDA89A7A', ped.handle, speechName, unk, rai());
721
- }
722
-
723
- /**
724
- * @returns
548
+ * @param speechContext
725
549
  */
726
- static N_0x2B101AD9F651243A(): any {
727
- return inv<number>('0x2B101AD9F651243A');
550
+ static unloadSpeechContext(speechContext: string | null): void {
551
+ inv<void>('0x87E6302FC61208CC', speechContext);
728
552
  }
729
553
 
730
554
  /**
731
555
  * @param p0
732
- * @returns
733
- */
734
- static N_0x131EC9247E7A2903(p0: any): any {
735
- return inv<number>('0x131EC9247E7A2903', p0);
736
- }
737
-
738
- /**
739
- * @param ped
740
- * @param name
741
- */
742
- static setAmbientVoiceName(ped: Ped, name: string | null): void {
743
- inv<void>('0x6C8065A3B780185B', ped.handle, name);
744
- }
745
-
746
- /**
747
- * @param play
556
+ * @param p1
748
557
  */
749
- static playEndCreditsMusic(play: boolean): void {
750
- inv<void>('0xCD536C4D33DCC900', play);
558
+ static N_0x3A3BE6B920525237(p0: any, p1: any): void {
559
+ inv<void>('0x3A3BE6B920525237', p0, p1);
751
560
  }
752
561
 
753
562
  /**
754
- * @param eventName
563
+ * @param p0
755
564
  * @returns
756
565
  */
757
- static cancelMusicEvent(eventName: string | null): boolean {
758
- return inv<boolean>('0x5B17A90291133DA5', eventName, rai());
566
+ static N_0xC68C02DE259C927C(p0: any): any {
567
+ return inv<number>('0xC68C02DE259C927C', p0);
759
568
  }
760
569
 
761
570
  /**
762
571
  * @param ped
763
- * @returns
572
+ * @param toggle
764
573
  */
765
- static isAmbientSpeechDisabled(ped: Ped): boolean {
766
- return inv<boolean>('0x932C2D096A2C3FFF', ped.handle, rai());
574
+ static disablePedPainAudio(ped: Ped, toggle: boolean): void {
575
+ inv<void>('0xA9A41C1E940FB0E8', ped.handle, toggle);
767
576
  }
768
577
 
769
578
  /**
770
- * Not implemented.
579
+ * Old name: _FORCE_VEHICLE_ENGINE_AUDIO
771
580
  *
772
- * @param animal
773
- * @param mood
774
- */
775
- static setAnimalMood(animal: Ped, mood: number): void {
776
- inv<void>('0xCC97B29285B1DC3B', animal.handle, mood);
777
- }
778
-
779
- /**
780
- * @param convoRoot
781
- * @param p1
782
- * @param p2
783
- * @param clone
784
- */
785
- static startScriptConversation(convoRoot: string | null, p1: boolean, p2: boolean, clone: boolean): void {
786
- inv<void>('0x6B17C62C9635D2DC', convoRoot, p1, p2, clone);
787
- }
788
-
789
- /**
790
- * @param p0
791
- */
792
- static N_0xEB4D592620B8C209(p0: any): void {
793
- inv<void>('0xEB4D592620B8C209', p0);
794
- }
795
-
796
- static releaseScriptAudioBank(): void {
797
- inv<void>('0x7A2D8AD0A9EB9C3F');
798
- }
799
-
800
- static N_0x4BE3EC91C01F0FE8(): void {
801
- inv<void>('0x4BE3EC91C01F0FE8');
802
- }
803
-
804
- /**
805
- * @param zoneName
806
- * @param isEnabled
807
- * @param p2
808
- */
809
- static setAmbientZoneState(zoneName: string | null, isEnabled: boolean, p2: boolean): void {
810
- inv<void>('0xBDA07E5950085E46', zoneName, isEnabled, p2);
811
- }
812
-
813
- /**
581
+ * @param vehicle
814
582
  * @param audioName
815
- * @param entity
816
- * @param audioRef
817
- * @param isNetwork
818
- * @param p4
819
- * @param p5
820
- */
821
- static playSoundFromEntity(audioName: string | null, entity: Entity, audioRef: string | null, isNetwork: boolean, p4: any, p5: any): void {
822
- inv<void>('0x6FB1DA3CA9DA7D90', audioName, entity.handle, audioRef, isNetwork, p4, p5);
823
- }
824
-
825
- /**
826
- * @param ped
827
- * @returns
828
583
  */
829
- static isAmbientSpeechPlaying(ped: Ped): boolean {
830
- return inv<boolean>('0x9072C8B49907BFAD', ped.handle, rai());
831
- }
832
-
833
- /**
834
- * @param ambientZone
835
- * @param pos
836
- * @param heading
837
- */
838
- static setAmbientZonePosition(ambientZone: string | null, pos: Vector3, heading: number): void {
839
- inv<void>('0x3743CE6948194349', ambientZone, f(pos.x), f(pos.y), f(pos.z), f(heading));
584
+ static forceUseAudioGameObject(vehicle: Vehicle, audioName: string | null): void {
585
+ inv<void>('0x4F0C413926060B38', vehicle.handle, audioName);
840
586
  }
841
587
 
842
588
  /**
589
+ * @param soundName
843
590
  * @param entity
591
+ * @param soundsetName
592
+ * @param soundId
844
593
  * @returns
845
594
  */
846
- static N_0x2FFF4A78384AFFDF(entity: Entity): any {
847
- return inv<number>('0x2FFF4A78384AFFDF', entity.handle);
848
- }
849
-
850
- /**
851
- * @param emitterName
852
- * @param toggle
853
- */
854
- static setStaticEmitterEnabled(emitterName: string | null, toggle: boolean): void {
855
- inv<void>('0x399D2D3B33F1B8EB', emitterName, toggle);
856
- }
857
-
858
- /**
859
- * @param ped
860
- * @param toggle
861
- */
862
- static setPedIsDrunk(ped: Ped, toggle: boolean): void {
863
- inv<void>('0x95D2D383D5396B8A', ped.handle, toggle);
595
+ static prepareSoundWithEntity(soundName: string | null, entity: Entity, soundsetName: string | null, soundId: number): any {
596
+ return inv<number>('0x4AD019591E94C064', soundName, entity.handle, soundsetName, soundId);
864
597
  }
865
598
 
866
599
  /**
867
600
  * @param p0
868
601
  * @param p1
869
602
  * @param p2
870
- * @param p3
871
- * @param p4
872
603
  */
873
- static N_0x839C9F124BE74D94(p0: any, p1: any, p2: any, p3: any, p4: any): void {
874
- inv<void>('0x839C9F124BE74D94', p0, p1, p2, p3, p4);
604
+ static stopAllScriptedConversions(p0: boolean, p1: boolean, p2: boolean): void {
605
+ inv<void>('0x36559148B78853B3', p0, p1, p2);
875
606
  }
876
607
 
877
608
  /**
878
- * @param ambientZone
609
+ * @param entity
879
610
  * @param p1
880
- * @param p2
881
611
  */
882
- static setAmbientZoneListStatePersistent(ambientZone: string | null, p1: boolean, p2: boolean): void {
883
- inv<void>('0xF3638DAE8C4045E1', ambientZone, p1, p2);
612
+ static removeEntityFromAudioMixGroup(entity: Entity, p1: number): void {
613
+ inv<void>('0x18EB48CFC41F2EA0', entity.handle, f(p1));
884
614
  }
885
615
 
886
616
  /**
887
- * @param p0
888
- * @param p1
889
- * @param p2
890
- * @param p3
891
- * @param p4
617
+ * *AUDIO_IS** - _AUDIO_TRIGGER*
892
618
  */
893
- static pauseScriptedConversation(p0: string | null, p1: boolean, p2: boolean, p3: boolean, p4: boolean): void {
894
- inv<void>('0x8530AD776CD72B12', p0, p1, p2, p3, p4);
619
+ static N_0x7455CD705F7E933E(): void {
620
+ inv<void>('0x7455CD705F7E933E');
895
621
  }
896
622
 
897
623
  /**
898
- * @param p0
624
+ * @param soundId
899
625
  */
900
- static N_0x6652B0C8F3D414D0(p0: any): void {
901
- inv<void>('0x6652B0C8F3D414D0', p0);
626
+ static releaseSoundId(soundId: number): void {
627
+ inv<void>('0x353FC880830B88FA', soundId);
902
628
  }
903
629
 
904
630
  /**
631
+ * Old Name: _SET_VARIABLE_ON_SOUND_WITH_ID
632
+ *
905
633
  * @param soundId
906
- * @param name
907
- * @param soundSet
908
- * @param p3
634
+ * @param variableName
635
+ * @param variableValue
909
636
  */
910
- static playSoundFrontendWithSoundId(soundId: number, name: string | null, soundSet: string | null, p3: boolean): void {
911
- inv<void>('0xCE5D0FFE83939AF1', soundId, name, soundSet, p3);
637
+ static setVariableOnSound(soundId: number, variableName: string | null, variableValue: number): void {
638
+ inv<void>('0x503703EC1781B7D6', soundId, variableName, f(variableValue));
912
639
  }
913
640
 
914
641
  /**
915
- * @param p0
916
- * @returns
642
+ * @param convoRoot
917
643
  */
918
- static N_0xFE5C6177064BD390(p0: boolean): boolean {
919
- return inv<boolean>('0xFE5C6177064BD390', p0, rai());
644
+ static startPreloadedConversation(convoRoot: string | null): void {
645
+ inv<void>('0x23641AFE870AF385', convoRoot);
920
646
  }
921
647
 
922
648
  /**
923
- * @param p0
924
- * @param currentScriptedConvoLine
649
+ * @param scene
925
650
  * @returns
926
651
  */
927
- static N_0x152ED1B56E8F1F50(p0: string | null, currentScriptedConvoLine: number): Ped | null {
928
- return createFromHandle<Ped>('Ped', inv<number>('0x152ED1B56E8F1F50', p0, currentScriptedConvoLine, rai()));
652
+ static startAudioScene(scene: string | null): boolean {
653
+ return inv<boolean>('0x013A80FC08F6E4F2', scene, rai());
929
654
  }
930
655
 
931
656
  /**
932
- * @param p0
933
657
  * @returns
934
658
  */
935
- static N_0x4A98E228A936DBCC(p0: any): any {
936
- return inv<number>('0x4A98E228A936DBCC', p0);
659
+ static getMusicPlaytime(): number {
660
+ return inv<number>('0xE7A0D23DC414507B', rai());
937
661
  }
938
662
 
939
663
  /**
940
- * https://en.m.wikipedia.org/wiki/Walla
664
+ * Checks for MOONSHINE_BAND
941
665
  *
942
- * @param p0
943
- * @param p1
666
+ * @param entity
667
+ * @returns
944
668
  */
945
- static setPedWallaDensity(p0: number, p1: number): void {
946
- inv<void>('0x149AEE66F0CB3A99', f(p0), f(p1));
669
+ static N_0xBE28DB99556FF8D9(entity: Entity): number {
670
+ return (inv<number>('0xBE28DB99556FF8D9', entity.handle, rai())) & 0xFFFFFFFF;
671
+ }
672
+
673
+ static N_0x569ABC36E28DDEAA(): void {
674
+ inv<void>('0x569ABC36E28DDEAA');
947
675
  }
948
676
 
949
677
  /**
950
- * item: value returned from 0x2E1CDC1FF3B8473E
951
- * soundSet: HUD_SHOP_SOUNDSET, COMPANIONS_ROBBERIES_SOUNDSET
678
+ * struct ScriptedSpeechParams
679
+ * {
680
+ * const char* speechName;
681
+ * const char* voiceName;
682
+ * alignas(8) int variation;
683
+ * alignas(8) Hash speechParamHash;
684
+ * alignas(8) Ped listenerPed;
685
+ * alignas(8) BOOL syncOverNetwork;
686
+ * alignas(8) int v7;
687
+ * alignas(8) int v8;
688
+ * }; static_assert(sizeof(ScriptedSpeechParams) == 0x40, "incorrect ScriptedSpeechParams size"); Example: ScriptedSpeechParams params{"RE_PH_RHD_V3_AGGRO", "0405_U_M_M_RhdSheriff_01", 1, joaat("SPEECH_PARAMS_BEAT_SHOUTED_CLEAR"), 0, true, 1, 1};
689
+ * PLAY_PED_AMBIENT_SPEECH_NATIVE(PLAYER_PED_ID(), (Any*)&params); Old name: _PLAY_AMBIENT_SPEECH1
690
+ * https://github.com/femga/rdr3_discoveries/tree/master/audio/audio_banks
952
691
  *
953
- * @param item
954
- * @param soundSet
955
- * @param p2
692
+ * @param speaker
693
+ * @returns params
956
694
  */
957
- static playSoundFromItem(item: string | number, soundSet: string | number, p2: any): void {
958
- inv<void>('0xE8EAFF7B41EDD291', _h(item), _h(soundSet), p2);
695
+ static playPedAmbientSpeechNative(speaker: Ped): [any, number] {
696
+ const result = inv<[number, number]>('0x8E04FEDD28D42462', speaker.handle, pvi());
697
+ return [result[0], result[1]];
959
698
  }
960
699
 
961
700
  /**
962
- * @param ped
701
+ * Checks whether the horn of a vehicle is currently played.
702
+ *
703
+ * @param vehicle
963
704
  * @returns
964
705
  */
965
- static getPedSongIndexHost(ped: Ped): any {
966
- return inv<number>('0x2DBBF0C5E19383EE', ped.handle);
706
+ static isHornActive(vehicle: Vehicle): boolean {
707
+ return inv<boolean>('0x9D6BFC12B05C6121', vehicle.handle, rai());
967
708
  }
968
709
 
969
710
  /**
970
711
  * @param p0
712
+ * @param p1
713
+ * @param p2
714
+ * @param p3
971
715
  */
972
- static N_0x3E98AC9D8C56C62C(p0: any): void {
973
- inv<void>('0x3E98AC9D8C56C62C', p0);
716
+ static N_0xCFAD2C8CD1054523(p0: any, p1: any, p2: any, p3: any): void {
717
+ inv<void>('0xCFAD2C8CD1054523', p0, p1, p2, p3);
974
718
  }
975
719
 
976
720
  /**
@@ -1201,141 +945,287 @@ export class Audio {
1201
945
  }
1202
946
 
1203
947
  /**
1204
- * https://github.com/femga/rdr3_discoveries/tree/master/audio/audio_flags
1205
- *
1206
- * @param flagName
1207
- * @param toggle
948
+ * @param p0
1208
949
  */
1209
- static setAudioFlag(flagName: string | null, toggle: boolean): void {
1210
- inv<void>('0xB9EFD5C25018725A', flagName, toggle);
950
+ static skipToNextScriptedConversationLine(p0: string | null): void {
951
+ inv<void>('0x9663FE6B7A61EB00', p0);
1211
952
  }
1212
953
 
1213
954
  /**
1214
- * @param vehicle
1215
- * @param toggle
955
+ * @param ped
956
+ * @param p1
1216
957
  */
1217
- static setHornEnabled(vehicle: Vehicle, toggle: boolean): void {
1218
- inv<void>('0x76D683C108594D0E', vehicle.handle, toggle);
958
+ static stopCurrentPlayingSpeech(ped: Ped, p1: any): void {
959
+ inv<void>('0x79D2F0E66F81D90D', ped.handle, p1);
960
+ }
961
+
962
+ static clearConversationHistory(): void {
963
+ inv<void>('0x33D51F801CB16E4F');
1219
964
  }
1220
965
 
1221
966
  /**
1222
- * p1 is possibly naSpeechAudibility, naSpeechType, or naSpeechEventTypeRequestPriority
1223
- * SKIP_* - START_*
967
+ * @param eventName
968
+ * @returns
969
+ */
970
+ static prepareMusicEvent(eventName: string | null): boolean {
971
+ return inv<boolean>('0x1E5185B72EF5158A', eventName, rai());
972
+ }
973
+
974
+ /**
975
+ * Starts Audio Loop
976
+ * _PLAY_SOUND_FROM_ENTITY* - _PLAY_SOUND_FRONTEND*
1224
977
  *
1225
- * @param speechEventType Refer to [enum: naSpeechEventType]
978
+ * @param soundId
979
+ * @param soundName
980
+ * @param pos
981
+ * @param soundsetName
982
+ * @param p6
983
+ * @param p7
984
+ * @param p8
985
+ */
986
+ static playSoundFromPositionWithId(soundId: number, soundName: string | null, pos: Vector3, soundsetName: string | null, p6: boolean, p7: number, p8: boolean): void {
987
+ inv<void>('0xDCF5BA95BBF0FABA', soundId, soundName, f(pos.x), f(pos.y), f(pos.z), soundsetName, p6, p7, p8);
988
+ }
989
+
990
+ /**
991
+ * @param p0
1226
992
  * @param p1
1227
993
  * @param p2
1228
994
  */
1229
- static N_0x0D7FD6A55FD63AEF(speechEventType: number, p1: number, p2: boolean): void {
1230
- inv<void>('0x0D7FD6A55FD63AEF', speechEventType, p1, p2);
995
+ static N_0x8D29FDF565DED9AE(p0: any, p1: any, p2: any): void {
996
+ inv<void>('0x8D29FDF565DED9AE', p0, p1, p2);
997
+ }
998
+
999
+ /**
1000
+ * @param eventName
1001
+ * @returns
1002
+ */
1003
+ static triggerMusicEventWithHash(eventName: string | number): any {
1004
+ return inv<number>('0x05D6195FB4D428F4', _h(eventName));
1005
+ }
1006
+
1007
+ /**
1008
+ * @param soundId
1009
+ * @returns
1010
+ */
1011
+ static hasSoundIdFinished(soundId: number): any {
1012
+ return inv<number>('0x84848E1C0FC67DBB', soundId);
1013
+ }
1014
+
1015
+ /**
1016
+ * @param scene
1017
+ */
1018
+ static stopAudioScene(scene: string | null): void {
1019
+ inv<void>('0xDFE8422B3B94E688', scene);
1231
1020
  }
1232
1021
 
1233
1022
  /**
1234
1023
  * @param p0
1235
1024
  * @param p1
1025
+ */
1026
+ static N_0xA6847BBA4FCDD13F(p0: any, p1: any): void {
1027
+ inv<void>('0xA6847BBA4FCDD13F', p0, p1);
1028
+ }
1029
+
1030
+ /**
1031
+ * @param p0
1032
+ * @returns
1033
+ */
1034
+ static isScriptedSpeechPlaying(p0: any): boolean {
1035
+ return inv<boolean>('0xCC9AA18DCC7084F4', p0, rai());
1036
+ }
1037
+
1038
+ /**
1039
+ * @param ped
1040
+ * @param p1
1041
+ * @param hash
1042
+ */
1043
+ static useFootstepScriptSweeteners(ped: Ped, p1: boolean, hash: string | number): void {
1044
+ inv<void>('0xBF4DC1784BE94DFA', ped.handle, p1, _h(hash));
1045
+ }
1046
+
1047
+ /**
1048
+ * whistleConfig: Ped.WhistlePitch (0.0 - 1.0), Ped.WhistleClarity (0.0 - 1.0), Ped.WhistleShape (0.0 - 10.0)
1049
+ *
1050
+ * @param ped
1051
+ * @param whistleConfig
1052
+ * @param value
1053
+ */
1054
+ static setWhistleConfigForPed(ped: Ped, whistleConfig: string | null, value: number): void {
1055
+ inv<void>('0x9963681A8BC69BF3', ped.handle, whistleConfig, f(value));
1056
+ }
1057
+
1058
+ /**
1059
+ * @param ped
1060
+ * @param p1
1236
1061
  * @param p2
1237
- * @param p3
1238
- * @param p4
1239
1062
  */
1240
- static N_0x06C5DF5EE444BC6B(p0: any, p1: any, p2: any, p3: any, p4: any): void {
1241
- inv<void>('0x06C5DF5EE444BC6B', p0, p1, p2, p3, p4);
1063
+ static playAnimalVocalizationPheromoneVialResponse(ped: Ped, p1: string | number, p2: boolean): void {
1064
+ inv<void>('0x0E53530D9B2DB01D', ped.handle, _h(p1), p2);
1065
+ }
1066
+
1067
+ /**
1068
+ * Only used in R* SP Scripts
1069
+ * Old Name: _UPDATE_SOUND_POSITION
1070
+ *
1071
+ * @param soundId
1072
+ * @param pos
1073
+ */
1074
+ static updateSoundCoord(soundId: number, pos: Vector3): void {
1075
+ inv<void>('0x0286617C8FC50A53', soundId, f(pos.x), f(pos.y), f(pos.z));
1076
+ }
1077
+
1078
+ /**
1079
+ * @param ambientZone
1080
+ * @param p1
1081
+ * @param p2
1082
+ */
1083
+ static setAmbientZoneStatePersistent(ambientZone: string | null, p1: boolean, p2: boolean): void {
1084
+ inv<void>('0x1D6650420CEC9D3B', ambientZone, p1, p2);
1085
+ }
1086
+
1087
+ /**
1088
+ * speechEventType: https://github.com/Halen84/RDR3-Native-Flags-And-Enums/tree/main/naSpeechEventType
1089
+ * SKIP_* - START_*
1090
+ *
1091
+ * @param speechEventType
1092
+ */
1093
+ static N_0x660A8F876DF1D4F8(speechEventType: number): void {
1094
+ inv<void>('0x660A8F876DF1D4F8', speechEventType);
1095
+ }
1096
+
1097
+ /**
1098
+ * @param p0
1099
+ * @param p1
1100
+ */
1101
+ static N_0x139A4B9DF2D26CBF(p0: any, p1: any): void {
1102
+ inv<void>('0x139A4B9DF2D26CBF', p0, p1);
1103
+ }
1104
+
1105
+ /**
1106
+ * @param pos
1107
+ * @param streamId
1108
+ */
1109
+ static playStreamFromPosition(pos: Vector3, streamId: number): void {
1110
+ inv<void>('0x21442F412E8DE56B', f(pos.x), f(pos.y), f(pos.z), streamId);
1111
+ }
1112
+
1113
+ /**
1114
+ * @param entity
1115
+ * @returns
1116
+ */
1117
+ static getEntityAudioMixGroup(entity: Entity): number {
1118
+ return (inv<number>('0x8B25A18E390F75BF', entity.handle, rai())) & 0xFFFFFFFF;
1119
+ }
1120
+
1121
+ /**
1122
+ * @param convoRoot
1123
+ * @returns
1124
+ */
1125
+ static isScriptedConversationCreated(convoRoot: string | null): any {
1126
+ return inv<number>('0xD89504D9D7D5057D', convoRoot);
1127
+ }
1128
+
1129
+ static N_0xA2B851605748AD0E(): void {
1130
+ inv<void>('0xA2B851605748AD0E');
1242
1131
  }
1243
1132
 
1244
1133
  /**
1245
- * @param p0
1134
+ * @param convoRoot
1246
1135
  * @returns
1247
1136
  */
1248
- static N_0x2B9C37C01BF25EDB(p0: any): any {
1249
- return inv<number>('0x2B9C37C01BF25EDB', p0);
1137
+ static N_0x0CB3D1919E8D7CBA(convoRoot: string | null): boolean {
1138
+ return inv<boolean>('0x0CB3D1919E8D7CBA', convoRoot, rai());
1250
1139
  }
1251
1140
 
1252
1141
  /**
1253
- * @param p0
1142
+ * Name: ROPE_SETTINGS_DEFAULT
1143
+ *
1144
+ * @param ropeId
1145
+ * @param name
1254
1146
  */
1255
- static N_0x64B956F4E761DF5C(p0: any): void {
1256
- inv<void>('0x64B956F4E761DF5C', p0);
1147
+ static N_0xF092B6030D6FD49C(ropeId: number, name: string | null): void {
1148
+ inv<void>('0xF092B6030D6FD49C', ropeId, name);
1257
1149
  }
1258
1150
 
1259
1151
  /**
1260
1152
  * @param p0
1153
+ * @param currentScriptedConvoLine
1154
+ * @returns
1261
1155
  */
1262
- static setAudioOnlineTransitionStage(p0: string | null): void {
1263
- inv<void>('0x9B1FC259187C97C0', p0);
1264
- }
1265
-
1266
- /**
1267
- * @param streamId
1268
- */
1269
- static playStreamFrontend(streamId: number): void {
1270
- inv<void>('0x58FCE43488F9F5F4', streamId);
1156
+ static N_0x254B0241E964B450(p0: string | null, currentScriptedConvoLine: number): Ped | null {
1157
+ return createFromHandle<Ped>('Ped', inv<number>('0x254B0241E964B450', p0, currentScriptedConvoLine, rai()));
1271
1158
  }
1272
1159
 
1273
1160
  /**
1274
- * _IS_SOUND_RUNNING(?)
1275
- *
1276
- * @param audioName
1277
- * @param audioRef
1278
- * @returns
1161
+ * @param ped
1162
+ * @param vocalizationName
1163
+ * @param p2
1279
1164
  */
1280
- static N_0x580D71DFE0088E34(audioName: string | null, audioRef: string | null): boolean {
1281
- return inv<boolean>('0x580D71DFE0088E34', audioName, audioRef, rai());
1165
+ static playAnimalVocalization(ped: Ped, vocalizationName: string | null, p2: boolean): void {
1166
+ inv<void>('0xEE066C7006C49C0A', ped.handle, vocalizationName, p2);
1282
1167
  }
1283
1168
 
1284
1169
  /**
1285
- * nullsub, doesn't do anything
1286
- *
1287
1170
  * @param p0
1171
+ * @param p1
1288
1172
  */
1289
- static registerScriptWithAudio(p0: boolean): void {
1290
- inv<void>('0xC6ED9D5092438D91', p0);
1173
+ static setPedInteriorWallaDensity(p0: number, p1: number): void {
1174
+ inv<void>('0x8BF907833BE275DE', f(p0), f(p1));
1291
1175
  }
1292
1176
 
1293
1177
  /**
1294
1178
  * @param p0
1295
1179
  * @param p1
1296
1180
  */
1297
- static N_0x35B8C070E0C16E2F(p0: any, p1: any): void {
1298
- inv<void>('0x35B8C070E0C16E2F', p0, p1);
1299
- }
1300
-
1301
- static N_0x138ADB94F8B90616(): void {
1302
- inv<void>('0x138ADB94F8B90616');
1181
+ static N_0xD47D47EFBF103FB8(p0: any, p1: any): void {
1182
+ inv<void>('0xD47D47EFBF103FB8', p0, p1);
1303
1183
  }
1304
1184
 
1305
1185
  /**
1306
1186
  * @param p0
1307
1187
  * @param p1
1308
- * @param p2
1309
1188
  */
1310
- static N_0x380A2E353AD30917(p0: any, p1: any, p2: any): void {
1311
- inv<void>('0x380A2E353AD30917', p0, p1, p2);
1189
+ static N_0x5BC885EBD75FAA7D(p0: any, p1: any): void {
1190
+ inv<void>('0x5BC885EBD75FAA7D', p0, p1);
1312
1191
  }
1313
1192
 
1314
1193
  /**
1315
- * @param convoRoot
1316
- * @returns
1194
+ * Valid pain IDs: 0..12 these names are not official, but here is a list of the IDs:
1195
+ * 1 burning,
1196
+ * 2 drowning,
1197
+ * 3 coughing,
1198
+ * 4 nothing,
1199
+ * 5 nothing,
1200
+ * 6 coughing_2,
1201
+ * 7 nothing,
1202
+ * 8 nothing,
1203
+ * 9 hurtingSick?,
1204
+ * 10 hurtingFall?,
1205
+ * 11 nothing,
1206
+ * 12 choking
1207
+ *
1208
+ * @param ped
1209
+ * @param painId
1210
+ * @param p2
1211
+ * @param p3
1212
+ * @param isNetwork
1317
1213
  */
1318
- static createNewScriptedConversation(convoRoot: string | null): any {
1319
- return inv<number>('0xD2C91A0B572AAE56', convoRoot);
1214
+ static playPain(ped: Ped, painId: number, p2: number, p3: boolean, isNetwork: boolean): void {
1215
+ inv<void>('0xBC9AE166038A5CEC', ped.handle, painId, f(p2), p3, isNetwork);
1320
1216
  }
1321
1217
 
1322
1218
  /**
1219
+ * *STOP_AUDIO**
1220
+ *
1323
1221
  * @param p0
1324
- * @param p1
1325
- * @param p2
1326
- * @returns
1327
1222
  */
1328
- static N_0x7678FE0455ED1145(p0: any, p1: any, p2: any): any {
1329
- return inv<number>('0x7678FE0455ED1145', p0, p1, p2);
1223
+ static N_0x6AB944DF68B512D3(p0: any): void {
1224
+ inv<void>('0x6AB944DF68B512D3', p0);
1330
1225
  }
1331
1226
 
1332
- /**
1333
- * @param entity
1334
- * @param groupName
1335
- * @param p2
1336
- */
1337
- static addEntityToAudioMixGroup(entity: Entity, groupName: string | null, p2: number): void {
1338
- inv<void>('0x153973AB99FE8980', entity.handle, groupName, f(p2));
1227
+ static N_0xDAD6CD07CAA4F382(): void {
1228
+ inv<void>('0xDAD6CD07CAA4F382');
1339
1229
  }
1340
1230
 
1341
1231
  /**
@@ -1479,27 +1369,80 @@ export class Audio {
1479
1369
  }
1480
1370
 
1481
1371
  /**
1482
- * Only used in R* SP Script cv_mus_shared
1372
+ * nullsub, doesn't do anything
1483
1373
  *
1484
- * @param convoRoot
1485
- * @param animScene
1374
+ * @param active
1375
+ */
1376
+ static setGpsActive(active: boolean): void {
1377
+ inv<void>('0x3BD3F52BA9B1E4E8', active);
1378
+ }
1379
+
1380
+ /**
1381
+ * Old name: _PLAY_SOUND_FROM_POSITION
1382
+ *
1383
+ * @param SoundName
1384
+ * @param pos
1385
+ * @param SetName
1386
+ * @param bOverNetwork
1387
+ * @param nNetworkRange
1388
+ * @param isExteriorLoc
1389
+ * @param p8
1390
+ */
1391
+ static playSoundFromCoord(SoundName: string | null, pos: Vector3, SetName: string | null, bOverNetwork: boolean, nNetworkRange: number, isExteriorLoc: boolean, p8: number): void {
1392
+ inv<void>('0xCCE219C922737BFA', SoundName, f(pos.x), f(pos.y), f(pos.z), SetName, bOverNetwork, nNetworkRange, isExteriorLoc, p8);
1393
+ }
1394
+
1395
+ /**
1396
+ * @param streamName
1397
+ * @param soundSet
1486
1398
  * @returns
1487
1399
  */
1488
- static N_0x79F9C57B8D0DFE90(convoRoot: string | null, animScene: AnimScene): boolean {
1489
- return inv<boolean>('0x79F9C57B8D0DFE90', convoRoot, animScene.handle, rai());
1400
+ static loadStream(streamName: string | null, soundSet: string | null): boolean {
1401
+ return inv<boolean>('0x1F1F957154EC51DF', streamName, soundSet, rai());
1490
1402
  }
1491
1403
 
1492
- static forcePedPanicWalla(): void {
1493
- inv<void>('0x062D5EAD4DA2FA6A');
1404
+ /**
1405
+ * @param p0
1406
+ * @param p1
1407
+ */
1408
+ static N_0x9EB779765E68C52E(p0: any, p1: any): void {
1409
+ inv<void>('0x9EB779765E68C52E', p0, p1);
1410
+ }
1411
+
1412
+ static N_0x43037ABFE214A851(): void {
1413
+ inv<void>('0x43037ABFE214A851');
1414
+ }
1415
+
1416
+ /**
1417
+ * @returns
1418
+ */
1419
+ static N_0xA6A3A3F96B8B030E(): any {
1420
+ return inv<number>('0xA6A3A3F96B8B030E');
1421
+ }
1422
+
1423
+ /**
1424
+ * @param p0
1425
+ * @returns
1426
+ */
1427
+ static isScriptedConversationPlaying(p0: string | null): any {
1428
+ return inv<number>('0x1ECC76792F661CF5', p0);
1494
1429
  }
1495
1430
 
1496
1431
  /**
1497
1432
  * @param p0
1498
1433
  * @param p1
1499
- * @param p2
1500
1434
  */
1501
- static N_0xF64034D533CE8AAC(p0: any, p1: any, p2: any): void {
1502
- inv<void>('0xF64034D533CE8AAC', p0, p1, p2);
1435
+ static setPortalSettingsOverride(p0: string | null, p1: string | null): void {
1436
+ inv<void>('0x044DBAD7A7FA2BE5', p0, p1);
1437
+ }
1438
+
1439
+ /**
1440
+ * @param ped
1441
+ * @param disabled
1442
+ * @returns
1443
+ */
1444
+ static setIsScriptedSpeechDisabled(ped: Ped, disabled: boolean): any {
1445
+ return inv<number>('0xB2DE3AEBE31150E2', ped.handle, disabled);
1503
1446
  }
1504
1447
 
1505
1448
  /**
@@ -1507,277 +1450,334 @@ export class Audio {
1507
1450
  * @param p1
1508
1451
  * @param p2
1509
1452
  * @param p3
1510
- * @param p4
1511
- * @param p5
1453
+ * @returns
1512
1454
  */
1513
- static N_0x6DA15746D5CC1A92(p0: any, p1: any, p2: any, p3: any, p4: any, p5: any): void {
1514
- inv<void>('0x6DA15746D5CC1A92', p0, p1, p2, p3, p4, p5);
1455
+ static N_0x9D6DEC9791A4E501(p0: any, p1: any, p2: any, p3: any): any {
1456
+ return inv<number>('0x9D6DEC9791A4E501', p0, p1, p2, p3);
1515
1457
  }
1516
1458
 
1517
1459
  /**
1518
- * Params: p5 seems to be always 0
1460
+ * Old Name: _STOP_SOUND_WITH_ID
1519
1461
  *
1520
1462
  * @param soundId
1521
- * @param soundName
1522
- * @param entity
1523
- * @param soundsetName
1524
- * @param p4
1525
- * @param p5
1526
1463
  */
1527
- static playSoundFromEntityWithSet(soundId: number, soundName: string | null, entity: Entity, soundsetName: string | null, p4: boolean, p5: any): void {
1528
- inv<void>('0xF1C5310FEAA36B48', soundId, soundName, entity.handle, soundsetName, p4, p5);
1464
+ static stopSound(soundId: number): void {
1465
+ inv<void>('0x3210BCB36AF7621B', soundId);
1466
+ }
1467
+
1468
+ /**
1469
+ * @param p0
1470
+ * @returns
1471
+ */
1472
+ static N_0xF336E9F989B3518F(p0: string | null): number {
1473
+ return inv<number>('0xF336E9F989B3518F', p0, rai());
1529
1474
  }
1530
1475
 
1531
1476
  /**
1532
1477
  * @param p0
1533
1478
  * @param p1
1534
- * @param p2
1535
- * @param p3
1536
- * @param p4
1537
- * @param p5
1538
- * @param p6
1539
- * @param p7
1540
1479
  */
1541
- static N_0x5AE0CB5F35F034FD(p0: any, p1: any, p2: any, p3: any, p4: any, p5: any, p6: any, p7: any): void {
1542
- inv<void>('0x5AE0CB5F35F034FD', p0, p1, p2, p3, p4, p5, p6, p7);
1480
+ static N_0xFCDEC42B1C78B7F8(p0: any, p1: any): void {
1481
+ inv<void>('0xFCDEC42B1C78B7F8', p0, p1);
1482
+ }
1483
+
1484
+ /**
1485
+ * @param ped
1486
+ */
1487
+ static N_0x8E901B65206C2D3E(ped: Ped): void {
1488
+ inv<void>('0x8E901B65206C2D3E', ped.handle);
1489
+ }
1490
+
1491
+ /**
1492
+ * @param p0
1493
+ */
1494
+ static N_0x7E176C676F8652A9(p0: any): void {
1495
+ inv<void>('0x7E176C676F8652A9', p0);
1496
+ }
1497
+
1498
+ /**
1499
+ * item: FUSE, value returned from 0x2E1CDC1FF3B8473E
1500
+ * soundSet: HUD_SHOP_SOUNDSET, COMPANIONS_ROBBERIES_SOUNDSET
1501
+ *
1502
+ * @param item
1503
+ * @param soundSet
1504
+ * @returns
1505
+ */
1506
+ static isScriptedAudioCustom(item: string | number, soundSet: string | number): any {
1507
+ return inv<number>('0x6DF942C4179BE5AB', _h(item), _h(soundSet));
1508
+ }
1509
+
1510
+ /**
1511
+ * @param p0
1512
+ * @returns
1513
+ */
1514
+ static N_0xD05A460328560477(p0: any): any {
1515
+ return inv<number>('0xD05A460328560477', p0);
1516
+ }
1517
+
1518
+ /**
1519
+ * Checks if the ped can play the speech or has the speech file, last parameter is usually false.
1520
+ *
1521
+ * @param ped
1522
+ * @param speechName
1523
+ * @param unk
1524
+ * @returns
1525
+ */
1526
+ static doesContextExistForThisPed(ped: Ped, speechName: string | null, unk: boolean): boolean {
1527
+ return inv<boolean>('0x49B99BF3FDA89A7A', ped.handle, speechName, unk, rai());
1543
1528
  }
1544
1529
 
1545
1530
  /**
1546
- * @param p0
1547
- * @param currentScriptedConvoLine
1548
1531
  * @returns
1549
1532
  */
1550
- static N_0x935DBD96D4A3DA1F(p0: string | null, currentScriptedConvoLine: number): number {
1551
- return inv<number>('0x935DBD96D4A3DA1F', p0, currentScriptedConvoLine, rai());
1533
+ static N_0x2B101AD9F651243A(): any {
1534
+ return inv<number>('0x2B101AD9F651243A');
1552
1535
  }
1553
1536
 
1554
1537
  /**
1555
1538
  * @param p0
1539
+ * @returns
1556
1540
  */
1557
- static N_0xDC93F0948F2C28F4(p0: any): void {
1558
- inv<void>('0xDC93F0948F2C28F4', p0);
1541
+ static N_0x131EC9247E7A2903(p0: any): any {
1542
+ return inv<number>('0x131EC9247E7A2903', p0);
1559
1543
  }
1560
1544
 
1561
1545
  /**
1562
- * p1: Entity.Relationship
1563
- * p2: Player, Enemy, Teammate, Neutral
1564
- *
1565
1546
  * @param ped
1566
- * @param p1
1567
- * @param p2
1547
+ * @param name
1568
1548
  */
1569
- static setSoundRelationshipOnPed(ped: Ped, p1: string | null, p2: string | null): void {
1570
- inv<void>('0x2E31ACA7477CF00F', ped.handle, p1, p2);
1549
+ static setAmbientVoiceName(ped: Ped, name: string | null): void {
1550
+ inv<void>('0x6C8065A3B780185B', ped.handle, name);
1571
1551
  }
1572
1552
 
1573
1553
  /**
1574
- * @param audioName
1575
- * @param audioRef
1554
+ * @param play
1576
1555
  */
1577
- static stopSoundWithName(audioName: string | null, audioRef: string | null): void {
1578
- inv<void>('0x0F2A2175734926D8', audioName, audioRef);
1556
+ static playEndCreditsMusic(play: boolean): void {
1557
+ inv<void>('0xCD536C4D33DCC900', play);
1579
1558
  }
1580
1559
 
1581
1560
  /**
1582
- * @param p0
1583
- * @param p1
1561
+ * @param eventName
1584
1562
  * @returns
1585
1563
  */
1586
- static N_0xC369E2234E34A0CA(p0: any, p1: any): any {
1587
- return inv<number>('0xC369E2234E34A0CA', p0, p1);
1564
+ static cancelMusicEvent(eventName: string | null): boolean {
1565
+ return inv<boolean>('0x5B17A90291133DA5', eventName, rai());
1588
1566
  }
1589
1567
 
1590
1568
  /**
1591
- * @param p0
1592
- * @param p1
1569
+ * @param ped
1593
1570
  * @returns
1594
1571
  */
1595
- static N_0x72E4D1C4639BC465(p0: Entity, p1: any): any {
1596
- return inv<number>('0x72E4D1C4639BC465', p0.handle, p1);
1572
+ static isAmbientSpeechDisabled(ped: Ped): boolean {
1573
+ return inv<boolean>('0x932C2D096A2C3FFF', ped.handle, rai());
1597
1574
  }
1598
1575
 
1599
1576
  /**
1600
- * @param audioName
1601
- * @param soundsetName
1602
- * @returns
1577
+ * Not implemented.
1578
+ *
1579
+ * @param animal
1580
+ * @param mood
1603
1581
  */
1604
- static hasSoundAudioNameFinished(audioName: string | null, soundsetName: string | null): any {
1605
- return inv<number>('0x714A0EA7DE1167BE', audioName, soundsetName);
1582
+ static setAnimalMood(animal: Ped, mood: number): void {
1583
+ inv<void>('0xCC97B29285B1DC3B', animal.handle, mood);
1606
1584
  }
1607
1585
 
1608
1586
  /**
1609
- * *UNLOAD*[A-C]* - USE_*
1610
- *
1611
- * @param speechContext
1587
+ * @param convoRoot
1588
+ * @param p1
1589
+ * @param p2
1590
+ * @param clone
1612
1591
  */
1613
- static unloadSpeechContext(speechContext: string | null): void {
1614
- inv<void>('0x87E6302FC61208CC', speechContext);
1592
+ static startScriptConversation(convoRoot: string | null, p1: boolean, p2: boolean, clone: boolean): void {
1593
+ inv<void>('0x6B17C62C9635D2DC', convoRoot, p1, p2, clone);
1615
1594
  }
1616
1595
 
1617
1596
  /**
1618
1597
  * @param p0
1619
- * @param p1
1620
1598
  */
1621
- static N_0x3A3BE6B920525237(p0: any, p1: any): void {
1622
- inv<void>('0x3A3BE6B920525237', p0, p1);
1599
+ static N_0xEB4D592620B8C209(p0: any): void {
1600
+ inv<void>('0xEB4D592620B8C209', p0);
1601
+ }
1602
+
1603
+ static releaseScriptAudioBank(): void {
1604
+ inv<void>('0x7A2D8AD0A9EB9C3F');
1605
+ }
1606
+
1607
+ static N_0x4BE3EC91C01F0FE8(): void {
1608
+ inv<void>('0x4BE3EC91C01F0FE8');
1623
1609
  }
1624
1610
 
1625
1611
  /**
1626
- * @param p0
1627
- * @returns
1612
+ * @param zoneName
1613
+ * @param isEnabled
1614
+ * @param p2
1628
1615
  */
1629
- static N_0xC68C02DE259C927C(p0: any): any {
1630
- return inv<number>('0xC68C02DE259C927C', p0);
1616
+ static setAmbientZoneState(zoneName: string | null, isEnabled: boolean, p2: boolean): void {
1617
+ inv<void>('0xBDA07E5950085E46', zoneName, isEnabled, p2);
1618
+ }
1619
+
1620
+ /**
1621
+ * @param audioName
1622
+ * @param entity
1623
+ * @param audioRef
1624
+ * @param isNetwork
1625
+ * @param p4
1626
+ * @param p5
1627
+ */
1628
+ static playSoundFromEntity(audioName: string | null, entity: Entity, audioRef: string | null, isNetwork: boolean, p4: any, p5: any): void {
1629
+ inv<void>('0x6FB1DA3CA9DA7D90', audioName, entity.handle, audioRef, isNetwork, p4, p5);
1631
1630
  }
1632
1631
 
1633
1632
  /**
1634
1633
  * @param ped
1635
- * @param toggle
1634
+ * @returns
1636
1635
  */
1637
- static disablePedPainAudio(ped: Ped, toggle: boolean): void {
1638
- inv<void>('0xA9A41C1E940FB0E8', ped.handle, toggle);
1636
+ static isAmbientSpeechPlaying(ped: Ped): boolean {
1637
+ return inv<boolean>('0x9072C8B49907BFAD', ped.handle, rai());
1639
1638
  }
1640
1639
 
1641
1640
  /**
1642
- * Old name: _FORCE_VEHICLE_ENGINE_AUDIO
1643
- *
1644
- * @param vehicle
1645
- * @param audioName
1641
+ * @param ambientZone
1642
+ * @param pos
1643
+ * @param heading
1646
1644
  */
1647
- static forceUseAudioGameObject(vehicle: Vehicle, audioName: string | null): void {
1648
- inv<void>('0x4F0C413926060B38', vehicle.handle, audioName);
1645
+ static setAmbientZonePosition(ambientZone: string | null, pos: Vector3, heading: number): void {
1646
+ inv<void>('0x3743CE6948194349', ambientZone, f(pos.x), f(pos.y), f(pos.z), f(heading));
1649
1647
  }
1650
1648
 
1651
1649
  /**
1652
- * @param soundName
1653
1650
  * @param entity
1654
- * @param soundsetName
1655
- * @param soundId
1656
1651
  * @returns
1657
1652
  */
1658
- static prepareSoundWithEntity(soundName: string | null, entity: Entity, soundsetName: string | null, soundId: number): any {
1659
- return inv<number>('0x4AD019591E94C064', soundName, entity.handle, soundsetName, soundId);
1653
+ static N_0x2FFF4A78384AFFDF(entity: Entity): any {
1654
+ return inv<number>('0x2FFF4A78384AFFDF', entity.handle);
1655
+ }
1656
+
1657
+ /**
1658
+ * @param emitterName
1659
+ * @param toggle
1660
+ */
1661
+ static setStaticEmitterEnabled(emitterName: string | null, toggle: boolean): void {
1662
+ inv<void>('0x399D2D3B33F1B8EB', emitterName, toggle);
1663
+ }
1664
+
1665
+ /**
1666
+ * @param ped
1667
+ * @param toggle
1668
+ */
1669
+ static setPedIsDrunk(ped: Ped, toggle: boolean): void {
1670
+ inv<void>('0x95D2D383D5396B8A', ped.handle, toggle);
1660
1671
  }
1661
1672
 
1662
1673
  /**
1663
1674
  * @param p0
1664
1675
  * @param p1
1665
1676
  * @param p2
1677
+ * @param p3
1678
+ * @param p4
1666
1679
  */
1667
- static stopAllScriptedConversions(p0: boolean, p1: boolean, p2: boolean): void {
1668
- inv<void>('0x36559148B78853B3', p0, p1, p2);
1680
+ static N_0x839C9F124BE74D94(p0: any, p1: any, p2: any, p3: any, p4: any): void {
1681
+ inv<void>('0x839C9F124BE74D94', p0, p1, p2, p3, p4);
1669
1682
  }
1670
1683
 
1671
1684
  /**
1672
- * @param entity
1685
+ * @param ambientZone
1673
1686
  * @param p1
1687
+ * @param p2
1674
1688
  */
1675
- static removeEntityFromAudioMixGroup(entity: Entity, p1: number): void {
1676
- inv<void>('0x18EB48CFC41F2EA0', entity.handle, f(p1));
1689
+ static setAmbientZoneListStatePersistent(ambientZone: string | null, p1: boolean, p2: boolean): void {
1690
+ inv<void>('0xF3638DAE8C4045E1', ambientZone, p1, p2);
1677
1691
  }
1678
1692
 
1679
1693
  /**
1680
- * *AUDIO_IS** - _AUDIO_TRIGGER*
1694
+ * @param p0
1695
+ * @param p1
1696
+ * @param p2
1697
+ * @param p3
1698
+ * @param p4
1681
1699
  */
1682
- static N_0x7455CD705F7E933E(): void {
1683
- inv<void>('0x7455CD705F7E933E');
1700
+ static pauseScriptedConversation(p0: string | null, p1: boolean, p2: boolean, p3: boolean, p4: boolean): void {
1701
+ inv<void>('0x8530AD776CD72B12', p0, p1, p2, p3, p4);
1684
1702
  }
1685
1703
 
1686
1704
  /**
1687
- * @param soundId
1705
+ * @param p0
1688
1706
  */
1689
- static releaseSoundId(soundId: number): void {
1690
- inv<void>('0x353FC880830B88FA', soundId);
1707
+ static N_0x6652B0C8F3D414D0(p0: any): void {
1708
+ inv<void>('0x6652B0C8F3D414D0', p0);
1691
1709
  }
1692
1710
 
1693
1711
  /**
1694
- * Old Name: _SET_VARIABLE_ON_SOUND_WITH_ID
1695
- *
1696
1712
  * @param soundId
1697
- * @param variableName
1698
- * @param variableValue
1713
+ * @param name
1714
+ * @param soundSet
1715
+ * @param p3
1699
1716
  */
1700
- static setVariableOnSound(soundId: number, variableName: string | null, variableValue: number): void {
1701
- inv<void>('0x503703EC1781B7D6', soundId, variableName, f(variableValue));
1717
+ static playSoundFrontendWithSoundId(soundId: number, name: string | null, soundSet: string | null, p3: boolean): void {
1718
+ inv<void>('0xCE5D0FFE83939AF1', soundId, name, soundSet, p3);
1702
1719
  }
1703
1720
 
1704
1721
  /**
1705
- * @param convoRoot
1722
+ * @param p0
1723
+ * @returns
1706
1724
  */
1707
- static startPreloadedConversation(convoRoot: string | null): void {
1708
- inv<void>('0x23641AFE870AF385', convoRoot);
1725
+ static N_0xFE5C6177064BD390(p0: boolean): boolean {
1726
+ return inv<boolean>('0xFE5C6177064BD390', p0, rai());
1709
1727
  }
1710
1728
 
1711
1729
  /**
1712
- * @param scene
1730
+ * @param p0
1731
+ * @param currentScriptedConvoLine
1713
1732
  * @returns
1714
1733
  */
1715
- static startAudioScene(scene: string | null): boolean {
1716
- return inv<boolean>('0x013A80FC08F6E4F2', scene, rai());
1734
+ static N_0x152ED1B56E8F1F50(p0: string | null, currentScriptedConvoLine: number): Ped | null {
1735
+ return createFromHandle<Ped>('Ped', inv<number>('0x152ED1B56E8F1F50', p0, currentScriptedConvoLine, rai()));
1717
1736
  }
1718
1737
 
1719
1738
  /**
1739
+ * @param p0
1720
1740
  * @returns
1721
1741
  */
1722
- static getMusicPlaytime(): number {
1723
- return inv<number>('0xE7A0D23DC414507B', rai());
1742
+ static N_0x4A98E228A936DBCC(p0: any): any {
1743
+ return inv<number>('0x4A98E228A936DBCC', p0);
1724
1744
  }
1725
1745
 
1726
1746
  /**
1727
- * Checks for MOONSHINE_BAND
1747
+ * https://en.m.wikipedia.org/wiki/Walla
1728
1748
  *
1729
- * @param entity
1730
- * @returns
1749
+ * @param p0
1750
+ * @param p1
1731
1751
  */
1732
- static N_0xBE28DB99556FF8D9(entity: Entity): number {
1733
- return (inv<number>('0xBE28DB99556FF8D9', entity.handle, rai())) & 0xFFFFFFFF;
1734
- }
1735
-
1736
- static N_0x569ABC36E28DDEAA(): void {
1737
- inv<void>('0x569ABC36E28DDEAA');
1752
+ static setPedWallaDensity(p0: number, p1: number): void {
1753
+ inv<void>('0x149AEE66F0CB3A99', f(p0), f(p1));
1738
1754
  }
1739
1755
 
1740
1756
  /**
1741
- * struct ScriptedSpeechParams
1742
- * {
1743
- * const char* speechName;
1744
- * const char* voiceName;
1745
- * alignas(8) int variation;
1746
- * alignas(8) Hash speechParamHash;
1747
- * alignas(8) Ped listenerPed;
1748
- * alignas(8) BOOL syncOverNetwork;
1749
- * alignas(8) int v7;
1750
- * alignas(8) int v8;
1751
- * }; static_assert(sizeof(ScriptedSpeechParams) == 0x40, "incorrect ScriptedSpeechParams size"); Example: ScriptedSpeechParams params{"RE_PH_RHD_V3_AGGRO", "0405_U_M_M_RhdSheriff_01", 1, joaat("SPEECH_PARAMS_BEAT_SHOUTED_CLEAR"), 0, true, 1, 1};
1752
- * PLAY_PED_AMBIENT_SPEECH_NATIVE(PLAYER_PED_ID(), (Any*)&params); Old name: _PLAY_AMBIENT_SPEECH1
1753
- * https://github.com/femga/rdr3_discoveries/tree/master/audio/audio_banks
1757
+ * item: value returned from 0x2E1CDC1FF3B8473E
1758
+ * soundSet: HUD_SHOP_SOUNDSET, COMPANIONS_ROBBERIES_SOUNDSET
1754
1759
  *
1755
- * @param speaker
1756
- * @returns params
1760
+ * @param item
1761
+ * @param soundSet
1762
+ * @param p2
1757
1763
  */
1758
- static playPedAmbientSpeechNative(speaker: Ped): [any, number] {
1759
- const result = inv<[number, number]>('0x8E04FEDD28D42462', speaker.handle, pvi());
1760
- return [result[0], result[1]];
1764
+ static playSoundFromItem(item: string | number, soundSet: string | number, p2: any): void {
1765
+ inv<void>('0xE8EAFF7B41EDD291', _h(item), _h(soundSet), p2);
1761
1766
  }
1762
1767
 
1763
1768
  /**
1764
- * Checks whether the horn of a vehicle is currently played.
1765
- *
1766
- * @param vehicle
1769
+ * @param ped
1767
1770
  * @returns
1768
1771
  */
1769
- static isHornActive(vehicle: Vehicle): boolean {
1770
- return inv<boolean>('0x9D6BFC12B05C6121', vehicle.handle, rai());
1772
+ static getPedSongIndexHost(ped: Ped): any {
1773
+ return inv<number>('0x2DBBF0C5E19383EE', ped.handle);
1771
1774
  }
1772
1775
 
1773
1776
  /**
1774
1777
  * @param p0
1775
- * @param p1
1776
- * @param p2
1777
- * @param p3
1778
1778
  */
1779
- static N_0xCFAD2C8CD1054523(p0: any, p1: any, p2: any, p3: any): void {
1780
- inv<void>('0xCFAD2C8CD1054523', p0, p1, p2, p3);
1779
+ static N_0x3E98AC9D8C56C62C(p0: any): void {
1780
+ inv<void>('0x3E98AC9D8C56C62C', p0);
1781
1781
  }
1782
1782
 
1783
1783
  /**