Scripting HelpersARCHIVE
A little piece of Roblox history. Preserved for everyone, one question at a time.Read about the archive →
✓ ANSWER ACCEPTED

Why cloned tools' scripts from ReplicatedStorage doesnt work?

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)

1 comment

0

Maybe put the tool in ServerStorage?

1 answer

✓ Accepted answer

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.

2 comments

0

oh that was the issue. Thanks a lot! converting them to local script sloved everything! Cheers

0

pls click accept answer after you get your answer

This discussion is preserved as it was. New answers, comments, and votes are closed.