if engine.ActiveGamemode() ~= "sandbox" then return end include('shared.lua') function ENT:Draw() --self:DrawModel() -- Draws Model Client Side end function ENT:Hint() AddWorldTip( self:EntIndex(), "Spawnpoint", 0.5, self:GetPos(), self ) end local navnodes = {} local selectors = {} local function sync_navnode_table(who) print("Synching navnodes, table is") PrintTable(navnodes) net.Start("edit_townie_navchange") net.WriteEntity(who) net.WriteTable(navnodes) net.SendToServer() end local function add_nav_item(layout,name,elist,who) print("Adding nav item",layout,name,elist) local holder = vgui.Create("DPanel",layout) local selector = vgui.Create("DComboBox",holder) selector.num = #navnodes + 1 print("adding the ", selector.num, "selector") selectors[selector.num] = selector selector:Dock(FILL) for k,v in pairs(elist) do print("Adding option",v) selector:AddChoice(v) end if name ~= nil then selector:SetValue(name) navnodes[#navnodes+1] = name end selector:SetWidth(150) selector.OnSelect = function(self,index,value) print(value,"selected","on",selector.num) navnodes[selector.num] = value sync_navnode_table(who) end local delete = vgui.Create("DButton",holder) delete:Dock(RIGHT) delete:SetText("-") delete.DoClick = function(self) for i = selector.num,#navnodes do navnodes[i] = navnodes[i+1] selectors[i] = selectors[i+1] if IsValid(selectors[i]) then selectors[i].num = selectors[i].num - 1 end end holder:Remove() sync_navnode_table(who) end layout:Add(holder) end net.Receive("edit_townie_use",function() print("I want to make the edit panel for a townie") navnodes = {} local who = net.ReadEntity() local tbl = net.ReadTable() --Current nav nodes for this townie local posi = net.ReadTable() --A list of all nav nodes in the map local editorframe = vgui.Create( "DFrame" ) editorframe:SetPos( 100, 100 ) editorframe:SetSize( 300, 200 ) editorframe:SetTitle( "Edit" .. tostring(who) ) editorframe:SetDraggable( true ) editorframe:MakePopup() local editor = vgui.Create("DPanel",editorframe) editor:Dock(FILL) local layout = vgui.Create( "DListLayout", editor ) layout:Dock(FILL) print("Already setup navnodes:",tbl) PrintTable(tbl) for k,v in pairs(tbl) do print("adding",layout,v,slist) add_nav_item(layout,v,posi,who) end print("After creation, navnodes are") PrintTable(navnodes) local addbutton = vgui.Create("DButton",layout) addbutton:Dock(BOTTOM) addbutton:SetText("+") addbutton.DoClick = function() add_nav_item(layout,nil,posi,who) end layout:SetSize( 100, 100 ) layout:SetPos( 20, 50 ) end)