mirror of
https://github.com/lifestorm/wnsrc.git
synced 2025-12-17 05:43:46 +03:00
336 lines
12 KiB
Lua
336 lines
12 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/
|
||
|
|
--]]
|
||
|
|
|
||
|
|
|
||
|
|
TOOL.Category = "simfphys"
|
||
|
|
TOOL.Name = "#Vehicle Editor"
|
||
|
|
TOOL.Command = nil
|
||
|
|
TOOL.ConfigName = ""
|
||
|
|
|
||
|
|
TOOL.ClientConVar[ "steerspeed" ] = 8
|
||
|
|
TOOL.ClientConVar[ "fadespeed" ] = 535
|
||
|
|
TOOL.ClientConVar[ "faststeerangle" ] = 0.3
|
||
|
|
TOOL.ClientConVar[ "soundpreset" ] = 0
|
||
|
|
TOOL.ClientConVar[ "idlerpm" ] = 800
|
||
|
|
TOOL.ClientConVar[ "maxrpm" ] = 6200
|
||
|
|
TOOL.ClientConVar[ "powerbandstart" ] = 2000
|
||
|
|
TOOL.ClientConVar[ "powerbandend" ] = 6000
|
||
|
|
TOOL.ClientConVar[ "maxtorque" ] = 280
|
||
|
|
TOOL.ClientConVar[ "turbocharged" ] = "0"
|
||
|
|
TOOL.ClientConVar[ "supercharged" ] = "0"
|
||
|
|
TOOL.ClientConVar[ "revlimiter" ] = "0"
|
||
|
|
TOOL.ClientConVar[ "diffgear" ] = 0.65
|
||
|
|
TOOL.ClientConVar[ "traction" ] = 43
|
||
|
|
TOOL.ClientConVar[ "tractionbias" ] = -0.02
|
||
|
|
TOOL.ClientConVar[ "brakepower" ] = 45
|
||
|
|
TOOL.ClientConVar[ "powerdistribution" ] = 1
|
||
|
|
TOOL.ClientConVar[ "efficiency" ] = 1.25
|
||
|
|
|
||
|
|
if CLIENT then
|
||
|
|
language.Add( "tool.simfphyseditor.name", "simfphys vehicle editor" )
|
||
|
|
language.Add( "tool.simfphyseditor.desc", "A tool used to edit simfphys vehicles" )
|
||
|
|
language.Add( "tool.simfphyseditor.0", "Left click apply settings. Right click copy settings. Reload to reset" )
|
||
|
|
language.Add( "tool.simfphyseditor.1", "Left click apply settings. Right click copy settings. Reload to reset" )
|
||
|
|
|
||
|
|
language.Add( "tool.simfphyseditor.steerspeed", "Steer Speed" )
|
||
|
|
language.Add( "tool.simfphyseditor.steerspeed.help", "How fast the steering will move to its target angle" )
|
||
|
|
language.Add( "tool.simfphyseditor.fastspeed", "Fast Steercone Fadespeed" )
|
||
|
|
language.Add( "tool.simfphyseditor.fastspeed.help", "At wich speed (gmod units per second) we want to fade from slow steer angle to fast steer angle" )
|
||
|
|
language.Add( "tool.simfphyseditor.faststeerang", "Fast Steer Angle" )
|
||
|
|
language.Add( "tool.simfphyseditor.faststeerang.help", "Steering angle at high speeds." )
|
||
|
|
language.Add( "tool.simfphyseditor.tractionbias", "Tractionbias" )
|
||
|
|
language.Add( "tool.simfphyseditor.tractionbias.help", "A negative value will get more understeer, a positive value more oversteer. NOTE: this will not affect under/oversteer caused by engine power." )
|
||
|
|
language.Add( "tool.simfphyseditor.powerdist", "Powerdistribution" )
|
||
|
|
language.Add( "tool.simfphyseditor.powerdist.help", "How much power goes to the front and rear wheels, 1 = rear wheel drive -1 = front wheel drive 0 = all wheel drive with power distributed equally on front and rear wheels." )
|
||
|
|
language.Add( "tool.simfphyseditor.efficiency", "Efficiency" )
|
||
|
|
language.Add( "tool.simfphyseditor.efficiency.help", "This defines how good the wheels can put the engine power to the ground. Also may affect max torque and hand brake performance. Its a cheap way to make your car accelerate faster without having to deal with griploss." )
|
||
|
|
language.Add( "tool.simfphyseditor.turbo", "Turbocharged" )
|
||
|
|
language.Add( "tool.simfphyseditor.turbo.help", "Enables Turbo sounds and increases torque at high RPM" )
|
||
|
|
language.Add( "tool.simfphyseditor.blower", "Supercharged" )
|
||
|
|
language.Add( "tool.simfphyseditor.blower.help", "Enables Supercharger sounds and increases torque at low to mid RPM" )
|
||
|
|
language.Add( "tool.simfphyseditor.revlimiter", "Revlimiter" )
|
||
|
|
language.Add( "tool.simfphyseditor.revlimiter.help", "Enables bouncy revlimiter. NOTE: This does not work if Limit RPM is less than 2500!" )
|
||
|
|
end
|
||
|
|
|
||
|
|
function TOOL:LeftClick( trace )
|
||
|
|
local ent = trace.Entity
|
||
|
|
|
||
|
|
if not simfphys.IsCar( ent ) then return false end
|
||
|
|
|
||
|
|
if CLIENT then return true end
|
||
|
|
|
||
|
|
ent:SetSteerSpeed( math.Clamp( self:GetClientNumber( "steerspeed" ), 1, 16 ) )
|
||
|
|
ent:SetFastSteerConeFadeSpeed( math.Clamp( self:GetClientNumber( "fadespeed" ), 1, 5000 ) )
|
||
|
|
ent:SetFastSteerAngle( math.Clamp( self:GetClientNumber( "faststeerangle" ),0,1) )
|
||
|
|
ent:SetEngineSoundPreset( math.Clamp( self:GetClientNumber( "soundpreset" ), -1, 14) )
|
||
|
|
ent:SetIdleRPM( math.Clamp( self:GetClientNumber( "idlerpm" ),1,25000) )
|
||
|
|
ent:SetLimitRPM( math.Clamp( self:GetClientNumber( "maxrpm" ),4,25000) )
|
||
|
|
ent:SetPowerBandStart( math.Clamp( self:GetClientNumber( "powerbandstart" ),2,25000) )
|
||
|
|
ent:SetPowerBandEnd( math.Clamp( self:GetClientNumber( "powerbandend" ),3,25000) )
|
||
|
|
ent:SetMaxTorque( math.Clamp( self:GetClientNumber( "maxtorque" ),20,1000) )
|
||
|
|
ent:SetTurboCharged( self:GetClientInfo( "turbocharged" ) == "1" )
|
||
|
|
ent:SetSuperCharged( self:GetClientInfo( "supercharged" ) == "1" )
|
||
|
|
ent:SetRevlimiter( self:GetClientInfo( "revlimiter" ) == "1" )
|
||
|
|
ent:SetDifferentialGear( math.Clamp( self:GetClientNumber( "diffgear" ),0.2,6 ) )
|
||
|
|
ent:SetMaxTraction( math.Clamp(self:GetClientNumber( "traction" ) , 5,1000) )
|
||
|
|
ent:SetTractionBias( math.Clamp( self:GetClientNumber( "tractionbias" ),-0.99,0.99) )
|
||
|
|
ent:SetBrakePower( math.Clamp( self:GetClientNumber( "brakepower" ),0.1,500) )
|
||
|
|
ent:SetPowerDistribution( math.Clamp( self:GetClientNumber( "powerdistribution" ) ,-1,1) )
|
||
|
|
ent:SetEfficiency( math.Clamp( self:GetClientNumber( "efficiency" ) ,0.2,4) )
|
||
|
|
|
||
|
|
return true
|
||
|
|
end
|
||
|
|
|
||
|
|
function TOOL:RightClick( trace )
|
||
|
|
local ent = trace.Entity
|
||
|
|
local ply = self:GetOwner()
|
||
|
|
|
||
|
|
if not simfphys.IsCar( ent ) then return false end
|
||
|
|
|
||
|
|
if CLIENT then return true end
|
||
|
|
|
||
|
|
ply:ConCommand( "simfphyseditor_steerspeed " ..ent:GetSteerSpeed() )
|
||
|
|
ply:ConCommand( "simfphyseditor_fadespeed " ..ent:GetFastSteerConeFadeSpeed() )
|
||
|
|
ply:ConCommand( "simfphyseditor_faststeerangle " ..ent:GetFastSteerAngle() )
|
||
|
|
ply:ConCommand( "simfphyseditor_soundpreset " ..ent:GetEngineSoundPreset() )
|
||
|
|
ply:ConCommand( "simfphyseditor_idlerpm " ..ent:GetIdleRPM() )
|
||
|
|
ply:ConCommand( "simfphyseditor_maxrpm " ..ent:GetLimitRPM() )
|
||
|
|
ply:ConCommand( "simfphyseditor_powerbandstart " ..ent:GetPowerBandStart() )
|
||
|
|
ply:ConCommand( "simfphyseditor_powerbandend " ..ent:GetPowerBandEnd() )
|
||
|
|
ply:ConCommand( "simfphyseditor_maxtorque " ..ent:GetMaxTorque() )
|
||
|
|
ply:ConCommand( "simfphyseditor_turbocharged " ..(ent:GetTurboCharged() and 1 or 0) )
|
||
|
|
ply:ConCommand( "simfphyseditor_supercharged " ..(ent:GetSuperCharged() and 1 or 0) )
|
||
|
|
ply:ConCommand( "simfphyseditor_revlimiter " ..(ent:GetRevlimiter() and 1 or 0) )
|
||
|
|
ply:ConCommand( "simfphyseditor_diffgear " ..ent:GetDifferentialGear() )
|
||
|
|
ply:ConCommand( "simfphyseditor_traction " ..ent:GetMaxTraction() )
|
||
|
|
ply:ConCommand( "simfphyseditor_tractionbias " ..ent:GetTractionBias() )
|
||
|
|
ply:ConCommand( "simfphyseditor_brakepower " ..ent:GetBrakePower() )
|
||
|
|
ply:ConCommand( "simfphyseditor_powerdistribution " ..ent:GetPowerDistribution() )
|
||
|
|
ply:ConCommand( "simfphyseditor_efficiency " ..ent:GetEfficiency() )
|
||
|
|
|
||
|
|
return true
|
||
|
|
end
|
||
|
|
|
||
|
|
function TOOL:Think()
|
||
|
|
if CLIENT then
|
||
|
|
local ply = self:GetOwner()
|
||
|
|
|
||
|
|
if not IsValid( ply ) then return end
|
||
|
|
|
||
|
|
ply.simeditor_nextrequest = isnumber( ply.simeditor_nextrequest ) and ply.simeditor_nextrequest or 0
|
||
|
|
|
||
|
|
local ent = ply:GetEyeTrace().Entity
|
||
|
|
|
||
|
|
if not simfphys.IsCar( ent ) then return end
|
||
|
|
|
||
|
|
if ply.simeditor_nextrequest < CurTime() then
|
||
|
|
net.Start( "simfphys_plyrequestinfo" )
|
||
|
|
net.WriteEntity( ent )
|
||
|
|
net.SendToServer()
|
||
|
|
|
||
|
|
ply.simeditor_nextrequest = CurTime() + 0.6
|
||
|
|
end
|
||
|
|
end
|
||
|
|
end
|
||
|
|
|
||
|
|
function TOOL:Reload( trace )
|
||
|
|
local ent = trace.Entity
|
||
|
|
local ply = self:GetOwner()
|
||
|
|
|
||
|
|
if not simfphys.IsCar( ent ) then return false end
|
||
|
|
|
||
|
|
if (SERVER) then
|
||
|
|
local vname = ent:GetSpawn_List()
|
||
|
|
local VehicleList = list.Get( "simfphys_vehicles" )[vname]
|
||
|
|
|
||
|
|
ent:SetSteerSpeed( VehicleList.Members.TurnSpeed )
|
||
|
|
ent:SetFastSteerConeFadeSpeed( VehicleList.Members.SteeringFadeFastSpeed )
|
||
|
|
ent:SetFastSteerAngle( VehicleList.Members.FastSteeringAngle / ent.VehicleData["steerangle"] )
|
||
|
|
ent:SetEngineSoundPreset( VehicleList.Members.EngineSoundPreset )
|
||
|
|
ent:SetIdleRPM( VehicleList.Members.IdleRPM )
|
||
|
|
ent:SetLimitRPM( VehicleList.Members.LimitRPM )
|
||
|
|
ent:SetPowerBandStart( VehicleList.Members.PowerbandStart )
|
||
|
|
ent:SetPowerBandEnd( VehicleList.Members.PowerbandEnd )
|
||
|
|
ent:SetMaxTorque( VehicleList.Members.PeakTorque )
|
||
|
|
ent:SetTurboCharged( VehicleList.Members.Turbocharged or false )
|
||
|
|
ent:SetSuperCharged( VehicleList.Members.Supercharged or false )
|
||
|
|
ent:SetRevlimiter( VehicleList.Members.Revlimiter or false )
|
||
|
|
ent:SetDifferentialGear( VehicleList.Members.DifferentialGear )
|
||
|
|
ent:SetMaxTraction( VehicleList.Members.MaxGrip )
|
||
|
|
ent:SetTractionBias( VehicleList.Members.GripOffset / VehicleList.Members.MaxGrip )
|
||
|
|
ent:SetBrakePower( VehicleList.Members.BrakePower )
|
||
|
|
ent:SetPowerDistribution( VehicleList.Members.PowerBias )
|
||
|
|
ent:SetEfficiency( VehicleList.Members.Efficiency )
|
||
|
|
end
|
||
|
|
|
||
|
|
return true
|
||
|
|
end
|
||
|
|
|
||
|
|
local ConVarsDefault = TOOL:BuildConVarList()
|
||
|
|
|
||
|
|
function TOOL.BuildCPanel( panel )
|
||
|
|
panel:AddControl( "Header", { Text = "#tool.simfphyseditor.name", Description = "#tool.simfphyseditor.desc" } )
|
||
|
|
|
||
|
|
panel:AddControl( "ComboBox", { MenuButton = 1, Folder = "simfphys", Options = { [ "#preset.default" ] = ConVarsDefault }, CVars = table.GetKeys( ConVarsDefault ) } )
|
||
|
|
panel:AddControl( "Label", { Text = "" } )
|
||
|
|
panel:AddControl( "Label", { Text = "--- Steering ---" } )
|
||
|
|
panel:AddControl( "Slider",
|
||
|
|
{
|
||
|
|
Label = "#tool.simfphyseditor.steerspeed",
|
||
|
|
Type = "Float",
|
||
|
|
Min = "1",
|
||
|
|
Max = "16",
|
||
|
|
Command = "simfphyseditor_steerspeed",
|
||
|
|
Help = true
|
||
|
|
})
|
||
|
|
panel:AddControl( "Slider",
|
||
|
|
{
|
||
|
|
Label = "#tool.simfphyseditor.fastspeed",
|
||
|
|
Type = "Float",
|
||
|
|
Min = "1",
|
||
|
|
Max = "5000",
|
||
|
|
Command = "simfphyseditor_fadespeed",
|
||
|
|
Help = true
|
||
|
|
})
|
||
|
|
panel:AddControl( "Slider",
|
||
|
|
{
|
||
|
|
Label = "#tool.simfphyseditor.faststeerang",
|
||
|
|
Type = "Float",
|
||
|
|
Min = "0",
|
||
|
|
Max = "1",
|
||
|
|
Command = "simfphyseditor_faststeerangle",
|
||
|
|
Help = true
|
||
|
|
})
|
||
|
|
|
||
|
|
panel:AddControl( "Label", { Text = "" } )
|
||
|
|
panel:AddControl( "Label", { Text = "--- Engine ---" } )
|
||
|
|
panel:AddControl( "Slider",
|
||
|
|
{
|
||
|
|
Label = "Engine Sound Preset",
|
||
|
|
Type = "Int",
|
||
|
|
Min = "-1",
|
||
|
|
Max = "14",
|
||
|
|
Command = "simfphyseditor_soundpreset"
|
||
|
|
})
|
||
|
|
panel:AddControl( "Slider",
|
||
|
|
{
|
||
|
|
Label = "Idle RPM",
|
||
|
|
Type = "Int",
|
||
|
|
Min = "1",
|
||
|
|
Max = "25000",
|
||
|
|
Command = "simfphyseditor_idlerpm"
|
||
|
|
})
|
||
|
|
panel:AddControl( "Slider",
|
||
|
|
{
|
||
|
|
Label = "Limit RPM",
|
||
|
|
Type = "Int",
|
||
|
|
Min = "4",
|
||
|
|
Max = "25000",
|
||
|
|
Command = "simfphyseditor_maxrpm"
|
||
|
|
})
|
||
|
|
panel:AddControl( "Slider",
|
||
|
|
{
|
||
|
|
Label = "Powerband Start",
|
||
|
|
Type = "Int",
|
||
|
|
Min = "2",
|
||
|
|
Max = "25000",
|
||
|
|
Command = "simfphyseditor_powerbandstart"
|
||
|
|
})
|
||
|
|
panel:AddControl( "Slider",
|
||
|
|
{
|
||
|
|
Label = "Powerband End",
|
||
|
|
Type = "Int",
|
||
|
|
Min = "3",
|
||
|
|
Max = "25000",
|
||
|
|
Command = "simfphyseditor_powerbandend"
|
||
|
|
})
|
||
|
|
panel:AddControl( "Slider",
|
||
|
|
{
|
||
|
|
Label = "Max Torque",
|
||
|
|
Type = "Float",
|
||
|
|
Min = "20",
|
||
|
|
Max = "1000",
|
||
|
|
Command = "simfphyseditor_maxtorque"
|
||
|
|
})
|
||
|
|
panel:AddControl( "Checkbox",
|
||
|
|
{
|
||
|
|
Label = "#tool.simfphyseditor.revlimiter",
|
||
|
|
Command = "simfphyseditor_revlimiter",
|
||
|
|
Help = true
|
||
|
|
})
|
||
|
|
panel:AddControl( "Checkbox",
|
||
|
|
{
|
||
|
|
Label = "#tool.simfphyseditor.turbo",
|
||
|
|
Command = "simfphyseditor_turbocharged",
|
||
|
|
Help = true
|
||
|
|
})
|
||
|
|
panel:AddControl( "Checkbox",
|
||
|
|
{
|
||
|
|
Label = "#tool.simfphyseditor.blower",
|
||
|
|
Command = "simfphyseditor_supercharged",
|
||
|
|
Help = true
|
||
|
|
})
|
||
|
|
panel:AddControl( "Label", { Text = "" } )
|
||
|
|
panel:AddControl( "Label", { Text = "--- Transmission ---" } )
|
||
|
|
panel:AddControl( "Slider",
|
||
|
|
{
|
||
|
|
Label = "DifferentialGear",
|
||
|
|
Type = "Float",
|
||
|
|
Min = "0.2",
|
||
|
|
Max = "6",
|
||
|
|
Command = "simfphyseditor_diffgear"
|
||
|
|
})
|
||
|
|
panel:AddControl( "Label", { Text = "" } )
|
||
|
|
panel:AddControl( "Label", { Text = "--- Wheels ---" } )
|
||
|
|
panel:AddControl( "Slider",
|
||
|
|
{
|
||
|
|
Label = "Max Traction",
|
||
|
|
Type = "Float",
|
||
|
|
Min = "5",
|
||
|
|
Max = "1000",
|
||
|
|
Command = "simfphyseditor_traction"
|
||
|
|
})
|
||
|
|
panel:AddControl( "Slider",
|
||
|
|
{
|
||
|
|
Label = "#tool.simfphyseditor.tractionbias",
|
||
|
|
Type = "Float",
|
||
|
|
Min = "-0.99",
|
||
|
|
Max = "0.99",
|
||
|
|
Command = "simfphyseditor_tractionbias",
|
||
|
|
Help = true
|
||
|
|
})
|
||
|
|
panel:AddControl( "Slider",
|
||
|
|
{
|
||
|
|
Label = "Brakepower",
|
||
|
|
Type = "Float",
|
||
|
|
Min = "0.1",
|
||
|
|
Max = "500",
|
||
|
|
Command = "simfphyseditor_brakepower"
|
||
|
|
})
|
||
|
|
panel:AddControl( "Slider",
|
||
|
|
{
|
||
|
|
Label = "#tool.simfphyseditor.powerdist",
|
||
|
|
Type = "Float",
|
||
|
|
Min = "-1",
|
||
|
|
Max = "1",
|
||
|
|
Command = "simfphyseditor_powerdistribution",
|
||
|
|
Help = true
|
||
|
|
})
|
||
|
|
panel:AddControl( "Slider",
|
||
|
|
{
|
||
|
|
Label = "#tool.simfphyseditor.efficiency",
|
||
|
|
Type = "Float",
|
||
|
|
Min = "0.2",
|
||
|
|
Max = "4",
|
||
|
|
Command = "simfphyseditor_efficiency",
|
||
|
|
Help = true
|
||
|
|
})
|
||
|
|
end
|