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)。NoDerailFlipNoBurn 通过代码补丁实现,Shutdown() 会恢复原始字节;StayOnBikeBikeFlyProcess() 中逐帧维护,需要玩家处于对应载具状态。

随机作弊

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() 关闭全部开关、恢复补丁并退订绘制事件。

版本能力

FeatureCapabilitySAVCIII
VehicleCheats
CheatsRandom

VC 通过游戏作弊标志实现 FlyingCarsBoatFlyDriveWaterGreenLights,III 实现 FlyingCarsPerfectHandling;其余载具作弊与随机作弊仍为 SA 专属,未实现的开关保持空操作,宿主必须按能力禁用入口。

On this page