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)
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.