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 function syncentity(ent,data) print("sending data to server") PrintTable(data) net.Start("edit_towniespawn_update") net.WriteEntity(ent) net.WriteTable(data) net.SendToServer() end local navnode_info = {} concommand.Add("artery_getnavnodes",function() net.Start("edit_requestnavnodes") net.SendToServer() end) net.Receive("edit_respondnavnodes",function() navnode_info = net.ReadTable() print("client received navnode info:") PrintTable(navnode_info) end) local function draw_edit_panel(who, data) if not GCompute then error("GCompute not installed!") end if not GCompute.IDE then error("GCompute was initalized wrong or has changed, update this file!") end local inst = GCompute.IDE.GetInstance() inst:SetVisible (true) print("Opening file browser!") PrintTable(data) --Remove donation panel for k,v in pairs(inst.ViewManager.Views) do if type(k) == "Table" and k.Title == "Donate!" then k:SetVisible(false) end end --Open up the npc's file (create it if it dosen't already exist) local filename = "artery/maps/" .. game.GetMap() .. "/npcs/" .. data.Name .. ".txt" if not file.Exists(filename, "DATA") then local pos = who:GetPos() local npctxt = string.format(default_townie,pos.x,pos.y,pos.z,data.Model,data.Name,table.concat(data.NavNodes),data.Name) file.Write(filename,npctxt) end --Open up this npc's file inst:OpenUri("game/data/" .. filename,function(succ,res,view) view:Select() end) --Set our file browser to the right place for k,v in pairs(inst.ViewManager.Views) do if k.Title == "File Browser" then k.FolderListView:SetPath("/game/data/artery/maps/" .. game.GetMap() .. "/npcs") end end --Add a list of nav nodes we found local p = ents.FindByClass("info_townienode") end net.Receive("edit_towniespawn",function() print('got request to edit someone') local who = net.ReadEntity() local data = net.ReadTable() draw_edit_panel(who,data) --[[ local editorframe = vgui.Create("DFrame") editorframe.OnClose = function(self) syncentity(who,data) end editorframe:SetSize(640,640) editorframe:SetTitle("Townie spawn") editorframe:SetDraggable(true) editorframe:MakePopup() local editor = vgui.Create("DPanel",editorframe) editor:Dock(FILL) --Edit name local namelabel = vgui.Create("DLabel",editor) namelabel:SetText("Townie Name:") namelabel:Dock(TOP) namelabel:SetDark(true) local nameentry = vgui.Create("DTextEntry",editor) nameentry:Dock(TOP) nameentry:SetText(data.Name) nameentry:SetUpdateOnType(true) nameentry.OnValueChange = function(self,value) data.Name = value end --Edit model local modellabel = vgui.Create("DLabel",editor) modellabel:SetText("Townie Model:") modellabel:Dock(TOP) modellabel:SetDark(true) local modelentry = vgui.Create("DTextEntry",editor) modelentry:Dock(TOP) modelentry:SetText(data.Model) modelentry:SetUpdateOnType(true) modelentry.OnValueChange = function(self,value) data.Model = value end --Edit navnodes local navnodelist = vgui.Create("DListLayout",editor) navnodelist:Dock(FILL) local allnavents = ents.FindByClass("info_townienode") local function create_navnode_panel(v) local navnodeitm = vgui.Create("DPanel") local navname = vgui.Create("DComboBox",navnodeitm) for i,j in pairs(navnode_info) do navname:AddChoice(j.Name) end navname:SetValue(v) navname:Dock(LEFT) navname.OnSelect = function(self,index,value) data.NavNodes[index] = value end local navdelete = vgui.Create("DButton",navnodeitm) navdelete:SetText("-") navdelete.DoClick = function() print('Tryint to get rid of nav node', v) --delete it from the data for i,j in pairs(data.NavNodes) do if j == v then for k = i, #data.NavNodes do data.NavNodes[i] = data.NavNodes[i+1] end break end end --and remove the panel navnodeitm:Remove() end navdelete:Dock(RIGHT) return navnodeitm end for k,v in pairs(data.NavNodes) do local navnodeitm = create_navnode_panel(v) navnodelist:Add(navnodeitm) end local addbutton = vgui.Create("DButton",editor) addbutton:SetText("+") addbutton.DoClick = function() local navnodeitm = create_navnode_panel("select") navnodelist:Add(navnodeitm) end addbutton:Dock(BOTTOM) ]] end)