import type { Entity } from '../classes/Entity'; import type { Ped } from '../classes/Ped'; import type { Pickup } from '../classes/Pickup'; import type { Player } from '../classes/Player'; import type { Prop } from '../classes/Prop'; import type { Vehicle } from '../classes/Vehicle'; import type { Volume } from '../classes/Volume'; 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 Graphics { /** * When this is set to ON, shadows only draw as you get nearer. When OFF, they draw from a further distance. * * @param toggle */ static cascadeShadowsEnableEntityTracker(toggle: boolean): void { inv('0x8FBFD2AEB196B369', toggle); } /** * Only used in R* Script nb_stalking_hunter * * @param p0 */ static N_0xD1472AFF30C103D6(p0: float): void { inv('0xD1472AFF30C103D6', f(p0)); } /** * @param worldX * @param worldY * @param worldZ * @returns screenX; screenY */ static getScreenCoordFromWorldCoord(worldX: float, worldY: float, worldZ: float): [boolean, number, number] { const result = inv<[boolean, number, number]>('0xCB50D7AFCC8B0EC6', f(worldX), f(worldY), f(worldZ), pvf(), pvf(), rai()); return [!!result[0], result[1], result[2]]; } /** * @param point * @param pos * @param radius */ static setTrackedPointInfo(point: int, pos: Vector3, radius: float): void { inv('0xF6FDA3D4404D4F2C', point, f(pos.x), f(pos.y), f(pos.z), f(radius)); } /** * Draws a 2D sprite on the screen. Parameters: * textureDict - Name of texture dictionary to load texture from textureName - Name of texture to load from texture dictionary screenX/Y - Screen offset (0.5 = center) * scaleX/Y - Texture scaling. Negative values can be used to flip the texture on that axis. (0.5 = half) heading - Texture rotation in degrees (default = 0.0) positive is clockwise, measured in degrees red,green,blue - Sprite color (default = 255/255/255) alpha - opacity level https://github.com/femga/rdr3_discoveries/tree/master/useful_info_from_rpfs/textures * * @param textureDict * @param textureName * @param screenX * @param screenY * @param width * @param height * @param heading * @param color * @param alpha * @param p11 */ static drawSprite(textureDict: string, textureName: string, screenX: float, screenY: float, width: float, height: float, heading: float, color: Color, alpha: int, p11: boolean): void { inv('0xC9884ECADE94CB34', textureDict, textureName, f(screenX), f(screenY), f(width), f(height), f(heading), color.r, color.g, color.b, color.a, alpha, p11); } /** * @returns */ static getCurrentNumberOfLocalPhotos(): int { return inv('0x78C56B8A7B1D000C', rai()); } /** * @param ptfxHandle * @param p1 */ static removeParticleFx(ptfxHandle: int, p1: boolean): void { inv('0x459598F579C98929', ptfxHandle, p1); } /** * Removes all decals in range from a position, it includes the bullet holes, blood pools, petrol... * * @param pos * @param range */ static removeDecalsInRange(pos: Vector3, range: float): void { inv('0x86DE59FA02902B40', f(pos.x), f(pos.y), f(pos.z), f(range)); } /** * @param p0 */ static setPhotoOverlayEffectStat(p0: int): void { inv('0x8B3296278328B5EB', p0); } /** * @param ptfxHandle * @param r * @param g * @param b * @param p4 */ static setParticleFxLoopedColour(ptfxHandle: int, r: float, g: float, b: float, p4: boolean): void { inv('0x239879FC61C610CC', ptfxHandle, f(r), f(g), f(b), p4); } /** * @param effectNameHash */ static animpostfxStopStackhashPostfx(effectNameHash: string | number): void { inv('0xEDA5CBECF56E1386', _h(effectNameHash)); } /** * @param value */ static changePhotoModeContrast(value: float): void { inv('0x62B9F9A1272AED80', f(value)); } /** * @param ptfxHandle * @param alpha */ static setParticleFxLoopedAlpha(ptfxHandle: int, alpha: float): void { inv('0x88786E76234F7054', ptfxHandle, f(alpha)); } /** * @param p0 * @param p1 * @param p2 * @param p3 * @returns */ static N_0xA15CCAB8AD038291(p0: any, p1: any, p2: any, p3: any): any { return inv('0xA15CCAB8AD038291', p0, p1, p2, p3); } /** * @param entity */ static removeEntityFromEntityMask(entity: Entity): void { inv('0x56A786E87FF53478', entity.handle); } /** * @param p0 * @param p1 * @param p2 */ static setParticleFxNonLoopedEmitterScale(p0: float, p1: float, p2: float): void { inv('0x56C392C2BD78B024', f(p0), f(p1), f(p2)); } /** * @param effectNameHash * @returns */ static animpostfxIsStackhashPlaying(effectNameHash: string | number): any { return inv('0xEEF83A759AE06A27', _h(effectNameHash)); } /** * @param p0 */ static N_0x503941F65DBA24EC(p0: any): void { inv('0x503941F65DBA24EC', p0); } /** * @param p0 * @param p1 * @param p2 * @param p3 * @param p4 * @param p5 * @param p6 */ static N_0x48FE0DB54045B975(p0: any, p1: any, p2: any, p3: any, p4: any, p5: any, p6: any): void { inv('0x48FE0DB54045B975', p0, p1, p2, p3, p4, p5, p6); } static cascadeShadowsClearShadowSampleType(): void { inv('0xF7C29D7C12C36F03'); } /** * Draws a rectangle on the screen. -x: The relative X point of the center of the rectangle. (0.0-1.0, 0.0 is the left edge of the screen, 1.0 is the right edge of the screen) -y: The relative Y point of the center of the rectangle. (0.0-1.0, 0.0 is the top edge of the screen, 1.0 is the bottom edge of the screen) -width: The relative width of the rectangle. (0.0-1.0, 1.0 means the whole screen width) -height: The relative height of the rectangle. (0.0-1.0, 1.0 means the whole screen height) -R: Red part of the color. (0-255) -G: Green part of the color. (0-255) -B: Blue part of the color. (0-255) -A: Alpha part of the color. (0-255, 0 means totally transparent, 255 means totally opaque) * * @param x * @param y * @param width * @param height * @param color * @param alpha * @param p8 * @param p9 */ static drawRect(x: float, y: float, width: float, height: float, color: Color, alpha: int, p8: boolean, p9: boolean): void { inv('0x405224591DF02025', f(x), f(y), f(width), f(height), color.r, color.g, color.b, color.a, alpha, p8, p9); } /** * @param tvChannel * @param playlistName * @param restart */ static setTvChannelPlaylist(tvChannel: int, playlistName: string, restart: boolean): void { inv('0xDEC6B25F5DC8925B', tvChannel, playlistName, restart); } /** * @param checkpoint */ static deleteCheckpoint(checkpoint: int): void { inv('0x0DED5B0C8EBAAE12', checkpoint); } /** * *DISABLE** * * @param p0 */ static N_0xFB680A9B33D0EDBE(p0: boolean): void { inv('0xFB680A9B33D0EDBE', p0); } /** * @returns */ static N_0xC28F62AC9774FC1B(): any { return inv('0xC28F62AC9774FC1B'); } /** * @param p1 * @param p2 * @param p3 * @returns p0 */ static loadMissionCreatorPhoto(p1: any, p2: any, p3: any): [boolean, number] { const result = inv<[boolean, number]>('0x84F0BA7462FF8D58', pvi(), p1, p2, p3, rai()); return [!!result[0], result[1]]; } /** * @param entity * @returns layer0; layer1; layer2; layer3 */ static getEntityMaskLayers(entity: Entity): [boolean, number, number, number, number] { const result = inv<[boolean, number, number, number, number]>('0xE8A8378BF651079C', entity.handle, pvf(), pvf(), pvf(), pvf(), rai()); return [!!result[0], result[1], result[2], result[3], result[4]]; } /** * @param ped * @param p1 * @param size * @param p3 */ static addBloodPoolsForPedWithParams(ped: Ped, p1: float, size: float, p3: float): void { inv('0xC349EE1E6EFA494B', ped.handle, f(p1), f(size), f(p3)); } /** * Returns proxyInteriorIndex * * @param interiorId * @returns */ static getProxyInteriorIndex(interiorId: int): int { return inv('0x5D1C5D8E62E8EE1C', interiorId, rai()); } static endPetrolTrailDecals(): void { inv('0x0E126AAE933F3B56'); } /** * ANIMPOSTFX_* * * @param effectName * @param p1 * @param p2 * @returns p3 */ static N_0xFBF161FCFEC8589E(effectName: string, p1: int, p2: boolean): [boolean, boolean] { const result = inv<[boolean, number]>('0xFBF161FCFEC8589E', effectName, p1, p2, pvi(), rai()); return [!!result[0], !!result[1]]; } /** * 0 = succeeded * 1 = getting status * 2 = failed * * @returns */ static getStatusOfSaveHighQualityPhoto(): int { return inv('0xD6663EC374092383', rai()); } /** * @returns */ static isPhotoFrame(): boolean { return !!inv('0x86076AE35CBBE55F', rai()); } /** * @param p0 * @param p1 * @param p2 * @param p3 * @param p4 * @param p5 * @param p6 * @param p7 * @param p8 * @param p9 * @param p10 */ static N_0x4D14AF567FC02885(p0: any, p1: any, p2: any, p3: any, p4: any, p5: any, p6: any, p7: any, p8: any, p9: any, p10: any): void { inv('0x4D14AF567FC02885', p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10); } /** * @param effectName * @returns */ static animpostfxIsRunning(effectName: string): boolean { return !!inv('0x4A123E85D7C4CA0B', effectName, rai()); } /** * Used for script function RPG_GLOBAL_STATS__PRIVATE__ACTIVATE_STAT_FLAG - Quite and Inspiration Aura equip * Params: 0f, 2f, 2f * * @param p0 * @param p1 * @param p2 */ static setEntityAura(p0: float, p1: float, p2: float): void { inv('0x249CD6B7285536F2', f(p0), f(p1), f(p2)); } /** * ANIMPOSTFX_* * * @param effectNameHash * @returns */ static N_0xE75CDDEBF618C8FF(effectNameHash: string | number): boolean { return !!inv('0xE75CDDEBF618C8FF', _h(effectNameHash), rai()); } /** * @param pos */ static addBloodTrailSplat(pos: Vector3): void { inv('0xF5E45CB1CF965D2D', f(pos.x), f(pos.y), f(pos.z)); } /** * https://i.imgur.com/ULQU9US.jpg * More rounded and small puddle * * @param pos * @param unused */ static addBloodPool(pos: Vector3, unused: boolean): void { inv('0xFA2ECC78A6014D4F', f(pos.x), f(pos.y), f(pos.z), unused); } /** * Only used in finale2, smuggler2, winter4 * _SET_CLOUD_A* - _SET_CLOUD_H* * * @param pos */ static setCloudPosition(pos: Vector3): void { inv('0x10C1767B93257480', f(pos.x), f(pos.y), f(pos.z)); } /** * @param p0 * @param p1 */ static N_0xA04EF43030593ABC(p0: any, p1: any): void { inv('0xA04EF43030593ABC', p0, p1); } /** * Called together with FREE_MEMORY_FOR_LOW_QUALITY_PHOTO * * @param p0 * @returns */ static beginCreateLowQualityCopyOfPhoto(p0: int): boolean { return !!inv('0x494A9874F17A7D50', p0, rai()); } /** * @param player */ static setPlayerAppearInPhoto(player: Player): void { inv('0x75D568607909333E', player.handle); } /** * @param checkpoint * @returns */ static doesCheckpointHaveFx(checkpoint: int): boolean { return !!inv('0x4C11CCACB7C02B6E', checkpoint, rai()); } /** * Creates blood pools for the given ped in some interval for a few seconds. * * @param ped */ static addBloodPoolsForPed(ped: Ped): void { inv('0xDFCE8CE9F3EBE93F', ped.handle); } /** * @param texture * @param ped * @param playerSlot * @returns */ static pedshotGeneratePersonaPhoto(texture: string, ped: Ped, playerSlot: int): boolean { return !!inv('0xD9C24F53631F2372', texture, ped.handle, playerSlot, rai()); } /** * @returns */ static queueOperationToCreateSortedListOfPhotos(): any { return inv('0xA42EDF1E88734A7E'); } /** * @param p0 */ static setRegionPhotoTakenStat(p0: string): void { inv('0xD1031B83AC093BC7', p0); } /** * @param effectName */ static animpostfxSetToUnload(effectName: string): void { inv('0x37D7BDBA89F13959', effectName); } /** * @param proxyInteriorIndex * @returns */ static isProxyInteriorIndexArtificialLightsEnabled(proxyInteriorIndex: int): boolean { return !!inv('0x113857D66A9CABE6', proxyInteriorIndex, rai()); } /** * @param p0 */ static setPhotoInPhotomodeStat(p0: boolean): void { inv('0xFA91736933AB3D93', p0); } /** * @param entity * @param intensity */ static setLightsIntensityForEntity(entity: Entity, intensity: float): void { inv('0x07C0F87AAC57F2E4', entity.handle, f(intensity)); } /** * @param entity */ static updateLightsOnEntity(entity: Entity): void { inv('0xBDBACB52A03CC760', entity.handle); } /** * @returns */ static getStatusOfTakeHighQualityPhoto(): int { return inv('0x4A3DA74C3CCB1725', rai()); } /** * @returns */ static N_0x285438C26C732F9D(): any { return inv('0x285438C26C732F9D'); } /** * Sets a flag defining whether or not script draw commands should continue being drawn behind the pause menu. This is usually used for draw commands that are used with a world render target. * * @param toggle */ static setScriptGfxDrawBehindPausemenu(toggle: boolean): void { inv('0x906B86E6D7896B9E', toggle); } /** * @param p0 */ static setDistrictPhotoTakenStat(p0: string): void { inv('0x9937FACBBF267244', p0); } /** * @param effectName * @param ped * @param offset * @param rot * @param boneIndex * @param scale * @param xAxis * @param yAxis * @param zAxis * @returns */ static startParticleFxLoopedOnPedBone(effectName: string, ped: Ped, offset: Vector3, rot: Vector3, boneIndex: int, scale: float, xAxis: boolean, yAxis: boolean, zAxis: boolean): int { return inv('0xE689C1B1432BB8AF', effectName, ped.handle, f(offset.x), f(offset.y), f(offset.z), f(rot.x), f(rot.y), f(rot.z), boneIndex, f(scale), xAxis, yAxis, zAxis, rai()); } /** * @param p0 */ static setPhotoStudioStat(p0: int): void { inv('0x8E6AFF353C09652E', p0); } /** * @param effectName */ static animpostfxStop(effectName: string): void { inv('0xB4FD7446BAB2F394', effectName); } /** * Related to Campfires. * p1: AMB_BONFIRE_MP, AMB_CAMPFIRE_LRG_MP * * @param entity * @param p1 * @param r * @param g * @param b */ static setParticleFxAmbientColour(entity: Entity, p1: string, r: float, g: float, b: float): void { inv('0x3C61B52B00848C26', entity.handle, p1, f(r), f(g), f(b)); } /** * Resets the effect of SET_PARTICLE_FX_OVERRIDE * * @param name */ static resetParticleFxOverride(name: string): void { inv('0x274B3DABF7E72DEF', name); } /** * must be called after ANIMPOSTFX_PLAY, strength 0.0f - 1.0f * * @param effectName * @param strength */ static animpostfxSetStrength(effectName: string, strength: float): void { inv('0xCAB4DD2D5B2B7246', effectName, f(strength)); } /** * @param p0 * @param p1 * @param p2 * @param p3 * @param p4 */ static N_0xCC3B787E73E64160(p0: any, p1: any, p2: any, p3: any, p4: any): void { inv('0xCC3B787E73E64160', p0, p1, p2, p3, p4); } /** * @param volume */ static setTvVolume(volume: float): void { inv('0x73A97068787D7231', f(volume)); } /** * Creates a tracked point, useful for checking the visibility of a 3D point on screen. * * @returns */ static createTrackedPoint(): int { return inv('0xFB405CB357C69CB9', rai()); } /** * @param effectNameHash * @returns */ static animpostfxIsPreloadingByStackhash(effectNameHash: string | number): any { return inv('0x59EA80079B86D8C7', _h(effectNameHash)); } /** * @param personaPhotoLocalCacheType */ static N_0xA1A86055792FB249(personaPhotoLocalCacheType: int): void { inv('0xA1A86055792FB249', personaPhotoLocalCacheType); } /** * @param p0 */ static setPhotoSelfStat(p0: boolean): void { inv('0x2705D18C11B61046', p0); } /** * https://github.com/femga/rdr3_discoveries/blob/master/graphics/animpostfx * * @param effectName */ static animpostfxPlay(effectName: string): void { inv('0x4102732DF6B4005F', effectName); } /** * *DISABLE** */ static N_0x4046493D2EEACA0E(): void { inv('0x4046493D2EEACA0E'); } static pedshotPreviousPersonaPhotoDataCleanup(): void { inv('0x3E2FDDBE435A8787'); } /** * effectName2, p2 and p3 are unused ANIMPOSTFX_* * * @param effectName * @param effectName2 * @param p2 * @param p3 */ static N_0x26DD2FB0A88CC412(effectName: string, effectName2: string, p2: any, p3: any): void { inv('0x26DD2FB0A88CC412', effectName, effectName2, p2, p3); } /** * Example: https://pastebin.com/tTgpER9A * * @param slot * @param p1 */ static generateSwatchTextureDirectly(slot: int, p1: any): void { inv('0x646ED1A1D28487DF', slot, p1); } /** * @param p0 */ static setParticleFxBulletImpactLodrangeScale(p0: float): void { inv('0x8DCCC98DC0DBF9E4', f(p0)); } /** * @param p0 * @param p1 */ static N_0x1FF8731BE1DFC0C0(p0: any, p1: any): void { inv('0x1FF8731BE1DFC0C0', p0, p1); } /** * ANIMPOSTFX_* * * @param effectNameHash */ static N_0x38D9D50F2085E9B3(effectNameHash: string | number): void { inv('0x38D9D50F2085E9B3', _h(effectNameHash)); } /** * Used for script function RPG_GLOBAL_STATS__PRIVATE__DEACTIVATE_STAT_FLAG - Inspiration Aura unequip */ static resetEntityAura(): void { inv('0xAF4D239B8903FCBE'); } /** * @param p0 * @param p1 * @param p2 * @param p3 * @param p4 * @param p5 * @param p6 * @param p7 * @param p8 * @param p9 * @param p10 * @param p11 * @param p12 * @param p13 * @param p14 * @param p15 * @param p16 * @param p17 * @param p18 * @param p19 * @param p20 * @param p21 * @returns */ static addDecal(p0: any, p1: any, p2: any, p3: any, p4: any, p5: any, p6: any, p7: any, p8: any, p9: any, p10: any, p11: any, p12: any, p13: any, p14: any, p15: any, p16: any, p17: any, p18: any, p19: any, p20: any, p21: any): int { return inv('0x57CB267624EF85C0', p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16, p17, p18, p19, p20, p21, rai()); } /** * _SET_D* or _SET_E* */ static N_0xB032C085D9A03907(): void { inv('0xB032C085D9A03907'); } /** * Returns handle to be used with REMOVE_GRASS_CULL_SPHERE * * @param pos * @param p3 * @param p4 * @returns */ static setGrassCullSphere(pos: Vector3, p3: float, p4: int): int { return inv('0x27219300C36A8D40', f(pos.x), f(pos.y), f(pos.z), f(p3), p4, rai()); } static N_0xA21AF60C9F99CCC5(): void { inv('0xA21AF60C9F99CCC5'); } /** * @param effectName * @param entity * @param offset * @param rot * @param scale * @param xAxis * @param yAxis * @param zAxis * @returns */ static startParticleFxLoopedOnEntity(effectName: string, entity: Entity, offset: Vector3, rot: Vector3, scale: float, xAxis: boolean, yAxis: boolean, zAxis: boolean): int { return inv('0xBD41E1440CE39800', effectName, entity.handle, f(offset.x), f(offset.y), f(offset.z), f(rot.x), f(rot.y), f(rot.z), f(scale), xAxis, yAxis, zAxis, rai()); } /** * 0 = succeeded * 1 = getting status * 2 = failed * * @returns */ static getStatusOfSortedListOperation(): int { return inv('0xB28894CD7408BD0C', rai()); } /** * @returns */ static getPhotoModeContrast(): float { return inv('0x98F4154989B81EC6', raf()); } /** * @param pos */ static addBloodTrailPoint(pos: Vector3): void { inv('0xDD9DC1AB63D513CE', f(pos.x), f(pos.y), f(pos.z)); } /** * Returns whether the 'killFX' setting is enabled. ANIMPOSTFX_* * * @returns */ static N_0xFF584F097C17FA8F(): boolean { return !!inv('0xFF584F097C17FA8F', rai()); } /** * Old name: _GET_STATUS_OF_DRAW_LOW_QUALITY_PHOTO * * @param p0 * @returns */ static getStatusOfCreateLowQualityCopyOfPhoto(p0: any): int { return inv('0x13430D3D5A45F14B', p0, rai()); } /** * @param effectName */ static animpostfxClearEffect(effectName: string): void { inv('0xC5CB91D65852ED7E', effectName); } static pedshotInitCleanupData(): void { inv('0x55285F885F662169'); } /** * @param vegModifierHandle * @param p1 */ static removeVegModifierSphere(vegModifierHandle: int, p1: int): void { inv('0x9CF1836C03FB67A2', vegModifierHandle, p1); } /** * @param p0 */ static setStatePhotoTakenStat(p0: string): void { inv('0x8952E857696B8A79', p0); } /** * Sets the draw order for script draw commands. * * @param drawOrder */ static setScriptGfxDrawOrder(drawOrder: int): void { inv('0xCFCC78391C8B3814', drawOrder); } /** * @param p0 */ static enableStaticVegModifier(p0: string | number): void { inv('0xDFEA23EC90113657', _h(p0)); } /** * @returns */ static getTvChannel(): int { return inv('0xF90FBFD68F3C59AE', rai()); } static N_0x9D1B0B5066205692(): void { inv('0x9D1B0B5066205692'); } /** * @param alpha */ static setParticleFxNonLoopedAlpha(alpha: float): void { inv('0xE8A35938A7026CEA', f(alpha)); } /** * @param point */ static destroyTrackedPoint(point: int): void { inv('0x37A59922109F8F1C', point); } /** * @param p0 */ static N_0x67B0778C62E74423(p0: any): void { inv('0x67B0778C62E74423', p0); } /** * ANIMPOSTFX_* * * @param effectNameHash */ static N_0x71845905BCCDE781(effectNameHash: string | number): void { inv('0x71845905BCCDE781', _h(effectNameHash)); } static N_0xF2F543D48F319A3A(): void { inv('0xF2F543D48F319A3A'); } /** * ANIMPOSTFX_* * * @returns */ static N_0x3DA7A10583A4BEC0(): boolean { return !!inv('0x3DA7A10583A4BEC0', rai()); } /** * Does not affect weapons, particles, fire/explosions, flashlights or the sun. * When set to true, all emissive textures (including ped components that have light effects), street lights, building lights, vehicle lights, etc will all be turned off. state: True turns off all artificial light sources in the map: buildings, street lights, car lights, etc. False turns them back on. * * @param state */ static setArtificialLightsState(state: boolean): void { inv('0xB2797619A7C7747B', state); } /** * Possible values: * "CSM_ST_POINT" * "CSM_ST_LINEAR" * "CSM_ST_BOX3x3" * "CSM_ST_BOX4x4" * "CSM_ST_DITHER2_LINEAR" * "CSM_ST_CUBIC" * "CSM_ST_POISSON16" * "CSM_ST_SOFT8" * "CSM_ST_SOFT16" * "CSM_ST_SOFT32" * "CSM_ST_DITHER16_RPDB" * "CSM_ST_POISSON16_RPDB_GNORM" * "CSM_ST_HIGHRES_BOX4x4" * "CSM_ST_ESM" * * @param type */ static cascadeShadowsSetShadowSampleType(type: string): void { inv('0xCE4774E0F9AD48D1', type); } /** * @param p0 */ static N_0x519928DF02EB5101(p0: any): void { inv('0x519928DF02EB5101', p0); } /** * Gets set to 1 when GET_STATUS_OF_TAKE_HIGH_QUALITY_PHOTO = PHOTO_OPERATION_SUCCEEDED * * @param p0 */ static N_0x0D5B19C34068FEE7(p0: any): void { inv('0x0D5B19C34068FEE7', p0); } /** * type must be less than or equal to 20 * * @param entity * @param type */ static setLightsTypeForEntity(entity: Entity, type: int): void { inv('0xAB72C67163DC4DB4', entity.handle, type); } /** * @param p0 * @param p1 * @param p2 * @param p3 */ static N_0xD543487A1F12828F(p0: any, p1: any, p2: any, p3: any): void { inv('0xD543487A1F12828F', p0, p1, p2, p3); } /** * @param p0 */ static N_0xFF8018C778349234(p0: any): void { inv('0xFF8018C778349234', p0); } /** * Old name: _SET_HIDOF_ENV_BLUR_PARAMS * * @param p0 * @param p1 * @param p2 * @param p3 * @param p4 * @param p5 */ static setHidofOverride(p0: boolean, p1: boolean, p2: float, p3: float, p4: float, p5: float): void { inv('0xCC23AA1A7CBFE840', p0, p1, f(p2), f(p3), f(p4), f(p5)); } /** * @param effectName * @param entity * @param offset * @param rot * @param boneIndex * @param scale * @param xAxis * @param yAxis * @param zAxis * @returns */ static startParticleFxLoopedOnEntityBone(effectName: string, entity: Entity, offset: Vector3, rot: Vector3, boneIndex: int, scale: float, xAxis: boolean, yAxis: boolean, zAxis: boolean): int { return inv('0xD3BA6EC7F2FBD5E9', effectName, entity.handle, f(offset.x), f(offset.y), f(offset.z), f(rot.x), f(rot.y), f(rot.z), boneIndex, f(scale), xAxis, yAxis, zAxis, rai()); } /** * Sets the checkpoint icon color. * * @param checkpoint * @param color * @param alpha */ static setCheckpointRgba2(checkpoint: int, color: Color, alpha: int): void { inv('0x99AFF17222D4DEB4', checkpoint, color.r, color.g, color.b, color.a, alpha); } /** * nullsub, doesn't do anything (GTA5 leftover, there is no phone in RDR3) * * @param p0 * @param photoRotation */ static drawLowQualityPhotoToPhone(p0: boolean, photoRotation: int): void { inv('0xF1142E5D64B47802', p0, photoRotation); } /** * https://gfycat.com/meagerfaireyra * * @param entity * @param color */ static setLightsColorForEntity(entity: Entity, color: Color): void { inv('0x6EC2A67962296F49', entity.handle, color.r, color.g, color.b, color.a); } /** * @param effectName * @param ped * @param offset * @param rot * @param boneIndex * @param scale * @param axisX * @param axisY * @param axisZ * @returns */ static startParticleFxNonLoopedOnPedBone2(effectName: string, ped: Ped, offset: Vector3, rot: Vector3, boneIndex: int, scale: float, axisX: boolean, axisY: boolean, axisZ: boolean): any { return inv('0xC695870B8A149B96', effectName, ped.handle, f(offset.x), f(offset.y), f(offset.z), f(rot.x), f(rot.y), f(rot.z), boneIndex, f(scale), axisX, axisY, axisZ); } static N_0x981C7D863980FA51(): void { inv('0x981C7D863980FA51'); } /** * @param p0 * @param p1 */ static N_0x9F6D859C80708B26(p0: boolean, p1: boolean): void { inv('0x9F6D859C80708B26', p0, p1); } /** * @param oldAsset * @param newAsset */ static setParticleFxOverride(oldAsset: string, newAsset: string): void { inv('0xBE711A169E9C7E95', oldAsset, newAsset); } /** * @param p0 * @param p1 */ static N_0xA0F4D12D6042F6D5(p0: any, p1: any): void { inv('0xA0F4D12D6042F6D5', p0, p1); } /** * @param ptfxHandle * @param pos * @param rot */ static setParticleFxLoopedOffsets(ptfxHandle: int, pos: Vector3, rot: Vector3): void { inv('0xD3A4A95FC94FE83B', ptfxHandle, f(pos.x), f(pos.y), f(pos.z), f(rot.x), f(rot.y), f(rot.z)); } /** * @param p0 */ static disableStaticVegModifier(p0: string | number): void { inv('0xDD0BC0EDCB2162F6', _h(p0)); } /** * @param ptfxHandle * @param scale */ static setParticleFxLoopedScale(ptfxHandle: int, scale: float): void { inv('0x1A9E1C0D98D093B7', ptfxHandle, f(scale)); } /** * https://github.com/femga/rdr3_discoveries/blob/master/graphics/ptfx/ptfx_assets_non_looped.lua * * @param effectName * @param pos * @param rot * @param scale * @param eventType * @param bPeekOnly * @param bIsRegistered * @returns */ static startParticleFxNonLoopedAtCoord(effectName: string, pos: Vector3, rot: Vector3, scale: float, eventType: int, bPeekOnly: boolean, bIsRegistered: boolean): int { return inv('0x2E80BF72EF7C87AC', effectName, f(pos.x), f(pos.y), f(pos.z), f(rot.x), f(rot.y), f(rot.z), f(scale), eventType, bPeekOnly, bIsRegistered, rai()); } /** * @param p0 * @returns */ static isStaticVegModifierEnabled(p0: string | number): boolean { return !!inv('0xDE9BAD3292AA6D5E', _h(p0), rai()); } /** * https://github.com/femga/rdr3_discoveries/blob/master/graphics/timecycles * * @param modifierName */ static setTimecycleModifier(modifierName: string): void { inv('0xFA08722A5EA82DA7', modifierName); } /** * @param strength */ static setTimecycleModifierStrength(strength: float): void { inv('0xFDB74C9CC54C3F37', f(strength)); } /** * @param toggle */ static togglePausedRenderphases(toggle: boolean): void { inv('0xEF9E1C45732F55FA', toggle); } /** * R* Script spd_agnesdow1: p0 = SPD_AGNES_DOWD_01 * * @param p0 * @returns */ static N_0xFD05B1DDE83749FA(p0: string): boolean { return !!inv('0xFD05B1DDE83749FA', p0, rai()); } /** * @param p0 */ static setParticleFxFootLodrangeScale(p0: float): void { inv('0x2A1625858887D4E6', f(p0)); } /** * @param ptfxHandle * @returns */ static doesParticleFxLoopedExist(ptfxHandle: int): boolean { return !!inv('0x9DD5AFF561E88F2A', ptfxHandle, rai()); } /** * @param effectName * @param entity * @param offset * @param rot * @param scale * @param axisX * @param axisY * @param axisZ * @returns */ static startParticleFxNonLoopedOnEntity(effectName: string, entity: Entity, offset: Vector3, rot: Vector3, scale: float, axisX: boolean, axisY: boolean, axisZ: boolean): boolean { return !!inv('0xFF4C64C513388C12', effectName, entity.handle, f(offset.x), f(offset.y), f(offset.z), f(rot.x), f(rot.y), f(rot.z), f(scale), axisX, axisY, axisZ, rai()); } /** * @returns */ static getTogglePausedRenderphasesStatus(): boolean { return !!inv('0x86ED21BDB2791CE8', rai()); } /** * Only used in R* SP Script spd_agnesdown1 * * @param p0 * @returns */ static N_0x5C9C3A466B3296A8(p0: any): any { return inv('0x5C9C3A466B3296A8', p0); } /** * @param entity * @param mask */ static addEntityToEntityMask(entity: Entity, mask: int): void { inv('0xC6F81FCD15350323', entity.handle, mask); } /** * Always returns 200. * * @returns */ static getMaxNumberOfLocalPhotos(): int { return inv('0x8E587FCD30E05592', rai()); } /** * @param channel */ static setTvChannel(channel: int): void { inv('0x593FAF7FC9401A56', channel); } /** * @param pos * @param p3 */ static addPetrolTrailDecalInfo(pos: Vector3, p3: float): void { inv('0x73354FB6D03D2E8A', f(pos.x), f(pos.y), f(pos.z), f(p3)); } /** * ANIMPOSTFX_* * * @param effectName * @returns */ static N_0xB958D97A0DFAA0C2(effectName: string): boolean { return !!inv('0xB958D97A0DFAA0C2', effectName, rai()); } /** * @param txdHash * @param dict * @returns */ static isTextureInDict(txdHash: string | number, dict: string | number): boolean { return !!inv('0xA2A51869BDED733B', _h(txdHash), _h(dict), rai()); } static N_0x910E260AEAD855DE(): void { inv('0x910E260AEAD855DE'); } /** * @param p0 * @param p1 */ static N_0xC489FE31AC726512(p0: any, p1: any): void { inv('0xC489FE31AC726512', p0, p1); } /** * https://i.imgur.com/rPITUCV.jpg * More customizable and more like quadrants * * @param pos * @param p3 * @param size * @param p5 * @param permanent * @param p7 * @param p8 */ static addBloodPool2(pos: Vector3, p3: float, size: float, p5: float, permanent: boolean, p7: float, p8: boolean): void { inv('0xF708298675ABDC6A', f(pos.x), f(pos.y), f(pos.z), f(p3), f(size), f(p5), permanent, f(p7), p8); } /** * p1: 0.3f in R* Scripts * * @param waypointRecording * @param p1 */ static bloodTrailForWaypoint(waypointRecording: string, p1: float): void { inv('0xB9C92616929CC25D', waypointRecording, f(p1)); } /** * @param ptfxHandle * @param range */ static setParticleFxLoopedFarClipDist(ptfxHandle: int, range: float): void { inv('0x9B04D471DA0AD7AA', ptfxHandle, f(range)); } /** * @param p0 * @param p1 */ static N_0x085C5B61A0114F32(p0: any, p1: any): void { inv('0x085C5B61A0114F32', p0, p1); } /** * @param p0 */ static N_0x9F158A49B0D84C3C(p0: any): void { inv('0x9F158A49B0D84C3C', p0); } /** * @returns */ static N_0x5C674EB487891F6B(): any { return inv('0x5C674EB487891F6B'); } /** * Params: component - used in odriscolls1 and sean1 R* SP Script: COMPONENT_BINOCULARS_SCOPE01 * Triggers the binocular scaleform * * @param component */ static N_0x21F00E08CBB5F37B(component: string): void { inv('0x21F00E08CBB5F37B', component); } /** * Sets an unknown value related to timecycles. * * @param unk */ static resetAdaptation(unk: int): void { inv('0x297B72E2AF094742', unk); } /** * @param effectNameHash */ static animpostfxPreloadPostfxByStackhash(effectNameHash: string | number): void { inv('0xF3E039322BFBD4D8', _h(effectNameHash)); } /** * @param effectNameHash * @param p1 * @param p2 * @returns p3 */ static animpostfxHasEventTriggeredByStackhash(effectNameHash: string | number, p1: int, p2: boolean): [any, boolean] { const result = inv<[number, number]>('0x9AB192A9EF980EED', _h(effectNameHash), p1, p2, pvi()); return [result[0], !!result[1]]; } static destroySwatchTextureDict(): void { inv('0xDAD7FB8402651654'); } /** * @returns */ static beginTakeHighQualityPhoto(): any { return inv('0xA15BFFC0A01B34E1'); } /** * Old name: _IS_TV_PLAYLIST_ITEM_PLAYING * * @param videoCliphash * @returns */ static isTvshowCurrentlyPlaying(videoCliphash: string | number): boolean { return !!inv('0x4D562223E0EB65F3', _h(videoCliphash), rai()); } /** * @param p0 */ static N_0x8996FA6AD9FE4E90(p0: any): void { inv('0x8996FA6AD9FE4E90', p0); } /** * @param obj */ static removeDecalsFromObject(obj: Prop): void { inv('0xFB8972BAE0013140', obj.handle); } /** * https://imgur.com/a/I2swSDJ Old name: _SET_PICKUP_OBJECT_GLOW_ENABLED * * @param object * @param toggle */ static setPickupLight(object: Prop, toggle: boolean): void { inv('0x7DFB49BCDB73089A', object.handle, toggle); } /** * @param entity */ static removeParticleFxFromEntity(entity: Entity): void { inv('0x92884B4A49D81325', entity.handle); } /** * @param ptfxHandle * @param p1 */ static stopParticleFxLooped(ptfxHandle: int, p1: boolean): void { inv('0x22970F3A088B133B', ptfxHandle, p1); } /** * p1: AMB_ANN_COAL_CHUTE_DIVE, AMB_ANN_COAL_CHUTE * p2: EMIT * p3: either 0.0f or 1.0f * * @param entity * @param p1 * @param p2 * @param p3 */ static N_0x4FB67D172C4476F3(entity: Entity, p1: string, p2: string, p3: float): void { inv('0x4FB67D172C4476F3', entity.handle, p1, p2, f(p3)); } /** * @param typeHash * @param pos1 * @param pos2 * @param radius * @param color * @param alpha * @param reserved * @returns */ static createCheckpointWithNamehash(typeHash: string | number, pos1: Vector3, pos2: Vector3, radius: float, color: Color, alpha: int, reserved: int): int { return inv('0x175668836B44CBB0', _h(typeHash), f(pos1.x), f(pos1.y), f(pos1.z), f(pos2.x), f(pos2.y), f(pos2.z), f(radius), color.r, color.g, color.b, color.a, alpha, reserved, rai()); } static disableEntitymask(): void { inv('0x5C9978A2A3DC3D0D'); } /** * Returns iNumPixels, iPixelsVisible * * @param iTrackedPoint * @returns */ static N_0xDFE332A5DA6FE7C9(iTrackedPoint: int): int { return inv('0xDFE332A5DA6FE7C9', iTrackedPoint, rai()); } /** * @param entity * @returns layer0; layer1; layer2; layer3 */ static setEntityMaskLayers(entity: Entity): [number, number, number, number] { const result = inv<[number, number, number, number]>('0xE92012611461A42A', entity.handle, pvf(), pvf(), pvf(), pvf()); return [result[0], result[1], result[2], result[3]]; } /** * @param point * @returns */ static isTrackedPointVisible(point: int): boolean { return !!inv('0xCBB056BA159FB48D', point, rai()); } static clearTimecycleModifier(): void { inv('0x0E3F4AF2D63491FB'); } /** * Closes the the binocular scaleform */ static N_0x5AC6E0FA028369DE(): void { inv('0x5AC6E0FA028369DE'); } /** * ANIMPOSTFX_* * * @param effectNameHash */ static N_0xC76FC4C2FC5F4405(effectNameHash: string | number): void { inv('0xC76FC4C2FC5F4405', _h(effectNameHash)); } /** * @param effectName */ static animpostfxStopTag(effectName: string): void { inv('0xAD74C22A541AB987', effectName); } /** * Used in CREATE_BEZIER_BLOOD_TRAIL_OF_TYPE * *ENABLE** */ static N_0x812C1563185C6FB2(): void { inv('0x812C1563185C6FB2'); } /** * @param posseId */ static setPosseIdForPhoto(posseId: any): void { inv('0x564837D4A9EDE296', posseId); } /** * Sets the checkpoint color. * * @param checkpoint * @param color * @param alpha */ static setCheckpointRgba(checkpoint: int, color: Color, alpha: int): void { inv('0xCAAFC225E33B1D15', checkpoint, color.r, color.g, color.b, color.a, alpha); } /** * Health Core Effect Filter Potency: p1 = 1 * Stamina Core Effect Filter Potency: p1 = 2 * Multiple Core Effect Filter Potency: p1 = 3 * * @param effectName * @param p1 * @param potency */ static animpostfxSetPotency(effectName: string, p1: int, potency: float): void { inv('0xF972F0AB16DC5260', effectName, p1, f(potency)); } /** * @returns */ static pedshotIsAvailable(): any { return inv('0xAF6E67D073D2DCE2'); } /** * @param p0 */ static N_0xD9BC98B55BCFAA9B(p0: any): void { inv('0xD9BC98B55BCFAA9B', p0); } /** * @param pos * @param xScale * @param yScale * @param rotation * @param color * @param alpha */ static drawTvChannel(pos: Vector2, xScale: float, yScale: float, rotation: float, color: Color, alpha: int): void { inv('0xC0A145540254A840', f(pos.x), f(pos.y), f(xScale), f(yScale), f(rotation), color.r, color.g, color.b, color.a, alpha); } /** * @param handle */ static removeGrassCullSphere(handle: int): void { inv('0xAE7BF7CA9E4BA48D', handle); } /** * @param slots * @returns */ static createSwatchTextureDict(slots: int): any { return inv('0x3D084D5568FB4028', slots); } /** * _GET_C* - _GET_E* * * @returns */ static getModifiedVisibilityDistance(): float { return inv('0x25CA89B2A39DCC69', raf()); } /** * nullsub, doesn't do anything * * @param p0 */ static N_0x94B261F1F35293E1(p0: any): void { inv('0x94B261F1F35293E1', p0); } /** * Probably changes tvs from being a 3d audio to being "global" audio * * @param toggle */ static setTvAudioFrontend(toggle: boolean): void { inv('0x64437C98FCC5F291', toggle); } /** * @returns */ static getTimecycleTransitionModifierIndex(): int { return inv('0x2DA67BA3C8A6755D', rai()); } /** * @param ptfxHandle * @param propertyName * @param amount * @param noNetwork */ static setParticleFxLoopedEvolution(ptfxHandle: int, propertyName: string, amount: float, noNetwork: boolean): void { inv('0x3674F389B0FACD80', ptfxHandle, propertyName, f(amount), noNetwork); } /** * @param effectName * @returns */ static animpostfxHasLoaded(effectName: string): any { return inv('0xBF2DD155B2ADCD0A', effectName); } /** * @param decal * @returns */ static isDecalAlive(decal: int): boolean { return !!inv('0x3E4B4E5CF5D3EEB5', decal, rai()); } /** * @param p0 */ static N_0x453D16D41FC51D3E(p0: boolean): void { inv('0x453D16D41FC51D3E', p0); } /** * @param p0 * @param p1 * @param p2 * @param p3 * @param p4 * @param p5 * @param p6 * @returns */ static N_0xE63D68F455CA0B47(p0: any, p1: any, p2: any, p3: any, p4: any, p5: any, p6: any): any { return inv('0xE63D68F455CA0B47', p0, p1, p2, p3, p4, p5, p6); } /** * @param pos * @param colorR * @param colorG * @param colorB * @param range * @param intensity */ static drawLightWithRange(pos: Vector3, colorR: int, colorG: int, colorB: int, range: float, intensity: float): void { inv('0xD2D9E04C0DF927F4', f(pos.x), f(pos.y), f(pos.z), colorR, colorG, colorB, f(range), f(intensity)); } /** * Only used in guama1 R* SP Script while spawning the ship * *SET_ENTITY_QUATERNION** - SET_ENTITY_RENDER_* * * @param vehicle * @param toggle */ static setEntityRenderGuarmaShip(vehicle: Vehicle, toggle: boolean): void { inv('0xC38B4952B728397A', vehicle.handle, toggle); } /** * @param effectName * @param entity * @param offset * @param rot * @param scale * @param axisX * @param axisY * @param axisZ * @returns */ static startNetworkedParticleFxNonLoopedOnEntity(effectName: string, entity: Entity, offset: Vector3, rot: Vector3, scale: float, axisX: boolean, axisY: boolean, axisZ: boolean): boolean { return !!inv('0xE6CFE43937061143', effectName, entity.handle, f(offset.x), f(offset.y), f(offset.z), f(rot.x), f(rot.y), f(rot.z), f(scale), axisX, axisY, axisZ, rai()); } /** * @param lock */ static setPhotoModeExposureLocked(lock: boolean): void { inv('0x5CD6A2CCE5087161', lock); } static N_0x815653A42C5ABE76(): void { inv('0x815653A42C5ABE76'); } /** * @param effectName * @returns */ static animpostfxIsTagPlaying(effectName: string): any { return inv('0x2D4F9C852CE8A253', effectName); } /** * enum class eSnowCoverageType * { * Primary, * Secondary, * Xmas, * XmasSecondary // since b1232 * }; * * @param type */ static setSnowCoverageType(type: int): void { inv('0xF02A9C330BBFC5C7', type); } /** * @param effectNameHash */ static animpostfxPlayTag(effectNameHash: string | number): void { inv('0x9B8D5D4CB8AF58B3', _h(effectNameHash)); } /** * @param pickupObject * @param toggle */ static blockPickupObjectLight(pickupObject: Prop, toggle: boolean): void { inv('0x50C14328119E1DD1', pickupObject.handle, toggle); } /** * @param effectName * @param entity * @param offset * @param rot * @param scale * @param xAxis * @param yAxis * @param zAxis * @returns */ static startNetworkedParticleFxLoopedOnEntity(effectName: string, entity: Entity, offset: Vector3, rot: Vector3, scale: float, xAxis: boolean, yAxis: boolean, zAxis: boolean): int { return inv('0x8F90AB32E1944BDE', effectName, entity.handle, f(offset.x), f(offset.y), f(offset.z), f(rot.x), f(rot.y), f(rot.z), f(scale), xAxis, yAxis, zAxis, rai()); } /** * @param pos * @param radius */ static removeParticleFxInRange(pos: Vector3, radius: float): void { inv('0x87B5905ECA623B68', f(pos.x), f(pos.y), f(pos.z), f(radius)); } /** * https://github.com/femga/rdr3_discoveries/blob/master/graphics/ptfx/ptfx_assets_looped.lua * * @param effectName * @param pos * @param rot * @param scale * @param xAxis * @param yAxis * @param zAxis * @param p11 * @returns */ static startParticleFxLoopedAtCoord(effectName: string, pos: Vector3, rot: Vector3, scale: float, xAxis: boolean, yAxis: boolean, zAxis: boolean, p11: boolean): int { return inv('0xBA32867E86125D3A', effectName, f(pos.x), f(pos.y), f(pos.z), f(rot.x), f(rot.y), f(rot.z), f(scale), xAxis, yAxis, zAxis, p11, rai()); } /** * @returns */ static getTimecycleModifierIndex(): int { return inv('0xA705394293E2B3D3', rai()); } /** * nullsub, doesn't do anything * * @param toggle */ static enableMovieSubtitles(toggle: boolean): void { inv('0x6FC9B065229C0787', toggle); } /** * @param p0 * @param p1 * @param p2 * @param p3 * @param p4 */ static N_0x171C18E994C1A395(p0: any, p1: any, p2: any, p3: any, p4: any): void { inv('0x171C18E994C1A395', p0, p1, p2, p3, p4); } /** * Doesn't actually return anything. ANIMPOSTFX_* * * @returns */ static N_0xC37792A3F9C90771(): any { return inv('0xC37792A3F9C90771'); } /** * Adds Vegetation Blocking Zone, Added Snow Flattening veg mod Zone * Returns veg modifier handle * * @param volume * @param p1 * @param flags * @param p3 * @returns */ static addVegModifierZone(volume: Volume, p1: int, flags: int, p3: int): int { return inv('0xBD3324281E8B9933', volume.handle, p1, flags, p3, rai()); } static N_0xEC3F7F24EEEB3BA3(): void { inv('0xEC3F7F24EEEB3BA3'); } /** * Used in CREATE_BEZIER_BLOOD_TRAIL_OF_TYPE * * @param p0 */ static N_0x41F88A85A579A61D(p0: float): void { inv('0x41F88A85A579A61D', f(p0)); } static freeMemoryForLowQualityPhoto(): void { inv('0x614682E715ADBAAC'); } static freeMemoryForHighQualityPhoto(): void { inv('0xD45547D8396F002A'); } static N_0x32DE2BFFDA43E62A(): void { inv('0x32DE2BFFDA43E62A'); } /** * Resets the exposure to the value when exposure lock was enabled */ static updatePhotoModeExposure(): void { inv('0x9229ED770975BD9E'); } /** * @param effectName */ static animpostfxPreloadPostfx(effectName: string): void { inv('0x5199405EABFBD7F0', effectName); } /** * @param strength */ static setTransitionOutOfTimecycleModifier(strength: float): void { inv('0xBB6C707F20D955D4', f(strength)); } /** * @param effectName * @param p1 * @param color * @param alpha */ static animpostfxSetPostfxColor(effectName: string, p1: int, color: Color, alpha: int): void { inv('0x63011D0C7C6519E0', effectName, p1, color.r, color.g, color.b, color.a, alpha); } /** * @param p0 * @param p1 */ static startPetrolTrailDecals(p0: any, p1: any): void { inv('0x46F246D6504F0031', p0, p1); } /** * @param pickupObject * @param allow */ static allowPickupLightSync(pickupObject: Prop, allow: boolean): void { inv('0x7C348310A6E2FB91', pickupObject.handle, allow); } static freeMemoryForMissionCreatorPhoto(): void { inv('0x7DFF8F94937D2659'); } /** * Returns veg modifier handle * * @param pos * @param radius * @param modType * @param flags * @param p6 * @returns */ static addVegModifierSphere(pos: Vector3, radius: float, modType: int, flags: int, p6: int): int { return inv('0xFA50F79257745E74', f(pos.x), f(pos.y), f(pos.z), f(radius), modType, flags, p6, rai()); } /** * Only used in R* SP Script spd_agnesdown1 * * @param p0 * @param pos * @param p4 * @param p5 * @param heading * @returns */ static N_0x402E1A61D2587FCD(p0: any, pos: Vector3, p4: float, p5: float, heading: float): boolean { return !!inv('0x402E1A61D2587FCD', p0, f(pos.x), f(pos.y), f(pos.z), f(p4), f(p5), f(heading), rai()); } /** * @returns */ static N_0xFC9B53C072F418E0(): any { return inv('0xFC9B53C072F418E0'); } /** * state: false disables artificial interior light sources for specific proxyInteriorIndex * * @param proxyInteriorIndex * @param state */ static setProxyInteriorIndexArtificialLightsState(proxyInteriorIndex: int, state: boolean): void { inv('0xBFCB17895BB99E4E', proxyInteriorIndex, state); } /** * @param scale */ static setParticleFxBulletImpactScale(scale: float): void { inv('0xA53C8D7D0F8C74D0', f(scale)); } /** * @param p0 * @param p1 * @param p2 * @param p3 * @param p4 * @param p5 * @param p6 * @param p7 */ static cascadeShadowsSetCascadeBounds(p0: any, p1: boolean, p2: float, p3: float, p4: float, p5: float, p6: boolean, p7: float): void { inv('0xD9EDB2E4512D563E', p0, p1, f(p2), f(p3), f(p4), f(p5), p6, f(p7)); } /** * @param value */ static changePhotoModeExposure(value: float): void { inv('0xC8D0611D9A0CF5D3', f(value)); } /** * @param point * @returns */ static isTrackedPointValid(point: int): boolean { return !!inv('0xF2FDDCC8C6BAE1B3', point, rai()); } /** * Old name: _ENABLE_EXTRA_TIMECYCLE_MODIFIER_STRENGTH * * @param strength */ static enableMoonCycleOverride(strength: float): void { inv('0x6FE93BCC7BF12B63', f(strength)); } static setDisablePetrolDecalsIgnitingThisFrame(): void { inv('0x53ED07BF368EDA59'); } /** * Used in CREATE_BEZIER_BLOOD_TRAIL_OF_TYPE * * @param p0 */ static N_0x4BD66B4E3427689B(p0: string): void { inv('0x4BD66B4E3427689B', p0); } /** * Enables/disables a kind of 'shiny' effect on metals. * * @param object * @param toggle */ static setPearlescentFxEnabled(object: Prop, toggle: boolean): void { inv('0x72E30372E7CC4415', object.handle, toggle); } /** * @param enabled */ static setSniperGlintsEnabled(enabled: boolean): void { inv('0x6E8EB45A4F4460EB', enabled); } /** * Example: * local hash = GetHashKey("CLOTHING_ITEM_M_EYES_001_TINT_001") * _GENERATE_SWATCH_TEXTURE(0, hash, 0, true) * metapedType: see 0xEC9A1261BF0CE510 * * @param slotId * @param componentHash * @param metapedType * @param p3 */ static generateSwatchTexture(slotId: int, componentHash: string | number, metapedType: int, p3: boolean): void { inv('0x160921255327C591', slotId, _h(componentHash), metapedType, p3); } /** * @param entity * @param mask * @param intensity */ static addEntityToEntityMaskWithIntensity(entity: Entity, mask: int, intensity: float): void { inv('0x958DEBD9353C0935', entity.handle, mask, f(intensity)); } static disableHdtexThisFrame(): void { inv('0x98A7CD5EA379A854'); } /** * @param entity */ static attachTvAudioToEntity(entity: Entity): void { inv('0x40866A418EB8EFDE', entity.handle); } /** * @param effectName * @param ped * @param offset * @param rot * @param boneIndex * @param scale * @param axisX * @param axisY * @param axisZ * @returns */ static startParticleFxNonLoopedOnPedBone(effectName: string, ped: Ped, offset: Vector3, rot: Vector3, boneIndex: int, scale: float, axisX: boolean, axisY: boolean, axisZ: boolean): boolean { return !!inv('0x3FAA72BD940C3AC0', effectName, ped.handle, f(offset.x), f(offset.y), f(offset.z), f(rot.x), f(rot.y), f(rot.z), boneIndex, f(scale), axisX, axisY, axisZ, rai()); } /** * contentId: returned by NETWORK::_UGC_QUERY_GET_CREATOR_PHOTO(uVar0, 0, sParam3) * * @param contentId * @returns */ static getStatusOfLoadMissionCreatorPhoto(contentId: string): int { return inv('0xC71B50AE58D07369', contentId, rai()); } /** * @param p0 */ static N_0x6C03118E9E5C1A14(p0: any): void { inv('0x6C03118E9E5C1A14', p0); } static resetPausedRenderphases(): void { inv('0xCCD9AAD85E1B559E'); } /** * @param unused * @returns */ static saveHighQualityPhoto(unused: int): any { return inv('0x57639FD876B68A91', unused); } /** * @param pos * @param p2 */ static setCloudLayer(pos: Vector2, p2: int): void { inv('0xB8C984C0D47F4F07', f(pos.x), f(pos.y), p2); } /** * @param p0 * @returns */ static N_0xEC3D8C228FE553D7(p0: boolean): boolean { return !!inv('0xEC3D8C228FE553D7', p0, rai()); } /** * *RESET** */ static N_0x1460B644397453EB(): void { inv('0x1460B644397453EB'); } /** * @param personaPhotoLocalCacheType */ static pedshotSetPersonaPhotoType(personaPhotoLocalCacheType: int): void { inv('0x196D3ACBEBA4A44B', personaPhotoLocalCacheType); } static pedshotFinishCleanupData(): void { inv('0xC2B8164C3BE871A4'); } static N_0x1C6306E5BC25C29C(): void { inv('0x1C6306E5BC25C29C'); } /** * @param pos */ static setCloudNoise(pos: Vector3): void { inv('0xFE7966DF01452F32', f(pos.x), f(pos.y), f(pos.z)); } /** * @param p0 */ static N_0xEB48CE48EEC41FD4(p0: any): void { inv('0xEB48CE48EEC41FD4', p0); } /** * Used in NET_CAMP_SPIRIT_ANIMAL_CLEAR_ANIMAL_VISIBILITY * * @param entity */ static N_0xC06F2F45A73EABCD(entity: Entity): void { inv('0xC06F2F45A73EABCD', entity.handle); } /** * @param effectName * @param pos * @param rot * @param scale * @param xAxis * @param yAxis * @param zAxis * @returns */ static startNetworkedParticleFxNonLoopedAtCoord(effectName: string, pos: Vector3, rot: Vector3, scale: float, xAxis: boolean, yAxis: boolean, zAxis: boolean): boolean { return !!inv('0xFB97618457994A62', effectName, f(pos.x), f(pos.y), f(pos.z), f(rot.x), f(rot.y), f(rot.z), f(scale), xAxis, yAxis, zAxis, rai()); } /** * @returns */ static getPhotoModeExposure(): float { return inv('0x06C0D8BB6B04A709', raf()); } /** * _SET_PARTICLE_FX_LOOPED_FA* - _SET_PARTICLE_FX_LOOPED_OF* * * @param ptfxHandle * @param scalar */ static setParticleFxLoopedUpdateDistantSmoke(ptfxHandle: int, scalar: float): void { inv('0x9DDC222D85D5AF2A', ptfxHandle, f(scalar)); } /** * Known effects: MP_Trans_SceneToPhoto * MP_Trans_WinLose * SpectateFilter * MP_CharacterCreatorPhoto * MP_Trans_PhotoToScene * InterrogationHit * * @param effectName * @returns */ static animpostfxGetStackhash(effectName: string): number { return (inv('0x842CCC9491FFCD9B', effectName, rai())) & 0xFFFFFFFF; } /** * @param height */ static setCloudHeight(height: float): void { inv('0xC332C91388F5580B', f(height)); } /** * https://github.com/femga/rdr3_discoveries/blob/master/graphics/markers/marker_types.lua * Old name: _DRAW_MARKER * * @param type * @param pos * @param direction * @param rot * @param scale * @param color * @param alpha * @param bobUpAndDown * @param faceCamera * @param p19 * @param rotate * @param textureDict * @param textureName * @param drawOnEnts */ static drawMarker(type: string | number, pos: Vector3, direction: Vector3, rot: Vector3, scale: Vector3, color: Color, alpha: int, bobUpAndDown: boolean, faceCamera: boolean, p19: int, rotate: boolean, textureDict: string, textureName: string, drawOnEnts: boolean): void { inv('0x2A32FAA57B937173', _h(type), f(pos.x), f(pos.y), f(pos.z), f(direction.x), f(direction.y), f(direction.z), f(rot.x), f(rot.y), f(rot.z), f(scale.x), f(scale.y), f(scale.z), color.r, color.g, color.b, color.a, alpha, bobUpAndDown, faceCamera, p19, rotate, textureDict, textureName, drawOnEnts); } /** * @param r * @param g * @param b */ static setParticleFxNonLoopedColour(r: float, g: float, b: float): void { inv('0x60B85BED6577A35B', f(r), f(g), f(b)); } /** * @param p0 */ static N_0xF5793BB386E1FF9C(p0: any): void { inv('0xF5793BB386E1FF9C', p0); } /** * Used in shop scripts for CATALOG_BOOK * false = Normal -> [CATALOG_BOOK_SHUTDOWN] * true = Trees flickering? -> [CATALOG_BOOK_OPEN] * * @param p0 */ static N_0x1A9F09AB458D49C6(p0: boolean): void { inv('0x1A9F09AB458D49C6', p0); } /** * @param effectName * @param duration */ static animpostfxPlayTimed(effectName: string, duration: int): void { inv('0x3A9A281FF71249E9', effectName, duration); } /** * @param effectName * @param entity * @param offset * @param rot * @param boneIndex * @param scale * @param xAxis * @param yAxis * @param zAxis * @returns */ static startNetworkedParticleFxLoopedOnEntityBone(effectName: string, entity: Entity, offset: Vector3, rot: Vector3, boneIndex: int, scale: float, xAxis: boolean, yAxis: boolean, zAxis: boolean): int { return inv('0x9C56621462FFE7A6', effectName, entity.handle, f(offset.x), f(offset.y), f(offset.z), f(rot.x), f(rot.y), f(rot.z), boneIndex, f(scale), xAxis, yAxis, zAxis, rai()); } /** * @param p0 * @param p1 * @param p2 */ static N_0x735762E8D7573E42(p0: any, p1: any, p2: any): void { inv('0x735762E8D7573E42', p0, p1, p2); } /** * Only used in guama1 R* Script * Disables lod/distant lights when BOOL is set to true * * @param disable */ static disableFarArtificialLights(disable: boolean): void { inv('0xCD284E2F6AC27EE9', disable); } /** * @param decal */ static removeDecal(decal: int): void { inv('0x49A720552EB0BB88', decal); } /** * Hardcoded to always set x to 1280 and y to 720. * * @returns x; y */ static getScreenResolution(): [number, number] { const result = inv<[number, number]>('0x66773C92835D0909', pvi(), pvi()); return [result[0], result[1]]; } /** * ANIMPOSTFX_* * * @param effectName */ static N_0xA201A3D0AC087C37(effectName: string): void { inv('0xA201A3D0AC087C37', effectName); } /** * @param modifierName * @param transitionBlend */ static setTransitionTimecycleModifier(modifierName: string, transitionBlend: float): void { inv('0xFF927A09F481D80C', modifierName, f(transitionBlend)); } static enableEntitymask(): void { inv('0xFAAD23DE7A54FC14'); } /** * fxName: see data_0/data/effects/ptfx/fxlists/ * * @param fxName */ static useParticleFxAsset(fxName: string): void { inv('0xA10DB07FC234DD12', fxName); } static animpostfxStopAll(): void { inv('0x66560A0D4C64FD21'); } /** * @param pickup * @param toggle */ static blockPickupPlacementLight(pickup: Pickup, toggle: boolean): void { inv('0x0552AA3FFC5B87AA', pickup.handle, toggle); } }