import type { Ped } from '../classes/Ped'; import type { Volume } from '../classes/Volume'; import type { PopZone } from '../types/NativeAliases'; 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 Population { /** * @param popZone * @param populationSetHash */ static setPopzonePopulationSet(popZone: number, populationSetHash: string | number): void { inv('0x3E6A49D9B519E85C', popZone, _h(populationSetHash)); } /** * @param p0 * @param p1 * @param priority */ static setSpawnerInfoPriority(p0: string | number, p1: string | number, priority: int): void { inv('0x60CDE717A6D47769', _h(p0), _h(p1), priority); } /** * flags: see 0xB56D41A694E42E86 * * @param volume * @param includeFlags * @param excludeFlags * @param p3 * @param p4 * @param p5 * @param p6 */ static addAmbientSpawnRestriction(volume: Volume, includeFlags: int, excludeFlags: int, p3: string | number, p4: string | number, p5: string | number, p6: int): void { inv('0x18262CAFEBB5FBE1', volume.handle, includeFlags, excludeFlags, _h(p3), _h(p4), _h(p5), p6); } /** * Only used for Special Event (XMAS). * _SET_P* * * @param p0 */ static N_0xEC116EDB683AD479(p0: boolean): void { inv('0xEC116EDB683AD479', p0); } /** * @param p0 * @param p1 * @param p2 */ static N_0x2660E7720EDC4BD0(p0: any, p1: any, p2: any): void { inv('0x2660E7720EDC4BD0', p0, p1, p2); } static enableAmbientRoadPopulation(): void { inv('0xBC90BDF4E5228EA1'); } /** * Returns model hash of the closest fish * * @returns */ static getRandomFishTypeForLocation(): number { return (inv('0x595478B3BBC3076D', rai())) & 0xFFFFFFFF; } /** * @param p0 * @param p1 * @param p2 * @param p3 * @param p4 * @param p5 */ static N_0x8EC7CD701F872F87(p0: any, p1: any, p2: any, p3: any, p4: any, p5: any): void { inv('0x8EC7CD701F872F87', p0, p1, p2, p3, p4, p5); } /** * @param p0 * @param p1 */ static N_0x638FCFC6042A9473(p0: any, p1: any): void { inv('0x638FCFC6042A9473', p0, p1); } /** * @param popZone * @returns */ static isPopzoneValid(popZone: number): boolean { return !!inv('0xA5BD585005EFCAD4', popZone, rai()); } /** * @param popZone * @param p1 */ static N_0x08892122769770D5(popZone: number, p1: boolean): void { inv('0x08892122769770D5', popZone, p1); } /** * @param p0 */ static N_0xC4533E3E87125C9E(p0: any): void { inv('0xC4533E3E87125C9E', p0); } /** * @param popZone */ static deleteScriptPopzone(popZone: number): void { inv('0xA6E6A66FC4CA4224', popZone); } /** * @param p0 * @param p1 */ static N_0xDBBF12EA7C1029B2(p0: any, p1: any): void { inv('0xDBBF12EA7C1029B2', p0, p1); } /** * @param popZone * @param p1 * @param p2 */ static N_0x7E6BC0B94F5928F0(popZone: number, p1: int, p2: int): void { inv('0x7E6BC0B94F5928F0', popZone, p1, p2); } /** * @param volume * @returns */ static createPopzoneFromVolume(volume: Volume): number { return inv('0x9AC1C64FE46B6D09', volume.handle, rai()); } /** * @param popSetHash * @param flags * @param p2 * @param p3 * @param p4 * @param pos * @returns */ static getRandomModelFromPopulationSet(popSetHash: string | number, flags: int, p2: string | number, p3: boolean, p4: boolean, pos: Vector3): number { return (inv('0x6B12ED8C77E8567B', _h(popSetHash), flags, _h(p2), p3, p4, f(pos.x), f(pos.y), f(pos.z), rai())) & 0xFFFFFFFF; } /** * @param popSetHash * @param index * @returns */ static getPedModelNameInPopulationSet(popSetHash: string | number, index: int): number { return (inv('0x3EAFA1C533B7139E', _h(popSetHash), index, rai())) & 0xFFFFFFFF; } /** * @param includeFlags * @param excludeFlags * @param p2 * @param p3 * @param p4 * @param volume */ static N_0x2161278C6322F740(includeFlags: int, excludeFlags: int, p2: int, p3: string | number, p4: int, volume: Volume): void { inv('0x2161278C6322F740', includeFlags, excludeFlags, p2, _h(p3), p4, volume.handle); } /** * @param volume */ static removeAmbientSpawnRestriction(volume: Volume): void { inv('0xA1CFB35069D23C23', volume.handle); } /** * @param popZone * @param p1 */ static N_0x0F1861101C9A9944(popZone: number, p1: boolean): void { inv('0x0F1861101C9A9944', popZone, p1); } /** * flags: https://github.com/Halen84/RDR3-Native-Flags-And-Enums/tree/main/PedFilterFlags * * @param volume * @param includeFlags * @param excludeFlags * @param p3 * @param p4 * @param p5 * @param p6 */ static addAmbientAvoidanceRestriction(volume: Volume, includeFlags: int, excludeFlags: int, p3: string | number, p4: string | number, p5: string | number, p6: int): void { inv('0xB56D41A694E42E86', volume.handle, includeFlags, excludeFlags, _h(p3), _h(p4), _h(p5), p6); } /** * Params: p1 = 1 & 2 in R* Scripts, 0 = Disable avoidance, 1 = Enabled avoidance, 2 = Enabled avoidance (?) * * @param ped * @param p1 */ static setPedShouldIgnoreAvoidanceVolumes(ped: Ped, p1: int): void { inv('0xF74E134F40192884', ped.handle, p1); } /** * @param popZone * @param p1 */ static N_0x578E2FA64E847C60(popZone: number, p1: int): void { inv('0x578E2FA64E847C60', popZone, p1); } /** * @param p0 */ static N_0x247F86595D396344(p0: any): void { inv('0x247F86595D396344', p0); } /** * @param p0 * @param p1 */ static clearSpawnerInfoPriority(p0: string | number, p1: string | number): void { inv('0x217A54DE2D200305', _h(p0), _h(p1)); } /** * @param unk */ static disableAmbientRoadPopulation(unk: boolean): void { inv('0xC6DCC2A3A8825C85', unk); } static N_0x324AB2A68AD8AEE5(): void { inv('0x324AB2A68AD8AEE5'); } /** * @param popSetHash * @returns */ static getNumModelsInPopulationSet(popSetHash: string | number): int { return inv('0xA1E3171ED0E47564', _h(popSetHash), rai()); } /** * @param bitFlag * @param p1 * @param p2 * @param p3 * @param p4 */ static N_0xF45E46DEECF7DF6E(bitFlag: int, p1: any, p2: any, p3: any, p4: any): void { inv('0xF45E46DEECF7DF6E', bitFlag, p1, p2, p3, p4); } /** * flags: see 0xB56D41A694E42E86 * * @param volume */ static removeAmbientAvoidanceRestriction(volume: Volume): void { inv('0x74C2B3DC0B294102', volume.handle); } }