I created a gun script but it allows team killing how can I edit it to remove this possibility?
Here is my code:
--player variables local player = game.Players.LocalPlayer local mouse = player:GetMouse() --gun variables local gun = script.Parent local ammo = 100 local magammo = ammo local reloading = false local auto = false -- set to false if you do not want the gun to be automatic local firing = false local CanChangeFireModes = false local damage = 80, 100 --^^If set to true the player can press v to change firemodes from auto to semi and semi to auto local debounce = false if not game.workspace:FindFirstChild("Bullet") then local bullet_storage = Instance.new("Folder", workspace) bullet_storage.Name = "Bullet" else --nothing end function getBullet() print(ammo) if ammo > 0 then if debounce == false then debounce = true ammo = ammo - 1 gun.Handle.Fire:Play() local mh = mouse.Hit local B = Instance.new("Part", workspace.Bullet) B.CFrame = gun.Handle.CFrame + (player.Character.Torso.CFrame.lookVector) B.CFrame = CFrame.new(B.Position, mh.p) B.FormFactor = "Custom" B.Size = Vector3.new(0.2, 0.2, 0.2) B.BrickColor = BrickColor.Black() B.CanCollide = false local velo = Instance.new("BodyVelocity", B) velo.velocity = B.CFrame.lookVector * 120 velo.maxForce = Vector3.new(math.huge, math.huge, math.huge) B.Touched:connect(function(hit) local humanoid = hit.Parent:FindFirstChild("Humanoid") if humanoid then humanoid:TakeDamage(damage) end end) wait(0) debounce = false end end end function autofire() if ammo > 0 then while firing == true do if firing == true and ammo <= 0 then firing = false end print(ammo) wait(0) gun.Handle.Fire:Play() local mh = mouse.Hit local B = Instance.new("Part", workspace.Bullet) B.CFrame = gun.Handle.CFrame + (player.Character.Torso.CFrame.lookVector) B.CFrame = CFrame.new(B.Position, mh.p) B.FormFactor = "Custom" B.Size = Vector3.new(0.2, 0.2, 0.2) B.BrickColor = BrickColor.Black() B.CanCollide = false ammo = ammo - 1 local velo = Instance.new("BodyVelocity", B) velo.velocity = B.CFrame.lookVector * 120 velo.maxForce = Vector3.new(math.huge, math.huge, math.huge) B.Touched:connect(function(hit) local humanoid = hit.Parent:FindFirstChild("Humanoid") if humanoid then humanoid:TakeDamage(damage) end end) wait(0.005) end end end mouse.Button1Down:connect(function() if auto == true then firing = true autofire() else getBullet() end if ammo <= 0 then print('reloading') wait(2) ammo = magammo end end) mouse.Button1Up:connect(function() if firing == true then firing = false end end) local uis = game:GetService("UserInputService") -- allows firemode change uis.InputBegan:connect(function(inputObject, gameProcessedEvent) if inputObject.KeyCode == Enum.KeyCode.V and CanChangeFireModes == true then if auto == true then auto = false else auto = true end end end)
You can do a check to see if the player that was hit has the same TeamColor property as the player who shot the gun:
B.Touched:connect(function(hit) local playerHit = game.Players:GetPlayerFromCharacter(hit.Parent) local humanoid = hit.Parent:FindFirstChild("Humanoid") if playerHit and humanoid and player.TeamColor ~= playerHit.TeamColor then humanoid:TakeDamage(damage) end end)
You could use values as in when a player is assigned a team then a Value is parented under his character and add a value to the gun he uses that identifies what team he is on and it changes every time he changes team and then you could make a touched event with the bullet and make it to where if the bullet touches a part and the guns value which identifies the team that the gun is under and if the character that gets touched by that has the same value inside of him you could make it return end and then if the character that gets touched by it doesn't have that value he would take damage so you won't have to worry about the team players getting hurt because they will have the same value as the gun that the bullet is getting shot out of... It might be a bit complicating but, I hope you understood what I meant and I am sorry if you didn't. You can comment below for any questions or concerns!