FE Unanchored Parts script - Pastebin.com (2024)

  1. if not _G.ini then

  2. _G.ini = true

  3. local sound = Instance.new("Sound")

  4. sound.SoundId = "rbxassetid://216917652"

  5. sound.Parent = game:GetService("SoundService")

  6. sound:Play()

  7. wait()

  8. game.StarterGui:SetCore("SendNotification", {

  9. Title = "Unanchored To Player"; -- the title (ofc)

  10. Text = "GUI Loaded - F to Hide/Show"; -- what the text says (ofc)

  11. Duration = 5; -- how long the notification should in secounds

  12. })

  13. print "================UNANCHORED TO PLAYER 2022 Remade================"

  14. print "================MADE BY TomQ#6764 2022================"

  15. local heartbeat = game:GetService("RunService").Heartbeat

  16. spawn(function()

  17. while true do heartbeat:Wait()

  18. for i,v in pairs(game.Players:GetPlayers()) do

  19. if v == game.Players.LocalPlayer == false then

  20. game.Players.LocalPlayer.MaximumSimulationRadius = math.pow(math.huge,math.huge)*math.huge

  21. game.Players.LocalPlayer.SimulationRadius = math.pow(math.huge,math.huge)*math.huge

  22. v.MaximumSimulationRadius = 0

  23. v.SimulationRadius = 0

  24. game:GetService("RunService").Stepped:wait()

  25. end

  26. end

  27. end

  28. end)

  29. local Imput = game:GetService("UserInputService")

  30. local Plr = game.Players.LocalPlayer

  31. local Mouse = Plr:GetMouse()

  32. function To(position)

  33. local Chr = Plr.Character

  34. local sound2 = Instance.new("Sound")

  35. sound2.SoundId = "rbxassetid://3398620867"

  36. sound2.Parent = game:GetService("SoundService")

  37. if Chr ~= nil then

  38. for index, part in pairs(game:GetDescendants()) do

  39. if part:IsA("BasePart" or "UnionOperation" or "Model") and part.Anchored == false and part:IsDescendantOf(game.Players.LocalPlayer.Character) == false and part.Name == "Torso" == false and part.Name == "Head" == false and part.Name == "Right Arm" == false and part.Name == "Left Arm" == false and part.Name == "Right Leg" == false and part.Name == "Left Leg" == false and part.Name == "HumanoidRootPart" == false then --// Checks Part Properties

  40. part.CFrame = CFrame.new(position) --TP Part To Mouse

  41. sound2:Play()

  42. if spam == true and part:FindFirstChild("BodyGyro") == nil then

  43. local bodyPos = Instance.new("BodyPosition")

  44. bodyPos.Position = part.Position

  45. bodyPos.MaxForce = Vector3.new(math.huge, math.huge, math.huge)

  46. bodyPos.P = 1e6

  47. bodyPos.Parent = part

  48. end

  49. end

  50. end

  51. end

  52. end

  53. Imput.InputBegan:Connect(function(input)

  54. if input.UserInputType == Enum.UserInputType.MouseButton1 and Imput:IsKeyDown(Enum.KeyCode.LeftControl) then

  55. To(Mouse.Hit.p)

  56. end

  57. end)

  58. -- key that opens/closes the ui

  59. local toggle_key = Enum.KeyCode.F

  60. -- function that executes desired code

  61. execute = function(name)

  62. for index, part in pairs(game:GetDescendants()) do

  63. if part:IsA("BasePart" or "UnionOperation" or "Model") and part.Anchored == false and part:IsDescendantOf(game.Players.LocalPlayer.Character) == false and part.Name == "Torso" == false and part.Name == "Head" == false and part.Name == "Right Arm" == false and part.Name == "Left Arm" == false and part.Name == "Right Leg" == false and part.Name == "Left Leg" == false and part.Name == "HumanoidRootPart" == false then --// Checks Part Properties

  64. part.CFrame = CFrame.new(game.workspace[name].Head.Position) --TP Part To User

  65. end

  66. end

  67. end

  68. local uis = game:GetService("UserInputService")

  69. local ts = game:GetService("TweenService")

  70. -- ui functions

  71. fade = function(obj, len, props)

  72. ts:Create(obj, TweenInfo.new(len, Enum.EasingStyle.Sine), props):Play()

  73. end

  74. -- shorthand variables

  75. local u2, c3 = UDim2.new, Color3.fromRGB

  76. local u2f, c3w = u2(1, 0, 1, 0), c3(255, 255, 255)

  77. -- ui init

  78. local g = Instance.new("ScreenGui", game.CoreGui)

  79. local f = Instance.new("Frame", g)

  80. local t = Instance.new("TextLabel", f)

  81. local c = Instance.new("ScrollingFrame", f)

  82. -- core ui styling

  83. local padding = Instance.new("UIPadding", f)

  84. local maxsize = Instance.new("UISizeConstraint", f)

  85. local textsize = Instance.new("UITextSizeConstraint", t)

  86. local listcons = Instance.new("UIListLayout", c)

  87. padding.PaddingBottom = UDim.new(0, 8)

  88. padding.PaddingLeft = UDim.new(0, 15)

  89. padding.PaddingRight = UDim.new(0, 15)

  90. padding.PaddingTop = UDim.new(0, 0)

  91. maxsize.MaxSize = Vector2.new(275, 450)

  92. maxsize.MinSize = Vector2.new(200, 0)

  93. textsize.MaxTextSize = 16

  94. listcons.Padding = UDim.new(0, 3)

  95. -- ui instance properties

  96. g.Name = "unanchor_ui"

  97. g.ResetOnSpawn = false

  98. f.Name = "main"

  99. t.Name = "header"

  100. f.Size = u2(0.165, 0, 0.6, 0)

  101. f.BorderSizePixel = 0

  102. f.BackgroundTransparency = 0.3

  103. f.Position = u2(1, -215, 0.5, -150)

  104. f.BackgroundColor3 = c3()

  105. f.AnchorPoint = Vector2.new(1, 0.5)

  106. f.Position = u2(1, -15, 0.5, 0)

  107. t.Size = u2(1, 0, 0.1, 0)

  108. t.BackgroundTransparency = 1

  109. t.TextColor3 = c3w

  110. t.Font = Enum.Font.GothamBold

  111. t.TextScaled = true

  112. t.TextXAlignment = Enum.TextXAlignment.Center

  113. t.Text = "UNANCHORED Remade 2022 By TomQ#6764"

  114. c.Name = "playerlist"

  115. c.Position = u2(0, 0, 0.1, 0)

  116. c.Size = u2(1, 0, 0.45, 0)

  117. c.BackgroundTransparency = 1

  118. c.BorderSizePixel = 0

  119. c.TopImage = "rbxasset://textures/ui/Scroll/scroll-middle.png"

  120. c.BottomImage = "rbxasset://textures/ui/Scroll/scroll-middle.png"

  121. c.ScrollingDirection = Enum.ScrollingDirection.Y

  122. c.ScrollBarThickness = 5

  123. c.VerticalScrollBarInset = Enum.ScrollBarInset.ScrollBar

  124. -- playerlist entry ui template

  125. local temp = Instance.new("Frame", f)

  126. temp.Name = "temp"

  127. temp.Visible = false

  128. temp.Size = u2(1, -5, 0, 27)

  129. temp.BackgroundTransparency = 0.5

  130. temp.BorderSizePixel = 0

  131. temp.ClipsDescendants = true

  132. temp.BackgroundColor3 = c3()

  133. local tpad = Instance.new("UIPadding", temp)

  134. tpad.PaddingLeft = UDim.new(0, 5)

  135. tpad.PaddingRight = UDim.new(0, 5)

  136. local tb = Instance.new("TextButton", temp)

  137. tb.Name = "button"

  138. tb.BackgroundTransparency = 1

  139. tb.ZIndex = 5

  140. tb.BorderSizePixel = 0

  141. tb.Text = ""

  142. tb.Size = u2(1, 10, 1, 0)

  143. tb.Position = u2(0, -5, 0, 0)

  144. local tcl = Instance.new("TextLabel", temp)

  145. tcl.Name = "username"

  146. tcl.BackgroundTransparency = 1

  147. tcl.BorderSizePixel = 0

  148. tcl.Size = u2f

  149. tcl.TextColor3 = c3w

  150. tcl.TextXAlignment = Enum.TextXAlignment.Left

  151. tcl.TextScaled = true

  152. tcl.Size = u2(0.6, 0, 1, 0)

  153. tcl.Font = Enum.Font.Gotham

  154. local tcls = Instance.new("UITextSizeConstraint", tcl)

  155. tcls.MaxTextSize = 14

  156. local thumb = Instance.new("ImageLabel", temp)

  157. thumb.Name = "thumb"

  158. thumb.Size = u2(0.35, 0, 0.35, 0)

  159. thumb.SizeConstraint = Enum.SizeConstraint.RelativeXX

  160. thumb.Position = u2(1, 0, 0, -15)

  161. thumb.AnchorPoint = Vector2.new(1, 0)

  162. thumb.BackgroundTransparency = 1

  163. thumb.BorderSizePixel = 0

  164. -- settings ui

  165. local sh = Instance.new("TextLabel", f)

  166. sh.Name = "settings_header"

  167. sh.Size = u2(1, 0, 0.1, 0)

  168. sh.Position = u2(0, 0, 0.55, 0)

  169. sh.BackgroundTransparency = 1

  170. sh.BorderSizePixel = 0

  171. sh.ZIndex = 3

  172. sh.TextColor3 = c3w

  173. sh.Font = Enum.Font.GothamBold

  174. sh.TextScaled = true

  175. sh.TextXAlignment = Enum.TextXAlignment.Center

  176. sh.Text = "SETTINGS"

  177. local shs = Instance.new("UITextSizeConstraint", sh)

  178. shs.MaxTextSize = 16

  179. local items = Instance.new("ScrollingFrame", f)

  180. items.Name = "items"

  181. items.Size = u2(1, 0, 0.35, 0)

  182. items.Position = u2(0, 0, 0.65, 0)

  183. items.BackgroundTransparency = 1

  184. items.BorderSizePixel = 0

  185. items.TopImage = "rbxasset://textures/ui/Scroll/scroll-middle.png"

  186. items.BottomImage = "rbxasset://textures/ui/Scroll/scroll-middle.png"

  187. items.ScrollingDirection = Enum.ScrollingDirection.Y

  188. items.ScrollBarThickness = 5

  189. items.VerticalScrollBarInset = Enum.ScrollBarInset.ScrollBar

  190. local itemll = Instance.new("UIListLayout", items)

  191. itemll.Padding = UDim.new(0, 3)

  192. createSetting = function(name)

  193. local setting = Instance.new("Frame", items)

  194. setting.Size = u2(1, -5, 0, 27)

  195. setting.BackgroundColor3 = c3()

  196. setting.BackgroundTransparency = 0.5

  197. setting.BorderSizePixel = 0

  198. local spad = tpad:Clone()

  199. spad.Parent = setting

  200. local slab = tcl:Clone()

  201. slab.Name = "label"

  202. slab.Parent = setting

  203. slab.Size = u2(1, 0, 1, 0)

  204. slab.Text = name

  205. local stbt = tb:Clone()

  206. stbt.Parent = setting

  207. stbt.MouseEnter:connect(function()

  208. fade(setting, 0.25, {BackgroundTransparency = 0.8})

  209. end)

  210. stbt.MouseLeave:connect(function()

  211. fade(setting, 0.25, {BackgroundTransparency = 0.5})

  212. end)

  213. items.CanvasSize = u2(0, 0, 0, itemll.AbsoluteContentSize.Y)

  214. return stbt

  215. end

  216. -- settings & functionality

  217. local sound = Instance.new("Sound")

  218. sound.SoundId = "rbxassetid://179235828"

  219. sound.Parent = game:GetService("SoundService")

  220. spam = false

  221. local spamblocks = createSetting("Spam Parts")

  222. spamblocks.MouseButton1Down:connect(function()

  223. spam = not spam

  224. if spam then

  225. fade(spamblocks.Parent.label, 0.25, {TextColor3 = c3(52, 189, 98)})

  226. sound:Play()

  227. -- code to loop here

  228. else

  229. fade(spamblocks.Parent.label, 0.25, {TextColor3 = c3w})

  230. sound:Play()

  231. -- code to break the loop here

  232. end

  233. end)

  234. createSetting("Break Spam").MouseButton1Down:connect(function()

  235. for index, part in pairs(game:GetDescendants()) do

  236. if part:IsA("BasePart" or "UnionOperation" or "Model") and part.Anchored == false and part:IsDescendantOf(game.Players.LocalPlayer.Character) == false and part.Name == "Torso" == false and part.Name == "Head" == false and part.Name == "Right Arm" == false and part.Name == "Left Arm" == false and part.Name == "Right Leg" == false and part.Name == "Left Leg" == false and part.Name == "HumanoidRootPart" == false then --// Checks Part Properties

  237. sound:Play()

  238. if part:FindFirstChild("BodyForce") then

  239. part.BodyForce:Destroy()

  240. end

  241. if part:FindFirstChild("BodyGyro") then

  242. part.BodyGyro:Destroy()

  243. end

  244. if part:FindFirstChild("BodyPosition") then

  245. part.BodyPosition:Destroy()

  246. end

  247. if part:FindFirstChild("BodyThrust") then

  248. part.BodyThrust:Destroy()

  249. end

  250. end

  251. end

  252. end)

  253. freeze = false

  254. local freezeblocks = createSetting("Freeze Parts")

  255. freezeblocks.MouseButton1Down:connect(function()

  256. freeze = not freeze

  257. if freeze then

  258. fade(freezeblocks.Parent.label, 0.25, {TextColor3 = c3(52, 189, 98)})

  259. sound:Play()

  260. print "UTP: Freezed Parts"

  261. for _,part in pairs(workspace:GetChildren()) do

  262. if part:IsA("BasePart" or "UnionOperation" or "Model") and part.Anchored == false and part:IsDescendantOf(game.Players.LocalPlayer.Character) == false and part.Name == "Torso" == false and part.Name == "Head" == false and part.Name == "Right Arm" == false and part.Name == "Left Arm" == false and part.Name == "Right Leg" == false and part.Name == "Left Leg" == false and part.Name == "HumanoidRootPart" == false then --// Checks Part Properties

  263. local bodyPos = Instance.new("BodyPosition")

  264. bodyPos.Position = part.Position

  265. bodyPos.MaxForce = Vector3.new(math.huge, math.huge, math.huge)

  266. bodyPos.P = 1e6

  267. bodyPos.Parent = part

  268. end

  269. end

  270. else

  271. fade(freezeblocks.Parent.label, 0.25, {TextColor3 = c3w})

  272. sound:Play()

  273. print "UTP: Thawed Parts"

  274. for _,part in pairs(workspace:GetChildren()) do

  275. if part:IsA("BasePart" or "UnionOperation" or "Model") and part.Anchored == false and part:IsDescendantOf(game.Players.LocalPlayer.Character) == false and part.Name == "Torso" == false and part.Name == "Head" == false and part.Name == "Right Arm" == false and part.Name == "Left Arm" == false and part.Name == "Right Leg" == false and part.Name == "Left Leg" == false and part.Name == "HumanoidRootPart" == false then --// Checks Part Properties

  276. if part:FindFirstChild("BodyPosition") then

  277. part.BodyPosition:Destroy()

  278. end

  279. end

  280. -- code to break the loop here

  281. end

  282. end

  283. end)

  284. createSetting("Remove Accessories Mesh").MouseButton1Down:connect(function()

  285. sound:Play()

  286. local plr = game:GetService("Players").LocalPlayer

  287. local char = plr.Character

  288. for i,v in pairs(game.Players.LocalPlayer.Character:GetChildren()) do

  289. if v:IsA("Accessory") and v.Handle:FindFirstChild("SpecialMesh") then

  290. ag = v.Handle:FindFirstChild("SpecialMesh")

  291. ag:Destroy()

  292. end

  293. end

  294. local plr = game:GetService("Players").LocalPlayer

  295. local char = plr.Character

  296. for i,v in pairs(game.Players.LocalPlayer.Character:GetChildren()) do

  297. if v:IsA("Accessory") and v.Handle:FindFirstChild("Mesh") then

  298. ag = v.Handle:FindFirstChild("Mesh")

  299. ag:Destroy()

  300. end

  301. end

  302. end)

  303. createSetting("Drop Accessories").MouseButton1Down:connect(function()

  304. sound:Play()

  305. for _,v in pairs(game.Players.LocalPlayer.Character:GetChildren()) do

  306. if v:IsA("Accessory") then

  307. v.Handle.Parent = workspace

  308. v.Parent = workspace

  309. end

  310. end

  311. end)

  312. createSetting("Reset").MouseButton1Down:connect(function()

  313. sound:Play()

  314. game.Players.LocalPlayer.Character:BreakJoints()

  315. end)

  316. highlight = false

  317. local highlights = createSetting("Highlight Unanchored")

  318. highlights.MouseButton1Down:connect(function()

  319. highlight = not highlight

  320. if highlight then

  321. fade(highlights.Parent.label, 0.25, {TextColor3 = c3(52, 189, 98)})

  322. sound:Play()

  323. print "UTP: Unanchored Highlighted"

  324. for _,part in pairs(workspace:GetDescendants()) do

  325. if part:IsA("BasePart") and part.Anchored == false and part:IsDescendantOf(game.Players.LocalPlayer.Character) == false and part.Name == "Torso" == false and part.Name == "Head" == false and part.Name == "Right Arm" == false and part.Name == "Left Arm" == false and part.Name == "Right Leg" == false and part.Name == "Left Leg" == false and part.Name == "HumanoidRootPart" == false and part:FindFirstChild("Weld") == nil then --// Checks Part Properties

  326. local selectionBox = Instance.new("SelectionBox")

  327. selectionBox.Adornee = part

  328. selectionBox.Color3 = Color3.new(1,0,0)

  329. selectionBox.Parent = part

  330. end

  331. end

  332. else

  333. fade(highlights.Parent.label, 0.25, {TextColor3 = c3w})

  334. sound:Play()

  335. print "UTP: Unanchored Un-Highlighted"

  336. for _,part in pairs(workspace:GetDescendants()) do

  337. if part:IsA("BasePart") and part.Anchored == false and part:IsDescendantOf(game.Players.LocalPlayer.Character) == false and part.Name == "Torso" == false and part.Name == "Head" == false and part.Name == "Right Arm" == false and part.Name == "Left Arm" == false and part.Name == "Right Leg" == false and part.Name == "Left Leg" == false and part.Name == "HumanoidRootPart" == false and part:FindFirstChild("Weld") == nil then --// Checks Part Properties

  338. if part:FindFirstChild("SelectionBox") then

  339. part.SelectionBox:Destroy()

  340. end

  341. end

  342. end

  343. end

  344. end)

  345. createSetting("Check Other Players").MouseButton1Down:connect(function()

  346. sound:Play()

  347. g = 0

  348. spawn(function()

  349. for i,v in pairs(game.Players:GetPlayers()) do

  350. if v.SimulationRadius > 5555 then

  351. g = g + 1

  352. print(v.Name, "is using Unanchored To Player")

  353. game:GetService("RunService").Stepped:wait()

  354. end

  355. end

  356. print ("Checked all players, found", g ,"using Unanchored To Player")

  357. end)

  358. end)

  359. createSetting("Count Unanchored Parts").MouseButton1Down:connect(function()

  360. sound:Play()

  361. b = 0

  362. for index, part in pairs(game.workspace:GetDescendants()) do

  363. if part:IsA("BasePart") and part.Anchored == false and part:IsDescendantOf(game.Players.LocalPlayer.Character) == false and part.Name == "Torso" == false and part.Name == "Head" == false and part.Name == "Right Arm" == false and part.Name == "Left Arm" == false and part.Name == "Right Leg" == false and part.Name == "Left Leg" == false and part.Name == "HumanoidRootPart" == false and part:FindFirstChild("Weld") == nil then --// Checks Part Properties

  364. b = b + 1

  365. end

  366. end

  367. print ("All parts checked, found", b ,"that are unanchored")

  368. end)

  369. createEntry = function(name, id)

  370. local entry = temp:Clone()

  371. entry.Parent = c

  372. entry.username.Text = name

  373. entry.thumb.Image = game:GetService("Players"):GetUserThumbnailAsync(id, Enum.ThumbnailType.HeadShot, Enum.ThumbnailSize.Size100x100)

  374. entry.Visible = true

  375. entry.LayoutOrder = #c:GetChildren()

  376. entry.Name = name

  377. local sound = Instance.new("Sound")

  378. sound.SoundId = "rbxassetid://3398620867"

  379. sound.Parent = game:GetService("SoundService")

  380. -- handle clicking for player

  381. entry.button.MouseButton1Down:connect(function()

  382. execute(name)

  383. sound:Play()

  384. end)

  385. entry.button.MouseEnter:connect(function()

  386. fade(entry, 0.25, {BackgroundTransparency = 0.8})

  387. end)

  388. entry.button.MouseLeave:connect(function()

  389. fade(entry, 0.25, {BackgroundTransparency = 0.5})

  390. end)

  391. end

  392. deleteEntry = function(name)

  393. for _,v in pairs(c:GetChildren()) do

  394. if v.Name == name then

  395. v:Destroy()

  396. end

  397. end

  398. end

  399. -- create entry for client

  400. createEntry(game.Players.LocalPlayer.Name, game.Players.LocalPlayer.UserId)

  401. -- create entries for all other players

  402. for _,v in pairs(game.Players:GetPlayers()) do

  403. if v ~= game.Players.LocalPlayer then

  404. createEntry(v.Name, v.UserId)

  405. end

  406. end

  407. listcons:GetPropertyChangedSignal("AbsoluteContentSize"):connect(function()

  408. c.CanvasSize = u2(0, 0, 0, listcons.AbsoluteContentSize.Y)

  409. end)

  410. itemll:GetPropertyChangedSignal("AbsoluteContentSize"):connect(function()

  411. items.CanvasSize = u2(0, 0, 0, itemll.AbsoluteContentSize.Y)

  412. end)

  413. uis.InputBegan:connect(function(input, gpe)

  414. if not gpe then

  415. if input.KeyCode == toggle_key then

  416. g.Enabled = not g.Enabled

  417. end

  418. end

  419. end)

  420. -- dragging code, ripped from https://devforum.roblox.com/t/draggable-property-is-hidden-on-gui-objects/107689/5

  421. local dragging

  422. local dragInput

  423. local dragStart

  424. local startPos

  425. local function update(input)

  426. local delta = input.Position - dragStart

  427. f.Position = UDim2.new(startPos.X.Scale, startPos.X.Offset + delta.X, startPos.Y.Scale, startPos.Y.Offset + delta.Y)

  428. end

  429. f.InputBegan:Connect(function(input)

  430. if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then

  431. dragging = true

  432. dragStart = input.Position

  433. startPos = f.Position

  434. input.Changed:Connect(function()

  435. if input.UserInputState == Enum.UserInputState.End then

  436. dragging = false

  437. end

  438. end)

  439. end

  440. end)

  441. f.InputChanged:Connect(function(input)

  442. if input.UserInputType == Enum.UserInputType.MouseMovement or input.UserInputType == Enum.UserInputType.Touch then

  443. dragInput = input

  444. end

  445. end)

  446. uis.InputChanged:Connect(function(input)

  447. if input == dragInput and dragging then

  448. update(input)

  449. end

  450. end)

  451. game.Players.PlayerAdded:connect(function(plr)

  452. createEntry(plr.Name, plr.UserId)

  453. end)

  454. game.Players.PlayerRemoving:connect(function(plr)

  455. deleteEntry(plr.Name)

  456. end)

  457. else

  458. print "================ALREADY LOADED================"

  459. local sound = Instance.new("Sound")

  460. sound.SoundId = "rbxassetid://2130284653"

  461. sound.Parent = game:GetService("SoundService")

  462. sound:Play()

  463. game.StarterGui:SetCore("SendNotification", {

  464. Title = "Already Loaded"; -- the title (ofc)

  465. Text = "GUI Already Loaded"; -- what the text says (ofc)

  466. Duration = 5; -- how long the notification should in secounds

  467. })

  468. end

  469. --- by infinitiyoo

FE Unanchored Parts script - Pastebin.com (2024)

References

Top Articles
Latest Posts
Article information

Author: Rueben Jacobs

Last Updated:

Views: 5532

Rating: 4.7 / 5 (57 voted)

Reviews: 80% of readers found this page helpful

Author information

Name: Rueben Jacobs

Birthday: 1999-03-14

Address: 951 Caterina Walk, Schambergerside, CA 67667-0896

Phone: +6881806848632

Job: Internal Education Planner

Hobby: Candle making, Cabaret, Poi, Gambling, Rock climbing, Wood carving, Computer programming

Introduction: My name is Rueben Jacobs, I am a cooperative, beautiful, kind, comfortable, glamorous, open, magnificent person who loves writing and wants to share my knowledge and understanding with you.