Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- if !CAR_DEALER then return end
- if !CLIENT then return end
- local function CreateFont( i, Font, Name, Weight )
- local CurSize = i
- surface.CreateFont( Name .. CurSize, {
- font = Font,
- size = CurSize,
- weight = Weight,
- blursize = 0,
- scanlines = 0,
- antialias = true,
- underline = false,
- italic = false,
- strikeout = false,
- symbol = false,
- rotary = false,
- shadow = false,
- additive = false,
- outline = false,
- } )
- end
- for i=1,100 do
- CreateFont( i, "BFHud", "font_", 500 )
- end
- /*
- Notes: Purchase/Spawn button think function
- */
- local SIZES = {
- bg_x = 620,
- bg_y = 700,
- close_button = 30,
- header = 50,
- vehicle_bg = 310,
- vehicle_buybutton = 30,
- page_buttons_x = 80,
- page_buttons_y = 25,
- return_button_y = 100
- }
- local function FixModelpos(mdl)
- if !mdl then return end
- local mn, mx = mdl.Entity:GetRenderBounds()
- local size = 0
- size = math.max( size, math.abs(mn.x) + math.abs(mx.x) )
- size = math.max( size, math.abs(mn.y) + math.abs(mx.y) )
- size = math.max( size, math.abs(mn.z) + math.abs(mx.z) )
- mdl:SetFOV( 60 )
- mdl:SetCamPos( Vector( size, size, size ) )
- mdl:SetLookAt( (mn + mx) * 0.5 )
- end
- local function ApplyVehicleCustomizations( mdl, veh )
- if !mdl then return end
- end
- local HideDarkRPHUD = {
- ["DarkRP_HUD"] = false,
- }
- hook.Add("HUDShouldDraw", "HideDefaultShitMyGuy", function(name)
- if HideDarkRPHUD[name] then return false end
- end )
- function CAR_DEALER:OpenVehicleShop(car_dealer)
- if IsValid(self.BG) then
- self.BG:Remove()
- hook.Remove("CalcView","RG_CAR_MODELPREVIEW")
- if RG_CAR_PREVIEWMODEL then
- RG_CAR_PREVIEWMODEL:Remove()
- end
- HideDarkRPHUD["DarkRP_HUD"] = false
- end
- local VehiclesList = self:GetAllVehicles()
- --for _, veh in pairs( VehiclesList ) do
- -- util.PrecacheModel( self:GetVehicle(veh.class).Model )
- --end
- self.BG = vgui.Create("DPanel")
- self.BG:SetSize(ScrW(), ScrH())
- self.BG:SetPos(0,0)
- self.BG:MakePopup()
- function self.BG:OnRemove()
- hook.Remove("CalcView","RG_CAR_MODELPREVIEW")
- if RG_CAR_PREVIEWMODEL then
- RG_CAR_PREVIEWMODEL:Remove()
- end
- end
- HideDarkRPHUD["DarkRP_HUD"] = true
- function self.BG:Think()
- if !IsValid(car_dealer) then self:Remove() end
- end
- function self.BG:Paint(w, h)
- --JohnnyBlur(self,3,3)
- --draw.OutlinedRect(0,00, w, h, Color(0,0,0,150), 1, Color(0,0,0,100))
- --draw.text3D(CurrentPage.."/"..MaxPages, "BFHUD.Size20", w/2, h-25, Color(255,255,255) , TEXT_ALIGN_CENTER, TEXT_ALIGN_TOP )
- end
- self.CarListBase = vgui.Create("DPanel", self.BG)
- self.CarStatsBase = vgui.Create("DPanel", self.BG)
- self.CarModelBase = vgui.Create("DPanel", self.BG)
- self.CarModelBase:SetVisible(false)
- self.CarModelBase.Vehicle = VehiclesList[1]
- self.CarModelBase.VehicleModel = CAR_DEALER:GetVehicle(VehiclesList[1].class).Model
- ModelDisplay = vgui.Create( 'DModelPanel', self.CarModelBase )
- self.CarStatsBase.Vehicle = VehiclesList[1]["levels"] or { speed = 50, acceleration = 50, braking = 50, traction = 50 }
- self.CarListBase:SetPos(20,20)
- self.CarListBase:SetSize(500,self.BG:GetTall() - 20 - 196 - 20 - 5)
- function self.CarListBase:Paint(w,h)
- JohnnyBlur(self,3,3)
- draw.OutlinedRect(0, 0, w, 50 - 0, Color(0,0,0,150), 1, Color(0,0,0,100))
- --surface.SetDrawColor(180,30,30,200)
- --surface.DrawRect(0,0,w,50)
- draw.OutlinedRect(0, 0 + 50, w, h - 50, Color(0,0,0,100), 1, Color(0,0,0,100))
- draw.text3D("Car Dealer", "BFHUD.Size50", w/2, 50/2 - 25, Color(255,255,255) , TEXT_ALIGN_CENTER, TEXT_ALIGN_CENTER )
- end
- self.CloseButton = vgui.Create("DButton", self.CarListBase)
- self.CloseButton:SetSize(80, 25)
- self.CloseButton:SetPos(self.CarListBase:GetWide() - 80 - 5, 5)
- self.CloseButton:SetText("")
- function self.CloseButton:DoClick()
- CAR_DEALER.BG:Remove()
- HideDarkRPHUD["DarkRP_HUD"] = false
- hook.Remove("CalcView","RG_CAR_MODELPREVIEW")
- if RG_CAR_PREVIEWMODEL then
- RG_CAR_PREVIEWMODEL:Remove()
- end
- end
- function self.CloseButton:Paint(w, h)
- draw.OutlinedRect(0,0, w, h, self:IsHovered() and Color(0,0,0,125) or Color(0,0,0,0), 2, Color(255,0,0,255))
- draw.text3D("Close", "BFHUD.Size20", w/2, 0, Color(255,0,0) , TEXT_ALIGN_CENTER, TEXT_ALIGN_CENTER )
- end
- hook.Remove("CalcView","RG_CAR_MODELPREVIEW")
- hook.Add("CalcView","RG_CAR_MODELPREVIEW", function( ply, origin, angles, fov )
- local view = {}
- view.origin = car_dealer:GetPos() + (car_dealer:GetUp()*150) - (car_dealer:GetRight()*200) + (car_dealer:GetForward()*250) -- + Vector(-200,250,150)
- view.angles = car_dealer:LocalToWorldAngles(Angle(30,-110,0)) -- Angle(30,-30,0)
- view.fov = fov
- view.drawviewer = true
- return view
- end)
- if RG_CAR_PREVIEWMODEL then
- RG_CAR_PREVIEWMODEL:Remove()
- end
- RG_CAR_PREVIEWMODEL = ClientsideModel(self.CarModelBase.VehicleModel,RENDER_GROUP_VIEW_MODEL_OPAQUE)
- RG_CAR_PREVIEWMODEL:SetNoDraw(false)
- RG_CAR_PREVIEWMODEL:SetRenderOrigin(car_dealer:GetPos() + (car_dealer:GetForward()*175))
- RG_CAR_PREVIEWMODEL:SetRenderAngles(car_dealer:LocalToWorldAngles(Angle(0,0,0)))
- self.ScrollPanel = vgui.Create("DPanelList", self.CarListBase)
- self.ScrollPanel:SetSize(self.CarListBase:GetWide(), self.CarListBase:GetTall() - 50 )
- self.ScrollPanel:SetSpacing( 5 )
- self.ScrollPanel:SetPos(0, 50)
- self.ScrollPanel:EnableVerticalScrollbar( true )
- self.ScrollPanel.VBar.Paint = function( s, w, h )
- draw.RoundedBox( 0, 0, 0, w, h, Color( 0, 0, 0, 100 ) )
- end
- self.ScrollPanel.VBar.btnUp.Paint = function( s, w, h )
- draw.OutlinedRect(0, 0, w, h, Color(100,100,100,20), 1, Color(0,0,0,256))
- draw.DrawText("^", "BFHUD.Size20", w/2, 0 ,Color( 0,0,0,256 ), TEXT_ALIGN_CENTER)
- end
- self.ScrollPanel.VBar.btnDown.Paint = function( s, w, h )
- draw.OutlinedRect(0, 0, w, h, Color(100,100,100,20), 1, Color(0,0,0,256))
- draw.DrawText("v", "BFHUD.Size20", w/2, -4 ,Color( 0,0,0,256 ), TEXT_ALIGN_CENTER)
- end
- self.ScrollPanel.VBar.btnGrip.Paint = function( s, w, h )
- draw.OutlinedRect(0, 0, w, h, Color(100,100,100,20), 1, Color(0,0,0,256))
- end
- local function VehiclePurchaseConfirm(veh, vehicleowned, sell)
- local VehicleData = self:GetVehicle(veh.class)
- if !VehicleData then return end
- --PrintTable(veh)
- VehicleBG = vgui.Create("DPanel", self.BG)
- VehicleBG:SetSize( 480, 150 )
- VehicleBG:Center()
- function VehicleBG:Paint( w, h )
- draw.OutlinedRect( 0, 0, w, h, Color(0,0,0,210), 1, Color(0,0,0,220))
- end
- local VehicleBG_Label = vgui.Create( "DLabel", VehicleBG )
- VehicleBG_Label:SetPos(5, 5)
- VehicleBG_Label:SetSize(VehicleBG:GetWide(), VehicleBG:GetTall())
- VehicleBG_Label:SetFont("BFHUD.Size30")
- VehicleBG_Label:SetColor( Color( 255, 255, 255, 255 ) )
- local text1 = ""
- local text2 = ""
- if sell then
- text1 = "sell your"
- text2 = " for "..DarkRP.formatMoney(veh.price*CAR_DEALER.CFG.SellingMultiplier)
- else
- text1 = vehicleowned and "spawn" or "purchase"
- text2 = vehicleowned and "" or (" for "..DarkRP.formatMoney(veh.price))
- end
- VehicleBG_Label:SetText( "Are you sure you would like to "..text1.." "..VehicleData.Name..text2.."?" )
- VehicleBG_Label:SetContentAlignment(7)
- VehicleBG_Label:SetWrap(true)
- local VehCloseButton = vgui.Create("DButton", VehicleBG)
- VehCloseButton:SetSize(30, 30)
- VehCloseButton:SetPos(VehicleBG:GetWide() - SIZES.close_button, 0)
- VehCloseButton:SetText("")
- function VehCloseButton:DoClick()
- VehicleBG:Remove()
- end
- function VehCloseButton:Paint(w, h)
- draw.OutlinedRect(0,0, w, h, self:IsHovered() and Color(0,0,0,100) or Color(0,0,0,50), 1, Color(0,0,0,100))
- draw.text3D("X", "BFHUD.Size30", w/2, -2, Color(255,255,255) , TEXT_ALIGN_CENTER, TEXT_ALIGN_TOP )
- end
- local VehicleBGYes = vgui.Create( "DButton", VehicleBG )
- VehicleBGYes:SetSize( 80, 40 )
- VehicleBGYes:SetPos( VehicleBG:GetWide()/2 - VehicleBGYes:GetWide() - 5, VehicleBG:GetTall() - VehicleBGYes:GetTall() - 10 )
- VehicleBGYes:SetText("")
- function VehicleBGYes:DoClick()
- if sell then
- net.Start("RG:Sell_Vehicle")
- net.WriteTable(veh)
- net.SendToServer()
- CAR_DEALER.BG:Remove()
- HideDarkRPHUD["DarkRP_HUD"] = false
- if RG_CAR_PREVIEWMODEL then
- RG_CAR_PREVIEWMODEL:Remove()
- end
- --CAR_DEALER:OpenVehicleShop(car_dealer)
- else
- if vehicleowned then
- net.Start("RG:SpawnVehicle")
- net.WriteString(veh.class)
- net.WriteEntity(car_dealer)
- net.SendToServer()
- CAR_DEALER.BG:Remove()
- HideDarkRPHUD["DarkRP_HUD"] = false
- if RG_CAR_PREVIEWMODEL then
- RG_CAR_PREVIEWMODEL:Remove()
- end
- else
- net.Start("RG:PurchaseVehicle")
- net.WriteString(veh.class)
- net.SendToServer()
- CAR_DEALER.BG:Remove()
- HideDarkRPHUD["DarkRP_HUD"] = false
- if RG_CAR_PREVIEWMODEL then
- RG_CAR_PREVIEWMODEL:Remove()
- end
- --CAR_DEALER:OpenVehicleShop(car_dealer)
- end
- end
- end
- function VehicleBGYes:Paint( w, h )
- draw.OutlinedRect(0,0, w, h, self:IsHovered() and Color(50,255,50,75) or Color(50,255,50,35), 1, Color(0,0,0,150))
- draw.text3D("Yes", "BFHUD.Size30", w/2, h/8, Color(255,255,255) , TEXT_ALIGN_CENTER, TEXT_ALIGN_CENTER )
- end
- local VehicleBGNo = vgui.Create( "DButton", VehicleBG )
- VehicleBGNo:SetSize( 80, 40 )
- VehicleBGNo:SetPos( VehicleBG:GetWide()/2 + 5, VehicleBG:GetTall() - VehicleBGNo:GetTall() - 10 )
- VehicleBGNo:SetText("")
- function VehicleBGNo:DoClick()
- VehicleBG:Remove()
- end
- function VehicleBGNo:Paint( w, h )
- draw.OutlinedRect(0,0, w, h, self:IsHovered() and Color(255,50,50,75) or Color(255,50,50,35), 1, Color(0,0,0,150))
- draw.text3D("No", "BFHUD.Size30", w/2, h/8, Color(255,255,255) , TEXT_ALIGN_CENTER, TEXT_ALIGN_CENTER )
- end
- end
- local VehiclesList_owned = {}
- local VehiclesList_unowned = {}
- for k, veh in pairs(VehiclesList) do
- if CAR_DEALER:OwnsVehicle(LocalPlayer(), veh.class) then
- table.insert(VehiclesList_owned,veh)
- else
- table.insert(VehiclesList_unowned,veh)
- end
- end
- print("printing owned vehicles")
- PrintTable(VehiclesList_owned)
- print("printing unowned vehicles")
- PrintTable(VehiclesList_unowned)
- local VehicleBGOwned_ = {}
- local VehicleBGUnowned_ = {}
- self.Owned_categoryFrame = vgui.Create( "DCollapsibleCategory", self.ScrollPanel )
- self.Owned_categoryFrame:SetWide( self.ScrollPanel:GetWide() )
- self.Owned_categoryFrame.Header:SetTall(30)
- --self.Owned_categoryFrame:SetPos( 0, -40 + (40*k) - (1*k) )
- self.Owned_categoryFrame:SetExpanded( true )
- self.Owned_categoryFrame:SetLabel("")
- self.Owned_categoryFrame.Paint = function() end
- self.Owned_categoryFrame.PaintOver = function( self, w, h )
- draw.OutlinedRect(0,0, w, 30, Color(50,255,50,100), 1, Color(0,0,0,150))
- draw.text3D("Owned", "BFHUD.Size30", 5, 0, Color(255,255,255), TEXT_ALIGN_LEFT, TEXT_ALIGN_CENTER )
- draw.text3D(self:GetExpanded() and "▼" or !self:GetExpanded() and "▲", "BFHUD.Size30", w - 10, 0, Color(255,255,255), TEXT_ALIGN_RIGHT, TEXT_ALIGN_CENTER )
- end
- self.Owned_categoryFrame_list = vgui.Create( "DPanelList", self.Owned_categoryFrame )
- self.Owned_categoryFrame_list:SetWide( self.Owned_categoryFrame:GetWide() )
- self.Owned_categoryFrame_list:SetAutoSize( true )
- self.Owned_categoryFrame_list:SetSpacing( -1 )
- self.Owned_categoryFrame_list:SetPos( 0, 29 )
- self.Owned_categoryFrame_list:EnableVerticalScrollbar( false )
- self.Owned_categoryFrame_list.Paint = function( s, w, h )
- end
- for k, veh in pairs(VehiclesList_owned) do
- local VehicleData = self:GetVehicle(veh.class)
- if !VehicleData then continue end
- VehicleBGOwned_[k] = self.ScrollPanel:Add("DPanel")
- VehicleBGOwned_[k]:SetSize(self.ScrollPanel:GetWide()-13,40)
- VehicleBGOwned_[k]:SetPos( 0, -40 + (40*k) - (1*k) )
- VehicleBGOwned_[k].OwnsVehicle = CAR_DEALER:OwnsVehicle(LocalPlayer(), veh.class) or false
- VehicleBGOwned_[k].Paint = function( self, w, h ) end
- local VehicleBG_Button = VehicleBGOwned_[k]:Add("DButton")
- VehicleBG_Button:SetPos( 0, 0 )
- VehicleBG_Button:SetSize( VehicleBGOwned_[k]:GetWide(), VehicleBGOwned_[k]:GetTall() )
- VehicleBG_Button:SetText("")
- if !LocalPlayer():canAfford(veh.price) and !VehicleBGOwned_[k].OwnsVehicle then
- VehicleBG_Button:SetDisabled(true)
- end
- local clr = Color(0,0,0)
- function VehicleBG_Button:Paint( w, h )
- clr = Color(0,0,0,100)
- if !LocalPlayer():canAfford(veh.price) and !VehicleBGOwned_[k].OwnsVehicle then
- clr = Color(255,50,50,50)
- end
- draw.OutlinedRect(0,0, w, h, self:IsHovered() and Color(clr.r,clr.g,clr.b,100) or Color(clr.r,clr.g,clr.b,clr.a), 1, Color(0,0,0,100))
- draw.text3D( string.upper(VehicleData.Name), "BFHUD.Size20", 5 + 40, h/4, self:IsHovered() and Color(255,255,255, 1) or Color(255,255,255), TEXT_ALIGN_LEFT, TEXT_ALIGN_CENTER )
- if self:IsHovered() then
- draw.text3D( VehicleBGOwned_[k].OwnsVehicle and "Click to Spawn" or !LocalPlayer():canAfford(veh.price) and "Can't afford" or "Click to Purchase", "BFHUD.Size30", 40 + ((w-40)/2), h/8, Color(255,255,255), TEXT_ALIGN_CENTER, TEXT_ALIGN_CENTER )
- end
- draw.text3D( VehicleBGOwned_[k].OwnsVehicle and "Owned" or DarkRP.formatMoney(veh.price), "BFHUD.Size20", w - (VehicleBGOwned_[k].OwnsVehicle and 70 or 5), h/4, self:IsHovered() and Color(255,255,255, 1) or Color(50,255,50), TEXT_ALIGN_RIGHT, TEXT_ALIGN_CENTER )
- end
- function VehicleBG_Button:DoClick()
- VehiclePurchaseConfirm( veh, VehicleBGOwned_[k].OwnsVehicle, false )
- end
- VehicleBG_Button.OnCursorEntered = function( self )
- CAR_DEALER.CarStatsBase.Vehicle = veh.levels or { speed = 50, acceleration = 50, braking = 50, traction = 50 }
- if IsValid(ModelDisplay) then
- ModelDisplay:SetModel( CAR_DEALER:GetVehicle(veh.class).Model )
- FixModelpos(ModelDisplay)
- --ApplyVehicleCustomizations(ModelDisplay, veh)
- end
- CAR_DEALER.CarModelBase.Vehicle = veh or VehiclesList[1]
- CAR_DEALER.CarModelBase.VehicleModel = CAR_DEALER:GetVehicle(veh.class).Model or "models/tdmcars/minicooper_offroad.mdl"
- RG_CAR_PREVIEWMODEL:SetModel(CAR_DEALER.CarModelBase.VehicleModel)
- RefreshStats(CAR_DEALER.CarStatsBase.Vehicle)
- end
- local VehicleBG_Icon = VehicleBGOwned_[k]:Add("SpawnIcon")
- VehicleBG_Icon:SetPos(0,0)
- VehicleBG_Icon:SetSize(40,40)
- VehicleBG_Icon:SetModel( VehicleData.Model )
- VehicleBG_Icon:SetToolTip(false)
- VehicleBG_Icon:SetMouseInputEnabled(false)
- function VehicleBG_Icon:PaintOver(w,h)
- surface.SetDrawColor(0,0,0,100)
- surface.DrawLine(w-1,0,w-1,h)
- end
- local VehicleBG_Button_Sell = VehicleBG_Button:Add("DButton")
- VehicleBG_Button_Sell:SetSize( 60, 30 )
- VehicleBG_Button_Sell:SetPos( VehicleBG_Button:GetWide() - VehicleBG_Button_Sell:GetWide() - 5, VehicleBG_Icon:GetTall()/2 - VehicleBG_Button_Sell:GetTall()/2 )
- VehicleBG_Button_Sell:SetText("")
- if VehicleBGOwned_[k].OwnsVehicle then
- VehicleBG_Button_Sell:SetVisible(true)
- else
- VehicleBG_Button_Sell:SetVisible(false)
- end
- function VehicleBG_Button_Sell:Paint( w, h )
- draw.OutlinedRect(0,0, w, h, self:IsHovered() and Color(255,50,50,100) or Color(255,50,50,50), 1, Color(0,0,0,100))
- draw.text3D( "SELL", "BFHUD.Size20", w/2, h/8, Color(255,255,255), TEXT_ALIGN_CENTER, TEXT_ALIGN_CENTER )
- end
- function VehicleBG_Button_Sell:DoClick()
- VehiclePurchaseConfirm( veh, VehicleBGOwned_[k].OwnsVehicle, true )
- end
- self.Owned_categoryFrame_list:AddItem( VehicleBGOwned_[k] )
- end
- self.ScrollPanel:AddItem( self.Owned_categoryFrame )
- self.Unowned_categoryFrame = vgui.Create( "DCollapsibleCategory", self.ScrollPanel )
- self.Unowned_categoryFrame:SetWide( self.ScrollPanel:GetWide() )
- self.Unowned_categoryFrame.Header:SetTall(30)
- --self.Unowned_categoryFrame:SetPos( 0, -40 + (40*k) - (1*k) )
- self.Unowned_categoryFrame:SetExpanded( true )
- self.Unowned_categoryFrame:SetLabel("")
- self.Unowned_categoryFrame.Paint = function() end
- self.Unowned_categoryFrame.PaintOver = function( self, w, h )
- draw.OutlinedRect(0,0, w, 30, Color(255,50,50,100), 1, Color(0,0,0,150))
- draw.text3D("Unowned", "BFHUD.Size30", 5, 0, Color(255,255,255), TEXT_ALIGN_LEFT, TEXT_ALIGN_CENTER )
- draw.text3D(self:GetExpanded() and "▼" or !self:GetExpanded() and "▲", "BFHUD.Size30", w - 10, 0, Color(255,255,255), TEXT_ALIGN_RIGHT, TEXT_ALIGN_CENTER )
- end
- self.Unowned_categoryFrame_list = vgui.Create( "DPanelList", self.Unowned_categoryFrame )
- self.Unowned_categoryFrame_list:SetWide( self.Unowned_categoryFrame:GetWide() )
- self.Unowned_categoryFrame_list:SetAutoSize( true )
- self.Unowned_categoryFrame_list:SetSpacing( -1 )
- self.Unowned_categoryFrame_list:SetPos( 0, 29 )
- self.Unowned_categoryFrame_list:EnableVerticalScrollbar( false )
- self.Unowned_categoryFrame_list.Paint = function( s, w, h ) end
- for k, veh in pairs(VehiclesList_unowned) do
- local VehicleData = self:GetVehicle(veh.class)
- if !VehicleData then continue end
- VehicleBGUnowned_[k] = self.ScrollPanel:Add("DPanel")
- VehicleBGUnowned_[k]:SetSize(self.ScrollPanel:GetWide()-13,40)
- VehicleBGUnowned_[k]:SetPos( 0, -40 + (40*k) - (1*k) )
- VehicleBGUnowned_[k].OwnsVehicle = CAR_DEALER:OwnsVehicle(LocalPlayer(), veh.class) or false
- VehicleBGUnowned_[k].Paint = function( self, w, h ) end
- local VehicleBG_Button = VehicleBGUnowned_[k]:Add("DButton")
- VehicleBG_Button:SetPos( 0, 0 )
- VehicleBG_Button:SetSize( VehicleBGUnowned_[k]:GetWide(), VehicleBGUnowned_[k]:GetTall() )
- VehicleBG_Button:SetText("")
- if !LocalPlayer():canAfford(veh.price) and !VehicleBGUnowned_[k].OwnsVehicle then
- VehicleBG_Button:SetDisabled(true)
- end
- local clr = Color(0,0,0)
- function VehicleBG_Button:Paint( w, h )
- clr = Color(0,0,0,100)
- if !LocalPlayer():canAfford(veh.price) and !VehicleBGUnowned_[k].OwnsVehicle then
- clr = Color(255,50,50,50)
- end
- draw.OutlinedRect(0,0, w, h, self:IsHovered() and Color(clr.r,clr.g,clr.b,100) or Color(clr.r,clr.g,clr.b,clr.a), 1, Color(0,0,0,100))
- draw.text3D( string.upper(VehicleData.Name), "BFHUD.Size20", 5 + 40, h/4, self:IsHovered() and Color(255,255,255, 1) or Color(255,255,255), TEXT_ALIGN_LEFT, TEXT_ALIGN_CENTER )
- if self:IsHovered() then
- draw.text3D( VehicleBGUnowned_[k].OwnsVehicle and "Click to Spawn" or !LocalPlayer():canAfford(veh.price) and "Can't afford" or "Click to Purchase", "BFHUD.Size30", 40 + ((w-40)/2), h/8, Color(255,255,255), TEXT_ALIGN_CENTER, TEXT_ALIGN_CENTER )
- end
- draw.text3D( VehicleBGUnowned_[k].OwnsVehicle and "Owned" or DarkRP.formatMoney(veh.price), "BFHUD.Size20", w - (VehicleBGUnowned_[k].OwnsVehicle and 70 or 5), h/4, self:IsHovered() and Color(255,255,255, 1) or Color(50,255,50), TEXT_ALIGN_RIGHT, TEXT_ALIGN_CENTER )
- end
- function VehicleBG_Button:DoClick()
- VehiclePurchaseConfirm( veh, VehicleBGUnowned_[k].OwnsVehicle, false )
- end
- VehicleBG_Button.OnCursorEntered = function( self )
- CAR_DEALER.CarStatsBase.Vehicle = veh.levels or { speed = 50, acceleration = 50, braking = 50, traction = 50 }
- if IsValid(ModelDisplay) then
- ModelDisplay:SetModel( CAR_DEALER:GetVehicle(veh.class).Model )
- FixModelpos(ModelDisplay)
- --ApplyVehicleCustomizations(ModelDisplay, veh)
- end
- CAR_DEALER.CarModelBase.Vehicle = veh or VehiclesList[1]
- CAR_DEALER.CarModelBase.VehicleModel = CAR_DEALER:GetVehicle(veh.class).Model or "models/tdmcars/minicooper_offroad.mdl"
- RG_CAR_PREVIEWMODEL:SetModel(CAR_DEALER.CarModelBase.VehicleModel)
- RefreshStats(CAR_DEALER.CarStatsBase.Vehicle)
- end
- local VehicleBG_Icon = VehicleBGUnowned_[k]:Add("SpawnIcon")
- VehicleBG_Icon:SetPos(0,0)
- VehicleBG_Icon:SetSize(40,40)
- VehicleBG_Icon:SetModel( VehicleData.Model )
- VehicleBG_Icon:SetToolTip(false)
- VehicleBG_Icon:SetMouseInputEnabled(false)
- function VehicleBG_Icon:PaintOver(w,h)
- surface.SetDrawColor(0,0,0,100)
- surface.DrawLine(w-1,0,w-1,h)
- end
- local VehicleBG_Button_Sell = VehicleBG_Button:Add("DButton")
- VehicleBG_Button_Sell:SetSize( 60, 30 )
- VehicleBG_Button_Sell:SetPos( VehicleBG_Button:GetWide() - VehicleBG_Button_Sell:GetWide() - 5, VehicleBG_Icon:GetTall()/2 - VehicleBG_Button_Sell:GetTall()/2 )
- VehicleBG_Button_Sell:SetText("")
- if VehicleBGUnowned_[k].OwnsVehicle then
- VehicleBG_Button_Sell:SetVisible(true)
- else
- VehicleBG_Button_Sell:SetVisible(false)
- end
- function VehicleBG_Button_Sell:Paint( w, h )
- draw.OutlinedRect(0,0, w, h, self:IsHovered() and Color(255,50,50,100) or Color(255,50,50,50), 1, Color(0,0,0,100))
- draw.text3D( "SELL", "BFHUD.Size20", w/2, h/8, Color(255,255,255), TEXT_ALIGN_CENTER, TEXT_ALIGN_CENTER )
- end
- function VehicleBG_Button_Sell:DoClick()
- VehiclePurchaseConfirm( veh, VehicleBGUnowned_[k].OwnsVehicle, true )
- end
- self.Unowned_categoryFrame_list:AddItem( VehicleBGUnowned_[k] )
- end
- self.ScrollPanel:AddItem( self.Unowned_categoryFrame )
- --[[
- local VehicleBG_ = {}
- for k, veh in pairs(VehiclesList) do
- local VehicleData = self:GetVehicle(veh.class)
- if !VehicleData then continue end
- VehicleBG_[k] = self.ScrollPanel:Add("DPanel")
- if table.Count(VehiclesList) > 10 then
- VehicleBG_[k]:SetSize(self.ScrollPanel:GetWide() - 15,40)
- else
- VehicleBG_[k]:SetSize(self.ScrollPanel:GetWide(),40)
- end
- VehicleBG_[k]:SetPos( 0, -40 + (40*k) - (1*k) )
- VehicleBG_[k].OwnsVehicle = CAR_DEALER:OwnsVehicle(LocalPlayer(), veh.class) or false
- VehicleBG_[k].Paint = function( self, w, h ) end
- local VehicleBG_Button = VehicleBG_[k]:Add("DButton")
- VehicleBG_Button:SetPos( 0, 0 )
- VehicleBG_Button:SetSize( VehicleBG_[k]:GetWide(), VehicleBG_[k]:GetTall() )
- VehicleBG_Button:SetText("")
- if !LocalPlayer():canAfford(veh.price) and !VehicleBG_[k].OwnsVehicle then
- VehicleBG_Button:SetDisabled(true)
- end
- local clr = Color(0,0,0)
- function VehicleBG_Button:Paint( w, h )
- clr = Color(0,0,0,100)
- if !LocalPlayer():canAfford(veh.price) and !VehicleBG_[k].OwnsVehicle then
- clr = Color(255,50,50,50)
- end
- draw.OutlinedRect(0,0, w, h, self:IsHovered() and Color(clr.r,clr.g,clr.b,100) or Color(clr.r,clr.g,clr.b,clr.a), 1, Color(0,0,0,100))
- draw.text3D( string.upper(VehicleData.Name), "BFHUD.Size20", 5 + 40, h/4, self:IsHovered() and Color(255,255,255, 1) or Color(255,255,255), TEXT_ALIGN_LEFT, TEXT_ALIGN_CENTER )
- if self:IsHovered() then
- draw.text3D( VehicleBG_[k].OwnsVehicle and "Click to Spawn" or !LocalPlayer():canAfford(veh.price) and "Can't afford" or "Click to Purchase", "BFHUD.Size30", 40 + ((w-40)/2), h/8, Color(255,255,255), TEXT_ALIGN_CENTER, TEXT_ALIGN_CENTER )
- end
- draw.text3D( VehicleBG_[k].OwnsVehicle and "Owned" or DarkRP.formatMoney(veh.price), "BFHUD.Size20", w - (VehicleBG_[k].OwnsVehicle and 70 or 5), h/4, self:IsHovered() and Color(255,255,255, 1) or Color(50,255,50), TEXT_ALIGN_RIGHT, TEXT_ALIGN_CENTER )
- end
- function VehicleBG_Button:DoClick()
- VehiclePurchaseConfirm( veh, VehicleBG_[k].OwnsVehicle, false )
- end
- VehicleBG_Button.OnCursorEntered = function( self )
- CAR_DEALER.CarStatsBase.Vehicle = veh.levels or { speed = 50, acceleration = 50, braking = 50, traction = 50 }
- if IsValid(ModelDisplay) then
- ModelDisplay:SetModel( CAR_DEALER:GetVehicle(veh.class).Model )
- FixModelpos(ModelDisplay)
- --ApplyVehicleCustomizations(ModelDisplay, veh)
- end
- CAR_DEALER.CarModelBase.Vehicle = veh or VehiclesList[1]
- CAR_DEALER.CarModelBase.VehicleModel = CAR_DEALER:GetVehicle(veh.class).Model or "models/tdmcars/minicooper_offroad.mdl"
- RG_CAR_PREVIEWMODEL:SetModel(CAR_DEALER.CarModelBase.VehicleModel)
- RefreshStats(CAR_DEALER.CarStatsBase.Vehicle)
- end
- local VehicleBG_Icon = VehicleBG_[k]:Add("SpawnIcon")
- VehicleBG_Icon:SetPos(0,0)
- VehicleBG_Icon:SetSize(40,40)
- VehicleBG_Icon:SetModel( VehicleData.Model )
- VehicleBG_Icon:SetToolTip(false)
- VehicleBG_Icon:SetMouseInputEnabled(false)
- function VehicleBG_Icon:PaintOver(w,h)
- surface.SetDrawColor(0,0,0,100)
- surface.DrawLine(w-1,0,w-1,h)
- end
- local VehicleBG_Button_Sell = VehicleBG_Button:Add("DButton")
- VehicleBG_Button_Sell:SetSize( 60, 30 )
- VehicleBG_Button_Sell:SetPos( VehicleBG_Button:GetWide() - VehicleBG_Button_Sell:GetWide() - 5, VehicleBG_Icon:GetTall()/2 - VehicleBG_Button_Sell:GetTall()/2 )
- VehicleBG_Button_Sell:SetText("")
- if VehicleBG_[k].OwnsVehicle then
- VehicleBG_Button_Sell:SetVisible(true)
- else
- VehicleBG_Button_Sell:SetVisible(false)
- end
- function VehicleBG_Button_Sell:Paint( w, h )
- draw.OutlinedRect(0,0, w, h, self:IsHovered() and Color(255,50,50,100) or Color(255,50,50,50), 1, Color(0,0,0,100))
- draw.text3D( "SELL", "BFHUD.Size20", w/2, h/8, Color(255,255,255), TEXT_ALIGN_CENTER, TEXT_ALIGN_CENTER )
- end
- function VehicleBG_Button_Sell:DoClick()
- VehiclePurchaseConfirm( veh, VehicleBG_[k].OwnsVehicle, true )
- end
- end]]
- self.CarStatsBase:SetSize(500,196)
- self.CarStatsBase:SetPos(20,self.BG:GetTall() - self.CarStatsBase:GetTall() - 20)
- function self.CarStatsBase:Paint(w,h)
- JohnnyBlur(self,3,3)
- draw.OutlinedRect(0,0, w, h, Color(0,0,0,150), 1, Color(0,0,0,100))
- --surface.SetDrawColor(180,30,30,200)
- --surface.DrawRect(0,0,w,50)
- --draw.OutlinedRect(0,0 + 30 + 50, w, h - 80, Color(0,0,0,100), 1, Color(0,0,0,100))
- --draw.text3D("Stats", "BFHUD.Size50", w/2, 50/2 - 25, Color(255,255,255) , TEXT_ALIGN_CENTER, TEXT_ALIGN_CENTER )
- end
- self.StatsScrollPanel = vgui.Create("DScrollPanel", self.CarStatsBase)
- self.StatsScrollPanel:SetSize(self.CarStatsBase:GetWide(), self.CarStatsBase:GetTall() )
- self.StatsScrollPanel:SetPos(0, 0)
- local function createScrollBar()
- local sbar = CAR_DEALER.StatsScrollPanel:GetVBar()
- function sbar:Paint( w, h )
- draw.RoundedBox( 0, 0, 0, w, h, Color( 0, 0, 0, 100 ) )
- end
- function sbar.btnUp:Paint( w, h )
- draw.OutlinedRect(0, 0, w, h, Color(100,100,100,20), 1, Color(0,0,0,256))
- draw.DrawText("^", "BFHUD.Size20", w/2, 0 ,Color( 0,0,0,256 ), TEXT_ALIGN_CENTER)
- end
- function sbar.btnDown:Paint( w, h )
- draw.OutlinedRect(0, 0, w, h, Color(100,100,100,20), 1, Color(0,0,0,256))
- draw.DrawText("v", "BFHUD.Size20", w/2, -4 ,Color( 0,0,0,256 ), TEXT_ALIGN_CENTER)
- end
- function sbar.btnGrip:Paint( w, h )
- draw.OutlinedRect(0, 0, w, h, Color(100,100,100,20), 1, Color(0,0,0,256))
- end
- sbar.btnGrip:SetCursor( "hand" )
- end
- createScrollBar()
- function RefreshStats(carstats)
- local stattable = carstats or self.CarStatsBase.Vehicle
- --PrintTable(stattable)
- local VehicleStatsBG_ = {}
- local statcounts = 1
- self.StatsScrollPanel:Clear()
- for k, v in pairs(stattable) do
- local maxStat = 100
- local lastStat = 0
- local StatAprog = 0
- local StatProg
- VehicleStatsBG_[statcounts] = self.StatsScrollPanel:Add("DPanel")
- VehicleStatsBG_[statcounts]:SetSize(self.StatsScrollPanel:GetWide(),50)
- VehicleStatsBG_[statcounts]:SetPos( 0, -50 + (50*statcounts) - (1*statcounts) )
- VehicleStatsBG_[statcounts]:SetMouseInputEnabled(false)
- VehicleStatsBG_[statcounts].Paint = function( self, w, h )
- local width, height = 200, 30
- StatProg = v / maxStat
- lastStat = v
- StatAprog = Lerp(FrameTime()*10, StatAprog, StatProg)
- draw.OutlinedRect(0,0, w, h, Color(0,0,0,50), 1, Color(0,0,0,75))
- draw.text3D( string.upper(k), "BFHUD.Size30", 5, h/4, Color(255,255,255), TEXT_ALIGN_LEFT, TEXT_ALIGN_CENTER )
- draw.OutlinedRect( w - width - 10, h/2 - height/2, width, height, Color(0,0,0,100), 1, Color(0,0,0,100))
- draw.RoundedBox(0,w - width - 10 + 1, h/2 - height/2 + 1, (width - 2)*(math.Clamp(StatAprog or 0, 0, 1)), height - 2,Color(190,20,20,100))
- end
- statcounts = statcounts + 1
- end
- end
- RefreshStats(self.CarStatsBase.Vehicle)
- self.CarModelBase:SetSize(self.BG:GetWide() - 20 - self.CarListBase:GetWide() - 80 - 80,ScrH()*0.75)
- self.CarModelBase:SetPos(20 + self.CarListBase:GetWide() + 80, ScrH()/2 - self.CarModelBase:GetTall()/2 )
- function self.CarModelBase:Paint(w,h)
- draw.OutlinedRect(0,0, w, 50, Color(0,0,0,150), 1, Color(0,0,0,100))
- draw.OutlinedRect(0,0 + 50, w, h - 50, Color(0,0,0,150), 1, Color(0,0,0,100))
- --surface.SetDrawColor(180,30,30,200)
- --surface.DrawRect(0,0,w,50)
- --draw.OutlinedRect(0,0 + 30 + 50, w, h - 80, Color(0,0,0,100), 1, Color(0,0,0,100))
- draw.text3D("Model Preview", "BFHUD.Size50", w/2, 50/2 - 25, Color(255,255,255) , TEXT_ALIGN_CENTER, TEXT_ALIGN_CENTER )
- end
- --[[
- self.ModelCloseButton = vgui.Create("DButton", self.CarModelBase)
- self.ModelCloseButton:SetSize(30, 30)
- self.ModelCloseButton:SetPos(self.CarModelBase:GetWide() - SIZES.close_button, 0)
- self.ModelCloseButton:SetText("")
- function self.ModelCloseButton:DoClick()
- CAR_DEALER.BG:Remove()
- end
- function self.ModelCloseButton:Paint(w, h)
- draw.OutlinedRect(0,0, w, h, self:IsHovered() and Color(0,0,0,100) or Color(0,0,0,50), 1, Color(0,0,0,100))
- draw.text3D("X", "BFHUD.Size30", w/2, -2, Color(255,255,255) , TEXT_ALIGN_CENTER, TEXT_ALIGN_TOP )
- end]]
- ModelDisplay:SetSize( self.CarModelBase:GetWide(), self.CarModelBase:GetTall() - 50)
- ModelDisplay:SetPos( 0, 50 )
- ModelDisplay:SetModel( self:GetVehicle(CAR_DEALER.CarModelBase.Vehicle.class).Model )
- FixModelpos(ModelDisplay)
- end
- function CAR_DEALER:OpenReturnVGUI(car_dealer, vehicle)
- if IsValid(self.BG) then self.BG:Remove() end
- local num_buttons = 1
- self.BG = vgui.Create("DPanel")
- self.BG:SetSize(SIZES.bg_x, SIZES.header + SIZES.return_button_y*num_buttons)
- self.BG:Center()
- self.BG:MakePopup()
- function self.BG:Think()
- if !IsValid(car_dealer) then self.BG:Remove() end
- end
- function self.BG:Paint(w, h)
- JohnnyBlur(self,4,4)
- draw.OutlinedRect(0,0, w, h, Color(0,0,0,50), 1, Color(0,0,0,100))
- draw.OutlinedRect(0,0, w, SIZES.header, Color(0,0,0,100), 1, Color(0,0,0,100))
- draw.text3D("Car Dealer - Return", "BFHUD.Size50", w/2, SIZES.header/2 - 25, Color(255,255,255) , TEXT_ALIGN_CENTER, TEXT_ALIGN_TOP )
- end
- self.ReturnButton = vgui.Create("DButton", self.BG)
- self.ReturnButton:SetSize(SIZES.bg_x, SIZES.return_button_y)
- self.ReturnButton:SetPos(0, SIZES.header)
- self.ReturnButton:SetText("")
- function self.ReturnButton:Think()
- if !IsValid(vehicle) then CAR_DEALER.BG:Remove() end
- if !IsValid(car_dealer) then CAR_DEALER.BG:Remove() end
- if self.NextThink and (self.NextThink > CurTime()) then return end
- self.NextThink = CurTime() + 0.5
- local CarDealerPos = car_dealer:GetPos()
- local VehicleTooFar = CarDealerPos:Distance(vehicle:GetPos()) > CAR_DEALER.CFG.ReturnDistance
- local plyTooFar = CarDealerPos:Distance(LocalPlayer():GetPos()) > CAR_DEALER.CFG.ReturnDistance
- self.TooFar = VehicleTooFar or plyTooFar
- if VehicleTooFar then
- self.text = "Your vehicle is too far from the dealer."
- elseif plyTooFar then
- self.text = "You are too far from the dealer."
- else
- self.text = "Return Vehicle"
- end
- end
- function self.ReturnButton:DoClick()
- if self.TooFar then
- else
- net.Start("RG:ReturnVehicle")
- net.WriteEntity(car_dealer)
- net.SendToServer()
- CAR_DEALER.BG:Remove()
- end
- end
- function self.ReturnButton:Paint(w, h)
- draw.OutlinedRect(0,0, w, h, self:IsHovered() and Color(0,0,0,150) or Color(0,0,0,50), 1, Color(0,0,0,100))
- draw.text3D(self.text or "", "BFHUD.Size35", w/2, h/2 - 15, Color(255,255,255) , TEXT_ALIGN_CENTER, TEXT_ALIGN_TOP )
- end
- self.CloseButton = vgui.Create("DButton", self.BG)
- self.CloseButton:SetSize(30, 30)
- self.CloseButton:SetPos(SIZES.bg_x - SIZES.close_button, 0)
- self.CloseButton:SetText("")
- function self.CloseButton:DoClick()
- CAR_DEALER.BG:Remove()
- end
- function self.CloseButton:Paint(w, h)
- draw.OutlinedRect(0,0, w, h, self:IsHovered() and Color(0,0,0,100) or Color(0,0,0,50), 1, Color(0,0,0,100))
- draw.text3D("X", "BFHUD.Size30", w/2, -2, Color(255,255,255) , TEXT_ALIGN_CENTER, TEXT_ALIGN_TOP )
- end
- end
- function CAR_DEALER:OpenCropVGUI(crop_shop, stolen_vehicle)
- if IsValid(self.BG) then self.BG:Remove() end
- --print(stolen_vehicle)
- if !IsValid(stolen_vehicle) then return end
- local VehicleClass = stolen_vehicle:GetVehicleClass()
- local VehicleData = self:GetVehicle(VehicleClass)
- local VehicleDealerData = self:GetVehicleData(VehicleClass)
- if !VehicleDealerData then return end
- self.BG = vgui.Create("DPanel")
- self.BG:SetSize(SIZES.bg_x, SIZES.bg_y)
- self.BG:Center()
- self.BG:MakePopup()
- function self.BG:Think()
- if !IsValid(crop_shop) then self:Remove() return end
- if !IsValid(stolen_vehicle) then
- chat.AddText("The vehicle you stole has been removed.")
- self:Remove()
- return
- end
- end
- function self.BG:Paint(w, h)
- JohnnyBlur(self,4,4)
- draw.OutlinedRect(0,0, w, h, Color(0,0,0,50), 1, Color(0,0,0,100))
- draw.OutlinedRect(0,0, w, SIZES.header, Color(0,0,0,100), 1, Color(0,0,0,100))
- draw.text3D("Sell Stolen Vehicles", "BFHUD.Size50", w/2, SIZES.header/2 - 25, Color(255,255,255) , TEXT_ALIGN_CENTER, TEXT_ALIGN_TOP )
- end
- self.CloseButton = vgui.Create("DButton", self.BG)
- self.CloseButton:SetSize(30, 30)
- self.CloseButton:SetPos(SIZES.bg_x - SIZES.close_button, 0)
- self.CloseButton:SetText("")
- function self.CloseButton:DoClick()
- CAR_DEALER.BG:Remove()
- end
- function self.CloseButton:Paint(w, h)
- draw.OutlinedRect(0,0, w, h, self:IsHovered() and Color(0,0,0,100) or Color(0,0,0,50), 1, Color(0,0,0,100))
- draw.text3D("X", "BFHUD.Size30", w/2, -2, Color(255,255,255) , TEXT_ALIGN_CENTER, TEXT_ALIGN_TOP )
- end
- local VehicleBG = vgui.Create("DPanel", self.BG)
- local VehicleButton = vgui.Create("DButton", VehicleBG)
- local VehicleSize = SIZES.bg_x*0.9
- VehicleBG:SetSize(VehicleSize,VehicleSize)
- VehicleBG:SetPos(0, SIZES.header+5)
- VehicleBG:CenterHorizontal(0.5)
- function VehicleBG:Paint(w, h)
- draw.OutlinedRect(0,0, w, h, Color(0,0,0,50), 1, Color(0,0,0,100))
- draw.OutlinedRect(0,0, w, SIZES.vehicle_buybutton, Color(0,0,0,100), 1, Color(0,0,0,100))
- draw.text3D(VehicleData.Name, "BFHUD.Size25", w/2, 1, Color(230,230,230,230) , TEXT_ALIGN_CENTER, TEXT_ALIGN_TOP )
- local PriceColor = Color(230,256,230,230)
- draw.text3D("$".. math.min((VehicleDealerData.price*CAR_DEALER.CFG.SellRate), CAR_DEALER.CFG.MaxStealReward) , "BFHUD.Size20", w/2, SIZES.vehicle_buybutton, PriceColor, TEXT_ALIGN_CENTER, TEXT_ALIGN_TOP )
- end
- local VehModel = vgui.Create( 'DModelPanel', VehicleBG )
- VehModel:SetSize( VehicleSize-2, VehicleSize - 2* SIZES.vehicle_buybutton)
- VehModel:SetPos( 1, SIZES.vehicle_buybutton )
- VehModel:SetModel( VehicleData.Model )
- FixModelpos(VehModel)
- VehicleButton:SetSize(SIZES.vehicle_bg, SIZES.vehicle_buybutton)
- VehicleButton:SetText("")
- VehicleButton:Dock(BOTTOM)
- function VehicleButton:Paint(w, h)
- draw.OutlinedRect(0,0, w, h, self:IsHovered() and Color(0,0,0,100) or Color(0,0,0,50), 1, Color(0,0,0,100))
- draw.text3D("Sell", "BFHUD.Size25", w/2, 0, Color(230,230,230,230) , TEXT_ALIGN_CENTER, TEXT_ALIGN_TOP )
- end
- function VehicleButton:DoClick()
- net.Start("RG:SellVehicle")
- net.WriteEntity(stolen_vehicle)
- net.WriteEntity(crop_shop)
- net.SendToServer()
- CAR_DEALER.BG:Remove()
- end
- end
- hook.Add( "InitPostEntity", "RGCarDealerSetCursor", function()
- LocalPlayer().RGCursor = LocalPlayer().RGCursor or false
- LocalPlayer().RGCursorCheck = CurTime()
- LocalPlayer().RGCursorStatus = false
- end )
- --[[-------------------------------------------------------------------------
- Title: Car Customizer
- ---------------------------------------------------------------------------]]
- function CAR_DEALER:OpenVehicleCustomizer(vehicle,LVehicle)
- --if !IsValid(self) then return end
- if IsValid( vehicle ) then
- self.OldVehicleSpecs = {}
- self.bodygroupsnumlist = {}
- for k, v in pairs( vehicle:GetBodyGroups() ) do
- self.bodygroupsnumlist[v.id] = vehicle:GetBodygroup( v.id )
- end
- self.OldVehicleSpecs = {
- paint = vehicle:GetColor(),
- skin = vehicle:GetSkin(),
- bodygroups = table.concat( self.bodygroupsnumlist, "", 0, table.Count( self.bodygroupsnumlist )-1 ),
- underglow = {vehicle:GetNWBool("RG_VEH_UNDERLIGHTS",false),vehicle:GetNWVector("RG_VEH_UNDERLIGHTS_COLOR",Vector(255,255,255))}
- }
- end
- if self.OldVehicleSpecs then
- --print("printing self.OldVehicleSpecs")
- --PrintTable( self.OldVehicleSpecs )
- end
- if vehicle == nil and IsValid( LVehicle ) then
- --print( "LVehicle existed" )
- if IsValid(self.BG) then
- if !self.BG.HasPurchasedPaint then
- --print("CAR_DEALER.ColorTab existed")
- LVehicle:SetColor( self.OldVehicleSpecs.paint )
- end
- if !self.BG.HasPurchasedSkin then
- --print("CAR_DEALER.ColorTab existed")
- LVehicle:SetSkin( self.OldVehicleSpecs.skin )
- end
- if !self.BG.HasPurchasedBodygroup then
- --print("set bodygroups")
- LVehicle:SetBodyGroups( self.OldVehicleSpecs.bodygroups )
- end
- if !self.BG.HasPurchasedUnderglow then
- --print("CAR_DEALER.ColorTab existed")
- LVehicle:SetNWBool("RG_VEH_UNDERLIGHTS",self.OldVehicleSpecs.underglow[1])
- LVehicle:SetNWVector("RG_VEH_UNDERLIGHTS_COLOR",self.OldVehicleSpecs.underglow[2])
- end
- end
- --LVehicle:SetSkin( self.OldVehicleSpecs.skin )
- --LVehicle:SetBodyGroups( self.OldVehicleSpecs.bodygroups )
- end
- if vehicle == nil then
- if IsValid(self.BG) then
- self.BG:Remove()
- end
- if IsValid(self.BG_CART) then
- self.BG_CART:Remove()
- end
- if IsValid(self.BG_SPACEBAR) then
- self.BG_SPACEBAR:Remove()
- end
- LocalPlayer().RGCursorStatus = false
- LocalPlayer().RGCursor = false
- gui.EnableScreenClicker( false )
- return
- else
- if IsValid(self.BG) then
- self.BG:Remove()
- end
- if IsValid(self.BG_CART) then
- self.BG_CART:Remove()
- end
- if IsValid(self.BG_SPACEBAR) then
- self.BG_SPACEBAR:Remove()
- end
- LocalPlayer().RGCursorStatus = false
- LocalPlayer().RGCursor = false
- gui.EnableScreenClicker( false )
- end
- LocalPlayer().RGCursorStatus = true
- local VehiclesList = self:GetAllVehicles()
- if IsValid(vehicle) then
- --PrintTable(vehicle:GetBodyGroups())
- --print("------------------------------------------- ^ old ^ --------------------------------------------------------")
- local newbodygroups = {}
- for k, v in pairs( vehicle:GetBodyGroups() ) do
- if v.num > 1 then
- table.insert( newbodygroups, v )
- end
- end
- --PrintTable( newbodygroups )
- end
- self.BG = vgui.Create("DPanel")
- self.BG.HasPurchasedPaint = false
- self.BG.HasPurchasedSkin = false
- self.BG.HasPurchasedBodygroup = false
- self.BG_CART = vgui.Create("DPanel")
- self.BG_SPACEBAR = vgui.Create("DPanel")
- self.BG:SetPos( 20, 20 )
- self.BG:SetSize(400, 600)
- --self.BG:MakePopup()
- --self.BG_CART:MakePopup()
- --self.BG:Center()
- --self.BG:MakePopup()
- self.BG.Title = ""
- function self.BG:Paint(w, h)
- JohnnyBlur(self,3,3)
- draw.OutlinedRect(0,30, w, h-30, Color(0,0,0,50), 1, Color(0,0,0,100))
- draw.OutlinedRect(0,30, w, SIZES.header, Color(0,0,0,100), 1, Color(0,0,0,100))
- surface.SetDrawColor(180,30,30,230)
- surface.DrawRect(0,0,w,50)
- draw.RoundedBox(0,0,0,w,h,Color(0,0,0,150))
- draw.text3D("Car Customizer", "BFHUD.Size50", w/2, SIZES.header/2 - 25, Color(255,255,255) , TEXT_ALIGN_CENTER, TEXT_ALIGN_TOP )
- --draw.text3D(CurrentPage.."/"..MaxPages, "BFHUD.Size20", w/2, h-25, Color(255,255,255) , TEXT_ALIGN_CENTER, TEXT_ALIGN_TOP )
- draw.text3D(CAR_DEALER.BG.Title or "","font_20",5,30 + (SIZES.header/2),Color(255,255,255,255),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER)
- end
- self.BG_SPACEBAR:SetSize( 430, 50 )
- self.BG_SPACEBAR:SetPos( ScrW()/2 - self.BG_SPACEBAR:GetWide()/2, 20 )
- function self.BG_SPACEBAR:Paint( w, h )
- JohnnyBlur(self,3,3)
- draw.OutlinedRect(0,30, w, SIZES.header, Color(0,0,0,50), 1, Color(0,0,0,100))
- draw.OutlinedRect(0,30, w, SIZES.header, Color(0,0,0,100), 1, Color(0,0,0,100))
- surface.SetDrawColor(180,30,30,215)
- surface.DrawRect(0,0,w,50)
- draw.RoundedBox(0,0,0,w,h,Color(0,0,0,150))
- draw.text3D("Press Space to Toggle Cursor", "BFHUD.Size40", w/2, SIZES.header/2 - 25, Color(255,255,255) , TEXT_ALIGN_CENTER, TEXT_ALIGN_TOP )
- end
- self.CloseButton = vgui.Create("DButton", self.BG)
- self.CloseButton:SetSize(30, 30)
- self.CloseButton:SetPos(self.BG:GetWide() - SIZES.close_button, 0)
- self.CloseButton:SetText("")
- function self.CloseButton:DoClick()
- net.Start("RG:CustomizerCanLeaveVeh")
- net.SendToServer()
- CAR_DEALER:OpenVehicleCustomizer( nil, vehicle )
- CAR_DEALER.BG:Remove()
- CAR_DEALER.BG_CART:Remove()
- CAR_DEALER.BG_SPACEBAR:Remove()
- LocalPlayer().RGCursorStatus = false
- LocalPlayer().RGCursor = false
- gui.EnableScreenClicker( false )
- end
- function self.CloseButton:Paint(w, h)
- draw.OutlinedRect(0,0, w, h, self:IsHovered() and Color(0,0,0,100) or Color(0,0,0,50), 1, Color(0,0,0,100))
- draw.text3D("X", "BFHUD.Size30", w/2, -2, Color(255,255,255) , TEXT_ALIGN_CENTER, TEXT_ALIGN_TOP )
- end
- self.BG_CART:SetSize(400, 400)
- self.BG_CART:SetPos( ScrW() - self.BG_CART:GetWide() - 20, ScrH() - self.BG_CART:GetTall() - 20 )
- self.BG_CART.Items = {}
- --self.BG_CART:Center()
- --self.BG_CART:MakePopup()
- --self.BG_CART.Title = ""
- function self.BG_CART:Paint(w, h)
- JohnnyBlur(self,3,3)
- draw.OutlinedRect(0,30, w, h-30, Color(0,0,0,50), 1, Color(0,0,0,100))
- draw.OutlinedRect(0,30, w, SIZES.header, Color(0,0,0,100), 1, Color(0,0,0,100))
- surface.SetDrawColor(180,30,30,230)
- surface.DrawRect(0,0,w,50)
- draw.RoundedBox(0,0,0,w,h,Color(0,0,0,150))
- draw.text3D("Cart", "BFHUD.Size50", w/2, SIZES.header/2 - 25, Color(255,255,255) , TEXT_ALIGN_CENTER, TEXT_ALIGN_TOP )
- draw.text3D("Items: "..(table.Count(CAR_DEALER.BG_CART.Items) or 0), "BFHUD.Size30", 5, 50, Color(255,255,255) , TEXT_ALIGN_LEFT, TEXT_ALIGN_CENTER )
- --draw.text3D(CurrentPage.."/"..MaxPages, "BFHUD.Size20", w/2, h-25, Color(255,255,255) , TEXT_ALIGN_CENTER, TEXT_ALIGN_TOP )
- --draw.text3D(CAR_DEALER.BG_CART.Title or "","font_20",5,30 + (SIZES.header/2),Color(255,255,255,255),TEXT_ALIGN_LEFT,TEXT_ALIGN_CENTER)
- end
- self.CloseButton_CART = vgui.Create("DButton", self.BG_CART)
- self.CloseButton_CART:SetSize(30, 30)
- self.CloseButton_CART:SetPos(self.BG_CART:GetWide() - SIZES.close_button, 0)
- self.CloseButton_CART:SetText("")
- function self.CloseButton_CART:DoClick()
- net.Start("RG:CustomizerCanLeaveVeh")
- net.SendToServer()
- CAR_DEALER:OpenVehicleCustomizer( nil, vehicle )
- CAR_DEALER.BG:Remove()
- CAR_DEALER.BG_CART:Remove()
- LocalPlayer().RGCursorStatus = false
- LocalPlayer().RGCursor = false
- gui.EnableScreenClicker( false )
- end
- function self.CloseButton_CART:Paint(w, h)
- draw.OutlinedRect(0,0, w, h, self:IsHovered() and Color(0,0,0,100) or Color(0,0,0,50), 1, Color(0,0,0,100))
- draw.text3D("X", "BFHUD.Size30", w/2, -2, Color(255,255,255) , TEXT_ALIGN_CENTER, TEXT_ALIGN_TOP )
- end
- self.ScrollPanel_CART = vgui.Create("DScrollPanel", self.BG_CART)
- self.ScrollPanel_CART:SetSize(self.BG_CART:GetWide(), self.BG_CART:GetTall() - 31 - SIZES.header - 80 )
- self.ScrollPanel_CART:SetPos(0, 30 + SIZES.header)
- local function createScrollBar()
- local sbar = CAR_DEALER.ScrollPanel_CART:GetVBar()
- function sbar:Paint( w, h )
- draw.RoundedBox( 0, 0, 0, w, h, Color( 0, 0, 0, 100 ) )
- end
- function sbar.btnUp:Paint( w, h )
- draw.OutlinedRect(0, 0, w, h, Color(100,100,100,20), 1, Color(0,0,0,256))
- draw.DrawText("^", "BFHUD.Size20", w/2, 0 ,Color( 0,0,0,256 ), TEXT_ALIGN_CENTER)
- end
- function sbar.btnDown:Paint( w, h )
- draw.OutlinedRect(0, 0, w, h, Color(100,100,100,20), 1, Color(0,0,0,256))
- draw.DrawText("v", "BFHUD.Size20", w/2, -4 ,Color( 0,0,0,256 ), TEXT_ALIGN_CENTER)
- end
- function sbar.btnGrip:Paint( w, h )
- draw.OutlinedRect(0, 0, w, h, Color(100,100,100,20), 1, Color(0,0,0,256))
- end
- sbar.btnGrip:SetCursor( "hand" )
- end
- createScrollBar()
- function RefreshScroll_Cart()
- self.ScrollPanel_CART:Clear()
- for k, v in pairs(self.BG_CART.Items) do
- self.CartItemButton = self.ScrollPanel_CART:Add("DButton")
- self.CartItemButton:SetSize( self.BG:GetWide(), 50 ) -- - 14
- self.CartItemButton:SetPos(0,-50 + (50*k) - (1*k))
- --[[
- self.CartItemButton:SetFont("font_20")
- self.CartItemButton:SetTextColor( Color(255,255,255,255) )
- self.CartItemButton:SetText( categories[i] )
- ]]
- self.CartItemButton:SetText( "" )
- function self.CartItemButton:Paint( w, h )
- if self:IsHovered() then
- draw.OutlinedRect(0,0, w, h, Color(0,0,0,50), 1, Color(0,0,0,100))
- --draw.text3D("$500","font_25",w - 5,25/2,Color(255,255,255,255),TEXT_ALIGN_RIGHT,TEXT_ALIGN_CENTER)
- --draw.text3D("Test","font_25",w/2,25/2,Color(255,255,255,255),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER)
- draw.OutlinedRect(0,0, w, h, Color(180,30,30,230), 1, Color(0,0,0,100))
- draw.text3D("X", "BFHUD.Size30", w/2, h/6, Color(255,255,255) , TEXT_ALIGN_CENTER, TEXT_ALIGN_CENTER )
- else
- draw.OutlinedRect(0,0, w, h, Color(0,0,0,50), 1, Color(0,0,0,100))
- -- DarkRP.formatMoney(CAR_DEALER.CFG.CustomizerPrices.Skin)
- if v.type == "paint" then
- draw.text3D(DarkRP.formatMoney(CAR_DEALER.CFG.CustomizerPrices.Paint),"font_25",w - 5,25/2,Color(255,255,255,255),TEXT_ALIGN_RIGHT,TEXT_ALIGN_CENTER)
- draw.text3D("Paint","font_25",w/2,25/2,v.data.color,TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) -- Color(255,255,255,255)
- elseif v.type == "skin" then
- draw.text3D(DarkRP.formatMoney(CAR_DEALER.CFG.CustomizerPrices.Skin),"font_25",w - 5,25/2,Color(255,255,255,255),TEXT_ALIGN_RIGHT,TEXT_ALIGN_CENTER)
- draw.text3D("Skin","font_25",w/2,25/2,Color(255,255,255,255),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) -- Color(255,255,255,255)
- elseif v.type == "bodygroups" then
- draw.text3D(DarkRP.formatMoney(CAR_DEALER.CFG.CustomizerPrices.BodyGroups),"font_25",w - 5,25/2,Color(255,255,255,255),TEXT_ALIGN_RIGHT,TEXT_ALIGN_CENTER)
- if v.data.bodygroups.subgroup then -- v.data.bodygroups.subgroup
- draw.text3D( IsValid(vehicle) and ((vehicle:GetBodyGroups()[v.data.bodygroups.id+1].name).." (".. string.StripExtension(vehicle:GetBodyGroups()[v.data.bodygroups.id+1]["submodels"][v.data.bodygroups.num]) ..")") or "Error","font_25",w/2,25/2,Color(255,255,255,255),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) -- Color(255,255,255,255)
- else
- draw.text3D( IsValid(vehicle) and vehicle:GetBodyGroups()[v.data.bodygroups.id+1].name or "Error","font_25",w/2,25/2,Color(255,255,255,255),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) -- Color(255,255,255,255)
- end
- elseif v.type == "underglow" then
- draw.text3D(DarkRP.formatMoney(CAR_DEALER.CFG.CustomizerPrices.Underglow),"font_25",w - 5,25/2,Color(255,255,255,255),TEXT_ALIGN_RIGHT,TEXT_ALIGN_CENTER)
- if v.data.toggled then
- draw.text3D("Underglow (Enabled)","font_25",w/2,25/2,Color(255,255,255,255),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER)
- else
- draw.text3D("Underglow (Disabled)","font_25",w/2,25/2,Color(255,255,255,255),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER)
- end
- elseif v.type == "nitro" then
- draw.text3D((v.data.nitro == 4) and DarkRP.formatMoney(CAR_DEALER.CFG.NitroRefillCost) or DarkRP.formatMoney(CAR_DEALER.CFG.CustomizerPrices.Nitro[v.data.nitro]),"font_25",w - 5,25/2,Color(255,255,255,255),TEXT_ALIGN_RIGHT,TEXT_ALIGN_CENTER)
- if v.data.nitro == 4 then
- draw.text3D("Nitro refill","font_25",w/2,25/2,Color(255,255,255,255),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER)
- elseif v.data.nitro == 0 then
- draw.text3D("Remove Nitro","font_25",w/2,25/2,Color(255,255,255,255),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER)
- else
- draw.text3D("Nitro level "..v.data.nitro,"font_25",w/2,25/2,Color(255,255,255,255),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER)
- end
- else
- draw.text3D("ERROR","font_25",w/2,25/2,Color(255,255,255,255),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER)
- end
- end
- end
- function self.CartItemButton:DoClick()
- self:Remove()
- --[[
- if CAR_DEALER.BG_CART.Items[k].type == "paint" then
- print("set CAR_DEALER.ColorTab.HasPurchased to false")
- CAR_DEALER.ColorTab.HasPurchased = false
- end]]
- table.remove( CAR_DEALER.BG_CART.Items, k )
- RefreshScroll_Cart()
- end
- end
- end
- RefreshScroll_Cart()
- self.CartPurchaseButton = vgui.Create("DButton", self.BG_CART)
- self.CartPurchaseButton:SetSize(self.BG_CART:GetWide(), 80)
- self.CartPurchaseButton:SetPos( 0, self.BG_CART:GetTall() - 80 )
- self.CartPurchaseButton:SetText("")
- function self.CartPurchaseButton:Paint(w, h)
- draw.OutlinedRect(0,0, w, h, self:IsHovered() and Color(180,30,30,210) or Color(180,30,30,100), 1, Color(0,0,0,100))
- draw.text3D("Purchase", "BFHUD.Size50", w/2, h/8, Color(255,255,255) , TEXT_ALIGN_CENTER, TEXT_ALIGN_TOP )
- end
- function self.CartPurchaseButton:DoClick()
- --CAR_DEALER.ScrollPanel_CART:Clear()
- if table.Count( CAR_DEALER.BG_CART.Items ) < 1 then return end
- if vehicle == nil then return end
- for k, v in pairs( CAR_DEALER.BG_CART.Items ) do
- if v.type == "paint" then
- CAR_DEALER.BG.HasPurchasedPaint = true
- end
- if v.type == "skin" then
- CAR_DEALER.BG.HasPurchasedSkin = true
- end
- if v.type == "bodygroups" and !CAR_DEALER.BG.HasPurchasedBodygroup then
- CAR_DEALER.BG.HasPurchasedBodygroup = true
- end
- if v.type == "underglow" then
- CAR_DEALER.BG.HasPurchasedUnderglow = true
- end
- end
- net.Start("RG:CustomizerPurchase")
- net.WriteEntity( vehicle )
- net.WriteTable( CAR_DEALER.BG_CART.Items )
- net.SendToServer()
- CAR_DEALER.BG_CART.Items = {}
- RefreshScroll_Cart()
- end
- self.BackButton = vgui.Create("DButton", self.BG)
- self.BackButton:SetSize(SIZES.header - 0, SIZES.header - 20)
- self.BackButton:SetPos(self.BG:GetWide() - SIZES.header + 0, 50)
- self.BackButton:SetText("")
- self.BackButton.Bodygroups = false
- function self.BackButton:Paint(w, h)
- draw.OutlinedRect(0,0, w, h, self:IsHovered() and Color(0,0,0,100) or Color(0,0,0,50), 1, Color(0,0,0,100))
- draw.text3D("<", "BFHUD.Size30", w/2, -2, Color(255,255,255) , TEXT_ALIGN_CENTER, TEXT_ALIGN_TOP )
- end
- self.BackButton:SetVisible(false)
- local categories = {
- "Paint",
- "Skin",
- "BodyGroups",
- "Underglow",
- "Nitro"
- --"Engine"
- }
- local function ColorButton()
- self.ColorTab = vgui.Create( "DPanel", self.BG )
- self.ColorTab:SetSize( self.BG:GetWide(), self.BG:GetTall() - 31 - SIZES.header )
- self.ColorTab:SetPos( 0, 30 + SIZES.header )
- function self.ColorTab:Paint( w, h ) end
- self.ColorMixer = vgui.Create( "DColorMixer", self.ColorTab )
- self.ColorMixer:SetPalette( true )
- self.ColorMixer:SetAlphaBar( false )
- self.ColorMixer:SetWangs( false )
- self.ColorMixer:SetColor( IsValid(vehicle) and vehicle:GetColor() or Color( 255, 255, 255 ) )
- self.ColorMixer:SetSize( self.ColorTab:GetWide() - 20, self.ColorTab:GetWide() - 80 )
- self.ColorMixer:SetPos( 10, 10 )
- function self.ColorMixer:ValueChanged( col )
- if IsValid(vehicle) then
- vehicle:SetColor( Color(col.r, col.g, col.b) )
- end
- end
- self.ColorConfirmButton = vgui.Create("DButton", self.ColorTab)
- self.ColorConfirmButton:SetSize(self.ColorMixer:GetWide(), 50)
- self.ColorConfirmButton:SetPos(10, self.ColorMixer:GetTall() + 20)
- self.ColorConfirmButton:SetText("")
- function self.ColorConfirmButton:Paint(w, h)
- draw.OutlinedRect(0,0, w, h, self:IsHovered() and Color(CAR_DEALER.ColorMixer:GetColor().r,CAR_DEALER.ColorMixer:GetColor().g,CAR_DEALER.ColorMixer:GetColor().b,100) or Color(CAR_DEALER.ColorMixer:GetColor().r,CAR_DEALER.ColorMixer:GetColor().g,CAR_DEALER.ColorMixer:GetColor().b,50), 1, Color(0,0,0,100))
- draw.text3D("Add To Cart", "BFHUD.Size30", w/2, h/6, Color(255,255,255) , TEXT_ALIGN_CENTER, TEXT_ALIGN_TOP )
- end
- function self.ColorConfirmButton:DoClick()
- for k, v in pairs( CAR_DEALER.BG_CART.Items ) do
- if v.type == "paint" then return end
- end
- --CAR_DEALER.ColorTab.HasAdded = true
- table.insert( CAR_DEALER.BG_CART.Items,
- {
- type = "paint",
- data = {
- color = Color(CAR_DEALER.ColorMixer:GetColor().r,CAR_DEALER.ColorMixer:GetColor().g,CAR_DEALER.ColorMixer:GetColor().b)
- }
- }
- )
- RefreshScroll_Cart()
- end
- end
- local function SkinButton()
- self.SkinTab = vgui.Create( "DPanel", self.BG )
- self.SkinTab:SetSize( self.BG:GetWide(), self.BG:GetTall() - 31 - SIZES.header )
- self.SkinTab:SetPos( 0, 30 + SIZES.header )
- function self.SkinTab:Paint( w, h ) end
- self.SkinScrollPanel = vgui.Create("DScrollPanel", self.SkinTab)
- self.SkinScrollPanel:SetSize(self.SkinTab:GetWide(), self.SkinTab:GetTall() - 80 )
- self.SkinScrollPanel:SetPos(0, 0)
- local function createScrollBar()
- local sbar = CAR_DEALER.SkinScrollPanel:GetVBar()
- function sbar:Paint( w, h )
- draw.RoundedBox( 0, 0, 0, w, h, Color( 0, 0, 0, 100 ) )
- end
- function sbar.btnUp:Paint( w, h )
- draw.OutlinedRect(0, 0, w, h, Color(100,100,100,20), 1, Color(0,0,0,256))
- draw.DrawText("^", "BFHUD.Size20", w/2, 0 ,Color( 0,0,0,256 ), TEXT_ALIGN_CENTER)
- end
- function sbar.btnDown:Paint( w, h )
- draw.OutlinedRect(0, 0, w, h, Color(100,100,100,20), 1, Color(0,0,0,256))
- draw.DrawText("v", "BFHUD.Size20", w/2, -4 ,Color( 0,0,0,256 ), TEXT_ALIGN_CENTER)
- end
- function sbar.btnGrip:Paint( w, h )
- draw.OutlinedRect(0, 0, w, h, Color(100,100,100,20), 1, Color(0,0,0,256))
- end
- sbar.btnGrip:SetCursor( "hand" )
- end
- createScrollBar()
- local vtotalskins = IsValid(vehicle) and vehicle:SkinCount() or 8
- local SkinChooseButton_ = {}
- for i=1,vtotalskins do
- SkinChooseButton_[i] = self.SkinScrollPanel:Add("DButton")
- if vtotalskins > 8 then
- SkinChooseButton_[i]:SetSize( self.BG:GetWide() - 14, 50 )
- else
- SkinChooseButton_[i]:SetSize( self.BG:GetWide(), 50 )
- end
- SkinChooseButton_[i]:SetPos(0,-50 + (50*i) - (1*i))
- --[[
- SkinChooseButton_[i]:SetFont("font_20")
- SkinChooseButton_[i]:SetTextColor( Color(255,255,255,255) )
- SkinChooseButton_[i]:SetText( categories[i] )
- ]]
- SkinChooseButton_[i]:SetText( "" )
- SkinChooseButton_[i].Selected = false
- SkinChooseButton_[i].Paint = function( self, w, h )
- draw.OutlinedRect(0,0, w, h, SkinChooseButton_[i].Selected and Color(0,0,0,150) or self:IsHovered() and Color(0,0,0,100) or Color(0,0,0,50), 1, Color(0,0,0,100))
- draw.text3D(DarkRP.formatMoney(CAR_DEALER.CFG.CustomizerPrices.Skin),"font_25",w - 5,25/2,Color(255,255,255,255),TEXT_ALIGN_RIGHT,TEXT_ALIGN_CENTER)
- draw.text3D("Skin "..i,"font_25",w/2,25/2,Color(255,255,255,255),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER)
- end
- SkinChooseButton_[i].DoClick = function()
- for c=1,vtotalskins do
- SkinChooseButton_[c].Selected = false
- end
- SkinChooseButton_[i].Selected = true
- if IsValid(vehicle) then
- vehicle:SetSkin( i )
- --print( vehicle:GetSkin() )
- CAR_DEALER.SkinTab.vskin = i
- end
- end
- end
- self.SkinConfirmButton = vgui.Create("DButton", self.SkinTab)
- self.SkinConfirmButton:SetSize(self.SkinTab:GetWide(), 80)
- self.SkinConfirmButton:SetPos(0, self.SkinTab:GetTall() - 80)
- self.SkinConfirmButton:SetText("")
- function self.SkinConfirmButton:Paint(w, h)
- draw.OutlinedRect(0,0, w, h, self:IsHovered() and Color(180,30,30,210) or Color(180,30,30,100), 1, Color(0,0,0,100))
- draw.text3D("Add To Cart", "BFHUD.Size40", w/2, h/4, Color(255,255,255) , TEXT_ALIGN_CENTER, TEXT_ALIGN_TOP )
- end
- function self.SkinConfirmButton:DoClick()
- for k, v in pairs( CAR_DEALER.BG_CART.Items ) do
- if v.type == "skin" then return end
- end
- table.insert( CAR_DEALER.BG_CART.Items,
- {
- type = "skin",
- data = {
- skin = CAR_DEALER.SkinTab.vskin
- }
- }
- )
- RefreshScroll_Cart()
- end
- end
- local newbodygroups = {}
- if IsValid(vehicle) then
- for k, v in pairs( vehicle:GetBodyGroups() ) do
- if v.num > 1 then
- table.insert( newbodygroups, v )
- end
- end
- end
- local function BodygroupsButton()
- self.BodygroupsTab = vgui.Create( "DPanel", self.BG )
- self.BodygroupsTab:SetSize( self.BG:GetWide(), self.BG:GetTall() - 31 - SIZES.header )
- self.BodygroupsTab:SetPos( 0, 30 + SIZES.header )
- function self.BodygroupsTab:Paint( w, h ) end
- self.BodygroupScrollPanel = vgui.Create("DScrollPanel", self.BodygroupsTab)
- self.BodygroupScrollPanel:SetSize(self.BodygroupsTab:GetWide(), self.BodygroupsTab:GetTall() - 80 )
- self.BodygroupScrollPanel:SetPos(0, 0)
- local function createScrollBar()
- local sbar = CAR_DEALER.BodygroupScrollPanel:GetVBar()
- function sbar:Paint( w, h )
- draw.RoundedBox( 0, 0, 0, w, h, Color( 0, 0, 0, 100 ) )
- end
- function sbar.btnUp:Paint( w, h )
- draw.OutlinedRect(0, 0, w, h, Color(100,100,100,20), 1, Color(0,0,0,256))
- draw.DrawText("^", "BFHUD.Size20", w/2, 0 ,Color( 0,0,0,256 ), TEXT_ALIGN_CENTER)
- end
- function sbar.btnDown:Paint( w, h )
- draw.OutlinedRect(0, 0, w, h, Color(100,100,100,20), 1, Color(0,0,0,256))
- draw.DrawText("v", "BFHUD.Size20", w/2, -4 ,Color( 0,0,0,256 ), TEXT_ALIGN_CENTER)
- end
- function sbar.btnGrip:Paint( w, h )
- draw.OutlinedRect(0, 0, w, h, Color(100,100,100,20), 1, Color(0,0,0,256))
- end
- sbar.btnGrip:SetCursor( "hand" )
- end
- createScrollBar()
- local vtotalbodygroups = IsValid(vehicle) and table.Count(newbodygroups) or 0
- --local tbl_bodygroups = IsValid(vehicle) and vehicle:GetBodyGroups() or {}
- local BodygroupsChooseButton_ = {}
- local BodygroupsChooseButtonExtra_ = {}
- local bodynum = {}
- local bodynumExtra = {}
- local function OpenSubCategoryBodygroups( subgroups )
- --PrintTable(subgroups)
- self.BodygroupsTabExtra = vgui.Create( "DPanel", self.BG )
- self.BodygroupsTabExtra:SetSize( self.BG:GetWide(), self.BG:GetTall() - 31 - SIZES.header )
- self.BodygroupsTabExtra:SetPos( 0, 30 + SIZES.header )
- function self.BodygroupsTabExtra:Paint( w, h ) end
- self.BodygroupScrollPanelExtra = vgui.Create("DScrollPanel", self.BodygroupsTabExtra)
- self.BodygroupScrollPanelExtra:SetSize(self.BodygroupsTabExtra:GetWide(), self.BodygroupsTabExtra:GetTall() - 80 )
- self.BodygroupScrollPanelExtra:SetPos(0, 0)
- local function createScrollBar()
- local sbar = CAR_DEALER.BodygroupScrollPanelExtra:GetVBar()
- function sbar:Paint( w, h )
- draw.RoundedBox( 0, 0, 0, w, h, Color( 0, 0, 0, 100 ) )
- end
- function sbar.btnUp:Paint( w, h )
- draw.OutlinedRect(0, 0, w, h, Color(100,100,100,20), 1, Color(0,0,0,256))
- draw.DrawText("^", "BFHUD.Size20", w/2, 0 ,Color( 0,0,0,256 ), TEXT_ALIGN_CENTER)
- end
- function sbar.btnDown:Paint( w, h )
- draw.OutlinedRect(0, 0, w, h, Color(100,100,100,20), 1, Color(0,0,0,256))
- draw.DrawText("v", "BFHUD.Size20", w/2, -4 ,Color( 0,0,0,256 ), TEXT_ALIGN_CENTER)
- end
- function sbar.btnGrip:Paint( w, h )
- draw.OutlinedRect(0, 0, w, h, Color(100,100,100,20), 1, Color(0,0,0,256))
- end
- sbar.btnGrip:SetCursor( "hand" )
- end
- createScrollBar()
- for k, v in pairs( subgroups["submodels"] ) do
- k = k + 1
- BodygroupsChooseButtonExtra_[k] = self.BodygroupScrollPanelExtra:Add("DButton")
- if table.Count(subgroups["submodels"]) > 8 then
- BodygroupsChooseButtonExtra_[k]:SetSize( self.BG:GetWide() - 14, 50 )
- else
- BodygroupsChooseButtonExtra_[k]:SetSize( self.BG:GetWide(), 50 )
- end
- BodygroupsChooseButtonExtra_[k]:SetPos(0,-50 + (50*k) - (1*k))
- --[[
- BodygroupsChooseButtonExtra_[i]:SetFont("font_20")
- BodygroupsChooseButtonExtra_[i]:SetTextColor( Color(255,255,255,255) )
- BodygroupsChooseButtonExtra_[i]:SetText( categories[i] )
- ]]
- BodygroupsChooseButtonExtra_[k]:SetText( "" )
- BodygroupsChooseButtonExtra_[k].Selected = false
- BodygroupsChooseButtonExtra_[k].BodygroupInfo = subgroups.id
- BodygroupsChooseButtonExtra_[k].Paint = function( self, w, h )
- draw.OutlinedRect(0,0, w, h, BodygroupsChooseButtonExtra_[k].Selected and Color(0,0,0,150) or self:IsHovered() and Color(0,0,0,100) or Color(0,0,0,50), 1, Color(0,0,0,100))
- draw.text3D(DarkRP.formatMoney(CAR_DEALER.CFG.CustomizerPrices.BodyGroups),"font_25",w - 5,25/2,Color(255,255,255,255),TEXT_ALIGN_RIGHT,TEXT_ALIGN_CENTER)
- draw.text3D( string.StripExtension(v),"font_25",w/2,25/2,Color(255,255,255,255),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER)
- end
- BodygroupsChooseButtonExtra_[k].DoClick = function()
- for c=1,table.Count(subgroups["submodels"]) do
- BodygroupsChooseButtonExtra_[c].Selected = false
- end
- BodygroupsChooseButtonExtra_[k].Selected = true
- if IsValid(vehicle) then
- --print("bodygroup numb:",k-1)
- vehicle:SetBodygroup( BodygroupsChooseButtonExtra_[k].BodygroupInfo, k-1 )
- --print( "yuhayebruv" )
- CAR_DEALER.BodygroupsTabExtra.vbodygroup = {id=BodygroupsChooseButtonExtra_[k].BodygroupInfo,num=k-1,subgroup=true}
- end
- end
- end
- self.BodygroupsConfirmButtonExtra = vgui.Create("DButton", self.BodygroupsTabExtra)
- self.BodygroupsConfirmButtonExtra:SetSize(self.BodygroupsTabExtra:GetWide(), 80)
- self.BodygroupsConfirmButtonExtra:SetPos(0, self.BodygroupsTabExtra:GetTall() - 80)
- self.BodygroupsConfirmButtonExtra:SetText("")
- function self.BodygroupsConfirmButtonExtra:Paint(w, h)
- draw.OutlinedRect(0,0, w, h, self:IsHovered() and Color(180,30,30,210) or Color(180,30,30,100), 1, Color(0,0,0,100))
- draw.text3D("Add To Cart", "BFHUD.Size40", w/2, h/4, Color(255,255,255) , TEXT_ALIGN_CENTER, TEXT_ALIGN_TOP )
- end
- function self.BodygroupsConfirmButtonExtra:DoClick()
- for k, v in pairs( CAR_DEALER.BG_CART.Items ) do
- if v.type == "bodygroups" then
- if v.data.bodygroups.id == CAR_DEALER.BodygroupsTabExtra.vbodygroup.id then
- --print("removed tbl val")
- table.remove( CAR_DEALER.BG_CART.Items, k )
- end
- end
- end
- table.insert( CAR_DEALER.BG_CART.Items,
- {
- type = "bodygroups",
- data = {
- bodygroups = CAR_DEALER.BodygroupsTabExtra.vbodygroup
- }
- }
- )
- RefreshScroll_Cart()
- end
- end
- for k, v in pairs( newbodygroups ) do
- BodygroupsChooseButton_[k] = self.BodygroupScrollPanel:Add("DButton")
- if vtotalbodygroups > 8 then
- BodygroupsChooseButton_[k]:SetSize( self.BG:GetWide() - 14, 50 )
- else
- BodygroupsChooseButton_[k]:SetSize( self.BG:GetWide(), 50 )
- end
- BodygroupsChooseButton_[k]:SetPos(0,-50 + (50*k) - (1*k))
- --[[
- BodygroupsChooseButton_[i]:SetFont("font_20")
- BodygroupsChooseButton_[i]:SetTextColor( Color(255,255,255,255) )
- BodygroupsChooseButton_[i]:SetText( categories[i] )
- ]]
- BodygroupsChooseButton_[k]:SetText( "" )
- BodygroupsChooseButton_[k].Selected = false
- BodygroupsChooseButton_[k].BodygroupInfo = v.id
- BodygroupsChooseButton_[k].Paint = function( self, w, h )
- draw.OutlinedRect(0,0, w, h, BodygroupsChooseButton_[k].Selected and Color(0,0,0,150) or self:IsHovered() and Color(0,0,0,100) or Color(0,0,0,50), 1, Color(0,0,0,100))
- local mtxt = DarkRP.formatMoney(CAR_DEALER.CFG.CustomizerPrices.BodyGroups)
- local expos = 5
- if v.num > 2 then
- mtxt = ">"
- expos = 20
- else
- mtxt = DarkRP.formatMoney(CAR_DEALER.CFG.CustomizerPrices.BodyGroups)
- expos = 5
- end
- draw.text3D(mtxt,"font_25",w - expos,25/2,Color(255,255,255,255),TEXT_ALIGN_RIGHT,TEXT_ALIGN_CENTER)
- draw.text3D( v.name,"font_25",w/2,25/2,Color(255,255,255,255),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER)
- end
- bodynum[k] = vehicle:GetBodygroup( BodygroupsChooseButton_[k].BodygroupInfo )
- BodygroupsChooseButton_[k].DoClick = function()
- if v.num > 2 then
- CAR_DEALER.BG.Title = v.name
- CAR_DEALER.BackButton:SetVisible(true)
- CAR_DEALER.BackButton.Bodygroups = true
- CAR_DEALER.BodygroupsTab:Remove()
- OpenSubCategoryBodygroups( v )
- --PrintTable(v)
- else
- for c=1,vtotalbodygroups do
- BodygroupsChooseButton_[c].Selected = false
- end
- BodygroupsChooseButton_[k].Selected = true
- if IsValid(vehicle) then
- --print("bodygroup numb:",bodynum[k])
- if bodynum[k] == 0 then
- bodynum[k] = 1
- elseif bodynum[k] == 1 then
- bodynum[k] = 0
- end
- --print("bodygroup numb:",bodynum[k])
- vehicle:SetBodygroup( BodygroupsChooseButton_[k].BodygroupInfo, bodynum[k] )
- --print( "yuhayebruv" )
- CAR_DEALER.BodygroupsTab.vbodygroup = {id=BodygroupsChooseButton_[k].BodygroupInfo,num=bodynum[k],subgroup=false}
- end
- end
- end
- end
- self.BodygroupsConfirmButton = vgui.Create("DButton", self.BodygroupsTab)
- self.BodygroupsConfirmButton:SetSize(self.BodygroupsTab:GetWide(), 80)
- self.BodygroupsConfirmButton:SetPos(0, self.BodygroupsTab:GetTall() - 80)
- self.BodygroupsConfirmButton:SetText("")
- function self.BodygroupsConfirmButton:Paint(w, h)
- draw.OutlinedRect(0,0, w, h, self:IsHovered() and Color(180,30,30,210) or Color(180,30,30,100), 1, Color(0,0,0,100))
- draw.text3D("Add To Cart", "BFHUD.Size40", w/2, h/4, Color(255,255,255) , TEXT_ALIGN_CENTER, TEXT_ALIGN_TOP )
- end
- function self.BodygroupsConfirmButton:DoClick()
- for k, v in pairs( CAR_DEALER.BG_CART.Items ) do
- if v.type == "bodygroups" then
- if v.data.bodygroups.id == CAR_DEALER.BodygroupsTab.vbodygroup.id then
- table.remove( CAR_DEALER.BG_CART.Items, k )
- end
- end
- end
- table.insert( CAR_DEALER.BG_CART.Items,
- {
- type = "bodygroups",
- data = {
- bodygroups = CAR_DEALER.BodygroupsTab.vbodygroup
- }
- }
- )
- RefreshScroll_Cart()
- end
- end
- local function UnderglowButton()
- self.BG:SetSize( self.BG:GetWide(), 210 )
- self.UnderglowTab = vgui.Create( "DPanel", self.BG )
- self.UnderglowTab:SetSize( self.BG:GetWide(), self.BG:GetTall() - 31 - SIZES.header )
- self.UnderglowTab:SetPos( 0, 30 + SIZES.header )
- function self.UnderglowTab:Paint( w, h ) end
- self.UnderglowToggleRed = vgui.Create( "DPanel", self.UnderglowTab )
- self.UnderglowToggleRed:SetSize( self.UnderglowTab:GetWide() - 20, 50 ) -- 380
- self.UnderglowToggleRed:SetPos( 10, 10 )
- function self.UnderglowToggleRed:Paint( w, h )
- draw.RoundedBox(0,0,0,w,h,Color(255,50,50,255))
- end
- self.UnderglowToggleGreen = vgui.Create( "DPanel", self.UnderglowTab )
- self.UnderglowToggleGreen:SetSize( self.UnderglowTab:GetWide() - 20, 0 ) -- 380
- self.UnderglowToggleGreen:SetPos( 10, 10 )
- function self.UnderglowToggleGreen:Paint( w, h )
- draw.RoundedBox(0,0,0,w,h,Color(50,255,50,255))
- draw.RoundedBox(0,0,h-1,w,1,Color(0,0,0,100))
- end
- self.UnderglowToggleButton = vgui.Create("DButton", self.UnderglowTab)
- self.UnderglowToggleButton:SetSize(self.UnderglowTab:GetWide() - 20, 50)
- self.UnderglowToggleButton:SetPos(10, 10)
- self.UnderglowToggleButton:SetText("")
- local getdefaultUGtoggle = false
- local getdefaultUGcolor = Vector(255,255,255)
- if IsValid(vehicle) then
- getdefaultUGtoggle = vehicle:GetNWBool( "RG_VEH_UNDERLIGHTS", false )
- getdefaultUGcolor = vehicle:GetNWVector( "RG_VEH_UNDERLIGHTS_COLOR", Vector(255,255,255) )
- end
- self.UnderglowToggleButton.IsToggled = getdefaultUGtoggle
- self.UnderglowToggleButton.ButtonText = self.UnderglowToggleButton.IsToggled and "On" or !self.UnderglowToggleButton.IsToggled and "Off"
- function self.UnderglowToggleButton:Paint(w, h)
- draw.OutlinedRect(0,0, w, h, self:IsHovered() and Color(255,255,255,35) or Color(255,255,255,0), 1, Color(0,0,0,100))
- draw.text3D(self.ButtonText, "BFHUD.Size30", w/2, h/6, Color(255,255,255) , TEXT_ALIGN_CENTER, TEXT_ALIGN_TOP )
- end
- self.UnderglowMixerBG = vgui.Create( "DPanel", self.UnderglowTab )
- self.UnderglowMixerBG:SetSize( self.UnderglowTab:GetWide() - 20, 0 ) -- 380
- self.UnderglowMixerBG:SetPos( 10, 10 + self.UnderglowToggleButton:GetTall() + 10 )
- function self.UnderglowMixerBG:Paint( w, h ) end
- self.UnderglowMixer = vgui.Create( "DColorMixer", self.UnderglowMixerBG )
- self.UnderglowMixer:SetPalette( true )
- self.UnderglowMixer:SetAlphaBar( false )
- self.UnderglowMixer:SetWangs( false )
- self.UnderglowMixer:SetColor( Color( getdefaultUGcolor.x, getdefaultUGcolor.y, getdefaultUGcolor.z ) )
- self.UnderglowMixer:SetSize( self.UnderglowMixerBG:GetWide(), self.UnderglowMixerBG:GetWide() )
- self.UnderglowMixer:SetPos( 0, 0 )
- self.UnderglowMixer.Cooldown = 0.1 + CurTime()
- function self.UnderglowMixer:ValueChanged( col )
- if self.Cooldown < CurTime() then
- if IsValid(vehicle) then
- vehicle:SetNWVector( "RG_VEH_UNDERLIGHTS_COLOR", Vector( col.r, col.g, col.b ) )
- end
- self.Cooldown = 0.1 + CurTime()
- end
- end
- self.UnderglowConfirmButton = vgui.Create("DButton", self.UnderglowTab)
- self.UnderglowConfirmButton:SetSize(self.UnderglowTab:GetWide() - 20, 50)
- --self.UnderglowConfirmButton:SetPos(10, 10 + self.UnderglowToggleButton:GetTall() + 10 + self.UnderglowMixerBG:GetTall() + 10)
- self.UnderglowConfirmButton:SetPos(10, self.UnderglowTab:GetTall() - 50 - 10)
- self.UnderglowConfirmButton:SetText("")
- function self.UnderglowConfirmButton:Paint(w, h)
- CAR_DEALER.UnderglowConfirmButton:SetPos(10, CAR_DEALER.UnderglowTab:GetTall() - 50 - 10)
- draw.OutlinedRect(0,0, w, h, self:IsHovered() and Color(255,255,255,100) or Color(255,255,255,50), 1, Color(0,0,0,100))
- --draw.OutlinedRect(0,0, w, h, self:IsHovered() and Color(CAR_DEALER.UnderglowMixer:GetColor().r,CAR_DEALER.UnderglowMixer:GetColor().g,CAR_DEALER.UnderglowMixer:GetColor().b,100) or Color(CAR_DEALER.UnderglowMixer:GetColor().r,CAR_DEALER.UnderglowMixer:GetColor().g,CAR_DEALER.UnderglowMixer:GetColor().b,50), 1, Color(0,0,0,100))
- draw.text3D("Add To Cart", "BFHUD.Size30", w/2, h/6, Color(255,255,255) , TEXT_ALIGN_CENTER, TEXT_ALIGN_TOP )
- end
- function self.UnderglowToggleButton:DoClick()
- if !IsValid(CAR_DEALER.UnderglowMixerBG) then return end
- if CAR_DEALER.UnderglowToggleButton.IsToggled then
- self.ButtonText = "Off"
- CAR_DEALER.UnderglowToggleGreen:SizeTo(-1,0,0.35,0,-1)
- CAR_DEALER.UnderglowToggleButton.IsToggled = false
- CAR_DEALER.BG:SizeTo(-1,210,0.35,0,-1)
- CAR_DEALER.UnderglowTab:SizeTo(-1,210 - 31 - SIZES.header,0.35,0,-1)
- CAR_DEALER.UnderglowMixerBG:SizeTo(-1,0,0.35,0,-1)
- CAR_DEALER.UnderglowMixer:SizeTo(-1,0,0.35,0,-1)
- if IsValid(vehicle) then
- vehicle:SetNWBool( "RG_VEH_UNDERLIGHTS", false )
- end
- else
- self.ButtonText = "On"
- CAR_DEALER.UnderglowToggleGreen:SizeTo(-1,50,0.35,0,-1)
- --self.UnderglowTab:SetSize( self.BG:GetWide(), self.BG:GetTall() - 31 - SIZES.header )
- CAR_DEALER.BG:SizeTo(-1,600,0.35,0,-1)
- CAR_DEALER.UnderglowTab:SizeTo(-1,600 - 31 - SIZES.header,0.35,0,-1)
- CAR_DEALER.UnderglowMixerBG:SizeTo(-1,380,0.35,0,-1)
- CAR_DEALER.UnderglowMixer:SizeTo(-1,380,0.35,0,-1)
- --CAR_DEALER.UnderglowConfirmButton:MoveTo(10,number posY,number time,number delay=0,number ease=-1,function callback)
- CAR_DEALER.UnderglowToggleButton.IsToggled = true
- if IsValid(vehicle) then
- vehicle:SetNWBool( "RG_VEH_UNDERLIGHTS", true )
- end
- end
- end
- if vehicle:GetNWBool( "RG_VEH_UNDERLIGHTS", false ) then
- self.UnderglowToggleButton.ButtonText = "On"
- self.UnderglowToggleGreen:SizeTo(-1,50,0.35,0,-1)
- --self.UnderglowTab:SetSize( self.BG:GetWide(), self.BG:GetTall() - 31 - SIZES.header )
- self.BG:SizeTo(-1,600,0.35,0,-1)
- self.UnderglowTab:SizeTo(-1,600 - 31 - SIZES.header,0.35,0,-1)
- self.UnderglowMixerBG:SizeTo(-1,380,0.35,0,-1)
- self.UnderglowMixer:SizeTo(-1,380,0.35,0,-1)
- --self.UnderglowConfirmButton:MoveTo(10,number posY,number time,number delay=0,number ease=-1,function callback)
- self.UnderglowToggleButton.IsToggled = true
- end
- function self.UnderglowConfirmButton:DoClick()
- for k, v in pairs( CAR_DEALER.BG_CART.Items ) do
- if v.type == "underglow" then return end
- end
- local edittedvector = Vector(255,255,255)
- if CAR_DEALER.UnderglowToggleButton.IsToggled then
- edittedvector = Vector(CAR_DEALER.UnderglowMixer:GetColor().r,CAR_DEALER.UnderglowMixer:GetColor().g,CAR_DEALER.UnderglowMixer:GetColor().b)
- end
- --CAR_DEALER.UnderglowTab.HasAdded = true
- table.insert( CAR_DEALER.BG_CART.Items,
- {
- type = "underglow",
- data = {
- toggled = CAR_DEALER.UnderglowToggleButton.IsToggled,
- underglowcolor = edittedvector
- }
- }
- )
- RefreshScroll_Cart()
- end
- end
- local function NitroButton()
- self.NitroTab = vgui.Create( "DPanel", self.BG )
- self.NitroTab:SetSize( self.BG:GetWide(), self.BG:GetTall() - 31 - SIZES.header )
- self.NitroTab:SetPos( 0, 30 + SIZES.header )
- self.NitroTab.level = vehicle:GetNWFloat("RG_VEH_NITRO",0)
- function self.NitroTab:Paint( w, h ) end
- self.NitroScrollPanel = vgui.Create("DScrollPanel", self.NitroTab)
- self.NitroScrollPanel:SetSize(self.NitroTab:GetWide(), self.NitroTab:GetTall() - 80 )
- self.NitroScrollPanel:SetPos(0, 0)
- local function createScrollBar()
- local sbar = CAR_DEALER.NitroScrollPanel:GetVBar()
- function sbar:Paint( w, h )
- draw.RoundedBox( 0, 0, 0, w, h, Color( 0, 0, 0, 100 ) )
- end
- function sbar.btnUp:Paint( w, h )
- draw.OutlinedRect(0, 0, w, h, Color(100,100,100,20), 1, Color(0,0,0,256))
- draw.DrawText("^", "BFHUD.Size20", w/2, 0 ,Color( 0,0,0,256 ), TEXT_ALIGN_CENTER)
- end
- function sbar.btnDown:Paint( w, h )
- draw.OutlinedRect(0, 0, w, h, Color(100,100,100,20), 1, Color(0,0,0,256))
- draw.DrawText("v", "BFHUD.Size20", w/2, -4 ,Color( 0,0,0,256 ), TEXT_ALIGN_CENTER)
- end
- function sbar.btnGrip:Paint( w, h )
- draw.OutlinedRect(0, 0, w, h, Color(100,100,100,20), 1, Color(0,0,0,256))
- end
- sbar.btnGrip:SetCursor( "hand" )
- end
- createScrollBar()
- local vtotalnitros = IsValid(vehicle) and 5
- local NitroChooseButton_ = {}
- for i=1,vtotalnitros do
- NitroChooseButton_[i] = self.NitroScrollPanel:Add("DButton")
- NitroChooseButton_[i]:SetSize( self.BG:GetWide(), 50 )
- NitroChooseButton_[i]:SetPos(0,-50 + (50*i) - (1*i))
- --[[
- NitroChooseButton_[i]:SetFont("font_20")
- NitroChooseButton_[i]:SetTextColor( Color(255,255,255,255) )
- NitroChooseButton_[i]:SetText( categories[i] )
- ]]
- NitroChooseButton_[i]:SetText( "" )
- NitroChooseButton_[i].Selected = false
- NitroChooseButton_[i].Paint = function( self, w, h )
- draw.OutlinedRect(0,0, w, h, NitroChooseButton_[i].Selected and Color(0,0,0,150) or self:IsHovered() and Color(0,0,0,100) or Color(0,0,0,50), 1, Color(0,0,0,100))
- if i == 5 then
- draw.text3D("Refill Nitro","font_25",w/2,25/2,Color(255,255,255,255),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER)
- draw.text3D( DarkRP.formatMoney(CAR_DEALER.CFG.NitroRefillCost),"font_25",w - 5,25/2,Color(255,255,255,255),TEXT_ALIGN_RIGHT,TEXT_ALIGN_CENTER)
- elseif i == 1 then
- draw.text3D("Remove Nitro","font_25",w/2,25/2,Color(255,255,255,255),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER)
- draw.text3D( DarkRP.formatMoney(CAR_DEALER.CFG.CustomizerPrices.Nitro[i]),"font_25",w - 5,25/2,Color(255,255,255,255),TEXT_ALIGN_RIGHT,TEXT_ALIGN_CENTER)
- else
- draw.text3D("Nitro level "..i-1,"font_25",w/2,25/2,Color(255,255,255,255),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER)
- draw.text3D( DarkRP.formatMoney(CAR_DEALER.CFG.CustomizerPrices.Nitro[i]),"font_25",w - 5,25/2,Color(255,255,255,255),TEXT_ALIGN_RIGHT,TEXT_ALIGN_CENTER)
- end
- end
- NitroChooseButton_[i].DoClick = function()
- for c=1,vtotalnitros do
- NitroChooseButton_[c].Selected = false
- end
- NitroChooseButton_[i].Selected = true
- if IsValid(vehicle) then
- CAR_DEALER.NitroTab.level = i-1
- end
- end
- end
- self.NitroConfirmButton = vgui.Create("DButton", self.NitroTab)
- self.NitroConfirmButton:SetSize(self.NitroTab:GetWide(), 80)
- self.NitroConfirmButton:SetPos(0, self.NitroTab:GetTall() - 80)
- self.NitroConfirmButton:SetText("")
- function self.NitroConfirmButton:Paint(w, h)
- draw.OutlinedRect(0,0, w, h, self:IsHovered() and Color(180,30,30,210) or Color(180,30,30,100), 1, Color(0,0,0,100))
- draw.text3D("Add To Cart", "BFHUD.Size40", w/2, h/4, Color(255,255,255) , TEXT_ALIGN_CENTER, TEXT_ALIGN_TOP )
- end
- function self.NitroConfirmButton:DoClick()
- for k, v in pairs( CAR_DEALER.BG_CART.Items ) do
- if v.type == "nitro" then return end
- end
- table.insert( CAR_DEALER.BG_CART.Items,
- {
- type = "nitro",
- data = {
- nitro = CAR_DEALER.NitroTab.level
- }
- }
- )
- RefreshScroll_Cart()
- end
- end
- local function ButtonDashboard()
- if not CAR_DEALER.BG:IsValid() then return end
- if IsValid(CAR_DEALER.DashboardScrollPanel) then CAR_DEALER.DashboardScrollPanel:Remove() end
- self.DashboardScrollPanel = vgui.Create("DScrollPanel", self.BG)
- self.DashboardScrollPanel:SetSize(self.BG:GetWide(), self.BG:GetTall() - 31 - SIZES.header )
- self.DashboardScrollPanel:SetPos(0, 30 + SIZES.header)
- for i=1,#categories do
- self.DashboardCategoryButton = self.DashboardScrollPanel:Add("DButton")
- self.DashboardCategoryButton:SetSize( self.BG:GetWide(), 50 )
- self.DashboardCategoryButton:SetPos(0,-50 + (50*i) - (1*i))
- --[[
- self.DashboardCategoryButton:SetFont("font_20")
- self.DashboardCategoryButton:SetTextColor( Color(255,255,255,255) )
- self.DashboardCategoryButton:SetText( categories[i] )
- ]]
- self.DashboardCategoryButton:SetText( "" )
- function self.DashboardCategoryButton:Paint( w, h )
- draw.OutlinedRect(0,0, w, h, self:IsHovered() and Color(0,0,0,100) or Color(0,0,0,50), 1, Color(0,0,0,100))
- draw.text3D(">","font_25",w - 20,25/2,Color(255,255,255,255),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER)
- draw.text3D(categories[i],"font_25",w/2,25/2,Color(255,255,255,255),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER)
- end
- function self.DashboardCategoryButton:DoClick()
- CAR_DEALER.BG.Title = categories[i]
- CAR_DEALER.BackButton:SetVisible(true)
- CAR_DEALER.DashboardScrollPanel:Remove()
- if categories[i] == "Paint" then
- ColorButton()
- elseif categories[i] == "Skin" then
- SkinButton()
- elseif categories[i] == "BodyGroups" then
- BodygroupsButton()
- elseif categories[i] == "Underglow" then
- UnderglowButton()
- elseif categories[i] == "Nitro" then
- NitroButton()
- end
- end
- end
- end
- ButtonDashboard()
- function self.BackButton:DoClick()
- if self.Bodygroups then
- BodygroupsButton()
- CAR_DEALER.BG.Title = "BodyGroups"
- CAR_DEALER.BodygroupsTabExtra:Remove()
- self.Bodygroups = false
- --self:SetVisible(false)
- else
- CAR_DEALER.BG.Title = ""
- self:SetVisible(false)
- if IsValid(CAR_DEALER.ColorTab) then
- CAR_DEALER.ColorTab:SetVisible(false)
- end
- if IsValid(CAR_DEALER.SkinTab) then
- CAR_DEALER.SkinTab:SetVisible(false)
- end
- if IsValid(CAR_DEALER.BodygroupsTab) then
- CAR_DEALER.BodygroupsTab:Remove()
- end
- if IsValid(CAR_DEALER.BodygroupsTab) then
- CAR_DEALER.BodygroupsTab:Remove()
- end
- if IsValid(CAR_DEALER.UnderglowTab) then
- CAR_DEALER.BG:SetSize(400, 600)
- CAR_DEALER.UnderglowTab:Remove()
- end
- if IsValid(CAR_DEALER.NitroTab) then
- CAR_DEALER.NitroTab:Remove()
- end
- ButtonDashboard()
- end
- end
- --[[
- timer.Simple(30,function()
- if self.BG:IsValid() then
- self.BG:Remove()
- end
- if self.BG_CART:IsValid() then
- self.BG_CART:Remove()
- end
- end)]]
- end
- CAR_DEALER:OpenVehicleCustomizer(nil)
- hook.Add( "KeyPress", "RGCarDealerToggleCursor", function( ply, key )
- if( key == IN_JUMP
- and LocalPlayer().RGCursorStatus
- and ply == LocalPlayer()
- and LocalPlayer().RGCursorCheck < CurTime() ) then
- LocalPlayer().RGCursor = !LocalPlayer().RGCursor
- gui.EnableScreenClicker( LocalPlayer().RGCursor )
- LocalPlayer().RGCursorCheck = CurTime() + 0.25
- end
- end )
- g_lightVehicles = g_lightVehicles or {}
- hook.Add( "OnEntityCreated", "RGCarDealerRegisterUnderlights", function( ent )
- if not IsValid( ent ) then return end
- if not ent:IsVehicle() then return end
- --table.insert( lightVehicles, ent )
- g_lightVehicles[ent] = true
- ent:SetNWBool( "RG_VEH_TOGGLEUNDERGLOW", true )
- end )
- local lastGlowPress = 0
- hook.Add( "Tick", "RGCarDealerToggleUnderLights", function()
- if input.IsKeyDown( CAR_DEALER.CFG.ToggleUnderglowKey ) then
- if not IsValid( LocalPlayer():GetVehicle() ) then return end
- if LocalPlayer():GetVehicle():GetClass() ~= "prop_vehicle_jeep" then return end
- if vgui.CursorVisible() then return end
- if lastGlowPress > CurTime() then return end
- lastGlowPress = CurTime() + 0.5
- RunConsoleCommand( "RG_VEH_TOGGLEUNDERGLOW" )
- end
- end )
- hook.Add( "Think", "RGCarDealerUnderLights", function()
- local curTime, lightDieTime = CurTime(), FrameTime() *6
- local lightDecay, lightBrightness, lightSize = 1000 *lightDieTime, 6, 96
- for veh, k in pairs( g_lightVehicles ) do
- if IsValid(veh) and veh:IsVehicle() then
- if veh:GetNWBool( "RG_VEH_UNDERLIGHTS", false ) and isvector(veh:GetNWVector( "RG_VEH_UNDERLIGHTS_COLOR" )) then
- if !veh:GetNWBool( "RG_VEH_TOGGLEUNDERGLOW" ) then continue end
- if veh:GetPos():DistToSqr( LocalPlayer():GetPos() ) > 1500^2 then continue end
- veh:DrawShadow( false )
- veh:DestroyShadow()
- local up = veh:GetUp()
- local right = veh:GetRight()
- if( !veh.RGUnderglowData ) then
- local center = veh:OBBCenter()
- local mins = veh:OBBMins()
- local maxs = veh:OBBMaxs()
- veh.RGUnderglowData = {
- center = center,
- sizeCenter = maxs.x,
- distToFront = center:Distance( Vector( mins.x, mins.y , center.z ) / 2 ),
- distToBack = center:Distance( Vector( maxs.x, maxs.y, center.z ) / 2 ),
- distToUnder = center:Distance( Vector( 0, 0, mins.z ) ) / 2,
- }
- veh.RGUnderglowFunc = {
- function()
- return veh:LocalToWorld( veh.RGUnderglowData.center ) + up * -veh.RGUnderglowData.distToUnder
- end,
- function()
- return veh:LocalToWorld( veh.RGUnderglowData.center ) + veh:GetRight() * -( veh.RGUnderglowData.distToFront - 20 ) + veh:GetUp() * -veh.RGUnderglowData.distToUnder
- end,
- function()
- return veh:LocalToWorld( veh.RGUnderglowData.center ) + veh:GetRight() * -( veh.RGUnderglowData.distToFront - 25 ) + veh:GetUp() * -veh.RGUnderglowData.distToUnder
- end,
- function()
- return veh:LocalToWorld( veh.RGUnderglowData.center ) + veh:GetRight() * ( veh.RGUnderglowData.distToBack - 10 ) + veh:GetUp() * veh.RGUnderglowData.distToUnder
- end,
- function()
- return veh:LocalToWorld( veh.RGUnderglowData.center ) + veh:GetRight() * ( veh.RGUnderglowData.distToBack - 15 ) + veh:GetUp() * -veh.RGUnderglowData.distToUnder
- end,
- }
- end
- local color = veh:GetNWVector( "RG_VEH_UNDERLIGHTS_COLOR", Vector( 255, 255, 255, 255 ) ) -- Vector( 255, 0, 0, 255 )
- if( type( color ) != "Vector" ) then return end
- color = Vector( color.r, color.g, color.b, 255 )
- for i, v in pairs( veh.RGUnderglowFunc ) do
- local light = DynamicLight( veh:EntIndex() + i )
- light.pos = v()
- light.nomodel = true
- light.brightness = lightBrightness
- light.Decay = 1000
- light.Size = lightSize
- light.DieTime = curTime +lightDieTime
- light.r, light.g, light.b = color.x, color.y, color.z
- end
- end
- end
- end
- end )
- local blur = Material("pp/blurscreen")
- function drawBlurRect(x, y, w, h, layers, density, alpha)
- surface.SetDrawColor(255, 255, 255, alpha)
- surface.SetMaterial(blur)
- for i = 1, 3 do
- blur:SetFloat("$blur", (i / layers) * density)
- blur:Recompute()
- render.UpdateScreenEffectTexture()
- render.SetScissorRect(x, y, x+w, y+h, true)
- surface.DrawTexturedRect(0 * -1, 0 * -1, ScrW(), ScrH())
- render.SetScissorRect(0, 0, 0, 0, false)
- end
- end
- local maxNitro = 80
- local lastNitro = 150
- local NitroAprog = 0
- local NitroProg
- hook.Add( "HUDPaint", "RG_VEHICLE_NITRO_DRAW", function()
- if not IsValid(LocalPlayer():GetVehicle()) then return end
- print(LocalPlayer():GetVehicle():GetNWFloat("RG_VEH_NITRO",0))
- if LocalPlayer():GetVehicle():GetNWFloat("RG_VEH_NITRO",0) < 1 then return end
- if LocalPlayer():GetVehicle():RG_CAR_GETNITRO() < 1 then return end
- --print("RG_CAR_GETNITRO",LocalPlayer():Health())
- local width, height = 400, 100
- local width2, height2 = 350, 30
- drawBlurRect( ScrW()/2 - width/2, ScrH() - height - 20, width, height, 3, 3, 255 )
- draw.OutlinedRect( ScrW()/2 - width/2, ScrH() - height - 20, width, height, Color(0,0,0,100), 1, Color(0,0,0,200))
- draw.text3D("Nitro Bar", "BFHUD.Size40", ScrW()/2, ScrH() - height - 20, Color(255,255,255) , TEXT_ALIGN_CENTER, TEXT_ALIGN_TOP )
- maxNitro = LocalPlayer():GetVehicle():RG_CAR_GETNITROLEVEL()*10
- draw.OutlinedRect( ScrW()/2 - width2/2, ScrH() - height2 - 20 - 20, width2, height2, Color(0,0,0,100), 1, Color(0,0,0,200))
- NitroProg = LocalPlayer():GetVehicle():RG_CAR_GETNITRO() / maxNitro
- lastNitro = LocalPlayer():GetVehicle():RG_CAR_GETNITRO()
- NitroAprog = Lerp(FrameTime()*10, NitroAprog, NitroProg)
- draw.RoundedBox(0,ScrW()/2 - width2/2 + 1, ScrH() - height2 - 20 - 20 + 1, (width2 - 2)*(math.Clamp(NitroAprog or 0, 0, 1)), height2 - 2,Color(255,50,50,255))
- end )
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement