Cheats
游戏全局作弊开关与随机作弊。
include/XBase/Cheats.h · XBase::Cheats
作弊开关与随机作弊状态由 XBase 持有;宿主只设置开关和随机参数。VC/III 不提供这些作弊,入口必须通过
FeatureCapability禁用。
单项作弊
void FlyingCars(bool enable); bool IsFlyingCars();
void AllCarsHaveNitro(bool enable); bool IsAllCarsHaveNitro();
void PerfectHandling(bool enable); bool IsPerfectHandling();
void GreenLights(bool enable); bool IsGreenLights();
void Riot(bool enable); bool IsRiot();
void BoatFly(bool enable); bool IsBoatFly();
void DriveWater(bool enable); bool IsDriveWater();
void TankMode(bool enable); bool IsTankMode();
void AimDrive(bool enable); bool IsAimDrive();
void NoDerail(bool enable); bool IsNoDerail();
void FlipNoBurn(bool enable); bool IsFlipNoBurn();
void StayOnBike(bool enable); bool IsStayOnBike();
void BikeFly(bool enable); bool IsBikeFly();多数开关对应 SA 内置的 m_aCheatsActive[] 标志位数组(基址 0x969130)。NoDerail 与 FlipNoBurn 通过代码补丁实现,Shutdown() 会恢复原始字节;StayOnBike 与 BikeFly 在 Process() 中逐帧维护,需要玩家处于对应载具状态。
随机作弊
struct RandomSettings {
bool enabled = false;
bool showProgress = false;
int intervalSeconds = 5;
};
void SetRandomSettings(const RandomSettings& settings);
RandomSettings GetRandomSettings();
std::size_t GetRandomCheatCount();
const char* GetRandomCheatName(std::size_t index);
bool IsRandomCheatEnabled(std::size_t index);
bool SetRandomCheatEnabled(std::size_t index, bool enabled);intervalSeconds收敛到 1~60;计时到达后在启用列表内随机触发一次游戏作弊并显示名称。showProgress开启时在屏幕顶部绘制进度条。GetRandomCheatCount()返回内置作弊条目数;页面用GetRandomCheatName()填充列表,用SetRandomCheatEnabled()逐项启停。
生命周期
void Init();
void NotifyGameInit();
void Process();
void Shutdown();Init() 订阅绘制事件(幂等);Process() 由 Core 领域分发,处理随机作弊计时与逐帧作弊;NotifyGameInit() 重置计时;Shutdown() 关闭全部开关、恢复补丁并退订绘制事件。
版本能力
| FeatureCapability | SA | VC | III |
|---|---|---|---|
| VehicleCheats | ✅ | ◐ | ◐ |
| CheatsRandom | ✅ | ✖ | ✖ |
VC 通过游戏作弊标志实现 FlyingCars、BoatFly、DriveWater、GreenLights,III 实现 FlyingCars 与 PerfectHandling;其余载具作弊与随机作弊仍为 SA 专属,未实现的开关保持空操作,宿主必须按能力禁用入口。