-- __ _ _______ _ __ -- / / /\ | | |__ __| | | \ \ -- / / / \ | |_ __ ___ | | ___ ___| |__ \ \ -- < < / /\ \ | | '_ ` _ \| |/ _ \/ __| '_ \ > > -- \ \ / ____ \| | | | | | | | __/ (__| | | | / / -- \_\ /_/ \_\_|_| |_| |_|_|\___|\___|_| |_| /_/ Quantum.Station = {} Quantum.Stations = {} function Quantum.Station.Add( id, tbl ) local returnTbl = { stationid = id, name = tbl.name || "Crafting Station", -- name of the station model = tbl.model || "models/props_phx/facepunch_barrel.mdl", recipes = tbl.recipes } Quantum.Stations[ id ] = returnTbl return returnTbl end function Quantum.Station.Get( id ) return Quantum.Stations[id] end function Quantum.Station.GetRecipes( id ) return Quantum.Stations[id].recipes end if SERVER then Quantum.Server.Station = {} function Quantum.Server.Station.Spawn( stationid, pos, ang ) -- internal function local ent = ents.Create( "q_crafting_station" ) if( IsValid( ent ) ) then ent:InitializeStation( stationid, pos, ang ) ent:Spawn() end end local function floorVectorString( vec ) return tostring(math.floor( vec.x )) .. ", " .. tostring(math.floor( vec.y )) .. ", " .. tostring(math.floor( vec.z )) end function Quantum.Server.Station.Create( id, tbl ) local stationTbl = Quantum.Station.Get( id ) if( stationTbl != nil ) then Quantum.Server.Station.Spawn( id, tbl.pos, tbl.ang ) end end function Quantum.Server.Station.Remove( station ) if( IsValid( station ) ) then station:Remove() end end function Quantum.Server.Station.RemoveAll() for i, station in pairs( ents.FindByClass( "q_crafting_station" ) ) do Quantum.Server.Station.Remove( station ) end end Quantum.Server.Station.RemoveAll() -- remove all stations on lua refresh hook.Add( "KeyRelease", "Quantum_Station_KeyRelease", function( pl, key ) if( pl.isloaded ) then if( key == IN_USE ) then local ent = pl:GetEyeTraceNoCursor().Entity if( ent:GetClass() == "q_crafting_station" ) then pl:SetLocalVelocity( Vector( 0, 0, 0 ) ) Quantum.Net.OpenMenu( pl, "crafting", { stationEnt = ent, station = ent.stationid } ) end end end end) end