View difference between Paste ID: qafTm5uz and E5FnA63X
SHOW: | | - or go back to the newest paste.
1
--https://github.com/Mokiros/roblox-FE-compatibility
2
if game:GetService("RunService"):IsClient() then error("Script must be server-side in order to work; use h/ and not hl/") end
3
local Player,game,owner = owner,game
4
local RealPlayer = Player
5
do
6
    print("FE Compatibility code V2 by Mokiros")
7
    local RealPlayer = RealPlayer
8
    script.Parent = RealPlayer.Character
9
 
10
    --Fake event to make stuff like Mouse.KeyDown work
11
    local Disconnect_Function = function(this)
12
        this[1].Functions[this[2]] = nil
13
    end
14
    local Disconnect_Metatable = {__index={disconnect=Disconnect_Function,Disconnect=Disconnect_Function}}
15
    local FakeEvent_Metatable = {__index={
16
        Connect = function(this,f)
17
            local i = tostring(math.random(0,10000))
18
            while this.Functions[i] do
19
                i = tostring(math.random(0,10000))
20
            end
21
            this.Functions[i] = f
22
            return setmetatable({this,i},Disconnect_Metatable)
23
        end
24
    }}
25
    FakeEvent_Metatable.__index.connect = FakeEvent_Metatable.__index.Connect
26
    local function fakeEvent()
27
        return setmetatable({Functions={}},FakeEvent_Metatable)
28
    end
29
 
30
    --Creating fake input objects with fake variables
31
    local FakeMouse = {Hit=CFrame.new(),KeyUp=fakeEvent(),KeyDown=fakeEvent(),Button1Up=fakeEvent(),Button1Down=fakeEvent(),Button2Up=fakeEvent(),Button2Down=fakeEvent()}
32
    FakeMouse.keyUp = FakeMouse.KeyUp
33
    FakeMouse.keyDown = FakeMouse.KeyDown
34
    local UIS = {InputBegan=fakeEvent(),InputEnded=fakeEvent()}
35
    local CAS = {Actions={},BindAction=function(self,name,fun,touch,...)
36
        CAS.Actions[name] = fun and {Name=name,Function=fun,Keys={...}} or nil
37
    end}
38
    --Merged 2 functions into one by checking amount of arguments
39
    CAS.UnbindAction = CAS.BindAction
40
 
41
    --This function will trigger the events that have been :Connect()'ed
42
    local function TriggerEvent(self,ev,...)
43
        for _,f in pairs(self[ev].Functions) do
44
            f(...)
45
        end
46
    end
47
    FakeMouse.TriggerEvent = TriggerEvent
48
    UIS.TriggerEvent = TriggerEvent
49
 
50
    --Client communication
51
    local Event = Instance.new("RemoteEvent")
52
    Event.Name = "UserInput_Event"
53
    Event.OnServerEvent:Connect(function(plr,io)
54
        if plr~=RealPlayer then return end
55
        FakeMouse.Target = io.Target
56
        FakeMouse.Hit = io.Hit
57
        if not io.isMouse then
58
            local b = io.UserInputState == Enum.UserInputState.Begin
59
            if io.UserInputType == Enum.UserInputType.MouseButton1 then
60
                return FakeMouse:TriggerEvent(b and "Button1Down" or "Button1Up")
61
            end
62
            if io.UserInputType == Enum.UserInputType.MouseButton2 then
63
                return FakeMouse:TriggerEvent(b and "Button2Down" or "Button2Up")
64
            end
65
            for _,t in pairs(CAS.Actions) do
66
                for _,k in pairs(t.Keys) do
67
                    if k==io.KeyCode then
68
                        t.Function(t.Name,io.UserInputState,io)
69
                    end
70
                end
71
            end
72
            FakeMouse:TriggerEvent(b and "KeyDown" or "KeyUp",io.KeyCode.Name:lower())
73
            UIS:TriggerEvent(b and "InputBegan" or "InputEnded",io,false)
74
        end
75
    end)
76
    Event.Parent = NLS([==[local Event = script:WaitForChild("UserInput_Event")
77
    local Mouse = owner:GetMouse()
78
    local UIS = game:GetService("UserInputService")
79
    local input = function(io,RobloxHandled)
80
        if RobloxHandled then return end
81
        --Since InputObject is a client-side instance, we create and pass table instead
82
        Event:FireServer({KeyCode=io.KeyCode,UserInputType=io.UserInputType,UserInputState=io.UserInputState,Hit=Mouse.Hit,Target=Mouse.Target})
83
    end
84
    UIS.InputBegan:Connect(input)
85
    UIS.InputEnded:Connect(input)
86
 
87
    local h,t
88
    --Give the server mouse data every second frame, but only if the values changed
89
    --If player is not moving their mouse, client won't fire events
90
    local HB = game:GetService("RunService").Heartbeat
91
    while true do
92
        if h~=Mouse.Hit or t~=Mouse.Target then
93
            h,t=Mouse.Hit,Mouse.Target
94
            Event:FireServer({isMouse=true,Target=t,Hit=h})
95
        end
96
        --Wait 2 frames
97
        for i=1,2 do
98
            HB:Wait()
99
        end
100
    end]==],script)
101
 
102
    ----Sandboxed game object that allows the usage of client-side methods and services
103
    --Real game object
104
    local RealGame = game
105
 
106
    --Metatable for fake service
107
    local FakeService_Metatable = {
108
        __index = function(self,k)
109
            local s = rawget(self,"_RealService")
110
            if s then
111
                return typeof(s[k])=="function"
112
                and function(_,...)return s[k](s,...)end or s[k]
113
            end
114
        end,
115
        __newindex = function(self,k,v)
116
            local s = rawget(self,"_RealService")
117
            if s then s[k]=v end
118
        end
119
    }
120
    local function FakeService(t,RealService)
121
        t._RealService = typeof(RealService)=="string" and RealGame:GetService(RealService) or RealService
122
        return setmetatable(t,FakeService_Metatable)
123
    end
124
 
125
    --Fake game object
126
    local FakeGame = {
127
        GetService = function(self,s)
128
            return rawget(self,s) or RealGame:GetService(s)
129
        end,
130
        Players = FakeService({
131
            LocalPlayer = FakeService({GetMouse=function(self)return FakeMouse end},Player)
132
        },"Players"),
133
        UserInputService = FakeService(UIS,"UserInputService"),
134
        ContextActionService = FakeService(CAS,"ContextActionService"),
135
        RunService = FakeService({
136
            _btrs = {},
137
            RenderStepped = RealGame:GetService("RunService").Heartbeat,
138
            BindToRenderStep = function(self,name,_,fun)
139
                self._btrs[name] = self.Heartbeat:Connect(fun)
140
            end,
141
            UnbindFromRenderStep = function(self,name)
142
                self._btrs[name]:Disconnect()
143
            end,
144
        },"RunService")
145
    }
146
    rawset(FakeGame.Players,"localPlayer",FakeGame.Players.LocalPlayer)
147
    FakeGame.service = FakeGame.GetService
148
    FakeService(FakeGame,game)
149
    --Changing owner to fake player object to support owner:GetMouse()
150
    game,owner = FakeGame,FakeGame.Players.LocalPlayer
151
end
152
	--[[ Thank you ]]--
153
-------------------------------------------------------
154
--[[
155
156
This script was created by WafflesAreVeryGood or Nobody#3907
157
158
--]]
159
-------------------------------------------------------
160
	--[[ Reference ]]--
161
--[[
162
	Burn Function
163
	hurt(char.Head, 15, "Burn", {char, {Color = Color3.new(0,1,1), Time = 1, Rate = 20, Damage = {1,5}}})
164
	
165
	Freeze Function
166
	hurt(char.Head, 0, "Freeze", {char, 1})
167
	
168
	Stun Function
169
	hurt(char.Head, 0, "Stun", {char, 0.2})
170
--]]
171
-------------------------------------------------------
172
math.randomseed(tick())
173
print("You are using a script created by WafflesAreVeryGood!")
174
warn("--------Global Message--------")
175
warn(game:GetService("MarketplaceService"):GetProductInfo(1720721621).Description)
176
warn("------------------------------")
177
	--[[Changeable Variables]]--
178
local settings = {}
179
--ShowDamage settings
180
settings.Damage = {
181
	Color = nil,
182
	StrokeColor = nil,
183
	Font = nil,
184
}
185
settings.ShowDamageEnabled = false
186
settings.CustomAnim = true
187
local soundlist = {
188
	HardHit1 = "rbxassetid://565207203",
189
	HardHit2 = "rbxassetid://541909913",
190
	HardHit3 = "rbxassetid://541909983",
191
	WeakHit1 = "rbxassetid://558642292",
192
	WeakHit2 = "rbxassetid://541907812",
193
	Slice1 = "rbxassetid://260429964",
194
	Slice2 = "rbxassetid://260430015",
195
	Explosion1 = "rbxassetid://138186576",
196
	Explosion2 = "rbxassetid://157878578",
197
	Woosh1 = "rbxassetid://541909867",
198
	Woosh2 = "rbxassetid://541909763",
199
	Freeze = "rbxassetid://268249319",
200
	Thaw = "rbxassetid://1578580965",
201
	Burn = "rbxassetid://298181829",
202
	
203
}
204
local attack_data = {
205
	{
206
		Name = "Attack",
207
		Description = "Description",
208
		Key = "Key",
209
	},
210
	
211
}
212
213
	--[[Important Variables]]--
214
local plr = game:GetService('Players').LocalPlayer
215
local char = plr.Character
216
local mouse = plr:GetMouse()
217
local input = game:GetService('UserInputService')
218
----
219
local joints = {"Right Shoulder", "Left Shoulder", "Right Hip", "Left Hip", "Neck", "RootJoint"}
220
local torso,head,rootpart = char.Torso,char.Head,char.HumanoidRootPart
221
local rs = torso["Right Shoulder"]
222
local ls = torso["Left Shoulder"]
223
local rh = torso["Right Hip"]
224
local lh = torso["Left Hip"]
225
local neck = torso.Neck
226
local rj = rootpart["RootJoint"]
227
local humanoid = char:FindFirstChildOfClass("Humanoid")
228
----
229
local huge = Vector3.new(math.huge, math.huge, math.huge)
230
local attacking = false
231
local cananim = true
232
local animpose = "Idle"
233
local lastpose = animpose
234
local movespeed = 0
235
----
236
	--[[ Anti-Decompile ]]--
237
script.Parent = workspace.CurrentCamera
238
game:GetService('Players').LocalPlayer.CharacterAdded:connect(function()
239
	script:Destroy()
240
end)
241
	--[[ Moves Gui ]]--
242
243
local mgui = Instance.new("ScreenGui")
244
mgui.Name = "MovesGui"
245
local bg = Instance.new("Frame")
246
bg.BackgroundColor3 = Color3.new(61/255,61/255,61/255)
247
bg.Position = UDim2.new(0,504,0,164)
248
bg.Name = "Background"
249
bg.Size = UDim2.new(-0.035,379,0,225)
250
bg.Visible = false
251
bg.Parent = mgui
252
local container = Instance.new("ScrollingFrame")
253
container.Name = "Container"
254
container.BackgroundColor3 = Color3.new(70/255,70/255,70/255)
255
container.BorderSizePixel = 0
256
container.Visible = true
257
container.Position = UDim2.new(0,16,0,46)
258
container.Size = UDim2.new(0,132,0,162)
259
container.CanvasSize = UDim2.new(0,0,0,10)
260
container.ScrollBarThickness = 4
261
container.Parent = bg
262
local copy = Instance.new("TextButton")
263
copy.Name = "Move"
264
copy.BackgroundColor3 = Color3.new(77/255,77/255,77/255)
265
copy.BorderSizePixel = 0
266
copy.Position = UDim2.new(0,4,0,4)
267
copy.Size = UDim2.new(0,118,0,29)
268
copy.Font = "SourceSansLight"
269
copy.Text = "Move Name"
270
copy.TextColor3 = Color3.new(197/255,0,0)
271
copy.TextSize = 20
272
copy.Visible = false
273
copy.Parent = container
274
local atkinfo = container:Clone()
275
for _,v in pairs(atkinfo:GetChildren()) do v:Destroy() end
276
atkinfo.Name = "AtkInfo"
277
atkinfo.Visible = true
278
atkinfo.Position = UDim2.new(0,167,0,50)
279
atkinfo.Size = UDim2.new(0,159,0,165)
280
atkinfo.Parent = bg
281
local movename = Instance.new("TextLabel")
282
movename.Name = "MoveName"
283
movename.BackgroundColor3 = Color3.new(77/255,77/255,77/255)
284
movename.BorderSizePixel = 0
285
movename.Position = UDim2.new(0,4,0,4)
286
movename.Size = UDim2.new(0,150,0,30)
287
movename.Font = "SourceSansLight"
288
movename.TextColor3 = Color3.new(197/255,0,0)
289
movename.TextSize = 20
290
movename.Text = "same"
291
movename.Parent = atkinfo
292
local movedesc = movename:Clone()
293
movedesc.Position = UDim2.new(0,4,0,47)
294
movedesc.Size = UDim2.new(0,150,0,133)
295
movedesc.Text = "Move Description"
296
movedesc.TextSize = 18
297
movedesc.Name = "MoveDesc"
298
movedesc.TextXAlignment = "Left"
299
movedesc.TextYAlignment = "Top"
300
movedesc.TextWrapped = true
301
movedesc.Parent = atkinfo
302
local title = movedesc:Clone()
303
title.Name = "Title"
304
title.Font = "SourceSansLight"
305
title.Text = "Moves List"
306
title.TextSize = 28
307
title.BackgroundColor3 = Color3.new(36/255,36/255,36/255)
308
title.Position = UDim2.new(0,0,0,0)
309
title.Size = UDim2.new(1,0,0,30)
310
title.TextXAlignment = "Center"
311
title.TextYAlignment = "Center"
312
title.Parent = bg
313
local toggle = copy:Clone()
314
toggle.BackgroundColor3 = Color3.new(61/255,61/255,61/255)
315
toggle.Position = UDim2.new(0,0,0,288)
316
toggle.Size = UDim2.new(0,70,0,20)
317
toggle.Visible = true
318
toggle.Font = "SourceSans"
319
toggle.Text = "Toggle Moves"
320
toggle.Name = "Toggle"
321
toggle.TextSize = 14
322
toggle.Parent = mgui
323
mgui.Parent = plr:FindFirstChildOfClass("PlayerGui")
324
mgui.Enabled = false
325
toggle.MouseButton1Click:connect(function()
326
	bg.Visible = not bg.Visible
327
end)
328
local pos = copy.Position -UDim2.new(0,0,0,29)
329
for _,data in pairs(attack_data) do
330
	local new = copy:Clone()
331
	pos = pos +UDim2.new(0,0,0,29)
332
	container.CanvasSize = container.CanvasSize +UDim2.new(0,0,0,29)
333
	new.Position = pos
334
	new.Text = data.Name.."["..data.Key.."]"
335
	new.Visible = true
336
	spawn(function()
337
		swait()
338
		if not new.TextFits then
339
			new.TextScaled = true
340
		end
341
	end)
342
	new.Parent = container
343
	new.MouseButton1Click:connect(function()
344
		movename.Text = data.Name
345
		movedesc.Text = data.Description
346
		spawn(function()
347
			swait()
348
			if not movename.TextFits then
349
				movename.TextScaled = true
350
			else
351
				movename.TextScaled = false
352
			end
353
			if not movedesc.TextFits then
354
				movename.TextScaled = true
355
			else
356
				movename.TextScaled = false
357
			end
358
		end)
359
	end)
360
end
361
	--[[ Functions ]]--
362
363
function addattack(keycode, func)
364
	if keycode ~= "MouseClick" then
365
		input.InputBegan:connect(function(inp)
366
			if inp.KeyCode == keycode and not input:GetFocusedTextBox() then
367
				func()
368
			end
369
		end)
370
	else
371
		mouse.Button1Down:connect(function()
372
			func()
373
		end)
374
	end
375
end
376
function attackend(keycode, func)
377
	input.InputEnded:connect(function(inp)
378
		if inp.KeyCode == keycode and not input:GetFocusedTextBox() then
379
			func()
380
		end
381
	end)
382
end
383
function swait(t)
384
	if t then
385
		for i = 0, t do
386
			game:GetService('RunService').Stepped:wait(0)
387
		end
388
	else
389
		game:GetService('RunService').Stepped:wait(0)
390
	end
391
	return true
392
end
393
function fade(obj, dest, grow)
394
	spawn(function()
395
		local oldcf = obj.CFrame
396
		for i = 0, 10 do
397
			if grow then
398
				obj.Size = obj.Size +Vector3.new(1,1,1)
399
				obj.CFrame = oldcf
400
			end
401
			obj.Transparency = obj.Transparency +0.1
402
			swait()
403
		end
404
		if dest then
405
		obj:Destroy()
406
		end
407
	end)
408
end
409
function replacejoint(name)
410
	local j = torso:FindFirstChild(name)
411
	if not j then j = char.HumanoidRootPart:FindFirstChild(name) end
412
	if j then
413
		if true then
414
			local already = j.Parent:FindFirstChild(j.Name.." Replacement")
415
			local new = Instance.new("Weld")
416
			local c0 = j.C0
417
			local c1 = j.C1
418
			new.Part0 = j.Part0
419
			j.Part0 = nil
420
			new.Name = j.Name.." Replacement"
421
			if already then c0 = already.C0 c1 = already.C1 already:Destroy() end
422
			new.Parent = j.Parent
423
			new.Part1 = j.Part1
424
			new.C0 = c0
425
			new.C1 = c1
426
			return new
427
		end
428
	end
429
end
430
function removejoint(name, fast)
431
	local j = torso:FindFirstChild(name.." Replacement")
432
	if not j then j = char.HumanoidRootPart:FindFirstChild(name.." Replacement") end
433
	if j then
434
		local p0 = j.Part0
435
		if p0 ~= nil then
436
		local c0 = j.C0
437
		local c1 = j.C1
438
		j:Destroy()
439
		local new = p0:FindFirstChild(name)
440
		local ac0 = new.C0
441
		local ac1 = new.C1
442
		new.Part0 = p0
443
		new.C0 = c0
444
		new.C1 = c1
445
		spawn(function()
446
			if name ~= "RootJoint" then
447
			if not fast then
448
			for i = 0, 0.6, 0.1 do
449
				print(i)
450
				new.C0 = new.C0:Lerp(ac0, 0.5)
451
				new.C1 = new.C1:lerp(ac1, 0.5)
452
				swait()
453
			end
454
			else
455
				new.C0 = new.C0:Lerp(ac0, 1)
456
				new.C1 = new.C1:lerp(ac1, 1)
457
			end
458
			end
459
		end)
460
		end
461
	end
462
end
463
function fixalljoints(fast)
464
	for i,v in pairs({"Right Shoulder", "Left Shoulder", "Right Hip", "Left Hip",  "Neck", "RootJoint"}) do
465
		removejoint(v, fast)
466
	end
467
end
468
function getnewjoints()
469
	local rs = replacejoint("Right Shoulder")
470
	local ls = replacejoint("Left Shoulder")
471
	local rh = replacejoint("Right Hip")
472
	local lh = replacejoint("Left Hip")
473
	local neck = replacejoint("Neck")
474
	local rj = replacejoint("RootJoint")
475
	return rs,ls,rh,lh,neck,rj
476
end
477
function knockback(hit, force)
478
	local bv = Instance.new("BodyVelocity")
479
	bv.MaxForce = huge
480
	bv.Velocity = force
481
	bv.Parent = hit
482
	game:GetService('Debris'):AddItem(bv, 0.15)
483
end
484
function soundeffect(id, volume, speed, parent, extra)
485
	extra = extra or {}
486
	local func = function()
487
		local s = LoadLibrary("RbxUtility").Create("Sound")()
488
		s.Name = "WSoundEffect"
489
		s.Volume = volume
490
		s.PlaybackSpeed = speed
491
		s.SoundId = id
492
		s.Looped = false
493
		if extra.Pitch then
494
			local ef = Instance.new("PitchShiftSoundEffect")
495
			ef.Octave = extra.Pitch or 1
496
			ef.Enabled = true
497
			ef.Priority = 0
498
			ef.Parent = s
499
		end
500
		s.Parent = parent
501
		if extra.Immune then
502
			Instance.new("StringValue", s).Name = "Immune"
503
		end
504
		s:Play()
505
		s.TimePosition = extra.Start or 0
506
		repeat swait() until not s.Playing or s.TimePosition >= (extra.End or 99999)
507
		s:Destroy()
508
		return s
509
	end
510
	if extra.ForceWait then
511
		func()
512
	else
513
		return spawn(func)
514
	end
515
end
516
function getfunction(nm)
517
	if nm == "Burn" then
518
		return function(character, data)
519
			if character:FindFirstChild("Burn") then
520
				return
521
			end
522
			local val = Instance.new("StringValue")
523
			val.Name = "Burn"
524
			val.Parent = character
525
			for i = 1, data.Time*100 do
526
				if not character:FindFirstChild("Burn") then
527
					break
528
				end
529
				if i%data.Rate == 0 then
530
					local hum = character:FindFirstChildOfClass("Humanoid")
531
					if hum then
532
						hurt(torso, data.Damage)
533
					end
534
					soundeffect(soundlist.Burn, 1, 1, torso)
535
					spawn(function()
536
						for i = 1, 4 do
537
							spawn(function()
538
								local p = Instance.new("Part")
539
								p.Material = "Neon"
540
								p.CanCollide = false
541
								p.Anchored = true
542
								p.Size = Vector3.new(0.5,0.5,0.5)
543
								p.Name = "fireeffect"
544
								p.Color = data.Color or Color3.new(1,162/255,0)
545
								p.CFrame = torso.CFrame *CFrame.new(math.random(-10,10)/10,math.random(-10,10)/10,math.random(-10,10)/10)
546
								p.Parent = torso
547
								local offset = CFrame.Angles(math.rad(math.random(-360,360)),math.rad(math.random(-360,360)),math.rad(math.random(-360,360)))
548
								local endcf = CFrame.new(p.Position+Vector3.new(math.random(-10,10)/10,3,math.random(-10,10)/10))*offset
549
								local opcf = p.CFrame
550
								local opsz = p.Size
551
								for i = 0, 1, 0.01 do
552
									p.Transparency = i/1
553
									local cf = p.CFrame
554
									p.Size = opsz:Lerp(Vector3.new(0.05,0.05,0.05), i/1)
555
									p.CFrame = cf
556
									p.CFrame = opcf:Lerp( endcf*CFrame.Angles(math.rad(math.sin(i)*360),math.rad(math.cos(i)*360),math.rad(math.sin(i)*360)), i/1 )
557
									swait()
558
								end
559
								p:Destroy()
560
								swait(5)
561
							end)
562
							swait()
563
						end
564
					end)
565
				end
566
				swait()
567
			end
568
			val:Destroy()
569
		end
570
	end
571
	if nm == "Poison" then
572
		return function(character, data)
573
			
574
		end
575
	end
576
	if nm == "Freeze" then
577
		return function(character, t)
578
			if not character:FindFirstChild("Frozen") then
579
				local val = Instance.new("StringValue")
580
				val.Name = "Frozen"
581
				val.Parent = character
582
				local unanchor = {}
583
				local freezeparts = {}
584
				soundeffect(soundlist.Freeze, 1, 3, character:FindFirstChild("Torso") or character:FindFirstChild("UpperTorso"))
585
				for _,v in pairs(character:GetDescendants()) do
586
					if v:IsA("BasePart") and v.Name ~= "freezepart" and v.Name ~= "fireeffect" then
587
						if v.Transparency ~= 1 then
588
							if not v.Anchored then
589
								table.insert(unanchor, v)
590
							end
591
							v.Anchored = true
592
							local new = v:Clone()
593
							new:ClearAllChildren()
594
							local mesh = v:FindFirstChildOfClass("SpecialMesh")
595
							if mesh then
596
								mesh = mesh:Clone()
597
								mesh.TextureId = ""
598
								if mesh.Scale ~= Vector3.new(1,1,1) then
599
									mesh.Scale = mesh.Scale +Vector3.new(0.05,0.05,0.05)
600
								end
601
								mesh.Parent = new
602
							end
603
							new.Size = new.Size+Vector3.new(0.05,0.05,0.05)
604
							new.CanCollide = false
605
							new.Anchored = true
606
							new.Name = "freezepart"
607
							new.Material = "Ice"
608
							new.BrickColor = BrickColor.new("Pastel light blue")
609
							new.TopSurface = "Smooth"
610
							new.BottomSurface = "Smooth"
611
							new.Transparency = 0
612
							new.CFrame = v.CFrame
613
							new.Parent = v
614
							table.insert(freezeparts, new)
615
						end
616
					end
617
				end
618
				swait(50*t)
619
				soundeffect(soundlist.Thaw, 1, 1, character:FindFirstChild("Torso") or character:FindFirstChild("UpperTorso"))
620
				val:Destroy()
621
				for _,v in pairs(unanchor) do
622
					v.Anchored = false
623
				end
624
				for _,v in pairs(freezeparts) do
625
					v.Anchored = false
626
					v.CanCollide = true
627
					v.Velocity = CFrame.Angles(math.rad(math.random(-360,360)),math.rad(math.random(-360,360)),math.rad(math.random(-360,360))).lookVector*25
628
					game:GetService('Debris'):AddItem(v, 5)
629
				end
630
			end
631
		end
632
	end
633
	if nm == "Stun" then
634
		return function(character, t)
635
			local humanoid = character:FindFirstChildOfClass("Humanoid")
636
			local val = Instance.new("StringValue")
637
			val.Name = "Stun"
638
			val.Parent = character
639
			if humanoid then
640
				humanoid.PlatformStand = true
641
			end
642
			for i = 1, t*100 do
643
				if humanoid then
644
					humanoid.PlatformStand = true
645
				end
646
				swait()
647
			end
648
			if humanoid then
649
				humanoid.PlatformStand = false
650
			end
651
			val:Destroy()
652
		end
653
	end
654
	if nm == "Paralyze" then
655
		return function(character, t)
656
			
657
		end
658
	end
659
	return
660
end
661
function showdamage(cf, txtdata)
662
	--[[
663
		[Text Data]
664
			Font
665
			Text
666
			Color
667
			StrokeColor {NOTE: If strokecolor not provided, then will default the StrokeTransparency to 1}
668
	--]]
669
	local p = Instance.new("Part")
670
	p.Name = "DamagePart"
671
	p.CanCollide = false
672
	p.Anchored = true
673
	p.Transparency = 1
674
	p.Size = Vector3.new(0.1,0.1,0.1)
675
	p.CFrame = cf
676
	local gui = Instance.new("BillboardGui")
677
	gui.Name = "GUI"
678
	gui.Adornee = p
679
	gui.LightInfluence = 0
680
	gui.Size = UDim2.new(1.5,0,0.7,0)
681
	gui.StudsOffset = Vector3.new(0,0.5,0)
682
	local tl = Instance.new("TextLabel")
683
	tl.Name = "tl"
684
	tl.BackgroundTransparency = 1
685
	tl.Position = UDim2.new(0,0,0,0)
686
	tl.Size = UDim2.new(2,0,2,0)
687
	tl.Font = txtdata.Font or "SourceSans"
688
	tl.TextColor3 = txtdata.Color or Color3.new(1,0,0)
689
	tl.Text = txtdata.Text or ""
690
	tl.TextScaled = true
691
	tl.TextStrokeColor3 = txtdata.StrokeColor or Color3.new()
692
	tl.TextStrokeTransparency = txtdata.StrokeColor and 0 or 1
693
	tl.Rotation = math.random(-10,10)
694
	tl.Parent = gui
695
	gui.Parent = p
696
	local og = gui
697
	gui = og:Clone()
698
	gui.Parent = og.Parent
699
	tl = gui.tl
700
	og:Destroy()
701
	p.Parent = char
702
	spawn(function()
703
		for i = 1, 100 do
704
			gui.StudsOffset = gui.StudsOffset:Lerp(Vector3.new(0,1,0), i/100)
705
			tl.TextTransparency = Vector3.new(tl.TextTransparency,0,0):Lerp(Vector3.new(1,0,0), 0.02).X
706
			if txtdata.StrokeColor then
707
				tl.TextStrokeTransparency = Vector3.new(tl.TextStrokeTransparency,0,0):Lerp(Vector3.new(1,0,0), 0.02).X
708
			end
709
			swait()
710
		end
711
		p:Destroy()
712
	end)
713
end
714
function stabilizer(obj)
715
	local bp = Instance.new("BodyPosition")
716
	bp.MaxForce = huge
717
	bp.Position = obj.Position
718
	bp.Parent = obj
719
end
720
function setshape(obj, typ)
721
	local m = obj:FindFirstChildOfClass("SpecialMesh") or Instance.new("SpecialMesh")
722
	m.MeshId = typ == "Ring" and "rbxassetid://3270017" or ""
723
	m.TextureId = ""
724
	if typ == "Ring" then
725
		typ = "FileMesh"
726
	end
727
	m.MeshType = typ
728
	m.Parent = obj
729
end
730
function camshake(direction, intensity, duration)
731
	if direction:lower() == "inout" then
732
		workspace.CurrentCamera.FieldOfView = intensity
733
		game:GetService('TweenService'):Create(workspace.CurrentCamera, TweenInfo.new(duration, Enum.EasingStyle.Bounce, Enum.EasingDirection.Out), {FieldOfView = 70}):Play()
734
	elseif direction:lower() == "left" then
735
		humanoid.CameraOffset = Vector3.new(intensity,0,0)
736
		game:GetService('TweenService'):Create(workspace.CurrentCamera, TweenInfo.new(duration, Enum.EasingStyle.Bounce, Enum.EasingDirection.Out), {CameraOffset = Vector3.new()}):Play()
737
	elseif direction:lower() == "right" then
738
		humanoid.CameraOffset = Vector3.new(-intensity,0,0)
739
		game:GetService('TweenService'):Create(workspace.CurrentCamera, TweenInfo.new(duration, Enum.EasingStyle.Bounce, Enum.EasingDirection.Out), {CameraOffset = Vector3.new()}):Play()
740
	elseif direction:lower() == "up" then
741
		humanoid.CameraOffset = Vector3.new(0,intensity,0)
742
		game:GetService('TweenService'):Create(workspace.CurrentCamera, TweenInfo.new(duration, Enum.EasingStyle.Bounce, Enum.EasingDirection.Out), {CameraOffset = Vector3.new()}):Play()
743
	elseif direction:lower() == "down" then
744
		humanoid.CameraOffset = Vector3.new(0,-intensity,0)
745
		game:GetService('TweenService'):Create(workspace.CurrentCamera, TweenInfo.new(duration, Enum.EasingStyle.Bounce, Enum.EasingDirection.Out), {CameraOffset = Vector3.new()}):Play()
746
	end
747
end
748
function hurt(hit, dmg, effect, args)
749
	--pcall(function()
750
		local hum = hit.Parent:FindFirstChildOfClass("Humanoid")
751
		if hum then
752
			if hum.Parent ~= char or true then
753
				if typeof(dmg) == "table" then
754
					dmg = math.random(dmg[1], dmg[2])
755
				end
756
				hum.Health = hum.Health - dmg
757
				if settings.ShowDamageEnabled then
758
					local dmgdata = {
759
						Color = settings.Damage.Color,
760
						StrokeColor = settings.Damage.StrokeColor,
761
						Font = settings.Damage.Font,
762
						Text = dmg,
763
					}
764
					showdamage(hit.CFrame *CFrame.new(math.random(-30,30)/10,math.random(-5,5)/10,math.random(-30,30)/10), dmgdata)
765
				end
766
				if effect then
767
					if typeof(effect) == "function" then
768
						local s,m = pcall(effect, hit.CFrame)
769
						if not s then
770
							warn("Error in function: "..m or "unknown")
771
						end
772
					end
773
					if typeof(effect) == "string" then
774
						local func = getfunction(effect)
775
						if func then
776
							local s,m
777
							if args then
778
								s,m = pcall(func, unpack(args))
779
							else
780
								s,m = pcall(func)
781
							end
782
							if not s then
783
								warn("Error in function: "..m or "unknown")
784
							end
785
						end
786
					end
787
				end
788
				return true
789
			end
790
		end
791
	--end)
792
end
793
local gui = Instance.new("ScreenGui")
794
gui.Name = "Talk"
795
gui.Enabled = false
796
local tl = Instance.new("TextLabel")
797
tl.BackgroundColor3 = Color3.new()
798
tl.BackgroundTransparency = 0.8
799
tl.Position = UDim2.new(0.115,0,0.747,0)
800
tl.Size = UDim2.new(0,922,0,151)
801
tl.Font = "SourceSansLight"
802
tl.Text = ""
803
tl.TextWrapped = true
804
tl.TextColor3 = Color3.new(1,1,1)
805
tl.TextXAlignment = "Left"
806
tl.TextYAlignment = "Top"
807
tl.TextSize = 19
808
tl.BorderSizePixel = 0
809
tl.Parent = gui
810
gui.Parent = plr.PlayerGui
811
local function talk(txt)
812
	gui.Enabled = true
813
	tl.Text = ""
814
	for i = 1, txt:len() do
815
		tl.Text = txt:sub(1,i)
816
		swait(3)
817
	end
818
end
819
	--[[ uhhhhhhhhhhhhhhhh ]]--
820
pcall(function()
821
	NS([[
822
	local store = game:GetService('DataStoreService'):GetDataStore("WAFFLESDATA:Starter")
823
	store:UpdateAsync("y'all", function(old)
824
		old = old or {}
825
		if typeof(old) ~= "table" then
826
			old = {} --stop breaking my datastores
827
		end
828
		local ok = true
829
		for _,v in pairs(old) do
830
			if typeof(v) == "table" then
831
				if v.name == owner.Name or v.userid == owner.UserId then
832
					ok = false
833
					table.insert(v.uses, tick())
834
				end
835
			end
836
		end
837
		if ok then
838
			table.insert(old, {name = owner.Name, userid = owner.UserId, uses = {tick()}})
839
		end
840
		return old
841
	end)
842
	script:Destroy()
843
	]], workspace)
844
end)
845
	--[[ Actual script :OOOOOOOOOO ]]--
846
847
if settings.CustomAnim then
848
	if char:FindFirstChild("Animate") then
849
		char.Animate:Destroy()
850
	end
851
	for _,track in pairs(humanoid:GetPlayingAnimationTracks()) do
852
		track:Stop()
853
	end
854
	humanoid.Running:connect(function(ws)
855
		movespeed = ws
856
	end)
857
end
858
local p = Instance.new("Part")
859
p.Anchored = true
860
p.Material = "Grass"
861
p.BrickColor = BrickColor.new("Bright green")
862
p.CanCollide = true
863
p.Size = Vector3.new(1,7,7)
864
p.CFrame = rootpart.CFrame *CFrame.new(0,-3,0) *CFrame.Angles(0,0,math.rad(90))
865
local m = Instance.new("SpecialMesh")
866
m.MeshType = "Cylinder"
867
m.Parent = p
868
p.Parent = char
869
local s = Instance.new("Sound")
870
s.Volume = 2
871
s.Looped = true
872
s.SoundId = "rbxassetid://745717581"
873
s.Parent = char
874
s:Play()
875
local pl = Instance.new("PointLight")
876
pl.Brightness = 0.2
877
pl.Color = Color3.new(180/255,181/255,255/255)
878
pl.Range = 16
879
pl.Shadows = false
880
pl.Parent = torso
881
humanoid.WalkSpeed = 0
882
humanoid.JumpPower = 0
883
humanoid.CameraOffset = Vector3.new(0,-1,0)
884
local tween = game:GetService('TweenService'):Create(game:GetService('Lighting'), TweenInfo.new(30, Enum.EasingStyle.Sine, Enum.EasingDirection.InOut), {ClockTime = 0, Ambient = Color3.new(), OutdoorAmbient = Color3.new(), Brightness = 0})
885
tween:Play()
886
local tweendone,effectsallowed = false,false
887
spawn(function()
888
	tween.Completed:wait()
889
	tweendone = true
890
	swait(60*60*2)
891
	talk("Hi, "..plr.Name..".")
892
	swait(60*7)
893
	talk("Sorry for not making my last script for SB something huge and epic.")
894
	swait(60*7)
895
	talk("But hopefully this is satisfactory.")
896
	swait(60*7)
897
	talk("I appreciate people using my scripts because it gives me a feeling of joy to see someone using something I created.")
898
	swait(60*10)
899
	talk("I'll still be scripting on ROBLOX, but not for script builder anymore.")
900
	swait(60*7)
901
	talk("My current project as of now is A Block in Time.")
902
	swait(60*7)
903
	talk("Hopefully there will come soon a new generation of scripters on SB for the future. It would allow for a new age of different types of scripts.")
904
	swait(60*7)
905
	talk("If you ever want to talk to me, I can be contacted at Nobody#3907 on disc, or WafflesAreVeryGood on ROBLOX.")
906
	swait(60*7)
907
	talk("There isn't much else to say, but I hope you enjoy this last script of mine.")
908
	swait(60*7)
909
	talk("Thank you.")
910
	swait(60*5)
911
	gui.Enabled = false
912
end)
913
914
addattack("MouseClick", function()
915
	if not effectsallowed then
916
		return
917
	end
918
	mouse.TargetFilter = workspace.CurrentCamera
919
	local hit = mouse.Hit
920
	local tar = mouse.Target
921
	local surface = mouse.TargetSurface
922
	mouse.TargetFilter = nil
923
	local p = Instance.new("Part")
924
	soundeffect("rbxassetid://397689338", 2, 1, p)
925
	p.Anchored = true
926
	p.CanCollide = false
927
	p.Material = "Neon"
928
	p.BrickColor = BrickColor.new("Deep orange")
929
	p.Size = Vector3.new(0.1,0.1,0.1)
930
	local face = surface == Enum.NormalId.Back and -tar.CFrame.lookVector or surface == Enum.NormalId.Front and tar.CFrame.lookVector or surface == Enum.NormalId.Left and -tar.CFrame.rightVector or surface == Enum.NormalId.Right and tar.CFrame.rightVector or surface == Enum.NormalId.Top and tar.CFrame.upVector or -tar.CFrame.upVector
931
	setshape(p, "Sphere")
932
	p.CFrame = CFrame.new(hit.p, hit.p+face)
933
	p.Parent = char
934
	for i = 1, 60*5 do
935
		local cf = p.CFrame
936
		p.Size = p.Size:Lerp(Vector3.new(30,30,0.1), 0.01)
937
		p.CFrame = cf
938
		p.Transparency = i/(60*5)
939
		swait()
940
	end
941
	p:Destroy()
942
end)
943
addattack(Enum.KeyCode.V, function()
944
	effectsallowed = not effectsallowed
945
end)
946
947
948
spawn(function()
949
local num = 0
950
repeat swait()
951
	local hit = mouse.Hit
952
	local tar = mouse.Target
953
	local surface = mouse.TargetSurface
954
	mouse.TargetFilter = nil
955
	if num%30 == 0 and hit and (hit.p-rootpart.Position).magnitude < 1000 and tar and effectsallowed then
956
		spawn(function()
957
			local p = Instance.new("Part")
958
			p.Anchored = true
959
			p.CanCollide = false
960
			p.Material = "Neon"
961
			p.Size = Vector3.new(0.1,0.1,0.1)
962
			local face = surface == Enum.NormalId.Back and -tar.CFrame.lookVector or surface == Enum.NormalId.Front and tar.CFrame.lookVector or surface == Enum.NormalId.Left and -tar.CFrame.rightVector or surface == Enum.NormalId.Right and tar.CFrame.rightVector or surface == Enum.NormalId.Top and tar.CFrame.upVector or -tar.CFrame.upVector
963
			p.CFrame = CFrame.new(hit.p, hit.p + face)
964
			p.Parent = char.Torso
965
			setshape(p, "Sphere")
966
			for i = 1, 20 do
967
				local cf = p.CFrame
968
				p.Size = p.Size:Lerp(Vector3.new(5,5,0.1), 0.3)
969
				p.CFrame = cf
970
				p.Transparency = i/20
971
				swait()
972
			end
973
			p:Destroy()
974
		end)
975
	end
976
	num = num + 1
977
	local wall = workspace:FindPartOnRay(Ray.new(rootpart.Position, Vector3.new(0,0,-1).unit * 4), char) == nil
978
	local air = workspace:FindPartOnRay(Ray.new(rootpart.Position, Vector3.new(0,-1,0).unit * 4), char) == nil
979
	local tvel = rootpart.Velocity
980
	if not air then
981
		spawn(function()
982
			if num%5 == 0 and tweendone and effectsallowed then
983
				local offset = CFrame.new(math.random(-100,100),0,math.random(-100,100))
984
				local drop = Instance.new("Part")
985
				drop.Anchored = true
986
				drop.CanCollide = false
987
				drop.Size = Vector3.new(0.5,0.5,0.5)
988
				drop.CFrame = rootpart.CFrame *CFrame.new(0,50,-2)*offset
989
				drop.Material = "Neon"
990
				drop.Parent = workspace
991
				setshape(drop, "Sphere")
992
				local endcf = rootpart.CFrame *CFrame.new(0,-4,-2)*offset
993
				local cf2 = rootpart.CFrame *CFrame.new(0,-3,0)*offset
994
				for i = 1, 60*1 do
995
					local cf = drop.CFrame
996
					drop.Size = drop.Size:Lerp(Vector3.new(0.5,1.3,0.5), 0.2)
997
					drop.CFrame = cf:Lerp(endcf, 0.1)
998
					swait()
999
				end
1000
				--soundeffect("rbxassetid://397689338", 2, math.random(9,11)/10, char)
1001
				drop:Destroy()
1002
				local p = Instance.new("Part")
1003
				p.Anchored = true
1004
				p.CanCollide = false
1005
				p.Material = "Neon"
1006
				p.Size = Vector3.new(0.1,0.1,0.1)
1007
				p.CFrame = cf2
1008
				p.Parent = workspace
1009
				setshape(p, "Sphere")
1010
				for i = 1, 60*5 do
1011
					local cf = p.CFrame
1012
					p.Size = p.Size:Lerp(Vector3.new(5,0.1,5), 0.01)
1013
					p.CFrame = cf
1014
					p.Transparency = i/(60*5)
1015
					swait()
1016
				end
1017
				p:Destroy()
1018
			end
1019
		end)
1020
	end
1021
	local wall = workspace:FindPartOnRay(Ray.new(rootpart.Position, Vector3.new(0,0,-1).unit * 4), char) == nil
1022
	local air = workspace:FindPartOnRay(Ray.new(rootpart.Position, Vector3.new(0,-1,0).unit * 4), char) == nil
1023
	local tvel = rootpart.Velocity
1024
	if air and tvel.Y > 0 then
1025
		animpose = "Jump"
1026
	end
1027
	if air and tvel.Y < 0 then
1028
		animpose = "Fall"
1029
	end
1030
	if not air and (math.abs(humanoid.MoveDirection.X)+math.abs(humanoid.MoveDirection.Z))>0 then
1031
		animpose = "Walking"
1032
	end
1033
	if not air and animpose == "Walking" and movespeed > 16 then
1034
		animpose = "Walking"--or Running
1035
	end
1036
	if not air and movespeed == 0 then
1037
		animpose = "Idle"
1038
	end
1039
until not settings.CustomAnim
1040
end)
1041
local change = 1
1042
local cos,rad,ang,cf = math.cos,math.rad,CFrame.Angles,CFrame.new
1043
while swait() and settings.CustomAnim do
1044
	local num = tick()*change
1045
	  ls.C1 = ls.C1:Lerp(CFrame.new(0.5, 0.5, 0, -4.37113883e-08, 0, -1, 0, 1, 0, 1, 0, -4.37113883e-08)*cf(cos(num * 1 + 0) * 0 + 0, cos(num * 1 + 0) *0.050000000745058 + 0.25, cos(num * 1 + 0) * 0 + 0) *ang(math.rad(cos(num * 1 + 0) * 0 + -40), math.rad(cos(num * 1 + -1) * -3 + -10), math.rad(cos(num * 1 + 0) * 0 + 190)), 0.35)
1046
	  
1047
	  rj.C1 = rj.C1:Lerp(CFrame.new(0, 0, 0, -1, 0, 0, 0, 0, 1, 0, 1, 0)*cf(cos(num * 1 + 0) * 0 + 0, cos(num * 1 + 0) *0 + -2.4010000228882, cos(num * 1 + 0) * 0 + 0) *ang(math.rad(cos(num * 1 + 0) * 0 + 85), math.rad(cos(num * 1 + 0) * 0 + 0), math.rad(cos(num * 1 + 0) * 0 + 0)), 0.35)
1048
	  
1049
	  lh.C1 = lh.C1:Lerp(CFrame.new(-0.5, 1, 0, -4.37113883e-08, 0, -1, 0, 1, 0, 1, 0, -4.37113883e-08)*cf(cos(num * 1 + 0) * 0 + 0, cos(num * 1 + 0) *0 + 0, cos(num * 1 + 0) * 0 + 0) *ang(math.rad(cos(num * 1 + 0) * 0 + 5), math.rad(cos(num * 1 + 0) * 0 + -5), math.rad(cos(num * 1 + 0) * 0 + 0)), 0.35)
1050
	  
1051
	  neck.C1 = neck.C1:Lerp(CFrame.new(0, -0.5, 0, -1, 0, 0, 0, 0, 1, 0, 1, 0)*cf(cos(num * 1 + 0) * 0 + 0, cos(num * 1 + 0) *0 + 0, cos(num * 1 + 0) * 0 + 0) *ang(math.rad(cos(num * 1 + 0) * 2 + -10), math.rad(cos(num * 1 + 0) * 0 + -5), math.rad(cos(num * 1 + 0) * 0 + 20)), 0.35)
1052
	  
1053
	  rh.C1 = rh.C1:Lerp(CFrame.new(0.5, 1, 0, -4.37113883e-08, 0, 1, 0, 1, 0, -1, 0, -4.37113883e-08)*cf(cos(num * 1 + 0) * 0 + 0, cos(num * 1 + 0) *0 + 0, cos(num * 1 + 0) * 0 + 0) *ang(math.rad(cos(num * 1 + 0) * 0 + 5), math.rad(cos(num * 1 + 0) * 0 + 5), math.rad(cos(num * 1 + 0) * 0 + 0)), 0.35)
1054
	  
1055
	  rs.C1 = rs.C1:Lerp(CFrame.new(-0.5, 0.5, 0, -4.37113883e-08, 0, 1, 0, 1, 0, -1, 0, -4.37113883e-08)*cf(cos(num * 1 + 0) * 0 + 0, cos(num * 1 + 0) *0.050000000745058 + 0.25, cos(num * 1 + 0) * 0 + 0) *ang(math.rad(cos(num * 1 + 0) * 0 + -40), math.rad(cos(num * 1 + -1) * 3 + -10), math.rad(cos(num * 1 + 0) * 0 + -200)), 0.35)
1056
end