Advertisement
Guest User

client

a guest
Aug 7th, 2021
64
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 13.84 KB | None | 0 0
  1. include( "shared.lua" )
  2.  
  3. local SPAWN_MENU = {}
  4. SPAWN_MENU.models = {"None"}
  5. SPAWN_MENU.weapons = {"None", "weapon_357", "weapon_alyxgun", "weapon_annabelle", "weapon_ar2", "weapon_brickbat",
  6. "weapon_crossbow", "weapon_crowbar", "weapon_frag", "weapon_pistol", "weapon_rpg",
  7. "weapon_shotgun", "weapon_smg1", "weapon_stunstick"}
  8. SPAWN_MENU.npcs = {"None", "npc_alyx", "npc_antlion", "npc_antlionguard", "npc_barney", "npc_citizen", "npc_combine_s",
  9. "npc_crow", "npc_fastzombie", "npc_headcrab", "npc_headcrab_black", "npc_headcrab_fast",
  10. "npc_manhack", "npc_metropolice", "npc_monk", "npc_poisonzombie", "npc_rollermine",
  11. "npc_sniper", "npc_vortigaunt", "npc_zombie", "npc_zombie_torso"}
  12.  
  13. function SPAWN_MENU:Open_Editor()
  14. SPAWN_MENU.editing = nil
  15.  
  16. self.panel = vgui.Create("DFrame")
  17. self.panel:SetPos(50,50)
  18. self.panel:SetSize(700, 500)
  19. self.panel:SetTitle("Spawn Editor")
  20. self.panel:SetVisible(true)
  21. self.panel:SetDraggable(true)
  22. self.panel:ShowCloseButton(true)
  23. self.panel:MakePopup()
  24.  
  25. self.psheet = vgui.Create( "DPropertySheet", self.panel )
  26. self.psheet:SetPos( 10, 35 )
  27. self.psheet:SetSize( 680, 240 )
  28.  
  29. self.addTab = vgui.Create( "DPanelList" )
  30. self.addTab:SetPos( 0, 0 )
  31. self.addTab:SetSize( self.psheet:GetWide(), self.psheet:GetTall() )
  32. self.addTab:SetSpacing( 5 )
  33. self.addTab:EnableHorizontal( false )
  34. self.addTab:EnableVerticalScrollbar( true )
  35.  
  36. self.editTab = vgui.Create( "DPanelList" )
  37. self.editTab:SetPos( 0, 0 )
  38. self.editTab:SetSize( self.psheet:GetWide(), self.psheet:GetTall() )
  39. self.editTab:SetSpacing( 5 )
  40. self.editTab:EnableHorizontal( false )
  41. self.editTab:EnableVerticalScrollbar( true )
  42.  
  43. self.tab1 = self.psheet:AddSheet("Add", self.addTab, nil, false, false, nil)
  44. self.tab2 = self.psheet:AddSheet("Edit", self.editTab, nil, false, false, nil)
  45.  
  46. self:draw_options(0)
  47. self:draw_options(1)
  48. self:disable_edit(true)
  49.  
  50. --List
  51. self.list = vgui.Create("DListView", self.panel)
  52. self.list:SetPos(10,290)
  53. self.list:SetSize(680,200) --W, H
  54. self.list:SetMultiSelect(false)
  55. self.list:AddColumn("ID")
  56. self.list:AddColumn(language.GetPhrase("zinv.health"))
  57. self.list:AddColumn(language.GetPhrase("zinv.chance"))
  58. self.list:AddColumn(language.GetPhrase("zinv.model"))
  59. self.list:AddColumn(language.GetPhrase("zinv.scale"))
  60. self.list:AddColumn(language.GetPhrase("zinv.npc"))
  61. self.list:AddColumn(language.GetPhrase("zinv.weapon"))
  62. self.list:AddColumn(language.GetPhrase("zinv.max"))
  63. self.list:AddColumn(language.GetPhrase("zinv.type"))
  64. self.list:AddColumn(language.GetPhrase("zinv.explode"))
  65. self.list.OnRowRightClick = function ( pnl, num )
  66. local MenuButtonOptions = DermaMenu()
  67. MenuButtonOptions:AddOption(language.GetPhrase("zinv.deleterow"), function()
  68. self.list:RemoveLine(num)
  69. table.remove(zombie_list, num)
  70. self:update_table()
  71. if LocalPlayer():IsSuperAdmin() then
  72. self.panel:Close()
  73. SPAWN_MENU:Open_Editor()
  74. end
  75. end)
  76. MenuButtonOptions:AddOption(language.GetPhrase("zinv.edit").."...", function() self:zlist_edit_row(num) end )
  77. MenuButtonOptions:Open()
  78. end
  79.  
  80. local i = 1
  81. for k, v in pairs(zombie_list) do
  82. self:add_line(table.Copy(v), i)
  83. i = i + 1
  84. end
  85. end
  86.  
  87. function SPAWN_MENU:add_line(data, id)
  88. if tonumber(data["health"]) <= 0 then
  89. data["health"] = "Default"
  90. end
  91. if data["model"] == "" then
  92. data["model"] = "None"
  93. end
  94. if data["weapon"] == "" then
  95. data["weapon"] = "None"
  96. end
  97.  
  98. self.list:AddLine(id, data["health"], data["chance"], data["model"], data["scale"], data["class_name"], data["weapon"], data["max"], data["type"], data["explode"])
  99. end
  100.  
  101. function SPAWN_MENU:disable_edit(bool)
  102. self.editTab.health:SetDisabled(bool)
  103. self.editTab.chance:SetDisabled(bool)
  104. self.editTab.model:SetDisabled(bool)
  105. self.editTab.scale:SetDisabled(bool)
  106. self.editTab.max:SetDisabled(bool)
  107. self.editTab.type:SetDisabled(bool)
  108. self.editTab.explode:SetDisabled(bool)
  109. self.editTab.npc:SetDisabled(bool)
  110. self.editTab.weapon:SetDisabled(bool)
  111. self.editTab.button:SetDisabled(bool)
  112. self.editTab.modeldrop:SetDisabled(bool)
  113. self.editTab.npcdrop:SetDisabled(bool)
  114. self.editTab.weapondrop:SetDisabled(bool)
  115.  
  116. self.editTab.health:SetEditable(!bool)
  117. self.editTab.chance:SetEditable(!bool)
  118. self.editTab.model:SetEditable(!bool)
  119. self.editTab.scale:SetEditable(!bool)
  120. self.editTab.max:SetEditable(!bool)
  121. self.editTab.npc:SetEditable(!bool)
  122. self.editTab.weapon:SetEditable(!bool)
  123. end
  124.  
  125. function SPAWN_MENU:apply_edit()
  126. zombie_list[self.editing]["health"] = self.editTab.health:GetValue()
  127. zombie_list[self.editing]["chance"] = self.editTab.chance:GetValue()
  128. zombie_list[self.editing]["model"] = self.editTab.model:GetValue()
  129. zombie_list[self.editing]["scale"] = self.editTab.scale:GetValue()
  130. zombie_list[self.editing]["class_name"] = self.editTab.npc:GetValue()
  131. zombie_list[self.editing]["weapon"] = self.editTab.weapon:GetValue()
  132. zombie_list[self.editing]["max"] = self.editTab.max:GetValue()
  133. zombie_list[self.editing]["type"] = self.editTab.type:GetValue()
  134. zombie_list[self.editing]["explode"] = tostring(self.editTab.explode:GetChecked())
  135. self.list:RemoveLine(self.editing)
  136. self:add_line(table.Copy(zombie_list[self.editing]), self.editing)
  137. self.editing = nil
  138. self.editTab.editlabel:SetText(language.GetPhrase("zinv.editing")..": nil")
  139. self:disable_edit(true)
  140. self:update_table()
  141. end
  142.  
  143. function SPAWN_MENU:apply_add()
  144. local new = {}
  145. new["health"] = self.addTab.health:GetValue()
  146. new["chance"] = self.addTab.chance:GetValue()
  147. new["model"] = self.addTab.model:GetValue()
  148. new["scale"] = self.addTab.scale:GetValue()
  149. new["class_name"] = self.addTab.npc:GetValue()
  150. new["weapon"] = self.addTab.weapon:GetValue()
  151. new["max"] = self.addTab.max:GetValue()
  152. new["type"] = self.addTab.type:GetValue()
  153. new["explode"] = tostring(self.addTab.explode:GetChecked())
  154.  
  155. table.insert(zombie_list, new)
  156. self:add_line(table.Copy(new), table.Count(zombie_list))
  157. self:update_table()
  158. end
  159.  
  160. function SPAWN_MENU:draw_options(tabnum)
  161. local tab = {}
  162. if tabnum == 0 then
  163. tab = self.addTab
  164. tab.button = vgui.Create( "DButton", tab )
  165. tab.button:SetSize( 100, 30 )
  166. tab.button:SetPos( 560, 170)
  167. tab.button:SetText( language.GetPhrase("zinv.add") )
  168. tab.button.DoClick = function( button )
  169. self:apply_add()
  170. end
  171. else
  172. tab = self.editTab
  173. tab.editlabel = vgui.Create("DLabel", tab)
  174. tab.editlabel:SetPos(10, 190)
  175. tab.editlabel:SetText(language.GetPhrase("zinv.editing")..": "..tostring(self.editing))
  176. tab.editlabel:SizeToContents()
  177.  
  178. tab.button = vgui.Create( "DButton", tab )
  179. tab.button:SetSize( 100, 30 )
  180. tab.button:SetPos( 560, 170)
  181. tab.button:SetText( language.GetPhrase("zinv.update") )
  182. tab.button.DoClick = function( button )
  183. self:apply_edit()
  184. end
  185. end
  186.  
  187. --Health
  188. tab.healthlabel = vgui.Create("DLabel", tab)
  189. tab.healthlabel:SetPos(10,10)
  190. tab.healthlabel:SetText(language.GetPhrase("zinv.health")..":")
  191. tab.healthlabel:SizeToContents()
  192. tab.health = vgui.Create("DNumberWang", tab)
  193. tab.health:SetPos(60,10)
  194. tab.health:SetMin(-1)
  195. tab.health:SetValue(-1)
  196.  
  197. --Chance
  198. tab.chancelabel = vgui.Create("DLabel", tab)
  199. tab.chancelabel:SetPos(10,35)
  200. tab.chancelabel:SetText(language.GetPhrase("zinv.chance").." %:")
  201. tab.chancelabel:SizeToContents()
  202. tab.chance = vgui.Create("DNumberWang", tab)
  203. tab.chance:SetDecimals(5)
  204. tab.chance:SetPos(60,35)
  205. tab.chance:SetValue(100)
  206. tab.chance:SetMin(0.1)
  207. tab.chance:SetMax(100)
  208.  
  209. --Scale
  210. tab.scalelabel = vgui.Create("DLabel", tab)
  211. tab.scalelabel:SetPos(10,60)
  212. tab.scalelabel:SetText(language.GetPhrase("zinv.Scale")..":")
  213. tab.scalelabel:SizeToContents()
  214. tab.scale = vgui.Create("DNumberWang", tab)
  215. tab.scale:SetPos(60,60)
  216. tab.scale:SetValue(1)
  217. tab.scale:SetMin(1)
  218.  
  219. --Model
  220. tab.modellabel = vgui.Create("DLabel", tab)
  221. tab.modellabel:SetPos(200,10)
  222. tab.modellabel:SetText(language.GetPhrase("zinv.model")..":")
  223. tab.modellabel:SizeToContents()
  224. tab.modeldrop = vgui.Create("DComboBox", tab)
  225. tab.modeldrop:SetPos(250,10)
  226. tab.modeldrop:SetWide(300)
  227. tab.modeldrop:SetValue(SPAWN_MENU.models[1])
  228. for k, v in pairs(SPAWN_MENU.models) do
  229. tab.modeldrop:AddChoice(v)
  230. end
  231. tab.modeldrop.OnSelect = function(index,value,data)
  232. tab.model:SetValue(SPAWN_MENU.models[value])
  233. end
  234. tab.model = vgui.Create("DTextEntry", tab)
  235. tab.model:SetPos(250,35)
  236. tab.model:SetWide(300)
  237.  
  238. --NPC
  239. tab.npclabel = vgui.Create("DLabel", tab)
  240. tab.npclabel:SetPos(200,65)
  241. tab.npclabel:SetText(language.GetPhrase("zinv.npc")..":")
  242. tab.npclabel:SizeToContents()
  243. tab.npcdrop = vgui.Create("DComboBox", tab)
  244. tab.npcdrop:SetPos(250,65)
  245. tab.npcdrop:SetWide(300)
  246. tab.npcdrop:SetValue(SPAWN_MENU.npcs[1])
  247. for k, v in pairs(SPAWN_MENU.npcs) do
  248. tab.npcdrop:AddChoice(v)
  249. end
  250. tab.npcdrop.OnSelect = function(index,value,data)
  251. tab.npc:SetValue(SPAWN_MENU.npcs[value])
  252. end
  253. tab.npc = vgui.Create("DTextEntry", tab)
  254. tab.npc:SetPos(250,90)
  255. tab.npc:SetWide(300)
  256.  
  257. --Weapon
  258. tab.weaponlabel = vgui.Create("DLabel", tab)
  259. tab.weaponlabel:SetPos(200,120)
  260. tab.weaponlabel:SetText(language.GetPhrase("zinv.weapon")..":")
  261. tab.weaponlabel:SizeToContents()
  262. tab.weapondrop = vgui.Create("DComboBox", tab)
  263. tab.weapondrop:SetPos(250,120)
  264. tab.weapondrop:SetWide(300)
  265. tab.weapondrop:SetValue(SPAWN_MENU.weapons[1])
  266. for k, v in pairs(SPAWN_MENU.weapons) do
  267. tab.weapondrop:AddChoice(v)
  268. end
  269. tab.weapondrop.OnSelect = function(index,value,data)
  270. tab.weapon:SetValue(SPAWN_MENU.weapons[value])
  271. end
  272. tab.weapon = vgui.Create("DTextEntry", tab)
  273. tab.weapon:SetPos(250,145)
  274. tab.weapon:SetWide(300)
  275.  
  276. --Max NPCs
  277. tab.maxLabel = vgui.Create("DLabel", tab)
  278. tab.maxLabel:SetPos(10,85)
  279. tab.maxLabel:SetText(language.GetPhrase("zinv.max")..":")
  280. tab.maxLabel:SizeToContents()
  281. tab.max = vgui.Create("DNumberWang", tab)
  282. tab.max:SetPos(60,85)
  283. tab.max:SetValue(10)
  284. tab.max:SetMin(0)
  285.  
  286. --Type
  287. tab.typeLabel = vgui.Create("DLabel", tab)
  288. tab.typeLabel:SetPos(10,110)
  289. tab.typeLabel:SetText(language.GetPhrase("zinv.chaser").."?")
  290. tab.typeLabel:SizeToContents()
  291. tab.type = vgui.Create("DComboBox", tab)
  292. tab.type:SetPos(60,110)
  293. tab.type:SetWide(100)
  294. tab.type:SetValue("Chaser")
  295. tab.type:AddChoice("Chaser")
  296. tab.type:AddChoice("Roamer")
  297. tab.type:AddChoice("None")
  298.  
  299. --Explode
  300. tab.explodeLabel = vgui.Create("DLabel", tab)
  301. tab.explodeLabel:SetPos(10,135)
  302. tab.explodeLabel:SetText(language.GetPhrase("zinv.explode").."?")
  303. tab.explodeLabel:SizeToContents()
  304. tab.explode = vgui.Create("DCheckBox", tab)
  305. tab.explode:SetPos(60,135)
  306. tab.explode:SetValue(0)
  307. end
  308.  
  309. function SPAWN_MENU:zlist_edit_row(num)
  310. self.editing = num
  311. self:disable_edit(false)
  312. self.editTab.editlabel:SetText(language.GetPhrase("zinv.editing")..": "..tostring(self.editing))
  313. self.psheet:SetActiveTab(self.tab2.Tab)
  314.  
  315. self.editTab.health:SetText(zombie_list[num]["health"])
  316. self.editTab.chance:SetText(zombie_list[num]["chance"])
  317. self.editTab.model:SetText(zombie_list[num]["model"])
  318. self.editTab.scale:SetText(zombie_list[num]["scale"])
  319. self.editTab.npc:SetText(zombie_list[num]["class_name"])
  320. self.editTab.weapon:SetText(zombie_list[num]["weapon"])
  321. self.editTab.max:SetText(zombie_list[num]["max"])
  322. self.editTab.type:SetText(zombie_list[num]["type"])
  323. self.editTab.explode:SetValue(zombie_list[num]["explode"])
  324. end
  325.  
  326. function SPAWN_MENU:update_table()
  327. net.Start("send_ztable_sr")
  328. net.WriteTable(zombie_list)
  329. net.SendToServer()
  330. end
  331.  
  332. hook.Add("Initialize", "initializing_zinv_c", function()
  333. zombie_list = {}
  334. end)
  335.  
  336. hook.Add("PopulateToolMenu", "ZINVmenu", function()
  337. spawnmenu.AddToolMenuOption("Options", "ZINV", "ZINV", "Settings", "", "", OnPopulateSettingsPanel)
  338. end)
  339.  
  340. net.Receive("send_ztable_cl", function(len)
  341. zombie_list = net.ReadTable()
  342. end)
  343.  
  344. function OnPopulateSettingsPanel(panel)
  345. local p = panel:AddControl("CheckBox", {
  346. Label = language.GetPhrase("zinv.enabled") .. "?"
  347. })
  348. p:SetValue( GetConVarNumber( "zinv" ) )
  349. p.OnChange = function(self)
  350. if LocalPlayer():IsSuperAdmin() then
  351. net.Start("zinv_changecvar")
  352. net.WriteString("zinv")
  353. net.WriteFloat(self:GetChecked()==true and 1 or 0)
  354. net.SendToServer()
  355. else
  356. chat.AddText(Color(255,62,62), "WARNING: ", Color(255,255,255), language.GetPhrase("zinv.bSuperAdmin"))
  357. chat.PlaySound()
  358. end
  359. end
  360.  
  361. local p = panel:AddControl("Slider", {
  362. Label = language.GetPhrase("zinv.minspawndist"),
  363. Type = "Long",
  364. Min = "0",
  365. Max = "20000"
  366. })
  367. p:SetValue( GetConVarNumber( "zinv_mindist" ) )
  368. p.OnValueChanged = function(self)
  369. if LocalPlayer():IsSuperAdmin() then
  370. net.Start("zinv_changecvar")
  371. net.WriteString("zinv_mindist")
  372. net.WriteFloat(self:GetValue())
  373. net.SendToServer()
  374. else
  375. chat.AddText(Color(255,62,62), "WARNING: ", Color(255,255,255), language.GetPhrase("zinv.bSuperAdmin"))
  376. chat.PlaySound()
  377. end
  378. end
  379.  
  380. panel:AddControl("Label", {
  381. Text = language.GetPhrase("zinv.minspawndistlabel")
  382. })
  383.  
  384. local p = panel:AddControl("Slider", {
  385. Label = language.GetPhrase("zinv.maxspawndist"),
  386. Type = "Long",
  387. Min = "0",
  388. Max = "20000",
  389. })
  390. p:SetValue( GetConVarNumber( "zinv_maxdist" ) )
  391. p.OnValueChanged = function(self)
  392. if LocalPlayer():IsSuperAdmin() then
  393. net.Start("zinv_changecvar")
  394. net.WriteString("zinv_maxdist")
  395. net.WriteFloat(self:GetValue())
  396. net.SendToServer()
  397. else
  398. chat.AddText(Color(255,62,62), "WARNING: ", Color(255,255,255), language.GetPhrase("zinv.bSuperAdmin"))
  399. chat.PlaySound()
  400. end
  401. end
  402.  
  403. panel:AddControl("Label", {
  404. Text = ""
  405. })
  406.  
  407. local p = panel:AddControl("Button", {
  408. Label = language.GetPhrase( "zinv.spawneditor" ),
  409. Command = ""
  410. })
  411. p.DoClick = function()
  412. if LocalPlayer():IsSuperAdmin() then
  413. SPAWN_MENU:Open_Editor()
  414. else
  415. chat.AddText(Color(255,62,62), "WARNING: ", Color(255,255,255), language.GetPhrase( "zinv.bSuperAdmin" ))
  416. chat.PlaySound()
  417. end
  418. end
  419. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement