Preview Locations
Preview locations configure the cinematic character selection scenes used by wasabi_multichar.
- Config file:
config/client/previewLocations.lua - Config table:
Config.PreviewLocations - Behavior: One eligible location set is chosen at random when the multichar UI opens. Each set contains its own hidden coords, camera data, character slot ped positions, animations, props, and optional IPL/vehicle data.
Location set structureβ
A location set is keyed numerically:
Config.PreviewLocations = {
[1] = {
hiddenCoords = vector4(2735.55, 1578.66, 66.47, 37.81),
pedInterior = vector3(2735.55, 1578.66, 66.47),
cinematicCam = {
pos = vector3(2719.57, 1567.66, 66.74),
pointAt = vector3(2729.24, 1574.64, 65.47),
},
slots = {
[1] = {
pos = vector4(2729.24, 1574.64, 66.47, 133.68),
cam = vector4(2724.57, 1571.66, 66.74, 301.21),
anim = { type = 'animation', dict = 'missfinale_b_ig_5', clip = 'hold_michael_loop_fra' },
attachToSlot = false,
},
},
},
}
Core fieldsβ
| Field | Type | Description |
|---|---|---|
hiddenCoords | vector4 | Where the invisible player ped is teleported so the area streams. |
pedInterior | vector3 | Optional interior coords used to load the interior before displaying peds. |
cinematicCam | table | Required initial cinematic camera. |
slots | table | Required slot map containing ped/camera/animation settings for each character slot. |
Optional location fieldsβ
| Field | Type | Description |
|---|---|---|
startCam | vector3 | Initial static camera before cinematic waypoints. Falls back to cinematicCam.pos when omitted. |
stopCamParams | table | Camera transition when leaving multichar. Supports x, y, z, rotX, rotY, rotZ, duration, and scene-specific durations such as durationHeadbutt / durationDrop. |
exitAnim | table | Optional exit animation when selecting a character. Uses slot 1 and 2 peds. |
ipls | string[] | IPLs requested when loading the scene and removed when leaving. |
useFladeAnim | boolean | Uses fade out β camera cut β fade in when focusing slots instead of interpolating. Keep the field name as written in config. |
commonCam | vector4 | Shared bridge camera for scenes with walls or separate slot groups. |
commonCamSlots | number[] | Slot indices that should use commonCam. |
minSlots | number | Location is only eligible when the player has at least this many characters. |
vehicles | table[] | Vehicles spawned for the preview scene and deleted when the scene is destroyed. |
Slot fieldsβ
Each slots[index] entry controls one character preview ped.
| Field | Type | Description |
|---|---|---|
pos | vector4 | Ped position and heading. |
cam | vector4 | Camera position/rotation when this slot is focused. |
anim | table | Optional animation or scenario config. |
attachToSlot | number or false | Attach this ped to another slot ped, useful for paired animations. |
previewStartposition | vector4 | Optional camera starting point before interpolating to this slot's cam. |
Animation examplesβ
Scripted animationβ
anim = {
type = 'animation',
dict = 'anim@heists@heist_safehouse_intro@variations@male@tv',
clip = 'tv_part_one_loop',
prop = {
model = 'v_res_tre_remote',
bone = 57005,
placement = { 0.099, 0.017, -0.03, -64.76, -109.544, 18.717 },
},
}
Scenarioβ
anim = {
type = 'scenario',
name = 'WORLD_HUMAN_MOBILE_FILM_SHOCKING',
}
Vehiclesβ
Some preview locations can spawn vehicles as part of the scene.
vehicles = {
{ model = 'champion', pos = vector4(1101.39, -3157.05, -38.14, 267.45) },
{ model = 'emerus', pos = vector4(1099.60, -3145.44, -38.22, 180.49) },
}
Vehicles are cleaned up when the scene is destroyed or when the player exits multichar.
Tipsβ
- Use a coordinate tool or map editor to capture
pos,cam, and optionalpreviewStartpositionvalues. - For interiors, configure
pedInteriorand any requirediplsso the scene is loaded before the camera displays. - If a camera path clips through walls, use
useFladeAnim,commonCam,commonCamSlots, or per-slotpreviewStartposition. - Slot keys should match the slot numbers you want to display. They can be non-consecutive if needed.
- Test every location in-game after changing animations, props, IPLs, or camera transitions. This is not the part to YOLO and hope for the best.