DEVJORDAN22

Btools

Jan 19th, 2024
13
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 13.56 KB | None | 0 0
  1. --[[
  2. NOTES:
  3. Some hats and hair won't have collison because roblox.
  4. Due to roblox physics players might get flung when touching parts.
  5. Fixed bug where hats with same name wouldn't work.
  6. AND THIS WON'T WORK IN ALL GAMES.
  7.  
  8. Made by Rouxhaver
  9. ]]
  10.  
  11. local Players = game:GetService("Players")
  12. local RunService = game:GetService("RunService")
  13. local LocalPlayer = Players.LocalPlayer
  14.  
  15. if not getgenv().Network then
  16. getgenv().Network = {
  17. BaseParts = {};
  18. FakeConnections = {};
  19. Connections = {};
  20. Output = {
  21. Enabled = true;
  22. Prefix = "[NETWORK] ";
  23. Send = function(Type,Output,BypassOutput)
  24. if typeof(Type) == "function" and (Type == print or Type == warn or Type == error) and typeof(Output) == "string" and (typeof(BypassOutput) == "nil" or typeof(BypassOutput) == "boolean") then
  25. if Network["Output"].Enabled == true or BypassOutput == true then
  26. Type(Network["Output"].Prefix..Output);
  27. end;
  28. elseif Network["Output"].Enabled == true then
  29. error(Network["Output"].Prefix.."Output Send Error : Invalid syntax.");
  30. end;
  31. end;
  32. };
  33. CharacterRelative = false;
  34. }
  35.  
  36. Network["Output"].Send(print,": Loading.")
  37. Network["Velocity"] = Vector3.new(14.46262424,14.46262424,14.46262424); --exactly 25.1 magnitude
  38. Network["RetainPart"] = function(Part,ReturnFakePart) --function for retaining ownership of unanchored parts
  39. assert(typeof(Part) == "Instance" and Part:IsA("BasePart") and Part:IsDescendantOf(workspace),Network["Output"].Prefix.."RetainPart Error : Invalid syntax: Arg1 (Part) must be a BasePart which is a descendant of workspace.")
  40. assert(typeof(ReturnFakePart) == "boolean" or typeof(ReturnFakePart) == "nil",Network["Output"].Prefix.."RetainPart Error : Invalid syntax: Arg2 (ReturnFakePart) must be a boolean or nil.")
  41. if not table.find(Network["BaseParts"],Part) then
  42. if Network.CharacterRelative == true then
  43. local Character = LocalPlayer.Character
  44. if Character and Character.PrimaryPart then
  45. local Distance = (Character.PrimaryPart.Position-Part.Position).Magnitude
  46. if Distance > 1000 then
  47. Network["Output"].Send(warn,"RetainPart Warning : PartOwnership not applied to BasePart "..Part:GetFullName()..", as it is more than "..gethiddenproperty(LocalPlayer,"MaximumSimulationRadius").." studs away.")
  48. return false
  49. end
  50. else
  51. Network["Output"].Send(warn,"RetainPart Warning : PartOwnership not applied to BasePart "..Part:GetFullName()..", as the LocalPlayer Character's PrimaryPart does not exist.")
  52. return false
  53. end
  54. end
  55. table.insert(Network["BaseParts"],Part)
  56. Part.CustomPhysicalProperties = PhysicalProperties.new(0,0,0,0,0)
  57. Network["Output"].Send(print,"PartOwnership Output : PartOwnership applied to BasePart "..Part:GetFullName()..".")
  58. if ReturnFakePart == true then
  59. return FakePart
  60. end
  61. else
  62. Network["Output"].Send(warn,"RetainPart Warning : PartOwnership not applied to BasePart "..Part:GetFullName()..", as it already active.")
  63. return false
  64. end
  65. end
  66.  
  67. Network["RemovePart"] = function(Part) --function for removing ownership of unanchored part
  68. assert(typeof(Part) == "Instance" and Part:IsA("BasePart"),Network["Output"].Prefix.."RemovePart Error : Invalid syntax: Arg1 (Part) must be a BasePart.")
  69. local Index = table.find(Network["BaseParts"],Part)
  70. if Index then
  71. table.remove(Network["BaseParts"],Index)
  72. Network["Output"].Send(print,"RemovePart Output: PartOwnership removed from BasePart "..Part:GetFullName()..".")
  73. else
  74. Network["Output"].Send(warn,"RemovePart Warning : BasePart "..Part:GetFullName().." not found in BaseParts table.")
  75. end
  76. end
  77.  
  78. Network["SuperStepper"] = Instance.new("BindableEvent") --make super fast event to connect to
  79. for _,Event in pairs({RunService.Stepped,RunService.Heartbeat}) do
  80. Event:Connect(function()
  81. return Network["SuperStepper"]:Fire(Network["SuperStepper"],tick())
  82. end)
  83. end
  84.  
  85. Network["PartOwnership"] = {};
  86. Network["PartOwnership"]["PreMethodSettings"] = {};
  87. Network["PartOwnership"]["Enabled"] = false;
  88. Network["PartOwnership"]["Enable"] = coroutine.create(function() --creating a thread for network stuff
  89. if Network["PartOwnership"]["Enabled"] == false then
  90. Network["PartOwnership"]["Enabled"] = true --do cool network stuff before doing more cool network stuff
  91. Network["PartOwnership"]["PreMethodSettings"].ReplicationFocus = LocalPlayer.ReplicationFocus
  92. LocalPlayer.ReplicationFocus = workspace
  93. Network["PartOwnership"]["PreMethodSettings"].SimulationRadius = gethiddenproperty(LocalPlayer,"SimulationRadius")
  94. Network["PartOwnership"]["Connection"] = Network["SuperStepper"].Event:Connect(function() --super fast asynchronous loop
  95. sethiddenproperty(LocalPlayer,"SimulationRadius",1/0)
  96. for _,Part in pairs(Network["BaseParts"]) do --loop through parts and do network stuff
  97. coroutine.wrap(function()
  98. if Part:IsDescendantOf(workspace) then
  99. if Network.CharacterRelative == true then
  100. local Character = LocalPlayer.Character;
  101. if Character and Character.PrimaryPart then
  102. local Distance = (Character.PrimaryPart.Position - Part.Position).Magnitude
  103. if Distance > 1000 then
  104. Network["Output"].Send(warn,"PartOwnership Warning : PartOwnership not applied to BasePart "..Part:GetFullName()..", as it is more than "..gethiddenproperty(LocalPlayer,"MaximumSimulationRadius").." studs away.")
  105. Lost = true;
  106. Network["RemovePart"](Part)
  107. end
  108. else
  109. Network["Output"].Send(warn,"PartOwnership Warning : PartOwnership not applied to BasePart "..Part:GetFullName()..", as the LocalPlayer Character's PrimaryPart does not exist.")
  110. end
  111. end
  112. Part.Velocity = Network["Velocity"]+Vector3.new(0,math.cos(tick()*10)/100,0) --keep network by sending physics packets of 30 magnitude + an everchanging addition in the y level so roblox doesnt get triggered and fuck your ownership
  113. else
  114. Network["RemovePart"](Part)
  115. end
  116. end)()
  117. end
  118. end)
  119. Network["Output"].Send(print,"PartOwnership Output : PartOwnership enabled.")
  120. else
  121. Network["Output"].Send(warn,"PartOwnership Output : PartOwnership already enabled.")
  122. end
  123. end)
  124. Network["PartOwnership"]["Disable"] = coroutine.create(function()
  125. if Network["PartOwnership"]["Connection"] then
  126. Network["PartOwnership"]["Connection"]:Disconnect()
  127. LocalPlayer.ReplicationFocus = Network["PartOwnership"]["PreMethodSettings"].ReplicationFocus
  128. sethiddenproperty(LocalPlayer,"SimulationRadius",Network["PartOwnership"]["PreMethodSettings"].SimulationRadius)
  129. Network["PartOwnership"]["PreMethodSettings"] = {}
  130. for _,Part in pairs(Network["BaseParts"]) do
  131. Network["RemovePart"](Part)
  132. end
  133. Network["PartOwnership"]["Enabled"] = false
  134. Network["Output"].Send(print,"PartOwnership Output : PartOwnership disabled.")
  135. else
  136. Network["Output"].Send(warn,"PartOwnership Output : PartOwnership already disabled.")
  137. end
  138. end)
  139. Network["Output"].Send(print,": Loaded.")
  140. end
  141.  
  142. coroutine.resume(Network["PartOwnership"]["Enable"])
  143.  
  144.  
  145.  
  146. local lp = game.Players.LocalPlayer -- local player var
  147. local char = lp.Character -- char var
  148.  
  149. lp.Character = nil -- nil character for pdeath
  150. lp.Character = char -- newvar
  151.  
  152. local hrp = char:FindFirstChild("HumanoidRootPart") -- hrp check
  153. if hrp == nil then return end -- return if no hrp
  154.  
  155. wait(game.Players.RespawnTime + .3) -- nil wait
  156.  
  157. hrp:Destroy() -- rip hrp
  158. char.Torso:Destroy() -- rip torso
  159. local clone = char["Body Colors"]:Clone() -- body colors clone
  160. char["Body Colors"]:Destroy() -- delete any instances from char that replicates deletion
  161. clone.Parent = char -- parent back in clone in case some script uses it
  162.  
  163.  
  164.  
  165.  
  166. player = game:GetService("Players").LocalPlayer
  167. Gui = player.PlayerGui
  168. Backpack = player.Backpack
  169. Mouse = player:GetMouse()
  170.  
  171. Parts_Folder = Instance.new("Folder",workspace)
  172.  
  173. for i,v in pairs(player.Character:GetChildren()) do
  174. if v:IsA("Accessory") then
  175. local Part = Instance.new("Part",Parts_Folder)
  176. Part.Name = v.Name
  177. Part.Anchored = true
  178. Part.Size = v.Handle.Size - Vector3.new(0.001,0.001,0.001)
  179. Part.Position = player.Character.Head.Position + Vector3.new(math.random(-5,5),math.random(-1,1),math.random(-5,5))
  180. Part:SetAttribute("Moveable",true)
  181. Part.Material = Enum.Material.SmoothPlastic
  182. Part.CanCollide = false
  183. Part.Color = Color3.new(1,0,0)
  184.  
  185. local Hat = v.Handle
  186. local vbreak = false
  187. Network.RetainPart(Hat)
  188. Hat.CustomPhysicalProperties = PhysicalProperties.new(0,0,0,0,0)
  189. coroutine.wrap(function()
  190. while task.wait() do
  191. if vbreak == true then break end
  192. Hat.CFrame = Part.CFrame
  193. end
  194. end)()
  195. Hat:FindFirstChildWhichIsA("SpecialMesh"):Destroy()
  196. end
  197. end
  198.  
  199.  
  200. Move_Tool = Instance.new("Tool",Backpack)
  201. Rotate_Tool = Instance.new("Tool",Backpack)
  202. MHandle = Instance.new("Part",Move_Tool)
  203. RHandle = Instance.new("Part",Rotate_Tool)
  204. Mgrabs = Instance.new("Handles",Gui)
  205. Rgrabs = Instance.new("ArcHandles",Gui)
  206. Outline = Instance.new("Highlight")
  207.  
  208. Move_Tool.Name = "Move"
  209. Move_Tool.CanBeDropped = false
  210.  
  211. Rotate_Tool.Name = "Rotate"
  212. Rotate_Tool.CanBeDropped = false
  213.  
  214. MHandle.Name = "Handle"
  215. MHandle.Transparency = 1
  216.  
  217. RHandle.Name = "Handle"
  218. RHandle.Transparency = 1
  219.  
  220. Mgrabs.Visible = false
  221. Mgrabs.Color3 = Color3.new(1, 0.8, 0)
  222. Mgrabs.Style = "Movement"
  223.  
  224. Rgrabs.Visible = false
  225.  
  226. Outline.FillTransparency = 1
  227. Outline.OutlineTransparency = 0
  228. Outline.OutlineColor = Color3.new(1, 0.8, 0)
  229.  
  230. Active_Part = nil
  231.  
  232. Move_Tool.AncestryChanged:Connect(function()
  233. if Move_Tool.Parent == char and Active_Part ~= nil then
  234. Mgrabs.Visible = true
  235. Mgrabs.Adornee = Active_Part
  236. end
  237. end)
  238.  
  239. Move_Tool.AncestryChanged:Connect(function()
  240. if Move_Tool.Parent ~= char then
  241. Mgrabs.Visible = false
  242. Mgrabs.Adornee = nil
  243. end
  244. end)
  245.  
  246. Mouse.Button1Down:Connect(function()
  247. if Move_Tool.Parent == char and Mouse.Target:GetAttribute("Moveable") then
  248. Active_Part = Mouse.Target
  249. Mgrabs.Visible = true
  250. Mgrabs.Adornee = Active_Part
  251. Outline.Parent = Active_Part
  252. end
  253. if Rotate_Tool.Parent == char and Mouse.Target:GetAttribute("Moveable") then
  254. Active_Part = Mouse.Target
  255. Rgrabs.Visible = true
  256. Rgrabs.Adornee = Active_Part
  257. Outline.Parent = Active_Part
  258. end
  259. end)
  260.  
  261. Rotate_Tool.AncestryChanged:Connect(function()
  262. if Rotate_Tool.Parent == char and Active_Part ~= nil then
  263. Rgrabs.Visible = true
  264. Rgrabs.Adornee = Active_Part
  265. end
  266. end)
  267.  
  268. Rotate_Tool.AncestryChanged:Connect(function()
  269. if Rotate_Tool.Parent ~= char then
  270. Rgrabs.Visible = false
  271. Rgrabs.Adornee = nil
  272. end
  273. end)
  274.  
  275. MOGCFrame = CFrame.new()
  276.  
  277. Mgrabs.MouseButton1Down:Connect(function()
  278. MOGCFrame = Active_Part.CFrame
  279. end)
  280.  
  281. Mgrabs.MouseDrag:Connect(function(knob, pos)
  282. if knob == Enum.NormalId.Front then
  283. Active_Part.CFrame = MOGCFrame + MOGCFrame.LookVector * pos
  284. end
  285. if knob == Enum.NormalId.Back then
  286. Active_Part.CFrame = MOGCFrame + MOGCFrame.LookVector * -pos
  287. end
  288. if knob == Enum.NormalId.Top then
  289. Active_Part.CFrame = MOGCFrame + MOGCFrame.UpVector * pos
  290. end
  291. if knob == Enum.NormalId.Bottom then
  292. Active_Part.CFrame = MOGCFrame + MOGCFrame.UpVector * -pos
  293. end
  294. if knob == Enum.NormalId.Left then
  295. Active_Part.CFrame = MOGCFrame + MOGCFrame.RightVector * -pos
  296. end
  297. if knob == Enum.NormalId.Right then
  298. Active_Part.CFrame = MOGCFrame + MOGCFrame.RightVector * pos
  299. end
  300. end)
  301.  
  302. ROGCFrame = CFrame.new()
  303.  
  304. Rgrabs.MouseButton1Down:Connect(function()
  305. ROGCFrame = Active_Part.CFrame
  306. end)
  307.  
  308. Rgrabs.MouseDrag:Connect(function(knob, angle)
  309. if knob == Enum.Axis.Y then
  310. Active_Part.CFrame = ROGCFrame * CFrame.Angles(0,angle,0)
  311. end
  312. if knob == Enum.Axis.X then
  313. Active_Part.CFrame = ROGCFrame * CFrame.Angles(angle,0,0)
  314. end
  315. if knob == Enum.Axis.Z then
  316. Active_Part.CFrame = ROGCFrame * CFrame.Angles(0,0,angle)
  317. end
  318. end)
  319.  
  320.  
  321.  
  322. Mouse.TargetFilter = player.Character
  323.  
  324.  
  325.  
  326. camera = workspace.CurrentCamera
  327. input = game:GetService("UserInputService")
  328.  
  329. Camera_Part = Instance.new("Part",workspace)
  330. Camera_Part.Anchored = true
  331. Camera_Part.Transparency = 0.85
  332. Camera_Part.Shape = Enum.PartType.Ball
  333. Camera_Part.Size = Vector3.new(0.5,0.5,0.5)
  334. Camera_Part.Material = Enum.Material.SmoothPlastic
  335.  
  336. current_position = char.Head.Position
  337.  
  338. camera.CameraSubject = Camera_Part
  339.  
  340.  
  341.  
  342. for i,v in pairs(char:GetDescendants()) do
  343. if v:IsA("BasePart") and v.Parent:IsA("Accessory") == false then
  344. v:Destroy()
  345. end
  346. end
  347.  
  348. game:GetService("StarterGui"):SetCore("SendNotification",{
  349. Title = "FE BTools Loaded",
  350. Text = "Made by rouxhaver",
  351. Icon = "rbxassetid://12561999923"
  352. })
  353. game:GetService("StarterGui"):SetCore("SendNotification",{
  354. Title = "Network Credit:",
  355. Text = "thanks to 4eyes for network stuff",
  356. Icon = "rbxassetid://12562053596"
  357. })
  358.  
  359. while wait() do
  360. if vbreak == true then
  361. break
  362. end
  363. if input:IsKeyDown(Enum.KeyCode.D) then
  364. current_position += camera.CFrame.RightVector * speed
  365. end
  366. if input:IsKeyDown(Enum.KeyCode.A) then
  367. current_position += camera.CFrame.RightVector * -speed
  368. end
  369. if input:IsKeyDown(Enum.KeyCode.W) then
  370. current_position += camera.CFrame.LookVector * speed
  371. end
  372. if input:IsKeyDown(Enum.KeyCode.S) then
  373. current_position += camera.CFrame.LookVector * -speed
  374. end
  375. if input:IsKeyDown(Enum.KeyCode.E) then
  376. current_position += camera.CFrame.UpVector * speed
  377. end
  378. if input:IsKeyDown(Enum.KeyCode.Q) then
  379. current_position += camera.CFrame.UpVector * -speed
  380. end
  381. if input:IsKeyDown(Enum.KeyCode.LeftShift) then do
  382. speed = 1.5
  383. end else
  384. speed = 0.75
  385. end
  386. Camera_Part.Position = current_position
  387. end
Add Comment
Please, Sign In to add comment