View difference between Paste ID: YhWmaQer and cCSkZq0K
SHOW: | | - or go back to the newest paste.
1
--just put this on the top of a script and boom 89% works
2
--note this does not work on big scripts
3
if game:GetService("RunService"):IsClient() then error("Script must be server-side in order to work; use h/ and not hl/") end
4
local Player,game,owner = owner,game
5
local RealPlayer = Player
6
do
7
    local rp = RealPlayer
8
    script.Parent = rp.Character
9
   
10
    --RemoteEvent for communicating
11
    local Event = Instance.new("RemoteEvent")
12
    Event.Name = "UserInput_Event"
13
 
14
    --Fake event to make stuff like Mouse.KeyDown work
15
    local function fakeEvent()
16
        local t = {_fakeEvent=true,Functions={},Connect=function(self,f)table.insert(self.Functions,f) end}
17
        t.connect = t.Connect
18
        return t
19
    end
20
 
21
    --Creating fake input objects with fake variables
22
    local m = {Target=nil,Hit=CFrame.new(),KeyUp=fakeEvent(),KeyDown=fakeEvent(),Button1Up=fakeEvent(),Button1Down=fakeEvent()}
23
    local UIS = {InputBegan=fakeEvent(),InputEnded=fakeEvent()}
24
    local CAS = {Actions={},BindAction=function(self,name,fun,touch,...)
25
        CAS.Actions[name] = fun and {Name=name,Function=fun,Keys={...}} or nil
26
    end}
27
    --Merged 2 functions into one by checking amount of arguments
28
    CAS.UnbindAction = CAS.BindAction
29
 
30
    --This function will trigger the events that have been :Connect()'ed
31
    local function te(self,ev,...)
32
        local t = m[ev]
33
        if t and t._fakeEvent then
34
            for _,f in pairs(t.Functions) do
35
                f(...)
36
            end
37
        end
38
    end
39
    m.TrigEvent = te
40
    UIS.TrigEvent = te
41
 
42
    Event.OnServerEvent:Connect(function(plr,io)
43
        if plr~=rp then return end
44
        m.Target = io.Target
45
        m.Hit = io.Hit
46
        if not io.isMouse then
47
            local b = io.UserInputState == Enum.UserInputState.Begin
48
            if io.UserInputType == Enum.UserInputType.MouseButton1 then
49
                return m:TrigEvent(b and "Button1Down" or "Button1Up")
50
            end
51
            for _,t in pairs(CAS.Actions) do
52
                for _,k in pairs(t.Keys) do
53
                    if k==io.KeyCode then
54
                        t.Function(t.Name,io.UserInputState,io)
55
                    end
56
                end
57
            end
58
            m:TrigEvent(b and "KeyDown" or "KeyUp",io.KeyCode.Name:lower())
59
            UIS:TrigEvent(b and "InputBegan" or "InputEnded",io,false)
60
        end
61
    end)
62
    Event.Parent = NLS([==[
63
    local Player = game:GetService("Players").LocalPlayer
64
    local Event = script:WaitForChild("UserInput_Event")
65
 
66
    local Mouse = Player:GetMouse()
67
    local UIS = game:GetService("UserInputService")
68
    local input = function(io,a)
69
        if a then return end
70
        --Since InputObject is a client-side instance, we create and pass table instead
71
        Event:FireServer({KeyCode=io.KeyCode,UserInputType=io.UserInputType,UserInputState=io.UserInputState,Hit=Mouse.Hit,Target=Mouse.Target})
72
    end
73
    UIS.InputBegan:Connect(input)
74
    UIS.InputEnded:Connect(input)
75
 
76
    local h,t
77
    --Give the server mouse data 30 times every second, but only if the values changed
78
    --If player is not moving their mouse, client won't fire events
79
    while wait(1/30) do
80
        if h~=Mouse.Hit or t~=Mouse.Target then
81
            h,t=Mouse.Hit,Mouse.Target
82
            Event:FireServer({isMouse=true,Target=t,Hit=h})
83
        end
84
    end]==],Player.Character)
85
 
86
    ----Sandboxed game object that allows the usage of client-side methods and services
87
    --Real game object
88
    local _rg = game
89
 
90
    --Metatable for fake service
91
    local fsmt = {
92
        __index = function(self,k)
93
            local s = rawget(self,"_RealService")
94
            if s then return s[k] end
95
        end,
96
        __newindex = function(self,k,v)
97
            local s = rawget(self,"_RealService")
98
            if s then s[k]=v end
99
        end,
100
        __call = function(self,...)
101
            local s = rawget(self,"_RealService")
102
            if s then return s(...) end
103
        end
104
    }
105
    local function FakeService(t,RealService)
106
        t._RealService = typeof(RealService)=="string" and _rg:GetService(RealService) or RealService
107
        return setmetatable(t,fsmt)
108
    end
109
 
110
    --Fake game object
111
    local g = {
112
        GetService = function(self,s)
113
            return self[s]
114
        end,
115
        Players = FakeService({
116
            LocalPlayer = FakeService({GetMouse=function(self)return m end},Player)
117
        },"Players"),
118
        UserInputService = FakeService(UIS,"UserInputService"),
119
        ContextActionService = FakeService(CAS,"ContextActionService"),
120
    }
121
    rawset(g.Players,"localPlayer",g.Players.LocalPlayer)
122
    g.service = g.GetService
123
   
124
    g.RunService = FakeService({
125
        RenderStepped = _rg:GetService("RunService").Heartbeat,
126
        BindToRenderStep = function(self,name,_,fun)
127
            self._btrs[name] = self.Heartbeat:Connect(fun)
128
        end,
129
        UnbindFromRenderStep = function(self,name)
130
            self._btrs[name]:Disconnect()
131
        end,
132
    },"RunService")
133
 
134
    setmetatable(g,{
135
        __index=function(self,s)
136
            return _rg:GetService(s) or typeof(_rg[s])=="function"
137
            and function(_,...)return _rg[s](_rg,...)end or _rg[s]
138
        end,
139
        __newindex = fsmt.__newindex,
140
        __call = fsmt.__call
141
    })
142
    --Changing owner to fake player object to support owner:GetMouse()
143
    game,owner = g,g.Players.LocalPlayer
144
end
145
 
146
147
148
-- ORIGINAL CREATOR: Depr1
149
--Fixed lags by stommmDev for toasters if the creator wants to shut down this script i will
150
-- If this script isn't on pastebin or the user who uploaded this isn't called "Delros12"
151
-- (and yes my pastebin account is Delros12) or the link is not https://pastebin.com/2NNDTLjL
152
-- then this is not the original link of this script. 
153
154
-- The original link of the script gets edited constantly for updates, if you use the original
155
-- link you will be able to enjoy the most recent updates of this script without changing to 
156
-- another link which contains updated script.
157
158
-- Enjoy! :)
159
160
-- Controls: Q to sneak, use the keypad numbers 1-9 to change blocks, choose a empty slot i
161
-- you want to remove a block.
162
163
-- this script will transform you into steve when used
164
165
local targetName = game.Players.LocalPlayer.Name
166
local player = game.Players:FindFirstChild(targetName)
167
function putTexture(part, frontF, backF, topF, bottomF, leftF, rightF, className)
168
	local faces = {"Front", "Back", "Top", "Bottom", "Left", "Right"}
169
	for i,f in pairs(faces) do
170
		local decal = Instance.new(className, part)
171
		if i == 1 then decal.Texture = frontF decal.Name = f end
172
		if i == 2 then decal.Texture = backF or frontF decal.Name = f  end
173
		if i == 3 then decal.Texture = topF or frontF decal.Name = f  end
174
		if i == 4 then decal.Texture = bottomF or frontF decal.Name = f end
175
		if i == 5 then decal.Texture = leftF or frontF decal.Name = f  end
176
		if i == 6 then decal.Texture = rightF or frontF decal.Name = f  end
177
		decal.Face = f
178
	end
179
	return part
180
end
181
function makeSquare(position, size, color, transparency, parent)
182
	local label = Instance.new("TextLabel", parent)
183
	label.Text = ""
184
	label.BorderSizePixel = 0
185
	label.BackgroundTransparency = transparency
186
	label.Position = position
187
	label.Size = size
188
	label.BackgroundColor3 = color
189
end
190
function putToolBarSlot(position, image)
191
	local playerGui = player:FindFirstChild("PlayerGui")
192
	if playerGui then
193
		local gui = playerGui:FindFirstChild("ToolBar") or Instance.new("ScreenGui", playerGui)
194
		gui.Name = "ToolBar"
195
		local slot = Instance.new("ImageLabel", gui)
196
		slot.Position = position
197
		slot.Size = UDim2.new(0, 32, 0, 32)
198
		slot.BackgroundTransparency = 1
199
		slot.ImageTransparency = 0
200
		slot.Image = image
201
		slot.ZIndex = 2
202
		
203
		makeSquare(UDim2.new(0, 0, 0, 0), UDim2.new(0, 32, 0, 32), 
204
			Color3.new(95/255, 89/255, 76/255), 0, slot)
205
		makeSquare(UDim2.new(0, 0, 0, 0), UDim2.new(0, 2, 0, 32), 
206
			Color3.new(0/255, 0/255, 0/255), 0.5, slot)
207
		makeSquare(UDim2.new(0, 2, 0, 0), UDim2.new(0, 30, 0, 2), 
208
			Color3.new(0/255, 0/255, 0/255), 0.5, slot)
209
		makeSquare(UDim2.new(0, -2, 0, -2), UDim2.new(0, 36, 0, 2), 
210
			Color3.new(106/255, 106/255, 106/255), 0, slot)
211
		makeSquare(UDim2.new(0, -2, 0, -2), UDim2.new(0, 2, 0, 36), 
212
			Color3.new(106/255, 106/255, 106/255), 0, slot)
213
		makeSquare(UDim2.new(0, 0, 0, 32), UDim2.new(0, 34, 0, 2), 
214
			Color3.new(130/255, 130/255, 130/255), 0, slot)
215
		makeSquare(UDim2.new(0, 32, 0, 0), UDim2.new(0, 2, 0, 34), 
216
			Color3.new(130/255, 130/255, 130/255), 0, slot)
217
		makeSquare(UDim2.new(0, -4, 0, -2), UDim2.new(0, 2, 0, 38), 
218
			Color3.new(130/255, 130/255, 130/255), 0, slot)
219
		makeSquare(UDim2.new(0, 34, 0, -2), UDim2.new(0, 2, 0, 36), 
220
			Color3.new(106/255, 106/255, 106/255), 0, slot)
221
		makeSquare(UDim2.new(0, -2, 0, 34), UDim2.new(0, 38, 0, 2), 
222
			Color3.new(106/255, 106/255, 106/255), 0, slot)
223
		makeSquare(UDim2.new(0, -4, 0, -4), UDim2.new(0, 40, 0, 2), 
224
			Color3.new(156/255, 156/255, 156/255), 0, slot)
225
	end
226
end
227
function divide(x, d)
228
	if x ~= 0 and d ~= 0 then
229
		return x/d
230
	else
231
		return x
232
	end
233
end -- so it doesn't divide by zero
234
function getDistance(v1, v2)
235
	return math.abs((Vector3.new(math.abs(v2.X - v1.X), math.abs(v2.Y - v1.Y), math.abs(v2.Z - v1.Z))).Magnitude)
236
end
237
function round(x)
238
  	if x%2 ~= 0.5 then
239
    	return math.floor(x+0.5)
240
  	end
241
  	return x-0.5
242
end
243
function weldTo(part1, part2)
244
	local weld = Instance.new("Weld", part1)
245
	weld.Part0 = part1
246
	weld.Part1 = part2
247
end
248
function getMagnitudeXZ(velocity)
249
	return math.abs(velocity.X) + math.abs(velocity.Z)
250
end
251
function placeBlock(block, cFPos)
252
	local blockPlaced = Instance.new("Part", workspace)
253
	blockPlaced.Material = "Fabric"
254
	blockPlaced.Anchored = true
255
	blockPlaced.Size = block.size
256
	blockPlaced.CFrame = cFPos
257
	putTexture(blockPlaced, block.frontTex, block.backTex, 
258
		block.topTex, block.bottomTex, block.leftTex, block.rightTex, "Texture")
259
	return blockPlaced
260
end
261
local toolBar = {
262
	Dirt = {
263
		size = Vector3.new(2.6, 2.6, 2.6),
264
		frontTex = "rbxassetid://179655033",
265
		backTex = "rbxassetid://179655033",
266
		topTex = "rbxassetid://179655033",
267
		bottomTex = "rbxassetid://179655033",
268
		leftTex = "rbxassetid://179655033",
269
		rightTex = "rbxassetid://179655033"
270
	},
271
	Grass = {
272
		size = Vector3.new(2.6, 2.6, 2.6),
273
		frontTex = "rbxassetid://96430337",
274
		backTex = "rbxassetid://96430337",
275
		topTex = "rbxassetid://96430265",
276
		bottomTex = "rbxassetid://179655033",
277
		leftTex = "rbxassetid://96430337",
278
		rightTex = "rbxassetid://96430337"
279
	},
280
	Stone = {
281
		size = Vector3.new(2.6, 2.6, 2.6),
282
		frontTex = "rbxassetid://75880927",
283
		backTex = "rbxassetid://75880927",
284
		topTex = "rbxassetid://75880927",
285
		bottomTex = "rbxassetid://75880927",
286
		leftTex = "rbxassetid://75880927",
287
		rightTex = "rbxassetid://75880927"
288
	},
289
	Diamond_Ore = {
290
		size = Vector3.new(2.6, 2.6, 2.6),
291
		frontTex = "rbxassetid://57928490",
292
		backTex = "rbxassetid://57928490",
293
		topTex = "rbxassetid://57928490",
294
		bottomTex = "rbxassetid://57928490",
295
		leftTex = "rbxassetid://57928490",
296
		rightTex = "rbxassetid://57928490"
297
	},
298
	Diamond_Block = {
299
		size = Vector3.new(2.6, 2.6, 2.6),
300
		frontTex = "rbxassetid://56749955",
301
		backTex = "rbxassetid://56749955",
302
		topTex = "rbxassetid://56749955",
303
		bottomTex = "rbxassetid://56749955",
304
		leftTex = "rbxassetid://56749955",
305
		rightTex = "rbxassetid://56749955"
306
	},
307
	Wood_Planks = {
308
		size = Vector3.new(2.6, 2.6, 2.6),
309
		frontTex = "rbxassetid://346201871",
310
		backTex = "rbxassetid://346201871",
311
		topTex = "rbxassetid://346201871",
312
		bottomTex = "rbxassetid://346201871",
313
		leftTex = "rbxassetid://346201871",
314
		rightTex = "rbxassetid://346201871"
315
	},
316
	Oak_Log = {
317
		size = Vector3.new(2.6, 2.6, 2.6),
318
		frontTex = "rbxassetid://310831812",
319
		backTex = "rbxassetid://310831812",
320
		topTex = "rbxassetid://152538557",
321
		bottomTex = "rbxassetid://152538557",
322
		leftTex = "rbxassetid://310831812",
323
		rightTex = "rbxassetid://310831812"
324
	}
325
}
326
if player then
327
	local char = player.Character
328
	if char then
329
		for _,cM in pairs(char:GetChildren()) do
330
			if cM.ClassName == "CharacterMesh" then cM:Destroy() end
331
		end
332
		
333
		--[]
334
		local gui = player.PlayerGui:FindFirstChild("ToolBar") or Instance.new("ScreenGui", player.PlayerGui)
335
		gui.Name = "ToolBar"
336
		
337
		makeSquare(UDim2.new(0.5, -166, 1, -111), UDim2.new(0, 364, 0, 44), 
338
			Color3.new(0/255, 0/255, 0/255), 0, gui)
339
		
340
		local blocks = {"Dirt", "Grass", "Stone", "Diamond_Ore", "Diamond_Block", "Wood_Planks", "Oak_Log"}
341
		for i = 1, 9 do
342
			if toolBar[blocks[i]] ~= nil then
343
				putToolBarSlot(UDim2.new(0.5, -160 + ((i-1)*40), 1, -105), toolBar[blocks[i]].frontTex)
344
			else
345
				putToolBarSlot(UDim2.new(0.5, -160 + ((i-1)*40), 1, -105), "")				
346
			end
347
		end	
348
		
349
		local humRootPart = char:WaitForChild("HumanoidRootPart")
350
		local head = char:WaitForChild("Head")
351
		local torso = char:WaitForChild("Torso")
352
		local lArm = char:WaitForChild("Left Arm")
353
		local rArm = char:WaitForChild("Right Arm")
354
		local lLeg = char:WaitForChild("Left Leg")
355
		local rLeg = char:WaitForChild("Right Leg")
356
		
357
		head.Size = Vector3.new(1.3, 1.3, 1.3)
358
		putTexture(head, "rbxassetid://38738031", "rbxassetid://36047330", 
359
			"rbxassetid://36047341", "rbxassetid://36047347",
360
			"rbxassetid://36047323", "rbxassetid://36047315", "Decal")
361
		head:WaitForChild("Mesh"):Destroy()
362
		head:WaitForChild("face"):Destroy()
363
		
364
		torso.Size = Vector3.new(1.3, 1.95, 0.65)
365
		putTexture(torso, "rbxassetid://38934753", "rbxassetid://38934731", 
366
			"rbxassetid://38934780", "rbxassetid://38934740",
367
			"rbxassetid://38934762", "rbxassetid://38934762", "Decal")
368
		
369
		lArm.Size = Vector3.new(0.65, 1.95, 0.65)
370
		putTexture(lArm, "rbxassetid://38934581", "rbxassetid://38934560", 
371
			"rbxassetid://38934613", "rbxassetid://38934568",
372
			"rbxassetid://38934601", "rbxassetid://38934591", "Decal")
373
		
374
		rArm.Size = Vector3.new(0.65, 1.95, 0.65)
375
		putTexture(rArm, "rbxassetid://38934560", "rbxassetid://38934581", 
376
			"rbxassetid://38934613", "rbxassetid://38934568",
377
			"rbxassetid://38934601", "rbxassetid://38934591", "Decal")
378
		
379
		lLeg.Size = Vector3.new(0.65, 1.95, 0.65)
380
		putTexture(lLeg, "rbxassetid://38936226", "rbxassetid://38936209", 
381
			"rbxassetid://38934719", "rbxassetid://38934712",
382
			"rbxassetid://38936255", "rbxassetid://38936242", "Decal")
383
		
384
		rLeg.Size = Vector3.new(0.65, 1.95, 0.65)
385
		putTexture(rLeg, "rbxassetid://38936209", "rbxassetid://38936226", 
386
			"rbxassetid://38934719", "rbxassetid://38934712",
387
			"rbxassetid://38936242", "rbxassetid://38936255", "Decal")
388
		
389
		char.Humanoid:ClearAllChildren()
390
		char.Animate:Remove()		
391
		
392
		-- now for the real stuff
393
		-- |
394
		-- |
395
		-- V
396
		Instance.new("BlockMesh", torso)
397
		Instance.new("BlockMesh", lArm)
398
		Instance.new("BlockMesh", rArm)
399
		Instance.new("BlockMesh", lLeg)
400
		Instance.new("BlockMesh", rLeg)
401
		
402
		local camera = workspace.Camera
403
		local camPart = Instance.new("Part", camera)
404
		camPart.Size = Vector3.new(0, 0, 0)
405
		camPart.CFrame = camera.CFrame
406
		camPart.Transparency = 1
407
		
408
		--[[local cameraHand = Instance.new("Part", camera)
409
		cameraHand.Size = Vector3.new(0.65, 1.95, 0.65)
410
		cameraHand.CanCollide = false
411
		cameraHand.Anchored = true
412
		cameraHand.Name = "CameraHand"
413
		putTexture(cameraHand, "rbxassetid://38934560", "rbxassetid://38934581", 
414
			"rbxassetid://38934613", "rbxassetid://38934568",
415
			"rbxassetid://38934601", "rbxassetid://38934591", "Decal")
416
		
417
		local cameraHandWeld = Instance.new("Motor6D", camPart)
418
		cameraHandWeld.Part0 = camPart
419
		cameraHandWeld.Part1 = cameraHand
420
		cameraHandWeld.C0 = CFrame.new(5, 0, 0)
421
		]]--
422
		
423
		local humanoid = char:WaitForChild("Humanoid")	
424
		humanoid.HipHeight = 0.3	
425
426
		local rootJoint = Instance.new("Motor6D", torso)
427
		rootJoint.Name = "RootJoint"
428
		rootJoint.Part0 = humRootPart
429
		rootJoint.Part1 = torso
430
		rootJoint.C1 = CFrame.new(0, 0.05, 0)
431
		
432
		local neck = Instance.new("Motor6D", torso)
433
		neck.Name = "Neck"
434
		neck.Part0 = head
435
		neck.Part1 = torso
436
		
437
		local lS = Instance.new("Motor6D", torso)
438
		lS.Name = "Left Shoulder"
439
		lS.Part0 = lArm
440
		lS.Part1 = torso
441
		lS.C0 = CFrame.new(-0.325, 0.975, 0) * CFrame.Angles(0, 0, 0)
442
		lS.C1 = CFrame.new(0.65, 0.975, 0)
443
444
		local rS = Instance.new("Motor6D", torso)
445
		rS.Name = "Right Shoulder"
446
		rS.Part0 = rArm
447
		rS.Part1 = torso
448
		rS.C0 = CFrame.new(-0.325, 0.975, 0) * CFrame.Angles(0, 0, 0)
449
		rS.C1 = CFrame.new(-0.65, 0.975, 0) * CFrame.Angles(0, -math.rad(180), 0)
450
451
		local lH = Instance.new("Motor6D", torso)
452
		lH.Name = "Left Hip"
453
		lH.Part0 = lLeg
454
		lH.Part1 = torso
455
		lH.C0 = CFrame.new(0, 0.975, 0)
456
		lH.C1 = CFrame.new(0.325, -0.975, 0) * CFrame.Angles(0, 0, 0)
457
458
		local rH = Instance.new("Motor6D", torso)
459
		rH.Name = "Right Hip"
460
		rH.Part0 = rLeg
461
		rH.Part1 = torso
462
		rH.C0 = CFrame.new(0, 0.975, 0)
463
		rH.C1 = CFrame.new(-0.325, -0.975, 0) * CFrame.Angles(0, -math.rad(180), 0)
464
		
465
		for _,p in pairs(char:GetChildren()) do
466
			if p.Name ~= "HumanoidRootPart" and p.ClassName == "Part" then
467
				local hit = Instance.new("Part", char)
468
				hit.Name = "DamagePart"
469
				hit.BrickColor = BrickColor.new("Bright red")
470
				hit.Material = "SmoothPlastic"
471
				hit.Transparency = 1
472
				hit.Size = Vector3.new(p.Size.X + 0.05, p.Size.Y + 0.05, p.Size.Z + 0.05)
473
				hit.CanCollide = false
474
				weldTo(hit, p)
475
			end
476
		end
477
		
478
		local ticks = 0
479
		local times = 0
480
		
481
		local walkAnim = 0
482
		local increaseWalkAnim = 1
483
		
484
		local idleAnimRotX = 0
485
		local idleAnimRotZ = 0
486
		local sneaking = 0
487
		
488
		local RS = game:GetService("RunService").RenderStepped
489
		local Mouse = player:GetMouse()		
490
		
491
		local oldHP = humanoid.Health
492
		local damageTime = 0
493
		
494
		local punchRotX = 0
495
		local punchRotY = 0
496
		local punchRotZ = 0			
497
		local punchSpeed = 0
498
		local punching = 0
499
		local selectedBlock = 8
500
		local punchEnded = 1
501
		local itemOnHand = nil
502
		
503
		local handItem = Instance.new("Part", char)
504
		handItem.Name = "HandItem"
505
		handItem.Size = Vector3.new(0.52, 0.52, 0.52)
506
		handItem.Transparency = 1	
507
		handItem.CanCollide = false
508
		
509
		local handItemWeld = Instance.new("Weld", char)
510
		handItemWeld.Part0 = handItem
511
		handItemWeld.Part1 = lArm
512
		handItemWeld.C1 = CFrame.new(0, -0.9, -0.6) * CFrame.Angles(math.rad(-10), math.rad(45), 0)	
513
		
514
		local sound = Instance.new("Sound", char)
515
		sound.Name = "Hurt"
516
		sound.Volume = 10
517
		sound.SoundId = "rbxassetid://535690488"		
518
		
519
		local facesToResize = {"Front", "Back", "Left", "Right", "Bottom", "Top"}
520
		Mouse.Button1Down:connect(function()
521
			if punchEnded == 1 then punching = 1 end
522
			if Mouse.Target then
523
				if getDistance(head.CFrame.p, Mouse.Hit.p) <= 10.4 then
524
					local humanoid = Mouse.Target.Parent:FindFirstChild("Humanoid")
525
					if humanoid then
526
						humanoid.Health = humanoid.Health - 10
527
						local parts = Mouse.Target.Parent:GetChildren()
528
						for _,p in pairs(parts) do
529
							if p.ClassName == "Part" then
530
								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))
531
							end
532
						end
533
						return
534
					end
535
					local x = Mouse.Target.CFrame.p.X
536
					local y = Mouse.Target.CFrame.p.Y
537
					local z = Mouse.Target.CFrame.p.Z
538
					if Mouse.TargetSurface.Name == "Right" then x = x + 2.6 end
539
					if Mouse.TargetSurface.Name == "Left" then x = x - 2.6 end
540
					if Mouse.TargetSurface.Name == "Top" then y = y + 2.6 end
541
					if Mouse.TargetSurface.Name == "Bottom" then y = y - 2.6 end
542
					if Mouse.TargetSurface.Name == "Back" then z = z + 2.6 end
543
					if Mouse.TargetSurface.Name == "Front" then z = z - 2.6 end
544
					if Mouse.Target.Size.X > 2.6 or Mouse.Target.Size.Y > 2.6 or Mouse.Target.Size.Z > 2.6 then
545
						x = Mouse.Hit.p.X
546
						y = Mouse.Hit.p.Y
547
						z = Mouse.Hit.p.Z
548
					end
549
	--				local x = round(math.abs(mouseX)/2.6)*2.6
550
	--				local y = round(math.abs(mouseY)/2.6)*2.6
551
	--				local z = round(math.abs(mouseZ)/2.6)*2.6
552
	--				if Mouse.Hit.p.X < 0 then x = x * -1 end
553
	--				if Mouse.Hit.p.Y < 0 then y = y * -1 end
554
	--				if Mouse.Hit.p.Z < 0 then z = z * -1 end
555
					if selectedBlock == 0 then
556
						local blk = placeBlock(toolBar.Dirt, CFrame.new(x, y, z))
557
						for _,f in pairs(facesToResize) do
558
							blk:WaitForChild(f).StudsPerTileU = 2.6
559
							blk:WaitForChild(f).StudsPerTileV = 2.6
560
						end
561
					elseif selectedBlock == 1 then
562
						local blk = placeBlock(toolBar.Grass, CFrame.new(x, y, z))
563
						for _,f in pairs(facesToResize) do
564
							blk:WaitForChild(f).StudsPerTileU = 2.6
565
							blk:WaitForChild(f).StudsPerTileV = 2.6
566
						end
567
					elseif selectedBlock == 2 then
568
						local blk = placeBlock(toolBar.Stone, CFrame.new(x, y, z))
569
						for _,f in pairs(facesToResize) do
570
							blk:WaitForChild(f).StudsPerTileU = 2.6
571
							blk:WaitForChild(f).StudsPerTileV = 2.6
572
						end
573
					elseif selectedBlock == 3 then
574
						local blk = placeBlock(toolBar.Diamond_Ore, CFrame.new(x, y, z))
575
						for _,f in pairs(facesToResize) do
576
							blk:WaitForChild(f).StudsPerTileU = 2.6
577
							blk:WaitForChild(f).StudsPerTileV = 2.6
578
						end
579
					elseif selectedBlock == 4 then
580
						local blk = placeBlock(toolBar.Diamond_Block, CFrame.new(x, y, z))
581
						for _,f in pairs(facesToResize) do
582
							blk:WaitForChild(f).StudsPerTileU = 2.6
583
							blk:WaitForChild(f).StudsPerTileV = 2.6
584
						end
585
					elseif selectedBlock == 5 then
586
						local blk = placeBlock(toolBar.Wood_Planks, CFrame.new(x, y, z))
587
						for _,f in pairs(facesToResize) do
588
							blk:WaitForChild(f).StudsPerTileU = 2.6
589
							blk:WaitForChild(f).StudsPerTileV = 2.6
590
						end
591
					elseif selectedBlock == 6 then
592
						local blk = placeBlock(toolBar.Oak_Log, CFrame.new(x, y, z))
593
						for _,f in pairs(facesToResize) do
594
							blk:WaitForChild(f).StudsPerTileU = 2.6
595
							blk:WaitForChild(f).StudsPerTileV = 2.6
596
						end
597
					elseif selectedBlock == 7 or selectedBlock == 8 then
598
						if Mouse.Target.Size.X <= 10 and Mouse.Target.Size.Y <= 10 and Mouse.Target.Size.Z <= 10 then
599
							Mouse.Target.Parent = nil
600
						end
601
					end
602
				end
603
			end
604
		end)		
605
		
606
		local hasItemOnHand = 0
607
		local hi = 0
608
		-- selection thingy
609
		local selectLabel = Instance.new("TextLabel", gui)
610
		selectLabel.Size = UDim2.new(0, 32, 0, 32)
611
		selectLabel.Position = UDim2.new(0.5, -160 + (selectedBlock*40), 1, -105)
612
		selectLabel.BackgroundTransparency = 0.5
613
		selectLabel.BackgroundColor3 = Color3.new(1, 1, 1)
614
		selectLabel.BorderSizePixel = 0
615
		selectLabel.Text = ""
616
		selectLabel.ZIndex = 3
617
		--	
618
		Mouse.KeyDown:connect(function(key)
619
			if key == "q" then
620
				sneaking = 1
621
				humanoid.WalkSpeed = humanoid.WalkSpeed / 2
622
				rootJoint.C1 = CFrame.new(0, 0.325, 0) * CFrame.Angles(math.rad(sneaking*45), 0, 0)
623
				lH.C0 = CFrame.new(0, 0.975, 0) * CFrame.Angles(-math.rad(sneaking*45), 0, 0)
624
				rH.C0 = CFrame.new(0, 0.975, 0) * CFrame.Angles(math.rad(sneaking*45), 0, 0)
625
				--print("Sneaking...")
626
			end
627
			if key == "8" then 
628
				selectedBlock = 7
629
				itemOnHand = nil
630
				for _,d in pairs(handItem:GetChildren()) do
631
					d:Destroy()
632
				end
633
				if hasItemOnHand == 1 then hi = 1 end
634
			end
635
			if key == "9" then 
636
				selectedBlock = 8
637
				itemOnHand = nil
638
				for _,d in pairs(handItem:GetChildren()) do
639
					d:Destroy()
640
				end
641
				if hasItemOnHand == 1 then hi = 1 end
642
			end
643
			if key == "1" then 
644
				selectedBlock = 0
645
				itemOnHand = toolBar.Dirt
646
				for _,d in pairs(handItem:GetChildren()) do
647
					d:Destroy()
648
				end
649
				putTexture(handItem, itemOnHand.frontTex, itemOnHand.backTex,
650
					itemOnHand.topTex, itemOnHand.bottomTex,
651
					itemOnHand.leftTex, itemOnHand.rightTex, "Texture")
652
				for _,f in pairs(facesToResize) do
653
					handItem:WaitForChild(f).StudsPerTileU = 0.52
654
					handItem:WaitForChild(f).StudsPerTileV = 0.52
655
				end
656
			end
657
			if key == "2" then 
658
				selectedBlock = 1 
659
				itemOnHand = toolBar.Grass
660
				for _,d in pairs(handItem:GetChildren()) do
661
					d:Destroy()
662
				end
663
				putTexture(handItem, itemOnHand.frontTex, itemOnHand.backTex,
664
					itemOnHand.topTex, itemOnHand.bottomTex,
665
					itemOnHand.leftTex, itemOnHand.rightTex, "Texture")
666
				for _,f in pairs(facesToResize) do
667
					handItem:WaitForChild(f).StudsPerTileU = 0.52
668
					handItem:WaitForChild(f).StudsPerTileV = 0.52
669
				end
670
			end
671
			if key == "3" then 
672
				selectedBlock = 2 
673
				itemOnHand = toolBar.Stone
674
				for _,d in pairs(handItem:GetChildren()) do
675
					d:Destroy()
676
				end
677
				putTexture(handItem, itemOnHand.frontTex, itemOnHand.backTex,
678
					itemOnHand.topTex, itemOnHand.bottomTex,
679
					itemOnHand.leftTex, itemOnHand.rightTex, "Texture")
680
				for _,f in pairs(facesToResize) do
681
					handItem:WaitForChild(f).StudsPerTileU = 0.52
682
					handItem:WaitForChild(f).StudsPerTileV = 0.52
683
				end
684
			end
685
			if key == "4" then 
686
				selectedBlock = 3 
687
				itemOnHand = toolBar.Diamond_Ore
688
				for _,d in pairs(handItem:GetChildren()) do
689
					d:Destroy()
690
				end
691
				putTexture(handItem, itemOnHand.frontTex, itemOnHand.backTex,
692
					itemOnHand.topTex, itemOnHand.bottomTex,
693
					itemOnHand.leftTex, itemOnHand.rightTex, "Texture")
694
				for _,f in pairs(facesToResize) do
695
					handItem:WaitForChild(f).StudsPerTileU = 0.52
696
					handItem:WaitForChild(f).StudsPerTileV = 0.52
697
				end
698
			end
699
			if key == "5" then 
700
				selectedBlock = 4 
701
				itemOnHand = toolBar.Diamond_Block
702
				for _,d in pairs(handItem:GetChildren()) do
703
					d:Destroy()
704
				end
705
				putTexture(handItem, itemOnHand.frontTex, itemOnHand.backTex,
706
					itemOnHand.topTex, itemOnHand.bottomTex,
707
					itemOnHand.leftTex, itemOnHand.rightTex, "Texture")
708
				for _,f in pairs(facesToResize) do
709
					handItem:WaitForChild(f).StudsPerTileU = 0.52
710
					handItem:WaitForChild(f).StudsPerTileV = 0.52
711
				end
712
			end
713
			if key == "6" then 
714
				selectedBlock = 5 
715
				itemOnHand = toolBar.Wood_Planks
716
				for _,d in pairs(handItem:GetChildren()) do
717
					d:Destroy()
718
				end
719
				putTexture(handItem, itemOnHand.frontTex, itemOnHand.backTex,
720
					itemOnHand.topTex, itemOnHand.bottomTex,
721
					itemOnHand.leftTex, itemOnHand.rightTex, "Texture")
722
				for _,f in pairs(facesToResize) do
723
					handItem:WaitForChild(f).StudsPerTileU = 0.52
724
					handItem:WaitForChild(f).StudsPerTileV = 0.52
725
				end
726
			end
727
			if key == "7" then 
728
				selectedBlock = 6 
729
				itemOnHand = toolBar.Oak_Log
730
				for _,d in pairs(handItem:GetChildren()) do
731
					d:Destroy()
732
				end
733
				putTexture(handItem, itemOnHand.frontTex, itemOnHand.backTex,
734
					itemOnHand.topTex, itemOnHand.bottomTex,
735
					itemOnHand.leftTex, itemOnHand.rightTex, "Texture")
736
				for _,f in pairs(facesToResize) do
737
					handItem:WaitForChild(f).StudsPerTileU = 0.52
738
					handItem:WaitForChild(f).StudsPerTileV = 0.52
739
				end
740
			end
741
			if (key == "0" or key == "1" or key == "2" 
742
				or key == "3" or key == "4" or key == "5"
743
				or key == "6" or key == "7") and hasItemOnHand == 0 then hi = 1 end
744
			selectLabel.Position = UDim2.new(0.5, -160 + ((selectedBlock)*40), 1, -105)
745
		end)
746
		
747
		Mouse.KeyUp:connect(function(key)
748
			if key == "q" then
749
				sneaking = 0
750
				humanoid.WalkSpeed = humanoid.WalkSpeed * 2
751
				rootJoint.C1 = CFrame.new(0, 0.05, 0) * CFrame.Angles(0, 0, 0)
752
				lH.C0 = CFrame.new(0, 0.975, 0) * CFrame.Angles(0, 0, 0)
753
				rH.C0 = CFrame.new(0, 0.975, 0) * CFrame.Angles(0, 0, 0)
754
				--print("Stopped sneaking...")
755
			end
756
		end)
757
		
758
		while RS:wait() do
759
			if itemOnHand ~= nil then 
760
				hasItemOnHand = 1 
761
				handItem.Transparency = 0
762
			else 
763
				hasItemOnHand = 0 
764
				handItem.Transparency = 1
765
			end
766
			if humanoid.Health < oldHP then
767
				damageTime = 60
768
				sound:Play()
769
			end
770
			oldHP = humanoid.Health
771
			if damageTime > 0 and humanoid.Health > 0 then
772
				for _,p in pairs(char:GetChildren()) do
773
					if p.Name ~= "HumanoidRootPart" and p.ClassName == "Part" then
774
						if p.Name == "DamagePart" then
775
							p.Transparency = 0.5
776
						end
777
					end
778
				end
779
				damageTime = damageTime - 2
780
				if damageTime <= 0 then
781
					for _,p in pairs(char:GetChildren()) do
782
						if p.Name ~= "HumanoidRootPart" and p.ClassName == "Part" then
783
							if p.Name == "DamagePart" then
784
								p.Transparency = 1
785
							end
786
						end
787
					end
788
				end
789
			end
790
			camPart.CFrame = camera.CFrame
791
			neck.C1 = CFrame.new(0, 0.975, 0) * CFrame.fromEulerAnglesXYZ(math.rad(sneaking*45), math.rad(camPart.Orientation.Y - torso.Orientation.Y), 0)
792
			neck.C0 = CFrame.new(0, -0.65, 0) * CFrame.Angles(-math.rad(camPart.Orientation.X - torso.Orientation.X - (sneaking*45)), 0, 0)		
793
			
794
			if getMagnitudeXZ(torso.Velocity) > 1 then
795
				if walkAnim >= 1 then
796
					increaseWalkAnim = -1
797
				elseif walkAnim <= -1 then
798
					increaseWalkAnim = 1
799
				end
800
				walkAnim = walkAnim + (increaseWalkAnim/(10+(sneaking*20)))
801
			else
802
				walkAnim = 0
803
			end
804
			
805
			--lH.C0 = CFrame.new(0, 0.975, 0) * CFrame.Angles(-math.rad(sneaking*45), 0, 0)
806
			--rH.C0 = CFrame.new(0, 0.975, 0) * CFrame.Angles(math.rad(sneaking*45), 0, 0)
807
			lH.C0 = lH.C0:lerp(CFrame.new(0, 0.975, 0) * CFrame.Angles(-math.rad(sneaking*45) + math.rad(damageTime*1.5) + math.rad(walkAnim*getMagnitudeXZ(torso.Velocity)*5/(1+sneaking)), 0, 0), 0.1)
808
	    	rH.C0 = rH.C0:lerp(CFrame.new(0, 0.975, 0) * CFrame.Angles(math.rad(sneaking*45) + math.rad(damageTime*1.5) + math.rad(walkAnim*getMagnitudeXZ(torso.Velocity)*5/(1+sneaking)), 0, 0), 0.1)
809
			--
810
			--rootJoint.C0 = CFrame.new(0, 0, 0) * CFrame.Angles(0, 0, 0)
811
			--print(math.abs(head.Orientation.Y) - math.abs(humRootPart.Orientation.Y))
812
			--if (head.Orientation.Y * 2) - (head.Orientation.Y + torso.Orientation.Y) > 45 then
813
				--humRootPart.CFrame = humRootPart.CFrame * CFrame.Angles(0, math.rad(-45 + head.Orientation.Y), 0)
814
				--print("-45")
815
			--end
816
			--if (head.Orientation.Y * 2) - (head.Orientation.Y + torso.Orientation.Y) < -45 then
817
				--humRootPart.CFrame = humRootPart.CFrame * CFrame.Angles(0, math.rad(45 + head.Orientation.Y), 0)
818
				--print("45")
819
			--end
820
			
821
			--move these arms
822
			rootJoint.C1 = rootJoint.C1:lerp(CFrame.new(0, 0.325, 0) * CFrame.Angles(math.rad(sneaking*45), math.rad(punchRotY), 0), 0.2)
823
			
824
	    	lS.C0 = lS.C0:lerp(CFrame.new(-0.325, 0.975, 0) * CFrame.Angles(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) + divide(punchSpeed, 6) + hi)
825
	    	rS.C0 = rS.C0:lerp(CFrame.new(-0.325, 0.975, 0) * CFrame.Angles(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))
826
			if punching == 1 and punchEnded == 1 then
827
				punching = 0
828
				--print("steve uses punch!!")
829
				local coPunch = coroutine.wrap(function()
830
					punchEnded = 0
831
					punchSpeed = 1
832
					punchRotX = -60
833
					punchRotY = -8
834
					punchRotZ = -35
835
					wait(0.075)
836
					punchSpeed = 1
837
					punchRotX = -75
838
					punchRotY = 8
839
					punchRotZ = 40
840
					wait(0.075)
841
					punchSpeed = 1
842
					punchRotX = -20
843
					punchRotZ = 40
844
					wait(0.075)
845
					punchSpeed = 3.5
846
					punchRotX = 0
847
					punchRotY = 0
848
					punchRotZ = 0
849
					punchEnded = 1
850
					wait(0.06)	
851
					punchSpeed = 0			
852
				end)
853
				coPunch()
854
			end			
855
			if ticks > 20 then
856
				ticks = 0
857
				if times == 0 then
858
					times = times + 1
859
					idleAnimRotX = -1
860
					idleAnimRotZ = 0
861
				elseif times == 1 then
862
					times = times + 1
863
					idleAnimRotX = -0.75
864
					idleAnimRotZ = -0.75
865
				elseif times == 2 then
866
					times = times + 1
867
					idleAnimRotX = 0
868
					idleAnimRotZ = -1
869
				elseif times == 3 then
870
					times = times + 1
871
					idleAnimRotX = 0.75
872
					idleAnimRotZ = -0.75
873
					--idleAnimRotX = 0.75
874
					--idleAnimRotZ = -0
875
				elseif times == 4 then
876
					times = times + 1
877
					idleAnimRotX = 1
878
					idleAnimRotZ = 0
879
					--idleAnimRotX = 1
880
					--idleAnimRotZ = 0
881
				elseif times == 5 then
882
					times = times + 1
883
					idleAnimRotX = 0.75
884
					idleAnimRotZ = 0.75
885
				elseif times == 6 then
886
					times = times + 1
887
					idleAnimRotX = 0
888
					idleAnimRotZ = 1
889
				elseif times == 7 then
890
					times = 0
891
					idleAnimRotX = -0.75
892
					idleAnimRotZ = 0.75
893
				end
894
			end
895
			if hi == 1 then hi = 0 end
896
			ticks = ticks + 1
897
		end
898
	end
899
end