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

[Please don't ignore lol] Idle animations stop playing upon switching weapons. (?)

Asked by 3 years ago

I'll get straight to the point. I was working on Server-Sided animations for my fps, and noticed that when I switch weapons, everything works fine until I switch back to my primary after switching to my secondary. The animation for the primary weapon, which I had then switched to from my secondary weapon, did not play and so the character was stuck with the idle animation of the secondary weapon but had the primary equipted. I'm not good at explaining things, so if you have questions, (which I'm sure you will,) I'll be answering them.

Framework script: (Local)

--wait until game is loaded
repeat wait() until game:IsLoaded()

--local variables
local plr = game.Players.LocalPlayer
local char = plr.Character
local cam = workspace.CurrentCamera
local mouse = plr:GetMouse()
local humanoid = char:WaitForChild("Humanoid")

--service variables
local runs = game:GetService("RunService")
local tweens = game:GetService("TweenService")
local uis = game:GetService("UserInputService")
local rs = game:GetService("ReplicatedStorage")

--misc variables
local modules = rs:WaitForChild("Modules")
local models = rs:WaitForChild("Models")
local running
local aiming
local secondaryEquipt = false
local primaryEquipt = true

local Keybinds = require(modules:WaitForChild("Keybinds"))

local ignore = Instance.new("Folder",workspace)
ignore.Name = "Ignore"

--CFrame variables

local maincf = CFrame.new()
local aimcf = CFrame.new()
local gunbobcf = CFrame.new()

--gun variables

local currentEquipt
local primary = "rifle"
local secondary = "pistol"
local currentData
local currentAnims
local currentIdolRemote

--remotes
local remotes = rs:WaitForChild("Remotes")
local CurrentRemotes

--debounce
local idleDebounce = false

--functions

function setup(gun)
    currentEquipt = models:WaitForChild(gun):Clone()
    currentEquipt.PrimaryPart = currentEquipt:WaitForChild("Handle")
    currentEquipt.Parent = cam

    currentData = require(modules:FindFirstChild(gun))

    CurrentRemotes = remotes:FindFirstChild(gun)

    maincf = currentData.maincf

    for _,v in pairs(currentEquipt:GetChildren())do
        if v:IsA("BasePart") or v:IsA("MeshPart") or v:IsA("UnionOperation") then
            if v.Anchored and not v.CanCollide then
            else
                v.Anchored = true
                v.CanCollide = false
                print("Fixed "..v.name..".")
            end

            if v:FindFirstChild("Weld") then
                v.Weld:Destroy()
            end
        end
    end

    CurrentRemotes.IdleRemote:FireServer(CurrentRemotes.IdleRemote.Idle.Value)

end

function switch(target, replacement)
    local removal
    removal = cam:FindFirstChild(target)
    removal:Destroy()
    setup(replacement)
end

runs.RenderStepped:Connect(function()
    if currentEquipt then
        currentEquipt:SetPrimaryPartCFrame(
            cam.CFrame
                *maincf
                *aimcf
                *gunbobcf
        )
    end

    if running then
        gunbobcf = gunbobcf:Lerp(CFrame.new(
            0.1* math.sin(tick()*6),
            0.05 * math.sin(tick()*12),
            0
            ),0.2)
    end

    if aiming then
        aimcf = aimcf:Lerp(currentData.aimcf,0.2)
    else
        aimcf = aimcf:Lerp(CFrame.new(),0.1)
    end
end)

uis.MouseIconEnabled = false

mouse.Button2Down:Connect(function()
    aiming = true
end)

mouse.Button2Up:Connect(function()
    aiming = false
end)

char.Humanoid.Running:Connect(function(speed)
    if speed >= 0.1 then
        running = true
    else
        running = false
    end
end)

uis.InputBegan:Connect(function(input)
    if input.UserInputType == Enum.UserInputType.Keyboard and input.KeyCode == Keybinds.Keybinds.secondary and secondaryEquipt == false then
        switch(primary, secondary)
        secondaryEquipt = true
        primaryEquipt = false
    elseif input.UserInputType == Enum.UserInputType.Keyboard and input.KeyCode == Keybinds.Keybinds.primary and primaryEquipt == false then
        switch(secondary, primary)
        secondaryEquipt = false
        primaryEquipt = true
    end
end)

setup(primary)
0
Animations immediately replicate to the server. You don't need to do server-sided animations. Dovydas1118 1495 — 3y

Answer this question