@altv/client
Version:
This package contains the type definitions for the alt:V JS module v2 client types
1,312 lines (1,072 loc) • 92.6 kB
TypeScript
/// <reference types="../shared/index.d.ts" />
/**
* @module @altv/client
*/
declare module "@altv/client" {
import * as altShared from "@altv/shared";
export const isStreamerModeEnabled: boolean;
export const locale: altShared.Enums.Locale;
export const licenseHash: string;
export const clientConfig: Readonly<Record<string, unknown>>;
export const clientPath: string;
export const localMeta: Readonly<GlobalLocalMeta & Record<string, unknown>>;
export function isMenuOpen(): boolean;
export function isConsoleOpen(): boolean;
export function isGameFocused(): boolean;
export function getFps(): number;
export function getPing(): number;
export function getTotalPacketsSent(): number;
export function getTotalPacketsLost(): number;
export function getServerIp(): string;
export function getServerPort(): number;
export function getScreenResolution(): altShared.Vector2;
export function isFullscreen(): boolean;
export function areGameControlsActive(): boolean;
export function setGameControlsActive(state: boolean): boolean;
export function getMsPerGameMinute(): number;
export function setMsPerGameMinute(ms: number): void;
export function getServerTime(): number;
export function areRmlControlsActive(): boolean;
export function setRmlControlsActive(state: boolean): void;
export function getKeyState(key: altShared.Enums.KeyCode): altShared.KeyStateInfo;
export function beginScaleformMovieMethodMinimap(methodName: string): void;
export function setWeatherCycle(weathers: altShared.WeatherCycle[]): void;
export function setWeatherSyncActive(state: boolean): void;
export function getPermissionState(permission: altShared.Enums.Permission): boolean;
export function takeScreenshot(gameOnly?: boolean): Promise<string>;
export function setAngularVelocity(entity: Entity, quaternion: altShared.Quaternion): void;
export function headshotToBase64(id: number): string;
export function setDlcClothes(scriptId: number, component: number, drawable: number, texture: number, palette?: number, dlc?: number): void;
export function setDlcProps(scriptId: number, component: number, drawable: number, texture: number, dlc?: number): void;
export function clearProps(scriptId: number, component: number): void;
/** @deprecated This method will be removed in the next major release. (v17) */
export function setWatermarkPosition(position: altShared.Enums.WatermarkPosition): void;
export function copyToClipboard(str: string): void;
export function toggleRmlDebugger(state: boolean): void;
export function loadRmlFontFace(path: string, name: string, isItalic?: boolean, isBold?: boolean): void;
export function worldToScreen(pos: altShared.IVector3): altShared.Vector3;
export function screenToWorld(pos: altShared.IVector2): altShared.Vector3;
export function setMinimapComponentPosition(name: string, alignX: string, alignY: string, pos: altShared.IVector2, size: altShared.IVector2): void;
export function resetMinimapComponentPosition(name: string): void;
export function setMinimapIsRectangle(state: boolean): void;
export function getPedBonePos(scriptId: number, boneId: number): altShared.Vector3;
export function isPointOnScreen(pos: altShared.IVector3): boolean;
export function getPoolSize(pool: string): number;
export function getPoolCount(pool: string): number;
export function getPoolEntities(pool: string): Array<number>;
export function updateClipContext(context: Record<string, string>): void;
export interface AudioCreateOptions {
source: string;
volume: number;
radio?: boolean; // default: false
clearCache?: boolean; // default: true
initialMeta?: Partial<{
meta: Record<string, unknown>;
}>;
}
type AudioEventParametersMap = {
inited: [];
streamStarted: [];
streamEnded: [];
streamPaused: [];
streamReset: [];
streamSeek: [time: number];
volumeChange: [vol: number];
error: [code: number, message: string];
};
export abstract class Audio extends BaseObject {
source: string;
loop: boolean;
volume: number;
readonly outputs: ReadonlyArray<AudioOutput>;
readonly currentTime: number;
readonly maxTime: number;
readonly isPlaying: boolean;
readonly listeners: ReadonlyMap<string, Array<(...args: unknown[]) => Promise<void> | void>>;
addOutput(output: AudioOutput): void;
removeOutput(output: AudioOutput): void;
play(): void;
pause(): void;
reset(): void;
seek(time: number): void;
on<E extends keyof AudioEventParametersMap>(eventName: E, func: (...args: AudioEventParametersMap[E]) => void): void;
once<E extends keyof AudioEventParametersMap>(eventName: E, func: (...args: AudioEventParametersMap[E]) => void): void;
off<E extends keyof AudioEventParametersMap>(eventName: E, func: (...args: AudioEventParametersMap[E]) => void): void;
public onCreate?(opts: AudioCreateOptions): void;
public onDestroy?(): void;
static readonly all: ReadonlyArray<Audio>;
static create(options: AudioCreateOptions): Audio;
static getByID(id: number): Audio | null;
static setFactory(factory: typeof Audio): void;
static getFactory<T extends Audio>(): T;
}
export abstract class AudioCategory {
readonly name: string;
volume: number;
distanceRolloffScale: number;
plateauRolloffScale: number;
occlusionDamping: number;
environmentalFilterDamping: number;
sourceReverbDamping: number;
distanceReverbDamping: number;
interiorReverbDamping: number;
environmentalLoudness: number;
underwaterWetLevel: number;
stonedWetLevel: number;
pitch: number;
lowPassFilterCutoff: number;
highPassFilterCutoff: number;
reset(): void;
static get(name: string): AudioCategory | undefined;
}
export interface AudioFilterCreateOptions {
hash: number | string;
initialMeta?: Partial<{
meta: Record<string, unknown>;
}>;
}
export abstract class AudioFilter {
audioCategory: AudioCategory;
readonly hash: number;
addRotateEffect(rate: number, priority: number): number;
addVolumeEffect(volume: number, priority: number, channel?: number): number;
addPeakeqEffect(band: number, bandwidth: number, q: number, center: number, gain: number, priority: number): number;
addDampEffect(target: number, quiet: number, rate: number, gain: number, delay: number, priority: number): number;
addAutowahEffect(dryMix: number, wetMix: number, feedback: number, rate: number, range: number, freq: number, priority: number): number;
addPhaserEffect(dryMix: number, wetMix: number, feedback: number, rate: number, range: number, freq: number, priority: number): number;
addChorusEffect(dryMix: number, wetMix: number, feedback: number, minSweep: number, maxSweep: number, rate: number, priority: number): number;
addDistortionEffect(drive: number, dryMix: number, wetMix: number, feedback: number, volume: number, priority: number): number;
addCompressor2Effect(gain: number, threshold: number, ratio: number, attack: number, release: number, priority: number): number;
addBqfEffect(filter: number, center: number, gain: number, bandwidth: number, q: number, s: number, priority: number): number;
addEcho4Effect(dryMix: number, wetMix: number, feedback: number, delay: number, priority: number): number;
addPitchshiftEffect(pitchShift: number, semitones: number, fftSize: number, osamp: number, priority: number): number;
addFreeverbEffect(dryMix: number, wetMix: number, roomSize: number, damp: number, width: number, mode: number, priority: number): number;
removeEffect(fxHandler: number): boolean;
public onCreate?(opts: AudioFilterCreateOptions): void;
public onDestroy?(): void;
static readonly all: ReadonlyArray<AudioFilter>;
static create(options: AudioFilterCreateOptions): AudioFilter;
static getByID(id: number): AudioFilter | null;
static setFactory(factory: typeof AudioFilter): void;
static getFactory<T extends AudioFilter>(): T;
}
export abstract class AudioOutput extends BaseObject {
muted: boolean;
volume: number;
readonly category: number;
readonly owner: BaseObject;
filter: AudioFilter | null;
static getByID(id: number): AudioOutput | null;
}
export interface AudioOutputAttachedCreateOptions {
entity: WorldObject;
categoryHash?: number; // default: 'radio' hashed
initialMeta?: Partial<{
meta: Record<string, unknown>;
}>;
}
export abstract class AudioOutputAttached extends AudioOutput {
entity: WorldObject;
public onCreate?(opts: AudioOutputAttachedCreateOptions): void;
public onDestroy?(): void;
static readonly all: ReadonlyArray<AudioOutputAttached>;
static create(options: AudioOutputAttachedCreateOptions): AudioOutputAttached;
static setFactory(factory: typeof AudioOutputAttached): void;
static getFactory<T extends AudioOutputAttached>(): T;
}
export interface AudioOutputFrontendCreateOptions {
categoryHash?: number; // default: 'radio' hashed
initialMeta?: Partial<{
meta: Record<string, unknown>;
}>;
}
export abstract class AudioOutputFrontend extends AudioOutput {
public onCreate?(opts: AudioOutputFrontendCreateOptions): void;
public onDestroy?(): void;
static readonly all: ReadonlyArray<AudioOutputFrontend>;
static create(options: AudioOutputFrontendCreateOptions): AudioOutputFrontend;
static setFactory(factory: typeof AudioOutputFrontend): void;
static getFactory<T extends AudioOutputFrontend>(): T;
}
export interface AudioOutputWorldCreateOptions {
pos: altShared.Vector3;
categoryHash?: number; // default: 'radio' hashed
}
export abstract class AudioOutputWorld extends AudioOutput {
pos: altShared.Vector3;
public onCreate?(opts: AudioOutputWorldCreateOptions): void;
public onDestroy?(): void;
static readonly all: ReadonlyArray<AudioOutputWorld>;
static create(options: AudioOutputWorldCreateOptions): AudioOutputWorld;
static setFactory(factory: typeof AudioOutputWorld): void;
static getFactory<T extends AudioOutputWorld>(): T;
}
export class BaseObject extends altShared.BaseObject {
readonly isRemote: boolean;
readonly remoteID: number;
static getByID(type: altShared.Enums.BaseObjectType, id: number): BaseObject | null;
static getByRemoteID(type: altShared.Enums.BaseObjectType, id: number): BaseObject | null;
readonly meta: BaseObjectMeta & Record<string, unknown>;
readonly syncedMeta: Readonly<altShared.BaseObjectSyncedMeta & Record<string, unknown>>;
}
export type PointBlipCreateOptions =
| { pos: altShared.IVector3; entity?: never }
| ({ entity: Entity; pos?: never } & {
initialMeta?: Partial<{
meta: BlipMeta & Record<string, unknown>;
}>;
});
type BlipCreateOptions =
| ({ blipType: altShared.Enums.BlipType.AREA } & altShared.AreaBlipCreateOptions)
| ({ blipType: altShared.Enums.BlipType.RADIUS } & altShared.RadiusBlipCreateOptions)
| (({ blipType: altShared.Enums.BlipType.DESTINATION } & PointBlipCreateOptions) & {
initialMeta?: Partial<{
meta: BlipMeta & Record<string, unknown>;
}>;
});
export interface MarkerCreateOptions {
type: altShared.Enums.MarkerType;
pos: altShared.IVector3;
color?: altShared.IRGBA; // default: {r: 255, g: 255, b: 255, a: 100}
useStreaming?: boolean; // default: false
streamingDistance?: number; // default: 0
initialMeta?: Partial<{
meta: MarkerMeta & Record<string, unknown>;
}>;
}
export abstract class Blip extends WorldObject {
readonly scriptID: number;
readonly isStreamedIn: boolean;
readonly global: boolean;
readonly isAttached: boolean;
readonly attachedTo?: Entity;
readonly meta: BlipMeta & Record<string, unknown>;
readonly syncedMeta: Readonly<altShared.BlipSyncedMeta & Record<string, unknown>>;
blipType: altShared.Enums.BlipType;
scaleXY: altShared.Vector2;
display: number;
sprite: number;
color: number;
secondaryColor: number;
alpha: number;
flashTimer: number;
flashInterval: number;
friendly: boolean;
route: boolean;
bright: boolean;
number: number;
showCone: boolean;
flashes: boolean;
flashesAlternate: boolean;
shortRange: boolean;
priority: number;
rotation: number;
gxtName: string;
name: string;
routeColor: altShared.RGBA;
pulse: boolean;
missionCreator: boolean;
tickVisible: boolean;
headingIndicatorVisible: boolean;
outlineIndicatorVisible: boolean;
friendIndicatorVisible: boolean;
crewIndicatorVisible: boolean;
category: number;
highDetail: boolean;
shrinked: boolean;
visible: boolean;
hiddenOnLegend: boolean;
minimalOnEdge: boolean;
useHeightIndicatorOnEdge: boolean;
shortHeightThreshold: boolean;
attachTo(entity: Entity): boolean;
fade(opacity: number, duration: number): void;
static create(options: BlipCreateOptions): Blip;
public onCreate?(opts: BlipCreateOptions): void;
public onDestroy?(): void;
static getByID(id: number): Blip | null;
static getByRemoteID(id: number): Blip | null;
static getByScriptID(id: number): Blip | null;
static setFactory(factory: typeof Blip): void;
static getFactory<T extends Blip>(): T;
}
export abstract class Marker extends WorldObject {
readonly isGlobal: boolean;
readonly streamingDistance: number;
readonly meta: MarkerMeta & Record<string, unknown>;
color: altShared.RGBA;
visible: boolean;
markerType: altShared.Enums.MarkerType;
scale: altShared.IVector3;
rot: altShared.IVector3;
direction: altShared.IVector3;
faceCamera: boolean;
rotating: boolean;
bobUpDown: boolean;
static readonly all: ReadonlyArray<Marker>;
public onCreate?(opts: MarkerCreateOptions): void;
public onDestroy?(): void;
static getByID(id: number): Marker | null;
static getByRemoteID(id: number): Marker | null;
static create(opts: MarkerCreateOptions): Marker;
static setFactory(factory: typeof Marker): void;
static getFactory<T extends Marker>(): T;
}
export abstract class ColShape extends WorldObject {
readonly colShapeType: altShared.Enums.ColShapeType;
playersOnly: boolean;
isEntityIn(entity: Entity): boolean;
isEntityIdIn(id: number): boolean;
isPointIn(pos: altShared.Vector3): boolean;
static readonly all: ReadonlyArray<ColShape>;
static getByID(id: number): ColShape | null;
static getByRemoteID(id: number): ColShape | null;
static setFactory(factory: typeof ColShape): void;
static getFactory<T extends ColShape>(): T;
}
export interface CheckpointCreateOptions {
type: altShared.Enums.CheckpointType;
pos: altShared.IVector3;
radius: number;
height: number;
color: altShared.RGBA;
iconColor: altShared.RGBA;
nextPos: altShared.IVector3;
streamingDistance: number;
initialMeta?: Partial<{
meta: CheckpointMeta & Record<string, unknown>;
}>;
}
// @ts-expect-error setFactory is not compatible with ColShape setFactory
export abstract class Checkpoint extends ColShape {
readonly scriptID: number;
readonly isStreamedIn: boolean;
checkpointType: number;
radius: number;
height: number;
color: altShared.RGBA;
iconColor: altShared.RGBA;
nextPos: altShared.IVector3;
readonly streamingDistance: number;
visible: boolean;
isEntityIn(entity: Entity): boolean;
isEntityIdIn(id: number): boolean;
isPointIn(point: altShared.Vector3): boolean;
public onCreate?(opts: CheckpointCreateOptions): void;
public onDestroy?(): void;
static readonly all: ReadonlyArray<Checkpoint>;
static create(opts: CheckpointCreateOptions): Checkpoint;
static getByID(id: number): Checkpoint | null;
static getByRemoteID(id: number): Checkpoint | null;
static getByScriptID(scriptId: number): Checkpoint | null;
static setFactory(factory: typeof Checkpoint): void;
static getFactory<T extends Checkpoint>(): T;
}
export abstract class Entity extends WorldObject {
readonly scriptID: number;
get model(): number;
readonly netOwner?: Player;
readonly visible: boolean;
readonly isStreamedIn: boolean;
readonly syncedMeta: Readonly<altShared.EntitySyncedMeta & Record<string, unknown>>;
readonly streamSyncedMeta: Readonly<altShared.EntityStreamSyncedMeta & Record<string, unknown>>;
frozen: boolean;
rot: altShared.Vector3;
getSyncInfo(): Data.ISyncInfo;
static readonly all: ReadonlyArray<Entity>;
static getByScriptID(scriptId: number): Entity | null;
}
export abstract class Font extends BaseObject {
static register(path: string): Font | undefined;
}
export abstract class Handling extends HandlingData {
readonly isModified: boolean;
reset(): void;
}
export abstract class HandlingData {
readonly handlingNameHash: number;
mass: number;
initialDragCoeff: number;
downforceModifier: number;
unkFloat1: number;
unkFloat2: number;
unkFloat4: number;
unkFloat5: number;
centreOfMassOffset: altShared.Vector3;
inertiaMultiplier: altShared.Vector3;
percentSubmerged: number;
percentSubmergedRatio: number;
driveBiasFront: number;
driveBiasRear: number;
acceleration: number;
initialDriveGears: number;
driveInertia: number;
clutchChangeRateScaleUpShift: number;
clutchChangeRateScaleDownShift: number;
initialDriveForce: number;
driveMaxFlatVel: number;
initialDriveMaxFlatVel: number;
brakeForce: number;
brakeBiasFront: number;
brakeBiasRear: number;
handBrakeForce: number;
steeringLock: number;
steeringLockRatio: number;
tractionCurveMax: number;
tractionCurveMaxRatio: number;
tractionCurveMin: number;
tractionCurveMinRatio: number;
tractionCurveLateral: number;
tractionCurveLateralRatio: number;
tractionSpringDeltaMax: number;
tractionSpringDeltaMaxRatio: number;
lowSpeedTractionLossMult: number;
camberStiffness: number;
tractionBiasFront: number;
tractionBiasRear: number;
tractionLossMult: number;
suspensionForce: number;
suspensionCompDamp: number;
suspensionReboundDamp: number;
suspensionUpperLimit: number;
suspensionLowerLimit: number;
suspensionRaise: number;
suspensionBiasFront: number;
suspensionBiasRear: number;
antiRollBarForce: number;
antiRollBarBiasFront: number;
antiRollBarBiasRear: number;
rollCentreHeightFront: number;
rollCentreHeightRear: number;
collisionDamageMult: number;
weaponDamageMult: number;
deformationDamageMult: number;
engineDamageMult: number;
petrolTankVolume: number;
oilVolume: number;
seatOffsetDistX: number;
seatOffsetDistY: number;
seatOffsetDistZ: number;
monetaryValue: number;
modelFlags: number;
handlingFlags: number;
damageFlags: number;
static get(modelHash: number | string): HandlingData | undefined;
// static reloadVehiclePhysics(modelHash: number | string): boolean;
}
export type HttpResponse = { statusCode: number; headers: Readonly<Record<string, string>>; body: string };
export abstract class HttpClient extends BaseObject {
get(url: string): Promise<HttpResponse>;
head(url: string): Promise<HttpResponse>;
post(url: string, body: string): Promise<HttpResponse>;
put(url: string, body: string): Promise<HttpResponse>;
delete(url: string, body: string): Promise<HttpResponse>;
connect(url: string, body: string): Promise<HttpResponse>;
options(url: string, body: string): Promise<HttpResponse>;
trace(url: string, body: string): Promise<HttpResponse>;
patch(url: string, body: string): Promise<HttpResponse>;
readonly extraHeaders: Record<string, string>;
public onCreate?(): void;
public onDestroy?(): void;
static create(): HttpClient;
static getByID(id: number): HttpClient | null;
static setFactory(factory: typeof HttpClient): void;
static getFactory<T extends HttpClient>(): T;
}
export abstract class Object extends Entity {
readonly alpha: number;
readonly textureVariation: number;
readonly lodDistance: number;
static readonly all: ReadonlyArray<Object>;
static readonly streamedIn: ReadonlyArray<Object>;
static getByID(id: number): Object | null;
static getByRemoteID(id: number): Object | null;
static getByScriptID(id: number): Object | null;
static setFactory(factory: typeof Object): void;
static getFactory<T extends Object>(): T;
}
export interface LocalObjectCreateOptions {
model: number | string;
pos: altShared.Vector3;
rot: altShared.Vector3;
noOffset?: boolean; // default: false
dynamic?: boolean; // default: false
useStreaming?: boolean; // default: false
streamingDistance?: number; // default: 0
initialMeta?: Partial<{
meta: ObjectMeta & Record<string, unknown>;
}>;
}
// @ts-expect-error - Suppress "Class static side 'typeof LocalObject' incorrectly extends base class static side 'typeof Object'.""
export abstract class LocalObject extends Object {
get model(): number;
set model(value: number | string);
alpha: number;
readonly isDynamic: boolean;
lodDistance: number;
hasGravity: number;
readonly isCollisionEnabled: boolean;
positionFrozen: boolean;
textureVariation: number;
readonly isWorldObject: boolean;
readonly isWeaponObject: boolean;
readonly useStreaming: boolean;
readonly streamingDistance: number;
visible: boolean;
// WeaponObject related
weaponTintIndex: number;
setWeaponComponentTintIndex(componentType: number, tintIndex: number): void;
getWeaponComponentTintIndex(componentType: number): number;
giveWeaponComponent(componentType: number): void;
removeWeaponComponent(componentType: number): void;
resetAlpha(): void;
attachTo(target: number | Entity, boneIndex: number, pos: altShared.Vector3, rot: altShared.Vector3, useSoftPinning: boolean, collision: boolean, fixedRot: boolean): void;
detach(dynamic: boolean): void;
toggleCollision(toggle: boolean, keepPhysics: boolean): void;
placeOnGroundProperly(): void;
activatePhysics(): void;
public waitForSpawn(timeout?: number): Promise<void>;
public onCreate?(opts: LocalObjectCreateOptions): void;
public onDestroy?(): void;
static readonly allWorld: ReadonlyArray<LocalObject>;
static create(options: LocalObjectCreateOptions): LocalObject;
static getByID(id: number): LocalObject | null;
static getByScriptID(scriptId: number): LocalObject | null;
static setFactory(factory: typeof LocalObject): void;
static getFactory<T extends LocalObject>(): T;
}
export interface WeaponObjectCreateOptions {
pos: altShared.Vector3;
rot: altShared.Vector3;
weapon: number | string;
model?: number | string; // default: weapon value
ammoCount?: number; // default: 100
createDefaultComponents?: boolean; // default: true
scale?: number; // default: 1
useStreaming?: boolean; // default: false
streamingDistance?: number; // default: 0
inititalData?: Partial<{
meta: ObjectMeta & Record<string, unknown>;
}>;
}
export namespace WeaponObject {
export function create(options: WeaponObjectCreateOptions): LocalObject;
}
export abstract class Ped extends Entity {
readonly health: number;
readonly maxHealth: number;
readonly armour: number;
readonly currentWeapon: number;
readonly meta: PedMeta & Record<string, unknown>;
readonly syncedMeta: Readonly<altShared.PedSyncedMeta & Record<string, unknown>>;
readonly streamSyncedMeta: Readonly<altShared.PedStreamSyncedMeta & Record<string, unknown>>;
static readonly all: ReadonlyArray<Ped>;
static readonly streamedIn: ReadonlyArray<Ped>;
static getByID(id: number): Ped | null;
static getByRemoteID(id: number): Ped | null;
static getByScriptID(scriptID: number): Ped | LocalPed | null;
static setFactory(factory: typeof Ped): void;
static getFactory<T extends Ped>(): T;
}
export interface LocalPedCreateOptions {
model: number | string;
dimension: number;
pos: altShared.Vector3;
heading?: number; // default: 0
useStreaming?: boolean; // default: true
streamingDistance?: number; // default: 0
initialMeta?: Partial<{
meta: PedMeta & Record<string, unknown>;
}>;
}
// @ts-expect-error Suppress "Class static side 'typeof LocalPed' incorrectly extends base class static side 'typeof Ped'."
export abstract class LocalPed extends Ped {
get model(): number;
set model(value: number | string);
readonly streamingDistance: number;
visible: boolean;
readonly scriptID: number;
readonly isStreamedIn: boolean;
public waitForSpawn(timeout?: number): Promise<void>;
public onCreate?(opts: LocalPedCreateOptions): void;
public onDestroy?(): void;
static readonly all: ReadonlyArray<Ped>;
static create(options: LocalPedCreateOptions): LocalPed;
static getByID(id: number): LocalPed | null;
static getByScriptID(scriptId: number): LocalPed | null;
static setFactory(factory: typeof LocalPed): void;
static getFactory<T extends LocalPed>(): T;
}
// @ts-expect-error Suppress "Class static side 'typeof LocalPlayer' incorrectly extends base class static side 'typeof Player'."
export abstract class LocalPlayer extends Player {
readonly currentAmmo: number;
stamina: number;
maxStamina: number;
readonly currentWeaponData: WeaponData;
readonly weapons: ReadonlyArray<{ hash: number; tintIndex: number; components: ReadonlyArray<number> }>;
getWeaponAmmo(wepaonHash: number | string): number | undefined;
hasWeapon(wepaonHash: number | string): boolean;
getWeaponComponents(wepaonHash: number | string): ReadonlyArray<number> | undefined;
static setFactory(factory: typeof LocalPlayer): void;
static getFactory<T extends LocalPlayer>(): T;
}
export interface LocalVehicleCreateOptions {
model: number | string;
dimension: number;
pos: altShared.Vector3;
rot: altShared.Vector3;
useStreaming?: boolean; // default: true
streamingDistance?: number; // default: 300
initialMeta?: Partial<{
meta: VehicleMeta & Record<string, unknown>;
}>;
}
// @ts-expect-error Supress "Class static side 'typeof LocalVehicle' incorrectly extends base class static side 'typeof Vehicle'.""
export abstract class LocalVehicle extends Vehicle {
get model(): number;
set model(value: number | string);
readonly streamingDistance: number;
visible: boolean;
readonly scriptID: number;
readonly isStreamedIn: boolean;
public waitForSpawn(timeout?: number): Promise<void>;
public onCreate?(opts: LocalVehicleCreateOptions): void;
public onDestroy?(): void;
static create(opts: LocalVehicleCreateOptions): LocalVehicle;
static getByID(id: number): LocalVehicle | null;
static getByScriptID(scriptId: number): LocalVehicle | null;
static setFactory(factory: typeof LocalVehicle): void;
static getFactory<T extends LocalVehicle>(): T;
}
export abstract class MapZoomData {
fZoomScale: number;
fZoomSpeed: number;
fScrollSpeed: number;
vTilesX: number;
vTilesY: number;
reset(): void;
static get(idOrAlias: number | string): MapZoomData | undefined;
static resetAll(): void;
}
export abstract class Player extends Entity {
readonly name: string;
readonly isTalking: boolean;
readonly micLevel: number;
readonly taskData: string;
spatialVolume: number;
nonSpatialVolume: number;
readonly filter: AudioFilter;
readonly health: number;
readonly maxHealth: number;
readonly currentWeaponComponents: ReadonlyArray<number>;
readonly currentWeaponTintIndex: number;
get currentWeapon(): number;
readonly isDead: boolean;
readonly isJumping: boolean;
readonly isInRagdoll: boolean;
readonly isAiming: boolean;
readonly isShooting: boolean;
readonly isReloading: boolean;
readonly isEnteringVehicle: boolean;
readonly isLeavingVehicle: boolean;
readonly isOnLadder: boolean;
readonly isInMelee: boolean;
readonly isInCover: boolean;
readonly isParachuting: boolean;
readonly armour: number;
readonly maxArmour: number;
readonly moveSpeed: number;
readonly aimPos: altShared.Vector3;
readonly headRotation: altShared.Vector3;
readonly isInVehicle: boolean;
readonly vehicle?: Vehicle;
readonly seat: number;
readonly entityAimingAt: Entity;
readonly entityAimOffset: altShared.Vector3;
readonly isFlashlightActive: boolean;
readonly isSuperJumpEnabled: boolean;
readonly isCrouching: boolean;
readonly isStealthy: boolean;
readonly currentAnimationDict: number;
readonly currentAnimationName: number;
readonly isSpawned: boolean;
readonly forwardSpeed: number;
readonly strafeSpeed: number;
getWeaponTintIndex(weaponHash: number | string): number | undefined;
hasWeaponComponent(weaponHash: number | string, componentHash: number | string): boolean;
readonly meta: PlayerMeta & Record<string, unknown>;
readonly syncedMeta: Readonly<altShared.PlayerSyncedMeta & Record<string, unknown>>;
readonly streamSyncedMeta: Readonly<altShared.PlayerStreamSyncedMeta & Record<string, unknown>>;
static readonly local: LocalPlayer;
static readonly all: ReadonlyArray<Player>;
static readonly streamedIn: ReadonlyArray<Player>;
static getByID(id: number): Player | null;
static getByRemoteID(id: number): Player | null;
static setFactory(factory: typeof Player): void;
static getFactory<T extends Player>(): T;
}
export interface RmlDocumentCreateOptions {
url: string;
initialMeta?: Partial<{
meta: Record<string, unknown>;
}>;
}
export abstract class RmlDocument extends RmlElement {
title: string;
readonly sourceUrl: string;
readonly isVisible: boolean;
readonly isModal: boolean;
readonly body: RmlElement;
show(isModal?: boolean, focused?: boolean): void;
hide(): void;
update(): void;
createElement(tag: string): RmlElement;
createTextNode(text: string): RmlElement;
public onCreate?(opts: RmlDocumentCreateOptions): void;
public onDestroy?(): void;
static readonly all: ReadonlyArray<RmlDocument>;
static create(options: RmlDocumentCreateOptions): RmlDocument;
static getByID(id: string): RmlDocument | null;
static setFactory(factory: typeof RmlDocument): void;
static getFactory<T extends RmlDocument>(): T;
}
// @ts-ignore - Suppresses "Class static side incorrectly extends base class static side"
export abstract class RmlElement extends BaseObject {
readonly listeners: ReadonlyMap<string, Array<(...args: unknown[]) => Promise<void> | void>>;
readonly relativeOffset: altShared.Vector2;
readonly absoluteOffset: altShared.Vector2;
readonly baseline: number;
readonly zIndex: number;
readonly containingBlock: altShared.Vector2;
readonly focusedElement?: RmlElement;
readonly tagName: string;
rmlID: string;
readonly isOwned: boolean;
readonly absoluteLeft: number;
readonly absoluteTop: number;
readonly clientLeft: number;
readonly clientTop: number;
readonly clientWidth: number;
readonly clientHeight: number;
readonly offsetLeft: number;
readonly offsetTop: number;
readonly offsetWidth: number;
readonly offsetHeight: number;
scrollLeft: number;
scrollTop: number;
readonly scrollWidth: number;
readonly scrollHeight: number;
readonly isVisible: boolean;
readonly parent?: RmlElement;
readonly nextSibling?: RmlElement;
readonly previousSibling?: RmlElement;
readonly firstChild?: RmlElement;
readonly lastChild?: RmlElement;
readonly childCount: number;
readonly hasChildren: boolean;
innerRML: string;
readonly childNodes: ReadonlyArray<RmlElement>;
readonly ownerDocument: RmlDocument;
readonly attributes: Readonly<Record<string, string>>;
readonly classList: ReadonlyArray<string>;
readonly pseudoClassList: ReadonlyArray<string>;
readonly style: Record<string, string>;
addClass(name: string): boolean;
removeClass(name: string): boolean;
hasClass(name: string): boolean;
addPseudoClass(name: string): boolean;
removePseudoClass(name: string): boolean;
hasPseudoClass(name: string): boolean;
setOffset(offsetParent: RmlElement, offset: altShared.Vector2, fixed?: boolean): void;
isPointWithinElement(point: altShared.Vector2): boolean;
setProperty(name: string, value: string): boolean;
removeProperty(name: string): boolean;
hasProperty(name: string): boolean;
hasLocalProperty(name: string): boolean;
getProperty(name: string): string;
getLocalProperty(name: string): string;
getPropertyAbsoluteValue(): number;
setAttribute(name: string, value: string): void;
removeAttribute(name: string): boolean;
hasAttribute(name: string): boolean;
getAttribute(name: string): string;
getClosest(selectors: string): RmlElement | null;
getChild(index: number): RmlElement | null;
appendChild(child: RmlElement): void;
insertBefore(element: RmlElement, adjacentElement: RmlElement): void;
replaceChild(element: RmlElement, oldElement: RmlElement): void;
removeChild(child: RmlElement): void;
focus(): boolean;
blur(): void;
click(): void;
scrollIntoView(alignWithTop?: boolean): void;
getElementByID(id: string): RmlElement | null;
getElementsByTagName(tag: string): ReadonlyArray<RmlElement>;
getElementsByClassName(tag: string): ReadonlyArray<RmlElement>;
querySelector(selector: string): RmlElement | null;
querySelectorAll(selector: string): ReadonlyArray<RmlElement>;
on(eventName: string, func: (...args: unknown[]) => void): void;
once(eventName: string, func: (...args: unknown[]) => void): void;
off(eventName: string, func: (...args: unknown[]) => void): void;
static getByID(id: string): RmlElement | null;
}
export abstract class TextLabel extends WorldObject {
readonly isStreamedIn: boolean;
readonly isGlobal: boolean;
readonly target: Entity;
visible: boolean;
color: altShared.RGBA;
scale: number;
rot: altShared.Vector3;
faceCamera: boolean;
outlineColor: altShared.RGBA;
outlineWidth: number;
fontSize: number;
textAlign: altShared.Enums.TextLabelAlignment;
text: string;
font: string;
readonly streamingDistance: number;
public onCreate?(opts: TextLabelCreateOptions): void;
public onDestroy?(): void;
static readonly all: ReadonlyArray<TextLabel>;
static create(opts: TextLabelCreateOptions): TextLabel | null;
static getByID(id: number): TextLabel | null;
// static getByRemoteID(id: number): TextLabel | null;
static setFactory(factory: typeof TextLabel): void;
static getFactory<T extends TextLabel>(): T;
}
export abstract class Vehicle extends Entity {
readonly neon: Readonly<altShared.VehicleNeonState>;
readonly driver?: Player;
readonly isDestroyed: boolean;
readonly modKitsCount: number;
readonly modKit: number;
readonly IsPrimaryColorRGB: boolean;
readonly primaryColor: number;
readonly primaryColorRGB: altShared.RGBA;
readonly isSecondaryColorRGB: boolean;
readonly secondaryColor: number;
readonly secondaryColorRGB: altShared.RGBA;
readonly pearlColor: number;
readonly wheelColor: number;
readonly interiorColor: number;
readonly dashboardColor: number;
readonly isTireSmokeColorCustom: boolean;
readonly tireSmokeColor: altShared.RGBA;
readonly wheelType: number;
readonly wheelVariation: number;
readonly customTires: boolean;
readonly specialDarkness: number;
readonly numberplateIndex: number;
readonly numberplateText: string;
readonly windowTint: number;
readonly dirtLevel: number;
readonly isNeonActive: boolean;
readonly neonColor: altShared.RGBA;
readonly livery: number;
readonly roofLivery: number;
readonly appearanceDataBase64: string;
readonly engineOn: boolean;
readonly isHandbrakeActive: boolean;
readonly headlightColor: number;
readonly radioStationIndex: number;
readonly isSirenActive: boolean;
readonly lockState: altShared.Enums.VehicleLockState;
readonly isDaylightOn: boolean;
readonly isNightlightOn: boolean;
readonly roofState: number;
readonly isFlamethrowerActive: boolean;
readonly lightsMultiplier: number;
readonly gameStateBase64: string;
readonly engineHealth: number;
readonly petrolTankHealth: number;
readonly wheelsCount: number;
readonly repairsCount: number;
readonly bodyHealth: number;
readonly bodyAdditionalHealth: number;
readonly hasArmoredWindows: boolean;
readonly damageDataBase64: string;
readonly manualEngineControl: boolean;
readonly scriptDataBase64: string;
readonly healthDataBase64: string;
readonly velocity: altShared.Vector3;
readonly steeringAngle: number;
readonly rearWheelVariation: number;
readonly streamSyncedMeta: Readonly<altShared.VehicleStreamSyncedMeta & Record<string, unknown>>;
readonly speed: number;
gear: number;
readonly maxGear: number;
readonly rpm: number;
readonly speedVector: altShared.Vector3;
readonly handling: Handling;
readonly isHandlingModified: boolean;
indicatorLights: number;
seatCount: number;
readonly occupiedSeatsCount: number;
readonly isTaxiLightOn: boolean;
engineTemperature: number;
fuelLevel: number;
oilLevel: number;
engineLightState: boolean;
absLightState: boolean;
petrolLightState: boolean;
oilLightState: boolean;
batteryLightState: boolean;
suspensionHeight: number;
getNeonActive(): altShared.VehicleNeonState;
getMod(category: number): number;
getModsCount(category: number): number;
isExtraOn(extraId: number): boolean;
getDoorState(doorId: number): number;
isWindowOpened(windowId: number): boolean;
isWheelBurst(wheelId: number): boolean;
getWheelHasTire(wheelId: number): boolean;
isWheelDetached(wheelId: number): boolean;
isWheelOnFire(wheelId: number): boolean;
getWheelHealth(wheelId: number): number;
getPartDamageLevel(partId: number): number;
getPartBulletHoles(partId: number): number;
isLightDamaged(lightId: number): boolean;
isWindowDamaged(windowId: number): boolean;
isSpecialLightDamaged(specialLightId: number): boolean;
getArmoredWindowHealth(windowId: number): number;
getArmoredWindowShootCount(windowId: number): number;
getBumperDamageLevel(bumperId: number): number;
toggleExtra(extraId: number, state: boolean): void;
resetHandling(): void;
replaceHandling(): void;
toggleTaxiLight(state: boolean): void;
getWheelCamber(wheelId: number): number;
setWheelCamber(wheelId: number, value: number): void;
getWheelTrackWidth(wheelId: number): number;
setWheelTrackWidth(wheelId: number, value: number): void;
getWheelHeight(wheelId: number): number;
setWheelHeight(wheelId: number, value: number): void;
getWheelTyreRadius(wheelId: number): number;
setWheelTyreRadius(wheelId: number, radius: number): void;
getWheelRimRadius(wheelId: number): number;
setWheelRimRadius(wheelId: number, radius: number): void;
getWheelTyreWidth(wheelId: number): number;
setWheelTyreWidth(wheelId: number, width: number): void;
getWheelSurfaceMaterial(wheelId: number): number;
resetDashboardLights(): void;
getWheelDynamicFlag(wheelId: number, flag: number): boolean;
setWheelDynamicFlag(wheelId: number, flag: number, state: boolean): void;
getWheelConfigFlag(wheelId: number, flag: number): boolean;
setWheelConfigFlag(wheelId: number, flag: number, state: boolean): void;
setupTransmission(): void;
static readonly all: ReadonlyArray<Vehicle>;
static readonly streamedIn: ReadonlyArray<Vehicle>;
static getByID(id: number): Vehicle | null;
static getByRemoteID(id: number): Vehicle | null;
static getByScriptID(scriptId: number): Vehicle | null;
static setFactory(factory: typeof Vehicle): void;
static getFactory<T extends Vehicle>(): T;
}
export interface TextLabelCreateOptions {
text: string;
fontName: string;
fontSize: number;
pos: altShared.IVector3;
rot?: altShared.IVector3; // default: { x: 0, y: 0, z: 0 }
color?: altShared.RGBA; // default: { r: 255, g: 255, b: 255, a: 255 }
outlineColor?: altShared.RGBA; // default: { r: 0, g: 0, b: 0, a: 255 }
outlineWidth?: number; // default: 0
fontScale?: number; // default: 1
useStreaming?: boolean; // default: false
streamingDistance?: number; // default: 0
initialMeta?: Partial<{
meta: Record<string, unknown>;
}>;
}
export interface VirtualEntityCreateOptions {
group: VirtualEntityGroup;
pos: altShared.IVector3;
streamingDistance: number;
data?: Record<string, unknown>;
initialMeta?: Partial<{
meta: VirtualEntityMeta & Record<string, unknown>;
}>;
}
export abstract class VirtualEntityGroup extends BaseObject {
readonly maxEntitiesInStream: number;
public onCreate?(opts: altShared.VirtualEntityGroupCreateOptions): void;
public onDestroy?(): void;
static create(opts: altShared.VirtualEntityGroupCreateOptions): VirtualEntityGroup;
static setFactory(factory: typeof VirtualEntityGroup): void;
static getFactory<T extends VirtualEntityGroup>(): T;
}
export abstract class VirtualEntity extends WorldObject {
readonly isStreamedIn: boolean;
readonly group: VirtualEntityGroup;
readonly streamingDistance: number;
visible: boolean;
readonly meta: VirtualEntityMeta & Record<string, unknown>;
// readonly syncedMeta: altShared.VirtualEntitySyncedMeta & Record<string, unknown>;
readonly streamSyncedMeta: Readonly<altShared.VirtualEntityStreamSyncedMeta & Record<string, unknown>>;
static readonly all: ReadonlyArray<VirtualEntity>;
static readonly streamedIn: ReadonlyArray<VirtualEntity>;
public onCreate?(opts: VirtualEntityCreateOptions): void;
public onDestroy?(): void;
static create(opts: VirtualEntityCreateOptions): VirtualEntity;
static getByID(id: number): VirtualEntity | null;
static getByRemoteID(id: number): VirtualEntity | null;
static setFactory(factory: typeof VirtualEntity): void;
static getFactory<T extends VirtualEntity>(): T;
}
export abstract class WeaponData {
readonly modelHash: number;
readonly nameHash: number;
recoilShakeAmplitude: number;
recoilAccuracyMax: number;
recoilAccuracyToAllowHeadshotPlayer: number;
recoilRecoveryRate: number;
animReloadRate: number;
vehicleReloadTime: number;
lockOnRange: number;
accuracySpread: number;
range: number;
damage: number;
readonly clipSize: number;
readonly timeBetweenShots: number;
headshotDamageModifier: number;
playerDamageModifier: number;
static readonly all: ReadonlyArray<WeaponData>;
static get(weaponHash: number | string): WeaponData | undefined;
}
export interface WebSocketClientCreateOptions {
url: string;
initialMeta?: Partial<{
meta: Record<string, unknown>;
}>;
}
export abstract class WebSocketClient extends BaseObject {
url: string;
autoReconnect: boolean;
perMessageDeflate: boolean;
pingInterval: number;
readonly readyState: boolean;
on<E extends keyof altShared.Events.WebSocketClientEvent>(eventName: E, listener: altShared.Events.WebSocketClientEvent[E]): void;
on<E extends string>(eventName: Exclude<E, keyof altShared.Events.WebSocketClientEvent>, listener: Events.CustomEventCallback<unknown[]>): void;
once<E extends keyof altShared.Events.WebSocketClientEvent>(eventName: E, listener: altShared.Events.WebSocketClientEvent[E]): void;
once<E extends string>(eventName: Exclude<E, keyof altShared.Events.WebSocketClientEvent>, listener: Events.CustomEventCallback<unknown[]>): void;
off<E extends keyof altShared.Events.WebSocketClientEvent>(eventName: E, listener: altShared.Events.WebSocketClientEvent[E]): void;
off<E extends string>(eventName: Exclude<E, keyof altShared.Events.WebSocketClientEvent>, listener: Events.CustomEventCallback<unknown[]>): void;
readonly listeners: ReadonlyMap<string, Array<(...args: unknown[]) => Promise<void> | void>>;
start(): void;
stop(): void;
send(message: string | altShared.Buffer): boolean;
addSubProtocol(protocol: string): void;
getSubProtocols(): ReadonlyArray<string>;
setExtraHeader(name: string, value: string): void;
getExtraHeaders(): Readonly<Record<string, string>>;
public onCreate?(opts: WebSocketClientCreateOptions): void;
public onDestroy?(): void;
static readonly all: ReadonlyArray<WebSocketClient>;
static create(options: WebSocketClientCreateOptions): WebSocketClient;
static getByID(id: number): WebSocketClient | null;
static setFactory(factory: typeof WebSocketClient): void;
static getFactory<T extends WebSocketClient>(): T;
}
export class TextEncoder {
public rea