Karuzo

setVehicleComponentRotation Problem

Recommended Posts

Suh dude,

I have this strange problem with setting the rotation of the tires on a vehicle.

I'm trying to adjust the camber of the tire but without any success so far.

This is my current code:

The camber variable is the position of a scrollbar.

The variable frontcamber outputs the right rotation set but on the vehicle itself there is no visible change.

	local veh = getPedOccupiedVehicle(localPlayer)
	local frontRightTire = "wheel_rf_dummy"
	local frontLeftTire = "wheel_lf_dummy"
	local backRightTire = "wheel_rb_dummy"
	local backLeftTire = "wheel_lb_dummy"
	local mincamber = 0
	local maxcamber = 30
	if camber == 0 then 
		setVehicleComponentRotation( veh, frontRightTire, 0, 0, mincamber )
		setVehicleComponentRotation( veh, frontLeftTire, 0, 0, mincamber )
		setVehicleComponentRotation( veh, backLeftTire, 0, 0, mincamber )
		setVehicleComponentRotation( veh, backRightTire, 0, 0, mincamber )
	elseif camber == 100 then 
		setVehicleComponentRotation( veh, frontRightTire, 0, 0, maxcamber )
		setVehicleComponentRotation( veh, frontLeftTire, 0, 0, maxcamber )
		setVehicleComponentRotation( veh, backLeftTire, 0, 0, maxcamber )
		setVehicleComponentRotation( veh, backRightTire, 0, 0, maxcamber )
	elseif camber>0 and camber<100 then
		local acccamber = interpolateBetween(mincamber,0,0,maxcamber,0,0,camber/100,"Linear")
		setVehicleComponentRotation( veh, frontRightTire, 0, 0, acccamber, "world")
		setVehicleComponentRotation( veh, frontLeftTire, 0, 0, acccamber, "world")
		setVehicleComponentRotation( veh, backLeftTire, 0, 0, acccamber, "world")
		setVehicleComponentRotation( veh, backRightTire, 0, 0, acccamber, "world")
		local frontcamber = getVehicleComponentRotation(veh,frontLeftTire)
		outputChatBox(frontcamber)
	end

 

  • Like 1

Share this post


Link to post
5 minutes ago, IIYAMA said:

I wonder if you can rotate tires like that.

 

Why don't you try it with: https://wiki.multitheftauto.com/wiki/SetAnalogControlState ? Since you are only rotating the Z as.

I think you didn't get what i'm trying to do:

I'm trying to adjust the camber not the steering of the car.

I tried with X,Y and Z but nothing changed.

I want negative camber on my car:

Bildergebnis für camber

 

Share this post


Link to post

I don't think you can rotate the wheels at all, because their rotation is engine controlled.

Share this post


Link to post

How about you try to pre render it?

> onClientPreRender <

Maybe the GTA is re-adjusting the wheels every frame.

 

Share this post


Link to post

I already tried out onClientPreRender, but for some reason it just doesn't work.

Guess rotating the wheels at all is not possible, but positionating them works for some reason.

Share this post


Link to post
4 minutes ago, Karuzo said:

I already tried out onClientPreRender, but for some reason it just doesn't work.

Guess rotating the wheels at all is not possible, but positionating them works for some reason.

As I said before, the wheels rotation is controlled by the engine, you can actually use getVehicleComponentRotation on the wheels to get the steering angle.

Share this post


Link to post
42 minutes ago, Karuzo said:

I think you didn't get what i'm trying to do:

I'm trying to adjust the camber not the steering of the car.

I tried with X,Y and Z but nothing changed.

I want negative camber on my car:

Bildergebnis für camber

 

Did you also check the handlings? There might be a handling option to change that angle.

Share this post


Link to post

The fifth and 6th byte of the model flags actually change the camber of the wheels.

Share this post


Link to post
1 hour ago, 3aGl3 said:

The fifth and 6th byte of the model flags actually change the camber of the wheels.

I never understood that conversion from bytes to flags, can you explain that to me? 

Share this post


Link to post

Well, flags are sort of easy to understand the more you break them down. First of all you have to know how a computer handles numbers, in particular integers.

So let me give you the super basic rundown...
Let's for example take the number 1337 as a Base10 number, what we usually work with.
Now in Base16, also called Hex it would be, 539. Why hex you may ask, well one hex digit has exactly 1 byte.
That being said the number would be 0101 0011 1001 in Base2, also known as Binary.

Why all this? Well flags are stored as integer numbers, however their data is hidden in their binary form.
Each bit stands for something that can be toggled on or off, being 1 or 0 respectively. Now since each bit is a different number you can have all of them in a different state.

Let's take this for example:

1 (0001) - is van
2 (0010) - is bus
4 (0100) - is low
8 (1000) - is big

Given these values:

1 van
2 bus
3 "van bus"
4 low
...
15 "low big van bus"

GTA expands on that, taking 8 bytes and making them into one number, resulting in a full int_32 integer number.

  • Like 2

Share this post


Link to post

Yeah, i understand that.

What i don't understand is, how I get to this decimal value generated by a hexadecimal value. F.e.: 0x12345678

How would the number look like if i want to set the Flag "AXLE_F_MCPHERSON" ? 

 

Share this post


Link to post

As far as I understand it you simply set the desired bits on in the byte and build the hex number like this:

0x0004400
or
0x0044000

depending on what endianess the game uses for those flags.

Share this post


Link to post

https://wiki.multitheftauto.com/wiki/Vehicle_component_manipulation
In our upcoming server update we're using this exact method.
Hope that link helps, my Russian friend scripted it for us, took him a couple hours.
You're just gonna have to play around to see how these things work, you can maybe use https://wiki.multitheftauto.com/wiki/SetVehicleComponentPosition, along with https://wiki.multitheftauto.com/wiki/SetVehicleComponentRotation
I wish I could help more but I'm a modeler not a scripter xD

Edited by Justin|X5|

Share this post


Link to post

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Recently Browsing   0 members

    No registered users viewing this page.