Xzerizon
|
  |
| Joined: 16 Aug 2011 |
| Total Posts: 2174 |
|
|
| 25 Nov 2012 06:40 PM |
I've made a CFramed sword, and am using the Linked Sword script for it. However, I didn't want it to only do damage at the handle, so I changed where the script affected.
It provides the sounds okay, but, even though output reports no errors, it can't deal damage to what it hits.
Here is the modified LinkedSword script.
r = game:service("RunService")
local damage = 10
local slash_damage = 5
sword = script.Parent.HittingBox Tool = script.Parent script.Parent.CanBeDropped = false
local SlashSound = Instance.new("Sound") SlashSound.SoundId = "http://www.roblox.com/asset/?id=12221984" SlashSound.Parent = sword SlashSound.Pitch = 3 SlashSound.Volume = 0.5
local UnsheathSound = Instance.new("Sound") UnsheathSound.SoundId = "rbxasset://sounds\\unsheath.wav" UnsheathSound.Parent = sword UnsheathSound.Pitch = 1.5 UnsheathSound.Volume = 0.5
function blow(hit) if (hit.Parent == nil) then return end -- happens when bullet hits sword
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
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
attack()
--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)
|
|
|
| Report Abuse |
|
|
crouton04
|
  |
| Joined: 07 Jul 2010 |
| Total Posts: 4459 |
|
|
| 25 Nov 2012 06:43 PM |
| Make a box bigger then the blade, then make it invisible and make it damage from that.. |
|
|
| Report Abuse |
|
|
Xzerizon
|
  |
| Joined: 16 Aug 2011 |
| Total Posts: 2174 |
|
|
| 25 Nov 2012 06:44 PM |
| Sorry if I didn't make it clear, crouton, but I DID make such a thing. |
|
|
| Report Abuse |
|
|
crouton04
|
  |
| Joined: 07 Jul 2010 |
| Total Posts: 4459 |
|
|
| 25 Nov 2012 06:45 PM |
| Tell me what is exactly wrong.. |
|
|
| Report Abuse |
|
|
Xzerizon
|
  |
| Joined: 16 Aug 2011 |
| Total Posts: 2174 |
|
|
| 25 Nov 2012 06:47 PM |
| It provides the sounds okay, but, even though output reports no errors, >it can't deal damage to what it hits.< |
|
|
| Report Abuse |
|
|
crouton04
|
  |
| Joined: 07 Jul 2010 |
| Total Posts: 4459 |
|
|
| 25 Nov 2012 06:53 PM |
OMJSY@@
-------- OMG HAX
r = game:service("RunService")
local damage = 5
local slash_damage = 8 local lunge_damage = 12
sword = script.Parent.HittingBox Tool = script.Parent
local SlashSound = Instance.new("Sound") SlashSound.SoundId = "rbxasset://sounds\\swordslash.wav" SlashSound.Parent = sword SlashSound.Volume = .7 SlashSound.Pitch = .9
local LungeSound = Instance.new("Sound") LungeSound.SoundId = "rbxasset://sounds\\swordlunge.wav" LungeSound.Parent = sword LungeSound.Volume = .6 LungeSound.Pitch = .9
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(.2) swordOut() wait(.2) force.Parent = nil wait(.4) 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)
|
|
|
| Report Abuse |
|
|
Xzerizon
|
  |
| Joined: 16 Aug 2011 |
| Total Posts: 2174 |
|
|
| 25 Nov 2012 10:34 PM |
| Thank you for the effort, but there's a reason I took out the lunge. I couldn't get the grip to cooperate. Is there a way to do this without the lunge? |
|
|
| Report Abuse |
|
|
crouton04
|
  |
| Joined: 07 Jul 2010 |
| Total Posts: 4459 |
|
|
| 26 Nov 2012 06:15 AM |
| Maybe you didn't remove lunge correctly... |
|
|
| Report Abuse |
|
|