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

Why Classic Sword works in Studio but not Online Mode?

I use the ROBLOX sets classic sword from Roblox Studio in my game and it works when I test it inside the Studio but not when I play in Online mode.

Here's more info: Basically there's a button in my game that clones the classic sword from the ServerStorage and places it into the user's inventory, here's that script if you need it:

function onClicked(click)
	local Inventory = click.Backpack
	local sword = game.ServerStorage.Sword
	local newsword = sword:Clone()
	newsword.Parent = Inventory
end

script.Parent.ClickDetector.MouseClick:connect(onClicked)

At first the sword did not work (It only slashed once and wouldn't anymore when I clicked) and someone help me fix the sword script by changing line 127 to:

force.Parent = Tool.Parent.HumanoidRootPart

Which made it work normally in studio but not in online mode. I also changed the script from local to a normal script because the sword was in ServerStorage and someone said local scripts in ServerStorage may work only in Solo but not online. The sword still does not work though, but I've kept it a normal script because I see no difference.

By "not work" I mean the sword doesn't slash at all when I click, it just is held by the character. If someone could please help me or just give me a model to a working sword, I've literally tried so many classic sword models it's ridiculous I can't find one that works. If you need anymore info about my scripts or the sword please say so and I'll post it.

3 comments

0

What character are you using it on? R6, R15, Anthro?

0

It only works when you use R6

0

Does it work in online and studio mode if you are using R6?

1 answer

WAIT!! WRONG SCRIPT!!! this is the right one xD

-------- OMG HAX

r = game:service("RunService")

local damage = 5

local slash_damage = 4 local lunge_damage = 12

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

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

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

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

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 -- final check, make sure sword is in-hand

	local right_arm = vCharacter:FindFirstChild("Right Arm")
	if (right_arm ~= nil) then
		local joint = right_arm:FindFirstChild("RightGrip")
		if (joint ~= nil and (joint.Part0 == sword or joint.Part1 == sword)) then
			tagHumanoid(humanoid, vPlayer)
			humanoid:TakeDamage(damage)
			wait(1)
			untagHumanoid(humanoid)
		end
	end


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(.1)
swordOut()
wait(.1)
force.Parent = nil
wait(.2)
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(.5)

Tool.Enabled = true

end

function onEquipped() UnsheathSound:play() end

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

connection = sword.Touched:connect(blow)

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