Pular para o conteúdo principal

Tire States

nota

Os estados dos pneus são usados por nativos como GetVehicleDamageStatus e UpdateVehicleDamageStatus.

nota

Mesmo veículos com mais de 4 rodas (por exemplo, caminhões) possuem apenas 4 estados de pneus.

Qual bit armazena o quê?

Os danos de todos os pneus serão salvos juntos em 1 mordida (que equivale a 4 bits) para veículos de 4 rodas e em 1 par (que equivale a 2 bits) para veículos de 2 rodas. Cada bit armazena se o pneu correspondente está estourado (valor 1) ou não (valor 0).

  • O primeiro bit armazena o estado do pneu traseiro-direito para um veículo de 4 rodas ou do pneu traseiro para um veículo de 2 rodas.
  • O segundo bit armazena o estado do pneu dianteiro direito para um veículo de 4 rodas ou do pneu dianteiro para um veículo de 2 rodas.
  • O terceiro bit armazena o estado do pneu traseiro esquerdo de um veículo de 4 rodas.
  • O quarto bit armazena o estado do pneu dianteiro esquerdo de um veículo de 4 rodas.

Observe que os bits são contados de trás para frente, então o primeiro bit é o bit mais à direita.


Exemplo

O código a seguir informa que para um veículo de 4 rodas dois pneus estouram e dois não:

0101

No entanto, SA-MP retorna um número decimal, então você deve primeiro convertê-lo em um número binário para obter um resultado como o acima. O que SA-MP retornaria dado o exemplo acima é este:

5


Tabela de informações

Aqui está uma representação visual dos estados dos pneus. Veículo visto de cima para baixo, sendo os valores superiores a frente do veículo e os valores inferiores a traseira do veículo.

Lenda:

o - inflated tire
x - popped tire

veículos de 4 rodas

4 bits para veículos de 4 rodas: (FL)(BL)(FR)(BR) (Frente-Esquerda, Trás-Esquerda, Frente-Direita e Trás-Direita).

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

Depois de 15 os valores são repetidos, então 16 é 0, 17 é 1 e assim por diante.


Veículos de 2 rodas (bicicletas)

2 bits para veículos de 2 rodas: (F)(B) (Frente e Trás).

0: (00)

    o
|
o

1: (01)

    o
|
x

2: (10)

    x
|
o

3: (11)

    x
|
x

Depois de 3 os valores são repetidos, então 4 é 0, 5 é 1 e assim por diante.


Exemplo de uso

Para estourar os dois pneus traseiros de um veículo de 4 rodas, mantendo os dianteiros inalterados:

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)); // A parte '0b' significa que o número a seguir está em binário. Da mesma forma que '0x' indica um número hexadecimal.

Veja também