mirror of
https://github.com/lifestorm/wnsrc.git
synced 2025-12-16 13:23:46 +03:00
662 lines
22 KiB
Lua
662 lines
22 KiB
Lua
--[[
|
|
| This file was obtained through the combined efforts
|
|
| of Madbluntz & Plymouth Antiquarian Society.
|
|
|
|
|
| Credits: lifestorm, Gregory Wayne Rossel JR.,
|
|
| Maloy, DrPepper10 @ RIP, Atle!
|
|
|
|
|
| Visit for more: https://plymouth.thetwilightzone.ru/
|
|
--]]
|
|
|
|
CreateConVar( "sv_simfphys_enabledamage", "1", {FCVAR_REPLICATED , FCVAR_ARCHIVE},"1 = enabled, 0 = disabled" )
|
|
CreateConVar( "sv_simfphys_gib_lifetime", "30", {FCVAR_REPLICATED , FCVAR_ARCHIVE},"How many seconds before removing the gibs (0 = never remove)" )
|
|
CreateConVar( "sv_simfphys_playerdamage", "1", {FCVAR_REPLICATED , FCVAR_ARCHIVE},"should players take damage from collisions in vehicles?" )
|
|
CreateConVar( "sv_simfphys_damagemultiplicator", "1", {FCVAR_REPLICATED , FCVAR_ARCHIVE},"vehicle damage multiplicator" )
|
|
CreateConVar( "sv_simfphys_fuel", "1", {FCVAR_REPLICATED , FCVAR_ARCHIVE},"enable fuel? 1 = enabled, 0 = disabled" )
|
|
CreateConVar( "sv_simfphys_fuelscale", "0.1", {FCVAR_REPLICATED , FCVAR_ARCHIVE},"fuel tank size multiplier. 1 = Realistic fuel tank size (about 2-3 hours of fullthrottle driving, Lol, have fun)" )
|
|
|
|
simfphys.DamageEnabled = false
|
|
simfphys.DamageMul = 1
|
|
simfphys.pDamageEnabled = false
|
|
simfphys.Fuel = true
|
|
simfphys.FuelMul = 0.1
|
|
|
|
cvars.AddChangeCallback( "sv_simfphys_enabledamage", function( convar, oldValue, newValue ) simfphys.DamageEnabled = ( tonumber( newValue )~=0 ) end)
|
|
cvars.AddChangeCallback( "sv_simfphys_damagemultiplicator", function( convar, oldValue, newValue ) simfphys.DamageMul = tonumber( newValue ) end)
|
|
cvars.AddChangeCallback( "sv_simfphys_playerdamage", function( convar, oldValue, newValue ) simfphys.pDamageEnabled = ( tonumber( newValue )~=0 ) end)
|
|
cvars.AddChangeCallback( "sv_simfphys_fuel", function( convar, oldValue, newValue ) simfphys.Fuel = ( tonumber( newValue )~=0 ) end)
|
|
cvars.AddChangeCallback( "sv_simfphys_fuelscale", function( convar, oldValue, newValue ) simfphys.FuelMul = tonumber( newValue ) end)
|
|
|
|
simfphys.DamageEnabled = GetConVar( "sv_simfphys_enabledamage" ):GetBool()
|
|
simfphys.DamageMul = GetConVar( "sv_simfphys_damagemultiplicator" ):GetFloat()
|
|
simfphys.pDamageEnabled = GetConVar( "sv_simfphys_playerdamage" ):GetBool()
|
|
simfphys.Fuel = GetConVar( "sv_simfphys_fuel" ):GetBool()
|
|
simfphys.FuelMul = GetConVar( "sv_simfphys_fuelscale" ):GetFloat()
|
|
|
|
simfphys.ice = CreateConVar( "sv_simfphys_traction_ice", "0.35", {FCVAR_REPLICATED , FCVAR_ARCHIVE})
|
|
simfphys.gmod_ice = CreateConVar( "sv_simfphys_traction_gmod_ice", "0.1", {FCVAR_REPLICATED , FCVAR_ARCHIVE})
|
|
simfphys.snow = CreateConVar( "sv_simfphys_traction_snow", "0.7", {FCVAR_REPLICATED , FCVAR_ARCHIVE})
|
|
simfphys.slipperyslime = CreateConVar( "sv_simfphys_traction_slipperyslime", "0.2", {FCVAR_REPLICATED , FCVAR_ARCHIVE})
|
|
simfphys.grass = CreateConVar( "sv_simfphys_traction_grass", "1", {FCVAR_REPLICATED , FCVAR_ARCHIVE})
|
|
simfphys.sand = CreateConVar( "sv_simfphys_traction_sand", "1", {FCVAR_REPLICATED , FCVAR_ARCHIVE})
|
|
simfphys.dirt = CreateConVar( "sv_simfphys_traction_dirt", "1", {FCVAR_REPLICATED , FCVAR_ARCHIVE})
|
|
simfphys.concrete = CreateConVar( "sv_simfphys_traction_concrete", "1", {FCVAR_REPLICATED , FCVAR_ARCHIVE})
|
|
simfphys.metal = CreateConVar( "sv_simfphys_traction_metal", "1", {FCVAR_REPLICATED , FCVAR_ARCHIVE})
|
|
simfphys.glass = CreateConVar( "sv_simfphys_traction_glass", "1", {FCVAR_REPLICATED , FCVAR_ARCHIVE})
|
|
simfphys.gravel = CreateConVar( "sv_simfphys_traction_gravel", "1", {FCVAR_REPLICATED , FCVAR_ARCHIVE})
|
|
simfphys.rock = CreateConVar( "sv_simfphys_traction_rock", "1", {FCVAR_REPLICATED , FCVAR_ARCHIVE})
|
|
simfphys.wood = CreateConVar( "sv_simfphys_traction_wood", "1", {FCVAR_REPLICATED , FCVAR_ARCHIVE})
|
|
|
|
function simfphys.IsCar( ent )
|
|
if not IsValid( ent ) then return false end
|
|
|
|
return ent.LVSsimfphys == true
|
|
end
|
|
|
|
local meta = FindMetaTable( "Player" )
|
|
function meta:IsDrivingSimfphys()
|
|
local Car = self:GetSimfphys()
|
|
local Pod = self:GetVehicle()
|
|
|
|
if not IsValid( Car ) then return false end
|
|
|
|
return Pod == Car:GetDriverSeat()
|
|
end
|
|
|
|
function meta:GetSimfphys()
|
|
local Pod = self:GetVehicle()
|
|
|
|
if not IsValid( Pod ) then return NULL end
|
|
|
|
if Pod.SPHYSchecked == true then
|
|
|
|
return Pod.SPHYSBaseEnt
|
|
|
|
else
|
|
local Parent = Pod:GetParent()
|
|
|
|
if not IsValid( Parent ) then return NULL end
|
|
|
|
if not Parent.LVSsimfphys then
|
|
Pod.SPHYSchecked = LVS.MapDoneLoading
|
|
Pod.SPHYSBaseEnt = NULL
|
|
Pod.vehiclebase = NULL
|
|
|
|
return NULL
|
|
end
|
|
|
|
Pod.SPHYSchecked = true
|
|
Pod.SPHYSBaseEnt = Parent
|
|
Pod.vehiclebase = Parent -- compatibility for old addons
|
|
|
|
return Parent
|
|
end
|
|
end
|
|
|
|
if SERVER then
|
|
util.AddNetworkString( "simfphys_settings" )
|
|
util.AddNetworkString( "simfphys_turnsignal" )
|
|
util.AddNetworkString( "simfphys_spritedamage" )
|
|
util.AddNetworkString( "simfphys_lightsfixall" )
|
|
util.AddNetworkString( "simfphys_backfire" )
|
|
util.AddNetworkString( "simfphys_plyrequestinfo" )
|
|
|
|
net.Receive( "simfphys_plyrequestinfo", function( length, ply )
|
|
if not IsValid( ply ) then return end
|
|
|
|
ply.simeditor_nextrequest = isnumber( ply.simeditor_nextrequest ) and ply.simeditor_nextrequest or 0
|
|
|
|
if ply.simeditor_nextrequest > CurTime() then return end
|
|
|
|
ply.simeditor_nextrequest = CurTime() + 0.5
|
|
|
|
local ent = ply:GetEyeTrace().Entity
|
|
|
|
if not simfphys.IsCar( ent ) then return end
|
|
|
|
local ent = net.ReadEntity()
|
|
|
|
local data = simfphys.BuildVehicleInfo( ent )
|
|
|
|
if not data then return end
|
|
|
|
net.Start( "simfphys_plyrequestinfo" )
|
|
net.WriteEntity( ent )
|
|
net.WriteFloat( data["torque"] )
|
|
net.WriteFloat( data["horsepower"] )
|
|
net.WriteFloat( data["maxspeed"] )
|
|
net.WriteFloat( data["weight"] )
|
|
net.Send( ply )
|
|
end )
|
|
|
|
net.Receive( "simfphys_turnsignal", function( length, ply )
|
|
if not ply:IsDrivingSimfphys() then return end
|
|
|
|
local ent = net.ReadEntity()
|
|
local mode = net.ReadInt( 32 )
|
|
|
|
if not IsValid( ent ) or ply:GetSimfphys() ~= ent then return end
|
|
ent:SetTSInternal( mode )
|
|
|
|
net.Start( "simfphys_turnsignal" )
|
|
net.WriteEntity( ent )
|
|
net.WriteInt( mode, 32 )
|
|
net.Broadcast()
|
|
end )
|
|
|
|
net.Receive( "simfphys_settings", function( length, ply )
|
|
if not IsValid( ply ) or not ply:IsSuperAdmin() then return end
|
|
|
|
local dmgEnabled = tostring(net.ReadBool() and 1 or 0)
|
|
local giblifetime = tostring(net.ReadFloat())
|
|
|
|
local dmgMul = tostring(net.ReadFloat())
|
|
local pdmgEnabled = tostring(net.ReadBool() and 1 or 0)
|
|
|
|
local fuel = tostring(net.ReadBool() and 1 or 0)
|
|
local fuelscale = tostring(net.ReadFloat())
|
|
|
|
local newtraction = net.ReadTable()
|
|
|
|
RunConsoleCommand("sv_simfphys_enabledamage", dmgEnabled )
|
|
RunConsoleCommand("sv_simfphys_gib_lifetime", giblifetime )
|
|
RunConsoleCommand("sv_simfphys_damagemultiplicator", dmgMul )
|
|
RunConsoleCommand("sv_simfphys_playerdamage", pdmgEnabled )
|
|
RunConsoleCommand("sv_simfphys_fuel", fuel )
|
|
RunConsoleCommand("sv_simfphys_fuelscale", fuelscale )
|
|
|
|
for k, v in pairs( newtraction ) do
|
|
RunConsoleCommand("sv_simfphys_traction_"..k, v)
|
|
end
|
|
simfphys.UpdateFrictionData()
|
|
end)
|
|
|
|
function simfphys.BuildVehicleInfo( ent )
|
|
if not simfphys.IsCar( ent ) then return false end
|
|
|
|
local WheelRad = ent.RearWheelRadius
|
|
|
|
if ent.FrontWheelPowered and ent.RearWheelRadius then
|
|
WheelRad = math.max( ent.FrontWheelRadius, ent.RearWheelRadius )
|
|
elseif ent.FrontWheelPowered then
|
|
WheelRad = ent.FrontWheelRadius
|
|
end
|
|
|
|
local Mass = 0
|
|
for _, Entity in pairs( constraint.GetAllConstrainedEntities( ent ) ) do
|
|
local EPOBJ = Entity:GetPhysicsObject()
|
|
if IsValid( EPOBJ ) then
|
|
Mass = Mass + EPOBJ:GetMass()
|
|
end
|
|
end
|
|
|
|
local data = {}
|
|
data["torque"] = ent:GetMaxTorque() * (WheelRad / 10) * ent:GetEfficiency() * (1 + (ent:GetTurboCharged() and 0.3 or 0) + (ent:GetSuperCharged() and 0.48 or 0))
|
|
data["horsepower"] = (data["torque"] * ent:GetLimitRPM() / 9548.8) * 1.34
|
|
data["maxspeed"] = ((ent:GetLimitRPM() * ent.Gears[ table.Count( ent.Gears ) ] * ent:GetDifferentialGear()) * 3.14 * WheelRad * 2) / 52
|
|
data["weight"] = Mass
|
|
|
|
return data
|
|
end
|
|
|
|
function simfphys.SpawnVehicleSimple( spawnname, pos, ang )
|
|
|
|
if not isstring( spawnname ) then print("invalid spawnname") return NULL end
|
|
if not isvector( pos ) then print("invalid spawn position") return NULL end
|
|
if not isangle( ang ) then print("invalid spawn angle") return NULL end
|
|
|
|
local vehicle = list.Get( "simfphys_vehicles" )[ spawnname ]
|
|
|
|
if not vehicle then print("vehicle \""..spawnname.."\" does not exist!") return NULL end
|
|
|
|
local Ent = simfphys.SpawnVehicle( nil, pos, ang, vehicle.Model, vehicle.Class, spawnname, vehicle, true )
|
|
|
|
return Ent
|
|
end
|
|
|
|
function simfphys.SpawnVehicle( Player, Pos, Ang, Model, Class, VName, VTable, bNoOwner )
|
|
|
|
if not bNoOwner then
|
|
if not gamemode.Call( "PlayerSpawnVehicle", Player, Model, VName, VTable ) then return end
|
|
end
|
|
|
|
if not file.Exists( Model, "GAME" ) then
|
|
Player:PrintMessage( HUD_PRINTTALK, "ERROR: \""..Model.."\" does not exist! (Class: "..VName..")")
|
|
return
|
|
end
|
|
|
|
local Ent = ents.Create( "gmod_sent_vehicle_fphysics_base" )
|
|
if not Ent then return NULL end
|
|
|
|
Ent:SetModel( Model )
|
|
Ent:SetAngles( Ang )
|
|
Ent:SetPos( Pos )
|
|
|
|
Ent:Spawn()
|
|
Ent:Activate()
|
|
|
|
Ent.VehicleName = VName
|
|
Ent.VehicleTable = VTable
|
|
Ent.EntityOwner = Player
|
|
Ent:SetSpawn_List( VName )
|
|
|
|
if VTable.Members then
|
|
table.Merge( Ent, VTable.Members )
|
|
|
|
if Ent.ModelInfo then
|
|
if Ent.ModelInfo.Bodygroups then
|
|
for i = 1, table.Count( Ent.ModelInfo.Bodygroups ) do
|
|
Ent:SetBodygroup(i, Ent.ModelInfo.Bodygroups[i] )
|
|
end
|
|
end
|
|
|
|
if Ent.ModelInfo.Skin then
|
|
Ent:SetSkin( Ent.ModelInfo.Skin )
|
|
end
|
|
|
|
if Ent.ModelInfo.Color then
|
|
Ent:SetColor( Ent.ModelInfo.Color )
|
|
|
|
local Color = Ent.ModelInfo.Color
|
|
local dot = Color.r * Color.g * Color.b * Color.a
|
|
Ent.OldColor = dot
|
|
|
|
local data = {
|
|
Color = Color,
|
|
RenderMode = 0,
|
|
RenderFX = 0
|
|
}
|
|
duplicator.StoreEntityModifier( Ent, "colour", data )
|
|
end
|
|
end
|
|
|
|
Ent:SetTireSmokeColor(Vector(180,180,180) / 255)
|
|
|
|
Ent.Turbocharged = Ent.Turbocharged or false
|
|
Ent.Supercharged = Ent.Supercharged or false
|
|
|
|
Ent:SetEngineSoundPreset( Ent.EngineSoundPreset )
|
|
Ent:SetMaxTorque( Ent.PeakTorque )
|
|
|
|
Ent:SetDifferentialGear( Ent.DifferentialGear )
|
|
|
|
Ent:SetSteerSpeed( Ent.TurnSpeed )
|
|
Ent:SetFastSteerConeFadeSpeed( Ent.SteeringFadeFastSpeed )
|
|
Ent:SetFastSteerAngle( Ent.FastSteeringAngle )
|
|
|
|
Ent:SetEfficiency( Ent.Efficiency )
|
|
Ent:SetMaxTraction( Ent.MaxGrip )
|
|
Ent:SetTractionBias( Ent.GripOffset / Ent.MaxGrip )
|
|
Ent:SetPowerDistribution( Ent.PowerBias )
|
|
|
|
Ent:SetBackFire( Ent.Backfire or false )
|
|
Ent:SetDoNotStall( Ent.DoNotStall or false )
|
|
|
|
Ent:SetIdleRPM( Ent.IdleRPM )
|
|
Ent:SetLimitRPM( Ent.LimitRPM )
|
|
Ent:SetRevlimiter( Ent.Revlimiter or false )
|
|
Ent:SetPowerBandEnd( Ent.PowerbandEnd )
|
|
Ent:SetPowerBandStart( Ent.PowerbandStart )
|
|
|
|
Ent:SetTurboCharged( Ent.Turbocharged )
|
|
Ent:SetSuperCharged( Ent.Supercharged )
|
|
Ent:SetBrakePower( Ent.BrakePower )
|
|
|
|
Ent:SetLights_List( Ent.LightsTable or "no_lights" )
|
|
|
|
Ent:SetBulletProofTires( Ent.BulletProofTires or false )
|
|
|
|
Ent:SetBackfireSound( Ent.snd_backfire or "" )
|
|
|
|
if not simfphys.WeaponSystemRegister then
|
|
if simfphys.ManagedVehicles then
|
|
print("[SIMFPHYS ARMED] IS OUT OF DATE")
|
|
end
|
|
else
|
|
timer.Simple( 0.2, function()
|
|
simfphys.WeaponSystemRegister( Ent )
|
|
end )
|
|
|
|
if (simfphys.armedAutoRegister and not simfphys.armedAutoRegister()) or simfphys.RegisterEquipment then
|
|
print("[SIMFPHYS ARMED]: ONE OF YOUR ADDITIONAL SIMFPHYS-ARMED PACKS IS CAUSING CONFLICTS!!!")
|
|
print("[SIMFPHYS ARMED]: PRECAUTIONARY RESTORING FUNCTION:")
|
|
print("[SIMFPHYS ARMED]: simfphys.FireHitScan")
|
|
print("[SIMFPHYS ARMED]: simfphys.FirePhysProjectile")
|
|
print("[SIMFPHYS ARMED]: simfphys.RegisterCrosshair")
|
|
print("[SIMFPHYS ARMED]: simfphys.RegisterCamera")
|
|
print("[SIMFPHYS ARMED]: simfphys.armedAutoRegister")
|
|
print("[SIMFPHYS ARMED]: REMOVING FUNCTION:")
|
|
print("[SIMFPHYS ARMED]: simfphys.RegisterEquipment")
|
|
print("[SIMFPHYS ARMED]: CLEARING OUTDATED ''RegisterEquipment'' HOOK")
|
|
print("[SIMFPHYS ARMED]: !!!FUNCTIONALITY IS NOT GUARANTEED!!!")
|
|
|
|
simfphys.FireHitScan = function( data ) simfphys.FireBullet( data ) end
|
|
simfphys.FirePhysProjectile = function( data ) simfphys.FirePhysBullet( data ) end
|
|
simfphys.RegisterCrosshair = function( ent, data ) simfphys.xhairRegister( ent, data ) end
|
|
simfphys.RegisterCamera =
|
|
function( ent, offset_firstperson, offset_thirdperson, bLocalAng, attachment )
|
|
simfphys.CameraRegister( ent, offset_firstperson, offset_thirdperson, bLocalAng, attachment )
|
|
end
|
|
|
|
hook.Remove( "PlayerSpawnedVehicle","simfphys_armedvehicles" )
|
|
simfphys.RegisterEquipment = nil
|
|
simfphys.armedAutoRegister = function( vehicle ) simfphys.WeaponSystemRegister( vehicle ) return true end
|
|
end
|
|
end
|
|
|
|
duplicator.StoreEntityModifier( Ent, "VehicleMemDupe", VTable.Members )
|
|
end
|
|
|
|
if IsValid( Player ) then
|
|
gamemode.Call( "PlayerSpawnedVehicle", Player, Ent )
|
|
|
|
return Ent
|
|
end
|
|
|
|
return Ent
|
|
end
|
|
|
|
function simfphys.SetOwner( ply, entity )
|
|
if not IsValid( entity ) or not IsValid( ply ) then return end
|
|
|
|
if CPPI then
|
|
if not IsEntity( ply ) then return end
|
|
|
|
if IsValid( ply ) then
|
|
entity:CPPISetOwner( ply )
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
if CLIENT then
|
|
net.Receive( "simfphys_plyrequestinfo", function( length )
|
|
local ent = net.ReadEntity()
|
|
|
|
if not simfphys.IsCar( ent ) then return end
|
|
|
|
ent.VehicleInfo = {}
|
|
ent.VehicleInfo["torque"] = net.ReadFloat()
|
|
ent.VehicleInfo["horsepower"] = net.ReadFloat()
|
|
ent.VehicleInfo["maxspeed"] = net.ReadFloat()
|
|
ent.VehicleInfo["weight"] = net.ReadFloat()
|
|
end )
|
|
end
|
|
|
|
function simfphys.UpdateFrictionData()
|
|
simfphys.TractionData = {}
|
|
|
|
timer.Simple( 0.1,function()
|
|
simfphys.TractionData["ice"] = simfphys.ice:GetFloat()
|
|
simfphys.TractionData["gmod_ice"] = simfphys.gmod_ice:GetFloat()
|
|
simfphys.TractionData["snow"] = simfphys.snow:GetFloat()
|
|
simfphys.TractionData["slipperyslime"] = simfphys.slipperyslime:GetFloat()
|
|
simfphys.TractionData["grass"] = simfphys.grass:GetFloat()
|
|
simfphys.TractionData["sand"] = simfphys.sand:GetFloat()
|
|
simfphys.TractionData["dirt"] = simfphys.dirt:GetFloat()
|
|
simfphys.TractionData["concrete"] = simfphys.concrete:GetFloat()
|
|
simfphys.TractionData["metal"] = simfphys.metal:GetFloat()
|
|
simfphys.TractionData["glass"] = simfphys.glass:GetFloat()
|
|
simfphys.TractionData["gravel"] = simfphys.gravel:GetFloat()
|
|
simfphys.TractionData["rock"] = simfphys.rock:GetFloat()
|
|
simfphys.TractionData["wood"] = simfphys.wood:GetFloat()
|
|
end)
|
|
end
|
|
simfphys.UpdateFrictionData()
|
|
|
|
simfphys.SoundPresets = {
|
|
{
|
|
"simulated_vehicles/gta5_dukes/dukes_idle.wav",
|
|
"simulated_vehicles/gta5_dukes/dukes_low.wav",
|
|
"simulated_vehicles/gta5_dukes/dukes_mid.wav",
|
|
"simulated_vehicles/gta5_dukes/dukes_revdown.wav",
|
|
"simulated_vehicles/gta5_dukes/dukes_second.wav",
|
|
"simulated_vehicles/gta5_dukes/dukes_second.wav",
|
|
0.8,
|
|
1,
|
|
0.8
|
|
},
|
|
{
|
|
"simulated_vehicles/master_chris_charger69/charger_idle.wav",
|
|
"simulated_vehicles/master_chris_charger69/charger_low.wav",
|
|
"simulated_vehicles/master_chris_charger69/charger_mid.wav",
|
|
"simulated_vehicles/master_chris_charger69/charger_revdown.wav",
|
|
"simulated_vehicles/master_chris_charger69/charger_second.wav",
|
|
"simulated_vehicles/master_chris_charger69/charger_shiftdown.wav",
|
|
0.75,
|
|
0.9,
|
|
0.95
|
|
},
|
|
{
|
|
"simulated_vehicles/shelby/shelby_idle.wav",
|
|
"simulated_vehicles/shelby/shelby_low.wav",
|
|
"simulated_vehicles/shelby/shelby_mid.wav",
|
|
"simulated_vehicles/shelby/shelby_revdown.wav",
|
|
"simulated_vehicles/shelby/shelby_second.wav",
|
|
"simulated_vehicles/shelby/shelby_shiftdown.wav",
|
|
0.8,
|
|
1,
|
|
0.85
|
|
},
|
|
{
|
|
"simulated_vehicles/jeep/jeep_idle.wav",
|
|
"simulated_vehicles/jeep/jeep_low.wav",
|
|
"simulated_vehicles/jeep/jeep_mid.wav",
|
|
"simulated_vehicles/jeep/jeep_revdown.wav",
|
|
"simulated_vehicles/jeep/jeep_second.wav",
|
|
"simulated_vehicles/jeep/jeep_second.wav",
|
|
0.9,
|
|
1,
|
|
1
|
|
},
|
|
{
|
|
"simulated_vehicles/v8elite/v8elite_idle.wav",
|
|
"simulated_vehicles/v8elite/v8elite_low.wav",
|
|
"simulated_vehicles/v8elite/v8elite_mid.wav",
|
|
"simulated_vehicles/v8elite/v8elite_revdown.wav",
|
|
"simulated_vehicles/v8elite/v8elite_second.wav",
|
|
"simulated_vehicles/v8elite/v8elite_second.wav",
|
|
0.8,
|
|
1,
|
|
1
|
|
},
|
|
{
|
|
"simulated_vehicles/4banger/4banger_idle.wav",
|
|
"simulated_vehicles/4banger/4banger_low.wav",
|
|
"simulated_vehicles/4banger/4banger_mid.wav",
|
|
"simulated_vehicles/4banger/4banger_low.wav",
|
|
"simulated_vehicles/4banger/4banger_second.wav",
|
|
"simulated_vehicles/4banger/4banger_second.wav",
|
|
0.8,
|
|
0.9,
|
|
1
|
|
},
|
|
{
|
|
"simulated_vehicles/jalopy/jalopy_idle.wav",
|
|
"simulated_vehicles/jalopy/jalopy_low.wav",
|
|
"simulated_vehicles/jalopy/jalopy_mid.wav",
|
|
"simulated_vehicles/jalopy/jalopy_revdown.wav",
|
|
"simulated_vehicles/jalopy/jalopy_second.wav",
|
|
"simulated_vehicles/jalopy/jalopy_shiftdown.wav",
|
|
0.95,
|
|
1.1,
|
|
0.9
|
|
},
|
|
{
|
|
"simulated_vehicles/alfaromeo/alfaromeo_idle.wav",
|
|
"simulated_vehicles/alfaromeo/alfaromeo_low.wav",
|
|
"simulated_vehicles/alfaromeo/alfaromeo_mid.wav",
|
|
"simulated_vehicles/alfaromeo/alfaromeo_low.wav",
|
|
"simulated_vehicles/alfaromeo/alfaromeo_second.wav",
|
|
"simulated_vehicles/alfaromeo/alfaromeo_second.wav",
|
|
0.65,
|
|
0.8,
|
|
1
|
|
},
|
|
{
|
|
"simulated_vehicles/generic1/generic1_idle.wav",
|
|
"simulated_vehicles/generic1/generic1_low.wav",
|
|
"simulated_vehicles/generic1/generic1_mid.wav",
|
|
"simulated_vehicles/generic1/generic1_revdown.wav",
|
|
"simulated_vehicles/generic1/generic1_second.wav",
|
|
"simulated_vehicles/generic1/generic1_second.wav",
|
|
0.8,
|
|
1.1,
|
|
1
|
|
},
|
|
{
|
|
"simulated_vehicles/generic2/generic2_idle.wav",
|
|
"simulated_vehicles/generic2/generic2_low.wav",
|
|
"simulated_vehicles/generic2/generic2_mid.wav",
|
|
"simulated_vehicles/generic2/generic2_revdown.wav",
|
|
"simulated_vehicles/generic2/generic2_second.wav",
|
|
"simulated_vehicles/generic2/generic2_second.wav",
|
|
1,
|
|
1.1,
|
|
1
|
|
},
|
|
{
|
|
"simulated_vehicles/generic3/generic3_idle.wav",
|
|
"simulated_vehicles/generic3/generic3_low.wav",
|
|
"simulated_vehicles/generic3/generic3_mid.wav",
|
|
"simulated_vehicles/generic3/generic3_revdown.wav",
|
|
"simulated_vehicles/generic3/generic3_second.wav",
|
|
"simulated_vehicles/generic3/generic3_second.wav",
|
|
0.9,
|
|
0.9,
|
|
1
|
|
},
|
|
{
|
|
"simulated_vehicles/generic4/generic4_idle.wav",
|
|
"simulated_vehicles/generic4/generic4_low.wav",
|
|
"simulated_vehicles/generic4/generic4_mid.wav",
|
|
"simulated_vehicles/generic4/generic4_revdown.wav",
|
|
"simulated_vehicles/generic4/generic4_gear.wav",
|
|
"simulated_vehicles/generic4/generic4_shiftdown.wav",
|
|
1,
|
|
1.1,
|
|
1
|
|
},
|
|
{
|
|
"simulated_vehicles/generic5/generic5_idle.wav",
|
|
"simulated_vehicles/generic5/generic5_low.wav",
|
|
"simulated_vehicles/generic5/generic5_mid.wav",
|
|
"simulated_vehicles/generic5/generic5_revdown.wav",
|
|
"simulated_vehicles/generic5/generic5_gear.wav",
|
|
"simulated_vehicles/generic5/generic5_gear.wav",
|
|
0.7,
|
|
0.7,
|
|
1
|
|
},
|
|
{
|
|
"simulated_vehicles/gta5_gauntlet/gauntlet_idle.wav",
|
|
"simulated_vehicles/gta5_gauntlet/gauntlet_low.wav",
|
|
"simulated_vehicles/gta5_gauntlet/gauntlet_mid.wav",
|
|
"simulated_vehicles/gta5_gauntlet/gauntlet_revdown.wav",
|
|
"simulated_vehicles/gta5_gauntlet/gauntlet_gear.wav",
|
|
"simulated_vehicles/gta5_gauntlet/gauntlet_gear.wav",
|
|
0.95,
|
|
1.1,
|
|
1
|
|
},
|
|
{
|
|
"vehicles/tdmcars/mitsuevox/mitsuevox_idle.wav",
|
|
"vehicles/tdmcars/mitsuevox/mitsuevox_low.wav",
|
|
"vehicles/tdmcars/mitsuevox/mitsuevox_mid.wav",
|
|
"vehicles/tdmcars/mitsuevox/mitsuevox_revdown.wav",
|
|
"vehicles/tdmcars/mitsuevox/mitsuevox_gear.wav",
|
|
"vehicles/tdmcars/mitsuevox/mitsuevox_gear.wav",
|
|
0.9,
|
|
0.95,
|
|
1,
|
|
},
|
|
{
|
|
"vehicles/tdmcars/for_taurus_13/for_taurus_13_idle.wav",
|
|
"vehicles/tdmcars/for_taurus_13/for_taurus_13_low.wav",
|
|
"vehicles/tdmcars/for_taurus_13/for_taurus_13_mid.wav",
|
|
"vehicles/tdmcars/for_taurus_13/for_taurus_13_revdown.wav",
|
|
"vehicles/tdmcars/for_taurus_13/for_taurus_13_gear.wav",
|
|
"vehicles/tdmcars/for_taurus_13/for_taurus_13_gear.wav",
|
|
1,
|
|
0.9,
|
|
1,
|
|
},
|
|
{
|
|
"vehicles/tdmcars/focussvt/focussvt_idle.wav",
|
|
"vehicles/tdmcars/focussvt/focussvt_low.wav",
|
|
"vehicles/tdmcars/focussvt/focussvt_mid.wav",
|
|
"vehicles/tdmcars/focussvt/focussvt_revdown.wav",
|
|
"vehicles/tdmcars/focussvt/focussvt_gear.wav",
|
|
"vehicles/tdmcars/focussvt/focussvt_gear.wav",
|
|
0.95,
|
|
1.05,
|
|
1,
|
|
},
|
|
{
|
|
"vehicles/tdmcars/mere63/mere63_idle.wav",
|
|
"vehicles/tdmcars/mere63/mere63_low.wav",
|
|
"vehicles/tdmcars/mere63/mere63_mid.wav",
|
|
"vehicles/tdmcars/mere63/mere63_revdown.wav",
|
|
"vehicles/tdmcars/mere63/mere63_gear.wav",
|
|
"vehicles/tdmcars/mere63/mere63_gear.wav",
|
|
1.2,
|
|
1.1,
|
|
1,
|
|
},
|
|
{
|
|
"vehicles/tdmcars/supra/supra_idle.wav",
|
|
"vehicles/tdmcars/supra/supra_low.wav",
|
|
"vehicles/tdmcars/supra/supra_mid.wav",
|
|
"vehicles/tdmcars/supra/supra_revdown.wav",
|
|
"vehicles/tdmcars/supra/supra_gear.wav",
|
|
"vehicles/tdmcars/supra/supra_gear.wav",
|
|
1,
|
|
1.2,
|
|
0.85,
|
|
},
|
|
{
|
|
"vehicles/tdmcars/f350/f350_idle.wav",
|
|
"vehicles/tdmcars/f350/f350_low.wav",
|
|
"vehicles/tdmcars/f350/f350_mid.wav",
|
|
"vehicles/tdmcars/f350/f350_revdown.wav",
|
|
"vehicles/tdmcars/f350/f350_gear.wav",
|
|
"vehicles/tdmcars/f350/f350_gear.wav",
|
|
1,
|
|
1.2,
|
|
1,
|
|
},
|
|
{
|
|
"vehicles/tdmcars/mr2gt/mr2gt_idle.wav",
|
|
"vehicles/tdmcars/mr2gt/mr2gt_low.wav",
|
|
"vehicles/tdmcars/mr2gt/mr2gt_mid.wav",
|
|
"vehicles/tdmcars/mr2gt/mr2gt_revdown.wav",
|
|
"vehicles/tdmcars/mr2gt/mr2gt_gear.wav",
|
|
"vehicles/tdmcars/mr2gt/mr2gt_gear.wav",
|
|
0.9,
|
|
1,
|
|
1,
|
|
},
|
|
{
|
|
"vehicles/tdmcars/rav4/rav4_idle.wav",
|
|
"vehicles/tdmcars/rav4/rav4_low.wav",
|
|
"vehicles/tdmcars/rav4/rav4_mid.wav",
|
|
"vehicles/tdmcars/rav4/rav4_revdown.wav",
|
|
"vehicles/tdmcars/rav4/rav4_gear.wav",
|
|
"vehicles/tdmcars/rav4/rav4_gear.wav",
|
|
1.1,
|
|
1.1,
|
|
1,
|
|
},
|
|
{
|
|
"vehicles/tdmcars/toyfj/toyfj_idle.wav",
|
|
"vehicles/tdmcars/toyfj/toyfj_low.wav",
|
|
"vehicles/tdmcars/toyfj/toyfj_mid.wav",
|
|
"vehicles/tdmcars/toyfj/toyfj_revdown.wav",
|
|
"vehicles/tdmcars/toyfj/toyfj_gear.wav",
|
|
"vehicles/tdmcars/toyfj/toyfj_shiftdown.wav",
|
|
0.85,
|
|
1.15,
|
|
1,
|
|
},
|
|
}
|