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)