Scripting Helpers is winding down operations and is now read-only. More info→
Ad
Log in to vote
0

My fps gun not doing any DAMAGE, is there a reason why?

Asked by
iHavoc101 127
4 years ago
Edited 4 years ago

So basically, I made my first fps gun!!! Then, when I tested it, it did no damage to anyone. When I tried fps guns from toolbox, it also did no damage. Games like arsenal have this, but I'm unsure how to make it so you can hit people.

----------------------------------------------------------------------
--------------------[ IGNORE MODEL HANDLING ]-------------------------
----------------------------------------------------------------------

wait(math.random(0, 20) / 40) --This is to prevent more than one ignoreModel from being created

if _G.ignoreCode then --If the ignoreCode already exists, then the script creates the ignoreModel
    --[[
        The purpose of this is so that every gun in a game that uses this gun kit will share one ignoreModel. That way,
        bullet trails, bullet holes, and other fake arms will be ignored by the gun which makes the bullets more likely to
        hit a character part
    --]]
    if (not game.Workspace:FindFirstChild("ignoreModel_".._G.ignoreCode)) then
        local ignoreModel = Instance.new("Model")
        ignoreModel.Name = "ignoreModel_".._G.ignoreCode
        ignoreModel.Parent = game.Workspace

        local grenadeFolder = Instance.new("Model")
        grenadeFolder.Name = "grenadeFolder"
        grenadeFolder.Parent = ignoreModel

        spawn(function()
            while true do
                ignoreModel.Parent = game.Workspace
                grenadeFolder.Parent = ignoreModel
                wait(1 / 20)
            end
        end)
    end

    script.Parent:WaitForChild("clientMain"):WaitForChild("ignoreCode").Value = _G.ignoreCode
else
    --[[
        If there isn't already an ignoreCode, then this creates one. The purpose of it being random is so that if there is
        an ignoreModel for something else in the game, the script won't end up placing the ignored objects in that ignoreModel
    --]]
    _G.ignoreCode = math.random(1, 1e4)

    if (not game.Workspace:FindFirstChild("ignoreModel_".._G.ignoreCode)) then
        local ignoreModel = Instance.new("Model")
        ignoreModel.Name = "ignoreModel_".._G.ignoreCode
        ignoreModel.Parent = game.Workspace

        local grenadeFolder = Instance.new("Model")
        grenadeFolder.Name = "grenadeFolder"
        grenadeFolder.Parent = ignoreModel

        spawn(function()
            while true do
                ignoreModel.Parent = game.Workspace
                grenadeFolder.Parent = ignoreModel
                wait(1 / 20)
            end
        end)
    end

    script.Parent:WaitForChild("clientMain"):WaitForChild("ignoreCode").Value = _G.ignoreCode
end

spawn(function()
    --[[
        This function deletes any Player Folders that were left in the ignoreModel because the player left the game without
        deselecting the Gun first
    --]]
    repeat wait() until _G.ignoreCode
    local ignoreModel = game.Workspace:WaitForChild("ignoreModel_".._G.ignoreCode)
    while true do
        for _, gunIgnore in pairs(ignoreModel:GetChildren()) do
            if gunIgnore.Name ~= "grenadeFolder" then
                if (not game.Players:FindFirstChild(gunIgnore.Name:sub(11))) then
                    gunIgnore:Destroy()
                end
            end
        end
        wait(1 / 20)
    end
end)

----------------------------------------------------------------------
--------------------[ RESET CAMERA ]----------------------------------
----------------------------------------------------------------------

Gun.ChildRemoved:connect(function(Child)
    if Child == Handle and Plyr.Value then
        local ignoreCode = Gun:WaitForChild("clientMain"):WaitForChild("ignoreCode").Value
        local resetCam = script:WaitForChild("resetCam")
        resetCam:WaitForChild("ignoreCode").Value = ignoreCode
        resetCam.Parent = Plyr.Value.PlayerGui
    end
end)

----------------------------------------------------------------------
--------------------[ GET WELD CFRAMES ]------------------------------
----------------------------------------------------------------------

for _, v in pairs(Gun:GetChildren()) do
    if v:IsA("BasePart") and v ~= Handle then
        if v:FindFirstChild("mainWeld") then v.mainWeld:Destroy() end
        if (not v:FindFirstChild("weldCF")) then
            local weldCF = Instance.new("CFrameValue")
            weldCF.Name = "weldCF"
            weldCF.Value = Handle.CFrame:toObjectSpace(v.CFrame)
            weldCF.Parent = v
        end
        if string.sub(v.Name, 1, 3) == "Mag" then
            if (not v:FindFirstChild("magTrans")) then
                local magTrans = Instance.new("NumberValue")
                magTrans.Name = "magTrans"
                magTrans.Value = v.Transparency
                magTrans.Parent = v
            end
        end
        v.Anchored = true
        v.CanCollide = false
    end
end
Handle.Anchored = false
Handle.CanCollide = true

----------------------------------------------------------------------
--------------------[ GUNSETUP HANDLING ]-----------------------------
----------------------------------------------------------------------
---------------------------------------
--Ommited due to lenght----
--------------------------------------
----------------------------------------------------------------------
--------------------[ TWEENJOINT HANDLING ]---------------------------
----------------------------------------------------------------------

local createTweenIndicator = script:WaitForChild("createTweenIndicator")
function createTweenIndicator.OnServerInvoke(_, Joint, newCode)
    local tweenIndicator = nil
    if (not Joint:findFirstChild("tweenCode")) then --If the joint isn't being tweened, then
        tweenIndicator = Instance.new("IntValue")
        tweenIndicator.Name = "tweenCode"
        tweenIndicator.Value = newCode
        tweenIndicator.Parent = Joint
    else
        tweenIndicator = Joint.tweenCode
        tweenIndicator.Value = newCode --If the joint is already being tweened, this will change the code, and the tween loop will stop
    end
    return tweenIndicator
end

local lerpCF = script:WaitForChild("lerpCF")
function lerpCF.OnServerInvoke(_, Joint, Prop, startCF, endCF, Alpha)
    spawn(function()
        Joint[Prop] = startCF:lerp(endCF, Alpha)
    end)
end

local deleteTweenIndicator = script:WaitForChild("deleteTweenIndicator")
function deleteTweenIndicator.OnServerInvoke(_, tweenIndicator, newCode)
    if tweenIndicator.Value == newCode then --If this tween functions was the last one called on a joint then it will remove the code
        tweenIndicator:Destroy()
    end
end

----------------------------------------------------------------------
--------------------[ BULLET IMPACT HANDLING ]------------------------
----------------------------------------------------------------------

local createBulletImpact = script:WaitForChild("createBulletImpact")
createBulletImpact.OnServerEvent:connect(function(_, H, P, N, D, humanoidFound, gunIgnore, S)
    local surfaceCF = CF(P, P + N)
    ----------------------------------------------------------------------------------
    --Creating the bullet hole--------------------------------------------------------
    ----------------------------------------------------------------------------------
    if S.bulletHoles and (not humanoidFound) then
        local Hole = Instance.new("Part")
        Hole.Transparency = 1
        Hole.Anchored = true
        Hole.CanCollide = false
        Hole.FormFactor = "Custom"
        Hole.Size = V3(1, 1, 0.2)
        Hole.TopSurface = 0
        Hole.BottomSurface = 0
        local Mesh = Instance.new("BlockMesh")
        Mesh.Offset = V3(0, 0, -0.05)
        Mesh.Scale = V3(S.holeSettings.Size, S.holeSettings.Size, 0)
        Mesh.Parent = Hole
        local Decal = Instance.new("Decal")
        Decal.Face = Enum.NormalId.Front
        Decal.Texture = S.holeSettings.Texture
        Decal.Parent = Hole
        Hole.Parent = gunIgnore
        Hole.CFrame = surfaceCF
        if (not H.Anchored) then
            local Weld = Instance.new("Weld", Hole)
            Weld.Part0 = H
            Weld.Part1 = Hole
            Weld.C0 = H.CFrame:toObjectSpace(surfaceCF)
            Hole.Anchored = false
        end
        delay(S.holeSettings.visibleTime, function()
            if S.holeSettings.disappearTime > 0 then
                local t0 = tick()
                while true do
                    local Alpha = math.min((tick() - t0) / S.holeSettings.disappearTime, 1)
                    Decal.Transparency = numLerp(0, 1, Alpha)
                    if Alpha == 1 then break end
                    wait()
                end
                Hole:Destroy()
            else
                Hole:Destroy()
            end
        end)
    end
0
Can you post your script? Vxpper 101 — 4y
0
sure iHavoc101 127 — 4y

Answer this question