Control Unanchored - Pastebin.com (2024)

  1. -- rdz#7291

  2. function sandbox(var,func)

  3. local env = getfenv(func)

  4. local newenv = setmetatable({},{

  5. __index = function(self,k)

  6. if k=="script" then

  7. return var

  8. else

  9. return env[k]

  10. end

  11. end,

  12. })

  13. setfenv(func,newenv)

  14. return func

  15. end

  16. cors = {}

  17. mas = Instance.new("Model",game:GetService("Lighting"))

  18. Tool0 = Instance.new("Tool")

  19. Part1 = Instance.new("Part")

  20. CylinderMesh2 = Instance.new("CylinderMesh")

  21. Part3 = Instance.new("Part")

  22. LocalScript4 = Instance.new("LocalScript")

  23. Script5 = Instance.new("Script")

  24. LocalScript6 = Instance.new("LocalScript")

  25. Script7 = Instance.new("Script")

  26. LocalScript8 = Instance.new("LocalScript")

  27. Part9 = Instance.new("Part")

  28. Script10 = Instance.new("Script")

  29. Part11 = Instance.new("Part")

  30. Script12 = Instance.new("Script")

  31. Part13 = Instance.new("Part")

  32. Script14 = Instance.new("Script")

  33. Tool0.Name = "rdz grav gun go brrr"

  34. Tool0.Parent = mas

  35. Tool0.CanBeDropped = false

  36. Part1.Name = "Handle"

  37. Part1.Parent = Tool0

  38. Part1.Material = Enum.Material.Neon

  39. Part1.BrickColor = BrickColor.new("Cyan")

  40. Part1.Transparency = 1

  41. Part1.Rotation = Vector3.new(0, 15.4200001, 0)

  42. Part1.CanCollide = false

  43. Part1.FormFactor = Enum.FormFactor.Custom

  44. Part1.Size = Vector3.new(1, 0.400000036, 0.300000012)

  45. Part1.CFrame = CFrame.new(-55.2695465, 0.696546972, 0.383156985, 0.96399641, -4.98074878e-05, 0.265921414, 4.79998416e-05, 1, 1.32960558e-05, -0.265921414, -5.30653779e-08, 0.96399641)

  46. Part1.BottomSurface = Enum.SurfaceType.Smooth

  47. Part1.TopSurface = Enum.SurfaceType.Smooth

  48. Part1.Color = Color3.new(0.0156863, 0.686275, 0.92549)

  49. Part1.Position = Vector3.new(-55.2695465, 0.696546972, 0.383156985)

  50. Part1.Orientation = Vector3.new(0, 15.4200001, 0)

  51. Part1.Color = Color3.new(0.0156863, 0.686275, 0.92549)

  52. CylinderMesh2.Parent = Part1

  53. CylinderMesh2.Scale = Vector3.new(0.100000001, 0.100000001, 0.100000001)

  54. CylinderMesh2.Scale = Vector3.new(0.100000001, 0.100000001, 0.100000001)

  55. Part3.Name = "Shoot"

  56. Part3.Parent = Tool0

  57. Part3.Material = Enum.Material.Neon

  58. Part3.BrickColor = BrickColor.new("Cyan")

  59. Part3.Reflectance = 0.30000001192093

  60. Part3.Transparency = 1

  61. Part3.Rotation = Vector3.new(90.9799957, 0.25999999, -91.409996)

  62. Part3.CanCollide = false

  63. Part3.FormFactor = Enum.FormFactor.Custom

  64. Part3.Size = Vector3.new(0.200000003, 0.25, 0.310000032)

  65. Part3.CFrame = CFrame.new(-54.7998123, 0.774299085, -0.757350147, -0.0245519895, 0.99968797, 0.00460194098, 0.0169109926, 0.00501798885, -0.999844491, -0.999555528, -0.0244703442, -0.0170289185)

  66. Part3.BottomSurface = Enum.SurfaceType.Smooth

  67. Part3.TopSurface = Enum.SurfaceType.Smooth

  68. Part3.Color = Color3.new(0.0156863, 0.686275, 0.92549)

  69. Part3.Position = Vector3.new(-54.7998123, 0.774299085, -0.757350147)

  70. Part3.Orientation = Vector3.new(88.9899979, 164.87999, 73.4700012)

  71. Part3.Color = Color3.new(0.0156863, 0.686275, 0.92549)

  72. LocalScript4.Parent = Tool0

  73. table.insert(cors,sandbox(LocalScript4,function()

  74. -- Variables for services

  75. local render = game:GetService("RunService").RenderStepped

  76. local contextActionService = game:GetService("ContextActionService")

  77. local userInputService = game:GetService("UserInputService")

  78. local player = game.Players.LocalPlayer

  79. local mouse = player:GetMouse()

  80. local Tool = script.Parent

  81. -- Variables for Module Scripts

  82. local screenSpace = require(Tool:WaitForChild("ScreenSpace"))

  83. local connection

  84. -- Variables for character joints

  85. local neck, shoulder, oldNeckC0, oldShoulderC0

  86. local mobileShouldTrack = true

  87. -- Thourough check to see if a character is sitting

  88. local function amISitting(character)

  89. local t = character.Torso

  90. for _, part in pairs(t:GetConnectedParts(true)) do

  91. if part:IsA("Seat") or part:IsA("VehicleSeat") then

  92. return true

  93. end

  94. end

  95. end

  96. -- Function to call on renderstepped. Orients the character so it is facing towards

  97. -- the player mouse's position in world space. If character is sitting then the torso

  98. -- should not track

  99. local function frame(mousePosition)

  100. -- Special mobile consideration. We don't want to track if the user was touching a ui

  101. -- element such as the movement controls. Just return out of function if so to make sure

  102. -- character doesn't track

  103. if not mobileShouldTrack then return end

  104. -- Make sure character isn't swiming. If the character is swimming the following code will

  105. -- not work well; the character will not swim correctly. Besides, who shoots underwater?

  106. if player.Character.Humanoid:GetState() ~= Enum.HumanoidStateType.Swimming then

  107. local torso = player.Character.Torso

  108. local head = player.Character.Head

  109. local toMouse = (mousePosition - head.Position).unit

  110. local angle = math.acos(toMouse:Dot(Vector3.new(0,1,0)))

  111. local neckAngle = angle

  112. -- Limit how much the head can tilt down. Too far and the head looks unnatural

  113. if math.deg(neckAngle) > 110 then

  114. neckAngle = math.rad(110)

  115. end

  116. neck.C0 = CFrame.new(0,1,0) * CFrame.Angles(math.pi - neckAngle,math.pi,0)

  117. -- Calculate horizontal rotation

  118. local arm = player.Character:FindFirstChild("Right Arm")

  119. local fromArmPos = torso.Position + torso.CFrame:vectorToWorldSpace(Vector3.new(

  120. torso.Size.X/2 + arm.Size.X/2, torso.Size.Y/2 - arm.Size.Z/2, 0))

  121. local toMouseArm = ((mousePosition - fromArmPos) * Vector3.new(1,0,1)).unit

  122. local look = (torso.CFrame.lookVector * Vector3.new(1,0,1)).unit

  123. local lateralAngle = math.acos(toMouseArm:Dot(look))

  124. -- Check for rogue math

  125. if tostring(lateralAngle) == "-1.#IND" then

  126. lateralAngle = 0

  127. end

  128. -- Handle case where character is sitting down

  129. if player.Character.Humanoid:GetState() == Enum.HumanoidStateType.Seated then

  130. local cross = torso.CFrame.lookVector:Cross(toMouseArm)

  131. if lateralAngle > math.pi/2 then

  132. lateralAngle = math.pi/2

  133. end

  134. if cross.Y < 0 then

  135. lateralAngle = -lateralAngle

  136. end

  137. end

  138. -- Turn shoulder to point to mouse

  139. shoulder.C0 = CFrame.new(1,0.5,0) * CFrame.Angles(math.pi/2 - angle,math.pi/2 + lateralAngle,0)

  140. -- If not sitting then aim torso laterally towards mouse

  141. if not amISitting(player.Character) then

  142. torso.CFrame = CFrame.new(torso.Position, torso.Position + (Vector3.new(

  143. mousePosition.X, torso.Position.Y, mousePosition.Z)-torso.Position).unit)

  144. else

  145. --print("sitting")

  146. end

  147. end

  148. end

  149. -- Function to bind to render stepped if player is on PC

  150. local function pcFrame()

  151. frame(mouse.Hit.p)

  152. end

  153. -- Function to bind to touch moved if player is on mobile

  154. local function mobileFrame(touch, processed)

  155. -- Check to see if the touch was on a UI element. If so, we don't want to update anything

  156. if not processed then

  157. -- Calculate touch position in world space. Uses Stravant's ScreenSpace Module script

  158. -- to create a ray from the camera.

  159. local test = screenSpace.ScreenToWorld(touch.Position.X, touch.Position.Y, 1)

  160. local nearPos = game.Workspace.CurrentCamera.CoordinateFrame:vectorToWorldSpace(screenSpace.ScreenToWorld(touch.Position.X, touch.Position.Y, 1))

  161. nearPos = game.Workspace.CurrentCamera.CoordinateFrame.p - nearPos

  162. local farPos = screenSpace.ScreenToWorld(touch.Position.X, touch.Position.Y,50)

  163. farPos = game.Workspace.CurrentCamera.CoordinateFrame:vectorToWorldSpace(farPos) * -1

  164. if farPos.magnitude > 900 then

  165. farPos = farPos.unit * 900

  166. end

  167. local ray = Ray.new(nearPos, farPos)

  168. local part, pos = game.Workspace:FindPartOnRay(ray, player.Character)

  169. -- if a position was found on the ray then update the character's rotation

  170. if pos then

  171. frame(pos)

  172. end

  173. end

  174. end

  175. local oldIcon = nil

  176. -- Function to bind to equip event

  177. local function equip()

  178. local torso = player.Character.Torso

  179. -- Setup joint variables

  180. neck = torso.Neck

  181. oldNeckC0 = neck.C0

  182. shoulder = torso:FindFirstChild("Right Shoulder")

  183. oldShoulderC0 = shoulder.C0

  184. -- Remember old mouse icon and update current

  185. oldIcon = mouse.Icon

  186. mouse.Icon = "rbxassetid:// 2184939409"

  187. -- Bind TouchMoved event if on mobile. Otherwise connect to renderstepped

  188. if userInputService.TouchEnabled then

  189. connection = userInputService.TouchMoved:connect(mobileFrame)

  190. else

  191. connection = render:connect(pcFrame)

  192. end

  193. -- Bind TouchStarted and TouchEnded. Used to determine if character should rotate

  194. -- during touch input

  195. userInputService.TouchStarted:connect(function(touch, processed)

  196. mobileShouldTrack = not processed

  197. end)

  198. userInputService.TouchEnded:connect(function(touch, processed)

  199. mobileShouldTrack = false

  200. end)

  201. -- Fire server's equip event

  202. game.ReplicatedStorage.ROBLOX_PistolEquipEvent:FireServer()

  203. -- Bind event for when mouse is clicked to fire server's fire event

  204. mouse.Button1Down:connect(function()

  205. game.ReplicatedStorage.ROBLOX_PistolFireEvent:FireServer(mouse.Hit.p)

  206. end)

  207. -- Bind reload event to mobile button and r key

  208. contextActionService:BindActionToInputTypes("Reload", function()

  209. game.ReplicatedStorage.ROBLOX_PistolReloadEvent:FireServer()

  210. end, true, "")

  211. -- If game uses filtering enabled then need to update server while tool is

  212. -- held by character.

  213. if workspace.FilteringEnabled then

  214. while connection do

  215. wait()

  216. game.ReplicatedStorage.ROBLOX_PistolUpdateEvent:FireServer(neck.C0, shoulder.C0)

  217. end

  218. end

  219. end

  220. -- Function to bind to Unequip event

  221. local function unequip()

  222. if connection then connection:disconnect() end

  223. contextActionService:UnbindAction("Reload")

  224. game.ReplicatedStorage.ROBLOX_PistolUnequipEvent:FireServer()

  225. mouse.Icon = oldIcon

  226. neck.C0 = oldNeckC0

  227. shoulder.C0 = oldShoulderC0

  228. end

  229. -- Bind tool events

  230. Tool.Equipped:connect(equip)

  231. Tool.Unequipped:connect(unequip)

  232. end))

  233. Script5.Name = "qPerfectionWeld"

  234. Script5.Parent = Tool0

  235. table.insert(cors,sandbox(Script5,function()

  236. -- Created by Quenty (@Quenty, follow me on twitter).

  237. -- Should work with only ONE copy, seamlessly with weapons, trains, et cetera.

  238. -- Parts should be ANCHORED before use. It will, however, store relatives values and so when tools are reparented, it'll fix them.

  239. --[[ INSTRUCTIONS

  240. - Place in the model

  241. - Make sure model is anchored

  242. - That's it. It will weld the model and all children.

  243. THIS SCRIPT SHOULD BE USED ONLY BY ITSELF. THE MODEL SHOULD BE ANCHORED.

  244. THIS SCRIPT SHOULD BE USED ONLY BY ITSELF. THE MODEL SHOULD BE ANCHORED.

  245. THIS SCRIPT SHOULD BE USED ONLY BY ITSELF. THE MODEL SHOULD BE ANCHORED.

  246. THIS SCRIPT SHOULD BE USED ONLY BY ITSELF. THE MODEL SHOULD BE ANCHORED.

  247. THIS SCRIPT SHOULD BE USED ONLY BY ITSELF. THE MODEL SHOULD BE ANCHORED.

  248. THIS SCRIPT SHOULD BE USED ONLY BY ITSELF. THE MODEL SHOULD BE ANCHORED.

  249. THIS SCRIPT SHOULD BE USED ONLY BY ITSELF. THE MODEL SHOULD BE ANCHORED.

  250. THIS SCRIPT SHOULD BE USED ONLY BY ITSELF. THE MODEL SHOULD BE ANCHORED.

  251. This script is designed to be used is a regular script. In a local script it will weld, but it will not attempt to handle ancestory changes.

  252. ]]

  253. --[[ DOCUMENTATION

  254. - Will work in tools. If ran more than once it will not create more than one weld. This is especially useful for tools that are dropped and then picked up again.

  255. - Will work in PBS servers

  256. - Will work as long as it starts out with the part anchored

  257. - Stores the relative CFrame as a CFrame value

  258. - Takes careful measure to reduce lag by not having a joint set off or affected by the parts offset from origin

  259. - Utilizes a recursive algorith to find all parts in the model

  260. - Will reweld on script reparent if the script is initially parented to a tool.

  261. - Welds as fast as possible

  262. ]]

  263. -- qPerfectionWeld.lua

  264. -- Created 10/6/2014

  265. -- Author: Quenty

  266. -- Version 1.0.3

  267. -- Updated 10/14/2014 - Updated to 1.0.1

  268. --- Bug fix with existing ROBLOX welds ? Repro by asimo3089

  269. -- Updated 10/14/2014 - Updated to 1.0.2

  270. --- Fixed bug fix.

  271. -- Updated 10/14/2014 - Updated to 1.0.3

  272. --- Now handles joints semi-acceptably. May be rather hacky with some joints. :/

  273. local NEVER_BREAK_JOINTS = false -- If you set this to true it will never break joints (this can create some welding issues, but can save stuff like hinges).

  274. local function CallOnChildren(Instance, FunctionToCall)

  275. -- Calls a function on each of the children of a certain object, using recursion.

  276. FunctionToCall(Instance)

  277. for _, Child in next, Instance:GetChildren() do

  278. CallOnChildren(Child, FunctionToCall)

  279. end

  280. end

  281. local function GetNearestParent(Instance, ClassName)

  282. -- Returns the nearest parent of a certain class, or returns nil

  283. local Ancestor = Instance

  284. repeat

  285. Ancestor = Ancestor.Parent

  286. if Ancestor == nil then

  287. return nil

  288. end

  289. until Ancestor:IsA(ClassName)

  290. return Ancestor

  291. end

  292. local function GetBricks(StartInstance)

  293. local List = {}

  294. -- if StartInstance:IsA("BasePart") then

  295. -- List[#List+1] = StartInstance

  296. -- end

  297. CallOnChildren(StartInstance, function(Item)

  298. if Item:IsA("BasePart") then

  299. List[#List+1] = Item;

  300. end

  301. end)

  302. return List

  303. end

  304. local function Modify(Instance, Values)

  305. -- Modifies an Instance by using a table.

  306. assert(type(Values) == "table", "Values is not a table");

  307. for Index, Value in next, Values do

  308. if type(Index) == "number" then

  309. Value.Parent = Instance

  310. else

  311. Instance[Index] = Value

  312. end

  313. end

  314. return Instance

  315. end

  316. local function Make(ClassType, Properties)

  317. -- Using a syntax hack to create a nice way to Make new items.

  318. return Modify(Instance.new(ClassType), Properties)

  319. end

  320. local Surfaces = {"TopSurface", "BottomSurface", "LeftSurface", "RightSurface", "FrontSurface", "BackSurface"}

  321. local HingSurfaces = {"Hinge", "Motor", "SteppingMotor"}

  322. local function HasWheelJoint(Part)

  323. for _, SurfaceName in pairs(Surfaces) do

  324. for _, HingSurfaceName in pairs(HingSurfaces) do

  325. if Part[SurfaceName].Name == HingSurfaceName then

  326. return true

  327. end

  328. end

  329. end

  330. return false

  331. end

  332. local function ShouldBreakJoints(Part)

  333. --- We do not want to break joints of wheels/hinges. This takes the utmost care to not do this. There are

  334. -- definitely some edge cases.

  335. if NEVER_BREAK_JOINTS then

  336. return false

  337. end

  338. if HasWheelJoint(Part) then

  339. return false

  340. end

  341. local Connected = Part:GetConnectedParts()

  342. if #Connected == 1 then

  343. return false

  344. end

  345. for _, Item in pairs(Connected) do

  346. if HasWheelJoint(Item) then

  347. return false

  348. elseif not Item:IsDescendantOf(script.Parent) then

  349. return false

  350. end

  351. end

  352. return true

  353. end

  354. local function WeldTogether(Part0, Part1, JointType, WeldParent)

  355. --- Weld's 2 parts together

  356. -- @param Part0 The first part

  357. -- @param Part1 The second part (Dependent part most of the time).

  358. -- @param [JointType] The type of joint. Defaults to weld.

  359. -- @param [WeldParent] Parent of the weld, Defaults to Part0 (so GC is better).

  360. -- @return The weld created.

  361. JointType = JointType or "Weld"

  362. local RelativeValue = Part1:FindFirstChild("qRelativeCFrameWeldValue")

  363. local NewWeld = Part1:FindFirstChild("qCFrameWeldThingy") or Instance.new(JointType)

  364. Modify(NewWeld, {

  365. Name = "qCFrameWeldThingy";

  366. Part0 = Part0;

  367. Part1 = Part1;

  368. C0 = CFrame.new();--Part0.CFrame:inverse();

  369. C1 = RelativeValue and RelativeValue.Value or Part1.CFrame:toObjectSpace(Part0.CFrame); --Part1.CFrame:inverse() * Part0.CFrame;-- Part1.CFrame:inverse();

  370. Parent = Part1;

  371. })

  372. if not RelativeValue then

  373. RelativeValue = Make("CFrameValue", {

  374. Parent = Part1;

  375. Name = "qRelativeCFrameWeldValue";

  376. Archivable = true;

  377. Value = NewWeld.C1;

  378. })

  379. end

  380. return NewWeld

  381. end

  382. local function WeldParts(Parts, MainPart, JointType, DoNotUnanchor)

  383. -- @param Parts The Parts to weld. Should be anchored to prevent really horrible results.

  384. -- @param MainPart The part to weld the model to (can be in the model).

  385. -- @param [JointType] The type of joint. Defaults to weld.

  386. -- @parm DoNotUnanchor Boolean, if true, will not unachor the model after cmopletion.

  387. for _, Part in pairs(Parts) do

  388. if ShouldBreakJoints(Part) then

  389. Part:BreakJoints()

  390. end

  391. end

  392. for _, Part in pairs(Parts) do

  393. if Part ~= MainPart then

  394. WeldTogether(MainPart, Part, JointType, MainPart)

  395. end

  396. end

  397. if not DoNotUnanchor then

  398. for _, Part in pairs(Parts) do

  399. Part.Anchored = false

  400. end

  401. MainPart.Anchored = false

  402. end

  403. end

  404. local function PerfectionWeld()

  405. local Tool = GetNearestParent(script, "Tool")

  406. local Parts = GetBricks(script.Parent)

  407. local PrimaryPart = Tool and Tool:FindFirstChild("Handle") and Tool.Handle:IsA("BasePart") and Tool.Handle or script.Parent:IsA("Model") and script.Parent.PrimaryPart or Parts[1]

  408. if PrimaryPart then

  409. WeldParts(Parts, PrimaryPart, "Weld", false)

  410. else

  411. warn("qWeld - Unable to weld part")

  412. end

  413. return Tool

  414. end

  415. local Tool = PerfectionWeld()

  416. if Tool and script.ClassName == "Script" then

  417. --- Don't bother with local scripts

  418. script.Parent.AncestryChanged:connect(function()

  419. PerfectionWeld()

  420. end)

  421. end

  422. -- Created by Quenty (@Quenty, follow me on twitter).

  423. end))

  424. LocalScript6.Name = "Animate"

  425. LocalScript6.Parent = Tool0

  426. table.insert(cors,sandbox(LocalScript6,function()

  427. local arms = nil

  428. local torso = nil

  429. local welds = {}

  430. local Tool = script.Parent

  431. local neck = nil

  432. local orginalC0 = CFrame.new(0, 1, 0, -1, -0, -0, 0, 0, 1, 0, 1, 0)

  433. function Equip(mouse)

  434. wait(0.01)

  435. arms = {Tool.Parent:FindFirstChild("Left Arm"), Tool.Parent:FindFirstChild("Right Arm")}

  436. head = Tool.Parent:FindFirstChild("Head")

  437. torso = Tool.Parent:FindFirstChild("Torso")

  438. if neck == nil then

  439. neck = Tool.Parent:FindFirstChild("Torso").Neck

  440. end

  441. if arms ~= nil and torso ~= nil then

  442. local sh = {torso:FindFirstChild("Left Shoulder"), torso:FindFirstChild("Right Shoulder")}

  443. if sh ~= nil then

  444. local yes = true

  445. if yes then

  446. yes = false

  447. sh[1].Part1 = nil

  448. sh[2].Part1 = nil

  449. local weld1 = Instance.new("Weld")

  450. weld1.Part0 = head

  451. weld1.Parent = head

  452. weld1.Part1 = arms[1]

  453. welds[1] = weld1

  454. local weld2 = Instance.new("Weld")

  455. weld2.Part0 = head

  456. weld2.Parent = head

  457. weld2.Part1 = arms[2]

  458. welds[2] = weld2

  459. -------------------------here

  460. weld1.C1 = CFrame.new(-0.5+1.5, 0.8, .9)* CFrame.fromEulerAnglesXYZ(math.rad(290), 0, math.rad(-90))

  461. weld2.C1 = CFrame.new(-1, 0.8, 0.5-1.5) * CFrame.fromEulerAnglesXYZ(math.rad(-90), math.rad(-15), 0)

  462. mouse.Move:connect(function ()

  463. --local Direction = Tool.Direction.Value

  464. local Direction = mouse.Hit.p

  465. local b = head.Position.Y-Direction.Y

  466. local dist = (head.Position-Direction).magnitude

  467. local answer = math.asin(b/dist)

  468. neck.C0=orginalC0*CFrame.fromEulerAnglesXYZ(answer,0,0)

  469. wait(0.1)

  470. end)end

  471. else

  472. print("sh")

  473. end

  474. else

  475. print("arms")

  476. end

  477. end

  478. function Unequip(mouse)

  479. if arms ~= nil and torso ~= nil then

  480. local sh = {torso:FindFirstChild("Left Shoulder"), torso:FindFirstChild("Right Shoulder")}

  481. if sh ~= nil then

  482. local yes = true

  483. if yes then

  484. yes = false

  485. neck.C0 = orginalC0

  486. sh[1].Part1 = arms[1]

  487. sh[2].Part1 = arms[2]

  488. welds[1].Parent = nil

  489. welds[2].Parent = nil

  490. end

  491. else

  492. print("sh")

  493. end

  494. else

  495. print("arms")

  496. end

  497. end

  498. Tool.Equipped:connect(Equip)

  499. Tool.Unequipped:connect(Unequip)

  500. function Animate()

  501. arms = {Tool.Parent:FindFirstChild("Left Arm"), Tool.Parent:FindFirstChild("Right Arm")}

  502. if Tool.AnimateValue.Value == "Shoot" then

  503. local weld1 = welds[1]

  504. local weld2 = welds[2]

  505. weld1.C1 = CFrame.new(-0.5+1.5, 0.8, .9)* CFrame.fromEulerAnglesXYZ(math.rad(290), 0, math.rad(-90))

  506. weld2.C1 = CFrame.new(-1, 0.8, 0.5-1.5) * CFrame.fromEulerAnglesXYZ(math.rad(-90), math.rad(-15), 0)

  507. wait(0.00001)

  508. weld1.C1 = CFrame.new(-0.5+1.5, 0.8, .9)* CFrame.fromEulerAnglesXYZ(math.rad(290), 0.05, math.rad(-90))

  509. weld2.C1 = CFrame.new(-1, 0.8, 0.5-1.5) * CFrame.fromEulerAnglesXYZ(math.rad(-90), math.rad(-15), 0)

  510. wait(0.00001)

  511. weld1.C1 = CFrame.new(-0.5+1.5, 0.8, .9)* CFrame.fromEulerAnglesXYZ(math.rad(290), 0.1, math.rad(-90))

  512. weld2.C1 = CFrame.new(-1, 0.8, 0.5-1.5) * CFrame.fromEulerAnglesXYZ(math.rad(-95), math.rad(-15), 0)

  513. wait(0.00001)

  514. weld1.C1 = CFrame.new(-0.5+1.5, 0.8, .9)* CFrame.fromEulerAnglesXYZ(math.rad(290), 0.3, math.rad(-90))

  515. weld2.C1 = CFrame.new(-1, 0.8, 0.5-1.5) * CFrame.fromEulerAnglesXYZ(math.rad(-110), math.rad(-15), 0)

  516. wait(0.00001)

  517. weld1.C1 = CFrame.new(-0.5+1.5, 0.8, .9)* CFrame.fromEulerAnglesXYZ(math.rad(290), 0.35, math.rad(-90))

  518. weld2.C1 = CFrame.new(-1, 0.8, 0.5-1.5) * CFrame.fromEulerAnglesXYZ(math.rad(-115), math.rad(-15), 0)

  519. wait(0.00001)

  520. weld1.C1 = CFrame.new(-0.5+1.5, 0.8, .9)* CFrame.fromEulerAnglesXYZ(math.rad(290), 0.4, math.rad(-90))

  521. weld2.C1 = CFrame.new(-1, 0.8, 0.5-1.5) * CFrame.fromEulerAnglesXYZ(math.rad(-120), math.rad(-15), 0)

  522. wait(0.00001)

  523. weld1.C1 = CFrame.new(-0.5+1.5, 0.8, .9)* CFrame.fromEulerAnglesXYZ(math.rad(290), 0, math.rad(-90))

  524. weld2.C1 = CFrame.new(-1, 0.8, 0.5-1.5) * CFrame.fromEulerAnglesXYZ(math.rad(-90), math.rad(-15), 0)

  525. Tool.AnimateValue.Value = "None"

  526. end

  527. if Tool.AnimateValue.Value == "Reload" then

  528. local weld1 = welds[1]

  529. local weld2 = welds[2]

  530. weld1.C1 = CFrame.new(-0.5+1.5, 0.8, .9)* CFrame.fromEulerAnglesXYZ(math.rad(290), 0, math.rad(-90))

  531. weld2.C1 = CFrame.new(-1, 0.8, 0.5-1.5) * CFrame.fromEulerAnglesXYZ(math.rad(-90), math.rad(-15), 0)

  532. wait(0.0001)

  533. weld1.C1 = CFrame.new(-0.5+1.5, 0.8, .9)* CFrame.fromEulerAnglesXYZ(math.rad(290), 0.4, math.rad(-90))

  534. weld2.C1 = CFrame.new(-1, 0.8, 0.5-1.5) * CFrame.fromEulerAnglesXYZ(math.rad(-90), math.rad(-15), 0)

  535. wait(0.0001)

  536. weld1.C1 = CFrame.new(-0.5+1.5, 0.8, .9)* CFrame.fromEulerAnglesXYZ(math.rad(290), 0.4, math.rad(-90))

  537. weld2.C1 = CFrame.new(-1, 0.8, 0.5-1.5) * CFrame.fromEulerAnglesXYZ(math.rad(-95), math.rad(-15), 0)

  538. wait(0.0001)

  539. weld1.C1 = CFrame.new(-0.5+1.5, 0.8, .9)* CFrame.fromEulerAnglesXYZ(math.rad(290), 0.4, math.rad(-90))

  540. weld2.C1 = CFrame.new(-1, 0.8, 0.5-1.5) * CFrame.fromEulerAnglesXYZ(math.rad(-100), math.rad(-15), 0)

  541. wait(0.0001)

  542. weld1.C1 = CFrame.new(-0.5+1.5, 0.8, .9)* CFrame.fromEulerAnglesXYZ(math.rad(290), 0.4, math.rad(-90))

  543. weld2.C1 = CFrame.new(-1, 0.8, 0.5-1.5) * CFrame.fromEulerAnglesXYZ(math.rad(-105), math.rad(-15), 0)

  544. wait(0.0001)

  545. weld1.C1 = CFrame.new(-0.5+1.5, 0.8, .9)* CFrame.fromEulerAnglesXYZ(math.rad(290), 0.4, math.rad(-90))

  546. weld2.C1 = CFrame.new(-1, 0.8, 0.5-1.5) * CFrame.fromEulerAnglesXYZ(math.rad(-110), math.rad(-15), 0)

  547. wait(0.0001)

  548. weld1.C1 = CFrame.new(-0.5+1.5, 0.8, .9)* CFrame.fromEulerAnglesXYZ(math.rad(290), 0.4, math.rad(-90))

  549. weld2.C1 = CFrame.new(-1, 0.8, 0.5-1.5) * CFrame.fromEulerAnglesXYZ(math.rad(-115), math.rad(-15), 0)

  550. wait(0.0001)

  551. weld1.C1 = CFrame.new(-0.5+1.5, 0.8, .9)* CFrame.fromEulerAnglesXYZ(math.rad(290), 0.45, math.rad(-90))

  552. weld2.C1 = CFrame.new(-1, 0.8, 0.5-1.5) * CFrame.fromEulerAnglesXYZ(math.rad(-120), math.rad(-15), 0)

  553. wait(0.0001)

  554. weld1.C1 = CFrame.new(-0.5+1.5, 0.9, .9)* CFrame.fromEulerAnglesXYZ(math.rad(290), 0.5, math.rad(-90))

  555. weld2.C1 = CFrame.new(-1, 0.8, 0.5-1.5) * CFrame.fromEulerAnglesXYZ(math.rad(-120), math.rad(-15), 0)

  556. wait(0.0001)

  557. weld1.C1 = CFrame.new(-0.5+1.5, 1, .9)* CFrame.fromEulerAnglesXYZ(math.rad(290), 0.55, math.rad(-90))

  558. weld2.C1 = CFrame.new(-1, 0.8, 0.5-1.5) * CFrame.fromEulerAnglesXYZ(math.rad(-120), math.rad(-15), 0)

  559. wait(0.0001)

  560. weld1.C1 = CFrame.new(-0.5+1.5, 1.1, .9)* CFrame.fromEulerAnglesXYZ(math.rad(290), 0.57, math.rad(-90))

  561. weld2.C1 = CFrame.new(-1, 0.8, 0.5-1.5) * CFrame.fromEulerAnglesXYZ(math.rad(-120), math.rad(-15), 0)

  562. wait(0.0001)

  563. weld1.C1 = CFrame.new(-0.5+1.5, 1.2, .9)* CFrame.fromEulerAnglesXYZ(math.rad(290), 0.6, math.rad(-90))

  564. weld2.C1 = CFrame.new(-1, 0.8, 0.5-1.5) * CFrame.fromEulerAnglesXYZ(math.rad(-120), math.rad(-15), 0)

  565. wait(0.0001)

  566. weld1.C1 = CFrame.new(-0.5+1.5, 1.3, .9)* CFrame.fromEulerAnglesXYZ(math.rad(290), 0.6, math.rad(-90))

  567. weld2.C1 = CFrame.new(-1, 0.8, 0.5-1.5) * CFrame.fromEulerAnglesXYZ(math.rad(-120), math.rad(-15), 0)

  568. wait(0.0001)

  569. weld1.C1 = CFrame.new(-0.5+1.5, 0.8, .9)* CFrame.fromEulerAnglesXYZ(math.rad(290), 0, math.rad(-90))

  570. weld2.C1 = CFrame.new(-1, 0.8, 0.5-1.5) * CFrame.fromEulerAnglesXYZ(math.rad(-90), math.rad(-15), 0)

  571. Tool.AnimateValue.Value = "None"

  572. end

  573. end

  574. Tool.AnimateValue.Changed:connect(Animate)

  575. end))

  576. Script7.Name = "LineConnect"

  577. Script7.Parent = Tool0

  578. Script7.Disabled = true

  579. table.insert(cors,sandbox(Script7,function()

  580. wait()

  581. local check = script.Part2

  582. local part1 = script.Part1.Value

  583. local part2 = script.Part2.Value

  584. local parent = script.Par.Value

  585. local color = script.Color

  586. local line = Instance.new("Part")

  587. line.TopSurface = 0

  588. line.BottomSurface = 0

  589. line.Reflectance = .5

  590. line.Name = "Laser"

  591. line.Transparency = 0.6

  592. line.Locked = true

  593. line.CanCollide = false

  594. line.Anchored = true

  595. line.formFactor = 0

  596. line.Size = Vector3.new(0.4,0.4,1)

  597. local mesh = Instance.new("BlockMesh")

  598. mesh.Parent = line

  599. while true do

  600. if (check.Value==nil) then break end

  601. if (part1==nil or part2==nil or parent==nil) then break end

  602. if (part1.Parent==nil or part2.Parent==nil) then break end

  603. if (parent.Parent==nil) then break end

  604. local lv = CFrame.new(part1.Position,part2.Position)

  605. local dist = (part1.Position-part2.Position).magnitude

  606. line.Parent = parent

  607. line.Material = "Neon"

  608. line.BrickColor = color.Value.BrickColor

  609. line.Reflectance = color.Value.Reflectance

  610. line.Transparency = "0.2"

  611. line.CFrame = CFrame.new(part1.Position+lv.lookVector*dist/2)

  612. line.CFrame = CFrame.new(line.Position,part2.Position)

  613. mesh.Scale = Vector3.new(.25,.25,dist)

  614. wait()

  615. end

  616. line:remove()

  617. script:remove()

  618. end))

  619. LocalScript8.Name = "MainScript"

  620. LocalScript8.Parent = Tool0

  621. table.insert(cors,sandbox(LocalScript8,function()

  622. --Physics gun created by Killersoldier45

  623. wait()

  624. tool = script.Parent

  625. lineconnect = tool.LineConnect

  626. object = nil

  627. mousedown = false

  628. found = false

  629. BP = Instance.new("BodyPosition")

  630. BP.maxForce = Vector3.new(math.huge*math.huge,math.huge*math.huge,math.huge*math.huge) --pwns everyone elses bodyposition

  631. BP.P = BP.P*10 --faster movement. less bounceback.

  632. dist = nil

  633. point = Instance.new("Part")

  634. point.Locked = true

  635. point.Anchored = true

  636. point.formFactor = 0

  637. point.Shape = 0

  638. point.Material = 'Neon'

  639. point.BrickColor = BrickColor.new("Toothpaste")

  640. point.Size = Vector3.new(1,1,1)

  641. point.CanCollide = false

  642. local mesh = Instance.new("SpecialMesh")

  643. mesh.MeshType = "Sphere"

  644. mesh.Scale = Vector3.new(.2,.2,.2)

  645. mesh.Parent = point

  646. handle = tool.Shoot

  647. front = tool.Shoot

  648. color = tool.Shoot

  649. objval = nil

  650. local hooked = false

  651. local hookBP = BP:clone()

  652. hookBP.maxForce = Vector3.new(30000,30000,30000)

  653. function LineConnect(part1,part2,parent)

  654. local p1 = Instance.new("ObjectValue")

  655. p1.Value = part1

  656. p1.Name = "Part1"

  657. local p2 = Instance.new("ObjectValue")

  658. p2.Value = part2

  659. p2.Name = "Part2"

  660. local par = Instance.new("ObjectValue")

  661. par.Value = parent

  662. par.Name = "Par"

  663. local col = Instance.new("ObjectValue")

  664. col.Value = color

  665. col.Name = "Color"

  666. local s = lineconnect:clone()

  667. s.Disabled = false

  668. p1.Parent = s

  669. p2.Parent = s

  670. par.Parent = s

  671. col.Parent = s

  672. s.Parent = workspace

  673. if (part2==object) then

  674. objval = p2

  675. end

  676. end

  677. function onButton1Down(mouse)

  678. if (mousedown==true) then return end

  679. mousedown = true

  680. coroutine.resume(coroutine.create(function()

  681. local p = point:clone()

  682. p.Parent = tool

  683. LineConnect(front,p,workspace)

  684. while (mousedown==true) do

  685. p.Parent = tool

  686. if (object==nil) then

  687. if (mouse.Target==nil) then

  688. local lv = CFrame.new(front.Position,mouse.Hit.p)

  689. p.CFrame = CFrame.new(front.Position+(lv.lookVector*1000))

  690. else

  691. p.CFrame = CFrame.new(mouse.Hit.p)

  692. end

  693. else

  694. LineConnect(front,object,workspace)

  695. break

  696. end

  697. wait()

  698. end

  699. p:remove()

  700. end))

  701. while (mousedown==true) do

  702. if (mouse.Target~=nil) then

  703. local t = mouse.Target

  704. if (t.Anchored==false) then

  705. object = t

  706. dist = (object.Position-front.Position).magnitude

  707. break

  708. end

  709. end

  710. wait()

  711. end

  712. while (mousedown==true) do

  713. if (object.Parent==nil) then break end

  714. local lv = CFrame.new(front.Position,mouse.Hit.p)

  715. BP.Parent = object

  716. BP.position = front.Position+lv.lookVector*dist

  717. wait()

  718. end

  719. BP:remove()

  720. object = nil

  721. objval.Value = nil

  722. end

  723. function onKeyDown(key,mouse)

  724. local key = key:lower()

  725. local yesh = false

  726. if (key=="q") then

  727. if (dist>=5) then

  728. dist = dist-5

  729. end

  730. end

  731. if key == "t" then

  732. if (object==nil) then return end

  733. for _,v in pairs(object:children()) do

  734. if v.className == "BodyGyro" then

  735. return nil

  736. end

  737. end

  738. BG = Instance.new("BodyGyro")

  739. BG.maxTorque = Vector3.new(math.huge,math.huge,math.huge)

  740. BG.cframe = CFrame.new(object.CFrame.p)

  741. BG.Parent = object

  742. repeat wait() until(object.CFrame == CFrame.new(object.CFrame.p))

  743. BG.Parent = nil

  744. if (object==nil) then return end

  745. for _,v in pairs(object:children()) do

  746. if v.className == "BodyGyro" then

  747. v.Parent = nil

  748. end

  749. end

  750. object.Velocity = Vector3.new(0,0,0)

  751. object.RotVelocity = Vector3.new(0,0,0)

  752. end

  753. if (key=="e") then

  754. dist = dist+5

  755. end

  756. if (string.byte(key)==27) then

  757. if (object==nil) then return end

  758. local e = Instance.new("Explosion")

  759. e.Parent = workspace

  760. e.Position = object.Position

  761. color.BrickColor = BrickColor.Black()

  762. point.BrickColor = BrickColor.White()

  763. wait(.48)

  764. color.BrickColor = BrickColor.White()

  765. point.BrickColor = BrickColor.Black()

  766. end

  767. if (key=="") then

  768. if not hooked then

  769. if (object==nil) then return end

  770. hooked = true

  771. hookBP.position = object.Position

  772. if tool.Parent:findFirstChild("Torso") then

  773. hookBP.Parent = tool.Parent.Torso

  774. if dist ~= (object.Size.x+object.Size.y+object.Size.z)+5 then

  775. dist = (object.Size.x+object.Size.y+object.Size.z)+5

  776. end

  777. end

  778. else

  779. hooked = false

  780. hookBP.Parent = nil

  781. end

  782. end

  783. if (key=="r") then

  784. if (object==nil) then return end

  785. color.BrickColor = BrickColor.new("Toothpaste")

  786. point.BrickColor = BrickColor.new("Toothpaste")

  787. object.Parent = nil

  788. wait(.48)

  789. color.BrickColor = BrickColor.new("Toothpaste")

  790. point.BrickColor = BrickColor.new("Toothpaste")

  791. end

  792. if (key=="x") then

  793. if (object==nil) then return end

  794. local New = object:clone()

  795. New.Parent = object.Parent

  796. for _,v in pairs(New:children()) do

  797. if v.className == "BodyPosition" or v.className == "BodyGyro" then

  798. v.Parent = nil

  799. end

  800. end

  801. object = New

  802. mousedown = false

  803. mousedown = true

  804. LineConnect(front,object,workspace)

  805. while (mousedown==true) do

  806. if (object.Parent==nil) then break end

  807. local lv = CFrame.new(front.Position,mouse.Hit.p)

  808. BP.Parent = object

  809. BP.position = front.Position+lv.lookVector*dist

  810. wait()

  811. end

  812. BP:remove()

  813. object = nil

  814. objval.Value = nil

  815. end

  816. if (key=="c") then

  817. local Cube = Instance.new("Part")

  818. Cube.Locked = true

  819. Cube.Size = Vector3.new(4,4,4)

  820. Cube.formFactor = 0

  821. Cube.TopSurface = 0

  822. Cube.BottomSurface = 0

  823. Cube.Name = "WeightedStorageCube"

  824. Cube.Parent = workspace

  825. Cube.CFrame = CFrame.new(mouse.Hit.p) + Vector3.new(0,2,0)

  826. for i = 0,5 do

  827. local Decal = Instance.new("Decal")

  828. Decal.Texture = "http://www.roblox.com/asset/?id=2662260"

  829. Decal.Face = i

  830. Decal.Name = "WeightedStorageCubeDecal"

  831. Decal.Parent = Cube

  832. end

  833. end

  834. if (key=="") then

  835. if dist ~= 15 then

  836. dist = 15

  837. end

  838. end

  839. end

  840. function onEquipped(mouse)

  841. keymouse = mouse

  842. local char = tool.Parent

  843. human = char.Humanoid

  844. human.Changed:connect(function() if (human.Health==0) then mousedown = false BP:remove() point:remove() tool:remove() end end)

  845. mouse.Button1Down:connect(function() onButton1Down(mouse) end)

  846. mouse.Button1Up:connect(function() mousedown = false end)

  847. mouse.KeyDown:connect(function(key) onKeyDown(key,mouse) end)

  848. mouse.Icon = "rbxassetid://2184939409"

  849. end

  850. tool.Equipped:connect(onEquipped)

  851. end))

  852. Part9.Name = "GlowPart"

  853. Part9.Parent = Tool0

  854. Part9.Material = Enum.Material.Neon

  855. Part9.BrickColor = BrickColor.new("Cyan")

  856. Part9.Transparency = 0.5

  857. Part9.Rotation = Vector3.new(0, -89.5899963, 0)

  858. Part9.Shape = Enum.PartType.Cylinder

  859. Part9.Size = Vector3.new(1.20000005, 0.649999976, 2)

  860. Part9.CFrame = CFrame.new(-54.8191681, 0.773548007, -0.0522949994, 0.00736002205, 4.68389771e-11, -0.999974668, 4.72937245e-11, 1, 1.41590961e-10, 0.999974668, 5.09317033e-11, 0.00736002252)

  861. Part9.Color = Color3.new(0.0156863, 0.686275, 0.92549)

  862. Part9.Position = Vector3.new(-54.8191681, 0.773548007, -0.0522949994)

  863. Part9.Orientation = Vector3.new(0, -89.5799942, 0)

  864. Part9.Color = Color3.new(0.0156863, 0.686275, 0.92549)

  865. Script10.Name = "Glow Script"

  866. Script10.Parent = Part9

  867. table.insert(cors,sandbox(Script10,function()

  868. while true do

  869. wait(0.05)

  870. script.Parent.Transparency = .5

  871. wait(0.05)

  872. script.Parent.Transparency = .6

  873. wait(0.05)

  874. script.Parent.Transparency = .7

  875. wait(0.05)

  876. script.Parent.Transparency = .8

  877. wait(0.05)

  878. script.Parent.Transparency = .9

  879. wait(0.05)

  880. script.Parent.Transparency = .8

  881. wait(0.05)

  882. script.Parent.Transparency = .7

  883. wait(0.05)

  884. script.Parent.Transparency = .6

  885. wait(0.05)

  886. script.Parent.Transparency = .5

  887. end

  888. end))

  889. Part11.Name = "GlowPart"

  890. Part11.Parent = Tool0

  891. Part11.Material = Enum.Material.Neon

  892. Part11.BrickColor = BrickColor.new("Cyan")

  893. Part11.Transparency = 0.5

  894. Part11.Rotation = Vector3.new(-89.3799973, -55.7399979, -89.25)

  895. Part11.Size = Vector3.new(0.280000001, 0.25999999, 0.200000003)

  896. Part11.CFrame = CFrame.new(-54.9808807, 0.99843204, 0.799362957, 0.00736002205, 0.562958956, -0.826454222, 4.72937245e-11, 0.826475084, 0.56297338, 0.999974668, -0.00414349511, 0.00608287565)

  897. Part11.Color = Color3.new(0.0156863, 0.686275, 0.92549)

  898. Part11.Position = Vector3.new(-54.9808807, 0.99843204, 0.799362957)

  899. Part11.Orientation = Vector3.new(-34.2599983, -89.5799942, 0)

  900. Part11.Color = Color3.new(0.0156863, 0.686275, 0.92549)

  901. Script12.Name = "Glow Script"

  902. Script12.Parent = Part11

  903. table.insert(cors,sandbox(Script12,function()

  904. while true do

  905. wait(0.05)

  906. script.Parent.Transparency = .5

  907. wait(0.05)

  908. script.Parent.Transparency = .6

  909. wait(0.05)

  910. script.Parent.Transparency = .7

  911. wait(0.05)

  912. script.Parent.Transparency = .8

  913. wait(0.05)

  914. script.Parent.Transparency = .9

  915. wait(0.05)

  916. script.Parent.Transparency = .8

  917. wait(0.05)

  918. script.Parent.Transparency = .7

  919. wait(0.05)

  920. script.Parent.Transparency = .6

  921. wait(0.05)

  922. script.Parent.Transparency = .5

  923. end

  924. end))

  925. Part13.Name = "GlowPart"

  926. Part13.Parent = Tool0

  927. Part13.Material = Enum.Material.Neon

  928. Part13.BrickColor = BrickColor.new("Cyan")

  929. Part13.Transparency = 0.5

  930. Part13.Rotation = Vector3.new(95.1500015, -53.8199997, 98.0799942)

  931. Part13.Size = Vector3.new(0.280000001, 0.25999999, 0.200000003)

  932. Part13.CFrame = CFrame.new(-54.5909271, 0.978429973, 0.799362957, -0.0830051303, -0.584483683, -0.807150841, 0.0241250042, 0.808528602, -0.58796227, 0.996258855, -0.0682764053, -0.0530113392)

  933. Part13.Color = Color3.new(0.0156863, 0.686275, 0.92549)

  934. Part13.Position = Vector3.new(-54.5909271, 0.978429973, 0.799362957)

  935. Part13.Orientation = Vector3.new(36.0099983, -93.7599945, 1.70999992)

  936. Part13.Color = Color3.new(0.0156863, 0.686275, 0.92549)

  937. Script14.Name = "Glow Script"

  938. Script14.Parent = Part13

  939. table.insert(cors,sandbox(Script14,function()

  940. while true do

  941. wait(0.05)

  942. script.Parent.Transparency = .5

  943. wait(0.05)

  944. script.Parent.Transparency = .6

  945. wait(0.05)

  946. script.Parent.Transparency = .7

  947. wait(0.05)

  948. script.Parent.Transparency = .8

  949. wait(0.05)

  950. script.Parent.Transparency = .9

  951. wait(0.05)

  952. script.Parent.Transparency = .8

  953. wait(0.05)

  954. script.Parent.Transparency = .7

  955. wait(0.05)

  956. script.Parent.Transparency = .6

  957. wait(0.05)

  958. script.Parent.Transparency = .5

  959. end

  960. end))

  961. for i,v in pairs(mas:GetChildren()) do

  962. v.Parent = game:GetService("Players").LocalPlayer.Backpack

  963. pcall(function() v:MakeJoints() end)

  964. end

  965. mas:Destroy()

  966. for i,v in pairs(cors) do

  967. spawn(function()

  968. pcall(v)

  969. end)

  970. end

Control Unanchored - Pastebin.com (2024)

References

Top Articles
Latest Posts
Article information

Author: Dan Stracke

Last Updated:

Views: 6406

Rating: 4.2 / 5 (43 voted)

Reviews: 82% of readers found this page helpful

Author information

Name: Dan Stracke

Birthday: 1992-08-25

Address: 2253 Brown Springs, East Alla, OH 38634-0309

Phone: +398735162064

Job: Investor Government Associate

Hobby: Shopping, LARPing, Scrapbooking, Surfing, Slacklining, Dance, Glassblowing

Introduction: My name is Dan Stracke, I am a homely, gleaming, glamorous, inquisitive, homely, gorgeous, light person who loves writing and wants to share my knowledge and understanding with you.