Put this script in ServerScriptService it disables player to player collisions
01 | local PhysicsService = game:GetService( "PhysicsService" ) |
02 | local Players = game:GetService( "Players" ) |
04 | local playerCollisionGroupName = "Players" |
05 | PhysicsService:CreateCollisionGroup(playerCollisionGroupName) |
06 | PhysicsService:CollisionGroupSetCollidable(playerCollisionGroupName, playerCollisionGroupName, false ) |
08 | local previousCollisionGroups = { } |
10 | local function setCollisionGroup(object) |
11 | if object:IsA( "BasePart" ) then |
12 | previousCollisionGroups [ object ] = object.CollisionGroupId |
13 | PhysicsService:SetPartCollisionGroup(object, playerCollisionGroupName) |
17 | local function setCollisionGroupRecursive(object) |
18 | setCollisionGroup(object) |
20 | for _, child in ipairs (object:GetChildren()) do |
21 | setCollisionGroupRecursive(child) |
25 | local function resetCollisionGroup(object) |
26 | local previousCollisionGroupId = previousCollisionGroups [ object ] |
27 | if not previousCollisionGroupId then return end |
29 | local previousCollisionGroupName = PhysicsService:GetCollisionGroupName(previousCollisionGroupId) |
30 | if not previousCollisionGroupName then return end |
32 | PhysicsService:SetPartCollisionGroup(object, previousCollisionGroupName) |
33 | previousCollisionGroups [ object ] = nil |
36 | local function onCharacterAdded(character) |
37 | setCollisionGroupRecursive(character) |
39 | character.DescendantAdded:Connect(setCollisionGroup) |
40 | character.DescendantRemoving:Connect(resetCollisionGroup) |
43 | local function onPlayerAdded(player) |
44 | player.CharacterAdded:Connect(onCharacterAdded) |
47 | Players.PlayerAdded:Connect(onPlayerAdded) |