跳到主要内容

轮胎状态

备注

轮胎状态被原生函数使用,例如获取车辆损伤状态更新车辆损伤状态

备注

即使超过 4 个轮胎的车辆(如卡车)也仅有 4 个轮胎状态位。

位存储规则

四轮车辆的轮胎损伤状态使用 1 个半字节(4 位)存储,两轮车辆使用 1 个字节对(2 位)。每个位存储对应轮胎是否爆胎(值 1)​完好(值 0)​

  • 第一位存储四轮车辆的右后轮或两轮车辆的后轮状态
  • 第二位存储四轮车辆的右前轮或两轮车辆的前轮状态
  • 第三位存储四轮车辆的左后轮状态
  • 第四位存储四轮车辆的左前轮状态

注意位序从右向左计算,因此第一位是最右侧的位。


示例

以下代码表示四轮车辆有两个轮胎爆胎:

0101

由于 SA-MP 返回十进制数值,需先转换为二进制才能得到上述结果。对应示例的 SA-MP 返回值为:

5


状态对照表

以下为轮胎状态的视觉化表示(俯视视角,上方为车辆前部)

图例:​

o - 完好轮胎
x - 爆胎

四轮车辆

4 位表示四轮状态:(前左)(后左)(前右)(后右)

0: (0000)

    o-o
| |
o-o

1: (0001)

    o-o
| |
o-x

2: (0010)

    o-x
| |
o-o

3: (0011)

    o-x
| |
o-x

4: (0100)

    o-o
| |
x-o

5: (0101)

    o-o
| |
x-x

6: (0110)

    o-x
| |
x-o

7: (0111)

    o-x
| |
x-x

8: (1000)

    x-o
| |
o-o

9: (1001)

    x-o
| |
o-x

10: (1010)

    x-x
| |
o-o

11: (1011)

    x-x
| |
o-x

12: (1100)

    x-o
| |
x-o

13: (1101)

    x-o
| |
x-x

14: (1110)

    x-x
| |
x-o

15: (1111)

    x-x
| |
x-x

15 之后数值循环,16 对应 0,17 对应 1,以此类推。


双轮车辆(摩托车)

2 位表示双轮状态:(前)(后)

0: (00)

    o
|
o

1: (01)

    o
|
x

2: (10)

    x
|
o

3: (11)

    x
|
x

3 之后数值循环,4 对应 0,5 对应 1,以此类推。


使用示例

设置四轮车辆后两轮爆胎,保持前轮状态:

new
VEHICLE_PANEL_STATUS:panels,
VEHICLE_DOOR_STATUS:doors,
VEHICLE_LIGHT_STATUS:lights,
VEHICLE_TIRE_STATUS:tires;

GetVehicleDamageStatus(vehicleid, panels, doors, lights, tires);
UpdateVehicleDamageStatus(vehicleid, panels, doors, lights, (tires | VEHICLE_TIRE_STATUS:0b0101)); // '0b'前缀表示二进制数,类似'0x'表示十六进制

相关链接