Advertisement
Guest User

Untitled

a guest
Sep 16th, 2019
187
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 86.12 KB | None | 0 0
  1.  
  2. if !CAR_DEALER then return end
  3.  
  4.  
  5. if !CLIENT then return end
  6.  
  7.  
  8. local function CreateFont( i, Font, Name, Weight )
  9.  
  10. local CurSize = i
  11.  
  12.  
  13. surface.CreateFont( Name .. CurSize, {
  14. font = Font,
  15. size = CurSize,
  16. weight = Weight,
  17. blursize = 0,
  18. scanlines = 0,
  19. antialias = true,
  20. underline = false,
  21. italic = false,
  22. strikeout = false,
  23. symbol = false,
  24. rotary = false,
  25. shadow = false,
  26. additive = false,
  27. outline = false,
  28. } )
  29.  
  30. end
  31.  
  32. for i=1,100 do
  33.  
  34. CreateFont( i, "BFHud", "font_", 500 )
  35.  
  36. end
  37.  
  38.  
  39.  
  40. /*
  41.  
  42.  
  43. Notes: Purchase/Spawn button think function
  44.  
  45.  
  46. */
  47.  
  48.  
  49.  
  50.  
  51.  
  52. local SIZES = {
  53.  
  54.  
  55. bg_x = 620,
  56.  
  57.  
  58. bg_y = 700,
  59.  
  60.  
  61. close_button = 30,
  62.  
  63.  
  64. header = 50,
  65.  
  66.  
  67. vehicle_bg = 310,
  68.  
  69.  
  70. vehicle_buybutton = 30,
  71.  
  72.  
  73. page_buttons_x = 80,
  74.  
  75.  
  76. page_buttons_y = 25,
  77.  
  78.  
  79.  
  80.  
  81.  
  82. return_button_y = 100
  83.  
  84.  
  85. }
  86.  
  87.  
  88.  
  89.  
  90.  
  91. local function FixModelpos(mdl)
  92.  
  93.  
  94. if !mdl then return end
  95.  
  96.  
  97.  
  98.  
  99.  
  100. local mn, mx = mdl.Entity:GetRenderBounds()
  101.  
  102.  
  103. local size = 0
  104.  
  105.  
  106. size = math.max( size, math.abs(mn.x) + math.abs(mx.x) )
  107.  
  108.  
  109. size = math.max( size, math.abs(mn.y) + math.abs(mx.y) )
  110.  
  111.  
  112. size = math.max( size, math.abs(mn.z) + math.abs(mx.z) )
  113.  
  114.  
  115. mdl:SetFOV( 60 )
  116.  
  117.  
  118. mdl:SetCamPos( Vector( size, size, size ) )
  119.  
  120.  
  121. mdl:SetLookAt( (mn + mx) * 0.5 )
  122.  
  123.  
  124. end
  125.  
  126.  
  127. local function ApplyVehicleCustomizations( mdl, veh )
  128.  
  129. if !mdl then return end
  130.  
  131.  
  132.  
  133. end
  134.  
  135.  
  136. local HideDarkRPHUD = {
  137. ["DarkRP_HUD"] = false,
  138. }
  139.  
  140. hook.Add("HUDShouldDraw", "HideDefaultShitMyGuy", function(name)
  141. if HideDarkRPHUD[name] then return false end
  142. end )
  143.  
  144.  
  145. function CAR_DEALER:OpenVehicleShop(car_dealer)
  146.  
  147.  
  148. if IsValid(self.BG) then
  149. self.BG:Remove()
  150. hook.Remove("CalcView","RG_CAR_MODELPREVIEW")
  151. if RG_CAR_PREVIEWMODEL then
  152. RG_CAR_PREVIEWMODEL:Remove()
  153. end
  154. HideDarkRPHUD["DarkRP_HUD"] = false
  155. end
  156.  
  157.  
  158.  
  159.  
  160.  
  161. local VehiclesList = self:GetAllVehicles()
  162.  
  163. --for _, veh in pairs( VehiclesList ) do
  164. -- util.PrecacheModel( self:GetVehicle(veh.class).Model )
  165. --end
  166.  
  167.  
  168.  
  169. self.BG = vgui.Create("DPanel")
  170. self.BG:SetSize(ScrW(), ScrH())
  171. self.BG:SetPos(0,0)
  172. self.BG:MakePopup()
  173. function self.BG:OnRemove()
  174.  
  175. hook.Remove("CalcView","RG_CAR_MODELPREVIEW")
  176. if RG_CAR_PREVIEWMODEL then
  177. RG_CAR_PREVIEWMODEL:Remove()
  178. end
  179.  
  180. end
  181. HideDarkRPHUD["DarkRP_HUD"] = true
  182.  
  183. function self.BG:Think()
  184.  
  185.  
  186. if !IsValid(car_dealer) then self:Remove() end
  187.  
  188.  
  189. end
  190.  
  191.  
  192. function self.BG:Paint(w, h)
  193.  
  194.  
  195. --JohnnyBlur(self,3,3)
  196.  
  197.  
  198. --draw.OutlinedRect(0,00, w, h, Color(0,0,0,150), 1, Color(0,0,0,100))
  199.  
  200.  
  201.  
  202.  
  203.  
  204. --draw.text3D(CurrentPage.."/"..MaxPages, "BFHUD.Size20", w/2, h-25, Color(255,255,255) , TEXT_ALIGN_CENTER, TEXT_ALIGN_TOP )
  205.  
  206.  
  207. end
  208.  
  209. self.CarListBase = vgui.Create("DPanel", self.BG)
  210. self.CarStatsBase = vgui.Create("DPanel", self.BG)
  211. self.CarModelBase = vgui.Create("DPanel", self.BG)
  212. self.CarModelBase:SetVisible(false)
  213. self.CarModelBase.Vehicle = VehiclesList[1]
  214. self.CarModelBase.VehicleModel = CAR_DEALER:GetVehicle(VehiclesList[1].class).Model
  215. ModelDisplay = vgui.Create( 'DModelPanel', self.CarModelBase )
  216. self.CarStatsBase.Vehicle = VehiclesList[1]["levels"] or { speed = 50, acceleration = 50, braking = 50, traction = 50 }
  217. self.CarListBase:SetPos(20,20)
  218. self.CarListBase:SetSize(500,self.BG:GetTall() - 20 - 196 - 20 - 5)
  219. function self.CarListBase:Paint(w,h)
  220. JohnnyBlur(self,3,3)
  221.  
  222. draw.OutlinedRect(0, 0, w, 50 - 0, Color(0,0,0,150), 1, Color(0,0,0,100))
  223.  
  224. --surface.SetDrawColor(180,30,30,200)
  225. --surface.DrawRect(0,0,w,50)
  226.  
  227. draw.OutlinedRect(0, 0 + 50, w, h - 50, Color(0,0,0,100), 1, Color(0,0,0,100))
  228.  
  229.  
  230. draw.text3D("Car Dealer", "BFHUD.Size50", w/2, 50/2 - 25, Color(255,255,255) , TEXT_ALIGN_CENTER, TEXT_ALIGN_CENTER )
  231.  
  232. end
  233.  
  234. self.CloseButton = vgui.Create("DButton", self.CarListBase)
  235. self.CloseButton:SetSize(80, 25)
  236. self.CloseButton:SetPos(self.CarListBase:GetWide() - 80 - 5, 5)
  237. self.CloseButton:SetText("")
  238. function self.CloseButton:DoClick()
  239. CAR_DEALER.BG:Remove()
  240. HideDarkRPHUD["DarkRP_HUD"] = false
  241. hook.Remove("CalcView","RG_CAR_MODELPREVIEW")
  242. if RG_CAR_PREVIEWMODEL then
  243. RG_CAR_PREVIEWMODEL:Remove()
  244. end
  245. end
  246. function self.CloseButton:Paint(w, h)
  247.  
  248. 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))
  249.  
  250. draw.text3D("Close", "BFHUD.Size20", w/2, 0, Color(255,0,0) , TEXT_ALIGN_CENTER, TEXT_ALIGN_CENTER )
  251.  
  252. end
  253.  
  254.  
  255. hook.Remove("CalcView","RG_CAR_MODELPREVIEW")
  256. hook.Add("CalcView","RG_CAR_MODELPREVIEW", function( ply, origin, angles, fov )
  257. local view = {}
  258.  
  259. view.origin = car_dealer:GetPos() + (car_dealer:GetUp()*150) - (car_dealer:GetRight()*200) + (car_dealer:GetForward()*250) -- + Vector(-200,250,150)
  260. view.angles = car_dealer:LocalToWorldAngles(Angle(30,-110,0)) -- Angle(30,-30,0)
  261. view.fov = fov
  262. view.drawviewer = true
  263.  
  264. return view
  265. end)
  266.  
  267.  
  268. if RG_CAR_PREVIEWMODEL then
  269. RG_CAR_PREVIEWMODEL:Remove()
  270. end
  271.  
  272.  
  273. RG_CAR_PREVIEWMODEL = ClientsideModel(self.CarModelBase.VehicleModel,RENDER_GROUP_VIEW_MODEL_OPAQUE)
  274. RG_CAR_PREVIEWMODEL:SetNoDraw(false)
  275.  
  276. RG_CAR_PREVIEWMODEL:SetRenderOrigin(car_dealer:GetPos() + (car_dealer:GetForward()*175))
  277. RG_CAR_PREVIEWMODEL:SetRenderAngles(car_dealer:LocalToWorldAngles(Angle(0,0,0)))
  278.  
  279.  
  280.  
  281.  
  282.  
  283. self.ScrollPanel = vgui.Create("DPanelList", self.CarListBase)
  284. self.ScrollPanel:SetSize(self.CarListBase:GetWide(), self.CarListBase:GetTall() - 50 )
  285. self.ScrollPanel:SetSpacing( 5 )
  286. self.ScrollPanel:SetPos(0, 50)
  287. self.ScrollPanel:EnableVerticalScrollbar( true )
  288. self.ScrollPanel.VBar.Paint = function( s, w, h )
  289. draw.RoundedBox( 0, 0, 0, w, h, Color( 0, 0, 0, 100 ) )
  290. end
  291. self.ScrollPanel.VBar.btnUp.Paint = function( s, w, h )
  292. draw.OutlinedRect(0, 0, w, h, Color(100,100,100,20), 1, Color(0,0,0,256))
  293. draw.DrawText("^", "BFHUD.Size20", w/2, 0 ,Color( 0,0,0,256 ), TEXT_ALIGN_CENTER)
  294. end
  295. self.ScrollPanel.VBar.btnDown.Paint = function( s, w, h )
  296. draw.OutlinedRect(0, 0, w, h, Color(100,100,100,20), 1, Color(0,0,0,256))
  297. draw.DrawText("v", "BFHUD.Size20", w/2, -4 ,Color( 0,0,0,256 ), TEXT_ALIGN_CENTER)
  298. end
  299. self.ScrollPanel.VBar.btnGrip.Paint = function( s, w, h )
  300. draw.OutlinedRect(0, 0, w, h, Color(100,100,100,20), 1, Color(0,0,0,256))
  301. end
  302.  
  303.  
  304. local function VehiclePurchaseConfirm(veh, vehicleowned, sell)
  305.  
  306. local VehicleData = self:GetVehicle(veh.class)
  307. if !VehicleData then return end
  308.  
  309. --PrintTable(veh)
  310.  
  311. VehicleBG = vgui.Create("DPanel", self.BG)
  312. VehicleBG:SetSize( 480, 150 )
  313. VehicleBG:Center()
  314. function VehicleBG:Paint( w, h )
  315.  
  316. draw.OutlinedRect( 0, 0, w, h, Color(0,0,0,210), 1, Color(0,0,0,220))
  317.  
  318. end
  319.  
  320.  
  321. local VehicleBG_Label = vgui.Create( "DLabel", VehicleBG )
  322. VehicleBG_Label:SetPos(5, 5)
  323. VehicleBG_Label:SetSize(VehicleBG:GetWide(), VehicleBG:GetTall())
  324. VehicleBG_Label:SetFont("BFHUD.Size30")
  325. VehicleBG_Label:SetColor( Color( 255, 255, 255, 255 ) )
  326. local text1 = ""
  327. local text2 = ""
  328. if sell then
  329. text1 = "sell your"
  330. text2 = " for "..DarkRP.formatMoney(veh.price*CAR_DEALER.CFG.SellingMultiplier)
  331. else
  332. text1 = vehicleowned and "spawn" or "purchase"
  333. text2 = vehicleowned and "" or (" for "..DarkRP.formatMoney(veh.price))
  334. end
  335. VehicleBG_Label:SetText( "Are you sure you would like to "..text1.." "..VehicleData.Name..text2.."?" )
  336. VehicleBG_Label:SetContentAlignment(7)
  337. VehicleBG_Label:SetWrap(true)
  338.  
  339.  
  340.  
  341. local VehCloseButton = vgui.Create("DButton", VehicleBG)
  342. VehCloseButton:SetSize(30, 30)
  343. VehCloseButton:SetPos(VehicleBG:GetWide() - SIZES.close_button, 0)
  344. VehCloseButton:SetText("")
  345. function VehCloseButton:DoClick()
  346. VehicleBG:Remove()
  347. end
  348. function VehCloseButton:Paint(w, h)
  349.  
  350. 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))
  351.  
  352. draw.text3D("X", "BFHUD.Size30", w/2, -2, Color(255,255,255) , TEXT_ALIGN_CENTER, TEXT_ALIGN_TOP )
  353.  
  354. end
  355.  
  356.  
  357.  
  358. local VehicleBGYes = vgui.Create( "DButton", VehicleBG )
  359. VehicleBGYes:SetSize( 80, 40 )
  360. VehicleBGYes:SetPos( VehicleBG:GetWide()/2 - VehicleBGYes:GetWide() - 5, VehicleBG:GetTall() - VehicleBGYes:GetTall() - 10 )
  361. VehicleBGYes:SetText("")
  362. function VehicleBGYes:DoClick()
  363. if sell then
  364. net.Start("RG:Sell_Vehicle")
  365. net.WriteTable(veh)
  366. net.SendToServer()
  367. CAR_DEALER.BG:Remove()
  368. HideDarkRPHUD["DarkRP_HUD"] = false
  369. if RG_CAR_PREVIEWMODEL then
  370. RG_CAR_PREVIEWMODEL:Remove()
  371. end
  372. --CAR_DEALER:OpenVehicleShop(car_dealer)
  373. else
  374. if vehicleowned then
  375. net.Start("RG:SpawnVehicle")
  376. net.WriteString(veh.class)
  377. net.WriteEntity(car_dealer)
  378. net.SendToServer()
  379. CAR_DEALER.BG:Remove()
  380. HideDarkRPHUD["DarkRP_HUD"] = false
  381. if RG_CAR_PREVIEWMODEL then
  382. RG_CAR_PREVIEWMODEL:Remove()
  383. end
  384. else
  385. net.Start("RG:PurchaseVehicle")
  386. net.WriteString(veh.class)
  387. net.SendToServer()
  388. CAR_DEALER.BG:Remove()
  389. HideDarkRPHUD["DarkRP_HUD"] = false
  390. if RG_CAR_PREVIEWMODEL then
  391. RG_CAR_PREVIEWMODEL:Remove()
  392. end
  393. --CAR_DEALER:OpenVehicleShop(car_dealer)
  394.  
  395. end
  396. end
  397.  
  398. end
  399. function VehicleBGYes:Paint( w, h )
  400.  
  401. 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))
  402.  
  403. draw.text3D("Yes", "BFHUD.Size30", w/2, h/8, Color(255,255,255) , TEXT_ALIGN_CENTER, TEXT_ALIGN_CENTER )
  404.  
  405. end
  406.  
  407.  
  408.  
  409. local VehicleBGNo = vgui.Create( "DButton", VehicleBG )
  410. VehicleBGNo:SetSize( 80, 40 )
  411. VehicleBGNo:SetPos( VehicleBG:GetWide()/2 + 5, VehicleBG:GetTall() - VehicleBGNo:GetTall() - 10 )
  412. VehicleBGNo:SetText("")
  413. function VehicleBGNo:DoClick()
  414. VehicleBG:Remove()
  415. end
  416. function VehicleBGNo:Paint( w, h )
  417.  
  418. 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))
  419.  
  420. draw.text3D("No", "BFHUD.Size30", w/2, h/8, Color(255,255,255) , TEXT_ALIGN_CENTER, TEXT_ALIGN_CENTER )
  421.  
  422. end
  423.  
  424.  
  425. end
  426.  
  427. local VehiclesList_owned = {}
  428. local VehiclesList_unowned = {}
  429.  
  430. for k, veh in pairs(VehiclesList) do
  431. if CAR_DEALER:OwnsVehicle(LocalPlayer(), veh.class) then
  432. table.insert(VehiclesList_owned,veh)
  433. else
  434. table.insert(VehiclesList_unowned,veh)
  435. end
  436. end
  437.  
  438. print("printing owned vehicles")
  439. PrintTable(VehiclesList_owned)
  440.  
  441. print("printing unowned vehicles")
  442. PrintTable(VehiclesList_unowned)
  443.  
  444.  
  445. local VehicleBGOwned_ = {}
  446. local VehicleBGUnowned_ = {}
  447.  
  448.  
  449.  
  450. self.Owned_categoryFrame = vgui.Create( "DCollapsibleCategory", self.ScrollPanel )
  451. self.Owned_categoryFrame:SetWide( self.ScrollPanel:GetWide() )
  452. self.Owned_categoryFrame.Header:SetTall(30)
  453. --self.Owned_categoryFrame:SetPos( 0, -40 + (40*k) - (1*k) )
  454. self.Owned_categoryFrame:SetExpanded( true )
  455. self.Owned_categoryFrame:SetLabel("")
  456. self.Owned_categoryFrame.Paint = function() end
  457. self.Owned_categoryFrame.PaintOver = function( self, w, h )
  458. draw.OutlinedRect(0,0, w, 30, Color(50,255,50,100), 1, Color(0,0,0,150))
  459.  
  460. draw.text3D("Owned", "BFHUD.Size30", 5, 0, Color(255,255,255), TEXT_ALIGN_LEFT, TEXT_ALIGN_CENTER )
  461. draw.text3D(self:GetExpanded() and "▼" or !self:GetExpanded() and "▲", "BFHUD.Size30", w - 10, 0, Color(255,255,255), TEXT_ALIGN_RIGHT, TEXT_ALIGN_CENTER )
  462. end
  463.  
  464. self.Owned_categoryFrame_list = vgui.Create( "DPanelList", self.Owned_categoryFrame )
  465. self.Owned_categoryFrame_list:SetWide( self.Owned_categoryFrame:GetWide() )
  466. self.Owned_categoryFrame_list:SetAutoSize( true )
  467. self.Owned_categoryFrame_list:SetSpacing( -1 )
  468. self.Owned_categoryFrame_list:SetPos( 0, 29 )
  469. self.Owned_categoryFrame_list:EnableVerticalScrollbar( false )
  470. self.Owned_categoryFrame_list.Paint = function( s, w, h )
  471. end
  472.  
  473.  
  474. for k, veh in pairs(VehiclesList_owned) do
  475. local VehicleData = self:GetVehicle(veh.class)
  476. if !VehicleData then continue end
  477.  
  478.  
  479. VehicleBGOwned_[k] = self.ScrollPanel:Add("DPanel")
  480. VehicleBGOwned_[k]:SetSize(self.ScrollPanel:GetWide()-13,40)
  481. VehicleBGOwned_[k]:SetPos( 0, -40 + (40*k) - (1*k) )
  482. VehicleBGOwned_[k].OwnsVehicle = CAR_DEALER:OwnsVehicle(LocalPlayer(), veh.class) or false
  483.  
  484. VehicleBGOwned_[k].Paint = function( self, w, h ) end
  485.  
  486. local VehicleBG_Button = VehicleBGOwned_[k]:Add("DButton")
  487. VehicleBG_Button:SetPos( 0, 0 )
  488. VehicleBG_Button:SetSize( VehicleBGOwned_[k]:GetWide(), VehicleBGOwned_[k]:GetTall() )
  489. VehicleBG_Button:SetText("")
  490.  
  491. if !LocalPlayer():canAfford(veh.price) and !VehicleBGOwned_[k].OwnsVehicle then
  492. VehicleBG_Button:SetDisabled(true)
  493. end
  494. local clr = Color(0,0,0)
  495. function VehicleBG_Button:Paint( w, h )
  496. clr = Color(0,0,0,100)
  497. if !LocalPlayer():canAfford(veh.price) and !VehicleBGOwned_[k].OwnsVehicle then
  498. clr = Color(255,50,50,50)
  499. end
  500. 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))
  501. 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 )
  502. if self:IsHovered() then
  503. 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 )
  504. end
  505. 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 )
  506.  
  507.  
  508. end
  509. function VehicleBG_Button:DoClick()
  510.  
  511. VehiclePurchaseConfirm( veh, VehicleBGOwned_[k].OwnsVehicle, false )
  512.  
  513. end
  514. VehicleBG_Button.OnCursorEntered = function( self )
  515. CAR_DEALER.CarStatsBase.Vehicle = veh.levels or { speed = 50, acceleration = 50, braking = 50, traction = 50 }
  516. if IsValid(ModelDisplay) then
  517. ModelDisplay:SetModel( CAR_DEALER:GetVehicle(veh.class).Model )
  518. FixModelpos(ModelDisplay)
  519. --ApplyVehicleCustomizations(ModelDisplay, veh)
  520. end
  521. CAR_DEALER.CarModelBase.Vehicle = veh or VehiclesList[1]
  522. CAR_DEALER.CarModelBase.VehicleModel = CAR_DEALER:GetVehicle(veh.class).Model or "models/tdmcars/minicooper_offroad.mdl"
  523. RG_CAR_PREVIEWMODEL:SetModel(CAR_DEALER.CarModelBase.VehicleModel)
  524. RefreshStats(CAR_DEALER.CarStatsBase.Vehicle)
  525. end
  526.  
  527.  
  528.  
  529. local VehicleBG_Icon = VehicleBGOwned_[k]:Add("SpawnIcon")
  530. VehicleBG_Icon:SetPos(0,0)
  531. VehicleBG_Icon:SetSize(40,40)
  532. VehicleBG_Icon:SetModel( VehicleData.Model )
  533. VehicleBG_Icon:SetToolTip(false)
  534. VehicleBG_Icon:SetMouseInputEnabled(false)
  535. function VehicleBG_Icon:PaintOver(w,h)
  536. surface.SetDrawColor(0,0,0,100)
  537. surface.DrawLine(w-1,0,w-1,h)
  538. end
  539.  
  540.  
  541. local VehicleBG_Button_Sell = VehicleBG_Button:Add("DButton")
  542. VehicleBG_Button_Sell:SetSize( 60, 30 )
  543. VehicleBG_Button_Sell:SetPos( VehicleBG_Button:GetWide() - VehicleBG_Button_Sell:GetWide() - 5, VehicleBG_Icon:GetTall()/2 - VehicleBG_Button_Sell:GetTall()/2 )
  544. VehicleBG_Button_Sell:SetText("")
  545. if VehicleBGOwned_[k].OwnsVehicle then
  546. VehicleBG_Button_Sell:SetVisible(true)
  547. else
  548. VehicleBG_Button_Sell:SetVisible(false)
  549. end
  550. function VehicleBG_Button_Sell:Paint( w, h )
  551. 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))
  552. draw.text3D( "SELL", "BFHUD.Size20", w/2, h/8, Color(255,255,255), TEXT_ALIGN_CENTER, TEXT_ALIGN_CENTER )
  553. end
  554. function VehicleBG_Button_Sell:DoClick()
  555. VehiclePurchaseConfirm( veh, VehicleBGOwned_[k].OwnsVehicle, true )
  556. end
  557. self.Owned_categoryFrame_list:AddItem( VehicleBGOwned_[k] )
  558. end
  559. self.ScrollPanel:AddItem( self.Owned_categoryFrame )
  560.  
  561.  
  562.  
  563.  
  564. self.Unowned_categoryFrame = vgui.Create( "DCollapsibleCategory", self.ScrollPanel )
  565. self.Unowned_categoryFrame:SetWide( self.ScrollPanel:GetWide() )
  566. self.Unowned_categoryFrame.Header:SetTall(30)
  567. --self.Unowned_categoryFrame:SetPos( 0, -40 + (40*k) - (1*k) )
  568. self.Unowned_categoryFrame:SetExpanded( true )
  569. self.Unowned_categoryFrame:SetLabel("")
  570. self.Unowned_categoryFrame.Paint = function() end
  571. self.Unowned_categoryFrame.PaintOver = function( self, w, h )
  572. draw.OutlinedRect(0,0, w, 30, Color(255,50,50,100), 1, Color(0,0,0,150))
  573.  
  574. draw.text3D("Unowned", "BFHUD.Size30", 5, 0, Color(255,255,255), TEXT_ALIGN_LEFT, TEXT_ALIGN_CENTER )
  575. draw.text3D(self:GetExpanded() and "▼" or !self:GetExpanded() and "▲", "BFHUD.Size30", w - 10, 0, Color(255,255,255), TEXT_ALIGN_RIGHT, TEXT_ALIGN_CENTER )
  576. end
  577.  
  578. self.Unowned_categoryFrame_list = vgui.Create( "DPanelList", self.Unowned_categoryFrame )
  579. self.Unowned_categoryFrame_list:SetWide( self.Unowned_categoryFrame:GetWide() )
  580. self.Unowned_categoryFrame_list:SetAutoSize( true )
  581. self.Unowned_categoryFrame_list:SetSpacing( -1 )
  582. self.Unowned_categoryFrame_list:SetPos( 0, 29 )
  583. self.Unowned_categoryFrame_list:EnableVerticalScrollbar( false )
  584. self.Unowned_categoryFrame_list.Paint = function( s, w, h ) end
  585.  
  586. for k, veh in pairs(VehiclesList_unowned) do
  587. local VehicleData = self:GetVehicle(veh.class)
  588. if !VehicleData then continue end
  589.  
  590.  
  591. VehicleBGUnowned_[k] = self.ScrollPanel:Add("DPanel")
  592. VehicleBGUnowned_[k]:SetSize(self.ScrollPanel:GetWide()-13,40)
  593. VehicleBGUnowned_[k]:SetPos( 0, -40 + (40*k) - (1*k) )
  594. VehicleBGUnowned_[k].OwnsVehicle = CAR_DEALER:OwnsVehicle(LocalPlayer(), veh.class) or false
  595.  
  596. VehicleBGUnowned_[k].Paint = function( self, w, h ) end
  597.  
  598. local VehicleBG_Button = VehicleBGUnowned_[k]:Add("DButton")
  599. VehicleBG_Button:SetPos( 0, 0 )
  600. VehicleBG_Button:SetSize( VehicleBGUnowned_[k]:GetWide(), VehicleBGUnowned_[k]:GetTall() )
  601. VehicleBG_Button:SetText("")
  602.  
  603. if !LocalPlayer():canAfford(veh.price) and !VehicleBGUnowned_[k].OwnsVehicle then
  604. VehicleBG_Button:SetDisabled(true)
  605. end
  606. local clr = Color(0,0,0)
  607. function VehicleBG_Button:Paint( w, h )
  608. clr = Color(0,0,0,100)
  609. if !LocalPlayer():canAfford(veh.price) and !VehicleBGUnowned_[k].OwnsVehicle then
  610. clr = Color(255,50,50,50)
  611. end
  612. 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))
  613. 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 )
  614. if self:IsHovered() then
  615. 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 )
  616. end
  617. 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 )
  618.  
  619.  
  620. end
  621. function VehicleBG_Button:DoClick()
  622.  
  623. VehiclePurchaseConfirm( veh, VehicleBGUnowned_[k].OwnsVehicle, false )
  624.  
  625. end
  626. VehicleBG_Button.OnCursorEntered = function( self )
  627. CAR_DEALER.CarStatsBase.Vehicle = veh.levels or { speed = 50, acceleration = 50, braking = 50, traction = 50 }
  628. if IsValid(ModelDisplay) then
  629. ModelDisplay:SetModel( CAR_DEALER:GetVehicle(veh.class).Model )
  630. FixModelpos(ModelDisplay)
  631. --ApplyVehicleCustomizations(ModelDisplay, veh)
  632. end
  633. CAR_DEALER.CarModelBase.Vehicle = veh or VehiclesList[1]
  634. CAR_DEALER.CarModelBase.VehicleModel = CAR_DEALER:GetVehicle(veh.class).Model or "models/tdmcars/minicooper_offroad.mdl"
  635. RG_CAR_PREVIEWMODEL:SetModel(CAR_DEALER.CarModelBase.VehicleModel)
  636. RefreshStats(CAR_DEALER.CarStatsBase.Vehicle)
  637. end
  638.  
  639.  
  640.  
  641. local VehicleBG_Icon = VehicleBGUnowned_[k]:Add("SpawnIcon")
  642. VehicleBG_Icon:SetPos(0,0)
  643. VehicleBG_Icon:SetSize(40,40)
  644. VehicleBG_Icon:SetModel( VehicleData.Model )
  645. VehicleBG_Icon:SetToolTip(false)
  646. VehicleBG_Icon:SetMouseInputEnabled(false)
  647. function VehicleBG_Icon:PaintOver(w,h)
  648. surface.SetDrawColor(0,0,0,100)
  649. surface.DrawLine(w-1,0,w-1,h)
  650. end
  651.  
  652.  
  653. local VehicleBG_Button_Sell = VehicleBG_Button:Add("DButton")
  654. VehicleBG_Button_Sell:SetSize( 60, 30 )
  655. VehicleBG_Button_Sell:SetPos( VehicleBG_Button:GetWide() - VehicleBG_Button_Sell:GetWide() - 5, VehicleBG_Icon:GetTall()/2 - VehicleBG_Button_Sell:GetTall()/2 )
  656. VehicleBG_Button_Sell:SetText("")
  657. if VehicleBGUnowned_[k].OwnsVehicle then
  658. VehicleBG_Button_Sell:SetVisible(true)
  659. else
  660. VehicleBG_Button_Sell:SetVisible(false)
  661. end
  662. function VehicleBG_Button_Sell:Paint( w, h )
  663. 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))
  664. draw.text3D( "SELL", "BFHUD.Size20", w/2, h/8, Color(255,255,255), TEXT_ALIGN_CENTER, TEXT_ALIGN_CENTER )
  665. end
  666. function VehicleBG_Button_Sell:DoClick()
  667. VehiclePurchaseConfirm( veh, VehicleBGUnowned_[k].OwnsVehicle, true )
  668. end
  669. self.Unowned_categoryFrame_list:AddItem( VehicleBGUnowned_[k] )
  670. end
  671. self.ScrollPanel:AddItem( self.Unowned_categoryFrame )
  672.  
  673.  
  674.  
  675.  
  676. --[[
  677. local VehicleBG_ = {}
  678. for k, veh in pairs(VehiclesList) do
  679.  
  680. local VehicleData = self:GetVehicle(veh.class)
  681. if !VehicleData then continue end
  682.  
  683.  
  684. VehicleBG_[k] = self.ScrollPanel:Add("DPanel")
  685. if table.Count(VehiclesList) > 10 then
  686. VehicleBG_[k]:SetSize(self.ScrollPanel:GetWide() - 15,40)
  687. else
  688. VehicleBG_[k]:SetSize(self.ScrollPanel:GetWide(),40)
  689. end
  690. VehicleBG_[k]:SetPos( 0, -40 + (40*k) - (1*k) )
  691. VehicleBG_[k].OwnsVehicle = CAR_DEALER:OwnsVehicle(LocalPlayer(), veh.class) or false
  692.  
  693. VehicleBG_[k].Paint = function( self, w, h ) end
  694.  
  695. local VehicleBG_Button = VehicleBG_[k]:Add("DButton")
  696. VehicleBG_Button:SetPos( 0, 0 )
  697. VehicleBG_Button:SetSize( VehicleBG_[k]:GetWide(), VehicleBG_[k]:GetTall() )
  698. VehicleBG_Button:SetText("")
  699.  
  700. if !LocalPlayer():canAfford(veh.price) and !VehicleBG_[k].OwnsVehicle then
  701. VehicleBG_Button:SetDisabled(true)
  702. end
  703. local clr = Color(0,0,0)
  704. function VehicleBG_Button:Paint( w, h )
  705. clr = Color(0,0,0,100)
  706. if !LocalPlayer():canAfford(veh.price) and !VehicleBG_[k].OwnsVehicle then
  707. clr = Color(255,50,50,50)
  708. end
  709. 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))
  710. 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 )
  711. if self:IsHovered() then
  712. 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 )
  713. end
  714. 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 )
  715.  
  716.  
  717. end
  718. function VehicleBG_Button:DoClick()
  719.  
  720. VehiclePurchaseConfirm( veh, VehicleBG_[k].OwnsVehicle, false )
  721.  
  722. end
  723. VehicleBG_Button.OnCursorEntered = function( self )
  724. CAR_DEALER.CarStatsBase.Vehicle = veh.levels or { speed = 50, acceleration = 50, braking = 50, traction = 50 }
  725. if IsValid(ModelDisplay) then
  726. ModelDisplay:SetModel( CAR_DEALER:GetVehicle(veh.class).Model )
  727. FixModelpos(ModelDisplay)
  728. --ApplyVehicleCustomizations(ModelDisplay, veh)
  729. end
  730. CAR_DEALER.CarModelBase.Vehicle = veh or VehiclesList[1]
  731. CAR_DEALER.CarModelBase.VehicleModel = CAR_DEALER:GetVehicle(veh.class).Model or "models/tdmcars/minicooper_offroad.mdl"
  732. RG_CAR_PREVIEWMODEL:SetModel(CAR_DEALER.CarModelBase.VehicleModel)
  733. RefreshStats(CAR_DEALER.CarStatsBase.Vehicle)
  734. end
  735.  
  736.  
  737.  
  738. local VehicleBG_Icon = VehicleBG_[k]:Add("SpawnIcon")
  739. VehicleBG_Icon:SetPos(0,0)
  740. VehicleBG_Icon:SetSize(40,40)
  741. VehicleBG_Icon:SetModel( VehicleData.Model )
  742. VehicleBG_Icon:SetToolTip(false)
  743. VehicleBG_Icon:SetMouseInputEnabled(false)
  744. function VehicleBG_Icon:PaintOver(w,h)
  745. surface.SetDrawColor(0,0,0,100)
  746. surface.DrawLine(w-1,0,w-1,h)
  747. end
  748.  
  749.  
  750. local VehicleBG_Button_Sell = VehicleBG_Button:Add("DButton")
  751. VehicleBG_Button_Sell:SetSize( 60, 30 )
  752. VehicleBG_Button_Sell:SetPos( VehicleBG_Button:GetWide() - VehicleBG_Button_Sell:GetWide() - 5, VehicleBG_Icon:GetTall()/2 - VehicleBG_Button_Sell:GetTall()/2 )
  753. VehicleBG_Button_Sell:SetText("")
  754. if VehicleBG_[k].OwnsVehicle then
  755. VehicleBG_Button_Sell:SetVisible(true)
  756. else
  757. VehicleBG_Button_Sell:SetVisible(false)
  758. end
  759. function VehicleBG_Button_Sell:Paint( w, h )
  760. 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))
  761. draw.text3D( "SELL", "BFHUD.Size20", w/2, h/8, Color(255,255,255), TEXT_ALIGN_CENTER, TEXT_ALIGN_CENTER )
  762. end
  763. function VehicleBG_Button_Sell:DoClick()
  764. VehiclePurchaseConfirm( veh, VehicleBG_[k].OwnsVehicle, true )
  765. end
  766.  
  767. end]]
  768.  
  769.  
  770.  
  771.  
  772. self.CarStatsBase:SetSize(500,196)
  773. self.CarStatsBase:SetPos(20,self.BG:GetTall() - self.CarStatsBase:GetTall() - 20)
  774. function self.CarStatsBase:Paint(w,h)
  775. JohnnyBlur(self,3,3)
  776.  
  777. draw.OutlinedRect(0,0, w, h, Color(0,0,0,150), 1, Color(0,0,0,100))
  778.  
  779. --surface.SetDrawColor(180,30,30,200)
  780. --surface.DrawRect(0,0,w,50)
  781.  
  782. --draw.OutlinedRect(0,0 + 30 + 50, w, h - 80, Color(0,0,0,100), 1, Color(0,0,0,100))
  783.  
  784.  
  785. --draw.text3D("Stats", "BFHUD.Size50", w/2, 50/2 - 25, Color(255,255,255) , TEXT_ALIGN_CENTER, TEXT_ALIGN_CENTER )
  786.  
  787. end
  788.  
  789.  
  790.  
  791.  
  792. self.StatsScrollPanel = vgui.Create("DScrollPanel", self.CarStatsBase)
  793. self.StatsScrollPanel:SetSize(self.CarStatsBase:GetWide(), self.CarStatsBase:GetTall() )
  794. self.StatsScrollPanel:SetPos(0, 0)
  795. local function createScrollBar()
  796. local sbar = CAR_DEALER.StatsScrollPanel:GetVBar()
  797. function sbar:Paint( w, h )
  798. draw.RoundedBox( 0, 0, 0, w, h, Color( 0, 0, 0, 100 ) )
  799. end
  800. function sbar.btnUp:Paint( w, h )
  801. draw.OutlinedRect(0, 0, w, h, Color(100,100,100,20), 1, Color(0,0,0,256))
  802. draw.DrawText("^", "BFHUD.Size20", w/2, 0 ,Color( 0,0,0,256 ), TEXT_ALIGN_CENTER)
  803. end
  804. function sbar.btnDown:Paint( w, h )
  805. draw.OutlinedRect(0, 0, w, h, Color(100,100,100,20), 1, Color(0,0,0,256))
  806. draw.DrawText("v", "BFHUD.Size20", w/2, -4 ,Color( 0,0,0,256 ), TEXT_ALIGN_CENTER)
  807. end
  808. function sbar.btnGrip:Paint( w, h )
  809. draw.OutlinedRect(0, 0, w, h, Color(100,100,100,20), 1, Color(0,0,0,256))
  810. end
  811. sbar.btnGrip:SetCursor( "hand" )
  812. end
  813. createScrollBar()
  814.  
  815. function RefreshStats(carstats)
  816.  
  817.  
  818. local stattable = carstats or self.CarStatsBase.Vehicle
  819. --PrintTable(stattable)
  820.  
  821. local VehicleStatsBG_ = {}
  822.  
  823. local statcounts = 1
  824.  
  825. self.StatsScrollPanel:Clear()
  826. for k, v in pairs(stattable) do
  827.  
  828.  
  829. local maxStat = 100
  830. local lastStat = 0
  831. local StatAprog = 0
  832. local StatProg
  833.  
  834. VehicleStatsBG_[statcounts] = self.StatsScrollPanel:Add("DPanel")
  835. VehicleStatsBG_[statcounts]:SetSize(self.StatsScrollPanel:GetWide(),50)
  836. VehicleStatsBG_[statcounts]:SetPos( 0, -50 + (50*statcounts) - (1*statcounts) )
  837. VehicleStatsBG_[statcounts]:SetMouseInputEnabled(false)
  838.  
  839. VehicleStatsBG_[statcounts].Paint = function( self, w, h )
  840.  
  841. local width, height = 200, 30
  842. StatProg = v / maxStat
  843. lastStat = v
  844.  
  845. StatAprog = Lerp(FrameTime()*10, StatAprog, StatProg)
  846.  
  847. draw.OutlinedRect(0,0, w, h, Color(0,0,0,50), 1, Color(0,0,0,75))
  848. draw.text3D( string.upper(k), "BFHUD.Size30", 5, h/4, Color(255,255,255), TEXT_ALIGN_LEFT, TEXT_ALIGN_CENTER )
  849.  
  850.  
  851. draw.OutlinedRect( w - width - 10, h/2 - height/2, width, height, Color(0,0,0,100), 1, Color(0,0,0,100))
  852.  
  853. 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))
  854.  
  855. end
  856.  
  857. statcounts = statcounts + 1
  858. end
  859.  
  860.  
  861. end
  862. RefreshStats(self.CarStatsBase.Vehicle)
  863.  
  864.  
  865.  
  866.  
  867. self.CarModelBase:SetSize(self.BG:GetWide() - 20 - self.CarListBase:GetWide() - 80 - 80,ScrH()*0.75)
  868. self.CarModelBase:SetPos(20 + self.CarListBase:GetWide() + 80, ScrH()/2 - self.CarModelBase:GetTall()/2 )
  869. function self.CarModelBase:Paint(w,h)
  870.  
  871. draw.OutlinedRect(0,0, w, 50, Color(0,0,0,150), 1, Color(0,0,0,100))
  872. draw.OutlinedRect(0,0 + 50, w, h - 50, Color(0,0,0,150), 1, Color(0,0,0,100))
  873.  
  874. --surface.SetDrawColor(180,30,30,200)
  875. --surface.DrawRect(0,0,w,50)
  876.  
  877. --draw.OutlinedRect(0,0 + 30 + 50, w, h - 80, Color(0,0,0,100), 1, Color(0,0,0,100))
  878.  
  879.  
  880. draw.text3D("Model Preview", "BFHUD.Size50", w/2, 50/2 - 25, Color(255,255,255) , TEXT_ALIGN_CENTER, TEXT_ALIGN_CENTER )
  881.  
  882. end
  883.  
  884. --[[
  885. self.ModelCloseButton = vgui.Create("DButton", self.CarModelBase)
  886. self.ModelCloseButton:SetSize(30, 30)
  887. self.ModelCloseButton:SetPos(self.CarModelBase:GetWide() - SIZES.close_button, 0)
  888. self.ModelCloseButton:SetText("")
  889. function self.ModelCloseButton:DoClick()
  890. CAR_DEALER.BG:Remove()
  891. end
  892. function self.ModelCloseButton:Paint(w, h)
  893. 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))
  894. draw.text3D("X", "BFHUD.Size30", w/2, -2, Color(255,255,255) , TEXT_ALIGN_CENTER, TEXT_ALIGN_TOP )
  895. end]]
  896.  
  897.  
  898. ModelDisplay:SetSize( self.CarModelBase:GetWide(), self.CarModelBase:GetTall() - 50)
  899. ModelDisplay:SetPos( 0, 50 )
  900. ModelDisplay:SetModel( self:GetVehicle(CAR_DEALER.CarModelBase.Vehicle.class).Model )
  901. FixModelpos(ModelDisplay)
  902.  
  903. end
  904.  
  905.  
  906.  
  907.  
  908.  
  909.  
  910.  
  911.  
  912. function CAR_DEALER:OpenReturnVGUI(car_dealer, vehicle)
  913.  
  914.  
  915. if IsValid(self.BG) then self.BG:Remove() end
  916.  
  917.  
  918. local num_buttons = 1
  919.  
  920.  
  921.  
  922.  
  923.  
  924. self.BG = vgui.Create("DPanel")
  925.  
  926.  
  927. self.BG:SetSize(SIZES.bg_x, SIZES.header + SIZES.return_button_y*num_buttons)
  928.  
  929.  
  930. self.BG:Center()
  931.  
  932.  
  933. self.BG:MakePopup()
  934.  
  935.  
  936. function self.BG:Think()
  937.  
  938.  
  939. if !IsValid(car_dealer) then self.BG:Remove() end
  940.  
  941.  
  942. end
  943.  
  944.  
  945. function self.BG:Paint(w, h)
  946.  
  947.  
  948. JohnnyBlur(self,4,4)
  949.  
  950.  
  951. draw.OutlinedRect(0,0, w, h, Color(0,0,0,50), 1, Color(0,0,0,100))
  952.  
  953.  
  954. draw.OutlinedRect(0,0, w, SIZES.header, Color(0,0,0,100), 1, Color(0,0,0,100))
  955.  
  956.  
  957.  
  958.  
  959.  
  960. draw.text3D("Car Dealer - Return", "BFHUD.Size50", w/2, SIZES.header/2 - 25, Color(255,255,255) , TEXT_ALIGN_CENTER, TEXT_ALIGN_TOP )
  961.  
  962.  
  963. end
  964.  
  965.  
  966.  
  967.  
  968.  
  969. self.ReturnButton = vgui.Create("DButton", self.BG)
  970.  
  971.  
  972. self.ReturnButton:SetSize(SIZES.bg_x, SIZES.return_button_y)
  973.  
  974.  
  975. self.ReturnButton:SetPos(0, SIZES.header)
  976.  
  977.  
  978. self.ReturnButton:SetText("")
  979.  
  980.  
  981. function self.ReturnButton:Think()
  982.  
  983.  
  984. if !IsValid(vehicle) then CAR_DEALER.BG:Remove() end
  985.  
  986.  
  987. if !IsValid(car_dealer) then CAR_DEALER.BG:Remove() end
  988.  
  989.  
  990.  
  991.  
  992.  
  993.  
  994.  
  995.  
  996. if self.NextThink and (self.NextThink > CurTime()) then return end
  997.  
  998.  
  999. self.NextThink = CurTime() + 0.5
  1000.  
  1001.  
  1002.  
  1003.  
  1004.  
  1005. local CarDealerPos = car_dealer:GetPos()
  1006.  
  1007.  
  1008. local VehicleTooFar = CarDealerPos:Distance(vehicle:GetPos()) > CAR_DEALER.CFG.ReturnDistance
  1009.  
  1010.  
  1011. local plyTooFar = CarDealerPos:Distance(LocalPlayer():GetPos()) > CAR_DEALER.CFG.ReturnDistance
  1012.  
  1013.  
  1014.  
  1015.  
  1016.  
  1017. self.TooFar = VehicleTooFar or plyTooFar
  1018.  
  1019.  
  1020.  
  1021.  
  1022.  
  1023. if VehicleTooFar then
  1024.  
  1025.  
  1026. self.text = "Your vehicle is too far from the dealer."
  1027.  
  1028.  
  1029. elseif plyTooFar then
  1030.  
  1031.  
  1032. self.text = "You are too far from the dealer."
  1033.  
  1034.  
  1035. else
  1036.  
  1037.  
  1038. self.text = "Return Vehicle"
  1039.  
  1040.  
  1041. end
  1042.  
  1043.  
  1044. end
  1045.  
  1046.  
  1047. function self.ReturnButton:DoClick()
  1048.  
  1049.  
  1050. if self.TooFar then
  1051.  
  1052.  
  1053. else
  1054.  
  1055.  
  1056. net.Start("RG:ReturnVehicle")
  1057.  
  1058.  
  1059. net.WriteEntity(car_dealer)
  1060.  
  1061.  
  1062. net.SendToServer()
  1063.  
  1064.  
  1065.  
  1066.  
  1067.  
  1068. CAR_DEALER.BG:Remove()
  1069.  
  1070.  
  1071. end
  1072.  
  1073.  
  1074. end
  1075.  
  1076.  
  1077. function self.ReturnButton:Paint(w, h)
  1078.  
  1079.  
  1080. 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))
  1081.  
  1082.  
  1083.  
  1084.  
  1085.  
  1086. draw.text3D(self.text or "", "BFHUD.Size35", w/2, h/2 - 15, Color(255,255,255) , TEXT_ALIGN_CENTER, TEXT_ALIGN_TOP )
  1087.  
  1088.  
  1089. end
  1090.  
  1091.  
  1092.  
  1093.  
  1094.  
  1095. self.CloseButton = vgui.Create("DButton", self.BG)
  1096.  
  1097.  
  1098. self.CloseButton:SetSize(30, 30)
  1099.  
  1100.  
  1101. self.CloseButton:SetPos(SIZES.bg_x - SIZES.close_button, 0)
  1102.  
  1103.  
  1104. self.CloseButton:SetText("")
  1105.  
  1106.  
  1107. function self.CloseButton:DoClick()
  1108.  
  1109.  
  1110. CAR_DEALER.BG:Remove()
  1111.  
  1112.  
  1113. end
  1114.  
  1115.  
  1116. function self.CloseButton:Paint(w, h)
  1117.  
  1118.  
  1119. 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))
  1120.  
  1121.  
  1122.  
  1123.  
  1124.  
  1125. draw.text3D("X", "BFHUD.Size30", w/2, -2, Color(255,255,255) , TEXT_ALIGN_CENTER, TEXT_ALIGN_TOP )
  1126.  
  1127.  
  1128. end
  1129.  
  1130.  
  1131. end
  1132.  
  1133.  
  1134.  
  1135.  
  1136.  
  1137.  
  1138.  
  1139.  
  1140. function CAR_DEALER:OpenCropVGUI(crop_shop, stolen_vehicle)
  1141.  
  1142.  
  1143. if IsValid(self.BG) then self.BG:Remove() end
  1144.  
  1145.  
  1146. --print(stolen_vehicle)
  1147.  
  1148.  
  1149. if !IsValid(stolen_vehicle) then return end
  1150.  
  1151.  
  1152.  
  1153.  
  1154.  
  1155. local VehicleClass = stolen_vehicle:GetVehicleClass()
  1156.  
  1157.  
  1158.  
  1159.  
  1160.  
  1161. local VehicleData = self:GetVehicle(VehicleClass)
  1162.  
  1163.  
  1164. local VehicleDealerData = self:GetVehicleData(VehicleClass)
  1165.  
  1166.  
  1167. if !VehicleDealerData then return end
  1168.  
  1169.  
  1170.  
  1171.  
  1172.  
  1173. self.BG = vgui.Create("DPanel")
  1174.  
  1175.  
  1176. self.BG:SetSize(SIZES.bg_x, SIZES.bg_y)
  1177.  
  1178.  
  1179. self.BG:Center()
  1180.  
  1181.  
  1182. self.BG:MakePopup()
  1183.  
  1184.  
  1185. function self.BG:Think()
  1186.  
  1187.  
  1188. if !IsValid(crop_shop) then self:Remove() return end
  1189.  
  1190.  
  1191. if !IsValid(stolen_vehicle) then
  1192.  
  1193.  
  1194. chat.AddText("The vehicle you stole has been removed.")
  1195.  
  1196.  
  1197. self:Remove()
  1198.  
  1199.  
  1200. return
  1201.  
  1202.  
  1203. end
  1204.  
  1205.  
  1206. end
  1207.  
  1208.  
  1209. function self.BG:Paint(w, h)
  1210.  
  1211.  
  1212. JohnnyBlur(self,4,4)
  1213.  
  1214.  
  1215. draw.OutlinedRect(0,0, w, h, Color(0,0,0,50), 1, Color(0,0,0,100))
  1216.  
  1217.  
  1218. draw.OutlinedRect(0,0, w, SIZES.header, Color(0,0,0,100), 1, Color(0,0,0,100))
  1219.  
  1220.  
  1221.  
  1222.  
  1223.  
  1224. draw.text3D("Sell Stolen Vehicles", "BFHUD.Size50", w/2, SIZES.header/2 - 25, Color(255,255,255) , TEXT_ALIGN_CENTER, TEXT_ALIGN_TOP )
  1225.  
  1226.  
  1227. end
  1228.  
  1229.  
  1230.  
  1231.  
  1232.  
  1233. self.CloseButton = vgui.Create("DButton", self.BG)
  1234.  
  1235.  
  1236. self.CloseButton:SetSize(30, 30)
  1237.  
  1238.  
  1239. self.CloseButton:SetPos(SIZES.bg_x - SIZES.close_button, 0)
  1240.  
  1241.  
  1242. self.CloseButton:SetText("")
  1243.  
  1244.  
  1245. function self.CloseButton:DoClick()
  1246.  
  1247.  
  1248. CAR_DEALER.BG:Remove()
  1249.  
  1250.  
  1251. end
  1252.  
  1253.  
  1254. function self.CloseButton:Paint(w, h)
  1255.  
  1256.  
  1257. 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))
  1258.  
  1259.  
  1260.  
  1261.  
  1262.  
  1263. draw.text3D("X", "BFHUD.Size30", w/2, -2, Color(255,255,255) , TEXT_ALIGN_CENTER, TEXT_ALIGN_TOP )
  1264.  
  1265.  
  1266. end
  1267.  
  1268.  
  1269.  
  1270.  
  1271.  
  1272. local VehicleBG = vgui.Create("DPanel", self.BG)
  1273.  
  1274.  
  1275. local VehicleButton = vgui.Create("DButton", VehicleBG)
  1276.  
  1277.  
  1278.  
  1279.  
  1280.  
  1281.  
  1282.  
  1283.  
  1284. local VehicleSize = SIZES.bg_x*0.9
  1285.  
  1286.  
  1287. VehicleBG:SetSize(VehicleSize,VehicleSize)
  1288.  
  1289.  
  1290. VehicleBG:SetPos(0, SIZES.header+5)
  1291.  
  1292.  
  1293. VehicleBG:CenterHorizontal(0.5)
  1294.  
  1295.  
  1296. function VehicleBG:Paint(w, h)
  1297.  
  1298.  
  1299. draw.OutlinedRect(0,0, w, h, Color(0,0,0,50), 1, Color(0,0,0,100))
  1300.  
  1301.  
  1302. draw.OutlinedRect(0,0, w, SIZES.vehicle_buybutton, Color(0,0,0,100), 1, Color(0,0,0,100))
  1303.  
  1304.  
  1305.  
  1306.  
  1307.  
  1308. draw.text3D(VehicleData.Name, "BFHUD.Size25", w/2, 1, Color(230,230,230,230) , TEXT_ALIGN_CENTER, TEXT_ALIGN_TOP )
  1309.  
  1310.  
  1311.  
  1312.  
  1313.  
  1314. local PriceColor = Color(230,256,230,230)
  1315.  
  1316.  
  1317.  
  1318.  
  1319.  
  1320. 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 )
  1321.  
  1322.  
  1323. end
  1324.  
  1325.  
  1326.  
  1327.  
  1328.  
  1329. local VehModel = vgui.Create( 'DModelPanel', VehicleBG )
  1330.  
  1331.  
  1332. VehModel:SetSize( VehicleSize-2, VehicleSize - 2* SIZES.vehicle_buybutton)
  1333.  
  1334.  
  1335. VehModel:SetPos( 1, SIZES.vehicle_buybutton )
  1336.  
  1337.  
  1338. VehModel:SetModel( VehicleData.Model )
  1339.  
  1340.  
  1341. FixModelpos(VehModel)
  1342.  
  1343.  
  1344.  
  1345.  
  1346.  
  1347.  
  1348.  
  1349.  
  1350. VehicleButton:SetSize(SIZES.vehicle_bg, SIZES.vehicle_buybutton)
  1351.  
  1352.  
  1353. VehicleButton:SetText("")
  1354.  
  1355.  
  1356. VehicleButton:Dock(BOTTOM)
  1357.  
  1358.  
  1359. function VehicleButton:Paint(w, h)
  1360.  
  1361.  
  1362. 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))
  1363.  
  1364.  
  1365. draw.text3D("Sell", "BFHUD.Size25", w/2, 0, Color(230,230,230,230) , TEXT_ALIGN_CENTER, TEXT_ALIGN_TOP )
  1366.  
  1367.  
  1368. end
  1369.  
  1370.  
  1371. function VehicleButton:DoClick()
  1372.  
  1373.  
  1374. net.Start("RG:SellVehicle")
  1375.  
  1376.  
  1377. net.WriteEntity(stolen_vehicle)
  1378.  
  1379.  
  1380. net.WriteEntity(crop_shop)
  1381.  
  1382.  
  1383. net.SendToServer()
  1384.  
  1385.  
  1386.  
  1387.  
  1388.  
  1389. CAR_DEALER.BG:Remove()
  1390.  
  1391.  
  1392. end
  1393.  
  1394.  
  1395. end
  1396.  
  1397.  
  1398.  
  1399.  
  1400.  
  1401.  
  1402.  
  1403.  
  1404.  
  1405. hook.Add( "InitPostEntity", "RGCarDealerSetCursor", function()
  1406. LocalPlayer().RGCursor = LocalPlayer().RGCursor or false
  1407. LocalPlayer().RGCursorCheck = CurTime()
  1408. LocalPlayer().RGCursorStatus = false
  1409. end )
  1410.  
  1411.  
  1412.  
  1413. --[[-------------------------------------------------------------------------
  1414. Title: Car Customizer
  1415. ---------------------------------------------------------------------------]]
  1416.  
  1417.  
  1418. function CAR_DEALER:OpenVehicleCustomizer(vehicle,LVehicle)
  1419.  
  1420. --if !IsValid(self) then return end
  1421.  
  1422.  
  1423.  
  1424. if IsValid( vehicle ) then
  1425. self.OldVehicleSpecs = {}
  1426. self.bodygroupsnumlist = {}
  1427.  
  1428. for k, v in pairs( vehicle:GetBodyGroups() ) do
  1429. self.bodygroupsnumlist[v.id] = vehicle:GetBodygroup( v.id )
  1430. end
  1431. self.OldVehicleSpecs = {
  1432. paint = vehicle:GetColor(),
  1433. skin = vehicle:GetSkin(),
  1434. bodygroups = table.concat( self.bodygroupsnumlist, "", 0, table.Count( self.bodygroupsnumlist )-1 ),
  1435. underglow = {vehicle:GetNWBool("RG_VEH_UNDERLIGHTS",false),vehicle:GetNWVector("RG_VEH_UNDERLIGHTS_COLOR",Vector(255,255,255))}
  1436. }
  1437. end
  1438.  
  1439. if self.OldVehicleSpecs then
  1440. --print("printing self.OldVehicleSpecs")
  1441. --PrintTable( self.OldVehicleSpecs )
  1442. end
  1443.  
  1444. if vehicle == nil and IsValid( LVehicle ) then
  1445. --print( "LVehicle existed" )
  1446. if IsValid(self.BG) then
  1447. if !self.BG.HasPurchasedPaint then
  1448. --print("CAR_DEALER.ColorTab existed")
  1449. LVehicle:SetColor( self.OldVehicleSpecs.paint )
  1450. end
  1451.  
  1452. if !self.BG.HasPurchasedSkin then
  1453. --print("CAR_DEALER.ColorTab existed")
  1454. LVehicle:SetSkin( self.OldVehicleSpecs.skin )
  1455. end
  1456.  
  1457. if !self.BG.HasPurchasedBodygroup then
  1458. --print("set bodygroups")
  1459. LVehicle:SetBodyGroups( self.OldVehicleSpecs.bodygroups )
  1460. end
  1461.  
  1462. if !self.BG.HasPurchasedUnderglow then
  1463. --print("CAR_DEALER.ColorTab existed")
  1464. LVehicle:SetNWBool("RG_VEH_UNDERLIGHTS",self.OldVehicleSpecs.underglow[1])
  1465. LVehicle:SetNWVector("RG_VEH_UNDERLIGHTS_COLOR",self.OldVehicleSpecs.underglow[2])
  1466. end
  1467.  
  1468. end
  1469.  
  1470. --LVehicle:SetSkin( self.OldVehicleSpecs.skin )
  1471. --LVehicle:SetBodyGroups( self.OldVehicleSpecs.bodygroups )
  1472. end
  1473.  
  1474.  
  1475. if vehicle == nil then
  1476. if IsValid(self.BG) then
  1477. self.BG:Remove()
  1478. end
  1479. if IsValid(self.BG_CART) then
  1480. self.BG_CART:Remove()
  1481. end
  1482. if IsValid(self.BG_SPACEBAR) then
  1483. self.BG_SPACEBAR:Remove()
  1484. end
  1485. LocalPlayer().RGCursorStatus = false
  1486. LocalPlayer().RGCursor = false
  1487. gui.EnableScreenClicker( false )
  1488. return
  1489. else
  1490. if IsValid(self.BG) then
  1491. self.BG:Remove()
  1492. end
  1493. if IsValid(self.BG_CART) then
  1494. self.BG_CART:Remove()
  1495. end
  1496. if IsValid(self.BG_SPACEBAR) then
  1497. self.BG_SPACEBAR:Remove()
  1498. end
  1499. LocalPlayer().RGCursorStatus = false
  1500. LocalPlayer().RGCursor = false
  1501. gui.EnableScreenClicker( false )
  1502. end
  1503. LocalPlayer().RGCursorStatus = true
  1504.  
  1505. local VehiclesList = self:GetAllVehicles()
  1506.  
  1507. if IsValid(vehicle) then
  1508. --PrintTable(vehicle:GetBodyGroups())
  1509. --print("------------------------------------------- ^ old ^ --------------------------------------------------------")
  1510.  
  1511. local newbodygroups = {}
  1512. for k, v in pairs( vehicle:GetBodyGroups() ) do
  1513. if v.num > 1 then
  1514. table.insert( newbodygroups, v )
  1515. end
  1516. end
  1517. --PrintTable( newbodygroups )
  1518. end
  1519.  
  1520.  
  1521.  
  1522.  
  1523.  
  1524.  
  1525.  
  1526. self.BG = vgui.Create("DPanel")
  1527. self.BG.HasPurchasedPaint = false
  1528. self.BG.HasPurchasedSkin = false
  1529. self.BG.HasPurchasedBodygroup = false
  1530. self.BG_CART = vgui.Create("DPanel")
  1531. self.BG_SPACEBAR = vgui.Create("DPanel")
  1532. self.BG:SetPos( 20, 20 )
  1533. self.BG:SetSize(400, 600)
  1534. --self.BG:MakePopup()
  1535. --self.BG_CART:MakePopup()
  1536. --self.BG:Center()
  1537. --self.BG:MakePopup()
  1538. self.BG.Title = ""
  1539.  
  1540. function self.BG:Paint(w, h)
  1541.  
  1542. JohnnyBlur(self,3,3)
  1543.  
  1544. draw.OutlinedRect(0,30, w, h-30, Color(0,0,0,50), 1, Color(0,0,0,100))
  1545.  
  1546. draw.OutlinedRect(0,30, w, SIZES.header, Color(0,0,0,100), 1, Color(0,0,0,100))
  1547.  
  1548. surface.SetDrawColor(180,30,30,230)
  1549. surface.DrawRect(0,0,w,50)
  1550.  
  1551. draw.RoundedBox(0,0,0,w,h,Color(0,0,0,150))
  1552.  
  1553. draw.text3D("Car Customizer", "BFHUD.Size50", w/2, SIZES.header/2 - 25, Color(255,255,255) , TEXT_ALIGN_CENTER, TEXT_ALIGN_TOP )
  1554.  
  1555. --draw.text3D(CurrentPage.."/"..MaxPages, "BFHUD.Size20", w/2, h-25, Color(255,255,255) , TEXT_ALIGN_CENTER, TEXT_ALIGN_TOP )
  1556.  
  1557. 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)
  1558. end
  1559.  
  1560.  
  1561. self.BG_SPACEBAR:SetSize( 430, 50 )
  1562. self.BG_SPACEBAR:SetPos( ScrW()/2 - self.BG_SPACEBAR:GetWide()/2, 20 )
  1563. function self.BG_SPACEBAR:Paint( w, h )
  1564.  
  1565. JohnnyBlur(self,3,3)
  1566.  
  1567. draw.OutlinedRect(0,30, w, SIZES.header, Color(0,0,0,50), 1, Color(0,0,0,100))
  1568.  
  1569. draw.OutlinedRect(0,30, w, SIZES.header, Color(0,0,0,100), 1, Color(0,0,0,100))
  1570.  
  1571. surface.SetDrawColor(180,30,30,215)
  1572. surface.DrawRect(0,0,w,50)
  1573.  
  1574. draw.RoundedBox(0,0,0,w,h,Color(0,0,0,150))
  1575.  
  1576. 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 )
  1577.  
  1578. end
  1579.  
  1580.  
  1581. self.CloseButton = vgui.Create("DButton", self.BG)
  1582. self.CloseButton:SetSize(30, 30)
  1583. self.CloseButton:SetPos(self.BG:GetWide() - SIZES.close_button, 0)
  1584. self.CloseButton:SetText("")
  1585.  
  1586. function self.CloseButton:DoClick()
  1587. net.Start("RG:CustomizerCanLeaveVeh")
  1588. net.SendToServer()
  1589. CAR_DEALER:OpenVehicleCustomizer( nil, vehicle )
  1590. CAR_DEALER.BG:Remove()
  1591. CAR_DEALER.BG_CART:Remove()
  1592. CAR_DEALER.BG_SPACEBAR:Remove()
  1593. LocalPlayer().RGCursorStatus = false
  1594. LocalPlayer().RGCursor = false
  1595. gui.EnableScreenClicker( false )
  1596. end
  1597.  
  1598.  
  1599. function self.CloseButton:Paint(w, h)
  1600. 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))
  1601.  
  1602. draw.text3D("X", "BFHUD.Size30", w/2, -2, Color(255,255,255) , TEXT_ALIGN_CENTER, TEXT_ALIGN_TOP )
  1603. end
  1604.  
  1605.  
  1606.  
  1607. self.BG_CART:SetSize(400, 400)
  1608. self.BG_CART:SetPos( ScrW() - self.BG_CART:GetWide() - 20, ScrH() - self.BG_CART:GetTall() - 20 )
  1609. self.BG_CART.Items = {}
  1610. --self.BG_CART:Center()
  1611. --self.BG_CART:MakePopup()
  1612. --self.BG_CART.Title = ""
  1613.  
  1614. function self.BG_CART:Paint(w, h)
  1615.  
  1616. JohnnyBlur(self,3,3)
  1617.  
  1618. draw.OutlinedRect(0,30, w, h-30, Color(0,0,0,50), 1, Color(0,0,0,100))
  1619.  
  1620. draw.OutlinedRect(0,30, w, SIZES.header, Color(0,0,0,100), 1, Color(0,0,0,100))
  1621.  
  1622. surface.SetDrawColor(180,30,30,230)
  1623. surface.DrawRect(0,0,w,50)
  1624.  
  1625. draw.RoundedBox(0,0,0,w,h,Color(0,0,0,150))
  1626.  
  1627. draw.text3D("Cart", "BFHUD.Size50", w/2, SIZES.header/2 - 25, Color(255,255,255) , TEXT_ALIGN_CENTER, TEXT_ALIGN_TOP )
  1628. 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 )
  1629.  
  1630. --draw.text3D(CurrentPage.."/"..MaxPages, "BFHUD.Size20", w/2, h-25, Color(255,255,255) , TEXT_ALIGN_CENTER, TEXT_ALIGN_TOP )
  1631.  
  1632. --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)
  1633. end
  1634.  
  1635.  
  1636. self.CloseButton_CART = vgui.Create("DButton", self.BG_CART)
  1637. self.CloseButton_CART:SetSize(30, 30)
  1638. self.CloseButton_CART:SetPos(self.BG_CART:GetWide() - SIZES.close_button, 0)
  1639. self.CloseButton_CART:SetText("")
  1640.  
  1641. function self.CloseButton_CART:DoClick()
  1642. net.Start("RG:CustomizerCanLeaveVeh")
  1643. net.SendToServer()
  1644. CAR_DEALER:OpenVehicleCustomizer( nil, vehicle )
  1645. CAR_DEALER.BG:Remove()
  1646. CAR_DEALER.BG_CART:Remove()
  1647. LocalPlayer().RGCursorStatus = false
  1648. LocalPlayer().RGCursor = false
  1649. gui.EnableScreenClicker( false )
  1650. end
  1651.  
  1652.  
  1653. function self.CloseButton_CART:Paint(w, h)
  1654. 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))
  1655.  
  1656. draw.text3D("X", "BFHUD.Size30", w/2, -2, Color(255,255,255) , TEXT_ALIGN_CENTER, TEXT_ALIGN_TOP )
  1657. end
  1658.  
  1659.  
  1660.  
  1661. self.ScrollPanel_CART = vgui.Create("DScrollPanel", self.BG_CART)
  1662. self.ScrollPanel_CART:SetSize(self.BG_CART:GetWide(), self.BG_CART:GetTall() - 31 - SIZES.header - 80 )
  1663. self.ScrollPanel_CART:SetPos(0, 30 + SIZES.header)
  1664.  
  1665.  
  1666. local function createScrollBar()
  1667.  
  1668. local sbar = CAR_DEALER.ScrollPanel_CART:GetVBar()
  1669.  
  1670. function sbar:Paint( w, h )
  1671. draw.RoundedBox( 0, 0, 0, w, h, Color( 0, 0, 0, 100 ) )
  1672. end
  1673.  
  1674. function sbar.btnUp:Paint( w, h )
  1675. draw.OutlinedRect(0, 0, w, h, Color(100,100,100,20), 1, Color(0,0,0,256))
  1676. draw.DrawText("^", "BFHUD.Size20", w/2, 0 ,Color( 0,0,0,256 ), TEXT_ALIGN_CENTER)
  1677. end
  1678.  
  1679. function sbar.btnDown:Paint( w, h )
  1680. draw.OutlinedRect(0, 0, w, h, Color(100,100,100,20), 1, Color(0,0,0,256))
  1681. draw.DrawText("v", "BFHUD.Size20", w/2, -4 ,Color( 0,0,0,256 ), TEXT_ALIGN_CENTER)
  1682. end
  1683.  
  1684. function sbar.btnGrip:Paint( w, h )
  1685. draw.OutlinedRect(0, 0, w, h, Color(100,100,100,20), 1, Color(0,0,0,256))
  1686. end
  1687.  
  1688. sbar.btnGrip:SetCursor( "hand" )
  1689.  
  1690. end
  1691. createScrollBar()
  1692.  
  1693. function RefreshScroll_Cart()
  1694.  
  1695. self.ScrollPanel_CART:Clear()
  1696.  
  1697. for k, v in pairs(self.BG_CART.Items) do
  1698.  
  1699. self.CartItemButton = self.ScrollPanel_CART:Add("DButton")
  1700. self.CartItemButton:SetSize( self.BG:GetWide(), 50 ) -- - 14
  1701. self.CartItemButton:SetPos(0,-50 + (50*k) - (1*k))
  1702. --[[
  1703. self.CartItemButton:SetFont("font_20")
  1704. self.CartItemButton:SetTextColor( Color(255,255,255,255) )
  1705. self.CartItemButton:SetText( categories[i] )
  1706. ]]
  1707. self.CartItemButton:SetText( "" )
  1708.  
  1709. function self.CartItemButton:Paint( w, h )
  1710. if self:IsHovered() then
  1711. draw.OutlinedRect(0,0, w, h, Color(0,0,0,50), 1, Color(0,0,0,100))
  1712.  
  1713. --draw.text3D("$500","font_25",w - 5,25/2,Color(255,255,255,255),TEXT_ALIGN_RIGHT,TEXT_ALIGN_CENTER)
  1714. --draw.text3D("Test","font_25",w/2,25/2,Color(255,255,255,255),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER)
  1715.  
  1716. draw.OutlinedRect(0,0, w, h, Color(180,30,30,230), 1, Color(0,0,0,100))
  1717.  
  1718. draw.text3D("X", "BFHUD.Size30", w/2, h/6, Color(255,255,255) , TEXT_ALIGN_CENTER, TEXT_ALIGN_CENTER )
  1719. else
  1720. draw.OutlinedRect(0,0, w, h, Color(0,0,0,50), 1, Color(0,0,0,100))
  1721.  
  1722. -- DarkRP.formatMoney(CAR_DEALER.CFG.CustomizerPrices.Skin)
  1723.  
  1724. if v.type == "paint" then
  1725. 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)
  1726. draw.text3D("Paint","font_25",w/2,25/2,v.data.color,TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER) -- Color(255,255,255,255)
  1727. elseif v.type == "skin" then
  1728. 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)
  1729. 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)
  1730. elseif v.type == "bodygroups" then
  1731. 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)
  1732. if v.data.bodygroups.subgroup then -- v.data.bodygroups.subgroup
  1733. 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)
  1734. else
  1735. 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)
  1736. end
  1737. elseif v.type == "underglow" then
  1738. 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)
  1739. if v.data.toggled then
  1740. draw.text3D("Underglow (Enabled)","font_25",w/2,25/2,Color(255,255,255,255),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER)
  1741. else
  1742. draw.text3D("Underglow (Disabled)","font_25",w/2,25/2,Color(255,255,255,255),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER)
  1743. end
  1744. elseif v.type == "nitro" then
  1745. 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)
  1746. if v.data.nitro == 4 then
  1747. draw.text3D("Nitro refill","font_25",w/2,25/2,Color(255,255,255,255),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER)
  1748. elseif v.data.nitro == 0 then
  1749. draw.text3D("Remove Nitro","font_25",w/2,25/2,Color(255,255,255,255),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER)
  1750. else
  1751. draw.text3D("Nitro level "..v.data.nitro,"font_25",w/2,25/2,Color(255,255,255,255),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER)
  1752. end
  1753. else
  1754. draw.text3D("ERROR","font_25",w/2,25/2,Color(255,255,255,255),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER)
  1755. end
  1756. end
  1757.  
  1758.  
  1759. end
  1760. function self.CartItemButton:DoClick()
  1761.  
  1762. self:Remove()
  1763.  
  1764. --[[
  1765. if CAR_DEALER.BG_CART.Items[k].type == "paint" then
  1766. print("set CAR_DEALER.ColorTab.HasPurchased to false")
  1767. CAR_DEALER.ColorTab.HasPurchased = false
  1768. end]]
  1769.  
  1770.  
  1771.  
  1772.  
  1773. table.remove( CAR_DEALER.BG_CART.Items, k )
  1774.  
  1775. RefreshScroll_Cart()
  1776.  
  1777. end
  1778.  
  1779.  
  1780.  
  1781. end
  1782.  
  1783. end
  1784. RefreshScroll_Cart()
  1785.  
  1786.  
  1787. self.CartPurchaseButton = vgui.Create("DButton", self.BG_CART)
  1788. self.CartPurchaseButton:SetSize(self.BG_CART:GetWide(), 80)
  1789. self.CartPurchaseButton:SetPos( 0, self.BG_CART:GetTall() - 80 )
  1790. self.CartPurchaseButton:SetText("")
  1791.  
  1792. function self.CartPurchaseButton:Paint(w, h)
  1793. 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))
  1794.  
  1795. draw.text3D("Purchase", "BFHUD.Size50", w/2, h/8, Color(255,255,255) , TEXT_ALIGN_CENTER, TEXT_ALIGN_TOP )
  1796. end
  1797. function self.CartPurchaseButton:DoClick()
  1798. --CAR_DEALER.ScrollPanel_CART:Clear()
  1799. if table.Count( CAR_DEALER.BG_CART.Items ) < 1 then return end
  1800. if vehicle == nil then return end
  1801.  
  1802. for k, v in pairs( CAR_DEALER.BG_CART.Items ) do
  1803. if v.type == "paint" then
  1804. CAR_DEALER.BG.HasPurchasedPaint = true
  1805. end
  1806. if v.type == "skin" then
  1807. CAR_DEALER.BG.HasPurchasedSkin = true
  1808. end
  1809. if v.type == "bodygroups" and !CAR_DEALER.BG.HasPurchasedBodygroup then
  1810. CAR_DEALER.BG.HasPurchasedBodygroup = true
  1811. end
  1812. if v.type == "underglow" then
  1813. CAR_DEALER.BG.HasPurchasedUnderglow = true
  1814. end
  1815. end
  1816.  
  1817.  
  1818. net.Start("RG:CustomizerPurchase")
  1819. net.WriteEntity( vehicle )
  1820. net.WriteTable( CAR_DEALER.BG_CART.Items )
  1821. net.SendToServer()
  1822.  
  1823. CAR_DEALER.BG_CART.Items = {}
  1824.  
  1825. RefreshScroll_Cart()
  1826.  
  1827. end
  1828.  
  1829.  
  1830.  
  1831.  
  1832.  
  1833. self.BackButton = vgui.Create("DButton", self.BG)
  1834. self.BackButton:SetSize(SIZES.header - 0, SIZES.header - 20)
  1835. self.BackButton:SetPos(self.BG:GetWide() - SIZES.header + 0, 50)
  1836. self.BackButton:SetText("")
  1837. self.BackButton.Bodygroups = false
  1838.  
  1839. function self.BackButton:Paint(w, h)
  1840. 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))
  1841.  
  1842. draw.text3D("<", "BFHUD.Size30", w/2, -2, Color(255,255,255) , TEXT_ALIGN_CENTER, TEXT_ALIGN_TOP )
  1843. end
  1844. self.BackButton:SetVisible(false)
  1845.  
  1846.  
  1847.  
  1848.  
  1849. local categories = {
  1850. "Paint",
  1851. "Skin",
  1852. "BodyGroups",
  1853. "Underglow",
  1854. "Nitro"
  1855. --"Engine"
  1856. }
  1857.  
  1858.  
  1859.  
  1860.  
  1861.  
  1862. local function ColorButton()
  1863.  
  1864. self.ColorTab = vgui.Create( "DPanel", self.BG )
  1865. self.ColorTab:SetSize( self.BG:GetWide(), self.BG:GetTall() - 31 - SIZES.header )
  1866. self.ColorTab:SetPos( 0, 30 + SIZES.header )
  1867. function self.ColorTab:Paint( w, h ) end
  1868.  
  1869. self.ColorMixer = vgui.Create( "DColorMixer", self.ColorTab )
  1870. self.ColorMixer:SetPalette( true )
  1871. self.ColorMixer:SetAlphaBar( false )
  1872. self.ColorMixer:SetWangs( false )
  1873. self.ColorMixer:SetColor( IsValid(vehicle) and vehicle:GetColor() or Color( 255, 255, 255 ) )
  1874. self.ColorMixer:SetSize( self.ColorTab:GetWide() - 20, self.ColorTab:GetWide() - 80 )
  1875. self.ColorMixer:SetPos( 10, 10 )
  1876.  
  1877. function self.ColorMixer:ValueChanged( col )
  1878.  
  1879. if IsValid(vehicle) then
  1880. vehicle:SetColor( Color(col.r, col.g, col.b) )
  1881. end
  1882.  
  1883. end
  1884.  
  1885.  
  1886. self.ColorConfirmButton = vgui.Create("DButton", self.ColorTab)
  1887. self.ColorConfirmButton:SetSize(self.ColorMixer:GetWide(), 50)
  1888. self.ColorConfirmButton:SetPos(10, self.ColorMixer:GetTall() + 20)
  1889. self.ColorConfirmButton:SetText("")
  1890.  
  1891.  
  1892. function self.ColorConfirmButton:Paint(w, h)
  1893. 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))
  1894.  
  1895. draw.text3D("Add To Cart", "BFHUD.Size30", w/2, h/6, Color(255,255,255) , TEXT_ALIGN_CENTER, TEXT_ALIGN_TOP )
  1896. end
  1897.  
  1898. function self.ColorConfirmButton:DoClick()
  1899.  
  1900. for k, v in pairs( CAR_DEALER.BG_CART.Items ) do
  1901. if v.type == "paint" then return end
  1902. end
  1903.  
  1904. --CAR_DEALER.ColorTab.HasAdded = true
  1905. table.insert( CAR_DEALER.BG_CART.Items,
  1906. {
  1907. type = "paint",
  1908. data = {
  1909. color = Color(CAR_DEALER.ColorMixer:GetColor().r,CAR_DEALER.ColorMixer:GetColor().g,CAR_DEALER.ColorMixer:GetColor().b)
  1910. }
  1911. }
  1912. )
  1913.  
  1914. RefreshScroll_Cart()
  1915.  
  1916. end
  1917.  
  1918.  
  1919. end
  1920.  
  1921.  
  1922.  
  1923. local function SkinButton()
  1924.  
  1925. self.SkinTab = vgui.Create( "DPanel", self.BG )
  1926. self.SkinTab:SetSize( self.BG:GetWide(), self.BG:GetTall() - 31 - SIZES.header )
  1927. self.SkinTab:SetPos( 0, 30 + SIZES.header )
  1928. function self.SkinTab:Paint( w, h ) end
  1929.  
  1930.  
  1931.  
  1932. self.SkinScrollPanel = vgui.Create("DScrollPanel", self.SkinTab)
  1933. self.SkinScrollPanel:SetSize(self.SkinTab:GetWide(), self.SkinTab:GetTall() - 80 )
  1934. self.SkinScrollPanel:SetPos(0, 0)
  1935.  
  1936.  
  1937. local function createScrollBar()
  1938.  
  1939. local sbar = CAR_DEALER.SkinScrollPanel:GetVBar()
  1940.  
  1941. function sbar:Paint( w, h )
  1942. draw.RoundedBox( 0, 0, 0, w, h, Color( 0, 0, 0, 100 ) )
  1943. end
  1944.  
  1945. function sbar.btnUp:Paint( w, h )
  1946. draw.OutlinedRect(0, 0, w, h, Color(100,100,100,20), 1, Color(0,0,0,256))
  1947. draw.DrawText("^", "BFHUD.Size20", w/2, 0 ,Color( 0,0,0,256 ), TEXT_ALIGN_CENTER)
  1948. end
  1949.  
  1950. function sbar.btnDown:Paint( w, h )
  1951. draw.OutlinedRect(0, 0, w, h, Color(100,100,100,20), 1, Color(0,0,0,256))
  1952. draw.DrawText("v", "BFHUD.Size20", w/2, -4 ,Color( 0,0,0,256 ), TEXT_ALIGN_CENTER)
  1953. end
  1954.  
  1955. function sbar.btnGrip:Paint( w, h )
  1956. draw.OutlinedRect(0, 0, w, h, Color(100,100,100,20), 1, Color(0,0,0,256))
  1957. end
  1958.  
  1959. sbar.btnGrip:SetCursor( "hand" )
  1960.  
  1961. end
  1962. createScrollBar()
  1963.  
  1964.  
  1965. local vtotalskins = IsValid(vehicle) and vehicle:SkinCount() or 8
  1966. local SkinChooseButton_ = {}
  1967. for i=1,vtotalskins do
  1968.  
  1969. SkinChooseButton_[i] = self.SkinScrollPanel:Add("DButton")
  1970. if vtotalskins > 8 then
  1971. SkinChooseButton_[i]:SetSize( self.BG:GetWide() - 14, 50 )
  1972. else
  1973. SkinChooseButton_[i]:SetSize( self.BG:GetWide(), 50 )
  1974. end
  1975. SkinChooseButton_[i]:SetPos(0,-50 + (50*i) - (1*i))
  1976. --[[
  1977. SkinChooseButton_[i]:SetFont("font_20")
  1978. SkinChooseButton_[i]:SetTextColor( Color(255,255,255,255) )
  1979. SkinChooseButton_[i]:SetText( categories[i] )
  1980. ]]
  1981. SkinChooseButton_[i]:SetText( "" )
  1982.  
  1983. SkinChooseButton_[i].Selected = false
  1984.  
  1985. SkinChooseButton_[i].Paint = function( self, w, h )
  1986.  
  1987. 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))
  1988.  
  1989. 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)
  1990. draw.text3D("Skin "..i,"font_25",w/2,25/2,Color(255,255,255,255),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER)
  1991.  
  1992. end
  1993. SkinChooseButton_[i].DoClick = function()
  1994. for c=1,vtotalskins do
  1995. SkinChooseButton_[c].Selected = false
  1996. end
  1997.  
  1998. SkinChooseButton_[i].Selected = true
  1999. if IsValid(vehicle) then
  2000.  
  2001. vehicle:SetSkin( i )
  2002.  
  2003. --print( vehicle:GetSkin() )
  2004.  
  2005. CAR_DEALER.SkinTab.vskin = i
  2006.  
  2007. end
  2008.  
  2009. end
  2010.  
  2011. end
  2012.  
  2013.  
  2014. self.SkinConfirmButton = vgui.Create("DButton", self.SkinTab)
  2015. self.SkinConfirmButton:SetSize(self.SkinTab:GetWide(), 80)
  2016. self.SkinConfirmButton:SetPos(0, self.SkinTab:GetTall() - 80)
  2017. self.SkinConfirmButton:SetText("")
  2018.  
  2019.  
  2020. function self.SkinConfirmButton:Paint(w, h)
  2021. 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))
  2022.  
  2023. draw.text3D("Add To Cart", "BFHUD.Size40", w/2, h/4, Color(255,255,255) , TEXT_ALIGN_CENTER, TEXT_ALIGN_TOP )
  2024. end
  2025.  
  2026.  
  2027. function self.SkinConfirmButton:DoClick()
  2028.  
  2029. for k, v in pairs( CAR_DEALER.BG_CART.Items ) do
  2030. if v.type == "skin" then return end
  2031. end
  2032.  
  2033.  
  2034. table.insert( CAR_DEALER.BG_CART.Items,
  2035. {
  2036. type = "skin",
  2037. data = {
  2038. skin = CAR_DEALER.SkinTab.vskin
  2039. }
  2040. }
  2041. )
  2042.  
  2043. RefreshScroll_Cart()
  2044.  
  2045. end
  2046.  
  2047.  
  2048.  
  2049. end
  2050.  
  2051. local newbodygroups = {}
  2052. if IsValid(vehicle) then
  2053. for k, v in pairs( vehicle:GetBodyGroups() ) do
  2054. if v.num > 1 then
  2055. table.insert( newbodygroups, v )
  2056. end
  2057. end
  2058. end
  2059.  
  2060. local function BodygroupsButton()
  2061.  
  2062. self.BodygroupsTab = vgui.Create( "DPanel", self.BG )
  2063. self.BodygroupsTab:SetSize( self.BG:GetWide(), self.BG:GetTall() - 31 - SIZES.header )
  2064. self.BodygroupsTab:SetPos( 0, 30 + SIZES.header )
  2065. function self.BodygroupsTab:Paint( w, h ) end
  2066.  
  2067.  
  2068.  
  2069. self.BodygroupScrollPanel = vgui.Create("DScrollPanel", self.BodygroupsTab)
  2070. self.BodygroupScrollPanel:SetSize(self.BodygroupsTab:GetWide(), self.BodygroupsTab:GetTall() - 80 )
  2071. self.BodygroupScrollPanel:SetPos(0, 0)
  2072.  
  2073.  
  2074. local function createScrollBar()
  2075.  
  2076. local sbar = CAR_DEALER.BodygroupScrollPanel:GetVBar()
  2077.  
  2078. function sbar:Paint( w, h )
  2079. draw.RoundedBox( 0, 0, 0, w, h, Color( 0, 0, 0, 100 ) )
  2080. end
  2081.  
  2082. function sbar.btnUp:Paint( w, h )
  2083. draw.OutlinedRect(0, 0, w, h, Color(100,100,100,20), 1, Color(0,0,0,256))
  2084. draw.DrawText("^", "BFHUD.Size20", w/2, 0 ,Color( 0,0,0,256 ), TEXT_ALIGN_CENTER)
  2085. end
  2086.  
  2087. function sbar.btnDown:Paint( w, h )
  2088. draw.OutlinedRect(0, 0, w, h, Color(100,100,100,20), 1, Color(0,0,0,256))
  2089. draw.DrawText("v", "BFHUD.Size20", w/2, -4 ,Color( 0,0,0,256 ), TEXT_ALIGN_CENTER)
  2090. end
  2091.  
  2092. function sbar.btnGrip:Paint( w, h )
  2093. draw.OutlinedRect(0, 0, w, h, Color(100,100,100,20), 1, Color(0,0,0,256))
  2094. end
  2095.  
  2096. sbar.btnGrip:SetCursor( "hand" )
  2097.  
  2098. end
  2099. createScrollBar()
  2100.  
  2101.  
  2102. local vtotalbodygroups = IsValid(vehicle) and table.Count(newbodygroups) or 0
  2103. --local tbl_bodygroups = IsValid(vehicle) and vehicle:GetBodyGroups() or {}
  2104. local BodygroupsChooseButton_ = {}
  2105. local BodygroupsChooseButtonExtra_ = {}
  2106.  
  2107. local bodynum = {}
  2108. local bodynumExtra = {}
  2109.  
  2110. local function OpenSubCategoryBodygroups( subgroups )
  2111.  
  2112. --PrintTable(subgroups)
  2113.  
  2114.  
  2115.  
  2116. self.BodygroupsTabExtra = vgui.Create( "DPanel", self.BG )
  2117. self.BodygroupsTabExtra:SetSize( self.BG:GetWide(), self.BG:GetTall() - 31 - SIZES.header )
  2118. self.BodygroupsTabExtra:SetPos( 0, 30 + SIZES.header )
  2119. function self.BodygroupsTabExtra:Paint( w, h ) end
  2120.  
  2121.  
  2122.  
  2123. self.BodygroupScrollPanelExtra = vgui.Create("DScrollPanel", self.BodygroupsTabExtra)
  2124. self.BodygroupScrollPanelExtra:SetSize(self.BodygroupsTabExtra:GetWide(), self.BodygroupsTabExtra:GetTall() - 80 )
  2125. self.BodygroupScrollPanelExtra:SetPos(0, 0)
  2126.  
  2127.  
  2128. local function createScrollBar()
  2129.  
  2130. local sbar = CAR_DEALER.BodygroupScrollPanelExtra:GetVBar()
  2131.  
  2132. function sbar:Paint( w, h )
  2133. draw.RoundedBox( 0, 0, 0, w, h, Color( 0, 0, 0, 100 ) )
  2134. end
  2135.  
  2136. function sbar.btnUp:Paint( w, h )
  2137. draw.OutlinedRect(0, 0, w, h, Color(100,100,100,20), 1, Color(0,0,0,256))
  2138. draw.DrawText("^", "BFHUD.Size20", w/2, 0 ,Color( 0,0,0,256 ), TEXT_ALIGN_CENTER)
  2139. end
  2140.  
  2141. function sbar.btnDown:Paint( w, h )
  2142. draw.OutlinedRect(0, 0, w, h, Color(100,100,100,20), 1, Color(0,0,0,256))
  2143. draw.DrawText("v", "BFHUD.Size20", w/2, -4 ,Color( 0,0,0,256 ), TEXT_ALIGN_CENTER)
  2144. end
  2145.  
  2146. function sbar.btnGrip:Paint( w, h )
  2147. draw.OutlinedRect(0, 0, w, h, Color(100,100,100,20), 1, Color(0,0,0,256))
  2148. end
  2149.  
  2150. sbar.btnGrip:SetCursor( "hand" )
  2151.  
  2152. end
  2153. createScrollBar()
  2154.  
  2155.  
  2156. for k, v in pairs( subgroups["submodels"] ) do
  2157.  
  2158. k = k + 1
  2159.  
  2160. BodygroupsChooseButtonExtra_[k] = self.BodygroupScrollPanelExtra:Add("DButton")
  2161. if table.Count(subgroups["submodels"]) > 8 then
  2162. BodygroupsChooseButtonExtra_[k]:SetSize( self.BG:GetWide() - 14, 50 )
  2163. else
  2164. BodygroupsChooseButtonExtra_[k]:SetSize( self.BG:GetWide(), 50 )
  2165. end
  2166. BodygroupsChooseButtonExtra_[k]:SetPos(0,-50 + (50*k) - (1*k))
  2167. --[[
  2168. BodygroupsChooseButtonExtra_[i]:SetFont("font_20")
  2169. BodygroupsChooseButtonExtra_[i]:SetTextColor( Color(255,255,255,255) )
  2170. BodygroupsChooseButtonExtra_[i]:SetText( categories[i] )
  2171. ]]
  2172. BodygroupsChooseButtonExtra_[k]:SetText( "" )
  2173.  
  2174. BodygroupsChooseButtonExtra_[k].Selected = false
  2175.  
  2176. BodygroupsChooseButtonExtra_[k].BodygroupInfo = subgroups.id
  2177.  
  2178. BodygroupsChooseButtonExtra_[k].Paint = function( self, w, h )
  2179.  
  2180. 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))
  2181.  
  2182.  
  2183. 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)
  2184. draw.text3D( string.StripExtension(v),"font_25",w/2,25/2,Color(255,255,255,255),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER)
  2185.  
  2186. end
  2187. BodygroupsChooseButtonExtra_[k].DoClick = function()
  2188.  
  2189. for c=1,table.Count(subgroups["submodels"]) do
  2190. BodygroupsChooseButtonExtra_[c].Selected = false
  2191. end
  2192.  
  2193. BodygroupsChooseButtonExtra_[k].Selected = true
  2194. if IsValid(vehicle) then
  2195.  
  2196. --print("bodygroup numb:",k-1)
  2197.  
  2198. vehicle:SetBodygroup( BodygroupsChooseButtonExtra_[k].BodygroupInfo, k-1 )
  2199.  
  2200. --print( "yuhayebruv" )
  2201.  
  2202. CAR_DEALER.BodygroupsTabExtra.vbodygroup = {id=BodygroupsChooseButtonExtra_[k].BodygroupInfo,num=k-1,subgroup=true}
  2203. end
  2204.  
  2205. end
  2206.  
  2207. end
  2208.  
  2209. self.BodygroupsConfirmButtonExtra = vgui.Create("DButton", self.BodygroupsTabExtra)
  2210. self.BodygroupsConfirmButtonExtra:SetSize(self.BodygroupsTabExtra:GetWide(), 80)
  2211. self.BodygroupsConfirmButtonExtra:SetPos(0, self.BodygroupsTabExtra:GetTall() - 80)
  2212. self.BodygroupsConfirmButtonExtra:SetText("")
  2213.  
  2214.  
  2215. function self.BodygroupsConfirmButtonExtra:Paint(w, h)
  2216. 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))
  2217.  
  2218. draw.text3D("Add To Cart", "BFHUD.Size40", w/2, h/4, Color(255,255,255) , TEXT_ALIGN_CENTER, TEXT_ALIGN_TOP )
  2219. end
  2220.  
  2221.  
  2222. function self.BodygroupsConfirmButtonExtra:DoClick()
  2223.  
  2224. for k, v in pairs( CAR_DEALER.BG_CART.Items ) do
  2225. if v.type == "bodygroups" then
  2226. if v.data.bodygroups.id == CAR_DEALER.BodygroupsTabExtra.vbodygroup.id then
  2227. --print("removed tbl val")
  2228. table.remove( CAR_DEALER.BG_CART.Items, k )
  2229. end
  2230. end
  2231. end
  2232.  
  2233.  
  2234. table.insert( CAR_DEALER.BG_CART.Items,
  2235. {
  2236. type = "bodygroups",
  2237. data = {
  2238. bodygroups = CAR_DEALER.BodygroupsTabExtra.vbodygroup
  2239. }
  2240. }
  2241. )
  2242.  
  2243. RefreshScroll_Cart()
  2244.  
  2245. end
  2246.  
  2247.  
  2248. end
  2249.  
  2250.  
  2251. for k, v in pairs( newbodygroups ) do
  2252.  
  2253. BodygroupsChooseButton_[k] = self.BodygroupScrollPanel:Add("DButton")
  2254. if vtotalbodygroups > 8 then
  2255. BodygroupsChooseButton_[k]:SetSize( self.BG:GetWide() - 14, 50 )
  2256. else
  2257. BodygroupsChooseButton_[k]:SetSize( self.BG:GetWide(), 50 )
  2258. end
  2259. BodygroupsChooseButton_[k]:SetPos(0,-50 + (50*k) - (1*k))
  2260. --[[
  2261. BodygroupsChooseButton_[i]:SetFont("font_20")
  2262. BodygroupsChooseButton_[i]:SetTextColor( Color(255,255,255,255) )
  2263. BodygroupsChooseButton_[i]:SetText( categories[i] )
  2264. ]]
  2265. BodygroupsChooseButton_[k]:SetText( "" )
  2266.  
  2267. BodygroupsChooseButton_[k].Selected = false
  2268.  
  2269. BodygroupsChooseButton_[k].BodygroupInfo = v.id
  2270.  
  2271. BodygroupsChooseButton_[k].Paint = function( self, w, h )
  2272.  
  2273. 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))
  2274.  
  2275. local mtxt = DarkRP.formatMoney(CAR_DEALER.CFG.CustomizerPrices.BodyGroups)
  2276. local expos = 5
  2277. if v.num > 2 then
  2278. mtxt = ">"
  2279. expos = 20
  2280. else
  2281. mtxt = DarkRP.formatMoney(CAR_DEALER.CFG.CustomizerPrices.BodyGroups)
  2282. expos = 5
  2283. end
  2284.  
  2285. draw.text3D(mtxt,"font_25",w - expos,25/2,Color(255,255,255,255),TEXT_ALIGN_RIGHT,TEXT_ALIGN_CENTER)
  2286. draw.text3D( v.name,"font_25",w/2,25/2,Color(255,255,255,255),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER)
  2287.  
  2288. end
  2289.  
  2290. bodynum[k] = vehicle:GetBodygroup( BodygroupsChooseButton_[k].BodygroupInfo )
  2291. BodygroupsChooseButton_[k].DoClick = function()
  2292.  
  2293. if v.num > 2 then
  2294. CAR_DEALER.BG.Title = v.name
  2295. CAR_DEALER.BackButton:SetVisible(true)
  2296. CAR_DEALER.BackButton.Bodygroups = true
  2297. CAR_DEALER.BodygroupsTab:Remove()
  2298.  
  2299.  
  2300. OpenSubCategoryBodygroups( v )
  2301. --PrintTable(v)
  2302. else
  2303. for c=1,vtotalbodygroups do
  2304. BodygroupsChooseButton_[c].Selected = false
  2305. end
  2306.  
  2307. BodygroupsChooseButton_[k].Selected = true
  2308. if IsValid(vehicle) then
  2309.  
  2310. --print("bodygroup numb:",bodynum[k])
  2311. if bodynum[k] == 0 then
  2312. bodynum[k] = 1
  2313. elseif bodynum[k] == 1 then
  2314. bodynum[k] = 0
  2315. end
  2316.  
  2317. --print("bodygroup numb:",bodynum[k])
  2318.  
  2319. vehicle:SetBodygroup( BodygroupsChooseButton_[k].BodygroupInfo, bodynum[k] )
  2320.  
  2321. --print( "yuhayebruv" )
  2322.  
  2323. CAR_DEALER.BodygroupsTab.vbodygroup = {id=BodygroupsChooseButton_[k].BodygroupInfo,num=bodynum[k],subgroup=false}
  2324.  
  2325. end
  2326. end
  2327.  
  2328. end
  2329.  
  2330. end
  2331.  
  2332.  
  2333. self.BodygroupsConfirmButton = vgui.Create("DButton", self.BodygroupsTab)
  2334. self.BodygroupsConfirmButton:SetSize(self.BodygroupsTab:GetWide(), 80)
  2335. self.BodygroupsConfirmButton:SetPos(0, self.BodygroupsTab:GetTall() - 80)
  2336. self.BodygroupsConfirmButton:SetText("")
  2337.  
  2338.  
  2339. function self.BodygroupsConfirmButton:Paint(w, h)
  2340. 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))
  2341.  
  2342. draw.text3D("Add To Cart", "BFHUD.Size40", w/2, h/4, Color(255,255,255) , TEXT_ALIGN_CENTER, TEXT_ALIGN_TOP )
  2343. end
  2344.  
  2345.  
  2346. function self.BodygroupsConfirmButton:DoClick()
  2347.  
  2348. for k, v in pairs( CAR_DEALER.BG_CART.Items ) do
  2349. if v.type == "bodygroups" then
  2350. if v.data.bodygroups.id == CAR_DEALER.BodygroupsTab.vbodygroup.id then
  2351. table.remove( CAR_DEALER.BG_CART.Items, k )
  2352. end
  2353. end
  2354. end
  2355.  
  2356. table.insert( CAR_DEALER.BG_CART.Items,
  2357. {
  2358. type = "bodygroups",
  2359. data = {
  2360. bodygroups = CAR_DEALER.BodygroupsTab.vbodygroup
  2361. }
  2362. }
  2363. )
  2364.  
  2365. RefreshScroll_Cart()
  2366.  
  2367. end
  2368.  
  2369.  
  2370.  
  2371. end
  2372.  
  2373.  
  2374. local function UnderglowButton()
  2375.  
  2376. self.BG:SetSize( self.BG:GetWide(), 210 )
  2377.  
  2378. self.UnderglowTab = vgui.Create( "DPanel", self.BG )
  2379. self.UnderglowTab:SetSize( self.BG:GetWide(), self.BG:GetTall() - 31 - SIZES.header )
  2380. self.UnderglowTab:SetPos( 0, 30 + SIZES.header )
  2381. function self.UnderglowTab:Paint( w, h ) end
  2382.  
  2383.  
  2384. self.UnderglowToggleRed = vgui.Create( "DPanel", self.UnderglowTab )
  2385. self.UnderglowToggleRed:SetSize( self.UnderglowTab:GetWide() - 20, 50 ) -- 380
  2386. self.UnderglowToggleRed:SetPos( 10, 10 )
  2387. function self.UnderglowToggleRed:Paint( w, h )
  2388.  
  2389. draw.RoundedBox(0,0,0,w,h,Color(255,50,50,255))
  2390.  
  2391. end
  2392.  
  2393. self.UnderglowToggleGreen = vgui.Create( "DPanel", self.UnderglowTab )
  2394. self.UnderglowToggleGreen:SetSize( self.UnderglowTab:GetWide() - 20, 0 ) -- 380
  2395. self.UnderglowToggleGreen:SetPos( 10, 10 )
  2396. function self.UnderglowToggleGreen:Paint( w, h )
  2397.  
  2398. draw.RoundedBox(0,0,0,w,h,Color(50,255,50,255))
  2399.  
  2400. draw.RoundedBox(0,0,h-1,w,1,Color(0,0,0,100))
  2401.  
  2402. end
  2403.  
  2404. self.UnderglowToggleButton = vgui.Create("DButton", self.UnderglowTab)
  2405. self.UnderglowToggleButton:SetSize(self.UnderglowTab:GetWide() - 20, 50)
  2406. self.UnderglowToggleButton:SetPos(10, 10)
  2407. self.UnderglowToggleButton:SetText("")
  2408. local getdefaultUGtoggle = false
  2409. local getdefaultUGcolor = Vector(255,255,255)
  2410. if IsValid(vehicle) then
  2411. getdefaultUGtoggle = vehicle:GetNWBool( "RG_VEH_UNDERLIGHTS", false )
  2412. getdefaultUGcolor = vehicle:GetNWVector( "RG_VEH_UNDERLIGHTS_COLOR", Vector(255,255,255) )
  2413. end
  2414. self.UnderglowToggleButton.IsToggled = getdefaultUGtoggle
  2415. self.UnderglowToggleButton.ButtonText = self.UnderglowToggleButton.IsToggled and "On" or !self.UnderglowToggleButton.IsToggled and "Off"
  2416. function self.UnderglowToggleButton:Paint(w, h)
  2417. 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))
  2418.  
  2419. draw.text3D(self.ButtonText, "BFHUD.Size30", w/2, h/6, Color(255,255,255) , TEXT_ALIGN_CENTER, TEXT_ALIGN_TOP )
  2420. end
  2421.  
  2422.  
  2423. self.UnderglowMixerBG = vgui.Create( "DPanel", self.UnderglowTab )
  2424. self.UnderglowMixerBG:SetSize( self.UnderglowTab:GetWide() - 20, 0 ) -- 380
  2425. self.UnderglowMixerBG:SetPos( 10, 10 + self.UnderglowToggleButton:GetTall() + 10 )
  2426. function self.UnderglowMixerBG:Paint( w, h ) end
  2427.  
  2428.  
  2429.  
  2430. self.UnderglowMixer = vgui.Create( "DColorMixer", self.UnderglowMixerBG )
  2431. self.UnderglowMixer:SetPalette( true )
  2432. self.UnderglowMixer:SetAlphaBar( false )
  2433. self.UnderglowMixer:SetWangs( false )
  2434. self.UnderglowMixer:SetColor( Color( getdefaultUGcolor.x, getdefaultUGcolor.y, getdefaultUGcolor.z ) )
  2435. self.UnderglowMixer:SetSize( self.UnderglowMixerBG:GetWide(), self.UnderglowMixerBG:GetWide() )
  2436. self.UnderglowMixer:SetPos( 0, 0 )
  2437. self.UnderglowMixer.Cooldown = 0.1 + CurTime()
  2438. function self.UnderglowMixer:ValueChanged( col )
  2439. if self.Cooldown < CurTime() then
  2440.  
  2441. if IsValid(vehicle) then
  2442. vehicle:SetNWVector( "RG_VEH_UNDERLIGHTS_COLOR", Vector( col.r, col.g, col.b ) )
  2443. end
  2444. self.Cooldown = 0.1 + CurTime()
  2445. end
  2446.  
  2447. end
  2448.  
  2449.  
  2450. self.UnderglowConfirmButton = vgui.Create("DButton", self.UnderglowTab)
  2451. self.UnderglowConfirmButton:SetSize(self.UnderglowTab:GetWide() - 20, 50)
  2452. --self.UnderglowConfirmButton:SetPos(10, 10 + self.UnderglowToggleButton:GetTall() + 10 + self.UnderglowMixerBG:GetTall() + 10)
  2453. self.UnderglowConfirmButton:SetPos(10, self.UnderglowTab:GetTall() - 50 - 10)
  2454. self.UnderglowConfirmButton:SetText("")
  2455. function self.UnderglowConfirmButton:Paint(w, h)
  2456. CAR_DEALER.UnderglowConfirmButton:SetPos(10, CAR_DEALER.UnderglowTab:GetTall() - 50 - 10)
  2457. 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))
  2458. --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))
  2459.  
  2460. draw.text3D("Add To Cart", "BFHUD.Size30", w/2, h/6, Color(255,255,255) , TEXT_ALIGN_CENTER, TEXT_ALIGN_TOP )
  2461. end
  2462.  
  2463.  
  2464. function self.UnderglowToggleButton:DoClick()
  2465.  
  2466. if !IsValid(CAR_DEALER.UnderglowMixerBG) then return end
  2467.  
  2468. if CAR_DEALER.UnderglowToggleButton.IsToggled then
  2469. self.ButtonText = "Off"
  2470. CAR_DEALER.UnderglowToggleGreen:SizeTo(-1,0,0.35,0,-1)
  2471. CAR_DEALER.UnderglowToggleButton.IsToggled = false
  2472.  
  2473. CAR_DEALER.BG:SizeTo(-1,210,0.35,0,-1)
  2474. CAR_DEALER.UnderglowTab:SizeTo(-1,210 - 31 - SIZES.header,0.35,0,-1)
  2475. CAR_DEALER.UnderglowMixerBG:SizeTo(-1,0,0.35,0,-1)
  2476. CAR_DEALER.UnderglowMixer:SizeTo(-1,0,0.35,0,-1)
  2477.  
  2478. if IsValid(vehicle) then
  2479. vehicle:SetNWBool( "RG_VEH_UNDERLIGHTS", false )
  2480. end
  2481. else
  2482.  
  2483. self.ButtonText = "On"
  2484. CAR_DEALER.UnderglowToggleGreen:SizeTo(-1,50,0.35,0,-1)
  2485.  
  2486. --self.UnderglowTab:SetSize( self.BG:GetWide(), self.BG:GetTall() - 31 - SIZES.header )
  2487. CAR_DEALER.BG:SizeTo(-1,600,0.35,0,-1)
  2488. CAR_DEALER.UnderglowTab:SizeTo(-1,600 - 31 - SIZES.header,0.35,0,-1)
  2489. CAR_DEALER.UnderglowMixerBG:SizeTo(-1,380,0.35,0,-1)
  2490. CAR_DEALER.UnderglowMixer:SizeTo(-1,380,0.35,0,-1)
  2491. --CAR_DEALER.UnderglowConfirmButton:MoveTo(10,number posY,number time,number delay=0,number ease=-1,function callback)
  2492.  
  2493. CAR_DEALER.UnderglowToggleButton.IsToggled = true
  2494.  
  2495. if IsValid(vehicle) then
  2496. vehicle:SetNWBool( "RG_VEH_UNDERLIGHTS", true )
  2497. end
  2498. end
  2499.  
  2500. end
  2501.  
  2502. if vehicle:GetNWBool( "RG_VEH_UNDERLIGHTS", false ) then
  2503. self.UnderglowToggleButton.ButtonText = "On"
  2504. self.UnderglowToggleGreen:SizeTo(-1,50,0.35,0,-1)
  2505.  
  2506. --self.UnderglowTab:SetSize( self.BG:GetWide(), self.BG:GetTall() - 31 - SIZES.header )
  2507. self.BG:SizeTo(-1,600,0.35,0,-1)
  2508. self.UnderglowTab:SizeTo(-1,600 - 31 - SIZES.header,0.35,0,-1)
  2509. self.UnderglowMixerBG:SizeTo(-1,380,0.35,0,-1)
  2510. self.UnderglowMixer:SizeTo(-1,380,0.35,0,-1)
  2511. --self.UnderglowConfirmButton:MoveTo(10,number posY,number time,number delay=0,number ease=-1,function callback)
  2512.  
  2513. self.UnderglowToggleButton.IsToggled = true
  2514. end
  2515.  
  2516. function self.UnderglowConfirmButton:DoClick()
  2517.  
  2518.  
  2519. for k, v in pairs( CAR_DEALER.BG_CART.Items ) do
  2520. if v.type == "underglow" then return end
  2521. end
  2522. local edittedvector = Vector(255,255,255)
  2523. if CAR_DEALER.UnderglowToggleButton.IsToggled then
  2524. edittedvector = Vector(CAR_DEALER.UnderglowMixer:GetColor().r,CAR_DEALER.UnderglowMixer:GetColor().g,CAR_DEALER.UnderglowMixer:GetColor().b)
  2525. end
  2526.  
  2527. --CAR_DEALER.UnderglowTab.HasAdded = true
  2528. table.insert( CAR_DEALER.BG_CART.Items,
  2529. {
  2530. type = "underglow",
  2531. data = {
  2532. toggled = CAR_DEALER.UnderglowToggleButton.IsToggled,
  2533. underglowcolor = edittedvector
  2534. }
  2535. }
  2536. )
  2537.  
  2538. RefreshScroll_Cart()
  2539.  
  2540. end
  2541.  
  2542.  
  2543. end
  2544.  
  2545.  
  2546.  
  2547.  
  2548.  
  2549. local function NitroButton()
  2550.  
  2551. self.NitroTab = vgui.Create( "DPanel", self.BG )
  2552. self.NitroTab:SetSize( self.BG:GetWide(), self.BG:GetTall() - 31 - SIZES.header )
  2553. self.NitroTab:SetPos( 0, 30 + SIZES.header )
  2554. self.NitroTab.level = vehicle:GetNWFloat("RG_VEH_NITRO",0)
  2555. function self.NitroTab:Paint( w, h ) end
  2556.  
  2557.  
  2558.  
  2559. self.NitroScrollPanel = vgui.Create("DScrollPanel", self.NitroTab)
  2560. self.NitroScrollPanel:SetSize(self.NitroTab:GetWide(), self.NitroTab:GetTall() - 80 )
  2561. self.NitroScrollPanel:SetPos(0, 0)
  2562.  
  2563.  
  2564. local function createScrollBar()
  2565.  
  2566. local sbar = CAR_DEALER.NitroScrollPanel:GetVBar()
  2567.  
  2568. function sbar:Paint( w, h )
  2569. draw.RoundedBox( 0, 0, 0, w, h, Color( 0, 0, 0, 100 ) )
  2570. end
  2571.  
  2572. function sbar.btnUp:Paint( w, h )
  2573. draw.OutlinedRect(0, 0, w, h, Color(100,100,100,20), 1, Color(0,0,0,256))
  2574. draw.DrawText("^", "BFHUD.Size20", w/2, 0 ,Color( 0,0,0,256 ), TEXT_ALIGN_CENTER)
  2575. end
  2576.  
  2577. function sbar.btnDown:Paint( w, h )
  2578. draw.OutlinedRect(0, 0, w, h, Color(100,100,100,20), 1, Color(0,0,0,256))
  2579. draw.DrawText("v", "BFHUD.Size20", w/2, -4 ,Color( 0,0,0,256 ), TEXT_ALIGN_CENTER)
  2580. end
  2581.  
  2582. function sbar.btnGrip:Paint( w, h )
  2583. draw.OutlinedRect(0, 0, w, h, Color(100,100,100,20), 1, Color(0,0,0,256))
  2584. end
  2585.  
  2586. sbar.btnGrip:SetCursor( "hand" )
  2587.  
  2588. end
  2589. createScrollBar()
  2590.  
  2591.  
  2592. local vtotalnitros = IsValid(vehicle) and 5
  2593. local NitroChooseButton_ = {}
  2594. for i=1,vtotalnitros do
  2595.  
  2596. NitroChooseButton_[i] = self.NitroScrollPanel:Add("DButton")
  2597. NitroChooseButton_[i]:SetSize( self.BG:GetWide(), 50 )
  2598. NitroChooseButton_[i]:SetPos(0,-50 + (50*i) - (1*i))
  2599. --[[
  2600. NitroChooseButton_[i]:SetFont("font_20")
  2601. NitroChooseButton_[i]:SetTextColor( Color(255,255,255,255) )
  2602. NitroChooseButton_[i]:SetText( categories[i] )
  2603. ]]
  2604. NitroChooseButton_[i]:SetText( "" )
  2605.  
  2606. NitroChooseButton_[i].Selected = false
  2607.  
  2608. NitroChooseButton_[i].Paint = function( self, w, h )
  2609.  
  2610. 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))
  2611.  
  2612. if i == 5 then
  2613. draw.text3D("Refill Nitro","font_25",w/2,25/2,Color(255,255,255,255),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER)
  2614. 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)
  2615. elseif i == 1 then
  2616. draw.text3D("Remove Nitro","font_25",w/2,25/2,Color(255,255,255,255),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER)
  2617. 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)
  2618. else
  2619. draw.text3D("Nitro level "..i-1,"font_25",w/2,25/2,Color(255,255,255,255),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER)
  2620. 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)
  2621. end
  2622.  
  2623.  
  2624. end
  2625. NitroChooseButton_[i].DoClick = function()
  2626. for c=1,vtotalnitros do
  2627. NitroChooseButton_[c].Selected = false
  2628. end
  2629.  
  2630. NitroChooseButton_[i].Selected = true
  2631. if IsValid(vehicle) then
  2632.  
  2633. CAR_DEALER.NitroTab.level = i-1
  2634.  
  2635. end
  2636.  
  2637. end
  2638.  
  2639. end
  2640.  
  2641.  
  2642. self.NitroConfirmButton = vgui.Create("DButton", self.NitroTab)
  2643. self.NitroConfirmButton:SetSize(self.NitroTab:GetWide(), 80)
  2644. self.NitroConfirmButton:SetPos(0, self.NitroTab:GetTall() - 80)
  2645. self.NitroConfirmButton:SetText("")
  2646.  
  2647.  
  2648. function self.NitroConfirmButton:Paint(w, h)
  2649. 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))
  2650.  
  2651. draw.text3D("Add To Cart", "BFHUD.Size40", w/2, h/4, Color(255,255,255) , TEXT_ALIGN_CENTER, TEXT_ALIGN_TOP )
  2652. end
  2653.  
  2654.  
  2655. function self.NitroConfirmButton:DoClick()
  2656.  
  2657. for k, v in pairs( CAR_DEALER.BG_CART.Items ) do
  2658. if v.type == "nitro" then return end
  2659. end
  2660.  
  2661.  
  2662. table.insert( CAR_DEALER.BG_CART.Items,
  2663. {
  2664. type = "nitro",
  2665. data = {
  2666. nitro = CAR_DEALER.NitroTab.level
  2667. }
  2668. }
  2669. )
  2670.  
  2671. RefreshScroll_Cart()
  2672.  
  2673. end
  2674.  
  2675.  
  2676.  
  2677. end
  2678.  
  2679.  
  2680.  
  2681.  
  2682.  
  2683.  
  2684.  
  2685. local function ButtonDashboard()
  2686.  
  2687. if not CAR_DEALER.BG:IsValid() then return end
  2688. if IsValid(CAR_DEALER.DashboardScrollPanel) then CAR_DEALER.DashboardScrollPanel:Remove() end
  2689.  
  2690. self.DashboardScrollPanel = vgui.Create("DScrollPanel", self.BG)
  2691. self.DashboardScrollPanel:SetSize(self.BG:GetWide(), self.BG:GetTall() - 31 - SIZES.header )
  2692. self.DashboardScrollPanel:SetPos(0, 30 + SIZES.header)
  2693.  
  2694.  
  2695. for i=1,#categories do
  2696.  
  2697. self.DashboardCategoryButton = self.DashboardScrollPanel:Add("DButton")
  2698. self.DashboardCategoryButton:SetSize( self.BG:GetWide(), 50 )
  2699. self.DashboardCategoryButton:SetPos(0,-50 + (50*i) - (1*i))
  2700. --[[
  2701. self.DashboardCategoryButton:SetFont("font_20")
  2702. self.DashboardCategoryButton:SetTextColor( Color(255,255,255,255) )
  2703. self.DashboardCategoryButton:SetText( categories[i] )
  2704. ]]
  2705. self.DashboardCategoryButton:SetText( "" )
  2706.  
  2707. function self.DashboardCategoryButton:Paint( w, h )
  2708.  
  2709. 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))
  2710.  
  2711. draw.text3D(">","font_25",w - 20,25/2,Color(255,255,255,255),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER)
  2712. draw.text3D(categories[i],"font_25",w/2,25/2,Color(255,255,255,255),TEXT_ALIGN_CENTER,TEXT_ALIGN_CENTER)
  2713.  
  2714. end
  2715. function self.DashboardCategoryButton:DoClick()
  2716.  
  2717. CAR_DEALER.BG.Title = categories[i]
  2718. CAR_DEALER.BackButton:SetVisible(true)
  2719. CAR_DEALER.DashboardScrollPanel:Remove()
  2720.  
  2721. if categories[i] == "Paint" then
  2722. ColorButton()
  2723. elseif categories[i] == "Skin" then
  2724. SkinButton()
  2725. elseif categories[i] == "BodyGroups" then
  2726. BodygroupsButton()
  2727. elseif categories[i] == "Underglow" then
  2728. UnderglowButton()
  2729. elseif categories[i] == "Nitro" then
  2730. NitroButton()
  2731. end
  2732.  
  2733. end
  2734.  
  2735.  
  2736. end
  2737.  
  2738. end
  2739. ButtonDashboard()
  2740.  
  2741. function self.BackButton:DoClick()
  2742. if self.Bodygroups then
  2743. BodygroupsButton()
  2744. CAR_DEALER.BG.Title = "BodyGroups"
  2745. CAR_DEALER.BodygroupsTabExtra:Remove()
  2746. self.Bodygroups = false
  2747. --self:SetVisible(false)
  2748. else
  2749. CAR_DEALER.BG.Title = ""
  2750. self:SetVisible(false)
  2751. if IsValid(CAR_DEALER.ColorTab) then
  2752. CAR_DEALER.ColorTab:SetVisible(false)
  2753. end
  2754. if IsValid(CAR_DEALER.SkinTab) then
  2755. CAR_DEALER.SkinTab:SetVisible(false)
  2756. end
  2757. if IsValid(CAR_DEALER.BodygroupsTab) then
  2758. CAR_DEALER.BodygroupsTab:Remove()
  2759. end
  2760. if IsValid(CAR_DEALER.BodygroupsTab) then
  2761. CAR_DEALER.BodygroupsTab:Remove()
  2762. end
  2763. if IsValid(CAR_DEALER.UnderglowTab) then
  2764. CAR_DEALER.BG:SetSize(400, 600)
  2765. CAR_DEALER.UnderglowTab:Remove()
  2766. end
  2767. if IsValid(CAR_DEALER.NitroTab) then
  2768. CAR_DEALER.NitroTab:Remove()
  2769. end
  2770. ButtonDashboard()
  2771. end
  2772.  
  2773. end
  2774.  
  2775.  
  2776.  
  2777.  
  2778.  
  2779.  
  2780.  
  2781. --[[
  2782. timer.Simple(30,function()
  2783. if self.BG:IsValid() then
  2784. self.BG:Remove()
  2785. end
  2786. if self.BG_CART:IsValid() then
  2787. self.BG_CART:Remove()
  2788. end
  2789. end)]]
  2790. end
  2791.  
  2792. CAR_DEALER:OpenVehicleCustomizer(nil)
  2793.  
  2794.  
  2795.  
  2796. hook.Add( "KeyPress", "RGCarDealerToggleCursor", function( ply, key )
  2797. if( key == IN_JUMP
  2798. and LocalPlayer().RGCursorStatus
  2799. and ply == LocalPlayer()
  2800. and LocalPlayer().RGCursorCheck < CurTime() ) then
  2801. LocalPlayer().RGCursor = !LocalPlayer().RGCursor
  2802. gui.EnableScreenClicker( LocalPlayer().RGCursor )
  2803. LocalPlayer().RGCursorCheck = CurTime() + 0.25
  2804. end
  2805. end )
  2806.  
  2807.  
  2808.  
  2809. g_lightVehicles = g_lightVehicles or {}
  2810. hook.Add( "OnEntityCreated", "RGCarDealerRegisterUnderlights", function( ent )
  2811. if not IsValid( ent ) then return end
  2812. if not ent:IsVehicle() then return end
  2813.  
  2814. --table.insert( lightVehicles, ent )
  2815. g_lightVehicles[ent] = true
  2816. ent:SetNWBool( "RG_VEH_TOGGLEUNDERGLOW", true )
  2817. end )
  2818.  
  2819.  
  2820. local lastGlowPress = 0
  2821. hook.Add( "Tick", "RGCarDealerToggleUnderLights", function()
  2822. if input.IsKeyDown( CAR_DEALER.CFG.ToggleUnderglowKey ) then
  2823. if not IsValid( LocalPlayer():GetVehicle() ) then return end
  2824. if LocalPlayer():GetVehicle():GetClass() ~= "prop_vehicle_jeep" then return end
  2825. if vgui.CursorVisible() then return end
  2826.  
  2827. if lastGlowPress > CurTime() then return end
  2828. lastGlowPress = CurTime() + 0.5
  2829.  
  2830. RunConsoleCommand( "RG_VEH_TOGGLEUNDERGLOW" )
  2831. end
  2832. end )
  2833.  
  2834. hook.Add( "Think", "RGCarDealerUnderLights", function()
  2835. local curTime, lightDieTime = CurTime(), FrameTime() *6
  2836. local lightDecay, lightBrightness, lightSize = 1000 *lightDieTime, 6, 96
  2837.  
  2838. for veh, k in pairs( g_lightVehicles ) do
  2839. if IsValid(veh) and veh:IsVehicle() then
  2840. if veh:GetNWBool( "RG_VEH_UNDERLIGHTS", false ) and isvector(veh:GetNWVector( "RG_VEH_UNDERLIGHTS_COLOR" )) then
  2841.  
  2842. if !veh:GetNWBool( "RG_VEH_TOGGLEUNDERGLOW" ) then continue end
  2843.  
  2844. if veh:GetPos():DistToSqr( LocalPlayer():GetPos() ) > 1500^2 then continue end
  2845.  
  2846.  
  2847. veh:DrawShadow( false )
  2848. veh:DestroyShadow()
  2849.  
  2850. local up = veh:GetUp()
  2851. local right = veh:GetRight()
  2852. if( !veh.RGUnderglowData ) then
  2853. local center = veh:OBBCenter()
  2854. local mins = veh:OBBMins()
  2855. local maxs = veh:OBBMaxs()
  2856.  
  2857. veh.RGUnderglowData = {
  2858. center = center,
  2859. sizeCenter = maxs.x,
  2860.  
  2861. distToFront = center:Distance( Vector( mins.x, mins.y , center.z ) / 2 ),
  2862. distToBack = center:Distance( Vector( maxs.x, maxs.y, center.z ) / 2 ),
  2863. distToUnder = center:Distance( Vector( 0, 0, mins.z ) ) / 2,
  2864. }
  2865.  
  2866. veh.RGUnderglowFunc = {
  2867. function()
  2868. return veh:LocalToWorld( veh.RGUnderglowData.center ) + up * -veh.RGUnderglowData.distToUnder
  2869. end,
  2870.  
  2871. function()
  2872. return veh:LocalToWorld( veh.RGUnderglowData.center ) + veh:GetRight() * -( veh.RGUnderglowData.distToFront - 20 ) + veh:GetUp() * -veh.RGUnderglowData.distToUnder
  2873. end,
  2874.  
  2875. function()
  2876. return veh:LocalToWorld( veh.RGUnderglowData.center ) + veh:GetRight() * -( veh.RGUnderglowData.distToFront - 25 ) + veh:GetUp() * -veh.RGUnderglowData.distToUnder
  2877. end,
  2878.  
  2879. function()
  2880. return veh:LocalToWorld( veh.RGUnderglowData.center ) + veh:GetRight() * ( veh.RGUnderglowData.distToBack - 10 ) + veh:GetUp() * veh.RGUnderglowData.distToUnder
  2881. end,
  2882.  
  2883. function()
  2884. return veh:LocalToWorld( veh.RGUnderglowData.center ) + veh:GetRight() * ( veh.RGUnderglowData.distToBack - 15 ) + veh:GetUp() * -veh.RGUnderglowData.distToUnder
  2885. end,
  2886. }
  2887. end
  2888.  
  2889. local color = veh:GetNWVector( "RG_VEH_UNDERLIGHTS_COLOR", Vector( 255, 255, 255, 255 ) ) -- Vector( 255, 0, 0, 255 )
  2890.  
  2891.  
  2892. if( type( color ) != "Vector" ) then return end
  2893.  
  2894. color = Vector( color.r, color.g, color.b, 255 )
  2895.  
  2896. for i, v in pairs( veh.RGUnderglowFunc ) do
  2897. local light = DynamicLight( veh:EntIndex() + i )
  2898. light.pos = v()
  2899. light.nomodel = true
  2900. light.brightness = lightBrightness
  2901. light.Decay = 1000
  2902. light.Size = lightSize
  2903. light.DieTime = curTime +lightDieTime
  2904.  
  2905. light.r, light.g, light.b = color.x, color.y, color.z
  2906. end
  2907. end
  2908. end
  2909. end
  2910. end )
  2911.  
  2912.  
  2913. local blur = Material("pp/blurscreen")
  2914. function drawBlurRect(x, y, w, h, layers, density, alpha)
  2915. surface.SetDrawColor(255, 255, 255, alpha)
  2916. surface.SetMaterial(blur)
  2917. for i = 1, 3 do
  2918. blur:SetFloat("$blur", (i / layers) * density)
  2919. blur:Recompute()
  2920. render.UpdateScreenEffectTexture()
  2921. render.SetScissorRect(x, y, x+w, y+h, true)
  2922. surface.DrawTexturedRect(0 * -1, 0 * -1, ScrW(), ScrH())
  2923. render.SetScissorRect(0, 0, 0, 0, false)
  2924. end
  2925. end
  2926.  
  2927. local maxNitro = 80
  2928. local lastNitro = 150
  2929. local NitroAprog = 0
  2930. local NitroProg
  2931. hook.Add( "HUDPaint", "RG_VEHICLE_NITRO_DRAW", function()
  2932.  
  2933. if not IsValid(LocalPlayer():GetVehicle()) then return end
  2934. print(LocalPlayer():GetVehicle():GetNWFloat("RG_VEH_NITRO",0))
  2935. if LocalPlayer():GetVehicle():GetNWFloat("RG_VEH_NITRO",0) < 1 then return end
  2936.  
  2937. if LocalPlayer():GetVehicle():RG_CAR_GETNITRO() < 1 then return end
  2938. --print("RG_CAR_GETNITRO",LocalPlayer():Health())
  2939.  
  2940. local width, height = 400, 100
  2941. local width2, height2 = 350, 30
  2942.  
  2943. drawBlurRect( ScrW()/2 - width/2, ScrH() - height - 20, width, height, 3, 3, 255 )
  2944.  
  2945. draw.OutlinedRect( ScrW()/2 - width/2, ScrH() - height - 20, width, height, Color(0,0,0,100), 1, Color(0,0,0,200))
  2946.  
  2947. draw.text3D("Nitro Bar", "BFHUD.Size40", ScrW()/2, ScrH() - height - 20, Color(255,255,255) , TEXT_ALIGN_CENTER, TEXT_ALIGN_TOP )
  2948.  
  2949. maxNitro = LocalPlayer():GetVehicle():RG_CAR_GETNITROLEVEL()*10
  2950.  
  2951. draw.OutlinedRect( ScrW()/2 - width2/2, ScrH() - height2 - 20 - 20, width2, height2, Color(0,0,0,100), 1, Color(0,0,0,200))
  2952.  
  2953. NitroProg = LocalPlayer():GetVehicle():RG_CAR_GETNITRO() / maxNitro
  2954. lastNitro = LocalPlayer():GetVehicle():RG_CAR_GETNITRO()
  2955.  
  2956. NitroAprog = Lerp(FrameTime()*10, NitroAprog, NitroProg)
  2957.  
  2958. 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))
  2959.  
  2960.  
  2961. end )
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement