10:44:37.469 - Players.AnnaVonWachstein.Backpack.Create.LocalScript:36: attempt to index a nil value 10:44:37.470 - Stack Begin 10:44:37.470 - Script 'Players.AnnaVonWachstein.Backpack.Create.LocalScript', Line 36 - upvalue GenerateSelectionModel 10:44:37.471 - Script 'Players.AnnaVonWachstein.Backpack.Create.LocalScript', Line 76 10:44:37.471 - Stack End 10:44:37.472 - RunService:fireRenderStepEarlyFunctions unexpected error while invoking callback: Players.AnnaVonWachstein.Backpack.Create.LocalScript:36: attempt to index a nil value

That's the full error; not really sure how I can work around with this.

local Player          = game.Players.LocalPlayer
wait(0.5)
local GUI 			  = Player.PlayerGui:FindFirstChild("MainUI")
local NavyUI          = Player.PlayerGui:FindFirstChild("MaritimeGUI")
local InfantryUI      = Player.PlayerGui:FindFirstChild("TroopsGUI")
local BuildingUI      = Player.PlayerGui:FindFirstChild("BuildingsGUI")
local Tool 			  = script.Parent
--Variables for Placement
local CurrentRotation = 0
local Mouse           = Player:GetMouse()
local RunService      = game:GetService("RunService")
local ContextService  = game:GetService("ContextActionService")
local SelectionModel
local Settings        = require(game:GetService("ReplicatedStorage").Settings)
local ObjectsFolder   = Settings.ObjectFolder
local Qdown, Edown
local db1			  = false
local Equipped

local function CloseUIs() 
	GUI.Enabled = false
	BuildingUI.Enabled = false
	NavyUI.Enabled = false
	InfantryUI.Enabled = false
end

Tool.Equipped:Connect(function()
	GUI.Enabled = true
end)

-- Initiator 

local function GenerateSelectionModel()
	if SelectionModel then
		SelectionModel = SelectionModel:Clone()
		local CFrame1 = CFrame.new(Mouse.Hit.p) * CFrame.Angles(0, math.rad(CurrentRotation), 0) * CFrame.new(SelectionModel:FindFirstChild("Compensation").Value)
		local CFrame2 = CFrame.new(0, SelectionModel.PrimaryPart.Size.Y/2, 0)	
		SelectionModel:SetPrimaryPartCFrame(CFrame1 or CFrame2)
		local Cache = SelectionModel:GetDescendants()
		Mouse.TargetFilter = SelectionModel
			--[[
		for i = 1, #Cache do
			if Cache[i]:IsA("BasePart") then
				Cache[i].Material = Enum.Material.Glass
			end
		end	]]
		if Equipped then
			SelectionModel.Parent = workspace
		end
	end
end

local function CanPlace(PPP)
	return true
end

local function FrameRendered()
	if SelectionModel then
		if SelectionModel.PrimaryPart then
			local CFrame1 = CFrame.new(Mouse.Hit.p) * CFrame.Angles(0, math.rad(CurrentRotation), 0) * CFrame.new(SelectionModel:FindFirstChild("Compensation").Value)
			local CFrame2 = CFrame.new(0, SelectionModel.PrimaryPart.Size.Y/2, 0)
			SelectionModel:SetPrimaryPartCFrame(CFrame1 or CFrame2)
			local ReleventColor
			if CanPlace(SelectionModel.PrimaryPart.Position) then
				ReleventColor = Settings.PlaceableColor
			else
				ReleventColor = Settings.CannotPlaceColor
			end
			local Cache = SelectionModel:GetDescendants()
			for i = 1, #Cache do
				if Cache[i]:IsA("Part") or Cache[i]:IsA("MeshPart") or Cache[i]:IsA("UnionOperation") then
					Cache[i].BrickColor = ReleventColor
				end
			end
		else
			GenerateSelectionModel()
		end
		if Qdown and not Edown then
			CurrentRotation = CurrentRotation + 1
		elseif Edown then
			CurrentRotation = CurrentRotation - 1
		end
	end
end

local function BuildEquipped()
	Equipped = true
	if SelectionModel then
		print("GeneratingSelection")
		GenerateSelectionModel()
	end
	if not SelectionModel then
		print("Parenting")
		SelectionModel.Parent = ObjectsFolder
		Mouse.TargetFilter = SelectionModel
	end
	RunService:BindToRenderStep("FrameRendered", 1, FrameRendered)
	ContextService:BindAction("RotateLeft", function(_, inputState)
		Qdown = inputState == Enum.UserInputState.Begin
	end, true, "q")
	ContextService:BindAction("RotateRight", function(_, inputState)
		Edown = inputState == Enum.UserInputState.Begin
	end, true, "e")
end

local function BuildUnequipped()
	Equipped = nil
	if SelectionModel then
		SelectionModel:Destroy()
	end
end

local function Initiate()
	spawn(function()
		wait()
		print(Equipped)
		if Equipped then
			print("Equipped")
			BuildEquipped()
		else
			print("Dequipped")
			BuildUnequipped()
		end
	end)
end

Tool.Unequipped:Connect(function()
	CloseUIs()
	BuildUnequipped()
end)

GUI.Buildings.MouseButton1Click:Connect(function()
	GUI.Enabled = false
	BuildingUI.Enabled = true
	for i,v in pairs(BuildingUI.ScrollingFrame:GetChildren()) do
		if v:IsA("TextButton") then
			v.MouseButton1Click:Connect(function()
				if not db1 then
					db1 = true
					SelectionModel = Tool.Objects.Buildings[v.Name]
					Initiate()
					Equipped = true
					CloseUIs()
					db1 = false 
				end
			end)
		end
	end
end)

GUI.Navy.MouseButton1Click:Connect(function()
	GUI.Enabled = false
	NavyUI.Enabled = true
	for i,v in pairs(NavyUI.ScrollingFrame:GetChildren()) do
		if v:IsA("TextButton") then
			v.MouseButton1Click:Connect(function()
				if not db1 then
					db1 = true
					SelectionModel = Tool.Objects.Navy[v.Name]
					Initiate()
					Equipped = true
					CloseUIs()
					db1 = false 
				end
			end)
		end
	end
end)

GUI.Infantry.MouseButton1Click:Connect(function()
	GUI.Enabled = false
	InfantryUI.Enabled = true
	for i,v in pairs(InfantryUI.ScrollingFrame:GetChildren()) do
		if v:IsA("TextButton") then
			v.MouseButton1Click:Connect(function()
				if not db1 then
					db1 = true
					SelectionModel = Tool.Objects.Infantry[v.Name]
					Initiate()
					Equipped = true
					CloseUIs()
					db1 = false 
				end
			end)
		end
	end
end)

local Infantry = script.Parent.Objects.Infantry:GetChildren()
local Navy = script.Parent.Objects.Navy:GetChildren()
local Buildings = script.Parent.Objects.Buildings:GetChildren()
for i = 1, #Infantry do
	local frame  = Instance.new("TextButton")
	frame.Name   = Infantry[i].Name
	frame.Text   = Infantry[i].Name
	frame.BackgroundColor3 = Color3.fromRGB(60, 120, 180)
	frame.Font = "SourceSansBold"
	frame.TextSize = 30
	frame.Parent = InfantryUI.ScrollingFrame
end
for i = 1, #Navy do
	local frame  = Instance.new("TextButton")
	frame.Name   = Navy[i].Name
	frame.Text   = Navy[i].Name
	frame.BackgroundColor3 = Color3.fromRGB(60, 120, 180)
	frame.Font = "SourceSansBold"
	frame.TextSize = 30
	frame.Parent = NavyUI.ScrollingFrame
end
for i = 1, #Buildings do
	local frame  = Instance.new("TextButton")
	frame.Name   = Buildings[i].Name
	frame.Text   = Buildings[i].Name
	frame.BackgroundColor3 = Color3.fromRGB(60, 120, 180)
	frame.Font = "SourceSansBold"
	frame.TextSize = 30
	frame.Parent = BuildingUI.ScrollingFrame
end

1 comment

0

Edit I fixed the issue but now it just clones +1 for each time the tools is equipped. :/