New: Nitro Boost our Discord server and receive full donation perks here on the website! Join the Scripting Helpers Discord Server to learn more! You can also Support on Patreon as always.
Ad
Still have questions? Join our Discord server and get real time help.
Log in to vote
0

Why cloned tools' scripts from ReplicatedStorage doesnt work?

Asked by 10 days ago

Hello, im trying to create a crafting system so when i have enough material i able to craft the item that i want. Script works fine if the tool starts in StarterPack. But when i craft the item and clone it from ReplicatedStorage, tool's script doesnt work at all.

i tried to disable FilteringEnabled but doesnt work as well.

CraftScript:


local Player = game.Players.LocalPlayer local Backpack = game.Players.LocalPlayer.Backpack local GUI = script.Parent local craftFrame = GUI.CraftFrame local craftSpear = craftFrame.CraftSpear local Spear = game.ReplicatedStorage.Spear craftSpear.MouseButton1Click:connect(function() if _G.logCount < 6 and _G.stoneCount <4 then craftSpear.Text = "Not Enough Materials" wait(1) craftSpear.Text = "Craft Spear" end if _G.logCount >= 6 and _G.stoneCount >=4 then _G.logCount= _G.logCount -6 _G.stoneCount = _G.stoneCount -4 for i = 0,5, 1 do Backpack.Log:Destroy() end for i = 0, 3, 1 do Backpack.Stone:Destroy() end Spear:Clone() Spear.Parent = Player.Backpack end end)

Tool's script

r = game:service("RunService")


local damage = 5


local slash_damage = 5
local lunge_damage = 90

sword = script.Parent.Handle
Tool = script.Parent


local SlashSound = Instance.new("Sound")
SlashSound.SoundId = "rbxasset://sounds\\swordslash.wav"
SlashSound.Parent = sword
SlashSound.Volume = .2

local LungeSound = Instance.new("Sound")
LungeSound.SoundId = "rbxasset://sounds\\swordlunge.wav"
LungeSound.Parent = sword
LungeSound.Volume = .4

local UnsheathSound = Instance.new("Sound")
UnsheathSound.SoundId = "rbxasset://sounds\\unsheath.wav"
UnsheathSound.Parent = sword
UnsheathSound.Volume = .5



function blow(hit)
    local humanoid = hit.Parent:findFirstChild("Humanoid")
    local vCharacter = Tool.Parent
    local vPlayer = game.Players:playerFromCharacter(vCharacter)
    local hum = vCharacter:findFirstChild("Humanoid") -- non-nil if tool held by a character
    if humanoid~=nil and humanoid ~= hum and hum ~= nil then
        --print("Hit")
        tagHumanoid(humanoid, vPlayer)
        humanoid:TakeDamage(damage)
        wait(1)
        untagHumanoid(humanoid)
    end
end


function tagHumanoid(humanoid, player)
    local creator_tag = Instance.new("ObjectValue")
    creator_tag.Value = player
    creator_tag.Name = "creator"
    creator_tag.Parent = humanoid
end

function untagHumanoid(humanoid)
    if humanoid ~= nil then
        local tag = humanoid:findFirstChild("creator")
        if tag ~= nil then
            tag.Parent = nil
        end
    end
end


function attack()
    damage = slash_damage
    SlashSound:play()
    local anim = Instance.new("StringValue")
    anim.Name = "toolanim"
    anim.Value = "Slash"
    anim.Parent = Tool
end

function lunge()
    damage = lunge_damage

    LungeSound:play()

    local anim = Instance.new("StringValue")
    anim.Name = "toolanim"
    anim.Value = "Lunge"
    anim.Parent = Tool


    force = Instance.new("BodyVelocity")
    force.velocity = Vector3.new(0,10,0) --Tool.Parent.Torso.CFrame.lookVector * 80
    force.Parent = Tool.Parent.Torso
    wait(.25)
    swordOut()
    wait(.25)
    force.Parent = nil
    wait(.5)
    swordUp()

    damage = slash_damage
end

function swordUp()
    Tool.GripForward = Vector3.new(-1,0,0)
    Tool.GripRight = Vector3.new(0,1,0)
    Tool.GripUp = Vector3.new(0,0,1)
end

function swordOut()
    Tool.GripForward = Vector3.new(0,0,1)
    Tool.GripRight = Vector3.new(0,-1,0)
    Tool.GripUp = Vector3.new(-1,0,0)
end

function swordAcross()
    -- parry
end


Tool.Enabled = true
local last_attack = 0
function onActivated()

    if not Tool.Enabled then
        return
    end

    Tool.Enabled = false

    local character = Tool.Parent;
    local humanoid = character.Humanoid
    if humanoid == nil then
        print("Humanoid not found")
        return 
    end

    t = r.Stepped:wait()

    if (t - last_attack < .2) then
        lunge()
    else
        attack()
    end

    last_attack = t

    --wait(.4)

    Tool.Enabled = true
end


function onEquipped()
    UnsheathSound:play()
end


script.Parent.Activated:connect(onActivated)
script.Parent.Equipped:connect(onEquipped)


connection = sword.Touched:connect(blow)

0
Maybe put the tool in ServerStorage? PrismaticFruits 73 — 10d

1 answer

Log in to vote
0
Answered by 10 days ago

I only have a sentence to you, because all the script was correct.

--= MAKE SURE YOUR SCRIPT IS ALL LOCAL SCRIPT =--

Yeah, only like this, or if you have any more errors, comment below too.

0
oh that was the issue. Thanks a lot! converting them to local script sloved everything! Cheers emay0660 0 — 10d
0
pls click accept answer after you get your answer royaltoe 4557 — 8d
Ad

Answer this question