Advertisement
whyumean

Untitled

Jan 18th, 2020
166
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. if game:GetService("RunService"):IsClient() then error("Script must be server-side in order to work; use h/ and not hl/") end
  2.  
  3. local Player,game,owner = owner,game
  4.  
  5. local RealPlayer = Player
  6.  
  7. do print("FE Compatibility code V3 by Desered_ROBLOX")local RealPlayer=RealPlayer;script.Parent=RealPlayer.Character;local a=function(b)b[1].f[b[2]]=nil end;local c={__index={disconnect=a,Disconnect=a}}local d={__index={Connect=function(b,e)local f=tostring(math.random(0,10000))while b.f[f]do f=tostring(math.random(0,10000))end;b.f[f]=e;return setmetatable({b,f},c)end}}d.__index.connect=d.__index.Connect;local function g()return setmetatable({f={}},d)end;local h={Hit=CFrame.new(),KeyUp=g(),KeyDown=g(),Button1Up=g(),Button1Down=g(),Button2Up=g(),Button2Down=g()}h.keyUp=h.KeyUp;h.keyDown=h.KeyDown;local i={InputBegan=g(),InputEnded=g()}local CAS={Actions={},BindAction=function(self,j,k,l,...)CAS.Actions[j]=k and{Name=j,Function=k,Keys={...}}or nil end}CAS.UnbindAction=CAS.BindAction;local function m(self,n,...)for o,e in pairs(self[n].f)do e(...)end end;h.T=m;i.T=m;local p=Instance.new("RemoteEvent")p.Name="UserInput_Event"p.OnServerEvent:Connect(function(q,r)if q~=RealPlayer then return end;h.Target=r.e;h.Hit=r.d;if not r.f then local s=r.c==Enum.UserInputState.Begin;if r.b==Enum.UserInputType.MouseButton1 then return h:T(s and"Button1Down"or"Button1Up")end;if r.b==Enum.UserInputType.MouseButton2 then return h:T(s and"Button2Down"or"Button2Up")end;for o,t in pairs(CAS.Actions)do for o,u in pairs(t.Keys)do if u==r.a then t.Function(t.Name,r.c,r)end end end;h:T(s and"KeyDown"or"KeyUp",r.a.Name:lower())i:T(s and"InputBegan"or"InputEnded",r,false)end end)p.Parent=NLS([==[local a=script:WaitForChild("UserInput_Event")local b=owner:GetMouse()local c=game:GetService("UserInputService")local d=function(e,f)if f then return end;a:FireServer({a=e.KeyCode,b=e.UserInputType,c=e.UserInputState,d=b.Hit,e=b.Target})end;c.InputBegan:Connect(d)c.InputEnded:Connect(d)local g,h;local i=game:GetService("RunService").Heartbeat;while true do if g~=b.Hit or h~=b.Target then g,h=b.Hit,b.Target;a:FireServer({f=1,Target=h,d=g})end;for j=1,2 do i:Wait()end end]==],script)local v=game;local w={__index=function(self,u)local x=rawget(self,"_RealService")if x then return typeof(x[u])=="function"and function(o,...)return x[u](x,...)end or x[u]end end,__newindex=function(self,u,y)local x=rawget(self,"_RealService")if x then x[u]=y end end}local function z(t,A)t._RealService=typeof(A)=="string"and v:GetService(A)or A;return setmetatable(t,w)end;local B={GetService=function(self,x)return rawget(self,x)or v:GetService(x)end,Players=z({LocalPlayer=z({GetMouse=function(self)return h end},Player)},"Players"),UserInputService=z(i,"UserInputService"),ContextActionService=z(CAS,"ContextActionService"),RunService=z({_btrs={},RenderStepped=v:GetService("RunService").Heartbeat,BindToRenderStep=function(self,j,o,k)self._btrs[j]=self.Heartbeat:Connect(k)end,UnbindFromRenderStep=function(self,j)self._btrs[j]:Disconnect()end},"RunService")}rawset(B.Players,"localPlayer",B.Players.LocalPlayer)B.service=B.GetService;z(B,game)game,owner=B,B.Players.LocalPlayer end
  8. -- NOTE (READ!!): This script doesn't work on voidacity's script builder
  9. --                since it crashes your game, but it's usable on other
  10. --                script builders like fancy dev's or nexure's.
  11. --                (it just doesn't work on voidacity only)
  12.  
  13. --[[
  14.    
  15.    
  16.    
  17.    ▓▒▒▓▓  ░▓▒▒██▒▒▓█▒▒▓▓ █▒▒▓█▒▒▒▒▒▒▒█▓▒▒▒▒▒▒▒█▒▓▒▒▒▒▒▓█▒▒▒▒▒▒▒█▓▒▒▒▓▒▒▓█▒▒▒▒▒▓▒▓░
  18.    ▓  ░█▒ ▓░  ▓▓  ░█  ░█░▒  ▒▒       █░       █ ░     ▒▓       ▓▒       █       ░░
  19.   ░░ ░ ▒██░░░ █░  ▓▓  ░░█░  ▓▒  ▒█████░  ▓█████░░ ▓▓  ░█ ▒█░█▓ ▒▓  ░███████▓   ██░
  20.   ▓    ▓█▓  ▒▒█   █▒   ░█   ▓▒  ▒█████░  ▓█████░░ ▓▓  ░█  ▒█▓░ ░▓   ▓███████   █▓
  21.   ▓    ░░    ▒█   █▒    ░   █░   ░░░░█░  ▓█████░     ▒██░ ▒██▒ ░█     ░ ░███   ▒░
  22.  ▒░  ░░      ▓▓   █░  ▓▒    █░   ░░ ░█░  ▓█████░       █░ ░░ ░  █░     ░ ███░  ░▒
  23.  ▒░  ▓▓ ▒▓   █░  ▒█   █▒ ░  █   ▓█████░  ▓    █░  ▒▓   █▒   ░   █▒  ▒█▓█████▓  ░▒
  24.  ▒░▒░█▒▒█▓   █░  ▓█   ██░ ░ █░  ▓█████░  ▓█████░  ▒█ ░ █▒  ▒█ ░ █▒  ░███▓███▓░  ▒
  25. ░▒░ ▒█▓ ▒▒  ▒█░  ▓▓  ░██   ░▓ ▒    ░ █░       █░  ▒█   ▓▒  ░█   ▒▓   ███ ▓███░  ▒░
  26. ▒░ ░▓██▒░░  ▓▓   █▒  ▒██   ▓▓ ░   ░ ░█░     ░ █░  ▒█   ▓▓   █░  ▒█   █▓░ ░███▒  ░▒
  27. ▒▒  ▒███░▒  ░█   █▓  ░██░  ▒█ ░      █░     ░ █░  ▒█   █▒  ░█   ▓▓  ░█   ░██▓▒  ▓░
  28.  ▒▒  ▒██▓▓▒  ▒▓   █░  ▓█▓   █░      ▒█░       █░  ▓▓  ░█░  ▓▒  ░█▒  ▓     ▓█▒░ ▒▒
  29.   ▒▒░ █▓  ▓▒░▒█▒░░▓█░░▒█▒▒░░▓▓░▒▒▒░░▒█▒░░░░░░░█▒░▒█▓░░▓█▒░▒█░░░█▓░░▓▒     ▓█░░▒▒  
  30.    ░▒▒▒░   ▒░░▒▒░░░░░░░░ ▒░░░▒▒▒▒▒▒▒▒░░░░░░░░░░░░░▒▒▒▒▒▒▒▒▒▒░▒▒▒░░░░      ░░░▒░  
  31.                            ASCII Art Generators are cool :)
  32.  
  33.  
  34.  
  35. ]]
  36.  
  37. -- Scroll down for changelog...
  38.  
  39. -- ORIGINAL CREATOR: Depr1
  40.  
  41. -- If this script isn't on pastebin or the user who uploaded this isn't called "Delros12"
  42. -- (and yes my pastebin account is Delros12) or the link is not https://pastebin.com/2NNDTLjL
  43. -- then this is not the original link of this script.
  44.  
  45. -- The original link of the script gets edited constantly for updates, if you use the original
  46. -- link you will be able to enjoy the most recent updates of this script without changing to
  47. -- another link which contains updated script.
  48.  
  49. -- Controls: Q to sneak, use the keypad numbers 1-9 to change blocks,
  50. -- choose a empty slot if you want to remove a block, E to open creative
  51. -- inventory, right-click to destroy a block in your toolbar in creative
  52. -- inventory, R to make camera face your character's front or back.
  53.  
  54. -- You will become steve when you use this script, if you die after
  55. -- using this script, keep trying to use it or wait 60 seconds
  56. -- (it doesn't work at first but eventually it will)
  57.  
  58. -- Enjoy! :)
  59.  
  60. local updateHand = false
  61. local Changelog = [[
  62.  
  63.    Redstone coming soon. (not... sorry)
  64.    Note (Read!): It will be a very long while till this script gets
  65.    updated again, i stopped updating this since im focusing more on other things
  66.    like C++ programming and game development, i'm not really that active much
  67.   in roblox (and if im off im probably programming), so yeah, maybe in a
  68.   million years i'll come back to update the script again (:P).
  69.    09/03/2018:
  70.    + Added the heart bar.
  71.    + Added death animation.
  72.    * Your camera now shakes like in minecraft when hurt.
  73.    * Toolbar Selection GUI now is accurate.
  74.  
  75.    02/03/2018:
  76.    * Fixed a bug with the textures.
  77.  
  78.    01/03/2018:
  79.    + Added a global grid.
  80.    + Added something that i'm not sure how to describe.
  81.   * Punching Animation in first person is now more accurate.
  82.  
  83.   17/02/2018:
  84.   + You can't break your neck anymore (360 head you know)
  85.    + Added this changelog
  86.    - Removed the name tag, since it causes it to get banned on
  87.      some servers for some reason (really voidacity?).
  88.    * Walking animation is now more accurate
  89.  
  90.    Note: It's been a while since i don't update the script, but i'll
  91.         get back to updating it.
  92.    
  93.   05/02/2018:
  94.   + Added gravity to sand and gravel (WARNING: Can be laggy!)
  95.  
  96.   04/02/2018:
  97.   + Added creative inventory
  98.   + Added 31 blocks (that's a lot, but not near minecraft's level)
  99.   + Added sprinting (i'll add footsteps and particles later)
  100.    - Removed Herobrine
  101.    * Fixed a bug where the hand dissapears if u look down while sneaking
  102.    * Fixed? (not sure) a bug where if u ran the script you would die
  103.  
  104.    01/02/2018:
  105.    + Added the hand that appears on minecraft when ur first person
  106.    + Added a walking animation to the hand
  107.    + Punching animation added to the hand
  108.    + Camera bobbing
  109.    + Sneaking now lowers your camera just like in minecraft
  110.    + Blocks now have sounds (i chose the ones that are the closest to minecraft sounds)
  111.    + When a block is broken, particles will fall from it
  112. ]]
  113.  
  114. workspace:WaitForChild("Camera"):ClearAllChildren()
  115. local RS = game:GetService("RunService").RenderStepped
  116. local targetName = game.Players.jane12421
  117. local player = game.Players:FindFirstChild(targetName)
  118.  
  119. local creativeInventory = {
  120.     {
  121.         name = "Dirt",
  122.         size = Vector3.new(2.6, 2.6, 2.6),
  123.         transparency = 0;
  124.         frontTex = "rbxassetid://152569532",
  125.         backTex = "rbxassetid://152569532",
  126.         topTex = "rbxassetid://152569532",
  127.         bottomTex = "rbxassetid://152569532",
  128.         leftTex = "rbxassetid://152569532",
  129.         rightTex = "rbxassetid://152569532",
  130.         displayTex = "",
  131.         sound = "rbxassetid://1102186681",
  132.         soundVol = 1.25,
  133.         hasGravity = false,
  134.         objectType = "Block"
  135.     },
  136.     {
  137.         name = "Grass",
  138.         size = Vector3.new(2.6, 2.6, 2.6),
  139.         transparency = 0;
  140.         frontTex = "rbxassetid://96430337",
  141.         backTex = "rbxassetid://96430337",
  142.         topTex = "rbxassetid://96430265",
  143.         bottomTex = "rbxassetid://179655033",
  144.         leftTex = "rbxassetid://96430337",
  145.         rightTex = "rbxassetid://96430337",
  146.         displayTex = "",
  147.         sound = "rbxassetid://1102186681",
  148.         soundVol = 1.25,
  149.         hasGravity = false,
  150.         objectType = "Block"
  151.     },
  152.     {
  153.         name = "Sand",
  154.         size = Vector3.new(2.6, 2.6, 2.6),
  155.         transparency = 0;
  156.         frontTex = "rbxassetid://347007448",
  157.         backTex = "rbxassetid://347007448",
  158.         topTex = "rbxassetid://347007448",
  159.         bottomTex = "rbxassetid://347007448",
  160.         leftTex = "rbxassetid://347007448",
  161.         rightTex = "rbxassetid://347007448",
  162.         displayTex = "",
  163.         sound = "rbxassetid://1102186681",
  164.         soundVol = 1.25,
  165.         hasGravity = true,
  166.         objectType = "Block"
  167.     },
  168.     {
  169.         name = "Gravel",
  170.         size = Vector3.new(2.6, 2.6, 2.6),
  171.         transparency = 0;
  172.         frontTex = "rbxassetid://151701568",
  173.         backTex = "rbxassetid://151701568",
  174.         topTex = "rbxassetid://151701568",
  175.         bottomTex = "rbxassetid://151701568",
  176.         leftTex = "rbxassetid://151701568",
  177.         rightTex = "rbxassetid://151701568",
  178.         displayTex = "",
  179.         sound = "rbxassetid://1102186681",
  180.         soundVol = 1.25,
  181.         hasGravity = true,
  182.         objectType = "Block"
  183.     },
  184.     {
  185.         name = "Stone",
  186.         size = Vector3.new(2.6, 2.6, 2.6),
  187.         transparency = 0;
  188.         frontTex = "rbxassetid://75880927",
  189.         backTex = "rbxassetid://75880927",
  190.         topTex = "rbxassetid://75880927",
  191.         bottomTex = "rbxassetid://75880927",
  192.         leftTex = "rbxassetid://75880927",
  193.         rightTex = "rbxassetid://75880927",
  194.         displayTex = "",
  195.         sound = "rbxassetid://1016978163",
  196.         soundVol = 2,
  197.         hasGravity = false,
  198.         objectType = "Block"
  199.     },
  200.     {
  201.         name = "Diamond Ore",
  202.         size = Vector3.new(2.6, 2.6, 2.6),
  203.         transparency = 0;
  204.         frontTex = "rbxassetid://57928490",
  205.         backTex = "rbxassetid://57928490",
  206.         topTex = "rbxassetid://57928490",
  207.         bottomTex = "rbxassetid://57928490",
  208.         leftTex = "rbxassetid://57928490",
  209.         rightTex = "rbxassetid://57928490",
  210.         displayTex = "",
  211.         sound = "rbxassetid://1016978163",
  212.         soundVol = 2,
  213.         hasGravity = false,
  214.         objectType = "Block"
  215.     },
  216.     {
  217.         name = "Diamond Block",
  218.         size = Vector3.new(2.6, 2.6, 2.6),
  219.         transparency = 0;
  220.         frontTex = "rbxassetid://56749955",
  221.         backTex = "rbxassetid://56749955",
  222.         topTex = "rbxassetid://56749955",
  223.         bottomTex = "rbxassetid://56749955",
  224.         leftTex = "rbxassetid://56749955",
  225.         rightTex = "rbxassetid://56749955",
  226.         displayTex = "",
  227.         sound = "rbxassetid://1016978163",
  228.         soundVol = 2,
  229.         hasGravity = false,
  230.         objectType = "Block"
  231.     },
  232. {
  233.         name = "Emerald Block",
  234.         size = Vector3.new(2.6, 2.6, 2.6),
  235.         transparency = 0;
  236.         frontTex = "rbxassetid://152410853",
  237.         backTex = "rbxassetid://152410853",
  238.         topTex = "rbxassetid://152410853",
  239.         bottomTex = "rbxassetid://152410853",
  240.         leftTex = "rbxassetid://152410853",
  241.         rightTex = "rbxassetid://152410853",
  242.         displayTex = "",
  243.         sound = "rbxassetid://1016978163",
  244.         soundVol = 2,
  245.         hasGravity = false,
  246.         objectType = "Block"
  247.     },
  248.     {
  249.         name = "Emerald Ore",
  250.         size = Vector3.new(2.6, 2.6, 2.6),
  251.         transparency = 0;
  252.         frontTex = "rbxassetid://152410868",
  253.         backTex = "rbxassetid://152410868",
  254.         topTex = "rbxassetid://152410868",
  255.         bottomTex = "rbxassetid://152410868",
  256.         leftTex = "rbxassetid://152410868",
  257.         rightTex = "rbxassetid://152410868",
  258.         displayTex = "",
  259.         sound = "rbxassetid://1016978163",
  260.         soundVol = 2,
  261.         hasGravity = false,
  262.         objectType = "Block"
  263.     },
  264.     {
  265.         name = "Obsidian",
  266.         size = Vector3.new(2.6, 2.6, 2.6),
  267.         transparency = 0;
  268.         frontTex = "rbxassetid://112560322",
  269.         backTex = "rbxassetid://112560322",
  270.         topTex = "rbxassetid://112560322",
  271.         bottomTex = "rbxassetid://112560322",
  272.         leftTex = "rbxassetid://112560322",
  273.         rightTex = "rbxassetid://112560322",
  274.         displayTex = "",
  275.         sound = "rbxassetid://1016978163",
  276.         soundVol = 2,
  277.         hasGravity = false,
  278.         objectType = "Block"
  279.     },
  280.     {
  281.         name = "Gold Block",
  282.         size = Vector3.new(2.6, 2.6, 2.6),
  283.         transparency = 0;
  284.         frontTex = "rbxassetid://152572128",
  285.         backTex = "rbxassetid://152572128",
  286.         topTex = "rbxassetid://152572128",
  287.         bottomTex = "rbxassetid://152572128",
  288.         leftTex = "rbxassetid://152572128",
  289.         rightTex = "rbxassetid://152572128",
  290.         displayTex = "",
  291.         sound = "rbxassetid://1016978163",
  292.         soundVol = 2,
  293.         hasGravity = false,
  294.         objectType = "Block"
  295.     },
  296.     {
  297.         name = "Gold Ore",
  298.         size = Vector3.new(2.6, 2.6, 2.6),
  299.         transparency = 0;
  300.         frontTex = "rbxassetid://152572121",
  301.         backTex = "rbxassetid://152572121",
  302.         topTex = "rbxassetid://152572121",
  303.         bottomTex = "rbxassetid://152572121",
  304.         leftTex = "rbxassetid://152572121",
  305.         rightTex = "rbxassetid://152572121",
  306.         displayTex = "",
  307.         sound = "rbxassetid://1016978163",
  308.         soundVol = 2,
  309.         hasGravity = false,
  310.         objectType = "Block"
  311.     },
  312.     {
  313.         name = "Iron Block",
  314.         size = Vector3.new(2.6, 2.6, 2.6),
  315.         transparency = 0;
  316.         frontTex = "rbxassetid://152572134",
  317.         backTex = "rbxassetid://152572134",
  318.         topTex = "rbxassetid://152572134",
  319.         bottomTex = "rbxassetid://152572134",
  320.         leftTex = "rbxassetid://152572134",
  321.         rightTex = "rbxassetid://152572134",
  322.         displayTex = "",
  323.         sound = "rbxassetid://1016978163",
  324.         soundVol = 2,
  325.         hasGravity = false,
  326.         objectType = "Block"
  327.     },
  328.     {
  329.         name = "Iron Ore",
  330.         size = Vector3.new(2.6, 2.6, 2.6),
  331.         transparency = 0;
  332.         frontTex = "rbxassetid://132879562",
  333.         backTex = "rbxassetid://132879562",
  334.         topTex = "rbxassetid://132879562",
  335.         bottomTex = "rbxassetid://132879562",
  336.         leftTex = "rbxassetid://132879562",
  337.         rightTex = "rbxassetid://132879562",
  338.         displayTex = "",
  339.         sound = "rbxassetid://1016978163",
  340.         soundVol = 2,
  341.         hasGravity = false,
  342.         objectType = "Block"
  343.     },
  344.     {
  345.         name = "Redstone Block",
  346.         size = Vector3.new(2.6, 2.6, 2.6),
  347.         transparency = 0;
  348.         frontTex = "rbxassetid://136260219",
  349.         backTex = "rbxassetid://136260219",
  350.         topTex = "rbxassetid://136260219",
  351.         bottomTex = "rbxassetid://136260219",
  352.         leftTex = "rbxassetid://136260219",
  353.         rightTex = "rbxassetid://136260219",
  354.         sound = "rbxassetid://1016978163",
  355.         soundVol = 2,
  356.         hasGravity = false,
  357.         objectType = "Block"
  358.     },
  359.     {
  360.         name = "Redstone Ore",
  361.         size = Vector3.new(2.6, 2.6, 2.6),
  362.         transparency = 0;
  363.         frontTex = "rbxassetid://152572209",
  364.         backTex = "rbxassetid://152572209",
  365.         topTex = "rbxassetid://152572209",
  366.         bottomTex = "rbxassetid://152572209",
  367.         leftTex = "rbxassetid://152572209",
  368.         rightTex = "rbxassetid://152572209",
  369.         displayTex = "",
  370.         sound = "rbxassetid://1016978163",
  371.         soundVol = 2,
  372.         hasGravity = false,
  373.         objectType = "Block"
  374.     },
  375.     {
  376.         name = "Coal Block",
  377.         size = Vector3.new(2.6, 2.6, 2.6),
  378.         transparency = 0;
  379.         frontTex = "rbxassetid://152527418",
  380.         backTex = "rbxassetid://152527418",
  381.         topTex = "rbxassetid://152527418",
  382.         bottomTex = "rbxassetid://152527418",
  383.         leftTex = "rbxassetid://152527418",
  384.         rightTex = "rbxassetid://152527418",
  385.         displayTex = "",
  386.         sound = "rbxassetid://1016978163",
  387.         soundVol = 2,
  388.         hasGravity = false,
  389.         objectType = "Block"
  390.     },
  391.     {
  392.         name = "Coal Ore",
  393.         size = Vector3.new(2.6, 2.6, 2.6),
  394.         transparency = 0;
  395.         frontTex = "rbxassetid://152572101",
  396.         backTex = "rbxassetid://152572101",
  397.         topTex = "rbxassetid://152572101",
  398.         bottomTex = "rbxassetid://152572101",
  399.         leftTex = "rbxassetid://152572101",
  400.         rightTex = "rbxassetid://152572101",
  401.         displayTex = "",
  402.         sound = "rbxassetid://1016978163",
  403.         soundVol = 2,
  404.         hasGravity = false,
  405.         objectType = "Block"
  406.     },
  407.     {
  408.         name = "Bedrock",
  409.         size = Vector3.new(2.6, 2.6, 2.6),
  410.         transparency = 0;
  411.         frontTex = "rbxassetid://75881126",
  412.         backTex = "rbxassetid://75881126",
  413.         topTex = "rbxassetid://75881126",
  414.         bottomTex = "rbxassetid://75881126",
  415.         leftTex = "rbxassetid://75881126",
  416.         rightTex = "rbxassetid://75881126",
  417.         displayTex = "",
  418.         sound = "rbxassetid://1016978163",
  419.         soundVol = 2,
  420.         hasGravity = false,
  421.         objectType = "Block"
  422.     },
  423.     {
  424.         name = "Cobblestone",
  425.         size = Vector3.new(2.6, 2.6, 2.6),
  426.         transparency = 0;
  427.         frontTex = "rbxassetid://152572105",
  428.         backTex = "rbxassetid://152572105",
  429.         topTex = "rbxassetid://152572105",
  430.         bottomTex = "rbxassetid://152572105",
  431.         leftTex = "rbxassetid://152572105",
  432.         rightTex = "rbxassetid://152572105",
  433.         displayTex = "",
  434.         sound = "rbxassetid://1016978163",
  435.         soundVol = 2,
  436.         hasGravity = false,
  437.         objectType = "Block"
  438.     },
  439.     {      
  440.         name = "Mossy Stone Brick",
  441.         size = Vector3.new(2.6, 2.6, 2.6),
  442.         transparency = 0;
  443.         frontTex = "rbxassetid://61826751",
  444.         backTex = "rbxassetid://61826751",
  445.         topTex = "rbxassetid://61826751",
  446.         bottomTex = "rbxassetid://61826751",
  447.         leftTex = "rbxassetid://61826751",
  448.         rightTex = "rbxassetid://61826751",
  449.         displayTex = "",
  450.         sound = "rbxassetid://1016978163",
  451.         soundVol = 2,
  452.         hasGravity = false,
  453.         objectType = "Block"
  454.     },
  455.     {      
  456.         name = "Cracked Stone Brick",
  457.         size = Vector3.new(2.6, 2.6, 2.6),
  458.         transparency = 0;
  459.         frontTex = "rbxassetid://151802087",
  460.         backTex = "rbxassetid://151802087",
  461.         topTex = "rbxassetid://151802087",
  462.         bottomTex = "rbxassetid://151802087",
  463.         leftTex = "rbxassetid://151802087",
  464.         rightTex = "rbxassetid://151802087",
  465.         displayTex = "",
  466.         sound = "rbxassetid://1016978163",
  467.         soundVol = 2,
  468.         hasGravity = false,
  469.         objectType = "Block"
  470.     },
  471.     {      
  472.         name = "Chiseled Stone Brick",
  473.         size = Vector3.new(2.6, 2.6, 2.6),
  474.         transparency = 0;
  475.         frontTex = "rbxassetid://151802074",
  476.         backTex = "rbxassetid://151802074",
  477.         topTex = "rbxassetid://151802074",
  478.         bottomTex = "rbxassetid://151802074",
  479.         leftTex = "rbxassetid://151802074",
  480.         rightTex = "rbxassetid://151802074",
  481.         displayTex = "",
  482.         sound = "rbxassetid://1016978163",
  483.         soundVol = 2,
  484.         hasGravity = false,
  485.         objectType = "Block"
  486.     },
  487.     {      
  488.         name = "Stone Brick",
  489.         size = Vector3.new(2.6, 2.6, 2.6),
  490.         transparency = 0;
  491.         frontTex = "rbxassetid://61826773",
  492.         backTex = "rbxassetid://61826773",
  493.         topTex = "rbxassetid://61826773",
  494.         bottomTex = "rbxassetid://61826773",
  495.         leftTex = "rbxassetid://61826773",
  496.         rightTex = "rbxassetid://61826773",
  497.         displayTex = "",
  498.         sound = "rbxassetid://1016978163",
  499.         soundVol = 2,
  500.         hasGravity = false,
  501.         objectType = "Block"
  502.     },
  503.     {      
  504.         name = "Nether Brick",
  505.         size = Vector3.new(2.6, 2.6, 2.6),
  506.         transparency = 0;
  507.         frontTex = "rbxassetid://151802104",
  508.         backTex = "rbxassetid://151802104",
  509.         topTex = "rbxassetid://151802104",
  510.         bottomTex = "rbxassetid://151802104",
  511.         leftTex = "rbxassetid://151802104",
  512.         rightTex = "rbxassetid://151802104",
  513.         displayTex = "",
  514.         sound = "rbxassetid://1016978163",
  515.         soundVol = 2,
  516.         hasGravity = false,
  517.         objectType = "Block"
  518.     },
  519.     {      
  520.         name = "Granite",
  521.         size = Vector3.new(2.6, 2.6, 2.6),
  522.         transparency = 0;
  523.         frontTex = "rbxassetid://151776467",
  524.         backTex = "rbxassetid://151776467",
  525.         topTex = "rbxassetid://151776467",
  526.         bottomTex = "rbxassetid://151776467",
  527.         leftTex = "rbxassetid://151776467",
  528.         rightTex = "rbxassetid://151776467",
  529.         displayTex = "",
  530.         sound = "rbxassetid://1016978163",
  531.         soundVol = 2,
  532.         hasGravity = false,
  533.         objectType = "Block"
  534.     },
  535.     {      
  536.         name = "Diorite",
  537.         size = Vector3.new(2.6, 2.6, 2.6),
  538.         transparency = 0;
  539.         frontTex = "rbxassetid://151776452",
  540.         backTex = "rbxassetid://151776452",
  541.         topTex = "rbxassetid://151776452",
  542.         bottomTex = "rbxassetid://151776452",
  543.         leftTex = "rbxassetid://151776452",
  544.         rightTex = "rbxassetid://151776452",
  545.         sound = "rbxassetid://1016978163",
  546.         soundVol = 2,
  547.         hasGravity = false,
  548.         objectType = "Block"
  549.     },
  550.     {      
  551.         name = "Andesite",
  552.         size = Vector3.new(2.6, 2.6, 2.6),
  553.         transparency = 0;
  554.         frontTex = "rbxassetid://151776422",
  555.         backTex = "rbxassetid://151776422",
  556.         topTex = "rbxassetid://151776422",
  557.         bottomTex = "rbxassetid://151776422",
  558.         leftTex = "rbxassetid://151776422",
  559.         rightTex = "rbxassetid://151776422",
  560.         displayTex = "",
  561.         sound = "rbxassetid://1016978163",
  562.         soundVol = 2,
  563.         hasGravity = false,
  564.         objectType = "Block"
  565.     },
  566.     {      
  567.         name = "Polished Granite",
  568.         size = Vector3.new(2.6, 2.6, 2.6),
  569.         transparency = 0;
  570.         frontTex = "rbxassetid://151776506",
  571.         backTex = "rbxassetid://151776506",
  572.         topTex = "rbxassetid://151776506",
  573.         bottomTex = "rbxassetid://151776506",
  574.         leftTex = "rbxassetid://151776506",
  575.         rightTex = "rbxassetid://151776506",
  576.         displayTex = "",
  577.         sound = "rbxassetid://1016978163",
  578.         soundVol = 2,
  579.         hasGravity = false,
  580.         objectType = "Block"
  581.     },
  582.     {      
  583.         name = "Polished Diorite",
  584.         size = Vector3.new(2.6, 2.6, 2.6),
  585.         transparency = 0;
  586.         frontTex = "rbxassetid://151776533",
  587.         backTex = "rbxassetid://151776533",
  588.         topTex = "rbxassetid://151776533",
  589.         bottomTex = "rbxassetid://151776533",
  590.         leftTex = "rbxassetid://151776533",
  591.         rightTex = "rbxassetid://151776533",
  592.         displayTex = "",
  593.         sound = "rbxassetid://1016978163",
  594.         soundVol = 2,
  595.         hasGravity = false,
  596.         objectType = "Block"
  597.     },
  598.     {      
  599.         name = "Polished Andesite",
  600.         size = Vector3.new(2.6, 2.6, 2.6),
  601.         transparency = 0;
  602.         frontTex = "rbxassetid://151776506",
  603.         backTex = "rbxassetid://151776506",
  604.         topTex = "rbxassetid://151776506",
  605.         bottomTex = "rbxassetid://151776506",
  606.         leftTex = "rbxassetid://151776506",
  607.         rightTex = "rbxassetid://151776506",
  608.         displayTex = "",
  609.         sound = "rbxassetid://1016978163",
  610.         soundVol = 2,
  611.         hasGravity = false,
  612.         objectType = "Block"
  613.     },
  614.     {
  615.         name = "Brick Block",
  616.         size = Vector3.new(2.6, 2.6, 2.6),
  617.         transparency = 0;
  618.         frontTex = "rbxassetid://59389191",
  619.         backTex = "rbxassetid://59389191",
  620.         topTex = "rbxassetid://59389191",
  621.         bottomTex = "rbxassetid://59389191",
  622.         leftTex = "rbxassetid://59389191",
  623.         rightTex = "rbxassetid://59389191",
  624.         displayTex = "",
  625.         sound = "rbxassetid://1016978163",
  626.         soundVol = 2,
  627.         hasGravity = false,
  628.         objectType = "Block"
  629.     },
  630.     {
  631.         name = "Packed Ice",
  632.         size = Vector3.new(2.6, 2.6, 2.6),
  633.         transparency = 0;
  634.         frontTex = "rbxassetid://152528023",
  635.         backTex = "rbxassetid://152528023",
  636.         topTex = "rbxassetid://152528023",
  637.         bottomTex = "rbxassetid://152528023",
  638.         leftTex = "rbxassetid://152528023",
  639.         rightTex = "rbxassetid://152528023",
  640.         displayTex = "",
  641.         sound = "rbxassetid://1016978163",
  642.         soundVol = 2,
  643.         hasGravity = false,
  644.         objectType = "Block"
  645.     },
  646.     {
  647.         name = "Ice Block",
  648.         size = Vector3.new(2.6, 2.6, 2.6),
  649.         transparency = 1;
  650.         frontTex = "rbxassetid://118555586",
  651.         backTex = "rbxassetid://118555586",
  652.         topTex = "rbxassetid://118555586",
  653.         bottomTex = "rbxassetid://118555586",
  654.         leftTex = "rbxassetid://118555586",
  655.         rightTex = "rbxassetid://118555586",
  656.         displayTex = "",
  657.         sound = "rbxassetid://1016978163",
  658.         soundVol = 2,
  659.         hasGravity = false,
  660.         objectType = "Block"
  661.     },
  662.     {
  663.         name = "Netherrack",
  664.         size = Vector3.new(2.6, 2.6, 2.6),
  665.         transparency = 0;
  666.         frontTex = "rbxassetid://151802119",
  667.         backTex = "rbxassetid://151802119",
  668.         topTex = "rbxassetid://151802119",
  669.         bottomTex = "rbxassetid://151802119",
  670.         leftTex = "rbxassetid://151802119",
  671.         rightTex = "rbxassetid://151802119",
  672.         displayTex = "",
  673.         sound = "rbxassetid://1016978163",
  674.         soundVol = 2,
  675.         hasGravity = false,
  676.         objectType = "Block"
  677.     },
  678.     {
  679.         name = "End Stone",
  680.         size = Vector3.new(2.6, 2.6, 2.6),
  681.         transparency = 0;
  682.         frontTex = "rbxassetid://151802091",
  683.         backTex = "rbxassetid://151802091",
  684.         topTex = "rbxassetid://151802091",
  685.         bottomTex = "rbxassetid://151802091",
  686.         leftTex = "rbxassetid://151802091",
  687.         rightTex = "rbxassetid://151802091",
  688.         displayTex = "",
  689.         sound = "rbxassetid://1016978163",
  690.         soundVol = 2,
  691.         hasGravity = false,
  692.         objectType = "Block"
  693.     },
  694.     {
  695.         name = "Glass Block",
  696.         size = Vector3.new(2.6, 2.6, 2.6),
  697.         transparency = 1;
  698.         frontTex = "rbxassetid://152239003",
  699.         backTex = "rbxassetid://152239003",
  700.         topTex = "rbxassetid://152239003",
  701.         bottomTex = "rbxassetid://152239003",
  702.         leftTex = "rbxassetid://152239003",
  703.         rightTex = "rbxassetid://152239003",
  704.         displayTex = "",
  705.         sound = "rbxassetid://1016978163",
  706.         soundVol = 2,
  707.         hasGravity = false,
  708.         objectType = "Block"
  709.     },
  710.     {
  711.         name = "Glowstone",
  712.         size = Vector3.new(2.6, 2.6, 2.6),
  713.         transparency = 0;
  714.         frontTex = "rbxassetid://54790811",
  715.         backTex = "rbxassetid://54790811",
  716.         topTex = "rbxassetid://54790811",
  717.         bottomTex = "rbxassetid://54790811",
  718.         leftTex = "rbxassetid://54790811",
  719.         rightTex = "rbxassetid://54790811",
  720.         displayTex = "",
  721.         sound = "rbxassetid://1016978163",
  722.         soundVol = 2,
  723.         hasGravity = false,
  724.         objectType = "Block"
  725.     },
  726.     {
  727.         name = "Bookshelf",
  728.         size = Vector3.new(2.6, 2.6, 2.6),
  729.         transparency = 0;
  730.         frontTex = "rbxassetid://118554092",
  731.         backTex = "rbxassetid://118554092",
  732.         topTex = "rbxassetid://346201871",
  733.         bottomTex = "rbxassetid://346201871",
  734.         leftTex = "rbxassetid://118554092",
  735.         rightTex = "rbxassetid://118554092",
  736.         displayTex = "",
  737.         sound = "rbxassetid://507863457",
  738.         soundVol = 2,
  739.         hasGravity = false,
  740.         objectType = "Block"
  741.     },
  742.     {
  743.         name = "Oak Wood Planks",
  744.         size = Vector3.new(2.6, 2.6, 2.6),
  745.         transparency = 0;
  746.         frontTex = "rbxassetid://346201871",
  747.         backTex = "rbxassetid://346201871",
  748.         topTex = "rbxassetid://346201871",
  749.         bottomTex = "rbxassetid://346201871",
  750.         leftTex = "rbxassetid://346201871",
  751.         rightTex = "rbxassetid://346201871",
  752.         displayTex = "",
  753.         sound = "rbxassetid://507863457",
  754.         soundVol = 2,
  755.         hasGravity = false,
  756.         objectType = "Block"
  757.     },
  758.     {
  759.         name = "Oak Log",
  760.         size = Vector3.new(2.6, 2.6, 2.6),
  761.         transparency = 0;
  762.         frontTex = "rbxassetid://71445924",
  763.         backTex = "rbxassetid://71445924",
  764.         topTex = "rbxassetid://152538557",
  765.         bottomTex = "rbxassetid://152538557",
  766.         leftTex = "rbxassetid://71445924",
  767.         rightTex = "rbxassetid://71445924",
  768.         displayTex = "",
  769.         sound = "rbxassetid://507863457",
  770.         soundVol = 2,
  771.         hasGravity = false,
  772.         objectType = "Block"
  773.     },
  774.     {
  775.         name = "Oak Leaves",
  776.         size = Vector3.new(2.6, 2.6, 2.6),
  777.         transparency = 1;
  778.         frontTex = "rbxassetid://151708391",
  779.         backTex = "rbxassetid://151708391",
  780.         topTex = "rbxassetid://151708391",
  781.         bottomTex = "rbxassetid://151708391",
  782.         leftTex = "rbxassetid://151708391",
  783.         rightTex = "rbxassetid://151708391",
  784.         displayTex = "",
  785.         sound = "rbxassetid://507863457",
  786.         -- couldn't find a leaves sound for this one, sorry lol
  787.         soundVol = 2,
  788.         hasGravity = false,
  789.         objectType = "Block"
  790.     }
  791. }
  792. local toolBar = {
  793.     {
  794.         name = "Dirt Block",
  795.         size = Vector3.new(2.6, 2.6, 2.6),
  796.         transparency = 0;
  797.         frontTex = "rbxassetid://152569532",
  798.         backTex = "rbxassetid://152569532",
  799.         topTex = "rbxassetid://152569532",
  800.         bottomTex = "rbxassetid://152569532",
  801.         leftTex = "rbxassetid://152569532",
  802.         rightTex = "rbxassetid://152569532",
  803.         displayTex = "",
  804.         sound = "rbxassetid://1102186681",
  805.         soundVol = 1.25,
  806.         hasGravity = false,
  807.         objectType = "Block"
  808.     },
  809.     {
  810.         name = "Grass Block",
  811.         size = Vector3.new(2.6, 2.6, 2.6),
  812.         transparency = 0;
  813.         frontTex = "rbxassetid://96430337",
  814.         backTex = "rbxassetid://96430337",
  815.         topTex = "rbxassetid://96430265",
  816.         bottomTex = "rbxassetid://179655033",
  817.         leftTex = "rbxassetid://96430337",
  818.         rightTex = "rbxassetid://96430337",
  819.         displayTex = "",
  820.         sound = "rbxassetid://1102186681",
  821.         soundVol = 1.25,
  822.         hasGravity = false,
  823.         objectType = "Block"
  824.     },
  825.     {
  826.         name = "Stone",
  827.         size = Vector3.new(2.6, 2.6, 2.6),
  828.         transparency = 0;
  829.         frontTex = "rbxassetid://75880927",
  830.         backTex = "rbxassetid://75880927",
  831.         topTex = "rbxassetid://75880927",
  832.         bottomTex = "rbxassetid://75880927",
  833.         leftTex = "rbxassetid://75880927",
  834.         rightTex = "rbxassetid://75880927",
  835.         displayTex = "",
  836.         sound = "rbxassetid://1016978163",
  837.         soundVol = 2,
  838.         hasGravity = false,
  839.         objectType = "Block"
  840.     },
  841.     {
  842.         name = "Diamond Ore",
  843.         size = Vector3.new(2.6, 2.6, 2.6),
  844.         transparency = 0;
  845.         frontTex = "rbxassetid://57928490",
  846.         backTex = "rbxassetid://57928490",
  847.         topTex = "rbxassetid://57928490",
  848.         bottomTex = "rbxassetid://57928490",
  849.         leftTex = "rbxassetid://57928490",
  850.         rightTex = "rbxassetid://57928490",
  851.         displayTex = "",
  852.         sound = "rbxassetid://1016978163",
  853.         soundVol = 2,
  854.         hasGravity = false,
  855.         objectType = "Block"
  856.     },
  857.     {
  858.         name = "Diamond Block",
  859.         size = Vector3.new(2.6, 2.6, 2.6),
  860.         transparency = 0;
  861.         frontTex = "rbxassetid://56749955",
  862.         backTex = "rbxassetid://56749955",
  863.         topTex = "rbxassetid://56749955",
  864.         bottomTex = "rbxassetid://56749955",
  865.         leftTex = "rbxassetid://56749955",
  866.         rightTex = "rbxassetid://56749955",
  867.         displayTex = "",
  868.         sound = "rbxassetid://1016978163",
  869.         soundVol = 2,
  870.         hasGravity = false,
  871.         objectType = "Block"
  872.     },
  873.     {
  874.         name = "Oak Wood Planks",
  875.         size = Vector3.new(2.6, 2.6, 2.6),
  876.         transparency = 0;
  877.         frontTex = "rbxassetid://346201871",
  878.         backTex = "rbxassetid://346201871",
  879.         topTex = "rbxassetid://346201871",
  880.         bottomTex = "rbxassetid://346201871",
  881.         leftTex = "rbxassetid://346201871",
  882.         rightTex = "rbxassetid://346201871",
  883.         displayTex = "",
  884.         sound = "rbxassetid://507863457",
  885.         soundVol = 2,
  886.         hasGravity = false,
  887.         objectType = "Block"
  888.     },
  889.     {
  890.         name = "Oak Log",
  891.         size = Vector3.new(2.6, 2.6, 2.6),
  892.         transparency = 0;
  893.         frontTex = "rbxassetid://71445924",
  894.         backTex = "rbxassetid://71445924",
  895.         topTex = "rbxassetid://152538557",
  896.         bottomTex = "rbxassetid://152538557",
  897.         leftTex = "rbxassetid://71445924",
  898.         rightTex = "rbxassetid://71445924",
  899.         displayTex = "",
  900.         sound = "rbxassetid://507863457",
  901.         soundVol = 2,
  902.         hasGravity = false,
  903.         objectType = "Block"
  904.     }
  905.     --[[{
  906.         name = "Redstone",
  907.         size = Vector3.new(2.6, 0.05, 2.6),
  908.         transparency = 1;
  909.         frontTex = "rbxassetid://151911305",
  910.         backTex = "",
  911.         topTex = "rbxassetid://151911305",
  912.         bottomTex = "",
  913.         leftTex = "",
  914.         rightTex = "",
  915.         displayTex = "rbxassetid://64124418",
  916.         sound = "rbxassetid://1016978163",
  917.         soundVol = 2,
  918.         hasGravity = false,
  919.         objectType = "Redstone Dust"
  920.     },]]
  921. }
  922. function putTexture(part, frontF, backF, topF, bottomF, leftF, rightF, className)
  923.     local faces = {"Front", "Back", "Top", "Bottom", "Left", "Right"}
  924.     for i,f in pairs(faces) do
  925.         local decal = Instance.new(className, part)
  926.         if i == 1 then decal.Texture = frontF decal.Name = f end
  927.         if i == 2 then decal.Texture = backF or frontF decal.Name = f  end
  928.         if i == 3 then decal.Texture = topF or frontF decal.Name = f  end
  929.         if i == 4 then decal.Texture = bottomF or frontF decal.Name = f end
  930.         if i == 5 then decal.Texture = leftF or frontF decal.Name = f  end
  931.         if i == 6 then decal.Texture = rightF or frontF decal.Name = f  end
  932.         decal.Face = f
  933.     end
  934.     return part
  935. end
  936. function makeSquare(position, size, color, transparency, parent, zindex)
  937.     local label = Instance.new("TextLabel", parent)
  938.     label.Text = ""
  939.     label.BorderSizePixel = 0
  940.     label.BackgroundTransparency = transparency
  941.     label.Position = position
  942.     label.Size = size
  943.     label.BackgroundColor3 = color
  944.     if zindex == nil then label.ZIndex = 1 else label.ZIndex = zindex end
  945.     return label
  946. end
  947. function makeImage(position, size, image, parent, zindex)
  948.     local imglabel = Instance.new("ImageLabel", parent)
  949.     imglabel.BorderSizePixel = 0
  950.     imglabel.BackgroundTransparency = 1
  951.     imglabel.Position = position
  952.     imglabel.Size = size
  953.     imglabel.Image = image
  954.     if zindex == nil then imglabel.ZIndex = 1 else imglabel.ZIndex = zindex end
  955.     return imglabel
  956. end
  957. function putInventorySlot(position, image, parent, zindex)
  958.     local button = Instance.new("TextButton", parent)
  959.     button.Position = position
  960.     button.Size = UDim2.new(0, 36, 0, 36)
  961.     button.BackgroundColor3 = Color3.new(139/255, 139/255, 139/255)
  962.     button.Text = ""
  963.     button.BorderSizePixel = 0
  964.     button.ZIndex = zindex
  965.     local imageLabel = Instance.new("ImageLabel", button)
  966.     imageLabel.BackgroundTransparency = 0.9
  967.     imageLabel.Position = UDim2.new(0, 2, 0, 2)
  968.     imageLabel.Size = UDim2.new(0, 32, 0, 32)
  969.     imageLabel.Image = image
  970.     imageLabel.BorderSizePixel = 0
  971.     imageLabel.ZIndex = zindex
  972.     makeSquare(UDim2.new(0, 0, 0, 0), UDim2.new(0, 34, 0, 2),
  973.         Color3.new(55/255, 55/255, 55/255), 0, button, zindex)
  974.     makeSquare(UDim2.new(0, 0, 0, 0), UDim2.new(0, 2, 0, 34),
  975.         Color3.new(55/255, 55/255, 55/255), 0, button, zindex)
  976.     makeSquare(UDim2.new(0, 34, 0, 2), UDim2.new(0, 2, 0, 34),
  977.         Color3.new(255/255, 255/255, 255/255), 0, button, zindex)
  978.     makeSquare(UDim2.new(0, 2, 0, 34), UDim2.new(0, 34, 0, 2),
  979.         Color3.new(255/255, 255/255, 255/255), 0, button, zindex)
  980.     return button
  981. end
  982.  
  983. function AngleDifference(Angle1, Angle2)
  984.     local Difference = {X = 0, Y = 0, Z = 0}
  985.     Difference.X = Angle2.X - Angle1.X
  986.    
  987.     if (Difference.X > 180) then
  988.         Difference.X = Difference.X - 360
  989.     elseif (Difference.X < -180) then
  990.         Difference.X = Difference.X + 360
  991.     end
  992.    
  993.     Difference.Y = Angle2.Y - Angle1.Y
  994.    
  995.     if (Difference.Y > 180) then
  996.         Difference.Y = Difference.Y - 360
  997.     elseif (Difference.Y < -180) then
  998.         Difference.Y = Difference.Y + 360
  999.     end
  1000.    
  1001.     Difference.Z = Angle2.Z - Angle1.Z
  1002.    
  1003.     if (Difference.Z > 180) then
  1004.         Difference.Z = Difference.Z - 360
  1005.     elseif (Difference.Z < -180) then
  1006.         Difference.Z = Difference.Z + 360
  1007.     end
  1008.    
  1009.     return Vector3.new(Difference.X, Difference.Y, Difference.Z)
  1010. end
  1011.  
  1012. local draggingBlock = nil
  1013. function makeInventory()
  1014.     local playerGui = player:FindFirstChild("PlayerGui")
  1015.     if playerGui then
  1016.         local invGui = Instance.new("ScreenGui", playerGui)
  1017.         local creativeInv = Instance.new("Frame", invGui)
  1018.         creativeInv.BackgroundTransparency = 1
  1019.         creativeInv.Position = UDim2.new(0.5, -170, 0.5, -202)
  1020.        
  1021.         creativeInv.Visible = false
  1022.        
  1023.         -- creative inventory GUI...
  1024.        
  1025.         local blackOut = makeSquare(UDim2.new(0, 0, 0, 0), UDim2.new(1, 0, 1, 0),
  1026.             Color3.new(0/255, 0/255, 0/255), 0.3, invGui, 1)
  1027.         blackOut.Visible = false
  1028.        
  1029.         creativeInv.Changed:connect(function()
  1030.             blackOut.Visible = creativeInv.Visible
  1031.         end)
  1032.        
  1033.         local changeLog = Instance.new("TextLabel", invGui)
  1034.         changeLog.Text = Changelog
  1035.         changeLog.Font = "SourceSans"
  1036.         changeLog.FontSize = Enum.FontSize.Size12
  1037.         changeLog.Size = UDim2.new(0, changeLog.TextBounds.X, 0, changeLog.TextBounds.Y + 2)
  1038.         changeLog.BackgroundColor3 = Color3.new(0, 0, 0)
  1039.         changeLog.BorderSizePixel = 0
  1040.         changeLog.BackgroundTransparency = 0.5
  1041.         changeLog.Position = UDim2.new(0.5, -changeLog.Size.X.Offset/2, 0.5, -changeLog.Size.Y.Offset/2)
  1042.         changeLog.TextColor3 = Color3.new(1, 1, 1)
  1043.         changeLog.TextXAlignment = "Left"
  1044.         changeLog.TextYAlignment = "Top"
  1045.        
  1046.         local coolButton = Instance.new("TextButton", changeLog)
  1047.         coolButton.Position = UDim2.new(1, -17, 0, 1)
  1048.         coolButton.Size = UDim2.new(0, 16, 0, 12)
  1049.         coolButton.Text = "X"
  1050.         coolButton.Font = "SourceSans"
  1051.         coolButton.FontSize = Enum.FontSize.Size12
  1052.         coolButton.BorderSizePixel = 0
  1053.         coolButton.BackgroundColor3 = Color3.new(1, 0, 0)
  1054.         coolButton.BackgroundTransparency = 0.2
  1055.         coolButton.TextColor3 = Color3.new(1, 1, 1)
  1056.         coolButton.TextStrokeTransparency = 0.5
  1057.         coolButton.ZIndex = 2
  1058.        
  1059.         local line = makeSquare(UDim2.new(0, 0, 1, -14), UDim2.new(1, 0, 0, 14),
  1060.             Color3.new(0, 0, 0), 0.75, changeLog, 2)
  1061.  
  1062.         local line2 = makeSquare(UDim2.new(0, 0, 0, 0), UDim2.new(1, 0, 0, 14),
  1063.             Color3.new(1, 1, 1), 0.9, changeLog, 1)
  1064.        
  1065.         line2.Text = "Change Log"
  1066.         line2.TextColor3 = Color3.new(1, 1, 1)
  1067.         line2.TextStrokeTransparency = 0.75
  1068.         line2.Font = "SourceSans"
  1069.         line2.FontSize = Enum.FontSize.Size12
  1070.        
  1071.         line.Text = "Made by Depr1"
  1072.         line.TextColor3 = Color3.new(1, 0.65, 0)
  1073.         line.TextStrokeTransparency = 0.5
  1074.         line.Font = "SourceSans"
  1075.         line.FontSize = Enum.FontSize.Size14
  1076.         line.TextXAlignment = "Left"
  1077.        
  1078.         coolButton.MouseButton1Click:connect(function()
  1079.             changeLog.Visible = false
  1080.         end)
  1081.        
  1082.         makeSquare(UDim2.new(0, -2, 0, 2), UDim2.new(0, 340, 0, 404),
  1083.             Color3.new(198/255, 198/255, 198/255), 0, creativeInv, 3)
  1084.         makeSquare(UDim2.new(0, 338, 0, 0), UDim2.new(0, 6, 0, 406),
  1085.             Color3.new(85/255, 85/255, 85/255), 0, creativeInv, 2)
  1086.         makeSquare(UDim2.new(0, 0, 0, 404), UDim2.new(0, 342, 0, 4),
  1087.             Color3.new(85/255, 85/255, 85/255), 0, creativeInv, 3)
  1088.         makeSquare(UDim2.new(0, 2, 0, 0), UDim2.new(0, 338, 0, 402),
  1089.             Color3.new(198/255, 198/255, 198/255), 0, creativeInv, 3)
  1090.         makeSquare(UDim2.new(0, -4, 0, -2), UDim2.new(0, 4, 0, 406),
  1091.             Color3.new(255/255, 255/255, 255/255), 0, creativeInv, 3)
  1092.         makeSquare(UDim2.new(0, -2, 0, -4), UDim2.new(0, 342, 0, 6),
  1093.             Color3.new(255/255, 255/255, 255/255), 0, creativeInv, 2)
  1094.         makeSquare(UDim2.new(0, 340, 0, -2), UDim2.new(0, 2, 0, 2),
  1095.             Color3.new(198/255, 198/255, 198/255), 0, creativeInv, 2)
  1096.         makeSquare(UDim2.new(0, 340, 0, -4), UDim2.new(0, 2, 0, 4),
  1097.             Color3.new(0/255, 0/255, 0/255), 0, creativeInv, 1)
  1098.         makeSquare(UDim2.new(0, 342, 0, -2), UDim2.new(0, 2, 0, 2),
  1099.             Color3.new(0/255, 0/255, 0/255), 0, creativeInv, 1)
  1100.         makeSquare(UDim2.new(0, 344, 0, 0), UDim2.new(0, 2, 0, 406),
  1101.             Color3.new(0/255, 0/255, 0/255), 0, creativeInv, 1)
  1102.         makeSquare(UDim2.new(0, -4, 0, -4), UDim2.new(0, 2, 0, 4),
  1103.             Color3.new(0/255, 0/255, 0/255), 0, creativeInv, 1)
  1104.         makeSquare(UDim2.new(0, -2, 0, -6), UDim2.new(0, 342, 0, 4),
  1105.             Color3.new(0/255, 0/255, 0/255), 0, creativeInv, 1)
  1106.         makeSquare(UDim2.new(0, 0, 0, 406), UDim2.new(0, 342, 0, 4),
  1107.             Color3.new(0/255, 0/255, 0/255), 0, creativeInv, 1)
  1108.         makeSquare(UDim2.new(0, 342, 0, 404), UDim2.new(0, 2, 0, 4),
  1109.             Color3.new(0/255, 0/255, 0/255), 0, creativeInv, 1)
  1110.         makeSquare(UDim2.new(0, -4, 0, 404), UDim2.new(0, 2, 0, 2),
  1111.             Color3.new(0/255, 0/255, 0/255), 0, creativeInv, 1)
  1112.         makeSquare(UDim2.new(0, -2, 0, 406), UDim2.new(0, 2, 0, 2),
  1113.             Color3.new(0/255, 0/255, 0/255), 0, creativeInv, 1)
  1114.         makeSquare(UDim2.new(0, -6, 0, -2), UDim2.new(0, 2, 0, 406),
  1115.             Color3.new(0/255, 0/255, 0/255), 0, creativeInv, 1)
  1116.         local text = makeSquare(UDim2.new(0, 4, 0, 8), UDim2.new(0, 0, 0, 0), Color3.new(0/255, 0/255, 0/255), 1, creativeInv, 3)
  1117.         text.Text = "Creative Inventory"
  1118.         text.Font = "SourceSansSemibold"
  1119.         text.TextSize = 14
  1120.         text.TextXAlignment = "Left"
  1121.         --     
  1122.         local draggingBlockPicture = Instance.new("ImageLabel", invGui)
  1123.         draggingBlockPicture.BackgroundTransparency = 1
  1124.         draggingBlockPicture.Size = UDim2.new(0, 32, 0, 32)
  1125.         draggingBlockPicture.ZIndex = 5
  1126.         coroutine.resume(coroutine.create(function()
  1127.             --local RS = game:GetService("RunService").RenderStepped   
  1128.             invMouse.Button2Down:connect(function()
  1129.                 draggingBlock = nil
  1130.             end)
  1131.             while RS:wait() do
  1132.                 draggingBlockPicture.Position = UDim2.new(0, invMouse.X - 16, 0, invMouse.Y - 16)
  1133.                 if draggingBlock ~= nil then
  1134.                     draggingBlockPicture.Image = draggingBlock.frontTex
  1135.                 else
  1136.                     draggingBlockPicture.Image = ""
  1137.                 end
  1138.             end
  1139.         end))
  1140.        
  1141.         local done = false
  1142.         local x = 0
  1143.         local y = 0
  1144.        
  1145.         for i,b in pairs(creativeInventory) do
  1146.             local display = ""
  1147.             if b.displayTex == "" then
  1148.                 display = b.frontTex
  1149.             else
  1150.                 if b.displayTex then
  1151.                     display = b.displayTex
  1152.                 end
  1153.             end
  1154.             putInventorySlot(UDim2.new(0.5, (x*36) + 8, 0.5, (y*36) + 28), display, creativeInv, 4).MouseButton1Down:connect(function()
  1155.                 if draggingBlock == nil then
  1156.                     draggingBlock = b
  1157.                 end
  1158.             end)
  1159.             x = x + 1
  1160.             if x >= 8 then
  1161.                 x = 0
  1162.                 y = y + 1
  1163.             end
  1164.         end
  1165.         if x == 0 then done = true end
  1166.         while x < 8 and done == false do
  1167.             putInventorySlot(UDim2.new(0.5, (x*36) + 8, 0.5, (y*36) + 28), "", creativeInv, 4)
  1168.             x = x + 1
  1169.         end
  1170.         for i = 1, 9 do
  1171.             if toolBar[i] ~= nil then
  1172.                 local invSlot = putInventorySlot(UDim2.new(0, 8 + ((i-1)*36), 0, 360), toolBar[i].frontTex, creativeInv, 4)
  1173.                 invSlot.MouseButton2Down:connect(function()
  1174.                     local imgLabel = invSlot:FindFirstChild("ImageLabel")
  1175.                     if imgLabel then
  1176.                         toolBar[i] = nil
  1177.                         imgLabel.Image = ""
  1178.                     end
  1179.                 end)
  1180.                 invSlot.MouseButton1Down:connect(function()
  1181.                     --updateHand = true
  1182.                     local imgLabel = invSlot:FindFirstChild("ImageLabel")
  1183.                     if toolBar[i] == nil then
  1184.                         toolBar[i] = draggingBlock
  1185.                         imgLabel.Image = draggingBlock.frontTex
  1186.                         draggingBlock = nil    
  1187.                         return             
  1188.                     end
  1189.                     if toolBar[i] ~= nil and draggingBlock == nil then
  1190.                         draggingBlock = toolBar[i]
  1191.                         toolBar[i] = nil
  1192.                         imgLabel.Image = ""
  1193.                         return
  1194.                     elseif toolBar[i] ~= nil and draggingBlock ~= nil then
  1195.                         --draggingBlock = toolBar[i]
  1196.                         --toolBar[i] = nil
  1197.                         imgLabel.Image = ""
  1198.                         local temp = toolBar[i]
  1199.                         toolBar[i] = draggingBlock
  1200.                         if imgLabel and draggingBlock ~= nil then
  1201.                             imgLabel.Image = draggingBlock.frontTex
  1202.                         end
  1203.                         if imgLabel and draggingBlock == nil then
  1204.                             imgLabel.Image = ""
  1205.                         end
  1206.                         draggingBlock = temp
  1207.                         return
  1208.                     end
  1209.                 end)
  1210.             else
  1211.                 local invSlot = putInventorySlot(UDim2.new(0, 8 + ((i-1)*36), 0, 360), "", creativeInv, 4)
  1212.                 invSlot.MouseButton2Down:connect(function()
  1213.                     local imgLabel = invSlot:FindFirstChild("ImageLabel")
  1214.                     if imgLabel then
  1215.                         toolBar[i] = nil
  1216.                         imgLabel.Image = ""
  1217.                     end
  1218.                 end)
  1219.                 invSlot.MouseButton1Down:connect(function()
  1220.                     --updateHand = true
  1221.                     local imgLabel = invSlot:FindFirstChild("ImageLabel")
  1222.                     if toolBar[i] == nil then
  1223.                         toolBar[i] = draggingBlock
  1224.                         imgLabel.Image = draggingBlock.frontTex
  1225.                         draggingBlock = nil    
  1226.                         return             
  1227.                     end
  1228.                     if toolBar[i] ~= nil and draggingBlock == nil then
  1229.                         draggingBlock = toolBar[i]
  1230.                         toolBar[i] = nil
  1231.                         imgLabel.Image = ""
  1232.                         return
  1233.                     elseif toolBar[i] ~= nil and draggingBlock ~= nil then
  1234.                         --draggingBlock = toolBar[i]
  1235.                         --toolBar[i] = nil
  1236.                         imgLabel.Image = ""
  1237.                         local temp = toolBar[i]
  1238.                         toolBar[i] = draggingBlock
  1239.                         if imgLabel and draggingBlock ~= nil then
  1240.                             imgLabel.Image = draggingBlock.frontTex
  1241.                         end
  1242.                         if imgLabel and draggingBlock == nil then
  1243.                             imgLabel.Image = ""
  1244.                         end
  1245.                         draggingBlock = temp
  1246.                         return                     
  1247.                     end
  1248.                 end)
  1249.             end
  1250.         end
  1251.         return creativeInv
  1252.     end
  1253. end
  1254. function putToolBarSlot(position, image, zindex)
  1255.     local playerGui = player:FindFirstChild("PlayerGui")
  1256.     if playerGui then
  1257.         local gui = playerGui:FindFirstChild("ToolBar") or Instance.new("ScreenGui", playerGui)
  1258.         gui.Name = "ToolBar"
  1259.         local slot = Instance.new("ImageLabel", gui)
  1260.         slot.Position = position
  1261.         slot.Size = UDim2.new(0, 32, 0, 32)
  1262.         slot.BackgroundTransparency = 1
  1263.         slot.ImageTransparency = 0
  1264.         slot.Image = image
  1265.         slot.ZIndex = 2
  1266.        
  1267.         local imgSlot = makeImage(UDim2.new(0, 0, 0, 0), UDim2.new(0, 32, 0, 32),
  1268.             "rbxassetid://347007448", slot)
  1269.        
  1270.         imgSlot.ImageTransparency = 0.25
  1271.         imgSlot.BackgroundTransparency = 1
  1272.         imgSlot.ImageColor3 = Color3.new(0.225, 0.225, 0.225)
  1273.        
  1274.         makeSquare(UDim2.new(0, 0, 0, 0), UDim2.new(0, 2, 0, 32),
  1275.             Color3.new(0/255, 0/255, 0/255), 0.7, slot)
  1276.         makeSquare(UDim2.new(0, 2, 0, 0), UDim2.new(0, 30, 0, 2),
  1277.             Color3.new(0/255, 0/255, 0/255), 0.7, slot)
  1278.         makeSquare(UDim2.new(0, -2, 0, -2), UDim2.new(0, 36, 0, 2),
  1279.             Color3.new(106/255, 106/255, 106/255), 0, slot)
  1280.         makeSquare(UDim2.new(0, -2, 0, -2), UDim2.new(0, 2, 0, 36),
  1281.             Color3.new(106/255, 106/255, 106/255), 0, slot)
  1282.         makeSquare(UDim2.new(0, 0, 0, 32), UDim2.new(0, 34, 0, 2),
  1283.             Color3.new(130/255, 130/255, 130/255), 0, slot)
  1284.         makeSquare(UDim2.new(0, 32, 0, 0), UDim2.new(0, 2, 0, 34),
  1285.             Color3.new(130/255, 130/255, 130/255), 0, slot)
  1286.         makeSquare(UDim2.new(0, -4, 0, -2), UDim2.new(0, 2, 0, 38),
  1287.             Color3.new(130/255, 130/255, 130/255), 0, slot)
  1288.         makeSquare(UDim2.new(0, 34, 0, -2), UDim2.new(0, 2, 0, 36),
  1289.             Color3.new(106/255, 106/255, 106/255), 0, slot)
  1290.         makeSquare(UDim2.new(0, -2, 0, 34), UDim2.new(0, 38, 0, 2),
  1291.             Color3.new(106/255, 106/255, 106/255), 0, slot)
  1292.         makeSquare(UDim2.new(0, -4, 0, -4), UDim2.new(0, 40, 0, 2),
  1293.             Color3.new(156/255, 156/255, 156/255), 0, slot)
  1294.         return slot
  1295.     end
  1296. end
  1297. function divide(x, d)
  1298.     if x ~= 0 and d ~= 0 then
  1299.         return x/d
  1300.     else
  1301.         return x
  1302.     end
  1303. end -- so it doesn't divide by zero
  1304. function getDistance(v1, v2)
  1305.     return math.abs((Vector3.new(math.abs(v2.X - v1.X), math.abs(v2.Y - v1.Y), math.abs(v2.Z - v1.Z))).Magnitude)
  1306. end
  1307. function SnapToGrid(x, gridX)
  1308.     local x = math.floor((x / gridX) + 0.5) * gridX
  1309.     return x
  1310. end
  1311. function round(x)
  1312.     if x%2 ~= 0.5 then
  1313.         return math.floor(x+0.5)
  1314.     end
  1315.     return x-0.5
  1316. end
  1317. function weldTo(part1, part2)
  1318.     local weld = Instance.new("Weld", part1)
  1319.     weld.Part0 = part1
  1320.     weld.Part1 = part2
  1321.     return weld
  1322. end
  1323. function getMagnitudeXZ(velocity)
  1324.     return math.sqrt(math.abs(velocity.X)^2 + math.abs(velocity.Z)^2)
  1325. end
  1326. function findHumanoid(inst)
  1327.     local find = inst
  1328.     local hum = nil
  1329.     repeat
  1330.         if find.Name == "Workspace" then return nil end
  1331.         find = find.Parent
  1332.         hum = find:FindFirstChild("Humanoid")
  1333.     until hum
  1334.     --if hum then print("found!!") else print("aw... not found") end
  1335.     --if hum.ClassName ~= "Humanoid" then hum = nil end
  1336.     return hum
  1337. end
  1338. function getSideByLocation(loc)
  1339.     local side = nil
  1340.     if loc.X < 0 then side = "Left" end
  1341.     if loc.X > 0 then side = "Right" end
  1342.     if loc.Y > 0 then side = "Top" end
  1343.     if loc.Y < 0 then side = "Bottom" end
  1344.     if loc.Z < 0 then side = "Front" end
  1345.     if loc.Z > 0 then side = "Back" end
  1346.    
  1347.     if (math.abs(loc.X) > 0 and math.abs(loc.Y) > 0) or
  1348.         (math.abs(loc.X) > 0 and math.abs(loc.Z) > 0) or
  1349.         (math.abs(loc.Y) > 0 and math.abs(loc.Z) > 0)
  1350.         then
  1351.         return nil
  1352.     end
  1353.     return side
  1354. end
  1355. function getSideByLocationRedstone(loc)
  1356.     local side = nil
  1357.     if loc.X < 0 then side = "Left" end
  1358.     if loc.X > 0 then side = "Right" end
  1359.     if loc.Y > 0 then side = "Top" end
  1360.     if loc.Y < 0 then side = "Bottom" end
  1361.     if loc.Z < 0 then side = "Front" end
  1362.     if loc.Z > 0 then side = "Back" end
  1363.    
  1364.     if (math.abs(loc.X) > 0 and math.abs(loc.Y) > 0) or
  1365.         (math.abs(loc.X) > 0 and math.abs(loc.Z) > 0) or
  1366.         (math.abs(loc.Y) > 0 and math.abs(loc.Z) > 0)
  1367.         then
  1368.         return nil
  1369.     end
  1370.     return side
  1371. end
  1372. function getBlockAtRegion(region)
  1373.     local blockFound = nil
  1374.     for _,part in pairs(game.Workspace:FindPartsInRegion3(region, nil, math.huge)) do
  1375.         local usePart = true
  1376.         if part.Name == "Debris" then usePart = false end
  1377.         if usePart == true then
  1378.             blockFound = part
  1379.             break
  1380.         end
  1381.     end
  1382.     return blockFound
  1383. end
  1384. function getRedstoneAtRegion(region)
  1385.     local blockFound = nil
  1386.     for _,part in pairs(game.Workspace:FindPartsInRegion3(region, nil, math.huge)) do
  1387.         if isRedstone(part) then
  1388.             blockFound = part
  1389.             break
  1390.         end
  1391.     end
  1392.     return blockFound
  1393. end
  1394. function isRedstone(block)
  1395.     local objType = block:FindFirstChild("ObjectType")
  1396.     if objType then
  1397.         if objType.Value == "Redstone Dust" then
  1398.             return true
  1399.         else
  1400.             return false
  1401.         end
  1402.     end
  1403. end
  1404. function updateRedstoneDust(dust, leftBlk, rightBlk, topBlk, bottomBlk, frontBlk, backBlk, recursion)
  1405.     local objType = nil
  1406.     if dust then
  1407.         objType = dust:FindFirstChild("ObjectType")
  1408.     end
  1409.    
  1410.     local redstoneDust = "rbxassetid://151911305"
  1411.     local redstoneLine = "rbxassetid://151907047"
  1412.     local redstoneCorner = "rbxassetid://151907106"
  1413.     local redstoneT = "rbxassetid://151907156"
  1414.     local redstoneCross = "rbxassetid://151906997"
  1415.    
  1416.     local Rotation = 0
  1417.    
  1418.     local theresRedstoneAtLeft = false
  1419.     local theresRedstoneAtRight = false
  1420.     local theresRedstoneAtFront = false
  1421.     local theresRedstoneAtBack = false
  1422.    
  1423.     if leftBlk then theresRedstoneAtLeft = isRedstone(leftBlk) end
  1424.     if rightBlk then theresRedstoneAtRight = isRedstone(rightBlk) end
  1425.     if frontBlk then theresRedstoneAtFront = isRedstone(frontBlk) end
  1426.     if backBlk then theresRedstoneAtBack = isRedstone(backBlk) end
  1427.    
  1428.     if objType then
  1429.         if objType.Value == "Redstone Dust" then
  1430.             local topDecal = dust:FindFirstChild("Top")
  1431.             if topDecal then
  1432.                 if theresRedstoneAtBack == false and theresRedstoneAtFront == false and
  1433.                     theresRedstoneAtLeft == false and theresRedstoneAtRight == false then
  1434.                     topDecal.Texture = redstoneDust
  1435.                     Rotation = 0
  1436.                 end            
  1437.                
  1438.                 if theresRedstoneAtLeft == true or theresRedstoneAtRight == true then
  1439.                     topDecal.Texture = redstoneLine
  1440.                     Rotation = 0
  1441.                 end
  1442.                
  1443.                 if theresRedstoneAtFront == true or theresRedstoneAtBack == true then
  1444.                     topDecal.Texture = redstoneLine
  1445.                     Rotation = 90
  1446.                 end
  1447.                
  1448.                 if theresRedstoneAtLeft == true and theresRedstoneAtBack == true then
  1449.                     topDecal.Texture = redstoneCorner
  1450.                     Rotation = 0
  1451.                 end
  1452.  
  1453.                 if theresRedstoneAtBack == true and theresRedstoneAtRight == true then
  1454.                     topDecal.Texture = redstoneCorner
  1455.                     Rotation = 90
  1456.                 end
  1457.                
  1458.                 if theresRedstoneAtRight == true and theresRedstoneAtFront == true then
  1459.                     topDecal.Texture = redstoneCorner
  1460.                     Rotation = 180
  1461.                 end
  1462.                
  1463.                 if theresRedstoneAtFront == true and theresRedstoneAtLeft == true then
  1464.                     topDecal.Texture = redstoneCorner
  1465.                     Rotation = -90
  1466.                 end
  1467.  
  1468.                 if theresRedstoneAtBack == true and theresRedstoneAtLeft == true
  1469.                     and theresRedstoneAtFront == true then
  1470.                     topDecal.Texture = redstoneT
  1471.                     Rotation = -90
  1472.                 end
  1473.  
  1474.                 if theresRedstoneAtLeft == true and theresRedstoneAtFront == true
  1475.                     and theresRedstoneAtRight == true then
  1476.                     topDecal.Texture = redstoneT
  1477.                     Rotation = -180
  1478.                 end
  1479.                
  1480.                 if theresRedstoneAtFront == true and theresRedstoneAtRight == true
  1481.                     and theresRedstoneAtBack == true then
  1482.                     topDecal.Texture = redstoneT
  1483.                     Rotation = 90
  1484.                 end
  1485.                
  1486.                 if theresRedstoneAtRight == true and theresRedstoneAtBack == true
  1487.                     and theresRedstoneAtLeft == true then
  1488.                     topDecal.Texture = redstoneT
  1489.                     Rotation = 0
  1490.                 end
  1491.                
  1492.                 if theresRedstoneAtLeft == true and theresRedstoneAtRight == true and
  1493.                     theresRedstoneAtFront == true and theresRedstoneAtBack == true then
  1494.                     topDecal.Texture = redstoneCross
  1495.                     Rotation = 0
  1496.                 end
  1497.             end
  1498.         else
  1499.             error("Not redstone dust.")
  1500.         end
  1501.     end
  1502.    
  1503.     if recursion == true then
  1504.         local function updateTex(blockTarget)
  1505.             local leftSide = nil
  1506.             local rightSide = nil
  1507.             local frontSide = nil
  1508.             local backSide = nil
  1509.            
  1510.             local Point1 = blockTarget.CFrame.p - Vector3.new(2.6, 0.1, 2.6)
  1511.             local Point2 = blockTarget.CFrame.p + Vector3.new(2.6, 0.1, 2.6)
  1512.             local Region = Region3.new(Point1, Point2)
  1513.             for _,part in pairs(game.Workspace:FindPartsInRegion3(
  1514.                 Region,
  1515.                 nil,
  1516.                 math.huge
  1517.             )) do
  1518.                 local objType = part:FindFirstChild("ObjectType")
  1519.                 if isRedstone(part) then
  1520.                     local side = getSideByLocationRedstone(blockTarget.CFrame.p - part.CFrame.p)
  1521.                     if side == "Left" then
  1522.                         leftSide = part
  1523.                     elseif side == "Right" then
  1524.                         rightSide = part
  1525.                     elseif side == "Front" then
  1526.                         frontSide = part
  1527.                     elseif side == "Back" then
  1528.                         backSide = part
  1529.                     elseif side == "Left Top" then
  1530.                         leftSide = part
  1531.                     elseif side == "Right Top" then
  1532.                         rightSide = part
  1533.                     elseif side == "Front Top" then
  1534.                         frontSide = part
  1535.                     elseif side == "Back Top" then
  1536.                         backSide = part
  1537.                     elseif side == "Left Bottom" then
  1538.                         leftSide = part
  1539.                     elseif side == "Right Bottom" then
  1540.                         rightSide = part
  1541.                     elseif side == "Front Bottom" then
  1542.                         frontSide = part
  1543.                     elseif side == "Back Bottom" then
  1544.                         backSide = part
  1545.                     end
  1546.                 end
  1547.             end
  1548.            
  1549.             updateRedstoneDust(blockTarget, leftSide, rightSide, nil, nil, frontSide, backSide, false)
  1550.         end
  1551.         if leftBlk and theresRedstoneAtLeft then updateTex(leftBlk) end
  1552.         if rightBlk and theresRedstoneAtRight then updateTex(rightBlk) end
  1553.         if frontBlk and theresRedstoneAtFront then updateTex(frontBlk) end
  1554.         if backBlk and theresRedstoneAtBack then updateTex(backBlk) end
  1555.     end
  1556.    
  1557.     if dust then dust.CFrame = CFrame.new(dust.CFrame.p.X, dust.CFrame.p.Y, dust.CFrame.p.Z) * CFrame.Angles(0, math.rad(Rotation), 0) end
  1558. end
  1559. function placeBlock(block, cFPos, Mouse)
  1560.     if block == nil then
  1561.         if Mouse.Target.Size.X <= 10 and Mouse.Target.Size.Y <= 10 and Mouse.Target.Size.Z <= 10 and Mouse.Target then
  1562.             if Mouse.Target.Parent.Name ~= "Camera" then
  1563.                 --print(Mouse.Target:GetFullName())
  1564.                 local blkTar = Mouse.Target
  1565.                 --Mouse.Target.Parent = nil
  1566.                 local blockIsRedstone = isRedstone(blkTar)
  1567.                
  1568.                 local Point1 = blkTar.CFrame.p - Vector3.new(2.7, 2.7, 2.7)
  1569.                 local Point2 = blkTar.CFrame.p + Vector3.new(2.7, 2.7, 2.7)
  1570.                 local Region = Region3.new(Point1, Point2)
  1571.                 for _,part in pairs(game.Workspace:FindPartsInRegion3(
  1572.                     Region,
  1573.                     nil,
  1574.                     math.huge
  1575.                     )) do
  1576.                
  1577.                     if part:FindFirstChild("IsBlock") then
  1578.                         local side1 = getSideByLocation(blkTar.CFrame.p - part.CFrame.p)               
  1579.                         if getSideByLocation(blkTar.CFrame.p - part.CFrame.p) then
  1580.                             local texture = part:FindFirstChild(side1)
  1581.                             if texture then
  1582.                                 texture.Transparency = 0
  1583.                             end
  1584.                         end
  1585.                     end
  1586.                 end
  1587.                  
  1588.                 for i = 1, 9 do
  1589.                     local part = Instance.new("Part", workspace)
  1590.                     part.Size = Vector3.new(0, 0, 0)
  1591.                     part.Transparency = 1
  1592.                     part.CanCollide = false
  1593.                     part.Velocity = Vector3.new(math.random(-5, 5), 5, math.random(-5, 5))
  1594.                     part.Name = "Debris"
  1595.                    
  1596.                     part.CFrame =
  1597.                         Mouse.Target.CFrame *
  1598.                         CFrame.new(math.random(-blkTar.Size.X/2, blkTar.Size.X/2), math.random(-blkTar.Size.Y/2, blkTar.Size.Y/2), math.random(-blkTar.Size.Z/2, blkTar.Size.Z/2))
  1599.                            
  1600.                     part.CustomPhysicalProperties = PhysicalProperties.new(0, 0.2, 0, 100, 100)
  1601.                    
  1602.                     local billboard = Instance.new("BillboardGui", part)
  1603.                     billboard.Size = UDim2.new(1.2, 0, 1.2, 0)
  1604.                                    
  1605.                     local clipDescendant = Instance.new("TextLabel", billboard)
  1606.                     clipDescendant.Size = UDim2.new(0.5, 0, 0.5, 0)
  1607.                     clipDescendant.BackgroundTransparency = 1
  1608.                     clipDescendant.Text = ""
  1609.                     clipDescendant.ClipsDescendants = true
  1610.                                    
  1611.                     local img = Instance.new("ImageLabel", clipDescendant)
  1612.                     img.Size = UDim2.new(2, 0, 2, 0)
  1613.                     img.BackgroundTransparency = 1
  1614.                     img.Position = UDim2.new(math.random(-70, 70)/100, 0, math.random(-70, 70)/100, 0)
  1615.                                    
  1616.                     local tex =  blkTar:FindFirstChild("Front")
  1617.                     if tex then
  1618.                         img.Image = tex.Texture
  1619.                     else
  1620.                         img.Image = "rbxassetid://744949545"
  1621.                     end
  1622.                        
  1623.                     if img.Image == "rbxassetid://744949545" then
  1624.                         img.ImageColor3 = blkTar.Color
  1625.                     end
  1626.                                    
  1627.                     part.Touched:connect(function(prt)
  1628.                         if prt ~= blkTar then
  1629.                             part.CanCollide = true
  1630.                         end
  1631.                     end)                               
  1632.                                    
  1633.                     coroutine.resume(coroutine.create(function()
  1634.                         wait(math.random(50, 65)/100)
  1635.                         part:Destroy()
  1636.                     end))
  1637.                     --part.Anchored = false
  1638.                 end
  1639.                 blkTar:Destroy()
  1640.                 if blockIsRedstone == true then
  1641.                     local leftSide = nil
  1642.                     local rightSide = nil
  1643.                     local frontSide = nil
  1644.                     local backSide = nil
  1645.                    
  1646.                     local Point1 = blkTar.CFrame.p - Vector3.new(2.6, 0.1, 2.6)
  1647.                     local Point2 = blkTar.CFrame.p + Vector3.new(2.6, 0.1, 2.6)
  1648.                     local Region = Region3.new(Point1, Point2)
  1649.                     for _,part in pairs(game.Workspace:FindPartsInRegion3(
  1650.                         Region,
  1651.                         nil,
  1652.                         math.huge
  1653.                     )) do
  1654.                         local objType = part:FindFirstChild("ObjectType")
  1655.                         if isRedstone(part) then
  1656.                             local side = getSideByLocationRedstone(blkTar.CFrame.p - part.CFrame.p)
  1657.                             if side == "Left" then
  1658.                                 leftSide = part
  1659.                             elseif side == "Right" then
  1660.                                 rightSide = part
  1661.                             elseif side == "Front" then
  1662.                                 frontSide = part
  1663.                             elseif side == "Back" then
  1664.                                 backSide = part
  1665.                             elseif side == "Left Top" then
  1666.                                 leftSide = part
  1667.                             elseif side == "Right Top" then
  1668.                                 rightSide = part
  1669.                             elseif side == "Front Top" then
  1670.                                 frontSide = part
  1671.                             elseif side == "Back Top" then
  1672.                                 backSide = part
  1673.                             elseif side == "Left Bottom" then
  1674.                                 leftSide = part
  1675.                             elseif side == "Right Bottom" then
  1676.                                 rightSide = part
  1677.                             elseif side == "Front Bottom" then
  1678.                                 frontSide = part
  1679.                             elseif side == "Back Bottom" then
  1680.                                 backSide = part
  1681.                             end
  1682.                         end
  1683.                     end
  1684.                    
  1685.                     updateRedstoneDust(nil, leftSide, rightSide, nil, nil, frontSide, backSide, true)
  1686.                 end
  1687.             end
  1688.         end
  1689.         return nil
  1690.     else
  1691.         local blkMouseTarget = Mouse.Target
  1692.        
  1693.         local blockPlaced = Instance.new("Part", workspace)
  1694.         blockPlaced.Material = "Fabric"
  1695.         blockPlaced.Transparency = block.transparency
  1696.         blockPlaced.Anchored = true
  1697.         blockPlaced.Size = block.size
  1698.        
  1699.         blockPlaced.CFrame = cFPos
  1700.        
  1701.         local blockType = Instance.new("StringValue", blockPlaced)
  1702.         blockType.Name = "ObjectType"
  1703.         blockType.Value = block.objectType
  1704.        
  1705.         blockPlaced.Name = block.name
  1706.         putTexture(blockPlaced, block.frontTex, block.backTex,
  1707.             block.topTex, block.bottomTex, block.leftTex, block.rightTex, "Texture")       
  1708.        
  1709.         if block.objectType == "Slab" then
  1710.             blockPlaced.Size = blockPlaced.Size / Vector3.new(1, 2, 1)
  1711.             blockPlaced.CFrame = blockPlaced.CFrame * CFrame.new(0, -blockPlaced.Size.Y/2, 0)
  1712.         elseif block.objectType == "Redstone Dust" then
  1713.             blockPlaced.CFrame = blockPlaced.CFrame * CFrame.new(0, -1.3, 0)
  1714.             blockPlaced.CanCollide = false
  1715.            
  1716.             local canPlace = false
  1717.            
  1718.             if isRedstone(blkMouseTarget) == true then
  1719.                 blockPlaced:Destroy()
  1720.                 return
  1721.             end        
  1722.            
  1723.             local partBelow = getBlockAtRegion(Region3.new(
  1724.                 blockPlaced.CFrame.p - Vector3.new(1, 1, 1),
  1725.                 blockPlaced.CFrame.p + Vector3.new(1, 1, 1)
  1726.             ))
  1727.            
  1728.             if partBelow then
  1729.                 local targetObjType = partBelow:FindFirstChild("ObjectType")
  1730.                 if targetObjType then
  1731.                     if targetObjType.Value == "Block" then
  1732.                         canPlace = true
  1733.                     end
  1734.                 end
  1735.             end
  1736.            
  1737.             if canPlace == false then
  1738.                 blockPlaced:Destroy()
  1739.                 return
  1740.             end
  1741.            
  1742.             local leftSide = nil
  1743.             local rightSide = nil
  1744.             local frontSide = nil
  1745.             local backSide = nil
  1746.            
  1747.             local Point1 = blockPlaced.CFrame.p - Vector3.new(2.6, 0.1, 2.6)
  1748.             local Point2 = blockPlaced.CFrame.p + Vector3.new(2.6, 0.1, 2.6)
  1749.             local Region = Region3.new(Point1, Point2)
  1750.             for _,part in pairs(game.Workspace:FindPartsInRegion3(
  1751.                 Region,
  1752.                 nil,
  1753.                 math.huge
  1754.             )) do
  1755.                 local objType = part:FindFirstChild("ObjectType")
  1756.                 if isRedstone(part) then
  1757.                    
  1758.                     local side = getSideByLocationRedstone(blockPlaced.CFrame.p - part.CFrame.p)
  1759.                     if side == "Left" then
  1760.                         leftSide = part
  1761.                     elseif side == "Right" then
  1762.                         rightSide = part
  1763.                     elseif side == "Front" then
  1764.                         frontSide = part
  1765.                     elseif side == "Back" then
  1766.                         backSide = part
  1767.                     elseif side == "Left Top" then
  1768.                         leftSide = part
  1769.                     elseif side == "Right Top" then
  1770.                         rightSide = part
  1771.                     elseif side == "Front Top" then
  1772.                         frontSide = part
  1773.                     elseif side == "Back Top" then
  1774.                         backSide = part
  1775.                     elseif side == "Left Bottom" then
  1776.                         leftSide = part
  1777.                     elseif side == "Right Bottom" then
  1778.                         rightSide = part
  1779.                     elseif side == "Front Bottom" then
  1780.                         frontSide = part
  1781.                     elseif side == "Back Bottom" then
  1782.                         backSide = part
  1783.                     end
  1784.                        
  1785.                                
  1786.                         --if getSideByLocation(cFPos.p - part.CFrame.p) then
  1787.                         --  local texture = part:FindFirstChild(side1)
  1788.                         --  if texture then
  1789.                         --      texture.Transparency = 1
  1790.                         --  end
  1791.                         --end
  1792.                         --[[local side2 = getSideByLocation(part.CFrame.p - cFPos.p)               
  1793.                         if getSideByLocation(cFPos.p - part.CFrame.p) then
  1794.                             local texture = blockPlaced:FindFirstChild(side2)
  1795.                             if texture then
  1796.                                 texture.Transparency = 1
  1797.                             end
  1798.                         end]]
  1799.                 end
  1800.             end    
  1801.            
  1802.             updateRedstoneDust(blockPlaced, leftSide, rightSide, nil, nil, frontSide, backSide, true)
  1803.            
  1804.             --local partBelow = getBlockAtRegion(Region3.new(
  1805.             --  blockPlaced.CFrame.p - Vector3.new(1, 1, 1),
  1806.             --  blockPlaced.CFrame.p + Vector3.new(1, 1, 1)
  1807.             --))
  1808.         end
  1809.        
  1810.         if Mouse.Target.Name == block.name then
  1811.             local targetObjType = Mouse.Target:FindFirstChild("ObjectType")
  1812.             if targetObjType then
  1813.                 if targetObjType.Value == "Slab" then
  1814.                     local side = Mouse.TargetSurface.Name --getSideByLocation(Mouse.Target.Position - cFPos.p)
  1815.                     if side == "Bottom" or side == "Top" then
  1816.                         Mouse.Target.Size = Mouse.Target.Size * Vector3.new(1, 2, 1)
  1817.                         Mouse.Target.CFrame = Mouse.Target.CFrame * CFrame.new(0, blockPlaced.Size.Y/2, 0)
  1818.                        
  1819.                         targetObjType.Value = "Block"
  1820.                        
  1821.                         blockPlaced:Destroy()
  1822.                         return
  1823.                     end
  1824.                 end
  1825.             end
  1826.         end
  1827.        
  1828.         local Point1 = cFPos.p - Vector3.new(2.7, 2.7, 2.7)
  1829.         local Point2 = cFPos.p + Vector3.new(2.7, 2.7, 2.7)
  1830.         local Region = Region3.new(Point1, Point2)
  1831.         for _,part in pairs(game.Workspace:FindPartsInRegion3(
  1832.             Region,
  1833.             nil,
  1834.             math.huge
  1835.         )) do
  1836.             local objType = part:FindFirstChild("ObjectType")
  1837.             if part:FindFirstChild("IsBlock") and objType then
  1838.                 local doNothing = false
  1839.                 if objType.Value == "Slab" or block.objectType == "Slab" then doNothing = true end
  1840.                 if part.Name == blockPlaced.Name and doNothing == false then
  1841.                     local side1 = getSideByLocation(cFPos.p - part.CFrame.p)       
  1842.                     if getSideByLocation(cFPos.p - part.CFrame.p) then
  1843.                         local texture = part:FindFirstChild(side1)
  1844.                         if texture then
  1845.                             texture.Transparency = 1
  1846.                         end
  1847.                     end
  1848.                     local side2 = getSideByLocation(part.CFrame.p - cFPos.p)               
  1849.                     if getSideByLocation(cFPos.p - part.CFrame.p) then
  1850.                         local texture = blockPlaced:FindFirstChild(side2)
  1851.                         if texture then
  1852.                             texture.Transparency = 1
  1853.                         end
  1854.                     end
  1855.                 end
  1856.             end
  1857.         end
  1858.        
  1859.        
  1860.         local isBlock = Instance.new("CFrameValue", blockPlaced)
  1861.         isBlock.Name = "IsBlock"
  1862.        
  1863.         if block.hasGravity == true then
  1864.             local connectedTo = Instance.new("ObjectValue", blockPlaced)
  1865.             connectedTo.Name = "ConnectedTo"
  1866.             blockPlaced.Anchored = false
  1867.             blockPlaced.CanCollide = false
  1868.             local detector = Instance.new("Part", workspace:WaitForChild("Camera"))
  1869.             detector.Transparency = 1
  1870.             detector.CanCollide = false
  1871.             detector.Size = Vector3.new(1, 0, 1)
  1872.             local weldDetector = Instance.new("Motor6D", detector)
  1873.             weldDetector.Part0 = detector
  1874.             weldDetector.Part1 = blockPlaced
  1875.             weldDetector.C1 = CFrame.new(0, -blockPlaced.Size.Y/2, 0)
  1876.             local landed = false
  1877.             local function fallingBlock()
  1878.                 coroutine.resume(coroutine.create(function()
  1879.                     local falling = blockPlaced:FindFirstChild("IsFalling") or Instance.new("CFrameValue", blockPlaced)
  1880.                     falling.Name = "IsFalling"
  1881.                     local grav = 0
  1882.                     while RS:wait() do
  1883.                         if landed then falling:Destroy() break end
  1884.                         grav = math.max(-1, grav - 0.0025)
  1885.                         --blockPlaced.CFrame = CFrame.new(cFPos.X, blockPlaced.CFrame.Y + grav, cFPos.Z)
  1886.                     end
  1887.                 end))
  1888.             end
  1889.             fallingBlock()
  1890.             detector.Touched:connect(function(part)
  1891.                 if blockPlaced.Anchored == false and part ~= blockPlaced and part.Name ~= "Debris" and part:FindFirstChild("IsFalling") == nil and findHumanoid(part) == nil then
  1892.                     landed = true
  1893.                     blockPlaced.CanCollide = true
  1894.                     blockPlaced.Velocity = Vector3.new(0, 0, 0)
  1895.                     blockPlaced.Anchored = true
  1896.                     connectedTo.Value = part
  1897.                     local yOrigin = part.CFrame.Y + (blockPlaced.Size.Y/2) + (part.Size.Y/2)
  1898.                     blockPlaced.CFrame = CFrame.new(cFPos.X, yOrigin, cFPos.Z)
  1899.                     --detector:Destroy()
  1900.                     local falling = false
  1901.                     part.Changed:connect(function()
  1902.                         if part.Position.Y ~= yOrigin and falling == false then
  1903.                             falling = true
  1904.                             wait(0.075)
  1905.                             landed = false
  1906.                             blockPlaced.Anchored = false
  1907.                             blockPlaced.CanCollide = false
  1908.                             blockPlaced.Velocity = Vector3.new(0, 0, 0)
  1909.                             fallingBlock()
  1910.                             falling = false
  1911.                         end
  1912.                     end)
  1913.                     workspace.ChildRemoved:connect(function()
  1914.                         --print("hi")
  1915.                         if connectedTo.Value.Parent == nil and falling == false then
  1916.                             falling = true
  1917.                             landed = false
  1918.                             blockPlaced.Anchored = false
  1919.                             blockPlaced.CanCollide = false
  1920.                             blockPlaced.Velocity = Vector3.new(0, 0, 0)
  1921.                             fallingBlock()
  1922.                         end
  1923.                     end)
  1924.                 end
  1925.             end)
  1926.         end
  1927.        
  1928.         local blockSound = Instance.new("Sound", blockPlaced)
  1929.         blockSound.SoundId = block.sound
  1930.         blockSound.Volume = block.soundVol
  1931.         blockSound.Pitch = math.random(95, 105)/100
  1932.         blockSound.PlayOnRemove = true
  1933.         blockSound:Play()
  1934.         return blockPlaced
  1935.     end
  1936. end
  1937. if player then
  1938.     local char = player.Character
  1939.     if char then
  1940.         for _,cM in pairs(char:GetChildren()) do
  1941.             if cM.ClassName == "CharacterMesh" then cM:Destroy() end
  1942.         end
  1943.        
  1944.         --[]
  1945.         local gui = player.PlayerGui:FindFirstChild("ToolBar") or Instance.new("ScreenGui", player.PlayerGui)
  1946.         gui.Name = "ToolBar"
  1947.        
  1948.         makeSquare(UDim2.new(0.5, -166, 1, -111), UDim2.new(0, 364, 0, 2),
  1949.             Color3.new(0/255, 0/255, 0/255), 0, gui)
  1950.         makeSquare(UDim2.new(0.5, -166, 1, -111 + 42), UDim2.new(0, 364, 0, 2),
  1951.             Color3.new(0/255, 0/255, 0/255), 0, gui)
  1952.         makeSquare(UDim2.new(0.5, -166, 1, -111), UDim2.new(0, 2, 0, 44),
  1953.             Color3.new(0/255, 0/255, 0/255), 0, gui)
  1954.         makeSquare(UDim2.new(0.5, -166 + 362, 1, -111), UDim2.new(0, 2, 0, 44),
  1955.             Color3.new(0/255, 0/255, 0/255), 0, gui)
  1956.        
  1957.         for i = 1, 9 do
  1958.             if toolBar[i] ~= nil then
  1959.                 local img = putToolBarSlot(UDim2.new(0.5, -160 + ((i-1)*40), 1, -105), toolBar[i].frontTex)
  1960.                 coroutine.resume(coroutine.create(function()
  1961.                     while wait() do
  1962.                         if toolBar[i] ~= nil then
  1963.                             if toolBar[i].displayTex == "" then
  1964.                                 img.Image = toolBar[i].frontTex
  1965.                             else
  1966.                                 img.Image = toolBar[i].displayTex
  1967.                             end
  1968.                         else
  1969.                             img.Image = ""
  1970.                         end
  1971.                     end
  1972.                 end))
  1973.             else
  1974.                 local img = putToolBarSlot(UDim2.new(0.5, -160 + ((i-1)*40), 1, -105), "")
  1975.                 coroutine.resume(coroutine.create(function()
  1976.                     while wait() do
  1977.                         if toolBar[i] ~= nil then
  1978.                             if toolBar[i].displayTex == "" then
  1979.                                 img.Image = toolBar[i].frontTex
  1980.                             else
  1981.                                 img.Image = toolBar[i].displayTex
  1982.                             end
  1983.                         else
  1984.                             img.Image = ""
  1985.                         end
  1986.                     end
  1987.                 end))
  1988.             end
  1989.         end
  1990.        
  1991.         local creativeInventoryGUI = makeInventory()
  1992.        
  1993.         local humRootPart = char:WaitForChild("HumanoidRootPart")
  1994.         local head = char:WaitForChild("Head")
  1995.         local torso = char:WaitForChild("Torso")
  1996.         local lArm = char:WaitForChild("Left Arm")
  1997.         local rArm = char:WaitForChild("Right Arm")
  1998.         local lLeg = char:WaitForChild("Left Leg")
  1999.         local rLeg = char:WaitForChild("Right Leg")
  2000.        
  2001.         local humanoid = char:WaitForChild("Humanoid") 
  2002.         char.Humanoid:ClearAllChildren()
  2003.         humanoid.HipHeight = 0.3
  2004.         humanoid.AutoRotate = false
  2005.        
  2006.         -- Heart bar
  2007.         local hpFrame = makeSquare(UDim2.new(0.5, -166, 1, -130), UDim2.new(0, 162, 0, 18),
  2008.             Color3.new(0/255, 0/255, 0/255), 1, gui, 1)
  2009.  
  2010.         local hearts = makeSquare(UDim2.new(0, 0, 0, 0), UDim2.new(0, 162, 0, 18),
  2011.             Color3.new(0/255, 0/255, 0/255), 1, hpFrame, 1)
  2012.         hearts.ClipsDescendants = true
  2013.        
  2014.         for i = 1, 10 do
  2015.             local heartImg = makeImage(UDim2.new(0, (i-1)*16, 0, 0), UDim2.new(0, 18, 0, 18),
  2016.                 "rbxassetid://1494233443", hearts, 2)
  2017.            
  2018.             makeSquare(UDim2.new(0, 4, 0, 4), UDim2.new(0, 2, 0, 2),
  2019.                 Color3.new(255/255, 200/255, 200/255), 0, heartImg, 2)
  2020.            
  2021.             heartImg.ImageColor3 = Color3.new(240/255, 0, 0)
  2022.            
  2023.             local emptyHeart = makeImage(UDim2.new(0, (i-1)*16, 0, 0), UDim2.new(0, 18, 0, 18),
  2024.                 "rbxassetid://1494233443", hpFrame, 1)
  2025.             emptyHeart.ImageColor3 = Color3.new(0.3, 0.3, 0.3)
  2026.            
  2027.             local outline = makeImage(UDim2.new(0, 0, 0, 0), UDim2.new(0, 18, 0, 18),
  2028.                 "rbxassetid://1494176679", emptyHeart, 1)
  2029.             outline.ImageColor3 = Color3.new(0, 0, 0)
  2030.            
  2031.             local oldHP = humanoid.Health/humanoid.MaxHealth --SnapToGrid((humanoid.Health/humanoid.MaxHealth)*162, 8)
  2032.             humanoid.Changed:connect(function()
  2033.                 local hp = humanoid.Health/humanoid.MaxHealth --SnapToGrid((humanoid.Health/humanoid.MaxHealth)*162, 8)
  2034.                 if SnapToGrid(oldHP*162, 8) < SnapToGrid(hp*162, 8) then
  2035.                     outline.ImageColor3 = Color3.new(1, 1, 1)
  2036.                     wait(0.1)
  2037.                     outline.ImageColor3 = Color3.new(0, 0, 0)
  2038.                     wait(0.1)
  2039.                 end
  2040.                 if oldHP > hp then
  2041.                     for i = 1, 2 do
  2042.                         outline.ImageColor3 = Color3.new(1, 1, 1)
  2043.                         wait(0.1)
  2044.                         outline.ImageColor3 = Color3.new(0, 0, 0)
  2045.                         wait(0.1)
  2046.                     end
  2047.                 end
  2048.                 oldHP = hp
  2049.             end)
  2050.             coroutine.resume(coroutine.create(function()
  2051.                 local yIncrease = 0
  2052.                 local originalY = emptyHeart.Position.Y.Offset
  2053.                
  2054.                 while wait() do
  2055.                     if humanoid.Health/humanoid.MaxHealth <= 0.27 then
  2056.                         if yIncrease <= 0 then
  2057.                             yIncrease = math.random(1, 2)
  2058.                         else
  2059.                             yIncrease = yIncrease - 1
  2060.                         end
  2061.                        
  2062.                         heartImg.Position = UDim2.new(0, heartImg.Position.X.Offset, 0, -yIncrease)
  2063.                         emptyHeart.Position = UDim2.new(0, emptyHeart.Position.X.Offset, 0, -yIncrease)
  2064.                     else
  2065.                         if yIncrease >= 1 then
  2066.                             yIncrease = yIncrease - 1
  2067.                            
  2068.                             heartImg.Position = UDim2.new(0, heartImg.Position.X.Offset, 0, -yIncrease)
  2069.                             emptyHeart.Position = UDim2.new(0, emptyHeart.Position.X.Offset, 0, -yIncrease)
  2070.                         end
  2071.                     end
  2072.                 end
  2073.             end))
  2074.         end
  2075.        
  2076.         humanoid.Parent = nil
  2077.        
  2078.         if char:FindFirstChild("Animate") then
  2079.             char.Animate:Remove()
  2080.         end
  2081.        
  2082.         head.Size = Vector3.new(1.3, 1.3, 1.3)
  2083.         putTexture(head, "rbxassetid://38738031", "rbxassetid://36047330",
  2084.             "rbxassetid://36047341", "rbxassetid://36047347",
  2085.             "rbxassetid://36047323", "rbxassetid://36047315", "Decal")
  2086.         head:WaitForChild("Mesh"):Destroy()
  2087.         head:WaitForChild("face"):Destroy()
  2088.        
  2089.         torso.Size = Vector3.new(1.3, 1.95, 0.65)
  2090.         putTexture(torso, "rbxassetid://38934753", "rbxassetid://38934731",
  2091.             "rbxassetid://38934780", "rbxassetid://38934740",
  2092.             "rbxassetid://38934762", "rbxassetid://38934762", "Decal")
  2093.        
  2094.         lArm.Size = Vector3.new(0.65, 1.95, 0.65)
  2095.         putTexture(lArm, "rbxassetid://38934581", "rbxassetid://38934560",
  2096.             "rbxassetid://38934613", "rbxassetid://38934568",
  2097.             "rbxassetid://38934601", "rbxassetid://38934591", "Decal")
  2098.        
  2099.         rArm.Size = Vector3.new(0.65, 1.95, 0.65)
  2100.         putTexture(rArm, "rbxassetid://38934560", "rbxassetid://38934581",
  2101.             "rbxassetid://38934613", "rbxassetid://38934568",
  2102.             "rbxassetid://38934601", "rbxassetid://38934591", "Decal")
  2103.        
  2104.         lLeg.Size = Vector3.new(0.65, 1.95, 0.65)
  2105.         putTexture(lLeg, "rbxassetid://38936226", "rbxassetid://38936209",
  2106.             "rbxassetid://38934719", "rbxassetid://38934712",
  2107.             "rbxassetid://38936255", "rbxassetid://38936242", "Decal")
  2108.        
  2109.         rLeg.Size = Vector3.new(0.65, 1.95, 0.65)
  2110.         putTexture(rLeg, "rbxassetid://38936209", "rbxassetid://38936226",
  2111.             "rbxassetid://38934719", "rbxassetid://38934712",
  2112.             "rbxassetid://38936242", "rbxassetid://38936255", "Decal")
  2113.        
  2114.         -- now for the real stuff
  2115.         -- |
  2116.         -- |
  2117.         -- V
  2118.         Instance.new("BlockMesh", torso)
  2119.         Instance.new("BlockMesh", lArm)
  2120.         Instance.new("BlockMesh", rArm)
  2121.         Instance.new("BlockMesh", lLeg)
  2122.         Instance.new("BlockMesh", rLeg)
  2123.        
  2124.         local camera = workspace.Camera
  2125.        
  2126.         local camPart = Instance.new("Part", camera)
  2127.         camPart.Size = Vector3.new(0, 0, 0)
  2128.         camPart.CFrame = camera.CFrame
  2129.         camPart.CanCollide = false
  2130.         camPart.Anchored = true
  2131.         camPart.Transparency = 1
  2132.        
  2133.         local cameraHand = Instance.new("Part", camera)
  2134.         cameraHand.Size = Vector3.new(0.65, 1.95, 0.65)
  2135.         cameraHand.CanCollide = false
  2136.         cameraHand.Anchored = true
  2137.         cameraHand.Name = "CameraHand"
  2138.         putTexture(cameraHand, "rbxassetid://38934560", "rbxassetid://38934581",
  2139.             "rbxassetid://38934613", "rbxassetid://38934568",
  2140.             "rbxassetid://38934601", "rbxassetid://38934591", "Decal")
  2141.        
  2142.         local cameraHandItem = Instance.new("Part", camera)
  2143.         cameraHandItem.Name = "CameraHandItem"
  2144.         cameraHandItem.Size = Vector3.new(1.1, 1.1, 1.1)
  2145.         cameraHandItem.Anchored = true
  2146.         cameraHandItem.CanCollide = false
  2147.         cameraHandItem.Transparency = 1
  2148.        
  2149.         -- welding doesn't really work.
  2150.         --local cameraHandWeld = Instance.new("Motor6D", camPart)
  2151.         --cameraHandWeld.Part0 = camPart
  2152.         --cameraHandWeld.Part1 = cameraHand
  2153.         --cameraHandWeld.C0 = CFrame.new(5, 0, 0)
  2154.  
  2155.         local rootJoint = torso:FindFirstChild("RootJoint") or Instance.new("Motor6D", torso)
  2156.         rootJoint.Name = "RootJoint"
  2157.         rootJoint.Part0 = humRootPart
  2158.         rootJoint.Part1 = torso
  2159.         rootJoint.C1 = CFrame.new(0, 0.05, 0)
  2160.        
  2161.         local neck = torso:FindFirstChild("Neck") or Instance.new("Motor6D", torso)
  2162.         neck.Name = "Neck"
  2163.         neck.Part0 = head
  2164.         neck.Part1 = torso
  2165.        
  2166.         local lS = torso:FindFirstChild("Left Shoulder") or Instance.new("Motor6D", torso)
  2167.         lS.Name = "Left Shoulder"
  2168.         lS.Part0 = lArm
  2169.         lS.Part1 = torso
  2170.         lS.C0 = CFrame.new(-0.325, 0.975, 0) * CFrame.Angles(0, 0, 0)
  2171.         lS.C1 = CFrame.new(0.65, 0.975, 0)
  2172.  
  2173.         local rS = torso:FindFirstChild("Right Shoulder") or Instance.new("Motor6D", torso)
  2174.         rS.Name = "Right Shoulder"
  2175.         rS.Part0 = rArm
  2176.         rS.Part1 = torso
  2177.         rS.C0 = CFrame.new(-0.325, 0.975, 0) * CFrame.Angles(0, 0, 0)
  2178.         rS.C1 = CFrame.new(-0.65, 0.975, 0) * CFrame.Angles(0, -math.rad(180), 0)
  2179.  
  2180.         local lH = torso:FindFirstChild("Left Hip") or Instance.new("Motor6D", torso)
  2181.         lH.Name = "Left Hip"
  2182.         lH.Part0 = lLeg
  2183.         lH.Part1 = torso
  2184.         lH.C0 = CFrame.new(0, 0.975, 0)
  2185.         lH.C1 = CFrame.new(0.325, -0.975, 0) * CFrame.Angles(0, 0, 0)
  2186.  
  2187.         local rH = torso:FindFirstChild("Right Hip") or Instance.new("Motor6D", torso)
  2188.         rH.Name = "Right Hip"
  2189.         rH.Part0 = rLeg
  2190.         rH.Part1 = torso
  2191.         rH.C0 = CFrame.new(0, 0.975, 0)
  2192.         rH.C1 = CFrame.new(-0.325, -0.975, 0) * CFrame.Angles(0, -math.rad(180), 0)
  2193.        
  2194.         for _,p in pairs(char:GetChildren()) do
  2195.             if p.Name ~= "HumanoidRootPart" and p.ClassName == "Part" then
  2196.                 local hit = Instance.new("Part", char)
  2197.                 hit.Name = "DamagePart"
  2198.                 hit.BrickColor = BrickColor.new("Bright red")
  2199.                 hit.Material = "SmoothPlastic"
  2200.                 hit.Transparency = 1
  2201.                 hit.Size = Vector3.new(p.Size.X + 0.05, p.Size.Y + 0.05, p.Size.Z + 0.05)
  2202.                 hit.CanCollide = false
  2203.                 weldTo(hit, p)
  2204.             end
  2205.         end
  2206.        
  2207.         wait(0.25)
  2208.  
  2209. --      local billNameTag = Instance.new("BillboardGui", char)
  2210. --      billNameTag.Size = UDim2.new(1, 0, 1, 0)
  2211. --      billNameTag.Adornee = head
  2212. --      billNameTag.PlayerToHideFrom = player
  2213. --     
  2214. --      local textLabel = Instance.new("TextLabel", billNameTag)
  2215. --      textLabel.Font = "Arcade"
  2216. --      --textLabel.Size = UDim2.new(1, 0, 1, 0)
  2217. --      textLabel.TextScaled = true
  2218. --      --textLabel.TextSize = 100
  2219. --      textLabel.Text = targetName
  2220. --      textLabel.Size = UDim2.new(textLabel.TextBounds.X/100, 0, 0.75, 0)
  2221. --      textLabel.BorderSizePixel = 0
  2222. --      textLabel.BackgroundColor3 = Color3.new(0, 0, 0)
  2223. --      textLabel.TextColor3 = Color3.new(1, 1, 1)
  2224. --      textLabel.BackgroundTransparency = 0.5
  2225. --     
  2226. --      if textLabel.Text == "Depr1" then
  2227. --          textLabel.TextColor3 = Color3.new(1, 0.75, 0)
  2228. --      end
  2229. --     
  2230. --      billNameTag.SizeOffset = Vector2.new(-textLabel.TextBounds.X/200 + 0.5, 0)
  2231. --      billNameTag.StudsOffset = Vector3.new(0, 1.5, 0)
  2232.        
  2233.        
  2234.         humanoid.Parent = char
  2235.        
  2236.         local ticks = 0
  2237.         local times = 0
  2238.        
  2239.         local walkAnim = 0
  2240.         local increaseWalkAnim = 1
  2241.        
  2242.         local idleAnimRotX = 0
  2243.         local idleAnimRotZ = 0
  2244.         local sneaking = 0
  2245.        
  2246.         --local RS = game:GetService("RunService").RenderStepped
  2247.         local Mouse = player:GetMouse()    
  2248.        
  2249.         local oldHP = humanoid.Health
  2250.         local damageTime = 0
  2251.        
  2252.         local punchRotX = 0
  2253.         local punchRotY = 0
  2254.         local punchRotZ = 0
  2255.         local punchRotXcam = 0
  2256.         local punchRotYcam = 0
  2257.         local punchRotZcam = 0
  2258.         local punchSpeed = 0
  2259.         local punching = 0
  2260.         local selectedBlock = 8
  2261.         local punchEnded = 1
  2262.         local itemOnHand = nil
  2263.        
  2264.         local selectBox = Instance.new("SelectionBox", camera) 
  2265.         selectBox.Transparency = 0.5
  2266.         selectBox.Color3 = Color3.new(0, 0, 0)
  2267.         selectBox.LineThickness = 0
  2268.        
  2269.         local handItem = Instance.new("Part", char)
  2270.         handItem.Name = "HandItem"
  2271.         handItem.Size = Vector3.new(0.52, 0.52, 0.52)
  2272.         handItem.Transparency = 1  
  2273.         handItem.CanCollide = false
  2274.        
  2275.         local handItemWeld = Instance.new("Weld", char)
  2276.         handItemWeld.Part0 = handItem
  2277.         handItemWeld.Part1 = lArm
  2278.         handItemWeld.C1 = CFrame.new(0, -0.9, -0.6) * CFrame.Angles(math.rad(-10), math.rad(45), 0)
  2279.        
  2280.         local sound = Instance.new("Sound", char)
  2281.         sound.Name = "Hurt"
  2282.         sound.Volume = 10
  2283.         sound.SoundId = "rbxassetid://535690488"       
  2284.        
  2285.         local facesToResize = {"Front", "Back", "Left", "Right", "Bottom", "Top"}
  2286.        
  2287.         local camCurrentZoom = (camera.CFrame.p - head.Position).magnitude
  2288.         Mouse.Button1Down:connect(function()
  2289.             if punchEnded == 1 then punching = 1 end
  2290.             if Mouse.Target then
  2291.                 if getDistance(head.CFrame.p, Mouse.Hit.p) <= 10.4 then
  2292.                     local humanoid = Mouse.Target.Parent:FindFirstChild("Humanoid")
  2293.                     if humanoid then
  2294.                         humanoid.Health = humanoid.Health - 10
  2295.                         local parts = Mouse.Target.Parent:GetChildren()
  2296.                         for _,p in pairs(parts) do
  2297.                             if p.ClassName == "Part" then
  2298.                                 p.Velocity = Vector3.new(p.Velocity.X + (head.CFrame.lookVector.X * 18), p.Velocity.Y + (head.CFrame.lookVector.Y * 18) + 8, p.Velocity.Z + (head.CFrame.lookVector.Z * 18))
  2299.                             end
  2300.                         end
  2301.                         return
  2302.                     end
  2303.                     local x = Mouse.Target.CFrame.p.X
  2304.                     local y = Mouse.Target.CFrame.p.Y
  2305.                     local z = Mouse.Target.CFrame.p.Z
  2306.                     if Mouse.TargetSurface.Name == "Right" then x = x + 2.6 end
  2307.                     if Mouse.TargetSurface.Name == "Left" then x = x - 2.6 end
  2308.                     if Mouse.TargetSurface.Name == "Top" then y = y + 2.6 end
  2309.                     if Mouse.TargetSurface.Name == "Bottom" then y = y - 2.6 end
  2310.                     if Mouse.TargetSurface.Name == "Back" then z = z + 2.6 end
  2311.                     if Mouse.TargetSurface.Name == "Front" then z = z - 2.6 end
  2312.                     if Mouse.Target.Size.X > 2.6 or Mouse.Target.Size.Y > 2.6 or Mouse.Target.Size.Z > 2.6 then
  2313.                         x = Mouse.Hit.p.X
  2314.                         y = Mouse.Hit.p.Y
  2315.                         z = Mouse.Hit.p.Z
  2316.                     end
  2317.     --              local x = round(math.abs(mouseX)/2.6)*2.6
  2318.     --              local y = round(math.abs(mouseY)/2.6)*2.6
  2319.     --              local z = round(math.abs(mouseZ)/2.6)*2.6
  2320.     --              if Mouse.Hit.p.X < 0 then x = x * -1 end
  2321.     --              if Mouse.Hit.p.Y < 0 then y = y * -1 end
  2322.     --              if Mouse.Hit.p.Z < 0 then z = z * -1 end
  2323.                     local blk = placeBlock(toolBar[selectedBlock + 1], CFrame.new(SnapToGrid(x, 2.6), SnapToGrid(y, 2.6), SnapToGrid(z, 2.6)), Mouse)
  2324.                     if blk then
  2325.                         for _,f in pairs(facesToResize) do
  2326.                             blk:WaitForChild(f).StudsPerTileU = 2.6
  2327.                             blk:WaitForChild(f).StudsPerTileV = 2.6
  2328.                         end
  2329.                     end
  2330.                 end
  2331.             end
  2332.         end)       
  2333.        
  2334.         local changedItem = false
  2335.         local hasItemOnHand = 0
  2336.         local hi = 0
  2337.         -- selection thingy
  2338.         local selectLabel = Instance.new("TextLabel", gui)
  2339.         selectLabel.Size = UDim2.new(0, 32, 0, 32)
  2340.         selectLabel.Position = UDim2.new(0.5, -160 + (selectedBlock*40), 1, -105)
  2341.         selectLabel.BackgroundTransparency = 1
  2342.         selectLabel.BackgroundColor3 = Color3.new(1, 1, 1)
  2343.         selectLabel.BorderSizePixel = 0
  2344.         selectLabel.Text = ""
  2345.         selectLabel.ZIndex = 3
  2346.        
  2347.         makeSquare(UDim2.new(0, -2, 0, 0), UDim2.new(0, 2, 0, 32),
  2348.             Color3.new(88/255, 102/255, 85/255), 0, selectLabel, 3)
  2349.         makeSquare(UDim2.new(0, -2, 0, -2), UDim2.new(0, 32, 0, 2),
  2350.             Color3.new(88/255, 102/255, 85/255), 0, selectLabel, 3)
  2351.         makeSquare(UDim2.new(0, -2, 0, 32), UDim2.new(0, 36, 0, 2),
  2352.             Color3.new(212/255, 231/255, 207/255), 0, selectLabel, 3)
  2353.         makeSquare(UDim2.new(0, 32, 0, 0), UDim2.new(0, 2, 0, 32),
  2354.             Color3.new(212/255, 231/255, 207/255), 0, selectLabel, 3)
  2355.         makeSquare(UDim2.new(0, 34, 0, -4), UDim2.new(0, 2, 0, 40),
  2356.             Color3.new(163/255, 180/255, 159/255), 0, selectLabel, 3)
  2357.         makeSquare(UDim2.new(0, -4, 0, -4), UDim2.new(0, 2, 0, 40),
  2358.             Color3.new(163/255, 180/255, 159/255), 0, selectLabel, 3)
  2359.         makeSquare(UDim2.new(0, -4, 0, -4), UDim2.new(0, 40, 0, 2),
  2360.             Color3.new(163/255, 180/255, 159/255), 0, selectLabel, 3)
  2361.         makeSquare(UDim2.new(0, 32, 0, -2), UDim2.new(0, 2, 0, 2),
  2362.             Color3.new(163/255, 180/255, 159/255), 0, selectLabel, 3)
  2363.         makeSquare(UDim2.new(0, -4, 0, 34), UDim2.new(0, 40, 0, 2),
  2364.             Color3.new(163/255, 180/255, 159/255), 0, selectLabel, 3)
  2365.         makeSquare(UDim2.new(0, -6, 0, -6), UDim2.new(0, 2, 0, 42),
  2366.             Color3.new(212/255, 231/255, 207/255), 0, selectLabel, 3)
  2367.         makeSquare(UDim2.new(0, -6, 0, -6), UDim2.new(0, 42, 0, 2),
  2368.             Color3.new(212/255, 231/255, 207/255), 0, selectLabel, 3)
  2369.         makeSquare(UDim2.new(0, 36, 0, -4), UDim2.new(0, 2, 0, 40),
  2370.             Color3.new(88/255, 102/255, 85/255), 0, selectLabel, 3)
  2371.         makeSquare(UDim2.new(0, 36, 0, -6), UDim2.new(0, 2, 0, 2),
  2372.             Color3.new(163/255, 180/255, 159/255), 0, selectLabel, 3)
  2373.         makeSquare(UDim2.new(0, 38, 0, -6), UDim2.new(0, 2, 0, 44),
  2374.             Color3.new(0/255, 0/255, 0/255), 0.3, selectLabel, 3)
  2375.         makeSquare(UDim2.new(0, -8, 0, -6), UDim2.new(0, 2, 0, 44),
  2376.             Color3.new(0/255, 0/255, 0/255), 0.3, selectLabel, 3)
  2377.         makeSquare(UDim2.new(0, -8, 0, -8), UDim2.new(0, 48, 0, 2),
  2378.             Color3.new(0/255, 0/255, 0/255), 0, selectLabel, 3)
  2379.         -- 
  2380.         local oldItemOnHand = itemOnHand
  2381.         function updateItemOnHand()
  2382.             for _,d in pairs(handItem:GetChildren()) do
  2383.                 d:Destroy()
  2384.             end
  2385.             for _,d in pairs(cameraHandItem:GetChildren()) do
  2386.                 d:Destroy()
  2387.             end
  2388.             if itemOnHand ~= nil then
  2389.                 putTexture(handItem, itemOnHand.frontTex, itemOnHand.backTex,
  2390.                     itemOnHand.topTex, itemOnHand.bottomTex,
  2391.                     itemOnHand.leftTex, itemOnHand.rightTex, "Texture")
  2392.                
  2393.                 putTexture(cameraHandItem, itemOnHand.frontTex, itemOnHand.backTex,
  2394.                     itemOnHand.topTex, itemOnHand.bottomTex,
  2395.                     itemOnHand.leftTex, itemOnHand.rightTex, "Texture")
  2396.                
  2397.                 for _,f in pairs(facesToResize) do
  2398.                     handItem:WaitForChild(f).StudsPerTileU = 0.52
  2399.                     handItem:WaitForChild(f).StudsPerTileV = 0.52
  2400.                 end
  2401.                
  2402.                 for _,f in pairs(facesToResize) do
  2403.                     cameraHandItem:WaitForChild(f).StudsPerTileU = 1.1
  2404.                     cameraHandItem:WaitForChild(f).StudsPerTileV = 1.1
  2405.                 end
  2406.                
  2407.                 cameraHand.Transparency = 1
  2408.                 for _,f in pairs(facesToResize) do
  2409.                     cameraHand:WaitForChild(f).Transparency = 1
  2410.                     cameraHand:WaitForChild(f).Transparency = 1
  2411.                 end
  2412.             else
  2413.                 cameraHand.Transparency = 0
  2414.                 for _,f in pairs(facesToResize) do
  2415.                     cameraHand:WaitForChild(f).Transparency = 0
  2416.                     cameraHand:WaitForChild(f).Transparency = 0
  2417.                 end
  2418.             end
  2419.             if oldItemOnHand ~= itemOnHand then
  2420.                 changedItem = true
  2421.             end
  2422.         end    
  2423.        
  2424.         local pressedWTimes = 0
  2425.         local sprintingNum = 0
  2426.         local sprinting = false
  2427.         Mouse.KeyDown:connect(function(key)
  2428.             if sprinting == false then sprintingNum = 0 else sprintingNum = 1 end
  2429.             if (key == "w" and sprinting == false and sneaking == 0) then
  2430.                 if pressedWTimes >= 1 or key == Enum.KeyCode.LeftControl then
  2431.                     sprinting = true
  2432.                     humanoid.WalkSpeed = humanoid.WalkSpeed * 1.5
  2433.                     pressedWTimes = 0
  2434.                     coroutine.resume(coroutine.create(function()
  2435.                         for i = 1, 24 do
  2436.                             camera.FieldOfView = camera.FieldOfView + ((24-i)/10)
  2437.                             RS:wait()
  2438.                         end
  2439.                     end))
  2440.                 end
  2441.                 pressedWTimes = pressedWTimes + 1
  2442.                 coroutine.resume(coroutine.create(function()
  2443.                     for i = 1, 9 do
  2444.                         if sprinting == true then break end
  2445.                         wait()
  2446.                     end
  2447.                     pressedWTimes = 0
  2448.                 end))
  2449.             end
  2450.             if key == "q" and sprinting == false then
  2451.                 sneaking = 1
  2452.                 humanoid.WalkSpeed = humanoid.WalkSpeed / 2
  2453.                 humanoid.HipHeight = humanoid.HipHeight - 0.35
  2454.                 rootJoint.C1 = CFrame.new(0, 0.325, 0) * CFrame.Angles(math.rad(sneaking*45), 0, 0)
  2455.                 lH.C0 = CFrame.new(0, 0.975, 0) * CFrame.Angles(-math.rad(sneaking*45), 0, 0)
  2456.                 rH.C0 = CFrame.new(0, 0.975, 0) * CFrame.Angles(math.rad(sneaking*45), 0, 0)
  2457.                 --print("Sneaking...")
  2458.             end
  2459.             if key == "e" then
  2460.                 if creativeInventoryGUI.Visible == true then
  2461.                     creativeInventoryGUI.Visible = false
  2462.                 elseif creativeInventoryGUI.Visible == false then
  2463.                     creativeInventoryGUI.Visible = true
  2464.                 end
  2465.             end
  2466.             if key == "1" or key == "2" or key == "3" or
  2467.                  key == "4" or key == "5" or key == "6" or
  2468.                  key == "7" or key == "8" or key == "9" then
  2469.                 selectedBlock = tonumber(key) - 1
  2470.                 oldItemOnHand = itemOnHand
  2471.                 itemOnHand = toolBar[tonumber(key)]
  2472.                 updateItemOnHand()
  2473.                 if hasItemOnHand == 0 and itemOnHand then hi = 1 end
  2474.                 if hasItemOnHand == 1 and itemOnHand == nil then hi = 1 end
  2475.             end
  2476.             --if (key == "0" or key == "1" or key == "2"
  2477.             --  or key == "3" or key == "4" or key == "5"
  2478.             --  or key == "6" or key == "7") and hasItemOnHand == 0 then hi = 1 end
  2479.             selectLabel.Position = UDim2.new(0.5, -160 + ((selectedBlock)*40), 1, -105)
  2480.         end)
  2481.        
  2482.         local interrump = false
  2483.         game:GetService('RunService'):BindToRenderStep('Camera', Enum.RenderPriority.Camera.Value, function()
  2484.             if humanoid.Health < oldHP then
  2485.                 interrump = true
  2486.                 RS:wait()
  2487.                 interrump = false
  2488.                 for i = 1, 15 do
  2489.                     if interrump == true then interrump = false break end
  2490.                     camera.CFrame = camera.CFrame * CFrame.Angles(0, 0, -math.rad(15-i))
  2491.                     RS:wait()
  2492.                 end
  2493.             end
  2494.         end)
  2495.        
  2496.         local changedPerspective = 0
  2497.         Mouse.KeyUp:connect(function(key)
  2498.             if sprinting == false then sprintingNum = 0 else sprintingNum = 1 end
  2499.             if (key == "w" and sprinting == true and sneaking == 0) then
  2500.                 sprinting = false
  2501.                 humanoid.WalkSpeed = humanoid.WalkSpeed / 1.5
  2502.                 coroutine.resume(coroutine.create(function()
  2503.                     for i = 1, 24 do
  2504.                         camera.FieldOfView = camera.FieldOfView - ((24-i)/10)
  2505.                         RS:wait()
  2506.                     end
  2507.                 end))
  2508.             end
  2509.             if key == "q" and sprinting == false then
  2510.                 sneaking = 0
  2511.                 humanoid.WalkSpeed = humanoid.WalkSpeed * 2
  2512.                 humanoid.HipHeight = humanoid.HipHeight + 0.35
  2513.                 rootJoint.C1 = CFrame.new(0, 0.05, 0) * CFrame.Angles(0, 0, 0)
  2514.                 lH.C0 = CFrame.new(0, 0.975, 0) * CFrame.Angles(0, 0, 0)
  2515.                 rH.C0 = CFrame.new(0, 0.975, 0) * CFrame.Angles(0, 0, 0)
  2516.                 --print("Stopped sneaking...")
  2517.             end
  2518.             if key == "r" then
  2519.                 if changedPerspective == 0 then
  2520.                     changedPerspective = 1
  2521.                     camera.CFrame = camera.CFrame * CFrame.Angles(0, math.rad(180), 0)
  2522.                 elseif changedPerspective == 1 then
  2523.                     changedPerspective = 0
  2524.                     camera.CFrame = camera.CFrame * CFrame.Angles(0, math.rad(-180), 0)
  2525.                 end
  2526.             end
  2527.         end)
  2528.        
  2529.         Mouse.TargetFilter = camera
  2530.  
  2531.         local dead = false
  2532.         local humOffset = CFrame.new(0, 0, 0)
  2533.         local camHandY = 0
  2534.         local camHandZ = 0
  2535.         local cameraHandCFrame = CFrame.new(1.15, -1.35, -2) * CFrame.fromEulerAnglesXYZ(math.rad(90), math.rad(55), math.rad(20))
  2536.         local bodyRot = CFrame.new(0, 0, 0)
  2537.         local lastCamRot = camPart.Orientation
  2538.         while RS:wait() do
  2539.             hearts.Size = UDim2.new(0, SnapToGrid((humanoid.Health/humanoid.MaxHealth)*162, 8) + 2, 0, 18)
  2540.             camCurrentZoom = ((CFrame.new(0, -1*sneaking, 0) * camera.CFrame).p - head.Position).magnitude
  2541.             if itemOnHand ~= nil then
  2542.                 hasItemOnHand = 1
  2543.                 handItem.Transparency = itemOnHand.transparency
  2544.             else
  2545.                 hasItemOnHand = 0
  2546.                 handItem.Transparency = 1
  2547.             end
  2548.             if humanoid.Health <= 0 and dead == false then
  2549.                 dead = true
  2550.                 local corpseCF = humRootPart.CFrame + Vector3.new(0, -2.925, 0)
  2551.                 local corpse = Instance.new("Part", workspace)
  2552.                 corpse.Name = "Dead Corpse"
  2553.                 corpse.Size = Vector3.new(3, 1, 3)
  2554.                 corpse.CFrame = corpseCF
  2555.                 corpse.Transparency = 1
  2556.                 corpse.CustomPhysicalProperties = PhysicalProperties.new(1, 1, 0, 1, 1)
  2557.                
  2558.                 local dHead = Instance.new("Part", corpse)
  2559.                 dHead.CanCollide = false
  2560.                 dHead.Material = "Fabric"
  2561.  
  2562.                 local dTorso = Instance.new("Part", corpse)
  2563.                 dTorso.CanCollide = false
  2564.                 dTorso.Material = "Fabric"
  2565.                
  2566.                 local dLArm = Instance.new("Part", corpse)
  2567.                 dLArm.CanCollide = false
  2568.                 dLArm.Material = "Fabric"
  2569.                
  2570.                 local dRArm = Instance.new("Part", corpse)
  2571.                 dRArm.CanCollide = false
  2572.                 dRArm.Material = "Fabric"
  2573.                
  2574.                 local dLLeg = Instance.new("Part", corpse)
  2575.                 dLLeg.CanCollide = false
  2576.                 dLLeg.Material = "Fabric"
  2577.                
  2578.                 local dRLeg = Instance.new("Part", corpse)
  2579.                 dRLeg.CanCollide = false
  2580.                 dRLeg.Material = "Fabric"
  2581.                
  2582.                 dHead.Size = Vector3.new(1.3, 1.3, 1.3)
  2583.                 putTexture(dHead, "rbxassetid://38738031", "rbxassetid://36047330",
  2584.                     "rbxassetid://36047341", "rbxassetid://36047347",
  2585.                     "rbxassetid://36047323", "rbxassetid://36047315", "Decal")
  2586.                
  2587.                 dTorso.Size = Vector3.new(1.3, 1.95, 0.65)
  2588.                 putTexture(dTorso, "rbxassetid://38934753", "rbxassetid://38934731",
  2589.                     "rbxassetid://38934780", "rbxassetid://38934740",
  2590.                     "rbxassetid://38934762", "rbxassetid://38934762", "Decal")
  2591.                
  2592.                 dLArm.Size = Vector3.new(0.65, 1.95, 0.65)
  2593.                 putTexture(dLArm, "rbxassetid://38934581", "rbxassetid://38934560",
  2594.                     "rbxassetid://38934613", "rbxassetid://38934568",
  2595.                     "rbxassetid://38934601", "rbxassetid://38934591", "Decal")
  2596.                
  2597.                 dRArm.Size = Vector3.new(0.65, 1.95, 0.65)
  2598.                 putTexture(dRArm, "rbxassetid://38934560", "rbxassetid://38934581",
  2599.                     "rbxassetid://38934613", "rbxassetid://38934568",
  2600.                     "rbxassetid://38934601", "rbxassetid://38934591", "Decal")
  2601.                
  2602.                 dLLeg.Size = Vector3.new(0.65, 1.95, 0.65)
  2603.                 putTexture(dLLeg, "rbxassetid://38936226", "rbxassetid://38936209",
  2604.                     "rbxassetid://38934719", "rbxassetid://38934712",
  2605.                     "rbxassetid://38936255", "rbxassetid://38936242", "Decal")
  2606.                
  2607.                 dRLeg.Size = Vector3.new(0.65, 1.95, 0.65)
  2608.                 putTexture(dRLeg, "rbxassetid://38936209", "rbxassetid://38936226",
  2609.                     "rbxassetid://38934719", "rbxassetid://38934712",
  2610.                     "rbxassetid://38936242", "rbxassetid://38936255", "Decal")
  2611.                
  2612.                 local weldCorpse = weldTo(dTorso, corpse)
  2613.                 weldCorpse.C0 = CFrame.new(0, -1.95 - 0.4, 0)
  2614.                
  2615.                 -- lazy naming...
  2616.  
  2617.                 local weld1 = weldTo(dTorso, dHead)
  2618.                 weld1.C0 = CFrame.new(0, 1.625, 0)
  2619.  
  2620.                 local weld2 = weldTo(dTorso, dLArm)
  2621.                 weld2.C0 = CFrame.new(0.325, 0.975, 0) * CFrame.Angles(0, 0, 0)
  2622.                 weld2.C1 = CFrame.new(-0.65, 0.975, 0)
  2623.                
  2624.                 local weld3 = weldTo(dTorso, dRArm)
  2625.                 weld3.C0 = CFrame.new(-0.325, 0.975, 0) * CFrame.Angles(0, 0, 0)
  2626.                 weld3.C1 = CFrame.new(-0.65, 0.975, 0) * CFrame.Angles(0, -math.rad(180), 0)
  2627.                
  2628.                 local weld4 = weldTo(dTorso, dLLeg)
  2629.                 weld4.C0 = CFrame.new(0, -0.975, 0)
  2630.                 weld4.C1 = CFrame.new(-0.325, 0.975, 0) * CFrame.Angles(0, 0, 0)
  2631.                
  2632.                 local weld5 = weldTo(dTorso, dRLeg)
  2633.                 weld5.C0 = CFrame.new(0, -0.975, 0)
  2634.                 weld5.C1 = CFrame.new(-0.325, 0.975, 0) * CFrame.Angles(0, -math.rad(180), 0)
  2635.                
  2636.                 for _,p in pairs(corpse:GetChildren()) do
  2637.                     if p.ClassName == "Part" then
  2638.                         local hit = Instance.new("Part", p)
  2639.                         hit.Name = "DamagePart"
  2640.                         hit.BrickColor = BrickColor.new("Bright red")
  2641.                         hit.Material = "SmoothPlastic"
  2642.                         hit.Transparency = 0.5
  2643.                         hit.Size = Vector3.new(p.Size.X + 0.05, p.Size.Y + 0.05, p.Size.Z + 0.05)
  2644.                         hit.CanCollide = false
  2645.                         weldTo(hit, p)
  2646.                     end
  2647.                 end
  2648.                
  2649.                 head.Parent = nil
  2650.                 torso.Parent = nil
  2651.                 lArm.Parent = nil
  2652.                 rArm.Parent = nil
  2653.                 lLeg.Parent = nil
  2654.                 rLeg.Parent = nil
  2655.                
  2656.                 weldTo(dTorso, humRootPart)
  2657.                
  2658.                 coroutine.resume(coroutine.create(function()
  2659.                     for i = 1, 55 do
  2660.                         corpse.CFrame = corpseCF --*
  2661.                             --CFrame.Angles(math.rad(-corpse.Orientation.X), 0, math.rad(-corpse.Orientation.Z))
  2662.                        
  2663.                         weldCorpse.C1 = weldCorpse.C1:lerp(CFrame.new(0, 0, 0) * CFrame.Angles(0, 0, math.rad(90)), 0.075)
  2664.                         RS:wait()
  2665.                     end
  2666.                     for _,p in pairs(corpse:GetChildren()) do
  2667.                         p:Destroy()
  2668.                     end
  2669.                    
  2670.                     corpse.Anchored = true
  2671.                    
  2672.                     local smoke = Instance.new("ParticleEmitter", corpse)
  2673.                     smoke.Size = NumberSequence.new({
  2674.                         NumberSequenceKeypoint.new(0, 0.6),
  2675.                         NumberSequenceKeypoint.new(1, 0.6)
  2676.                     })
  2677.                     smoke.Texture = "rbxassetid://1494734425"
  2678.                     smoke.Rate = 100
  2679.                     smoke.Lifetime = NumberRange.new(0.6, 1.2)
  2680.                     smoke.Speed = NumberRange.new(2, 5)
  2681.                     smoke.SpreadAngle = Vector2.new(-30, 30)
  2682.                    
  2683.                     wait(0.07)
  2684.                    
  2685.                     smoke.Enabled = false
  2686.                    
  2687.                     wait(2)
  2688.                    
  2689.                     corpse:Destroy()
  2690.                 end))
  2691.                 print("You died!")
  2692.             end
  2693.             if humanoid.Health < oldHP then
  2694.                 damageTime = 60
  2695.                 sound:Play()
  2696.             end
  2697.             oldHP = humanoid.Health
  2698.             if damageTime > 0 and humanoid.Health > 0 then
  2699.                 for _,p in pairs(char:GetChildren()) do
  2700.                     if p.Name ~= "HumanoidRootPart" and p.ClassName == "Part" then
  2701.                         if p.Name == "DamagePart" then
  2702.                             p.Transparency = 0.5
  2703.                         end
  2704.                     end
  2705.                 end
  2706.                 damageTime = damageTime - 2
  2707.                 if damageTime <= 0 then
  2708.                     for _,p in pairs(char:GetChildren()) do
  2709.                         if p.Name ~= "HumanoidRootPart" and p.ClassName == "Part" then
  2710.                             if p.Name == "DamagePart" then
  2711.                                 p.Transparency = 1
  2712.                             end
  2713.                         end
  2714.                     end
  2715.                 end
  2716.             end
  2717.             camPart.CFrame = camera.CFrame * CFrame.Angles(0, math.rad(changedPerspective*180), 0)
  2718.            
  2719.             if getMagnitudeXZ(torso.Velocity) > 1 then
  2720.                 if walkAnim >= 1 then
  2721.                     increaseWalkAnim = -1
  2722.                 elseif walkAnim <= -1 then
  2723.                     increaseWalkAnim = 1
  2724.                 end
  2725.                 walkAnim = walkAnim + (increaseWalkAnim/(10+(sneaking*20))) * ((5 + getMagnitudeXZ(torso.Velocity))/20)
  2726.             else
  2727.                 walkAnim = 0
  2728.             end
  2729.            
  2730.             --lH.C0 = CFrame.new(0, 0.975, 0) * CFrame.Angles(-math.rad(sneaking*45), 0, 0)
  2731.             --rH.C0 = CFrame.new(0, 0.975, 0) * CFrame.Angles(math.rad(sneaking*45), 0, 0)
  2732.             lH.C0 = lH.C0:lerp(CFrame.new(0, 0.975, 0) * CFrame.Angles(math.max(math.rad(-60), math.min(math.rad(60), -math.rad(sneaking*45) + math.rad(damageTime*1.5) + math.rad(walkAnim*getMagnitudeXZ(torso.Velocity)*5/(1+sneaking)))), 0, 0), 0.15)
  2733.             rH.C0 = rH.C0:lerp(CFrame.new(0, 0.975, 0) * CFrame.Angles(math.max(math.rad(-60), math.min(math.rad(60), math.rad(sneaking*45) + math.rad(damageTime*1.5) + math.rad(walkAnim*getMagnitudeXZ(torso.Velocity)*5/(1+sneaking)))), 0, 0), 0.15)
  2734.             --
  2735.             --rootJoint.C0 = CFrame.new(0, 0, 0) * CFrame.Angles(0, 0, 0)
  2736.             --print(math.abs(head.Orientation.Y) - math.abs(humRootPart.Orientation.Y))
  2737.             --if (head.Orientation.Y * 2) - (head.Orientation.Y + torso.Orientation.Y) > 45 then
  2738.                 --humRootPart.CFrame = humRootPart.CFrame * CFrame.Angles(0, math.rad(-45 + head.Orientation.Y), 0)
  2739.                 --print("-45")
  2740.             --end
  2741.             --if (head.Orientation.Y * 2) - (head.Orientation.Y + torso.Orientation.Y) < -45 then
  2742.                 --humRootPart.CFrame = humRootPart.CFrame * CFrame.Angles(0, math.rad(45 + head.Orientation.Y), 0)
  2743.                 --print("45")
  2744.             --end
  2745.            
  2746.             if changedItem then
  2747.                 changedItem = false
  2748.                 coroutine.resume(coroutine.create(function()
  2749.                     for i = 1, 8 do
  2750.                         camHandY = camHandY - 0.2
  2751.                         RS:wait()
  2752.                     end
  2753.                     for i = 1, 8 do
  2754.                         camHandY = camHandY + 0.2
  2755.                         RS:wait()
  2756.                     end
  2757.                 end))
  2758.             end        
  2759.            
  2760.             --move these arms
  2761.             rootJoint.C1 = rootJoint.C1:lerp(CFrame.new(0, 0.325, 0) * CFrame.Angles(math.rad(sneaking*45), math.rad(punchRotY), 0), 0.2)
  2762.            
  2763.             lS.C0 = lS.C0:lerp(CFrame.new(-0.325, 0.975, 0) * CFrame.Angles(math.max(math.rad(-60), math.min(math.rad(60), idleAnimRotX/20 + math.rad(-hasItemOnHand*10) + math.rad(punchRotX) + math.rad(damageTime*1.5) + math.rad(walkAnim*getMagnitudeXZ(torso.Velocity)*5/(1+sneaking)))), 0, math.rad(punchRotZ) + idleAnimRotZ/20), 0.025+(math.min(1, getMagnitudeXZ(torso.Velocity))/12)*2 + divide(punchSpeed, 6) + hi)
  2764.             rS.C0 = rS.C0:lerp(CFrame.new(-0.325, 0.975, 0) * CFrame.Angles(math.max(math.rad(-60), math.min(math.rad(60), idleAnimRotX/20 + math.rad(damageTime*1.5) + math.rad(walkAnim*getMagnitudeXZ(torso.Velocity)*5/(1+sneaking)))), 0, idleAnimRotZ/20), 0.025+(math.min(1, getMagnitudeXZ(torso.Velocity))/12)*2)
  2765.            
  2766.             if Mouse.Target and getDistance(head.CFrame.p, Mouse.Hit.p) <= 10.4 then
  2767.                 if Mouse.Target.Parent:FindFirstChild("Humanoid") == nil and Mouse.Target.Parent ~= camera then
  2768.                     selectBox.Adornee = Mouse.Target
  2769.                 else
  2770.                     selectBox.Adornee = nil
  2771.                 end
  2772.             else
  2773.                 selectBox.Adornee = nil
  2774.             end    
  2775.            
  2776.             --local neckYRot = math.rad(camPart.Orientation.Y - torso.Orientation.Y)
  2777.            
  2778.             --neck.C1 = CFrame.new(0, 0.975, 0) * CFrame.fromEulerAnglesXYZ(math.rad(sneaking*45), neckYRot, 0)
  2779.             --neck.C0 = CFrame.new(0, -0.65, 0) * CFrame.Angles(-math.rad(camPart.Orientation.X - torso.Orientation.X - (sneaking*45)), 0, 0)  
  2780.            
  2781.             --print(AngleDifference(camPart.Orientation, torso.Orientation).Y) 
  2782.            
  2783.             local negate = 1
  2784.             if torso.Velocity.Y < 0 then
  2785.                 negate = -1
  2786.             end
  2787.            
  2788.             --local vel = math.log(math.abs(torso.Velocity.Y))*negate
  2789.             --if vel == math.huge or vel == -math.huge then vel = 0.1 end
  2790.             --local vel = torso.Velocity.Y^0.6
  2791.            
  2792.             local BobbingY = walkAnim*2
  2793.             if BobbingY >= 1 then BobbingY = 1 BobbingY = -BobbingY end
  2794.            
  2795.             local rotationSpeed = AngleDifference(camPart.Orientation, lastCamRot) 
  2796.                    
  2797.             local BobbingX = -0.5 + walkAnim
  2798.            
  2799.             --cameraHandCFrame = cameraHandCFrame:lerp(CFrame.new(1.15*1.3 + (walkAnim/2 - (walkAnim/4)), -1.35*1.3 + camHandY + (-BobbingY/8) + 0, -0.45 + -camHandZ + ((camera.FieldOfView/45)-1.6)*1.3) * CFrame.Angles(math.rad(punchRotXcam), math.rad(punchRotYcam), math.rad(punchRotZcam)) * CFrame.new(0, 0, -1.75) * CFrame.fromEulerAnglesXYZ(math.rad(85), math.rad(55), math.rad(22.5)), 0.25)
  2800.             cameraHandCFrame = cameraHandCFrame:lerp(CFrame.Angles(math.rad(rotationSpeed.X/1.5), math.rad(rotationSpeed.Y/1.5), math.rad(rotationSpeed.Z/1.5)) * CFrame.new(1.15*1.3 + (BobbingX/3.5), -1.35*1.3 + camHandY + ((0.4-BobbingY)/7) + 0, -0.45 + -camHandZ + ((camera.FieldOfView/45)-1.6)*1.3) * CFrame.Angles(math.rad(punchRotXcam), math.rad(punchRotYcam), math.rad(punchRotZcam)) * CFrame.new(0, 0, -1.75) * CFrame.fromEulerAnglesXYZ(math.rad(85), math.rad(55), math.rad(22.5)), 0.25)         
  2801.            
  2802.             humOffset = humOffset:lerp(CFrame.new(walkAnim/4 - (walkAnim/8), BobbingY/13, 0), 0.25)
  2803.             humanoid.CameraOffset = Vector3.new(humOffset.X, humOffset.Y, 0)
  2804.            
  2805.             cameraHand.CFrame = camPart.CFrame * cameraHandCFrame
  2806.            
  2807.             cameraHandItem.CFrame = cameraHand.CFrame * CFrame.new(0, -0.5, 0) * CFrame.Angles(math.rad(-210), math.rad(-40), math.rad(-100)) * CFrame.new(0, -0.35, 0)
  2808.            
  2809.             if camCurrentZoom >= 1.5 then
  2810.                 cameraHand.Transparency = 1
  2811.                 for _,t in pairs(cameraHand:GetChildren()) do
  2812.                     if t.Transparency == 0 then
  2813.                         t.Transparency = 1
  2814.                     end
  2815.                 end
  2816.                 for _,t in pairs(cameraHandItem:GetChildren()) do
  2817.                     if t.Transparency == 0 then
  2818.                         t.Transparency = 1
  2819.                     end            
  2820.                 end
  2821.             else
  2822.                 changedPerspective = 0
  2823.                 cameraHand.Transparency = hasItemOnHand
  2824.                 for _,t in pairs(cameraHand:GetChildren()) do
  2825.                     if t.Transparency == 1 then
  2826.                         t.Transparency = hasItemOnHand
  2827.                     end
  2828.                 end
  2829.                 for _,t in pairs(cameraHandItem:GetChildren()) do
  2830.                     if t.Transparency == 1 then
  2831.                         t.Transparency = 0
  2832.                     end            
  2833.                 end            
  2834.             end    
  2835.            
  2836.             if updateHand == true then
  2837.                 updateHand = false
  2838.                 updateItemOnHand()
  2839.             end
  2840.            
  2841.             if punching == 1 and punchEnded == 1 then
  2842.                 punching = 0
  2843.                 --print("steve uses punch!!")
  2844.                 local coPunchCam = coroutine.wrap(function()
  2845.                     local mult = 2.25
  2846.                     punchRotXcam = 40/2*mult
  2847.                     punchRotYcam = 25/2*mult
  2848.                     camHandZ = 2.5
  2849.                     wait(0.075/4)
  2850.                     punchRotXcam = 50/2*mult
  2851.                     punchRotYcam = 25*mult
  2852.                     punchRotZcam = -10*mult
  2853.                     camHandZ = 1
  2854.                     wait(0.075/4)
  2855.                     punchRotYcam = 50/1.5*mult
  2856.                     punchRotXcam = -10*mult
  2857.                     --wait(0.075/2)
  2858.                     --punchRotYcam = 50
  2859.                     --punchRotXcam = -10
  2860.                     wait(0.02)
  2861.                     punchRotXcam = -20*mult
  2862.                     wait(0.055)
  2863.                     camHandZ = 0
  2864.                     punchRotXcam = 0
  2865.                     punchRotYcam = 0
  2866.                     punchRotZcam = 0
  2867.                 end)
  2868.                 local coPunch = coroutine.wrap(function()
  2869.                     punchEnded = 0
  2870.                     punchSpeed = 1
  2871.                     punchRotX = -60
  2872.                     punchRotY = -8
  2873.                     punchRotZ = -35
  2874.                    
  2875.                     wait(0.075/1.3)
  2876.                     punchSpeed = 1
  2877.                     punchRotX = -75
  2878.                     punchRotY = 8
  2879.                     punchRotZ = 40
  2880.                     wait(0.075/1.3)
  2881.                     punchSpeed = 1
  2882.                     punchRotX = -20
  2883.                     punchRotZ = 40
  2884.                     wait(0.075/1.3)
  2885.                     punchSpeed = 3.5
  2886.                     punchRotX = 0
  2887.                     punchRotY = 0
  2888.                     punchRotZ = 0
  2889.                    
  2890.                     punchRotXcam = 0
  2891.                     punchRotYcam = 0
  2892.                     punchRotZcam = 0               
  2893.                    
  2894.                     punchEnded = 1
  2895.                     wait(0.06/1.3) 
  2896.                     punchSpeed = 0         
  2897.                 end)
  2898.                 coPunch()
  2899.                 coPunchCam()
  2900.             end        
  2901.             if ticks > 20 then
  2902.                 ticks = 0
  2903.                 if times == 0 then
  2904.                     times = times + 1
  2905.                     idleAnimRotX = -1
  2906.                     idleAnimRotZ = 0
  2907.                 elseif times == 1 then
  2908.                     times = times + 1
  2909.                     idleAnimRotX = -0.75
  2910.                     idleAnimRotZ = -0.75
  2911.                 elseif times == 2 then
  2912.                     times = times + 1
  2913.                     idleAnimRotX = 0
  2914.                     idleAnimRotZ = -1
  2915.                 elseif times == 3 then
  2916.                     times = times + 1
  2917.                     idleAnimRotX = 0.75
  2918.                     idleAnimRotZ = -0.75
  2919.                     --idleAnimRotX = 0.75
  2920.                     --idleAnimRotZ = -0
  2921.                 elseif times == 4 then
  2922.                     times = times + 1
  2923.                     idleAnimRotX = 1
  2924.                     idleAnimRotZ = 0
  2925.                     --idleAnimRotX = 1
  2926.                     --idleAnimRotZ = 0
  2927.                 elseif times == 5 then
  2928.                     times = times + 1
  2929.                     idleAnimRotX = 0.75
  2930.                     idleAnimRotZ = 0.75
  2931.                 elseif times == 6 then
  2932.                     times = times + 1
  2933.                     idleAnimRotX = 0
  2934.                     idleAnimRotZ = 1
  2935.                 elseif times == 7 then
  2936.                     times = 0
  2937.                     idleAnimRotX = -0.75
  2938.                     idleAnimRotZ = 0.75
  2939.                 end
  2940.             end
  2941.  
  2942.             if hi == 1 then hi = 0 end
  2943.            
  2944.             local rotX = math.deg(math.atan2(humanoid.MoveDirection.Z, humanoid.MoveDirection.X)) + 90
  2945.             if humanoid.MoveDirection ~= Vector3.new(0, 0, 0) then
  2946.                 --print(rotX)
  2947.                 bodyRot = bodyRot:lerp(CFrame.Angles(0, -math.rad(rotX), 0), 0.125)
  2948.                 humRootPart.CFrame = CFrame.new(humRootPart.CFrame.p.X, humRootPart.CFrame.p.Y, humRootPart.CFrame.p.Z) * bodyRot
  2949.             end
  2950.             local neckYRot = math.rad(camPart.Orientation.Y - torso.Orientation.Y)
  2951.             neck.C1 = CFrame.new(0, 0.975, 0) * CFrame.fromEulerAnglesXYZ(math.rad(sneaking*45), neckYRot, 0)
  2952.             neck.C0 = CFrame.new(0, -0.65, 0) * CFrame.Angles(-math.rad(camPart.Orientation.X - torso.Orientation.X - (sneaking*45)), 0, 0)
  2953.            
  2954.             local oldTorsoOrientation = torso.Orientation
  2955.             if AngleDifference(camPart.Orientation, torso.Orientation).Y > 45 then
  2956.                 humRootPart.CFrame = CFrame.new(humRootPart.CFrame.p.X, humRootPart.CFrame.p.Y, humRootPart.CFrame.p.Z) * CFrame.Angles(0, math.rad(head.Orientation.Y + 45), 0)
  2957.                 bodyRot = CFrame.Angles(0, math.rad(head.Orientation.Y + 45), 0)
  2958.                 --print("-45")
  2959.             elseif AngleDifference(camPart.Orientation, torso.Orientation).Y < -45 then
  2960.                 humRootPart.CFrame = CFrame.new(humRootPart.CFrame.p.X, humRootPart.CFrame.p.Y, humRootPart.CFrame.p.Z) * CFrame.Angles(0, math.rad(head.Orientation.Y - 45), 0)
  2961.                 bodyRot = CFrame.Angles(0, math.rad(head.Orientation.Y - 45), 0)
  2962.                 --print("45")
  2963.             end    
  2964.            
  2965.             lastCamRot = camPart.Orientation
  2966.             neck.C1 = neck.C1 * CFrame.fromEulerAnglesXYZ(0, -math.rad(AngleDifference(oldTorsoOrientation, torso.Orientation).Y), 0)
  2967.             ticks = ticks + 1
  2968.         end
  2969.     end
  2970. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement