---
title: "Types"
description: "共享数据结构定义。"
---

---
title: Types
description: 共享数据结构定义。
---

`include/XBase/ValueTypes.h` · `XBase`

公共值类型不依赖 plugin-sdk、ImGui、D3D 或 Windows 类型。游戏对象只通过强类型 ID 表示，宿主不能由 ID 还原 SDK 指针。

## 基础值类型

```cpp
struct Vec2 { float x; float y; };
struct Vec3 { float x; float y; float z; };
struct Rect { float left; float top; float right; float bottom; };
struct Color { std::uint8_t r; std::uint8_t g; std::uint8_t b; std::uint8_t a; };
struct ColorF { float r; float g; float b; float a; };
```

`Color` 用于 8 位颜色通道，`ColorF` 用于归一化浮点颜色。第三方向量和颜色类型只允许在 XBase 私有实现中转换。

## 不透明 ID

```cpp
struct EntityId { std::uint32_t value; };
struct PedId { std::uint32_t value; };
struct VehicleId { std::uint32_t value; };
struct FontId { std::uint32_t value; };
struct TextureId { std::uint64_t value; };
```

不同领域的 ID 是不同类型，不能互相隐式传递。`value == 0` 表示无效 ID；使用显式布尔转换检查有效性。ID 只表达对象身份，实际 pool 生命周期验证由 XBase 完成。

`include/XBase/Types.h` · `XBase::Types`

## ProofState

```cpp
struct ProofState {
    bool bullet;
    bool collision;
    bool explosion;
    bool fire;
    bool melee;
    bool nonPlayer;
};
```

防护状态结构体，表示各类伤害类型的免疫状态。

## PedSpawnOptions

```cpp
struct PedSpawnOptions {
    unsigned int modelId = 7;
    int pedType = 4;
    int gangType = 0;
    bool asGang = false;
    float health = 100.0f;
    float armour = 0.0f;
    bool freeze = false;
    bool hostile = false;
    unsigned int weaponModel = 0;
};
```

生成 Ped 时的选项结构体。`pedType` 默认值为 4，`weaponModel` 为 0 时表示赤手空拳。

## SpawnVehicleOptions

```cpp
struct SpawnVehicleOptions {
    bool asDriver = true;
    bool aircraftInAir = true;
    bool cleanupPrevious = true;
};
```

载具生成选项：是否把玩家放入驾驶位、飞行器是否空中生成、是否清理上一辆由 XBase 生成的载具。

## PickupOptions

```cpp
struct PickupOptions {
    unsigned int modelId = 1240;
    unsigned char type = 3;
    unsigned int quantity = 1;
    unsigned int moneyPerDay = 0;
    bool empty = false;
};
```

`type` 对应 `ePickupType`；越界值由后端收敛到 `PICKUP_ONCE`。

## VehicleAppearanceOptions

```cpp
struct VehicleAppearanceOptions {
    int primaryColor = 0;
    int secondaryColor = 0;
    int paintjob = -1;
    int modId = 1000;
};
```

## PlayerAppearanceOptions

```cpp
struct PlayerAppearanceOptions {
    int skinModel = 0;
    int clothesTexture = 0;
    int clothesModel = 0;
    int clothesBodyPart = 0;
    int statId = 0;
    float statValue = 0.0f;
};
```
