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 4 months 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 637 — 4mo

1 answer

Log in to vote
0
Answered by
Z0Ile 687 Moderation Voter
4 months 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 18 — 4mo
0
pls click accept answer after you get your answer p0etic 5049 — 4mo
Ad

Answer this question