import type { AnimScene } from '../classes/AnimScene'; import type { Entity } from '../classes/Entity'; import type { Ped } from '../classes/Ped'; import type { Vehicle } from '../classes/Vehicle'; import { Vector2 } from '../types/Vector2'; import { Vector3 } from '../types/Vector3'; import { Vector4 } from '../types/Vector4'; import { Color } from '../types/Color'; import { createFromHandle } from '../types/HandleRegistry'; import { inv, rai, raf, ras, rav, pvi, pvf, pvv, pvii, pvfi, _h, f, int, uint, float, Hash, u8, u16, u32, u64, i8, i16, i32, i64 } from '../types/NativeAliases'; export class Audio { /** * @param p0 */ static skipToNextScriptedConversationLine(p0: string): void { inv('0x9663FE6B7A61EB00', p0); } /** * @param ped * @param p1 */ static stopCurrentPlayingSpeech(ped: Ped, p1: any): void { inv('0x79D2F0E66F81D90D', ped.handle, p1); } static clearConversationHistory(): void { inv('0x33D51F801CB16E4F'); } /** * @param eventName * @returns */ static prepareMusicEvent(eventName: string): boolean { return !!inv('0x1E5185B72EF5158A', eventName, rai()); } /** * Starts Audio Loop * _PLAY_SOUND_FROM_ENTITY* - _PLAY_SOUND_FRONTEND* * * @param soundId * @param soundName * @param pos * @param soundsetName * @param p6 * @param p7 * @param p8 */ static playSoundFromPositionWithId(soundId: int, soundName: string, pos: Vector3, soundsetName: string, p6: boolean, p7: int, p8: boolean): void { inv('0xDCF5BA95BBF0FABA', soundId, soundName, f(pos.x), f(pos.y), f(pos.z), soundsetName, p6, p7, p8); } /** * @param p0 * @param p1 * @param p2 */ static N_0x8D29FDF565DED9AE(p0: any, p1: any, p2: any): void { inv('0x8D29FDF565DED9AE', p0, p1, p2); } /** * @param eventName * @returns */ static triggerMusicEventWithHash(eventName: string | number): any { return inv('0x05D6195FB4D428F4', _h(eventName)); } /** * @param soundId * @returns */ static hasSoundIdFinished(soundId: int): any { return inv('0x84848E1C0FC67DBB', soundId); } /** * @param scene */ static stopAudioScene(scene: string): void { inv('0xDFE8422B3B94E688', scene); } /** * @param p0 * @param p1 */ static N_0xA6847BBA4FCDD13F(p0: any, p1: any): void { inv('0xA6847BBA4FCDD13F', p0, p1); } /** * @param p0 * @returns */ static isScriptedSpeechPlaying(p0: any): boolean { return !!inv('0xCC9AA18DCC7084F4', p0, rai()); } /** * @param ped * @param p1 * @param hash */ static useFootstepScriptSweeteners(ped: Ped, p1: boolean, hash: string | number): void { inv('0xBF4DC1784BE94DFA', ped.handle, p1, _h(hash)); } /** * whistleConfig: Ped.WhistlePitch (0.0 - 1.0), Ped.WhistleClarity (0.0 - 1.0), Ped.WhistleShape (0.0 - 10.0) * * @param ped * @param whistleConfig * @param value */ static setWhistleConfigForPed(ped: Ped, whistleConfig: string, value: float): void { inv('0x9963681A8BC69BF3', ped.handle, whistleConfig, f(value)); } /** * @param ped * @param p1 * @param p2 */ static playAnimalVocalizationPheromoneVialResponse(ped: Ped, p1: string | number, p2: boolean): void { inv('0x0E53530D9B2DB01D', ped.handle, _h(p1), p2); } /** * Only used in R* SP Scripts * Old Name: _UPDATE_SOUND_POSITION * * @param soundId * @param pos */ static updateSoundCoord(soundId: int, pos: Vector3): void { inv('0x0286617C8FC50A53', soundId, f(pos.x), f(pos.y), f(pos.z)); } /** * @param ambientZone * @param p1 * @param p2 */ static setAmbientZoneStatePersistent(ambientZone: string, p1: boolean, p2: boolean): void { inv('0x1D6650420CEC9D3B', ambientZone, p1, p2); } /** * speechEventType: https://github.com/Halen84/RDR3-Native-Flags-And-Enums/tree/main/naSpeechEventType * SKIP_* - START_* * * @param speechEventType */ static N_0x660A8F876DF1D4F8(speechEventType: int): void { inv('0x660A8F876DF1D4F8', speechEventType); } /** * @param p0 * @param p1 */ static N_0x139A4B9DF2D26CBF(p0: any, p1: any): void { inv('0x139A4B9DF2D26CBF', p0, p1); } /** * @param pos * @param streamId */ static playStreamFromPosition(pos: Vector3, streamId: int): void { inv('0x21442F412E8DE56B', f(pos.x), f(pos.y), f(pos.z), streamId); } /** * @param entity * @returns */ static getEntityAudioMixGroup(entity: Entity): number { return (inv('0x8B25A18E390F75BF', entity.handle, rai())) & 0xFFFFFFFF; } /** * @param convoRoot * @returns */ static isScriptedConversationCreated(convoRoot: string): boolean { return !!inv('0xD89504D9D7D5057D', convoRoot, rai()); } static N_0xA2B851605748AD0E(): void { inv('0xA2B851605748AD0E'); } /** * @param convoRoot * @returns */ static N_0x0CB3D1919E8D7CBA(convoRoot: string): boolean { return !!inv('0x0CB3D1919E8D7CBA', convoRoot, rai()); } /** * Name: ROPE_SETTINGS_DEFAULT * * @param ropeId * @param name */ static N_0xF092B6030D6FD49C(ropeId: int, name: string): void { inv('0xF092B6030D6FD49C', ropeId, name); } /** * @param p0 * @param currentScriptedConvoLine * @returns */ static N_0x254B0241E964B450(p0: string, currentScriptedConvoLine: int): Ped | null { return createFromHandle('Ped', inv('0x254B0241E964B450', p0, currentScriptedConvoLine, rai())); } /** * @param ped * @param vocalizationName * @param p2 */ static playAnimalVocalization(ped: Ped, vocalizationName: string, p2: boolean): void { inv('0xEE066C7006C49C0A', ped.handle, vocalizationName, p2); } /** * @param p0 * @param p1 */ static setPedInteriorWallaDensity(p0: float, p1: float): void { inv('0x8BF907833BE275DE', f(p0), f(p1)); } /** * @param p0 * @param p1 */ static N_0xD47D47EFBF103FB8(p0: any, p1: any): void { inv('0xD47D47EFBF103FB8', p0, p1); } /** * @param p0 * @param p1 */ static N_0x5BC885EBD75FAA7D(p0: any, p1: any): void { inv('0x5BC885EBD75FAA7D', p0, p1); } /** * Valid pain IDs: 0..12 these names are not official, but here is a list of the IDs: * 1 burning, * 2 drowning, * 3 coughing, * 4 nothing, * 5 nothing, * 6 coughing_2, * 7 nothing, * 8 nothing, * 9 hurtingSick?, * 10 hurtingFall?, * 11 nothing, * 12 choking * * @param ped * @param painId * @param p2 * @param p3 * @param isNetwork */ static playPain(ped: Ped, painId: int, p2: float, p3: boolean, isNetwork: boolean): void { inv('0xBC9AE166038A5CEC', ped.handle, painId, f(p2), p3, isNetwork); } /** * *STOP_AUDIO** * * @param p0 */ static N_0x6AB944DF68B512D3(p0: any): void { inv('0x6AB944DF68B512D3', p0); } static N_0xDAD6CD07CAA4F382(): void { inv('0xDAD6CD07CAA4F382'); } /** * soundId maybe be incorrect name for param p2, in the decompiles is always -2 * * @param soundName * @param soundsetName * @param soundId * @returns */ static prepareSound(soundName: string, soundsetName: string, soundId: int): any { return inv('0xE368E8422C860BA7', soundName, soundsetName, soundId); } /** * @param p0 * @param p1 */ static N_0x259ACC5B52A2B2D9(p0: any, p1: any): void { inv('0x259ACC5B52A2B2D9', p0, p1); } /** * @param audSpeechEvent */ static N_0x1E6F9A9FE1A99F36(audSpeechEvent: string): void { inv('0x1E6F9A9FE1A99F36', audSpeechEvent); } /** * @param p0 * @param p1 * @param p2 * @param p3 */ static N_0x017492B2201E3428(p0: any, p1: any, p2: any, p3: any): void { inv('0x017492B2201E3428', p0, p1, p2, p3); } /** * @returns */ static N_0xE600F61F54A444A6(): any { return inv('0xE600F61F54A444A6'); } /** * @param scene * @param variable * @param value */ static setAudioSceneVariable(scene: string, variable: string, value: float): void { inv('0xEF21A9EF089A2668', scene, variable, f(value)); } /** * Old name: _PLAY_AMBIENT_SPEECH_AT_COORDS * * @param pos * @returns params */ static playAmbientSpeechFromPositionNative(pos: Vector3): [any, number] { const result = inv<[number, number]>('0xED640017ED337E45', f(pos.x), f(pos.y), f(pos.z), pvi()); return [result[0], result[1]]; } /** * @param p0 * @param p1 * @param p2 * @param p3 */ static N_0x5E3CCF03995388B5(p0: any, p1: any, p2: any, p3: any): void { inv('0x5E3CCF03995388B5', p0, p1, p2, p3); } /** * @param entity * @returns */ static N_0x886657C5B3D8EDE3(entity: Entity): any { return inv('0x886657C5B3D8EDE3', entity.handle); } /** * @param p0 */ static N_0x6B7A88A61B41E589(p0: any): void { inv('0x6B7A88A61B41E589', p0); } /** * @param p0 * @param p1 * @param p2 */ static N_0x821C32C728B24477(p0: any, p1: any, p2: any): void { inv('0x821C32C728B24477', p0, p1, p2); } /** * @param ped * @param p1 * @returns */ static isPedInAnyConversation(ped: Ped, p1: boolean): boolean { return !!inv('0x54B187F111D9C6F8', ped.handle, p1, rai()); } /** * Hashes: VOFX_PLAYER_MALE01, VOFX_PLAYER_MALE02, VOFX_PLAYER_MALE03, VOFX_PLAYER_FEMALE01, VOFX_PLAYER_FEMALE02, VOFX_PLAYER_FEMALE03 * * @param ped * @param voice */ static setVofxPedVoice(ped: Ped, voice: string | number): void { inv('0x2703EFB583F0949A', ped.handle, _h(voice)); } /** * @param ped * @returns */ static isAnySpeechPlaying(ped: Ped): boolean { return !!inv('0x729072355FA39EC9', ped.handle, rai()); } /** * @param convoRoot */ static clearConversationHistoryForScriptedConversation(convoRoot: string): void { inv('0xEF51242E35242B47', convoRoot); } /** * @param p0 * @param p1 */ static N_0x018ABE833CA64D2A(p0: any, p1: any): void { inv('0x018ABE833CA64D2A', p0, p1); } /** * nullsub, doesn't do anything * * @param active */ static setGpsActive(active: boolean): void { inv('0x3BD3F52BA9B1E4E8', active); } /** * Old name: _PLAY_SOUND_FROM_POSITION * * @param SoundName * @param pos * @param SetName * @param bOverNetwork * @param nNetworkRange * @param isExteriorLoc * @param p8 */ static playSoundFromCoord(SoundName: string, pos: Vector3, SetName: string, bOverNetwork: boolean, nNetworkRange: int, isExteriorLoc: boolean, p8: int): void { inv('0xCCE219C922737BFA', SoundName, f(pos.x), f(pos.y), f(pos.z), SetName, bOverNetwork, nNetworkRange, isExteriorLoc, p8); } /** * @param streamName * @param soundSet * @returns */ static loadStream(streamName: string, soundSet: string): boolean { return !!inv('0x1F1F957154EC51DF', streamName, soundSet, rai()); } /** * @param p0 * @param p1 */ static N_0x9EB779765E68C52E(p0: any, p1: any): void { inv('0x9EB779765E68C52E', p0, p1); } static N_0x43037ABFE214A851(): void { inv('0x43037ABFE214A851'); } /** * @returns */ static N_0xA6A3A3F96B8B030E(): any { return inv('0xA6A3A3F96B8B030E'); } /** * @param p0 * @returns */ static isScriptedConversationPlaying(p0: string): boolean { return !!inv('0x1ECC76792F661CF5', p0, rai()); } /** * @param p0 * @param p1 */ static setPortalSettingsOverride(p0: string, p1: string): void { inv('0x044DBAD7A7FA2BE5', p0, p1); } /** * @param ped * @param disabled * @returns */ static setIsScriptedSpeechDisabled(ped: Ped, disabled: boolean): any { return inv('0xB2DE3AEBE31150E2', ped.handle, disabled); } /** * @param p0 * @param p1 * @param p2 * @param p3 * @returns */ static N_0x9D6DEC9791A4E501(p0: any, p1: any, p2: any, p3: any): any { return inv('0x9D6DEC9791A4E501', p0, p1, p2, p3); } /** * Old Name: _STOP_SOUND_WITH_ID * * @param soundId */ static stopSound(soundId: int): void { inv('0x3210BCB36AF7621B', soundId); } /** * @param p0 * @returns */ static N_0xF336E9F989B3518F(p0: string): int { return inv('0xF336E9F989B3518F', p0, rai()); } /** * @param p0 * @param p1 */ static N_0xFCDEC42B1C78B7F8(p0: any, p1: any): void { inv('0xFCDEC42B1C78B7F8', p0, p1); } /** * @param ped */ static N_0x8E901B65206C2D3E(ped: Ped): void { inv('0x8E901B65206C2D3E', ped.handle); } /** * @param p0 */ static N_0x7E176C676F8652A9(p0: any): void { inv('0x7E176C676F8652A9', p0); } /** * item: FUSE, value returned from 0x2E1CDC1FF3B8473E * soundSet: HUD_SHOP_SOUNDSET, COMPANIONS_ROBBERIES_SOUNDSET * * @param item * @param soundSet * @returns */ static isScriptedAudioCustom(item: string | number, soundSet: string | number): boolean { return !!inv('0x6DF942C4179BE5AB', _h(item), _h(soundSet), rai()); } /** * @param p0 * @returns */ static N_0xD05A460328560477(p0: any): any { return inv('0xD05A460328560477', p0); } /** * Checks if the ped can play the speech or has the speech file, last parameter is usually false. * * @param ped * @param speechName * @param unk * @returns */ static doesContextExistForThisPed(ped: Ped, speechName: string, unk: boolean): boolean { return !!inv('0x49B99BF3FDA89A7A', ped.handle, speechName, unk, rai()); } /** * @returns */ static N_0x2B101AD9F651243A(): any { return inv('0x2B101AD9F651243A'); } /** * @param p0 * @returns */ static N_0x131EC9247E7A2903(p0: any): any { return inv('0x131EC9247E7A2903', p0); } /** * @param ped * @param name */ static setAmbientVoiceName(ped: Ped, name: string): void { inv('0x6C8065A3B780185B', ped.handle, name); } /** * @param play */ static playEndCreditsMusic(play: boolean): void { inv('0xCD536C4D33DCC900', play); } /** * @param eventName * @returns */ static cancelMusicEvent(eventName: string): boolean { return !!inv('0x5B17A90291133DA5', eventName, rai()); } /** * @param ped * @returns */ static isAmbientSpeechDisabled(ped: Ped): boolean { return !!inv('0x932C2D096A2C3FFF', ped.handle, rai()); } /** * Not implemented. * * @param animal * @param mood */ static setAnimalMood(animal: Ped, mood: int): void { inv('0xCC97B29285B1DC3B', animal.handle, mood); } /** * @param convoRoot * @param p1 * @param p2 * @param clone */ static startScriptConversation(convoRoot: string, p1: boolean, p2: boolean, clone: boolean): void { inv('0x6B17C62C9635D2DC', convoRoot, p1, p2, clone); } /** * @param p0 */ static N_0xEB4D592620B8C209(p0: any): void { inv('0xEB4D592620B8C209', p0); } static releaseScriptAudioBank(): void { inv('0x7A2D8AD0A9EB9C3F'); } static N_0x4BE3EC91C01F0FE8(): void { inv('0x4BE3EC91C01F0FE8'); } /** * @param zoneName * @param isEnabled * @param p2 */ static setAmbientZoneState(zoneName: string, isEnabled: boolean, p2: boolean): void { inv('0xBDA07E5950085E46', zoneName, isEnabled, p2); } /** * @param audioName * @param entity * @param audioRef * @param isNetwork * @param p4 * @param p5 */ static playSoundFromEntity(audioName: string, entity: Entity, audioRef: string, isNetwork: boolean, p4: any, p5: any): void { inv('0x6FB1DA3CA9DA7D90', audioName, entity.handle, audioRef, isNetwork, p4, p5); } /** * @param ped * @returns */ static isAmbientSpeechPlaying(ped: Ped): boolean { return !!inv('0x9072C8B49907BFAD', ped.handle, rai()); } /** * @param ambientZone * @param pos * @param heading */ static setAmbientZonePosition(ambientZone: string, pos: Vector3, heading: float): void { inv('0x3743CE6948194349', ambientZone, f(pos.x), f(pos.y), f(pos.z), f(heading)); } /** * @param entity * @returns */ static N_0x2FFF4A78384AFFDF(entity: Entity): any { return inv('0x2FFF4A78384AFFDF', entity.handle); } /** * @param emitterName * @param toggle */ static setStaticEmitterEnabled(emitterName: string, toggle: boolean): void { inv('0x399D2D3B33F1B8EB', emitterName, toggle); } /** * @param ped * @param toggle */ static setPedIsDrunk(ped: Ped, toggle: boolean): void { inv('0x95D2D383D5396B8A', ped.handle, toggle); } /** * @param p0 * @param p1 * @param p2 * @param p3 * @param p4 */ static N_0x839C9F124BE74D94(p0: any, p1: any, p2: any, p3: any, p4: any): void { inv('0x839C9F124BE74D94', p0, p1, p2, p3, p4); } /** * @param ambientZone * @param p1 * @param p2 */ static setAmbientZoneListStatePersistent(ambientZone: string, p1: boolean, p2: boolean): void { inv('0xF3638DAE8C4045E1', ambientZone, p1, p2); } /** * @param p0 * @param p1 * @param p2 * @param p3 * @param p4 */ static pauseScriptedConversation(p0: string, p1: boolean, p2: boolean, p3: boolean, p4: boolean): void { inv('0x8530AD776CD72B12', p0, p1, p2, p3, p4); } /** * @param p0 */ static N_0x6652B0C8F3D414D0(p0: any): void { inv('0x6652B0C8F3D414D0', p0); } /** * @param soundId * @param name * @param soundSet * @param p3 */ static playSoundFrontendWithSoundId(soundId: int, name: string, soundSet: string, p3: boolean): void { inv('0xCE5D0FFE83939AF1', soundId, name, soundSet, p3); } /** * @param p0 * @returns */ static N_0xFE5C6177064BD390(p0: boolean): boolean { return !!inv('0xFE5C6177064BD390', p0, rai()); } /** * @param p0 * @param currentScriptedConvoLine * @returns */ static N_0x152ED1B56E8F1F50(p0: string, currentScriptedConvoLine: int): Ped | null { return createFromHandle('Ped', inv('0x152ED1B56E8F1F50', p0, currentScriptedConvoLine, rai())); } /** * @param p0 * @returns */ static N_0x4A98E228A936DBCC(p0: any): any { return inv('0x4A98E228A936DBCC', p0); } /** * https://en.m.wikipedia.org/wiki/Walla * * @param p0 * @param p1 */ static setPedWallaDensity(p0: float, p1: float): void { inv('0x149AEE66F0CB3A99', f(p0), f(p1)); } /** * item: value returned from 0x2E1CDC1FF3B8473E * soundSet: HUD_SHOP_SOUNDSET, COMPANIONS_ROBBERIES_SOUNDSET * * @param item * @param soundSet * @param p2 */ static playSoundFromItem(item: string | number, soundSet: string | number, p2: any): void { inv('0xE8EAFF7B41EDD291', _h(item), _h(soundSet), p2); } /** * @param ped * @returns */ static getPedSongIndexHost(ped: Ped): any { return inv('0x2DBBF0C5E19383EE', ped.handle); } /** * @param p0 */ static N_0x3E98AC9D8C56C62C(p0: any): void { inv('0x3E98AC9D8C56C62C', p0); } /** * @param sceneset */ static stopAudioSceneset(sceneset: string): void { inv('0x9428447DED71FC7E', sceneset); } /** * @param p0 * @returns */ static getCurrentScriptedConversationLine(p0: string): int { return inv('0x480357EE890C295A', p0, rai()); } /** * @param convoRoot * @param ped * @param characterName */ static addPedToConversation(convoRoot: string, ped: Ped, characterName: string): void { inv('0x95D9F4BC443956E7', convoRoot, ped.handle, characterName); } /** * @param entity * @param p1 * @param p2 * @param p3 * @param p4 */ static N_0xABDB4863D3D72021(entity: Entity, p1: any, p2: any, p3: float, p4: any): void { inv('0xABDB4863D3D72021', entity.handle, p1, p2, f(p3), p4); } /** * Not implemented. * * @param ped */ static N_0x864A842B86993851(ped: Ped): void { inv('0x864A842B86993851', ped.handle); } /** * @param p0 * @returns */ static N_0xDC2F83A0612CA34D(p0: any): any { return inv('0xDC2F83A0612CA34D', p0); } /** * https://github.com/femga/rdr3_discoveries/tree/master/audio/soundsets * * @param soundsetName * @param p1 * @returns */ static prepareSoundset(soundsetName: string, p1: boolean): any { return inv('0xD9130842D7226045', soundsetName, p1); } /** * @param entity * @returns */ static N_0x62377977E4F08668(entity: Entity): AnimScene | null { return createFromHandle('AnimScene', inv('0x62377977E4F08668', entity.handle, rai())); } /** * @param audioName * @param sceneset * @returns */ static startAudioSceneset(audioName: string, sceneset: string): any { return inv('0x6339C1EA3979B5F7', audioName, sceneset); } /** * @param p0 * @param p1 * @param p2 * @param p3 * @param p4 */ static N_0x448F2647DD6F2E27(p0: any, p1: any, p2: any, p3: any, p4: any): void { inv('0x448F2647DD6F2E27', p0, p1, p2, p3, p4); } /** * @param p0 * @returns */ static N_0xB18FEC133C7C6C69(p0: any): any { return inv('0xB18FEC133C7C6C69', p0); } /** * @param p0 * @returns */ static N_0x295859EB18F48D82(p0: string): int { return inv('0x295859EB18F48D82', p0, rai()); } /** * @param p0 */ static N_0xCBF2BEBB468A34F3(p0: any): void { inv('0xCBF2BEBB468A34F3', p0); } /** * @param p0 * @param p1 * @param p2 * @returns */ static stopScriptedConversation(p0: string, p1: boolean, p2: boolean): int { return inv('0xD79DEEFB53455EBA', p0, p1, p2, rai()); } /** * @param p0 * @param p1 */ static N_0xFD461D0ABA5559B1(p0: any, p1: any): void { inv('0xFD461D0ABA5559B1', p0, p1); } /** * *IS_SCRIPTED_CONVERSATION** * * @param convoRoot * @returns */ static N_0xD0730C1FA40348D9(convoRoot: string): boolean { return !!inv('0xD0730C1FA40348D9', convoRoot, rai()); } /** * https://github.com/femga/rdr3_discoveries/tree/master/audio/audio_flags * * @param flagName * @param toggle */ static setAudioFlag(flagName: string, toggle: boolean): void { inv('0xB9EFD5C25018725A', flagName, toggle); } /** * @param vehicle * @param toggle */ static setHornEnabled(vehicle: Vehicle, toggle: boolean): void { inv('0x76D683C108594D0E', vehicle.handle, toggle); } /** * p1 is possibly naSpeechAudibility, naSpeechType, or naSpeechEventTypeRequestPriority * SKIP_* - START_* * * @param speechEventType Refer to {@link naSpeechEventType} * @param p1 * @param p2 */ static N_0x0D7FD6A55FD63AEF(speechEventType: int, p1: int, p2: boolean): void { inv('0x0D7FD6A55FD63AEF', speechEventType, p1, p2); } /** * @param p0 * @param p1 * @param p2 * @param p3 * @param p4 */ static N_0x06C5DF5EE444BC6B(p0: any, p1: any, p2: any, p3: any, p4: any): void { inv('0x06C5DF5EE444BC6B', p0, p1, p2, p3, p4); } /** * @param p0 * @returns */ static N_0x2B9C37C01BF25EDB(p0: any): any { return inv('0x2B9C37C01BF25EDB', p0); } /** * @param p0 */ static N_0x64B956F4E761DF5C(p0: any): void { inv('0x64B956F4E761DF5C', p0); } /** * @param p0 */ static setAudioOnlineTransitionStage(p0: string): void { inv('0x9B1FC259187C97C0', p0); } /** * @param streamId */ static playStreamFrontend(streamId: int): void { inv('0x58FCE43488F9F5F4', streamId); } /** * _IS_SOUND_RUNNING(?) * * @param audioName * @param audioRef * @returns */ static N_0x580D71DFE0088E34(audioName: string, audioRef: string): boolean { return !!inv('0x580D71DFE0088E34', audioName, audioRef, rai()); } /** * nullsub, doesn't do anything * * @param p0 */ static registerScriptWithAudio(p0: boolean): void { inv('0xC6ED9D5092438D91', p0); } /** * @param p0 * @param p1 */ static N_0x35B8C070E0C16E2F(p0: any, p1: any): void { inv('0x35B8C070E0C16E2F', p0, p1); } static N_0x138ADB94F8B90616(): void { inv('0x138ADB94F8B90616'); } /** * @param p0 * @param p1 * @param p2 */ static N_0x380A2E353AD30917(p0: any, p1: any, p2: any): void { inv('0x380A2E353AD30917', p0, p1, p2); } /** * @param convoRoot * @returns */ static createNewScriptedConversation(convoRoot: string): any { return inv('0xD2C91A0B572AAE56', convoRoot); } /** * @param p0 * @param p1 * @param p2 * @returns */ static N_0x7678FE0455ED1145(p0: any, p1: any, p2: any): any { return inv('0x7678FE0455ED1145', p0, p1, p2); } /** * @param entity * @param groupName * @param p2 */ static addEntityToAudioMixGroup(entity: Entity, groupName: string, p2: float): void { inv('0x153973AB99FE8980', entity.handle, groupName, f(p2)); } /** * @param ped * @param p1 */ static stopCurrentPlayingAmbientSpeech(ped: Ped, p1: any): void { inv('0xB8BEC0CA6F0EDB0F', ped.handle, p1); } /** * @param p0 * @param ped * @param p2 * @returns */ static isPedInCurrentConversation(p0: string, ped: Ped, p2: any): boolean { return !!inv('0x049E937F18F4020C', p0, ped.handle, p2, rai()); } /** * @param p0 * @returns */ static isScriptedConversionOngoing(p0: string): boolean { return !!inv('0xF01C570E0A0A1E67', p0, rai()); } /** * @param soundsetName */ static releaseSoundset(soundsetName: string): void { inv('0x531A78D6BF27014B', soundsetName); } /** * @returns */ static getSoundId(): int { return inv('0x430386FE9BF80B45', rai()); } /** * @param listeningToPed * @param ped * @param listenerName */ static N_0xA2323A2EAE32A290(listeningToPed: Ped, ped: Ped, listenerName: string): void { inv('0xA2323A2EAE32A290', listeningToPed.handle, ped.handle, listenerName); } /** * @param p0 * @returns */ static N_0xF0EE69F500952FA5(p0: any): any { return inv('0xF0EE69F500952FA5', p0); } /** * Old name: AUDIO_IS_SCRIPTED_MUSIC_PLAYING * * @returns */ static isMusicPlaying(): boolean { return !!inv('0x845FFC3A4FEEFA3E', rai()); } /** * Used in Script Function NET_CAMP_CLIENT_UPDATE_PED_ROLE_STATE_SHOP: hash exists! Playing hash * * @param ped * @param p1 */ static N_0xB93A769B8B726950(ped: Ped, p1: string | number): void { inv('0xB93A769B8B726950', ped.handle, _h(p1)); } /** * @param variableName * @param variableValue * @param audioName * @param audioRef */ static setVariableOnSoundWithName(variableName: string, variableValue: float, audioName: string, audioRef: string): void { inv('0x9821B68CD3E05F2B', variableName, f(variableValue), audioName, audioRef); } /** * @param p0 * @param p1 */ static N_0xD733528B6C35647A(p0: any, p1: any): void { inv('0xD733528B6C35647A', p0, p1); } /** * @param ambientZone * @param p1 */ static clearAmbientZoneListState(ambientZone: string, p1: boolean): void { inv('0x120C48C614909FA4', ambientZone, p1); } /** * @param p0 * @param p1 */ static N_0xE891504B2F0E2DBA(p0: any, p1: any): void { inv('0xE891504B2F0E2DBA', p0, p1); } /** * @param ped * @param p1 * @returns */ static N_0xDF947FE0D551684E(ped: Ped, p1: string): boolean { return !!inv('0xDF947FE0D551684E', ped.handle, p1, rai()); } /** * @param entity * @param p1 */ static N_0xE9694B2D6CB87B06(entity: Entity, p1: any): void { inv('0xE9694B2D6CB87B06', entity.handle, p1); } /** * @param audioBank */ static releaseNamedScriptAudioBank(audioBank: string): void { inv('0x77ED170667F50170', audioBank); } /** * @param zoneName * @param p1 */ static clearAmbientZoneState(zoneName: string, p1: boolean): void { inv('0x218DD44AAAC964FF', zoneName, p1); } /** * @param p0 * @param p1 */ static N_0x3E93DDDCBB6111E4(p0: string, p1: float): void { inv('0x3E93DDDCBB6111E4', p0, f(p1)); } /** * @param p0 * @returns */ static N_0x5A13586A9447931F(p0: boolean): boolean { return !!inv('0x5A13586A9447931F', p0, rai()); } /** * @param p0 * @param p1 */ static N_0xBC07CA8FD710E7FD(p0: any, p1: any): void { inv('0xBC07CA8FD710E7FD', p0, p1); } /** * @param p0 * @param p1 */ static N_0x078F77FD1A43EAB3(p0: any, p1: any): void { inv('0x078F77FD1A43EAB3', p0, p1); } /** * @param p0 * @param p1 */ static N_0x341CDD17EFC2472E(p0: any, p1: any): void { inv('0x341CDD17EFC2472E', p0, p1); } /** * @param ambientZone * @param p1 * @param p2 */ static setAmbientZoneListState(ambientZone: string, p1: boolean, p2: boolean): void { inv('0x9748FA4DE50CCE3E', ambientZone, p1, p2); } /** * @param streamId * @returns */ static isStreamPlaying(streamId: int): boolean { return !!inv('0xD11FA52EB849D978', streamId, rai()); } /** * @param convoRoot * @param p1 * @param p2 * @param clone */ static preloadScriptConversation(convoRoot: string, p1: boolean, p2: boolean, clone: boolean): void { inv('0x3B3CAD6166916D87', convoRoot, p1, p2, clone); } /** * Creates stream and returns streamId handle to be used with PLAY_STREAM_* natives * https://github.com/femga/rdr3_discoveries/tree/master/audio/create_stream * * @param streamName * @param soundSet * @returns */ static getLoadedStreamIdFromCreation(streamName: string, soundSet: string): int { return inv('0x0556C784FA056628', streamName, soundSet, rai()); } /** * @param vehicle * @param p1 */ static setAudioVehiclePriority(vehicle: Vehicle, p1: any): void { inv('0xE5564483E407F914', vehicle.handle, p1); } /** * @param soundName * @param soundsetName */ static releaseShardSounds(soundName: string, soundsetName: string): void { inv('0x9D746964E0CF2C5F', soundName, soundsetName); } /** * Gets the hash for the last played speech line. * * @param ped * @returns */ static getLastPlayedSpeechForPed(ped: Ped): any { return inv('0x6BFFB7C276866996', ped.handle); } static N_0xE7E6CB8B713ED190(): void { inv('0xE7E6CB8B713ED190'); } /** * @param p0 * @returns */ static N_0x44A5EEF54F62E823(p0: any): any { return inv('0x44A5EEF54F62E823', p0); } /** * @param ped * @param streamId */ static playStreamFromPed(ped: Ped, streamId: int): void { inv('0x89049DD63C08B5D1', ped.handle, streamId); } /** * Only used in R* SP Script cv_mus_shared * * @param convoRoot * @param animScene * @returns */ static N_0x79F9C57B8D0DFE90(convoRoot: string, animScene: AnimScene): boolean { return !!inv('0x79F9C57B8D0DFE90', convoRoot, animScene.handle, rai()); } static forcePedPanicWalla(): void { inv('0x062D5EAD4DA2FA6A'); } /** * @param p0 * @param p1 * @param p2 */ static N_0xF64034D533CE8AAC(p0: any, p1: any, p2: any): void { inv('0xF64034D533CE8AAC', p0, p1, p2); } /** * @param p0 * @param p1 * @param p2 * @param p3 * @param p4 * @param p5 */ static N_0x6DA15746D5CC1A92(p0: any, p1: any, p2: any, p3: any, p4: any, p5: any): void { inv('0x6DA15746D5CC1A92', p0, p1, p2, p3, p4, p5); } /** * Params: p5 seems to be always 0 * * @param soundId * @param soundName * @param entity * @param soundsetName * @param p4 * @param p5 */ static playSoundFromEntityWithSet(soundId: int, soundName: string, entity: Entity, soundsetName: string, p4: boolean, p5: any): void { inv('0xF1C5310FEAA36B48', soundId, soundName, entity.handle, soundsetName, p4, p5); } /** * @param p0 * @param p1 * @param p2 * @param p3 * @param p4 * @param p5 * @param p6 * @param p7 */ static N_0x5AE0CB5F35F034FD(p0: any, p1: any, p2: any, p3: any, p4: any, p5: any, p6: any, p7: any): void { inv('0x5AE0CB5F35F034FD', p0, p1, p2, p3, p4, p5, p6, p7); } /** * @param p0 * @param currentScriptedConvoLine * @returns */ static N_0x935DBD96D4A3DA1F(p0: string, currentScriptedConvoLine: int): int { return inv('0x935DBD96D4A3DA1F', p0, currentScriptedConvoLine, rai()); } /** * @param p0 */ static N_0xDC93F0948F2C28F4(p0: any): void { inv('0xDC93F0948F2C28F4', p0); } /** * p1: Entity.Relationship * p2: Player, Enemy, Teammate, Neutral * * @param ped * @param p1 * @param p2 */ static setSoundRelationshipOnPed(ped: Ped, p1: string, p2: string): void { inv('0x2E31ACA7477CF00F', ped.handle, p1, p2); } /** * @param audioName * @param audioRef */ static stopSoundWithName(audioName: string, audioRef: string): void { inv('0x0F2A2175734926D8', audioName, audioRef); } /** * @param p0 * @param p1 * @returns */ static N_0xC369E2234E34A0CA(p0: any, p1: any): any { return inv('0xC369E2234E34A0CA', p0, p1); } /** * @param p0 * @param p1 * @returns */ static N_0x72E4D1C4639BC465(p0: Entity, p1: any): any { return inv('0x72E4D1C4639BC465', p0.handle, p1); } /** * @param audioName * @param soundsetName * @returns */ static hasSoundAudioNameFinished(audioName: string, soundsetName: string): any { return inv('0x714A0EA7DE1167BE', audioName, soundsetName); } /** * *UNLOAD*[A-C]* - USE_* * * @param speechContext */ static unloadSpeechContext(speechContext: string): void { inv('0x87E6302FC61208CC', speechContext); } /** * @param p0 * @param p1 */ static N_0x3A3BE6B920525237(p0: any, p1: any): void { inv('0x3A3BE6B920525237', p0, p1); } /** * @param p0 * @returns */ static N_0xC68C02DE259C927C(p0: any): any { return inv('0xC68C02DE259C927C', p0); } /** * @param ped * @param toggle */ static disablePedPainAudio(ped: Ped, toggle: boolean): void { inv('0xA9A41C1E940FB0E8', ped.handle, toggle); } /** * Old name: _FORCE_VEHICLE_ENGINE_AUDIO * * @param vehicle * @param audioName */ static forceUseAudioGameObject(vehicle: Vehicle, audioName: string): void { inv('0x4F0C413926060B38', vehicle.handle, audioName); } /** * @param soundName * @param entity * @param soundsetName * @param soundId * @returns */ static prepareSoundWithEntity(soundName: string, entity: Entity, soundsetName: string, soundId: int): any { return inv('0x4AD019591E94C064', soundName, entity.handle, soundsetName, soundId); } /** * @param p0 * @param p1 * @param p2 */ static stopAllScriptedConversions(p0: boolean, p1: boolean, p2: boolean): void { inv('0x36559148B78853B3', p0, p1, p2); } /** * @param entity * @param p1 */ static removeEntityFromAudioMixGroup(entity: Entity, p1: float): void { inv('0x18EB48CFC41F2EA0', entity.handle, f(p1)); } /** * *AUDIO_IS** - _AUDIO_TRIGGER* */ static N_0x7455CD705F7E933E(): void { inv('0x7455CD705F7E933E'); } /** * @param soundId */ static releaseSoundId(soundId: int): void { inv('0x353FC880830B88FA', soundId); } /** * Old Name: _SET_VARIABLE_ON_SOUND_WITH_ID * * @param soundId * @param variableName * @param variableValue */ static setVariableOnSound(soundId: int, variableName: string, variableValue: float): void { inv('0x503703EC1781B7D6', soundId, variableName, f(variableValue)); } /** * @param convoRoot */ static startPreloadedConversation(convoRoot: string): void { inv('0x23641AFE870AF385', convoRoot); } /** * @param scene * @returns */ static startAudioScene(scene: string): boolean { return !!inv('0x013A80FC08F6E4F2', scene, rai()); } /** * @returns */ static getMusicPlaytime(): int { return inv('0xE7A0D23DC414507B', rai()); } /** * Checks for MOONSHINE_BAND * * @param entity * @returns */ static N_0xBE28DB99556FF8D9(entity: Entity): number { return (inv('0xBE28DB99556FF8D9', entity.handle, rai())) & 0xFFFFFFFF; } static N_0x569ABC36E28DDEAA(): void { inv('0x569ABC36E28DDEAA'); } /** * struct ScriptedSpeechParams * { * const char* speechName; * const char* voiceName; * alignas(8) int variation; * alignas(8) Hash speechParamHash; * alignas(8) Ped listenerPed; * alignas(8) BOOL syncOverNetwork; * alignas(8) int v7; * alignas(8) int v8; * }; 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}; * PLAY_PED_AMBIENT_SPEECH_NATIVE(PLAYER_PED_ID(), (Any*)¶ms); Old name: _PLAY_AMBIENT_SPEECH1 * https://github.com/femga/rdr3_discoveries/tree/master/audio/audio_banks * * @param speaker * @returns params */ static playPedAmbientSpeechNative(speaker: Ped): [any, number] { const result = inv<[number, number]>('0x8E04FEDD28D42462', speaker.handle, pvi()); return [result[0], result[1]]; } /** * Checks whether the horn of a vehicle is currently played. * * @param vehicle * @returns */ static isHornActive(vehicle: Vehicle): boolean { return !!inv('0x9D6BFC12B05C6121', vehicle.handle, rai()); } /** * @param p0 * @param p1 * @param p2 * @param p3 */ static N_0xCFAD2C8CD1054523(p0: any, p1: any, p2: any, p3: any): void { inv('0xCFAD2C8CD1054523', p0, p1, p2, p3); } /** * @param audioName * @param sceneset * @returns */ static setAudioSceneset(audioName: string, sceneset: string): any { return inv('0xAC84686C06184B0D', audioName, sceneset); } /** * @param p0 */ static removePortalSettingsOverride(p0: string): void { inv('0xB4BBFD9CD8B3922B', p0); } /** * @param convoRoot * @returns */ static isScriptedConversationLoaded(convoRoot: string): boolean { return !!inv('0xDF0D54BE7A776737', convoRoot, rai()); } /** * @param p0 * @param p1 * @param pos * @param isSrlLoaded * @param p6 * @returns */ static N_0xFFE9C53DEEA3DB0B(p0: any, p1: any, pos: Vector3, isSrlLoaded: boolean, p6: any): any { return inv('0xFFE9C53DEEA3DB0B', p0, p1, f(pos.x), f(pos.y), f(pos.z), isSrlLoaded, p6); } static N_0x3D0BBCCF401B5FDB(): void { inv('0x3D0BBCCF401B5FDB'); } /** * @param streamId */ static stopStream(streamId: int): void { inv('0xA4718A1419D18151', streamId); } /** * https://github.com/femga/rdr3_discoveries/tree/master/audio/frontend_soundsets * * @param audioName * @param audioRef * @param p2 * @param p3 */ static playSoundFrontend(audioName: string, audioRef: string, p2: boolean, p3: any): void { inv('0x67C540AA08E4A6F5', audioName, audioRef, p2, p3); } /** * @param ped * @param shaking */ static stopPedSpeaking(ped: Ped, shaking: boolean): void { inv('0x9D64D7405520E3D3', ped.handle, shaking); } /** * @param audioBank * @returns */ static requestScriptAudioBank(audioBank: string): boolean { return !!inv('0x2F844A8B08D76685', audioBank, rai()); } /** * @param p0 * @param p1 */ static N_0xC886CD666ADD42E1(p0: any, p1: any): void { inv('0xC886CD666ADD42E1', p0, p1); } /** * @param p0 */ static N_0xEA546C31FD45F8CD(p0: any): void { inv('0xEA546C31FD45F8CD', p0); } /** * @param p0 */ static N_0x0FAF7171BF613B80(p0: any): void { inv('0x0FAF7171BF613B80', p0); } /** * nullsub, doesn't do anything */ static unregisterScriptWithAudio(): void { inv('0xA8638BE228D4751A'); } /** * @param convoRoot * @param singleLineIndex */ static N_0x40CA665AB9D8D505(convoRoot: string, singleLineIndex: int): void { inv('0x40CA665AB9D8D505', convoRoot, singleLineIndex); } static stopAllScriptedAudioSounds(): void { inv('0x2E399EAFBEEA74D5'); } /** * @param p0 */ static N_0xF232C2C546AC16D0(p0: string): void { inv('0xF232C2C546AC16D0', p0); } /** * https://github.com/femga/rdr3_discoveries/blob/master/audio/music_events/music_events.lua * * @param eventName * @returns */ static triggerMusicEvent(eventName: string): boolean { return !!inv('0x706D57B0F50DA710', eventName, rai()); } /** * @param p0 */ static restartScriptedConversation(p0: string): void { inv('0x9AEB285D1818C9AC', p0); } /** * @param ped */ static N_0xC4CFCE4C656EF480(ped: Ped): void { inv('0xC4CFCE4C656EF480', ped.handle); } /** * @param p0 * @param p1 */ static N_0x3A00D87B20A2A5E4(p0: any, p1: any): void { inv('0x3A00D87B20A2A5E4', p0, p1); } /** * @param pedHandle * @returns */ static isAnimalVocalizationPlaying(pedHandle: Ped): boolean { return !!inv('0xC265DF9FB44A9FBD', pedHandle.handle, rai()); } /** * @param p0 * @returns */ static isAnyConversationPlaying(p0: boolean): boolean { return !!inv('0xA2CAC9DEF0195E6F', p0, rai()); } /** * @param name * @param pos */ static triggerExplosion(name: string, pos: Vector3): void { inv('0x374F0E716BFCDE82', name, f(pos.x), f(pos.y), f(pos.z)); } /** * @param ropeId * @param p1 */ static N_0x2651DDC0EA269073(ropeId: int, p1: float): void { inv('0x2651DDC0EA269073', ropeId, f(p1)); } static stopAudioScenes(): void { inv('0xBAC7FC81A75EC1A1'); } /** * @param audioName * @param audioRef * @param p2 * @param p3 * @param p4 * @param p5 */ static playSound(audioName: string, audioRef: string, p2: boolean, p3: any, p4: boolean, p5: any): void { inv('0x7FF4944CC209192D', audioName, audioRef, p2, p3, p4, p5); } /** * @param scene * @returns */ static isAudioSceneActive(scene: string): boolean { return !!inv('0xB65B60556E2A9225', scene, rai()); } /** * @param context * @param block */ static blockSpeechContext(context: string, block: boolean): void { inv('0x6378A235374B852F', context, block); } /** * @param p0 * @returns */ static N_0x847748AE5D7B1071(p0: boolean): boolean { return !!inv('0x847748AE5D7B1071', p0, rai()); } }