ACF_CustomMod/lua/entities/ACF_Engine5/cl_init.lua

315 lines
12 KiB
Lua

include("shared.lua")
ENT.RenderGroup = RENDERGROUP_OPAQUE
ENT.AutomaticFrameAdvance = true
function ENT:Draw()
self:DoNormalDraw()
self:DrawModel()
Wire_Render(self.Entity)
end
function ENT:DoNormalDraw()
local e = self.Entity
if (LocalPlayer():GetEyeTrace().Entity == e and EyePos():Distance(e:GetPos()) < 256) then
if(self:GetOverlayText() ~= "") then
AddWorldTip(e:EntIndex(),self:GetOverlayText(),0.5,e:GetPos(),e)
end
end
end
function ENT:GetOverlayText()
local name = self.Entity:GetNetworkedString("WireName")
local Type = self.Entity:GetNetworkedBeamString("Type")
local Power = self.Entity:GetNetworkedBeamInt("Power")
local Torque = self.Entity:GetNetworkedBeamInt("Torque")
local MinRPM = self.Entity:GetNetworkedBeamInt("MinRPM")
local MaxRPM = self.Entity:GetNetworkedBeamInt("MaxRPM")
local LimitRPM = self.Entity:GetNetworkedBeamInt("LimitRPM")
--##################################################################
local FlywheelMass = self.Entity:GetNetworkedBeamInt("FlywheelMass2")
local Idle = self.Entity:GetNetworkedBeamInt("Idle")
local Weight = self.Entity:GetNetworkedBeamInt("Weight")
local Rpm = self.Entity:GetNetworkedBeamInt("Rpm")
--##################################################################
local txt = Type.."\nMax Power : "..Power.."KW / "..math.Round(Power*1.34).."HP \nMax Torque : "..Torque.."N/m / "..math.Round(Torque*0.73).."ft-lb \nPowerband : "..MinRPM.." - "..MaxRPM.."RPM\nRedline : "..LimitRPM.."RPM\nFlywheelMass : "..FlywheelMass.."Grams\nIdle : "..Idle.."RPM\nWeight : "..Weight.."Kg\nRpm : "..Rpm.."RPM" or ""
if (not game.SinglePlayer()) then
local PlayerName = self:GetPlayerName()
txt = txt .. "\n(" .. PlayerName .. ")"
end
if(name and name ~= "") then
if (txt == "") then
return "- "..name.." -"
end
return "- "..name.." -\n"..txt
end
return txt
end
function ACFEngine5GUICreate( Table )
if not acfmenupanel.ModData then
acfmenupanel.ModData = {}
end
if not acfmenupanel.ModData[Table.id] then
acfmenupanel.ModData[Table.id] = {}
acfmenupanel.ModData[Table.id]["ModTable"] = Table.modtable
end
--acfmenupanel:CPanelText("Desc", Table.desc)
TextDesc = vgui.Create( "DLabel" )
TextDesc:SetText( "Desc : "..Table.desc)
TextDesc:SetTextColor(Color(0,0,200,255))
TextDesc:SetFont( "DefaultBold" )
acfmenupanel.CustomDisplay:AddItem( TextDesc )
for ID,Value in pairs(acfmenupanel.ModData[Table.id]["ModTable"]) do
if ID == 1 then
ACF_ModingSound(1, Value, Table.id)
end
end
acfmenupanel.CustomDisplay:PerformLayout()
end
--##################################################################
--##################################################################
function ACF_ModingSound( Mod, Mod1, Value, ID )
local wide = acfmenupanel.CustomDisplay:GetWide()
Open = vgui.Create("DButton")
Open:SetText("Open Engine Menu")
Open:SetTextColor(Color(0,0,200,255))
Open:SetWide(wide)
Open:SetTall(30)
Open:SetVisible(true)
Open.DoClick = function()
RunConsoleCommand("acf_sound_browser_open",acfmenupanel["CData"][Mod]:GetValue())
end
acfmenupanel.CustomDisplay:AddItem(Open)
SoundText = vgui.Create("DLabel")
SoundText:SetText("Sound :")
SoundText:SetFont( "DefaultBold" )
SoundText:SetTextColor(Color(0,0,255,255))
SoundText:SetWide(wide)
SoundText:SetTall(20)
acfmenupanel.CustomDisplay:AddItem(SoundText)
if Mod and not acfmenupanel["CData"][Mod] then
acfmenupanel["CData"][Mod] = vgui.Create("DTextEntry", acfmenupanel.CustomDisplay)
acfmenupanel["CData"][Mod]:SetText("")
acfmenupanel["CData"][Mod]:SetWide(wide)
acfmenupanel["CData"][Mod]:SetTall(20)
acfmenupanel["CData"][Mod]:SetMultiline(false)
acfmenupanel["CData"][Mod]:SetCursorColor(Color(0,0,255,255))
acfmenupanel["CData"][Mod]:SetHighlightColor(Color(0,255,0,200))
acfmenupanel["CData"][Mod]:SetTextColor(Color(0,0,150,255))
acfmenupanel["CData"][Mod]["Mod"] = Mod
acfmenupanel["CData"][Mod]["ID"] = ID
Value = GetConVarString("wire_soundemitter_sound")
RunConsoleCommand("wire_soundemitter_sound", Value )
acfmenupanel["CData"][Mod]:SetConVar( "wire_soundemitter_sound" )
RunConsoleCommand( "acfmenu_data1", Value )
acfmenupanel["CData"][Mod].ConVarChanged = function( sound, Value )
acfmenupanel["CData"][Mod]:SetConVar( "wire_soundemitter_sound" )
Value = GetConVarString("wire_soundemitter_sound")
RunConsoleCommand( "acfmenu_data1", Value )
end
acfmenupanel["CData"][Mod]:SetVisible(true)
acfmenupanel.CustomDisplay:AddItem(acfmenupanel["CData"][Mod])
end
ModelText = vgui.Create("DLabel")
ModelText:SetText("Model :")
ModelText:SetFont( "DefaultBold" )
ModelText:SetTextColor(Color(0,0,255,255))
ModelText:SetWide(wide)
ModelText:SetTall(20)
acfmenupanel.CustomDisplay:AddItem(ModelText)
if Mod1 and not acfmenupanel["CData"][Mod1] then
acfmenupanel["CData"][Mod1] = vgui.Create("DTextEntry", acfmenupanel.CustomDisplay)
acfmenupanel["CData"][Mod1]:SetText("")
acfmenupanel["CData"][Mod1]:SetWide(wide)
acfmenupanel["CData"][Mod1]:SetTall(20)
acfmenupanel["CData"][Mod1]:SetMultiline(false)
acfmenupanel["CData"][Mod1]:SetCursorColor(Color(0,0,255,255))
acfmenupanel["CData"][Mod1]:SetHighlightColor(Color(0,255,0,200))
acfmenupanel["CData"][Mod1]:SetTextColor(Color(0,0,150,255))
acfmenupanel["CData"][Mod1]["Mod1"] = Mod1
acfmenupanel["CData"][Mod1]["ID"] = ID
Value = GetConVarString("wire_soundemitter_model")
RunConsoleCommand("wire_soundemitter_model", Value )
acfmenupanel["CData"][Mod1]:SetConVar( "wire_soundemitter_model" )
RunConsoleCommand( "acfmenu_data2", Value )
acfmenupanel["CData"][Mod1].ConVarChanged = function( sound, Value )
acfmenupanel["CData"][Mod1]:SetConVar( "wire_soundemitter_model" )
Value = GetConVarString("wire_soundemitter_model")
RunConsoleCommand( "acfmenu_data2", Value )
end
acfmenupanel["CData"][Mod1]:SetVisible(true)
acfmenupanel.CustomDisplay:AddItem(acfmenupanel["CData"][Mod1])
end
TextName = vgui.Create( "DLabel" )
TextName:SetText( "Engine Name : "..GetConVarString("acfmenu_data10"))
TextName:SetFont( "DefaultBold" )
TextName:SetTextColor(Color(0,0,200,255))
acfmenupanel.CustomDisplay:AddItem( TextName )
TextTorque = vgui.Create( "DLabel" )
TextTorque:SetText( "Torque : "..GetConVarString("acfmenu_data3"))
TextTorque:SetFont( "DefaultBold" )
if(GetConVarNumber("acfmenu_data3") > 0) then
TextTorque:SetTextColor(Color(0,0,200,255))
elseif(GetConVarNumber("acfmenu_data3") <= 0) then
TextTorque:SetTextColor(Color(200,0,0,255))
end
acfmenupanel.CustomDisplay:AddItem( TextTorque )
TextIdle = vgui.Create( "DLabel" )
TextIdle:SetText( "Idle Rpm : "..GetConVarString("acfmenu_data4"))
TextIdle:SetFont( "DefaultBold" )
if(GetConVarNumber("acfmenu_data4") > 0) then
TextIdle:SetTextColor(Color(0,0,200,255))
elseif(GetConVarNumber("acfmenu_data4") <= 0) then
TextIdle:SetTextColor(Color(200,0,0,255))
end
acfmenupanel.CustomDisplay:AddItem( TextIdle )
TextPeakMin = vgui.Create( "DLabel" )
TextPeakMin:SetText( "Peak Min Rpm : "..GetConVarString("acfmenu_data5"))
TextPeakMin:SetFont( "DefaultBold" )
if(GetConVarNumber("acfmenu_data5") > 0) then
TextPeakMin:SetTextColor(Color(0,0,200,255))
elseif(GetConVarNumber("acfmenu_data5") <= 0) then
TextPeakMin:SetTextColor(Color(200,0,0,255))
end
acfmenupanel.CustomDisplay:AddItem( TextPeakMin )
TextPeakMax = vgui.Create( "DLabel" )
TextPeakMax:SetText( "Peak Max Rpm : "..GetConVarString("acfmenu_data6"))
TextPeakMax:SetFont( "DefaultBold" )
if(GetConVarNumber("acfmenu_data6") > 0) then
TextPeakMax:SetTextColor(Color(0,0,200,255))
elseif(GetConVarNumber("acfmenu_data6") <= 0) then
TextPeakMax:SetTextColor(Color(200,0,0,255))
end
acfmenupanel.CustomDisplay:AddItem( TextPeakMax )
TextLimit = vgui.Create( "DLabel" )
TextLimit:SetText( "Limit Rpm : "..GetConVarString("acfmenu_data7"))
TextLimit:SetFont( "DefaultBold" )
if(GetConVarNumber("acfmenu_data7") > 0) then
TextLimit:SetTextColor(Color(0,0,200,255))
elseif(GetConVarNumber("acfmenu_data7") <= 0) then
TextLimit:SetTextColor(Color(200,0,0,255))
end
acfmenupanel.CustomDisplay:AddItem( TextLimit )
TextFly = vgui.Create( "DLabel" )
TextFly:SetText( "Flywheel Mass : "..GetConVarString("acfmenu_data8"))
TextFly:SetFont( "DefaultBold" )
if(GetConVarNumber("acfmenu_data8") > 0) then
TextFly:SetTextColor(Color(0,0,200,255))
elseif(GetConVarNumber("acfmenu_data8") <= 0) then
TextFly:SetTextColor(Color(200,0,0,255))
end
acfmenupanel.CustomDisplay:AddItem( TextFly )
TextWeight = vgui.Create( "DLabel" )
TextWeight:SetText( "Weight : "..GetConVarString("acfmenu_data9"))
TextWeight:SetFont( "DefaultBold" )
if(GetConVarNumber("acfmenu_data9") > 0) then
TextWeight:SetTextColor(Color(0,0,200,255))
elseif(GetConVarNumber("acfmenu_data9") <= 0) then
TextWeight:SetTextColor(Color(200,0,0,255))
end
acfmenupanel.CustomDisplay:AddItem( TextWeight )
UpdateAll = vgui.Create("DButton")
UpdateAll:SetText("Update")
UpdateAll:SetTextColor(Color(0,200,0,255))
UpdateAll:SetWide(wide)
UpdateAll:SetTall(20)
UpdateAll:SetVisible(true)
UpdateAll.DoClick = function( )
--update Sound
acfmenupanel["CData"][Mod]:SetConVar( "wire_soundemitter_sound" )
Value = GetConVarString("wire_soundemitter_sound")
RunConsoleCommand( "acfmenu_data1", Value )
--update Engine
acfmenupanel["CData"][Mod1]:SetConVar( "wire_soundemitter_model" )
Value = GetConVarString("wire_soundemitter_model")
RunConsoleCommand( "acfmenu_data2", Value )
--update Value
TextName:SetText( "Engine Name : "..GetConVarString("acfmenu_data10"))
TextTorque:SetText( "Torque : "..GetConVarString("acfmenu_data3"))
if(GetConVarNumber("acfmenu_data3") > 0) then
TextTorque:SetTextColor(Color(0,0,200,255))
elseif(GetConVarNumber("acfmenu_data3") <= 0) then
TextTorque:SetTextColor(Color(200,0,0,255))
end
--####
TextIdle:SetText( "Idle Rpm : "..GetConVarString("acfmenu_data4"))
if(GetConVarNumber("acfmenu_data4") > 0) then
TextIdle:SetTextColor(Color(0,0,200,255))
elseif(GetConVarNumber("acfmenu_data4") <= 0) then
TextIdle:SetTextColor(Color(200,0,0,255))
end
--####
TextPeakMin:SetText( "Peak Min Rpm : "..GetConVarString("acfmenu_data5"))
if(GetConVarNumber("acfmenu_data5") > 0) then
TextPeakMin:SetTextColor(Color(0,0,200,255))
elseif(GetConVarNumber("acfmenu_data5") <= 0) then
TextPeakMin:SetTextColor(Color(200,0,0,255))
end
--####
TextPeakMax:SetText( "Peak Max Rpm : "..GetConVarString("acfmenu_data6"))
if(GetConVarNumber("acfmenu_data6") > 0) then
TextPeakMax:SetTextColor(Color(0,0,200,255))
elseif(GetConVarNumber("acfmenu_data6") <= 0) then
TextPeakMax:SetTextColor(Color(200,0,0,255))
end
--####
TextLimit:SetText( "Limit Rpm : "..GetConVarString("acfmenu_data7"))
if(GetConVarNumber("acfmenu_data7") > 0) then
TextLimit:SetTextColor(Color(0,0,200,255))
elseif(GetConVarNumber("acfmenu_data7") <= 0) then
TextLimit:SetTextColor(Color(200,0,0,255))
end
--####
TextFly:SetText( "Flywheel Mass : "..GetConVarString("acfmenu_data8"))
if(GetConVarNumber("acfmenu_data8") > 0) then
TextFly:SetTextColor(Color(0,0,200,255))
elseif(GetConVarNumber("acfmenu_data8") <= 0) then
TextFly:SetTextColor(Color(200,0,0,255))
end
--####
TextWeight:SetText( "Weight : "..GetConVarString("acfmenu_data9"))
if(GetConVarNumber("acfmenu_data9") > 0) then
TextWeight:SetTextColor(Color(0,0,200,255))
elseif(GetConVarNumber("acfmenu_data9") <= 0) then
TextWeight:SetTextColor(Color(200,0,0,255))
end
--####
end
acfmenupanel.CustomDisplay:AddItem(UpdateAll)
Help = vgui.Create("DButton")
Help:SetToolTip("1.Customizable engine in the Engine menu \n 2.Send info in the Acf menu \n 3.Press update Button \n 4.Spawn the Engine")
Help:SetTextColor(Color(200,0,0,255))
Help:SetWide(wide/2)
Help:SetTall(20)
Help:SetVisible(true)
Help:SetText("Help")
acfmenupanel.CustomDisplay:AddItem(Help)
end