Advertisement
Guest User

Untitled

a guest
Apr 20th, 2018
95
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 19.16 KB | None | 0 0
  1. /*---------------------------------------------------------------------------
  2. Character Creation & Selection
  3. By Derpes, for Resolute Networks
  4. ---------------------------------------------------------------------------*/
  5. if(SERVER)then
  6.  
  7. util.AddNetworkString("startCharWelcome")
  8. util.AddNetworkString("char_CreatedFirst")
  9. util.AddNetworkString("char_Spawned")
  10. util.AddNetworkString("char_closeF4")
  11.  
  12. local charCooldown
  13. function charScreenF1( ply )
  14. if(ply.charCooldown)then return end
  15. if not(IsValid(ply))then
  16. timer.Simple(1,function()
  17. if not(IsValid(ply))then return end
  18. net.Start("startCharWelcome")
  19. net.WriteTable(TEAMWHITELIST.getAllWhitelists(ply) or {})
  20. net.Send(ply)
  21. end)
  22. else
  23. ply.charCooldown = true
  24. net.Start("startCharWelcome")
  25. net.WriteTable(TEAMWHITELIST.getAllWhitelists(ply) or {})
  26. net.Send(ply)
  27. timer.Simple(2,function()
  28. ply.charCooldown = false
  29. end)
  30. end
  31. end
  32. hook.Add("ShowHelp", "charScreenF1", charScreenF1)
  33. concommand.Add("character",charScreenF1)
  34.  
  35. net.Receive("char_Spawned",function(len,ply)
  36. local jobToSpawn = net.ReadUInt(32)
  37. local modelToSpawn = net.ReadString()
  38. ply:SetTeam(jobToSpawn)
  39. ply:setDarkRPVar("job",jobToSpawn)
  40. ply:StripWeapons()
  41. ply:Spawn()
  42. ply:SetModel(modelToSpawn)
  43. end)
  44.  
  45. net.Receive("char_CreatedFirst",function(len,ply)
  46. local nameToChangeTo = net.ReadString()
  47. ply:setRPName("CR "..math.random(1000,9999).." "..nameToChangeTo)
  48. ply:Spawn()
  49. end)
  50.  
  51. elseif(CLIENT)then
  52.  
  53. function closeF4ResChar()
  54. net.Start("char_closeF4")
  55. net.SendToServer()
  56. end
  57.  
  58. surface.CreateFont("VChar_Title", { font = "bebasneue", size = 40})
  59. surface.CreateFont("VChar_SubText", { font = "Bebas Neue Book", size = 22,weight=500})
  60. surface.CreateFont("VChar_ErrText", { font = "Bebas Neue Book", size = 17,weight=500})
  61. surface.CreateFont("VChar_SubText2", { font = "Bebas Neue Book", size = 22,weight=500,outline=true})
  62.  
  63. local charLogo = Material("gmodresolute/scoreboard/banner.png", "unlitgeneric")
  64. local charBackground = Material("gmodresolute/character/background.png", "unlitgeneric")
  65.  
  66. local isOpen = false
  67. local toModelSend = 0
  68. local toBecomeSend = 0
  69. local curIndex = 1
  70. local skinIndex = 1
  71. local shownModel = "models/player/clone cadet/clonecadet.mdl"
  72. local shownRole = "Trainee"
  73. local shownDesc = "You're a cadet, you need to undergo training in order to join a regiment."
  74. net.Receive("startCharWelcome",function(ply)
  75.  
  76. if(isOpen)then return end
  77.  
  78. local jobs_unsanitized = net.ReadTable()
  79. local hasCreatedBefore = file.Exists("resolute_char.txt","DATA")
  80.  
  81. local jobs = {}
  82. local indexTing = 2
  83. table.insert(jobs,1,{name="Trainee",model="models/player/clone cadet/clonecadet.mdl",id=1,team=1})
  84. for k,v in pairs(RPExtraTeams)do
  85. if(jobs_unsanitized[v.name])then
  86. table.insert(jobs,indexTing,v)
  87. indexTing=indexTing+1
  88. end
  89. end
  90.  
  91. toModelSend=jobs[1].model
  92. toBecomeSend=jobs[1].team
  93. toDescSend=jobs[1].description
  94. curIndex = 1
  95. skinIndex = 1
  96. local nameToSend = ""
  97. local chosenFaction = "Galactic Republic"
  98. timer.Simple(1,function()
  99. isOpen = true
  100. local charFrame = vgui.Create( "DFrame" )
  101. charFrame:SetPos( 50, 50 )
  102. charFrame:SetSize( ScrW(), ScrH() )
  103. charFrame:SetTitle( "" )
  104. charFrame:SetVisible( true )
  105. charFrame:Center()
  106. charFrame:SetDraggable( false )
  107. charFrame:ShowCloseButton( false )
  108. charFrame:MakePopup()
  109. charFrame.Paint = function(s , w , h)
  110. --Background
  111. draw.RoundedBox(0,0,0,ScrW(),ScrH(),Color(15,15,15,255))
  112. surface.SetDrawColor(100,100,100,220)
  113. surface.SetMaterial( charBackground )
  114. surface.DrawTexturedRect( 0, 0, ScrW(), ScrH() )
  115. --Base
  116. draw.RoundedBox(0,-2,-2,ScrW()+4,ScrH()*0.12+4, Color(0,0,0,255))
  117. draw.RoundedBox(0,-1,-1,ScrW()+2,ScrH()*0.12+2, Color(80,80,80,255))
  118. draw.RoundedBox(0,0,0,ScrW(),ScrH()*0.12, Color(35,35,35,255))
  119. surface.SetDrawColor( 255, 255, 255, 255 )
  120. surface.SetMaterial( charLogo )
  121. surface.DrawTexturedRect( ScrW()/2-(ScrW()*0.28/2), 1, ScrW()*0.28, ScrH()*0.12 )
  122. --Faction Box
  123. draw.RoundedBox(0,ScrW()/2-150-2, ScrH()/4.05-2-72,304,34,Color(0,0,0,255))
  124. draw.RoundedBox(0,ScrW()/2-150-1, ScrH()/4.05-1-72,302,32,Color(110,110,110,255))
  125. draw.RoundedBox(0,ScrW()/2-150+35, ScrH()/4.05-72,230,30,Color(55,55,55,255))
  126. --Role Box
  127. draw.RoundedBox(0,ScrW()/2-150-2, ScrH()/4.05-2-36,304,34,Color(0,0,0,255))
  128. draw.RoundedBox(0,ScrW()/2-150-1, ScrH()/4.05-1-36,302,32,Color(110,110,110,255))
  129. draw.RoundedBox(0,ScrW()/2-150+35, ScrH()/4.05-36,230,30,Color(55,55,55,255))
  130. --Name Box
  131. if(hasCreatedBefore!=true)then
  132. draw.RoundedBox(0,ScrW()/2-150-2, ScrH()/4.05-2,304,34,Color(0,0,0,255))
  133. draw.RoundedBox(0,ScrW()/2-150-1, ScrH()/4.05-1,302,32,Color(110,110,110,255))
  134. draw.RoundedBox(0,ScrW()/2-150, ScrH()/4.05,300,30,Color(55,55,55,255))
  135. draw.SimpleTextOutlined("Enter your chosen clone name","VChar_SubText",ScrW()/2,ScrH()/4.05+13,Color(255,255,255,255),1,1,1,Color(0,0,0,255))
  136. end
  137. end
  138.  
  139. local charModel = vgui.Create( "DModelPanel", charFrame )
  140. charModel:SetPos( ScrW()/2-((ScrW()*0.3)/2)+10,ScrH()/1.65-((ScrH()*0.7)/2) )
  141. charModel:SetPaintBackgroundEnabled( false )
  142. charModel:SetSize( ScrW()*0.3, ScrH()*0.7)
  143. charModel:SetColor( Color(255, 255, 255, 255) )
  144. charModel:IsDraggable( false )
  145. charModel:SetModel(shownModel)
  146. charModel:SetCamPos(Vector(50, 0, 50))
  147. charModel:SetAnimated( true )
  148.  
  149. function charModel.Entity:GetPlayerColor() return Color(255,255,255) end
  150. function charModel:LayoutEntity( ent )
  151. self:RunAnimation()
  152. end
  153.  
  154. if(hasCreatedBefore!=true)then
  155. local charNewName = vgui.Create( "DTextEntry", charFrame )
  156. charNewName:SetPos( ScrW()/2-152, ScrH()/3.5945 )
  157. charNewName:SetSize( 304, 30 )
  158. charNewName:SetFont("VChar_SubText")
  159. charNewName:SetText( "Enter Clone Name" )
  160. charNewName.OnEnter = function( self )
  161. chat.AddText( self:GetValue() )
  162. end
  163. charNewName.OnGetFocus = function( self )
  164. if(self:GetText()=="Enter Clone Name")then
  165. self:SetText("")
  166. end
  167. end
  168. charNewName.OnLoseFocus = function( self )
  169. nameToSend = tostring(self:GetValue())
  170. end
  171. end
  172.  
  173. local charCurrentJob = vgui.Create( "DLabel", charFrame )
  174. charCurrentJob:SetPos( ScrW()/2, ScrH()/4.7475 )
  175. charCurrentJob:SetSize(300,30)
  176. charCurrentJob:SetText(shownRole)
  177. charCurrentJob:SetFont("VChar_SubText2")
  178. charCurrentJob:SetContentAlignment(5)
  179. charCurrentJob:CenterHorizontal(0.5)
  180.  
  181. local charCurrentDesc = vgui.Create( "DLabel", charFrame )
  182. charCurrentDesc:SetPos( ScrW()/1, ScrH()/3.3 )
  183. charCurrentDesc:SetSize(ScrW()/2,30)
  184. charCurrentDesc:SetText(shownDesc or "You're a cadet, you need to undergo training in order to join a regiment.")
  185. charCurrentDesc:SetFont("VChar_SubText2")
  186. charCurrentDesc:SetContentAlignment(5)
  187. charCurrentDesc:CenterHorizontal(0.5)
  188.  
  189. local charCurrentFaction = vgui.Create( "DLabel", charFrame )
  190. charCurrentFaction:SetPos( ScrW()/2, ScrH()/4.7475-36 )
  191. charCurrentFaction:SetSize(300,30)
  192. charCurrentFaction:SetText( chosenFaction )
  193. charCurrentFaction:SetFont("VChar_SubText2")
  194. charCurrentFaction:SetContentAlignment(5)
  195. charCurrentFaction:CenterHorizontal(0.5)
  196.  
  197. local charPrevJob = vgui.Create( "DButton", charFrame )
  198. charPrevJob:SetText( "<" )
  199. charPrevJob:SetPos( ScrW()/2-151, ScrH()/4.7915 )
  200. charPrevJob:SetSize( 36, 32 )
  201. charPrevJob.DoClick = function()
  202. if not(hasCreatedBefore)then return end
  203. curIndex = curIndex - 1
  204. if curIndex <= 0 then
  205. curIndex = 1
  206. end
  207. charModel:SetModel("")
  208. if istable(jobs[curIndex].model) then
  209. charModel:SetModel(jobs[curIndex].model[1])
  210. else
  211. charModel:SetModel(jobs[curIndex].model)
  212. end
  213. charCurrentJob:SetText("")
  214. charCurrentJob:SetText(jobs[curIndex].name)
  215. charCurrentDesc:SetText(jobs[curIndex].description or "You're a cadet, you need to undergo training in order to join a regiment.")
  216. toBecomeSend = jobs[curIndex].team
  217. toModelSend = jobs[curIndex].model
  218. end
  219. function charPrevJob:Paint()
  220. if charPrevJob:IsHovered() then
  221. charPrevJobCol = Color(18,18,18,210)
  222. else
  223. charPrevJobCol = Color(5,5,5,170)
  224. end
  225. draw.RoundedBox( 0, 0, 0, self:GetWide(), self:GetTall(), Color(0,0,0,160) )
  226. draw.RoundedBox( 0, 1, 1, self:GetWide()-2, self:GetTall()-2, charPrevJobCol )
  227. draw.SimpleTextOutlined("<","VChar_SubText",charPrevJob:GetWide()/2, charPrevJob:GetTall()/2-1,Color(255,255,255,255),1,1,1,Color(0,0,0,255))
  228. end
  229.  
  230. local charNextJob = vgui.Create( "DButton", charFrame )
  231. charNextJob:SetText( ">" )
  232. charNextJob:SetPos( ScrW()/2+151-36, ScrH()/4.7915 )
  233. charNextJob:SetSize( 36, 32 )
  234. charNextJob.DoClick = function()
  235. if not hasCreatedBefore then return end
  236. curIndex = curIndex + 1
  237. if curIndex >= #jobs then
  238. curIndex = #jobs
  239. end
  240. charModel:SetModel("")
  241. if istable(jobs[curIndex].model) then
  242. charModel:SetModel(jobs[curIndex].model[1])
  243. else
  244. charModel:SetModel(jobs[curIndex].model)
  245. end
  246. charCurrentJob:SetText("")
  247. charCurrentJob:SetText(jobs[curIndex].name)
  248. charCurrentDesc:SetText(jobs[curIndex].description)
  249. toBecomeSend = jobs[curIndex].team
  250. toModelSend = jobs[curIndex].model
  251. end
  252. function charNextJob:Paint()
  253. if charNextJob:IsHovered() then
  254. charNxtJobCol = Color(18,18,18,210)
  255. else
  256. charNxtJobCol = Color(5,5,5,170)
  257. end
  258. draw.RoundedBox( 0, 0, 0, self:GetWide(), self:GetTall(), Color(0,0,0,160) )
  259. draw.RoundedBox( 0, 1, 1, self:GetWide()-2, self:GetTall()-2, charNxtJobCol )
  260. draw.SimpleTextOutlined(">","VChar_SubText",charNextJob:GetWide()/2, charNextJob:GetTall()/2-1,Color(255,255,255,255),1,1,1,Color(0,0,0,255))
  261. end
  262.  
  263. local charPrevFaction = vgui.Create( "DButton", charFrame )
  264. charPrevFaction:SetText( "<" )
  265. charPrevFaction:SetPos( ScrW()/2-151, ScrH()/4.7915-36 )
  266. charPrevFaction:SetSize( 36, 32 )
  267. charPrevFaction.DoClick = function()
  268. charCurrentFaction:SetText("Galactic Republic")
  269. end
  270. function charPrevFaction:Paint()
  271. if charPrevFaction:IsHovered() then
  272. charPrevFactionCol = Color(18,18,18,210)
  273. else
  274. charPrevFactionCol = Color(5,5,5,170)
  275. end
  276. draw.RoundedBox( 0, 0, 0, self:GetWide(), self:GetTall(), Color(0,0,0,160) )
  277. draw.RoundedBox( 0, 1, 1, self:GetWide()-2, self:GetTall()-2, charPrevFactionCol )
  278. draw.SimpleTextOutlined("<","VChar_SubText",charPrevFaction:GetWide()/2, charPrevFaction:GetTall()/2-1,Color(255,255,255,255),1,1,1,Color(0,0,0,255))
  279. end
  280.  
  281. local charNextFaction = vgui.Create( "DButton", charFrame )
  282. charNextFaction:SetText( ">" )
  283. charNextFaction:SetPos( ScrW()/2+151-36, ScrH()/4.7915-36 )
  284. charNextFaction:SetSize( 36, 32 )
  285. charNextFaction.DoClick = function()
  286. charCurrentFaction:SetText("The Seperatists")
  287. end
  288. function charNextFaction:Paint()
  289. if charNextFaction:IsHovered() then
  290. charNxtFactionCol = Color(18,18,18,210)
  291. else
  292. charNxtFactionCol = Color(5,5,5,170)
  293. end
  294. draw.RoundedBox( 0, 0, 0, self:GetWide(), self:GetTall(), Color(0,0,0,160) )
  295. draw.RoundedBox( 0, 1, 1, self:GetWide()-2, self:GetTall()-2, charNxtFactionCol )
  296. draw.SimpleTextOutlined(">","VChar_SubText",charNextFaction:GetWide()/2, charNextFaction:GetTall()/2-1,Color(255,255,255,255),1,1,1,Color(0,0,0,255))
  297. end
  298.  
  299. local charPrevSkin = vgui.Create( "DButton", charFrame )
  300. charPrevSkin:SetText( "<" )
  301. charPrevSkin:SetPos( ScrW()/2-(ScrW()*0.1), ScrH()/2 )
  302. charPrevSkin:SetSize( 36, 32 )
  303. charPrevSkin.DoClick = function()
  304. if(curIndex==nil)then return end
  305. if(jobs[curIndex].model==nil)then return end
  306. if istable(jobs[curIndex].model) then
  307. local skinCount = table.Count(jobs[curIndex].model)
  308. skinIndex = skinIndex - 1
  309. if skinIndex < 1 then
  310. skinIndex = 1
  311. end
  312. charModel:SetModel("")
  313. charModel:SetModel(jobs[curIndex].model[skinIndex])
  314. toModelSend = jobs[curIndex].model[skinIndex]
  315. end
  316. end
  317. function charPrevSkin:Paint()
  318. if charPrevSkin:IsHovered() then
  319. charNxtJobCol = Color(18,18,18,80)
  320. else
  321. charNxtJobCol = Color(5,5,5,40)
  322. end
  323. draw.RoundedBox( 0, 0, 0, self:GetWide(), self:GetTall(), Color(0,0,0,30) )
  324. draw.RoundedBox( 0, 1, 1, self:GetWide()-2, self:GetTall()-2, charNxtJobCol )
  325. draw.SimpleTextOutlined("<","VChar_SubText",charPrevSkin:GetWide()/2, charPrevSkin:GetTall()/2-1,Color(255,255,255,255),1,1,1,Color(0,0,0,255))
  326. end
  327.  
  328.  
  329. local charNextSkin = vgui.Create( "DButton", charFrame )
  330. charNextSkin:SetText( ">" )
  331. charNextSkin:SetPos( ScrW()/2+(ScrW()*0.1), ScrH()/2 )
  332. charNextSkin:SetSize( 36, 32 )
  333. charNextSkin.DoClick = function()
  334.  
  335. if(curIndex==nil)then return end
  336. if(jobs[curIndex].model==nil)then return end
  337. if istable(jobs[curIndex].model) then
  338. local skinCount = table.Count(jobs[curIndex].model)
  339. skinIndex = skinIndex + 1
  340. if skinIndex > skinCount then
  341. skinIndex = skinCount
  342. end
  343. charModel:SetModel("")
  344. charModel:SetModel(jobs[curIndex].model[skinIndex])
  345. toModelSend = jobs[curIndex].model[skinIndex]
  346. end
  347. end
  348. function charNextSkin:Paint()
  349. if charNextSkin:IsHovered() then
  350. charNxtJobCol = Color(18,18,18,80)
  351. else
  352. charNxtJobCol = Color(5,5,5,40)
  353. end
  354. draw.RoundedBox( 0, 0, 0, self:GetWide(), self:GetTall(), Color(0,0,0,30) )
  355. draw.RoundedBox( 0, 1, 1, self:GetWide()-2, self:GetTall()-2, charNxtJobCol )
  356. draw.SimpleTextOutlined(">","VChar_SubText",charNextSkin:GetWide()/2, charNextSkin:GetTall()/2-1,Color(255,255,255,255),1,1,1,Color(0,0,0,255))
  357. end
  358.  
  359.  
  360. timer.Simple(0.2,function()
  361. local charCreateButton = vgui.Create( "DButton", charFrame )
  362. charCreateButton:SetPos( ScrW()/2-100, ScrH()-70 )
  363. charCreateButton:SetSize( 200, 30 )
  364. charCreateButton:SetText( "" )
  365. function charCreateButton:Paint()
  366. if charCreateButton:IsHovered() then
  367. VCharAcceptColor = Color(80,0,0,180)
  368. else
  369. VCharAcceptColor = Color(130,0,0,180)
  370. end
  371. draw.RoundedBox( 0, 0, 0, self:GetWide(), self:GetTall(), Color(0,0,0,160) )
  372. draw.RoundedBox( 0, 1, 1, self:GetWide()-2, self:GetTall()-2, VCharAcceptColor )
  373. if(hasCreatedBefore==true)then
  374. draw.SimpleTextOutlined("Spawn","VChar_SubText",charCreateButton:GetWide()/2, charCreateButton:GetTall()/2-1,Color(70,255,70,255),1,1,1,Color(0,0,0,255))
  375. else
  376. draw.SimpleTextOutlined("Create Character","VChar_SubText",charCreateButton:GetWide()/2, charCreateButton:GetTall()/2-1,Color(70,255,70,255),1,1,1,Color(0,0,0,255))
  377. end
  378.  
  379. end
  380. function charCreateButton:DoClick()
  381. if(hasCreatedBefore==true)then
  382. if(isstring(toModelSend))then
  383. charFrame:SlideUp(0.15)
  384. net.Start("char_Spawned")
  385. net.WriteUInt(toBecomeSend,32)
  386. net.WriteString(toModelSend)
  387. net.SendToServer()
  388. end
  389. else
  390. if(string.len(nameToSend)<3)then
  391. local charLengthError = vgui.Create( "DFrame" )
  392. charLengthError:SetPos( 50, 50 )
  393. charLengthError:SetSize( 350, 100 )
  394. charLengthError:SetTitle( "" )
  395. charLengthError:SetVisible( true )
  396. charLengthError:Center()
  397. charLengthError:SetDraggable( false )
  398. charLengthError:ShowCloseButton( false )
  399. charLengthError:MakePopup()
  400. charLengthError.Paint = function(s,w,h)
  401. draw.RoundedBox(0,0,0,w,h,Color(30,30,30,255))
  402. draw.RoundedBox(0,0,0,w,30,Color(150,0,0,255))
  403. draw.DrawText("Name Error", "VChar_SubText", 5, 2, Color(255, 255, 255, 255), TEXT_ALIGN_LEFT)
  404. draw.DrawText("Name must be at least 3 characters long", "VChar_SubText", 175, 37, Color(200, 30, 30, 255), TEXT_ALIGN_CENTER)
  405. end
  406.  
  407. local charLengthOk = vgui.Create( "DButton", charLengthError )
  408. charLengthOk:SetPos( charLengthError:GetWide()/2-50, 65 )
  409. charLengthOk:SetSize( 100, 30 )
  410. charLengthOk:SetText( "" )
  411. function charLengthOk:Paint()
  412. draw.RoundedBox( 0, 0, 0, self:GetWide(), self:GetTall(), Color( 0, 150, 150, 255 ) )
  413. draw.DrawText("Understood", "VChar_SubText", self:GetWide()/2, 3, Color(255, 255, 255, 255), TEXT_ALIGN_CENTER)
  414. end
  415. function charLengthOk:DoClick()
  416. charLengthError:Remove()
  417. end
  418. return
  419. end
  420. shownModel = jobs[1].model
  421. shownRole = jobs[1].name
  422. shownDesc = jobs[1].description
  423. curIndex = 1
  424. skinIndex = 1
  425. charModel:SetModel("")
  426. charFrame:SlideUp(0.15)
  427. charFrame:Remove()
  428. if not(file.Exists("resolute_char.txt","DATA"))then
  429. net.Start("char_CreatedFirst")
  430. net.WriteString(nameToSend)
  431. net.SendToServer()
  432. file.Write( "resolute_char.txt", "Character created on Derpes shitty creation thing!" )
  433. end
  434.  
  435. end
  436. jobs_unsanitized = {}
  437. jobs = {}
  438. isOpen = false
  439. end
  440.  
  441. local charBackButton = vgui.Create( "DButton", charFrame )
  442. charBackButton:SetPos( ScrW()/2-100, ScrH()-36 )
  443. charBackButton:SetSize( 200, 30 )
  444. charBackButton:SetText( "" )
  445. function charBackButton:Paint()
  446. if not(hasCreatedBefore)then return end
  447. if charBackButton:IsHovered() then
  448. VCharAcceptColor = Color(80,0,0,180)
  449. else
  450. VCharAcceptColor = Color(130,0,0,180)
  451. end
  452. draw.RoundedBox( 0, 0, 0, self:GetWide(), self:GetTall(), Color(0,0,0,160) )
  453. draw.RoundedBox( 0, 1, 1, self:GetWide()-2, self:GetTall()-2, VCharAcceptColor )
  454. draw.SimpleTextOutlined("Return To MOTD","VChar_SubText",charBackButton:GetWide()/2, charBackButton:GetTall()/2-1,Color(223,223,223,255),1,1,1,Color(0,0,0,255))
  455. end
  456. function charBackButton:DoClick()
  457. if not(hasCreatedBefore)then return end
  458. shownModel = jobs[1].model
  459. shownRole = jobs[1].name
  460. shownDesc = jobs[1].description
  461. curIndex = 1
  462. skinIndex = 1
  463. RunConsoleCommand("motd")
  464. charModel:SetModel("")
  465. charFrame:SlideUp(0.15)
  466. charFrame:Remove()
  467. jobs_unsanitized = {}
  468. jobs = {}
  469. isOpen = false
  470. end
  471. end)
  472. end)
  473. end)
  474.  
  475. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement