# Client-Side

### 🔁 Framework Exports (Client)

#### `GetPlayerData()`

```lua
local data = exports['devm-bridge']:GetPlayerData()
```

#### `DeleteVehicle(vehicle)`

```lua
exports['devm-bridge']:DeleteVehicle(vehicle)
```

#### `GetClosestPed(coords, modelFilter)`

```lua
local ped = exports['devm-bridge']:GetClosestPed(coords)
```

#### `GetClosestPlayer(coords)`

```lua
local ply, dist = exports['devm-bridge']:GetClosestPlayer(coords)
```

#### `GetClosestVehicle(coords)`

```lua
local veh = exports['devm-bridge']:GetClosestVehicle()
```

#### `GetVehicles()`

```lua
local all = exports['devm-bridge']:GetVehicles()
```

#### `SetVehicleProperties(vehicle, props)`

```lua
exports['devm-bridge']:SetVehicleProperties(vehicle, {
    plate = "DEV M"
})
```

***

### 🎯 Targeting System (Client)

#### `addLocalEntity(object, data)`

```lua
exports['devm-bridge']:addLocalEntity(entity, {
    label = 'Open',
    icon = 'fa-solid fa-box',
    onSelect = function() print("Opened") end
})
```

#### `addModel(model, data)`

```lua
exports['devm-bridge']:addModel(`prop_chair_01`, {
    label = 'Sit',
    icon = 'fa-solid fa-chair',
    onSelect = function() end
})
```

#### `addGlobalPlayer(data)`

```lua
exports['devm-bridge']:addGlobalPlayer({
    label = 'Check ID',
    icon = 'fa-solid fa-id-card',
    onSelect = function() end
})
```

#### `disableTarget(state)`

```lua
exports['devm-bridge']:disableTarget(true)
```

***

### 👕 Clothing System (Client)

#### `setPlayerComponentVariation(player, componentId, drawableId, textureId?, paletteId?)`

Unified method to set clothing based on the configured system:

```lua
exports['devm-bridge']:setPlayerComponentVariation(PlayerPedId(), 6, 1, 0)
```

Behavior:

* **illenium**: Uses `setPedComponent()`
* **native**: Direct `SetPedComponentVariation`
* **skinchanger**: Uses native + triggers relevant `skinchanger:change` events

***

### 📣 Synced Events (Client)

These wrap base framework events and redirect them to `devm-bridge` equivalents.

#### `devm-bridge:onPlayerDeath`

| Framework | Original Event                   |
| --------- | -------------------------------- |
| ESX       | `esx:onPlayerDeath`              |
| QBCore    | `hospital:server:SetDeathStatus` |

```lua
AddEventHandler('devm-bridge:onPlayerDeath', function(data)
    -- your code
end)
```

***

#### `devm-bridge:playerLoaded`

| Framework    | Original Event                 |
| ------------ | ------------------------------ |
| ESX          | `esx:playerLoaded`             |
| QBCore / QBX | `QBCore:Client:OnPlayerLoaded` |

```lua
AddEventHandler('devm-bridge:playerLoaded', function(xPlayer, isNew, skin)
    -- your code
end)
```

> `xPlayer`, `isNew`, and `skin` are only passed in **ESX**.

***

### ✅ Notes

* Everything here is **client-side only**.
* All systems auto-detect based on `Framework`, `Target`, and `Clothing` values.
* Use `TriggerEvent('devm-bridge:...')` instead of framework-specific events.
