Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- local Storage = game:GetService("ReplicatedStorage")
- local PhysicsService:PhysicsService = game:GetService("PhysicsService")
- local PlayerService = game:GetService("Players")
- local Checker = require(Storage.Modules.GrabbableChecker)
- local PlateHandler = require(Storage.Modules.PlateHandler)
- function Drop(Player:Player)
- local Object:BasePart = Checker.GrabbedObjects[Player.UserId]
- if Object then
- Checker.GrabbedObjects[Player.UserId] = nil
- Object.CollisionGroup = "default"
- Object:SetNetworkOwnershipAuto()
- Storage.Events.Release:FireClient(Player)
- end
- end
- Storage.Events.Release.OnServerEvent:Connect(Drop)
- PlayerService.PlayerAdded:Connect(function(Player)
- PhysicsService:RegisterCollisionGroup(Player.UserId)
- PhysicsService:CollisionGroupSetCollidable(Player.UserId,Player.UserId,false)
- Player.CharacterAdded:Connect(function(Character)
- Character:FindFirstChildOfClass("Humanoid").Died:Connect(function()
- Drop(Player)
- end)
- for _,Limb in Character:GetChildren() do
- if Limb:IsA("BasePart") then
- Limb.CollisionGroup = Player.UserId
- end
- end
- end)
- end)
- PlayerService.PlayerRemoving:Connect(function(Player)
- PhysicsService:UnregisterCollisionGroup(Player.UserId)
- Drop(Player)
- end)
- Storage.Events.Grab.OnServerEvent:Connect(function(Player,Object:BasePart)
- PlateHandler.DetachFromPlate(Object)
- Checker.Check(Object)
- if Checker.Grabbable then
- --plate weldy thingy
- if Object.Name == "Plate" then
- PlateHandler.WeldStackOnPlate(Object)
- end
- --end of plate weldy thingy
- Checker.GrabbedObjects[Player.UserId] = Object
- Object.CollisionGroup = Player.UserId
- if Object.AssemblyLinearVelocity then
- Object.AssemblyLinearVelocity = Vector3.new(0,0,0)
- end
- if Object.AssemblyAngularVelocity then
- Object.AssemblyAngularVelocity = Vector3.new(0,0,0)
- end
- Object:SetNetworkOwner(Player)
- end
- end)
Advertisement
Add Comment
Please, Sign In to add comment