I'm trying to make a private base for myself, and others with this script, but it doesn't work.

local nam = "xTranquil's private base"
people = {"xTranquil"}

model = nil
base = nil
walls = {}

function findplr(str)
	local stringk = str:lower()
	for _, v in pairs(game.Players:getPlayers()) do
		if string.lower(string.sub(v.Name,1,#stringk)) == stringk then
			return v
		end
	end
end

function FindTab(var, tab)
	local obj = nil
	for i,v in pairs(tab) do
		if var == v then
			obj = v
		end
	end
	return obj
end

function prop(part, parent, collide, tran, ref, x, y, z, color, anchor, form)
part.Parent = parent
part.formFactor = form
part.CanCollide = collide
part.Transparency = tran
part.Reflectance = ref
part.Size = Vector3.new(x,y,z)
part.BrickColor = BrickColor.new(color)
part.TopSurface = 0
part.BottomSurface = 0
part.Anchored = anchor
part.Locked = true
part:BreakJoints()
end

function makebase()
	pcall(function() workspace[nam]:remove() end)
	walls = {}
	local size = Vector3.new(512,1,512)
	local mod = Instance.new("Model",workspace)
	mod.Name = nam
	local ba = Instance.new("Part")
	prop(ba,mod,true,0,0,siz.X,siz.Y,siz.Z,"Dark green",true,"Custom")
	ba.CFrame = CFrame.new(0,0,0) * CFrame.new(siz.X*4,0,0)
	ba.TopSurface = "Studs"
	for i=0,359,90 do
		local wall = Instance.new("Part")
		prop(wall,mod,true,0.4,0,siz.X,siz.X/2,2,"Bright violet",true,"Custom")
		wall.CFrame = ba.CFrame * CFrame.Angles(0,math.rad(i),0) * CFrame.new(0,wall.Size.Y/2,siz.Z/2)
		table.insert(walls,wall)
	end
	local roof = Instance.new("Part")
	prop(roof,mod,true,0.4,0,siz.X,2,siz.Z,"Bright violet",true,"Custom")
	roof.CFrame = ba.CFrame * CFrame.new(0,siz.X/2,0)
	table.insert(walls,roof)
	model = mod
	base = ba
end

makebase()

function chat(msg,recipient,speaker)
	if string.sub(msg,1,4) == "col/" then
		base.BrickColor = BrickColor.new(string.sub(msg,5))
		for _,v in pairs(walls) do
			v.BrickColor = BrickColor.new(string.sub(msg,5))
		end
	elseif string.sub(msg,1,5) == "tran/" then
		base.Transparency = string.sub(msg,6)
		for _,v in pairs(walls) do
			v.Transparency = string.sub(msg,6) + 0.4
		end
	elseif string.sub(msg,1,4) == "ref/" then
		base.Reflectance = string.sub(msg,5)
		for _,v in pairs(walls) do
			v.Reflectance = string.sub(msg,5)
		end
	elseif string.sub(msg,1,3) == "in/" then
		local player = findplr(string.sub(msg,4))
		if player ~= nil then
			if player.Character ~= nil then
				player.Character:MoveTo(base.Position + Vector3.new(math.random(-20,20),3,math.random(-20,20)))
			end
		end
	elseif string.sub(msg,1,4) == "out/" then
		local player = findplr(string.sub(msg,5))
		if player ~= nil then
			if player.Character ~= nil then
				player.Character:MoveTo(Vector3.new(math.random(-20,20),3,math.random(-20,20)))
			end
		end
	end
end

for _,v in pairs(game.Players:GetPlayers()) do
	local num = 0
	for _,k in pairs(people) do
		if v.Name:lower() == k:lower() then
			num = num + 1
		end
	end
	if num > 0 then
		v.Chatted:connect(chat)
		v.CharacterAdded:connect(function(char)
			wait(0.05)
			if char ~= nil then
				char:MoveTo(base.Position + Vector3.new(math.random(-20,20),3,math.random(-20,20)))
			end
		end)
	end
end

game.Players.PlayerAdded:connect(function(plr)
	local num = 0
	for _,k in pairs(people) do
		if plr.Name:lower() == k:lower() then
			num = num + 1
		end
	end
	if num > 0 then
		plr.Chatted:connect(chat)
		plr.CharacterAdded:connect(function(char)
			wait(0.05)
			if char ~= nil then
				char:MoveTo(base.Position + Vector3.new(math.random(-20,20),3,math.random(-20,20)))
			end
		end)
	end
end)

wait()

function change(prop)
	if prop == "Parent" then
		makebase()
		wait()
		model.Changed:connect(change)
		base.Changed:connect(change)
	end
end

model.Changed:connect(change)

But this is the error I get. LUA ERROR: [string "local player = game.Players.LocalPlayer..."]:5: attempt to index field 'Hit' (a userdata value)

4 comments

0

It says line 5, yet that's not the correct line. Do you have an idea of the correct line?

0

Not at all.

0

Is that all your code?

0

Not all mine, some parts found.