mirror of
				https://github.com/chev2/gmod-addons.git
				synced 2025-10-30 06:31:35 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			270 lines
		
	
	
	
		
			6.6 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
			
		
		
	
	
			270 lines
		
	
	
	
		
			6.6 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
| local LOCATION_DATA = {
 | |
| 	["Outside"] = {
 | |
| 		Min = Vector(-5259, -3790, -1500),
 | |
| 		Max = Vector(1905, 6480, 10000),
 | |
| 	},
 | |
| 	["Lobby 1"] = {
 | |
| 		Min = Vector(1028, -880, -155),
 | |
| 		Max = Vector(1791, 899, 27),
 | |
| 	},
 | |
| 	["Lobby 2"] = {
 | |
| 		Min = Vector(-3245, -2565, -152),
 | |
| 		Max = Vector(-1033, -1032, 208),
 | |
| 	},
 | |
| 	["Underground"] = {
 | |
| 		Min = Vector(-2975, -2610, -410),
 | |
| 		Max = Vector(-1174, -2063, -144),
 | |
| 	},
 | |
| 	["Color Room"] = {
 | |
| 		Min = Vector(-3311, -4587, -265),
 | |
| 		Max = Vector(-790, -2620, 170),
 | |
| 	},
 | |
| 	["Dark Room Stairs"] = {
 | |
| 		Min = Vector(-5657, -3463, -168),
 | |
| 		Max = Vector(-5257., -2315, 433),
 | |
| 	},
 | |
| 	["Tower"] = {
 | |
| 		Min = Vector(-5000, 4636, -144),
 | |
| 		Max = Vector(-3934, 6024, 2647),
 | |
| 	},
 | |
| 	["Lake"] = {
 | |
| 		Min = Vector(-3115, 2009, -884),
 | |
| 		Max = Vector(1937, 6467, 165),
 | |
| 	},
 | |
| 	["Secret Room"] = {
 | |
| 		Min = Vector(-3111, -1415, -97),
 | |
| 		Max = Vector(-2889, -1051, 13),
 | |
| 	},
 | |
| 	["Backrooms Theater 1"] = {
 | |
| 		Min = Vector(717, -2156, -149),
 | |
| 		Max = Vector(1048, -1803, 57),
 | |
| 		Theater = {
 | |
| 			Name = "Backrooms Theater 1",
 | |
| 			Flags = THEATER_PRIVATE,
 | |
| 			Pos = Vector(728.1, -2032, 16),
 | |
| 			Ang = Angle(0, 90, 0),
 | |
| 			Width = 224,
 | |
| 			Height = 128,
 | |
| 			ThumbInfo = {
 | |
| 				Pos = Vector(1056, -1944, -48),
 | |
| 				Ang = Angle(0, 0, 0)
 | |
| 			}
 | |
| 		}
 | |
| 	},
 | |
| 	["Backrooms Theater 2"] = {
 | |
| 		Min = Vector(707, -1400, -149),
 | |
| 		Max = Vector(1048, -1041, 69),
 | |
| 		Theater = {
 | |
| 			Name = "Backrooms Theater 2",
 | |
| 			Flags = THEATER_PRIVATE,
 | |
| 			Pos = Vector(728.1, -1392, 16),
 | |
| 			Ang = Angle(0, 90, 0),
 | |
| 			Width = 224,
 | |
| 			Height = 128,
 | |
| 			ThumbInfo = {
 | |
| 				Pos = Vector(1056, -1256, -48),
 | |
| 				Ang = Angle(0, 0, 0)
 | |
| 			}
 | |
| 		}
 | |
| 	},
 | |
| 	["Backrooms Theater 3"] = {
 | |
| 		Min = Vector(722, -2172, 1130),
 | |
| 		Max = Vector(1038, -1798, 1265),
 | |
| 		Theater = {
 | |
| 			Name = "Backrooms Theater 3",
 | |
| 			Flags = THEATER_PRIVATE,
 | |
| 			Pos = Vector(728.1, -2032, 1264),
 | |
| 			Ang = Angle(0, 90, 0),
 | |
| 			Width = 224,
 | |
| 			Height = 128,
 | |
| 			ThumbInfo = {
 | |
| 				Pos = Vector(1042, -1940, 1200),
 | |
| 				Ang = Angle(0, 0, 0)
 | |
| 			}
 | |
| 		}
 | |
| 	},
 | |
| 	["Backrooms Theater 4"] = {
 | |
| 		Min = Vector(722, -1401, 1130),
 | |
| 		Max = Vector(1038, -1041, 1265),
 | |
| 		Theater = {
 | |
| 			Name = "Backrooms Theater 4",
 | |
| 			Flags = THEATER_PRIVATE,
 | |
| 			Pos = Vector(728.1, -1392, 1264),
 | |
| 			Ang = Angle(0, 90, 0),
 | |
| 			Width = 224,
 | |
| 			Height = 128,
 | |
| 			ThumbInfo = {
 | |
| 				Pos = Vector(1042, -1260, 1200),
 | |
| 				Ang = Angle(0, 0, 0)
 | |
| 			}
 | |
| 		}
 | |
| 	},
 | |
| 	["Backrooms"] = {
 | |
| 		Min = Vector(843, -2156, -144),
 | |
| 		Max = Vector(1791, -1041, 54),
 | |
| 	},
 | |
| 	["Upper Backrooms"] = {
 | |
| 		Min = Vector(1070, -2172, 1117),
 | |
| 		Max = Vector(1845, -1041, 1290),
 | |
| 	},
 | |
| 	["Backrooms Crossing"] = {
 | |
| 		Min = Vector(1791, -1290, -144),
 | |
| 		Max = Vector(2178, -624, 35),
 | |
| 	},
 | |
| 	["Floor 1 Theater"] = {
 | |
| 		Min = Vector(-2945, -3254, 256),
 | |
| 		Max = Vector(-1665, -2305, 764),
 | |
| 		Theater = {
 | |
| 			Name = "Floor 1 Theater",
 | |
| 			Flags = THEATER_PRIVATE,
 | |
| 			Pos = Vector(-1876, -3227.9, 736),
 | |
| 			Ang = Angle(0, 180, 0),
 | |
| 			Width = 856,
 | |
| 			Height = 480
 | |
| 		}
 | |
| 	},
 | |
| 	["Floor 2 Theater"] = {
 | |
| 		Min = Vector(-3005, -3254, 768),
 | |
| 		Max = Vector(-1600, -2241, 1278),
 | |
| 		Theater = {
 | |
| 			Name = "Floor 2 Theater",
 | |
| 			Flags = THEATER_PRIVATE,
 | |
| 			Pos = Vector(-1876, -3227.9, 1248),
 | |
| 			Ang = Angle(0, 180, 0),
 | |
| 			Width = 856,
 | |
| 			Height = 480
 | |
| 		}
 | |
| 	},
 | |
| 	["Floor 3 Theater"] = {
 | |
| 		Min = Vector(-3005, -3254, 1280),
 | |
| 		Max = Vector(-1600, -2241, 1790),
 | |
| 		Theater = {
 | |
| 			Name = "Floor 3 Theater",
 | |
| 			Flags = THEATER_PRIVATE,
 | |
| 			Pos = Vector(-1876, -3227.9, 1760),
 | |
| 			Ang = Angle(0, 180, 0),
 | |
| 			Width = 856,
 | |
| 			Height = 480
 | |
| 		}
 | |
| 	},
 | |
| 	["Floor 4 Theater"] = {
 | |
| 		Min = Vector(-3005, -3254, 1792),
 | |
| 		Max = Vector(-1600, -2241, 2302),
 | |
| 		Theater = {
 | |
| 			Name = "Floor 4 Theater",
 | |
| 			Flags = THEATER_PRIVATE,
 | |
| 			Pos = Vector(-1876, -3227.9, 2272),
 | |
| 			Ang = Angle(0, 180, 0),
 | |
| 			Width = 856,
 | |
| 			Height = 480
 | |
| 		}
 | |
| 	},
 | |
| 	["Floor 5 Theater"] = {
 | |
| 		Min = Vector(-3005, -3254, 2304),
 | |
| 		Max = Vector(-1600, -2241, 2816),
 | |
| 		Theater = {
 | |
| 			Name = "Floor 5 Theater",
 | |
| 			Flags = THEATER_PRIVATE,
 | |
| 			Pos = Vector(-1876, -3227.9, 2816),
 | |
| 			Ang = Angle(0, 180, 0),
 | |
| 			Width = 856,
 | |
| 			Height = 512
 | |
| 		}
 | |
| 	},
 | |
| 	["Underground Theater"] = {
 | |
| 		Min = Vector(-2928, -2063, -542),
 | |
| 		Max = Vector(-1200, 105, -177),
 | |
| 		Theater = {
 | |
| 			Name = "Underground Theater",
 | |
| 			Flags = THEATER_REPLICATED,
 | |
| 			Pos = Vector(-2360, 79.7, -176),
 | |
| 			Ang = Angle(0, 0, 0),
 | |
| 			Width = 592,
 | |
| 			Height = 336,
 | |
| 			ThumbInfo = {
 | |
| 				Pos = Vector(-2064, -1912, 104),
 | |
| 				Ang = Angle(0, 90, 0)
 | |
| 			}
 | |
| 		}
 | |
| 	},
 | |
| 	["Dark Room Theater"] = {
 | |
| 		Min = Vector(-5660, -2568, -153),
 | |
| 		Max = Vector(-3232, -1037, 201),
 | |
| 		Theater = {
 | |
| 			Name = "Dark Room Theater",
 | |
| 			Flags = THEATER_REPLICATED,
 | |
| 			Pos = Vector(-3980, -2555.5, 160),
 | |
| 			Ang = Angle(0, 180, 0),
 | |
| 			Width = 540,
 | |
| 			Height = 304
 | |
| 		}
 | |
| 	},
 | |
| 	["Tower Theater"] = {
 | |
| 		Min = Vector(-4935, 4692, -120),
 | |
| 		Max = Vector(-4002, 5960, 478),
 | |
| 		Theater = {
 | |
| 			Name = "Tower Theater",
 | |
| 			Flags = THEATER_REPLICATED,
 | |
| 			Pos = Vector(-4927, 4812, 480),
 | |
| 			Ang = Angle(0, 90, 0),
 | |
| 			Width = 1024,
 | |
| 			Height = 576
 | |
| 		}
 | |
| 	}
 | |
| }
 | |
| 
 | |
| Location.Add("cinema_construct", LOCATION_DATA)
 | |
| 
 | |
| if SERVER then
 | |
| 	local CinemaConstructChairOffsets = {
 | |
| 		["models/props_trainstation/benchoutdoor01a.mdl"] = {
 | |
| 			{ Pos = Vector(0, 21, 0), Ang = Angle(0, 90, 0) },
 | |
| 			{ Pos = Vector(0, -26, 0), Ang = Angle(0, 90, 0) },
 | |
| 		},
 | |
| 		["models/cinema/theater_curve_couch_s.mdl"] = {
 | |
| 			{ Pos = Vector(-73.6, 17.3, 16), Ang = Angle(0, -128, 0) },
 | |
| 			{ Pos = Vector(-65.2, 50.3, 16), Ang = Angle(0, -128, 0) },
 | |
| 			{ Pos = Vector(-37.5, 71.7, 16), Ang = Angle(0, -153, 0) },
 | |
| 			{ Pos = Vector(0, 80, 16), Ang = Angle(0, -180, 0) },
 | |
| 			{ Pos = Vector(37.5, 71.7, 16), Ang = Angle(0, 153, 0) },
 | |
| 			{ Pos = Vector(65.2, 50.3, 16), Ang = Angle(0, 128, 0) },
 | |
| 			{ Pos = Vector(73.6, 17.3, 16), Ang = Angle(0, 128, 0) },
 | |
| 		}
 | |
| 	}
 | |
| 
 | |
| 	-- Add chair offsets used by props in this map
 | |
| 	local function AddChairOffsets()
 | |
| 		for mdlName, chairData in pairs(CinemaConstructChairOffsets) do
 | |
| 			ChairOffsets[mdlName] = chairData
 | |
| 		end
 | |
| 
 | |
| 		print("[cinema_construct] Map-specific chair offsets initialized.")
 | |
| 	end
 | |
| 
 | |
| 	hook.Add("Initialize", "cinema_construct.InitializeMapSpecificChairOffsets", AddChairOffsets)
 | |
| 
 | |
| 	-- Restrict usable buttons in theaters to theater owners only (admins exempt).
 | |
| 	-- This code is taken from gamemodes/cinema/gamemode/maps/cinema_theatron.lua
 | |
| 	-- Uses a custom hook name however, so server owners can remove the PlayerUse hook for this map as they see fit
 | |
| 	local UseCooldown = 0.3
 | |
| 
 | |
| 	hook.Add("PlayerUse", "cinema_construct.PrivateTheaterLightSwitch", function(ply, ent)
 | |
| 		if ply.LastUse and ply.LastUse + UseCooldown > CurTime() then
 | |
| 			return false
 | |
| 		end
 | |
| 
 | |
| 		-- Always admit admins
 | |
| 		if ply:IsAdmin() then return true end
 | |
| 
 | |
| 		-- Only private theater owners can switch the lights
 | |
| 		local Theater = ply:GetTheater()
 | |
| 		if Theater and Theater:IsPrivate() and ent:GetClass() == "func_button" then
 | |
| 			ply.LastUse = CurTime()
 | |
| 
 | |
| 			if Theater:GetOwner() ~= ply then
 | |
| 				return false
 | |
| 			end
 | |
| 		end
 | |
| 		return true
 | |
| 	end)
 | |
| end
 |