---
title: "World"
description: "天气、时间、游戏速度、重力、Pickup。"
---

---
title: World
description: 天气、时间、游戏速度、重力、Pickup。
---

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

> World 的游戏对象访问、地址写入、天气锁定、时间锁定和 Pickup 会话由 XBase 管理。XMenu 只转换参数并消费结果；支持情况必须通过 `FeatureCapability` 判断。

## 天气

```cpp
int  GetWeather();
void SetWeather(int id, bool lock);
void ReleaseWeather();
bool IsWeatherLocked();
```

## 时间

```cpp
void SetTime(int hour, int minute);
void GetTime(int& hour, int& minute);
void SyncTimeWithSystemClock();
```

## 时间控制

```cpp
void SetFreezeTime(bool enable);   // 冻结时间流逝
bool IsTimeFrozen();
void SetLockedTime(bool enable, int hour, int minute); // 锁定到指定时刻
void SetFasterClock(bool enable);  // 加速时间流逝
bool IsFasterClock();
```

## 系统控制

```cpp
void SetDisableReplay(bool enable);      // 禁止重播
bool IsReplayDisabled();
void SetDisableCheats(bool enable);      // 禁用所有作弊
bool AreCheatsDisabled();
void SetForbiddenAreaWanted(bool enable); // 禁区通缉
bool IsForbiddenAreaWanted();
void SetFreePayNSpray(bool enable);      // 免费喷漆
bool IsFreePayNSpray();
void SetNoWaterPhysics(bool enable);     // 无水物理
bool IsNoWaterPhysics();
void SetSolidWater(bool enable);         // 水面可站立（仅 SA）
bool IsSolidWater();
```

## 天气特效

```cpp
float GetRain();            void SetRain(float rain);
float GetFoggyness();       void SetFoggyness(float fog);
float GetCloudCoverage();   void SetCloudCoverage(float clouds);
float GetWind();            void SetWind(float wind);
float GetSandstorm();       void SetSandstorm(float sandstorm);
float GetExtraSunnyness();  void SetExtraSunnyness(float sun);
float GetWetRoads();        void SetWetRoads(float wet);
```

取值范围通常 0.0~1.0。只有 SA 有真实实现，能力项为 `WorldWeatherEffects`；VC/III 为空操作且报告 `Unsupported`，页面必须禁用入口。

## 游戏速度与重力

```cpp
void SetGameSpeed(float speed);
float GetGameSpeed();
int GetFpsLimit();
void SetFpsLimit(int limit);
float GetGravity();
void SetGravity(float gravity);
```

`SetGameSpeed(0.0f)` 即暂停游戏。

## 游戏日期

```cpp
int  GetDaysPassed();
void SetDaysPassed(int days);
```

## Pickup

```cpp
int SpawnPickup(const Types::PickupOptions& options); // 返回 pickup 句柄，失败返回 -1
bool UpdateLastPickup(const Types::PickupOptions& options); // 在最近一次生成位置重建 pickup
bool RemoveLastPickup();      // 移除最近一次生成的 pickup
bool RemoveTrackedPickups();  // 移除 XBase 创建的全部 pickup
```

```cpp
XBase::World::SpawnPickup({ .modelId = 1240, .type = 3 });
```

XBase 只记录自己创建的 pickup 句柄；`RemoveTrackedPickups()` 不会清空游戏任务 pickup。`WorldPickups` 在 SA 为 `Supported`，VC/III 由 portable 后端实现，报告 `Partial`。

## 全局清除

```cpp
void DestroyAllVehicles();  // 炸毁所有载具
void DestroyAllPeds();      // 击杀所有 Ped（玩家除外）
```

## 生命周期

```cpp
void NotifyGameInit();
void Process();
void Shutdown();
```

`World::Process()` 由 `Core::Process()` 唯一调用，负责天气、时间和运行时状态维护；宿主不得直接调用。`NotifyGameInit()` 丢弃上一局的锁定状态与 pickup 会话；`Shutdown()` 释放天气锁定、恢复时钟与拾取物追踪状态。
