灯光状态
备注
灯光状态被诸如GetVehicleDamageStatus和UpdateVehicleDamageStatus等原生函数使用。
备注
双轮车辆(因此有 2 个车灯)的灯光状态不可更改。
备注
车辆的两个后车灯无法单独更改。
比特位存储规则
所有车灯的损坏状态将被存储在一个字节中(共 8 比特)。每个比特位存储对应车灯的损坏状态(值为 1)或正常状态(值为 0)。
- 第一位存储左前车灯状态
- 第三位存储右前车灯状态
- 第七位存储后部车灯状态
- 其余比特位未使用
注意比特位从右向左计数,因此第一位是最右侧的比特位。
示例
以下代码表示前部两个车灯损坏,后部车灯正常:
0000 0101
然而 SA-MP 会返回十进制数字,因此您需要先将其转换为二进制才能得到上述结果。对于这个示例,SA-MP 将返回:
5
状态对照表
以下是灯光状态的视觉化表示。图示为车辆俯视图,上方数值表示车辆前部,下方数值表示车辆后部。
图例:
o - 启用灯光
x - 禁用灯光
0: (0000 0000)
o-o
| |
o-o
1: (0000 0001)
x-o
| |
o-o
4: (0000 0100)
o-x
| |
o-o
5: (0000 0101)
x-x
| |
o-o
64: (0100 0000)
o-o
| |
x-x
65: (0100 0001)
x-o
| |
x-x
68: (0100 0100)
o-x
| |
x-x
69: (0100 0101)
x-x
| |
x-x
未列出的其他值也可以改变车灯状态,但会产生重复效果(例如 15 与 5 的效果相同)。超过 255 的值会循环重置,256 将被设为 0,257 设为 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 | VEHICLE_LIGHT_STATUS:0b01000000), tires); // '0b'前缀表示后续数字为二进制格式,与'0x'表示十六进制同理