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

How come this FE compatible sword only works in studio? [Not Answered]

Asked by
saucyP 7
7 years ago
Edited 7 years ago

I'm using the default classic sword, only the updated one, with the configurations and what not. It works perfectly fine in studio, but playing it on an actual server doesn't work. I checked the Developer Console in the server, and there is an error that reads this: Players.saucyP.Backpack.ClassicSword.GLib Requested module experienced an error while loading. Here's the ModuleScript. You can see that a verified person made the script, and it should work perfectly.

--[[
    Rewritten by ArceusInator

    This script is the Sword module.  This runs on either the server (when FilteringEnabled is on) or the client (when FilteringEnabled is off)
--]]
local Tool = script.Parent
local Handle = Tool.Handle
local Config = Tool:WaitForChild'Configurations'
local Sword = {
    -- Advanced settings
    DoubleClickMaxTime = 0.2,
    LocalDoubleClickMaxTime = 0.2,

    -- Variables
    State = 'Idle', -- Idle, Slashing, Lunging
    LocalState = 'Idle',
    SlashingStartedAt = 0,
    LocalSlashingStartedAt = 0,
    AttackTicket = 0,
    LocalAttackTicket = 0,
    DestroyOnUnequip = {}
}

local GLib = require(Tool:WaitForChild'GLib') -- Library of useful functions

--
--
function Sword:Connect()
    Handle.Touched:connect(function(hit)
        local myPlayer = GLib.GetPlayerFromPart(Tool)
        local character, player, humanoid = GLib.GetCharacterFromPart(hit)

        if myPlayer~=nil and character~=nil and humanoid~=nil and myPlayer~=player then
            local isTeammate = GLib.IsTeammate(myPlayer, player)
            local myCharacter = myPlayer.Character
            local myHumanoid = myCharacter and myCharacter:FindFirstChild'Humanoid'

            if (Config.CanTeamkill.Value==true or isTeammate~=true) and (myHumanoid and myHumanoid:IsA'Humanoid' and myHumanoid.Health > 0) and (Config.CanKillWithForceField.Value or myCharacter:FindFirstChild'ForceField'==nil) then
                local doDamage = Config.IdleDamage.Value
                if Sword.State == 'Slashing' then
                    doDamage = Config.SlashDamage.Value
                elseif Sword.State == 'Lunging' then
                    doDamage = Config.LungeDamage.Value
                end

                GLib.TagHumanoid(humanoid, myPlayer, 1)
                humanoid:TakeDamage(doDamage)
            end
        end
    end)
end

function Sword:Attack()
    local myCharacter, myPlayer, myHumanoid = GLib.GetCharacterFromPart(Tool)

    if myHumanoid~=nil and myHumanoid.Health > 0 then
        if Config.CanKillWithForceField.Value or myCharacter:FindFirstChild'ForceField'==nil then
            local now = tick()

            if Sword.State == 'Slashing' and now-Sword.SlashingStartedAt < Sword.DoubleClickMaxTime then
                Sword.AttackTicket = Sword.AttackTicket+1

                Sword:Lunge(Sword.AttackTicket)
            elseif Sword.State == 'Idle' then
                Sword.AttackTicket = Sword.AttackTicket+1
                Sword.SlashingStartedAt = now

                Sword:Slash(Sword.AttackTicket)
            end
        end
    end
end

function Sword:LocalAttack()
    local myCharacter, myPlayer, myHumanoid = GLib.GetCharacterFromPart(Tool)

    if myHumanoid~=nil and myHumanoid.Health > 0 then
        if Config.CanKillWithForceField.Value or myCharacter:FindFirstChild'ForceField'==nil then
            local now = tick()

            if Sword.LocalState == 'Slashing' and now-Sword.LocalSlashingStartedAt < Sword.LocalDoubleClickMaxTime then
                Sword.LocalAttackTicket = Sword.LocalAttackTicket+1

                Sword:LocalLunge(Sword.LocalAttackTicket)
            elseif Sword.LocalState == 'Idle' then
                Sword.LocalAttackTicket = Sword.LocalAttackTicket+1
                Sword.LocalSlashingStartedAt = now

                Sword:LocalSlash(Sword.LocalAttackTicket)
            end
        end
    end
end

function Sword:Slash(ticket)
    Sword.State = 'Slashing'

    Handle.SlashSound:Play()
    Sword:Animate'Slash'

    wait(0.5)

    if Sword.AttackTicket == ticket then
        Sword.State = 'Idle'
    end
end

function Sword:LocalSlash(ticket)
    Sword.LocalState = 'Slashing'

    wait(0.5)

    if Sword.LocalAttackTicket == ticket then
        Sword.LocalState = 'Idle'
    end
end

function Sword:Lunge(ticket)
    Sword.State = 'Lunging'

    Handle.LungeSound:Play()
    Sword:Animate'Lunge'

    local force = Instance.new'BodyVelocity'
    force.velocity = Vector3.new(0, 10, 0)
    force.maxForce = Vector3.new(0, 4000, 0)
    force.Parent = Tool.Parent.Torso
    Sword.DestroyOnUnequip[force] = true

    wait(0.25)
    Tool.Grip = CFrame.new(0, 0, -1.5, 0, -1, -0, -1, 0, -0, 0, 0, -1)
    wait(0.25)
    force:Destroy()
    Sword.DestroyOnUnequip[force] = nil
    wait(0.5)
    Tool.Grip = CFrame.new(0, 0, -1.5, 0, 0, 1, 1, 0, 0, 0, 1, 0)

    Sword.State = 'Idle'
end

function Sword:LocalLunge(ticket)
    Sword.LocalState = 'Lunging'

    wait(0.25)
    wait(0.25)
    wait(0.5)

    Sword.LocalState = 'Idle'
end

function Sword:Animate(name)
    local tag = Instance.new'StringValue'
    tag.Name = 'toolanim'
    tag.Value = name
    tag.Parent = Tool -- Tag gets removed by the animation script
end

function Sword:Unequip()
    for obj in next, Sword.DestroyOnUnequip do
        obj:Destroy()
    end

    Sword.DestroyOnUnequip = {}

    Tool.Grip = CFrame.new(0, 0, -1.5, 0, 0, 1, 1, 0, 0, 0, 1, 0)
    Sword.State = 'Idle'
    Sword.LocalState = 'Idle'
end

--
function Sword:Initialize()
    Sword:Connect()
end

--
--
return Sword
0
Perhaps an issue with require() cabbler 1942 — 7y
0
It worked before, but I have no idea what happened, even though I don't recall editing the script. saucyP 7 — 7y
0
I am having the same issue. Ever since the Roblox update from about three weeks ago, my 'ROBLOX Set' sword is no longer working. It will appear in game, I can equip it however when I try to use it, it will no longer swing. In addition I am receiving the same error as you. Any thoughts on this anybody? MrBigBenn 0 — 7y
0
ok this is dumb, but try turning off fe, if it doesnt work again, i have nothign to say ieatandisbaconhair 77 — 7y
0
Where do you put the script Toadayye 0 — 6y

Answer this question