my error is that it say Humanoid is not member of tool,model what i need to do on that but i want only the humanoid thing cause the other things dont work
--[[ Rewritten by ArceusInator This script is the Sword module. This runs on either the server (when FilteringEnabled is on) or the client (when FilteringEnabled is off) --]] local Tool = script.Parent local Handle = Tool.Handle local Config = Tool:WaitForChild'Configurations' local Sword = { -- Advanced settings DoubleClickMaxTime = 0.2, LocalDoubleClickMaxTime = 0.2, -- Variables State = 'Idle', -- Idle, Slashing, Lunging LocalState = 'Idle', SlashingStartedAt = 0, LocalSlashingStartedAt = 0, AttackTicket = 0, LocalAttackTicket = 0, DestroyOnUnequip = {} } local GLib = require(Tool:WaitForChild'GLib') -- Library of useful functions -- -- function Sword:Connect() Handle.Touched:connect(function(hit) local myPlayer = GLib.GetPlayerFromPart(Tool) local character, player, humanoid = GLib.GetCharacterFromPart(hit) if myPlayer~=nil and character~=nil and humanoid~=nil and myPlayer~=player then local isTeammate = GLib.IsTeammate(myPlayer, player) local myCharacter = myPlayer.Character local myHumanoid = myCharacter and myCharacter:FindFirstChild'Humanoid' if (Config.CanTeamkill.Value==true or isTeammate~=true) and (myHumanoid and myHumanoid:IsA'Humanoid' and myHumanoid.Health > 0) and (Config.CanKillWithForceField.Value or myCharacter:FindFirstChild'ForceField'==nil) then local doDamage = Config.IdleDamage.Value if Sword.State == 'Slashing' then doDamage = Config.SlashDamage.Value elseif Sword.State == 'Lunging' then doDamage = Config.LungeDamage.Value end GLib.TagHumanoid(humanoid, myPlayer, 1) humanoid:TakeDamage(doDamage) end end end) end function Sword:Attack() local myCharacter, myPlayer, myHumanoid = GLib.GetCharacterFromPart(Tool) if myHumanoid~=nil and myHumanoid.Health > 0 then if Config.CanKillWithForceField.Value or myCharacter:FindFirstChild'ForceField'==nil then local now = tick() if Sword.State == 'Slashing' and now-Sword.SlashingStartedAt < Sword.DoubleClickMaxTime then Sword.AttackTicket = Sword.AttackTicket+1 Sword:Lunge(Sword.AttackTicket) elseif Sword.State == 'Idle' then Sword.AttackTicket = Sword.AttackTicket+1 Sword.SlashingStartedAt = now Sword:Slash(Sword.AttackTicket) end end end end function Sword:LocalAttack() local myCharacter, myPlayer, myHumanoid = GLib.GetCharacterFromPart(Tool) if myHumanoid~=nil and myHumanoid.Health > 0 then if Config.CanKillWithForceField.Value or myCharacter:FindFirstChild'ForceField'==nil then local now = tick() if Sword.LocalState == 'Slashing' and now-Sword.LocalSlashingStartedAt < Sword.LocalDoubleClickMaxTime then Sword.LocalAttackTicket = Sword.LocalAttackTicket+1 Sword:LocalLunge(Sword.LocalAttackTicket) elseif Sword.LocalState == 'Idle' then Sword.LocalAttackTicket = Sword.LocalAttackTicket+1 Sword.LocalSlashingStartedAt = now Sword:LocalSlash(Sword.LocalAttackTicket) end end end end function Sword:Slash(ticket) Sword.State = 'Slashing' Handle.SlashSound:Play() Sword:Animate'Slash' wait(0.5) if Sword.AttackTicket == ticket then Sword.State = 'Idle' end end function Sword:LocalSlash(ticket) Sword.LocalState = 'Slashing' wait(0.5) if Sword.LocalAttackTicket == ticket then Sword.LocalState = 'Idle' end end function Sword:Lunge(ticket) Sword.State = 'Lunging' Handle.LungeSound:Play() Sword:Animate'Lunge' local force = Instance.new'BodyVelocity' force.velocity = Vector3.new(0, 10, 0) force.maxForce = Vector3.new(0, 4000, 0) force.Parent = Tool.Parent.Torso Sword.DestroyOnUnequip[force] = true wait(0.25) Tool.Grip = CFrame.new(0, 0, -1.5, 0, -1, -0, -1, 0, -0, 0, 0, -1) wait(0.25) force:Destroy() Sword.DestroyOnUnequip[force] = nil wait(0.5) Tool.Grip = CFrame.new(0, 0, -1.5, 0, 0, 1, 1, 0, 0, 0, 1, 0) Sword.State = 'Idle' end function Sword:LocalLunge(ticket) Sword.LocalState = 'Lunging' wait(0.25) wait(0.25) wait(0.5) Sword.LocalState = 'Idle' end function Sword:Animate(name) local tag = Instance.new'StringValue' tag.Name = 'toolanim' tag.Value = name tag.Parent = Tool -- Tag gets removed by the animation script end function Sword:Unequip() for obj in next, Sword.DestroyOnUnequip do obj:Destroy() end Sword.DestroyOnUnequip = {} Tool.Grip = CFrame.new(0, 0, -1.5, 0, 0, 1, 1, 0, 0, 0, 1, 0) Sword.State = 'Idle' Sword.LocalState = 'Idle' end -- function Sword:Initialize() Sword:Connect() end -- -- return Sword
Marked as Duplicate by abnotaddable, Thundermaker300, lukeb50, and hiimgoodpack
This question has been asked before, and already has an answer. If those answers do not fully address your question, then please ask a new question here.
Why was this question closed?