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