mirror of
https://github.com/lifestorm/wnsrc.git
synced 2025-12-17 21:53:46 +03:00
Upload
This commit is contained in:
@@ -0,0 +1,239 @@
|
||||
--[[
|
||||
| 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 = "#Transmission Editor"
|
||||
TOOL.Command = nil
|
||||
TOOL.ConfigName = ""
|
||||
|
||||
TOOL.ClientConVar[ "numgears" ] = 5
|
||||
TOOL.ClientConVar[ "gear_r" ] = -0.1
|
||||
TOOL.ClientConVar[ "gear_1" ] = 0.1
|
||||
TOOL.ClientConVar[ "gear_2" ] = 0.2
|
||||
TOOL.ClientConVar[ "gear_3" ] = 0.3
|
||||
TOOL.ClientConVar[ "gear_4" ] = 0.4
|
||||
TOOL.ClientConVar[ "gear_5" ] = 0.5
|
||||
TOOL.ClientConVar[ "gear_6" ] = 0.6
|
||||
TOOL.ClientConVar[ "gear_7" ] = 0.7
|
||||
TOOL.ClientConVar[ "gear_8" ] = 0.8
|
||||
TOOL.ClientConVar[ "gear_9" ] = 0.9
|
||||
TOOL.ClientConVar[ "gear_10" ] = 1
|
||||
TOOL.ClientConVar[ "gear_11" ] = 1.1
|
||||
TOOL.ClientConVar[ "gear_12" ] = 1.2
|
||||
TOOL.ClientConVar[ "gear_diff" ] = 0.5
|
||||
TOOL.ClientConVar[ "forcetype" ] = "0"
|
||||
TOOL.ClientConVar[ "type" ] = 2
|
||||
|
||||
local function SetGears( ply, ent, gears)
|
||||
if ( SERVER ) then
|
||||
ent.Gears = gears
|
||||
duplicator.StoreEntityModifier( ent, "gearmod", gears )
|
||||
end
|
||||
end
|
||||
duplicator.RegisterEntityModifier( "gearmod", SetGears )
|
||||
|
||||
if CLIENT then
|
||||
language.Add( "tool.simfphysgeareditor.name", "Transmission Editor" )
|
||||
language.Add( "tool.simfphysgeareditor.desc", "A tool used to edit gear ratios on simfphys vehicles" )
|
||||
language.Add( "tool.simfphysgeareditor.0", "Left click apply settings. Right click copy settings. Reload to reset" )
|
||||
language.Add( "tool.simfphysgeareditor.1", "Left click apply settings. Right click copy settings. Reload to reset" )
|
||||
end
|
||||
|
||||
function TOOL:LeftClick( trace )
|
||||
local ent = trace.Entity
|
||||
|
||||
if not simfphys.IsCar( ent ) then return false end
|
||||
|
||||
if (SERVER) then
|
||||
local vname = ent:GetSpawn_List()
|
||||
local VehicleList = list.Get( "simfphys_vehicles" )[vname]
|
||||
|
||||
local gears = {math.Clamp(self:GetClientNumber( "gear_r" ), -5, -0.001),0}
|
||||
for i = 1, self:GetClientNumber( "numgears" ) do
|
||||
local index = i + 2
|
||||
gears[index] = math.Clamp( self:GetClientNumber( "gear_"..i ), 0.001, 5)
|
||||
end
|
||||
|
||||
SetGears(self:GetOwner(), ent, gears )
|
||||
ent:SetDifferentialGear( math.Clamp( self:GetClientNumber( "gear_diff" ),0.2,6 ) )
|
||||
|
||||
if tobool( self:GetClientInfo( "forcetype" ) ) then
|
||||
ent.ForceTransmission = math.Clamp( self:GetClientNumber( "type" ), 1, 2 )
|
||||
else
|
||||
ent.ForceTransmission = nil
|
||||
end
|
||||
end
|
||||
|
||||
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 (SERVER) then
|
||||
local vname = ent:GetSpawn_List()
|
||||
local VehicleList = list.Get( "simfphys_vehicles" )[vname]
|
||||
|
||||
local gears = ent.Gears
|
||||
local diffgear = ent:GetDifferentialGear()
|
||||
local num = table.Count( gears ) - 2
|
||||
|
||||
for i = 3, 13 do
|
||||
ply:ConCommand( "simfphysgeareditor_gear_"..(i - 2).." "..(gears[i] or 0.001))
|
||||
end
|
||||
ply:ConCommand( "simfphysgeareditor_gear_r "..gears[1])
|
||||
ply:ConCommand( "simfphysgeareditor_numgears "..num)
|
||||
ply:ConCommand( "simfphysgeareditor_gear_diff "..diffgear)
|
||||
|
||||
local forcetype = isnumber( ent.ForceTransmission )
|
||||
|
||||
ply:ConCommand( "simfphysgeareditor_forcetype "..tostring(forcetype and 1 or 0) )
|
||||
|
||||
if forcetype then
|
||||
ply:ConCommand( "simfphysgeareditor_type "..ent.ForceTransmission)
|
||||
end
|
||||
end
|
||||
|
||||
return true
|
||||
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]
|
||||
|
||||
SetGears(self:GetOwner(), ent, VehicleList.Members.Gears )
|
||||
ent:SetDifferentialGear( VehicleList.Members.DifferentialGear )
|
||||
|
||||
ent.ForceTransmission = VehicleList.Members.ForceTransmission
|
||||
end
|
||||
|
||||
return true
|
||||
end
|
||||
|
||||
local ConVarsDefault = TOOL:BuildConVarList()
|
||||
function TOOL.BuildCPanel( panel )
|
||||
panel:AddControl( "Header", { Text = "#tool.simfphysgeareditor.name", Description = "#tool.simfphysgeareditor.desc" } )
|
||||
panel:AddControl( "ComboBox", { MenuButton = 1, Folder = "transeditor", Options = { [ "#preset.default" ] = ConVarsDefault }, CVars = table.GetKeys( ConVarsDefault ) } )
|
||||
|
||||
local Frame = vgui.Create( "DPanel", panel )
|
||||
Frame:SetPos( 10, 130 )
|
||||
Frame:SetSize( 275, 700 )
|
||||
Frame.Paint = function( self, w, h )
|
||||
end
|
||||
|
||||
local Label = vgui.Create( "DLabel", panel )
|
||||
Label:SetPos( 15, 80 )
|
||||
Label:SetSize( 280, 40 )
|
||||
Label:SetText( "Amount Gears" )
|
||||
Label:SetTextColor( Color(0,0,0,255) )
|
||||
|
||||
local n_slider = vgui.Create( "DNumSlider", panel)
|
||||
n_slider:SetPos( 15, 80 )
|
||||
n_slider:SetSize( 280, 40 )
|
||||
n_slider:SetMin( 1 )
|
||||
n_slider:SetMax( 12 )
|
||||
n_slider:SetDecimals( 0 )
|
||||
n_slider:SetConVar( "simfphysgeareditor_numgears" )
|
||||
n_slider.OnValueChanged = function( self, amount )
|
||||
Frame:Clear()
|
||||
|
||||
local value = math.Round( amount, 0 )
|
||||
local yy = 0
|
||||
|
||||
for i = 1, value do
|
||||
local Label = vgui.Create( "DLabel", Frame )
|
||||
Label:SetPos( 5, yy )
|
||||
Label:SetSize( 275, 40 )
|
||||
Label:SetText( "Gear "..i )
|
||||
Label:SetTextColor( Color(0,0,0,255) )
|
||||
|
||||
local g_slider = vgui.Create( "DNumSlider", Frame)
|
||||
g_slider:SetPos( 5, yy )
|
||||
g_slider:SetSize( 275, 40 )
|
||||
g_slider:SetMin( 0.001 )
|
||||
g_slider:SetMax( 5 )
|
||||
g_slider:SetDecimals( 3 )
|
||||
g_slider:SetConVar( "simfphysgeareditor_gear_"..i )
|
||||
|
||||
yy = yy + 25
|
||||
end
|
||||
|
||||
yy = yy + 25
|
||||
|
||||
local Label = vgui.Create( "DLabel", Frame )
|
||||
Label:SetPos( 5, yy )
|
||||
Label:SetSize( 275, 40 )
|
||||
Label:SetText( "Reverse" )
|
||||
Label:SetTextColor( Color(0,0,0,255) )
|
||||
local g_slider = vgui.Create( "DNumSlider", Frame)
|
||||
g_slider:SetPos( 5, yy )
|
||||
g_slider:SetSize( 275, 40 )
|
||||
g_slider:SetMin( -5 )
|
||||
g_slider:SetMax( -0.001 )
|
||||
g_slider:SetDecimals( 3 )
|
||||
g_slider:SetConVar( "simfphysgeareditor_gear_r" )
|
||||
|
||||
yy = yy + 50
|
||||
|
||||
local Label = vgui.Create( "DLabel", Frame )
|
||||
Label:SetPos( 5, yy )
|
||||
Label:SetSize( 275, 40 )
|
||||
Label:SetText( "Final Gear (Differential)" )
|
||||
Label:SetTextColor( Color(0,0,0,255) )
|
||||
local g_slider = vgui.Create( "DNumSlider", Frame)
|
||||
g_slider:SetPos( 5, yy )
|
||||
g_slider:SetSize( 275, 40 )
|
||||
g_slider:SetMin( 0.001 )
|
||||
g_slider:SetMax( 5 )
|
||||
g_slider:SetDecimals( 3 )
|
||||
g_slider:SetConVar( "simfphysgeareditor_gear_diff" )
|
||||
|
||||
yy = yy + 50
|
||||
|
||||
local Label = vgui.Create( "DLabel", Frame )
|
||||
Label:SetPos( 30, yy )
|
||||
Label:SetSize( 280, 40 )
|
||||
Label:SetText( "Force Transmission Type" )
|
||||
Label:SetTextColor( Color(0,0,0,255) )
|
||||
|
||||
local CheckBox = vgui.Create( "DCheckBoxLabel", Frame )
|
||||
CheckBox:SetPos( 5,yy )
|
||||
CheckBox:SetText( "" )
|
||||
CheckBox:SetConVar( "simfphysgeareditor_forcetype" )
|
||||
CheckBox:SetSize( 280, 40 )
|
||||
|
||||
yy = yy + 30
|
||||
|
||||
local Label = vgui.Create( "DLabel", Frame )
|
||||
Label:SetPos( 5, yy )
|
||||
Label:SetSize( 275, 40 )
|
||||
Label:SetText( "Type \n1 = Automatic\n2 = Manual" )
|
||||
Label:SetTextColor( Color(0,0,0,255) )
|
||||
local g_slider = vgui.Create( "DNumSlider", Frame)
|
||||
g_slider:SetPos( 5, yy )
|
||||
g_slider:SetSize( 275, 40 )
|
||||
g_slider:SetMin( 1 )
|
||||
g_slider:SetMax( 2 )
|
||||
g_slider:SetDecimals( 0 )
|
||||
g_slider:SetConVar( "simfphysgeareditor_type" )
|
||||
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user