@@ -53,6 +53,7 @@ void CVehicleRPCs::LoadFunctions()
5353 AddHandler (SET_VEHICLE_SIRENS, SetVehicleSirens, " setVehicleSirens" );
5454 AddHandler (SET_VEHICLE_PLATE_TEXT, SetVehiclePlateText, " setVehiclePlateText" );
5555 AddHandler (SPAWN_VEHICLE_FLYING_COMPONENT, SpawnVehicleFlyingComponent, " spawnVehicleFlyingComponent" );
56+ AddHandler (SET_VEHICLE_NITRO_ACTIVATED, SetVehicleNitroActivated, " SetVehicleNitroActivated" );
5657}
5758
5859void CVehicleRPCs::DestroyAllVehicles (NetBitStreamInterface& bitStream)
@@ -667,3 +668,26 @@ void CVehicleRPCs::SpawnVehicleFlyingComponent(CClientEntity* const sourceEntity
667668 if (bitStream.Read (nodeIndex) && bitStream.Read (collisionType) && bitStream.Read (removalTime))
668669 vehicle->SpawnFlyingComponent (static_cast <eCarNodes>(nodeIndex), static_cast <eCarComponentCollisionTypes>(collisionType), removalTime);
669670}
671+
672+ void CVehicleRPCs::SetVehicleNitroActivated (CClientEntity* pSourceEntity, NetBitStreamInterface& bitStream)
673+ {
674+ bool state = bitStream.ReadBit ();
675+
676+ CClientVehicle* vehicle = m_pVehicleManager->Get (pSourceEntity->GetID ());
677+ if (!vehicle)
678+ return ;
679+
680+ if (!vehicle->IsNitroInstalled ())
681+ return ;
682+
683+ // If nitro level < 0, nitro is activated. (until nitro level reaches -1, at that point it will become 0 and increase instead of decrease)
684+ if ((vehicle->GetNitroLevel () < 0 .0f ) == state)
685+ return ;
686+
687+ // Apply nitro level change
688+ if (state)
689+ vehicle->SetNitroLevel (vehicle->GetNitroLevel () - 1 .0001f );
690+ else
691+ vehicle->SetNitroLevel (vehicle->GetNitroLevel () + 1 .0001f );
692+ }
693+
0 commit comments