Help making fps framework aim

Hello, I am currently making an fps framework for my roblox game and have been watching a youtube tutorial. I have spent hours retyping something because the aim function will not work. I also have an error that says “19:14:24.498 Model:SetPrimaryPartCFrame() failed because no PrimaryPart has been set, or the PrimaryPart no longer exists. Please set Model.PrimaryPart before using this. - Client - FrameworkClient:49”.

My code:

local player = game.Players.LocalPlayer
local character = player.Character or player.CharacterAdded:Wait()

local userInputService = game:GetService(“UserInputService”)
local runService = game:GetService(“RunService”)

local camera = workspace.CurrentCamera

local aimCFrame = CFrame.new()

local isAiming = false

local framework = {
inventory = {
“GLOCK17”;
“M4A1”;
“Knife”;
“Frag”
};

module = nil;
viewModel = nil;
currentSlot = 1

}

function loadSlot(item)
local viewModelFolder = game.ReplicatedStorage.Viewmodels
local moduleFolder = game.ReplicatedStorage.Modules

for i, v in pairs(camera:GetChildren()) do
	if v:IsA("Model") then
		v:Destroy()
	end
end

if moduleFolder:FindFirstChild(item) then
	framework.module = require(moduleFolder:FindFirstChild(item))
	
	if viewModelFolder:FindFirstChild(item) then
		framework.viewModel = viewModelFolder:FindFirstChild(item):Clone()
		framework.viewModel.Parent = camera
	end
end

end

runService.RenderStepped:Connect(function()
for i, v in pairs(camera:GetChildren()) do
if v:IsA(“Model”) then
v:SetPrimaryPartCFrame(camera.CFrame * aimCFrame)
end
end

if isAiming and framework.viewModel ~= nil then
	local offset = framework.viewModel.AimPart.CFrame:ToObjectSpace(framework.viewModel.PrimaryPart.CFrame)
	aimCFrame = aimCFrame:Lerp(offset, .1)
	
else
	local offset = CFrame.new()
	aimCFrame = aimCFrame:Lerp(offset, .1)
end

end)

loadSlot(framework.inventory[1])

userInputService.InputBegan:Connect(function(input)
if input.KeyCode == Enum.KeyCode.One then
if framework.currentSlot ~= 1 then
loadSlot(framework.inventory[1])
framework.currentSlot = 1
end
end

if input.KeyCode == Enum.KeyCode.Two then
	if framework.currentSlot ~= 2 then
		loadSlot(framework.inventory[2])
		framework.currentSlot = 2
	end
end

if input.KeyCode == Enum.KeyCode.Three then
	if framework.currentSlot ~= 3 then
		loadSlot(framework.inventory[3])
		framework.currentSlot = 3
	end
end

if input.KeyCode == Enum.KeyCode.Four then
	if framework.currentSlot ~= 4 then
		loadSlot(framework.inventory[4])
		framework.currentSlot = 4
	end
end

if input.UserInputType == Enum.UserInputType.MouseButton2 then
	isAiming = true
end

end)

userInputService.InputEnded:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseButton2 then
isAiming = false
end
end)

2 Likes

I’m surprised you made all of this and nobody replied except me. But keep what your doing and have a good day. :sweat_smile: