View difference between Paste ID: zFmFSt7C and sJaCQCwb
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 print("FE Compatibility code V2 by Mokiros")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
6
--Water bending
7
 
8
 
9
local player=game.Players.LocalPlayer
10
local character=player.Character
11
local head=character["Head"]
12
local torso=character["Torso"]
13
local humanoid=character["Humanoid"]
14
local arm={left=character["Left Arm"], right=character["Right Arm"]}
15
local add={
16
part=function(parent,anchored,cancollide,color,shape,t,size,cframe)
17
        local p=Instance.new("Part")
18
        p.Parent=parent
19
        p.TopSurface="Smooth"
20
        p.BottomSurface="Smooth"
21
        p.FormFactor="Custom"
22
        p.Anchored=anchored
23
        p.CanCollide=cancollide
24
        p.BrickColor=BrickColor.new(color)
25
        p.Shape=shape
26
        p.Transparency=t
27
        p.Size=size
28
        p.CFrame=cframe
29
        return p
30
end,
31
weld=function(parent,part1,cframe)
32
        local w=Instance.new("Weld")
33
        w.Parent=parent
34
        w.Part0=parent
35
        w.Part1=part1
36
        w.C1=cframe
37
        return w
38
end,
39
mesh=function(ins,parent,scale)
40
        local m=Instance.new(ins)
41
        m.Parent=parent
42
        m.Scale=scale
43
        return m
44
end,
45
sound=function(parent,volume,id)
46
        local s=Instance.new("Sound")
47
        s.Parent=parent
48
        s.Volume=volume
49
        s.SoundId=id
50
        return s
51
end,
52
model=function(parent,name)
53
        local m=Instance.new("Model")
54
        m.Parent=parent
55
        m.Name=name
56
        return m
57
end,
58
bg=function(parent,cframe)
59
        local g=Instance.new("BodyGyro")
60
        g.Parent=parent
61
        g.maxTorque=Vector3.new(math.huge,math.huge,math.huge)
62
        g.cframe=cframe
63
        return g
64
end,
65
bav=function(parent,angular)
66
        local av=Instance.new("BodyAngularVelocity")
67
        av.maxTorque=Vector3.new(math.huge,math.huge,math.huge)
68
        av.Parent=parent
69
        av.angularvelocity=angular
70
        return av
71
end,
72
bp=function(parent,pos)
73
        local p=Instance.new("BodyPosition")
74
        p.Parent=parent
75
        p.maxForce=Vector3.new(0,math.huge,0)
76
        p.position=pos
77
        return p
78
end,
79
bf=function(parent,force)
80
        local f=Instance.new("BodyForce")
81
        f.Parent=parent
82
        f.force=force
83
        return f
84
end,
85
humanoid=function(parent,maxhealth)
86
        local h=Instance.new("Humanoid")
87
        h.Parent=parent
88
        h.MaxHealth=maxhealth
89
        return h
90
end
91
}
92
local c=function(f)coroutine.resume(coroutine.create(f))end
93
local trailDeb=false
94
local things=add.model(character,"Water Bending")
95
 
96
function computePos(pos1,pos2)
97
        local pos3=Vector3.new(pos2.x,pos1.y,pos2.z)
98
        return CFrame.new(pos1,pos3)
99
end
100
 
101
local touchDeb=false
102
function touch(hit)
103
        local human=hit.Parent:findFirstChild("Humanoid")
104
        local torso=hit.Parent:findFirstChild("Torso")
105
        if human and torso and human~=humanoid then
106
                local damage=math.random(5,10)
107
                c(function()
108
                        human:TakeDamage(damage)
109
                        human.PlatformStand=true
110
                        torso.Velocity=torso.CFrame.lookVector*-150
111
                        torso.RotVelocity=Vector3.new(math.random(-25,25),math.random(-25,25),math.random(-25,25))
112
                        wait(1)
113
                        human.PlatformStand=false
114
                        torso.Velocity=Vector3.new(0,0,0)
115
                        torso.RotVelocity=Vector3.new(0,0,0)
116
                end)
117
        end
118
end
119
 
120
function trail(pos)
121
        trailDeb=true
122
        old=pos.Position
123
        c(function()
124
                while trailDeb==true do
125
                        wait()
126
                        new=pos.Position
127
                        local magnitude=(old-new).magnitude
128
                        local line=add.part(things,true,false,"Bright blue","Block",0,Vector3.new(8,8,8) ,CFrame.new(old,new)*CFrame.Angles(0,0,-magnitude/2))
129
                        old=new
130
                        c(function()
131
                                for i=.2,1,.2 do
132
                                        wait()
133
                                        line.Transparency=i
134
                                end
135
                                line:remove()
136
                        end)
137
                        line.Touched:connect(touch)
138
                end
139
        end)
140
end
141
 
142
local pathDeb=false
143
local pathPart=nil
144
local bPosition=10
145
function path()
146
        pathDeb=true
147
        pathPart=add.part(things,true,true,"Bright blue","Block",0,Vector3.new(6,1,6),CFrame.new())
148
        local bp=add.bp(torso,torso.Position+Vector3.new(0,bPosition,0))
149
        while pathDeb==true do
150
                wait()
151
                pathPart.CFrame=torso.CFrame*CFrame.new(0,-4,0)
152
        end
153
end
154
 
155
--Armz
156
local fakeArm={left=add.part(things,false,false,"White","Block",1,Vector3.new(1,1,1),CFrame.new()), right=add.part(things,false,false,"White","Block",1,Vector3.new(1,1,1),CFrame.new())}
157
local water={left=add.part(things,false,false,"Bright blue","Ball",1,Vector3.new(1,1,1),CFrame.new()), right=add.part(things,false,false,"Bright blue","Ball",1,Vector3.new(1,1,1),CFrame.new())}
158
--Weldz
159
local connectArmWeld={left=add.weld(torso,fakeArm.left,CFrame.new(1.5,-.5,0)), right=add.weld(torso,fakeArm.right,CFrame.new(-1.5,-.5,0))}
160
local armWeld={left=add.weld(fakeArm.left,arm.left,CFrame.new(0,0.5,0)), right=add.weld(fakeArm.right,arm.right,CFrame.new(0,0.5,0))}
161
local waterWeld={left=add.weld(water.left,arm.left,CFrame.new(0,-2,0)), right=add.weld(water.right,arm.right,CFrame.new(0,-2,0))}
162
 
163
local anim={
164
equip=function()
165
        for i=.2,1,.2 do
166
                wait()
167
                armWeld.left.C0=CFrame.Angles(math.rad(90)*i,0,math.rad(45)*i)
168
                armWeld.right.C0=CFrame.Angles(math.rad(135)*i,0,0)
169
        end
170
end,
171
watershoot=function(mouse)
172
        torso.CFrame=computePos(torso.CFrame.p,mouse.Hit.p)
173
        trail(water.left)
174
        trail(water.right)
175
        local waterbull=add.part(things,false,false,"Bright blue","Ball",0,Vector3.new(6,6,6),CFrame.new((torso.CFrame+torso.CFrame.lookVector*5).p,mouse.hit.p))
176
        waterbull.Touched:connect(touch)
177
        waterbull.Velocity=waterbull.CFrame.lookVector*150
178
        trail(waterbull)
179
        local bf=add.bf(waterbull,Vector3.new(0,waterbull:GetMass()*196.2,0))
180
        for i=.2,1,.2 do
181
                wait()
182
                armWeld.left.C0=CFrame.Angles(math.rad(90)*i,0,math.rad(45)*i)
183
                armWeld.right.C0=CFrame.Angles(math.rad(90)*i,0,-math.rad(45)*i)
184
                waterWeld.left.C1=CFrame.new(0,-2+(-10*i),0)
185
                waterWeld.right.C1=CFrame.new(0,-2+(-10*i),0)
186
        end
187
        wait(.2)
188
        for i=1,0,-.2 do
189
                wait()
190
                armWeld.left.C0=CFrame.Angles(math.rad(90)*i,0,math.rad(45)*i)
191
                armWeld.right.C0=CFrame.Angles(math.rad(90)*i,0,-math.rad(45)*i)
192
                waterWeld.left.C1=CFrame.new(0,-2+(-10*i),0)
193
                waterWeld.right.C1=CFrame.new(0,-2+(-10*i),0)
194
        end
195
        game.Debris:AddItem(waterbull,5)
196
        trailDeb=false
197
end,
198
waterRaise=function(mouse)
199
        torso.CFrame=computePos(torso.CFrame.p,mouse.Hit.p)
200
        trail(water.left)
201
        trail(water.right)
202
        for i=.2,1,.2 do
203
                wait()
204
                armWeld.left.C0=CFrame.Angles(math.rad(135)*i,0,-math.rad(5)*i)
205
                armWeld.right.C0=CFrame.Angles(math.rad(135)*i,0,math.rad(5)*i)
206
                waterWeld.left.C1=CFrame.new(0,-2+(-10*i),0)
207
                waterWeld.right.C1=CFrame.new(0,-2+(-10*i),0)
208
        end
209
        wait(.2)
210
        for i=1,0,-.2 do
211
                wait()
212
                armWeld.left.C0=CFrame.Angles(math.rad(135)*i,0,-math.rad(5)*i)
213
                armWeld.right.C0=CFrame.Angles(math.rad(135)*i,0,math.rad(5)*i)
214
                waterWeld.left.C1=CFrame.new(0,-2+(-math.random(10,12)*i),0)
215
                waterWeld.right.C1=CFrame.new(0,-2+(-math.random(10,12)*i),0)
216
        end
217
        trailDeb=false
218
end,
219
waterSpin=function()
220
        trail(water.left)
221
        trail(water.right)
222
        local bg=add.bg(torso,torso.CFrame)
223
        for i=.2,1,.2 do
224
                wait()
225
                armWeld.left.C0=CFrame.Angles(math.rad(90)*i,0,-math.rad(90)*i)
226
                armWeld.right.C0=CFrame.Angles(math.rad(90)*i,0,math.rad(90)*i)
227
                waterWeld.left.C1=CFrame.new(0,-2+(-math.random(5,8)*i),0)
228
                waterWeld.right.C1=CFrame.new(0,-2+(-math.random(5,8)*i),0)
229
        end
230
        local bav=add.bav(torso,Vector3.new(0,75,0))
231
        wait(3)
232
        for i=1,0,-.2 do
233
                wait()
234
                armWeld.left.C0=CFrame.Angles(math.rad(90)*i,0,-math.rad(90)*i)
235
                armWeld.right.C0=CFrame.Angles(math.rad(90)*i,0,math.rad(90)*i)
236
                waterWeld.left.C1=CFrame.new(0,-2+(-5*i),0)
237
                waterWeld.right.C1=CFrame.new(0,-2+(-5*i),0)
238
        end
239
        bg:remove()
240
        bav:remove()
241
        trailDeb=false
242
end,
243
bend=function(mouse)
244
        torso.CFrame=computePos(torso.CFrame.p,mouse.Hit.p)
245
        trail(water.left)
246
        trail(water.right)
247
        for i=.2,1,.2 do
248
                wait()
249
                armWeld.left.C0=CFrame.Angles(math.rad(90)*i,0,math.rad(90)*i)
250
                armWeld.right.C0=CFrame.Angles(math.rad(90)*i,0,-math.rad(90)*i)
251
                waterWeld.left.C1=CFrame.new(0,-2+(-10*i),0)
252
                waterWeld.right.C1=CFrame.new(0,-2+(-10*i),0)
253
        end
254
        wait(.2)
255
        for i=1,0,-.2 do
256
                wait()
257
                armWeld.left.C0=CFrame.Angles(math.rad(90)*i,0,math.rad(45)*i)
258
                armWeld.right.C0=CFrame.Angles(math.rad(90)*i,0,-math.rad(45)*i)
259
                waterWeld.left.C1=CFrame.new(0,-2+(-15*i),0)
260
                waterWeld.right.C1=CFrame.new(0,-2+(-15*i),0)
261
        end
262
        trailDeb=false
263
end,
264
watershoot2=function(mouse)
265
        torso.CFrame=computePos(torso.CFrame.p,mouse.Hit.p)
266
        trail(water.left)
267
        trail(water.right)
268
        for i=1,40 do
269
                local waterbull=add.part(things,false,false,"Bright blue","Ball",0,Vector3.new(8,8,8),torso.CFrame*CFrame.Angles(0,math.rad(9)*i,0))
270
                waterbull.Velocity=waterbull.CFrame.lookVector*100
271
                trail(waterbull)
272
                local bf=add.bf(waterbull,Vector3.new(0,waterbull:GetMass()*196.2,0))
273
                game.Debris:AddItem(waterbull,5)
274
                waterbull.Touched:connect(touch)
275
        end
276
        for i=.2,1,.2 do
277
                wait()
278
                armWeld.left.C0=CFrame.Angles(math.rad(90)*i,0,math.rad(90)*i)
279
                armWeld.right.C0=CFrame.Angles(math.rad(90)*i,0,-math.rad(90)*i)
280
                waterWeld.left.C1=CFrame.new(0,-2+(-10*i),0)
281
                waterWeld.right.C1=CFrame.new(0,-2+(-10*i),0)
282
        end
283
        wait(.2)
284
        for i=1,0,-.2 do
285
                wait()
286
                armWeld.left.C0=CFrame.Angles(math.rad(90)*i,0,math.rad(90)*i)
287
                armWeld.right.C0=CFrame.Angles(math.rad(90)*i,0,-math.rad(90)*i)
288
                waterWeld.left.C1=CFrame.new(0,-2+(-10*i),0)
289
                waterWeld.right.C1=CFrame.new(0,-2+(-10*i),0)
290
        end
291
        trailDeb=false
292
end,
293
waterBack=function(mouse)
294
        torso.CFrame=computePos(torso.CFrame.p,mouse.Hit.p)
295
        trail(water.left)
296
        trail(water.right)
297
        for i=.2,1,.2 do
298
                wait()
299
                armWeld.left.C0=CFrame.Angles(math.rad(90)*i,0,0)
300
                armWeld.right.C0=CFrame.Angles(math.rad(90)*i,0,0)
301
                waterWeld.left.C1=CFrame.new(0,-2+(-20*i),0)
302
                waterWeld.right.C1=CFrame.new(0,-2+(-20*i),0)
303
        end
304
        wait(.2)
305
        for i=1,0,-.2 do
306
                wait()
307
                armWeld.left.C0=CFrame.Angles(math.rad(90)*i,0,0)
308
                armWeld.right.C0=CFrame.Angles(math.rad(90)*i,0,0)
309
                waterWeld.left.C1=CFrame.new(0,-2+(-20*i),0)
310
                waterWeld.right.C1=CFrame.new(0,-2+(-20*i),0)
311
        end
312
        trailDeb=false
313
end,
314
waterForward=function(mouse)
315
        torso.CFrame=computePos(torso.CFrame.p,mouse.Hit.p)
316
        torso.Anchored=true
317
        for i=.2,1,.2 do
318
                wait()
319
                armWeld.left.C0=CFrame.Angles(math.rad(135)*i,0,-math.rad(5)*i)
320
                armWeld.right.C0=CFrame.Angles(math.rad(135)*i,0,math.rad(5)*i)
321
        end
322
        for i=1,20 do
323
                wait()
324
                local waterblock=add.part(things,false,false,"Bright blue","Block",0,Vector3.new(4,4,4),torso.CFrame*CFrame.new(0,0,0)*CFrame.Angles(math.rad(45),0,0)+torso.CFrame.lookVector*2*i)
325
                trail(waterblock)
326
                game.Debris:AddItem(waterblock,1)
327
                waterblock.Touched:connect(touch)
328
        end
329
        wait(.2)
330
        torso.Anchored=false
331
        for i=1,0,-.2 do
332
                wait()
333
                armWeld.left.C0=CFrame.Angles(math.rad(135)*i,0,-math.rad(5)*i)
334
                armWeld.right.C0=CFrame.Angles(math.rad(135)*i,0,math.rad(5)*i)
335
        end
336
        trailDeb=false
337
end
338
}
339
 
340
function getTouched()
341
        for i,v in pairs(things:GetChildren()) do
342
                v.Touched:connect(touch)
343
        end
344
end
345
 
346
local deb=false
347
local buttonDeb=false
348
local bin=Instance.new("HopperBin")
349
bin.Parent=player.Backpack
350
bin.Name="Water Bending"
351
bin.Selected:connect(function(mouse)
352
        bin:remove()
353
        anim.equip()
354
        mouse.Button1Down:connect(function()
355
                if deb==false then
356
                        deb=true
357
                        getTouched()
358
                        anim.watershoot(mouse)
359
                        anim.equip()
360
                        deb=false
361
                end
362
        end)
363
        mouse.KeyDown:connect(function(key)
364
                if key=="q" and deb==false then
365
                        deb=true
366
                        getTouched()
367
                        anim.waterRaise(mouse)
368
                        anim.equip()
369
                        deb=false
370
                end
371
                if key=="e" and deb==false then
372
                        deb=true
373
                        getTouched()
374
                        anim.waterSpin()
375
                        anim.equip()
376
                        deb=false
377
                end
378
                if key=="r" and deb==false then
379
                        deb=true
380
                        getTouched()
381
                        anim.bend(mouse)
382
                        anim.equip()
383
                        deb=false
384
                end
385
                if key=="f" and deb==false then
386
                        deb=true
387
                        getTouched()
388
                        anim.watershoot2(mouse)
389
                        anim.equip()
390
                        deb=false
391
                end
392
                if key=="g" and deb==false then
393
                        deb=true
394
                        getTouched()
395
                        anim.waterBack(mouse)
396
                        anim.equip()
397
                        deb=false
398
                end
399
                if key=="h" and deb==false then
400
                        deb=true
401
                        getTouched()
402
                        anim.waterForward(mouse)
403
                        anim.equip()
404
                        deb=false
405
                end
406
                if key=="z" and buttonDeb==false then
407
                        buttonDeb=true
408
                        getTouched()
409
                        path()
410
                end
411
                if key=="z" and buttonDeb==true then
412
                        buttonDeb=false
413
                        pathPart:remove() torso["BodyPosition"]:remove()
414
                end
415
        end)
416
end) --mediafire