Jump to content

Как изменить управление для всего транспорта?


Recommended Posts

Всем здравствуйте, недавно решил сделать автогоночный сервер, но столкнулся с проблемой изменения handling для транспорта, ведь он не сохраняется на весь транспорт, а только через еденицу и я не смог найти конфиг отвечающий за это. Может ли кто нибудь объяснить как можно поменять управление для транспорта на сервер MTA?

Just now, SESH45 said:

Всем здравствуйте, недавно решил сделать автогоночный сервер, но столкнулся с проблемой изменения handling для транспорта, ведь он не сохраняется на весь транспорт, а только на еденицу транспорта и я не смог найти конфиг отвечающий за это. Может ли кто нибудь объяснить как можно поменять управление для транспорта на сервер MTA?

 

1 minute ago, SESH45 said:

 

 

 

Link to comment
  • 2 months later...
On 29/03/2022 at 15:16, SESH45 said:

Всем здравствуйте, недавно решил сделать автогоночный сервер, но столкнулся с проблемой изменения handling для транспорта, ведь он не сохраняется на весь транспорт, а только через еденицу и я не смог найти конфиг отвечающий за это. Может ли кто нибудь объяснить как можно поменять управление для транспорта на сервер MTA?

 

 

Пример кода
 

-- Клиент --
addEventHandler ("onClientElementStreamIn", root, function()
	if getElementType(source) ~= "vehicle" then return end
	triggerServerEvent ("onVehicleSpawn", resourceRoot, source)
end)

 

-- Сервер --
addEvent ("onVehicleSpawn", true)
addEventHandler ("onVehicleSpawn", resourceRoot, function (veh)
	if not handlings[getElementModel(veh)] then return end
	setVehicleHandlingFromText (veh, handlings[getElementModel(veh)])
end)

addEventHandler ("onElementModelChange", resourceRoot, function ()
	if not handlings[getElementModel(source)] then return end
	setVehicleHandlingFromText (source, handlings[getElementModel(source)])
end)


local countHandlingTable = {
	[1] = "mass",
	[2] = "turnMass",
	[3] = "dragCoeff",
	[4] = "centerOfMassX",
	[5] = "centerOfMassY",
	[6] = "centerOfMassZ",
	[7] = "percentSubmerged",
	[8] = "tractionMultiplier",
	[9] = "tractionLoss",
	[10] = "tractionBias",
	[11] = "numberOfGears",
	[12] = "maxVelocity",
	[13] = "engineAcceleration",
	[14] = "engineInertia",
	[15] = "driveType",
	[16] = "engineType",
	[17] = "brakeDeceleration",
	[18] = "brakeBias",
	[19] = "ABS",
	[20] = "steeringLock",
	[21] = "suspensionForceLevel",
	[22] = "suspensionDamping",
	[23] = "suspensionHighSpeedDamping",
	[24] = "suspensionUpperLimit",
	[25] = "suspensionLowerLimit",
	[26] = "suspensionFrontRearBias",
	[27] = "suspensionAntiDiveMultiplier",
	[28] = "seatOffsetDistance",
	[29] = "collisionDamageMultiplier",
	[30] = "monetary",
	[31] = "modelFlags",
	[32] = "handlingFlags",
	[33] = "headLight",
	[34] = "tailLight",
	[35] = "animGroup",
}

local driveTypes = {
	["4"] = "awd",
	["r"] = "rwd",
	["f"] = "fwd",
}

function setVehicleHandlingFromText (vehicle, text)
	local t = {}
	local carID = vehicle.model
	local tText = split(text, " ")
	table.remove (tText, 1)
	local countHandling = 1
	for i, v in ipairs (tText) do
		t[countHandlingTable[i]] = v
	end
	
	local acceptCenterMass = false
	local centerMass = {x = nil, y = nil, z = nil}
	for i, v in pairs (t) do
		if i == "centerOfMassX" then
			centerMass.x = tonumber(v)
		elseif i == "centerOfMassY" then
			centerMass.y = tonumber(v)
		elseif i == "centerOfMassZ" then
			centerMass.z = tonumber(v)
		else
			if centerMass.x and centerMass.y and centerMass.z and not acceptCenterMass then
				setVehicleHandling (vehicle, "centerOfMass", {centerMass.x, centerMass.y, centerMass.z})
				acceptCenterMass = true
			end
			
			if i == "modelFlags" or i == "handlingFlags" then
				setVehicleHandling (vehicle, i, "0x"..tostring(v))
			elseif i == "driveType" then
				setVehicleHandling (vehicle, i, driveTypes[v])
			else
				setVehicleHandling (vehicle, i, tonumber(v) or tostring(v))
			end
		end
	end
end

 

-- Общий (Shared) -- 
handlings = {
  [411] = "LANDSTAL 1700.0 5008.3 2.5 0.0 0.0 -0.3 85 0.75 0.85 0.5 5 160.0 25.0 20.0 4 d 6.2 0.60 0 35.0 2.4 0.08 0.0 0.28 -0.14 0.5 0.25 0.27 0.23 25000 20 500002 0 1 0",
  [502] = "PRIMO 1700.0 5008.3 2.5 0.0 0.0 -0.3 85 0.75 0.85 0.5 5 160.0 25.0 20.0 4 d 6.2 0.60 0 35.0 2.4 0.08 0.0 0.28 -0.14 0.5 0.25 0.27 0.23 25000 20 500002 0 1 0",
}

Короче делаешь свой хендлинг через hedit, потом его экспортируешь и вставляешь в shared.
P.S. Функцию setVehicleHandlingFromText писал сам

Link to comment

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.
×
×
  • Create New...