It says that in line 128 attempt to index nil with "FindFirstChild". The gun works in the basplates but I put it into my game and it does not seem to work. The script is too long but in the baseplate you can find it in the toolbox its by Roblox and its their premade crossbow. Have a look at line 128 and see if you can help me solve this error please ty. Here is only part of the script as it is 900+ characters long
local RunService = game:GetService("RunService")
local Players = game:GetService("Players")
local IsServer = RunService:IsServer()
local WeaponsSystemFolder = script.Parent.Parent
local AnimationsFolder = WeaponsSystemFolder:WaitForChild("Assets"):WaitForChild("Animations")
local localRandom = Random.new()
local BaseWeapon = {}
BaseWeapon.__index = BaseWeapon
BaseWeapon.CanAimDownSights = false
BaseWeapon.CanBeReloaded = false
BaseWeapon.CanBeFired = false
BaseWeapon.CanHit = false
function BaseWeapon.new(weaponsSystem, instance)
assert(instance, "BaseWeapon.new() requires a valid Instance to be attached to.")
local self = setmetatable({}, BaseWeapon)
self.connections = {}
self.descendants = {}
self.descendantsRegistered = false
self.optionalDescendantNames = {}
self.weaponsSystem = weaponsSystem
self.instance = instance
self.animController = nil
self.player = nil
self.enabled = false
self.equipped = false
self.activated = false
self.nextShotId = 1
self.activeRenderStepName = nil
self.curReloadSound = nil
self.animTracks = {}
self.sounds = {}
self.configValues = {}
self.trackedConfigurations = {}
self.ammoInWeaponValue = nil
self.reloading = false
self.canReload = true
self:registerDescendants()
self.connections.descendantAdded = self.instance.DescendantAdded:Connect(function(descendant)
self:onDescendantAdded(descendant)
end)
return self
end
function BaseWeapon:doInitialSetup()
local selfClass = getmetatable(self)
self.instanceIsTool = self.instance:IsA("Tool")
-- Set up child added/removed
self.connections.childAdded = self.instance.ChildAdded:Connect(function(child)
self:onChildAdded(child)
end)
self.connections.childRemoved = self.instance.ChildRemoved:Connect(function(child)
self:onChildRemoved(child)
end)
for _, child in pairs(self.instance:GetChildren()) do
self:onChildAdded(child)
end
-- Initialize self.ammoInWeaponValue
if selfClass.CanBeReloaded then
if IsServer then
self.ammoInWeaponValue = self.instance:FindFirstChild("CurrentAmmo")
if not self.ammoInWeaponValue then
self.ammoInWeaponValue = Instance.new("IntValue")
self.ammoInWeaponValue.Name = "CurrentAmmo"
self.ammoInWeaponValue.Value = 0
self.ammoInWeaponValue.Parent = self.instance
end
self.ammoInWeaponValue.Value = self:getConfigValue("AmmoCapacity", 30)
else
self.ammoInWeaponValue = self.instance:WaitForChild("CurrentAmmo")
end
end
self.connections.ancestryChanged = self.instance.AncestryChanged:Connect(function() self:onAncestryChanged() end)
self:onAncestryChanged()
-- Set up equipped/unequipped and activated/deactivated
if self.instanceIsTool then
self.connections.equipped = self.instance.Equipped:Connect(function()
if IsServer or (Players.LocalPlayer and (self.instance:IsDescendantOf(Players.LocalPlayer.Backpack) or self.instance:IsDescendantOf(Players.LocalPlayer.Character))) then
self:setEquipped(true)
if self:getAmmoInWeapon() <= 0 then
-- Have to wait a frame, otherwise the reload animation will not play
coroutine.wrap(function()
wait()
self:reload()
end)()
end
end
end)
self.connections.unequipped = self.instance.Unequipped:Connect(function()
if IsServer or (Players.LocalPlayer and (self.instance:IsDescendantOf(Players.LocalPlayer.Backpack) or self.instance:IsDescendantOf(Players.LocalPlayer.Character))) then
self:setEquipped(false)
if self.reloading then
self:cancelReload()
end
end
end)
if self.instance:IsDescendantOf(workspace) and self.player then
self:setEquipped(true)
end
self.connections.activated = self.instance.Activated:Connect(function()
self:setActivated(true)
end)
self.connections.deactivated = self.instance.Deactivated:Connect(function()
self:setActivated(false)
end)
-- Weld handle to weapon primary part
if IsServer then
self.handle = self.instance:FindFirstChild("Handle")
local model = self.instance:FindFirstChildOfClass("Model")
local handleAttachment = model:FindFirstChild("HandleAttachment", true)
if self.handle and handleAttachment then
local handleOffset = model.PrimaryPart.CFrame:toObjectSpace(handleAttachment.WorldCFrame)
local weld = Instance.new("Weld")
weld.Name = "HandleWeld"
weld.Part0 = self.handle
weld.Part1 = model.PrimaryPart
weld.C0 = CFrame.new()
weld.C1 = handleOffset
weld.Parent = self.handle
self.handle.Anchored = false
model.PrimaryPart.Anchored = false
end
end
end
end

10 comments
lol include the code dude, I don't even know what you're talking about
Include the code, its literally empty
its too long its 10000+ characters
Dont be scared of it being too long, this website crops it and you can press a button to show the full script
here is a little bit of it
Also WHICH script?
k
Did you delete a part called "HandleAttachment" in the crossbow?
No i did not delete HandleAttatchment and the script is Crossbow.WeaponsSystem.Libaries.BaseWeapon
It works now i had to reinsert the