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 | - | p = Serv.p.Dark_Eccentric |
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 | ||
153 | ||
154 | ||
155 | ||
156 | -- Go to line 23 and change it to your name. LOCAL SCRIPT!!!!! | |
157 | ||
158 | ||
159 | wt = 0.05 s = script it = Instance.new v3 = Vector3.new c3 = Color3.new ud = UDim2.new cf = CFrame.new ca = CFrame.Angles pi = math.pi rd = math.rad | |
160 | bc = BrickColor.new ab = math.abs de = math.deg ts = tostring tn = tonumber ti = table.insert tr = table.remove | |
161 | cr = coroutine.resume cc = coroutine.create | |
162 | asset = "http://www.roblox.com/asset/?id=" | |
163 | sr = string.reverse sl = string.lower su = string.upper | |
164 | Serv = {} Serv.p = game:GetService(sr("sreyalP")) Serv.l = game:GetService(sr("gnithgiL")) | |
165 | Serv.is = game:GetService(sr("ecivreStresnI")) if game:findFirstChild(sr("revreSkrowteN")) then Serv.ns = game:GetService(sr("revreSkrowteN")) else NetworkServer = nil end | |
166 | Serv.sg = game:GetService(sr("iuGretratS")) Serv.sp = game:GetService(sr("kcaPretratS")) Serv.d = game:GetService(sr("sirbeD")) | |
167 | Decs = {} | |
168 | Decs.Crack = "49173398" Decs.Cloud = "1095708" Decs.Spike = "1033714" Decs.Rock = "1290033" Decs.Crown = "1323306" | |
169 | function ft(tablez,item) if not tablez or not item then return nil end for i=1,#tablez do if tablez == item then return i end end return nil end | |
170 | function re(par,obj) if type(par) ~= "userdata" or type(obj) ~= "string" then return nil end if par:findFirstChild(obj) then par[obj]:Remove() end end | |
171 | function pa(pa,sh,x,y,z,c,a,tr,re,bc2) local fp = nil if sh ~= "Wedge" and sh ~= "CornerWedge" then fp = it("Part",pa) fp.Shape = sh fp.formFactor = "Custom" elseif sh == "Wedge" then fp = it("WedgePart",pa) fp.formFactor = "Custom" | |
172 | elseif sh == "CornerWedge" then fp = it("CornerWedgePart",pa) end fp.Size = v3(x,y,z) fp.CanCollide = c fp.Anchored = false fp.BrickColor = bc(bc2) fp.Transparency = tr fp.Reflectance = re fp.BottomSurface = 0 | |
173 | fp.TopSurface = 0 fp.CFrame = t.CFrame + Vector3.new(0,50,0) fp.Velocity = Vector3.new(0,10,0) fp:BreakJoints() return fp end | |
174 | function clearit(tab) for xx=1,#tab do tab[xx]:Remove() end end | |
175 | function weld(pa,p0,p1,x,y,z,a,b,c) local fw = it("Weld",pa) fw.Part0 = p0 fw.Part1 = p1 fw.C0 = cf(x,y,z) *ca(a,b,c) return fw end | |
176 | function spm(ty,pa,ss) local sp = it("SpecialMesh",pa) sp.MeshType = ty sp.Scale = Vector3.new(ss,ss,ss) end function mbm(pa,sx,sy,sz) local bm = Instance.new("BlockMesh",pa) bm.Scale = Vector3.new(sx,sy,sz) end | |
177 | function ra(mn,mx,dc) local tms = 1 if dc == nil then dc = 0 end if type(dc) == "number" and dc > 5 then dc = 5 end for zx=1,dc do tms = tms*10 end return math.random(mn*tms,mx*tms)/tms end | |
178 | p = Serv.p.samuelrichter66 | |
179 | bp = p.Backpack | |
180 | pg = p.PlayerGui | |
181 | c = p.Character | |
182 | he = c.Head | |
183 | t = c.Torso | |
184 | hu = c.Humanoid | |
185 | mou = nil | |
186 | re(c,"Hand") | |
187 | s = 2 | |
188 | ||
189 | --tool var | |
190 | Equip = false | |
191 | HTrans = 0 | |
192 | HRef = 0 | |
193 | HCol = "a" | |
194 | LaserCol = "Really black" | |
195 | LaserCol2 = "Really red" | |
196 | LaserCol3 = "Really black" | |
197 | Posing = "Follow" | |
198 | Facing = "Owner" | |
199 | Anim = {} | |
200 | Anim.a = "None" | |
201 | Anim.b = "None" | |
202 | Anim.Welding = 0 | |
203 | local fingwide = 1.5*s | |
204 | local finghei = 2.8 | |
205 | local tiphei = 2.55 | |
206 | handoffset = v3(5,18,-8)*s | |
207 | bgx,bgy,bgz = -90,0,0 | |
208 | w = {} | |
209 | Button = false | |
210 | -- | |
211 | BlastMesh = it("FileMesh") | |
212 | BlastMesh.MeshId = "http://www.roblox.com/asset/?id=20329976" | |
213 | RingMesh = it("FileMesh") | |
214 | RingMesh.MeshId = "http://www.roblox.com/asset/?id=3270017" | |
215 | RockMesh = it("FileMesh") | |
216 | DiamondMesh = it("FileMesh") | |
217 | DiamondMesh.MeshId = "http://www.roblox.com/Asset/?id=9756362" | |
218 | ||
219 | m = Instance.new("Model",c) m.Name = "Hand" | |
220 | Palm = pa(m,"Block",6*s,7*s,fingwide*2,true,false,HTrans,HRef,HCol) mbm(Palm,1,1,0.6) | |
221 | local x,y,z = Palm.Size.x,Palm.Size.y,Palm.Size.z | |
222 | bPoint1 = pa(m,"Block",0,0,0,false,false,HTrans,HRef,HCol) | |
223 | Point1 = weld(bPoint1,Palm,bPoint1,-x/2+(fingwide/2),y/2,0,0,0,0) | |
224 | pPoint1 = pa(m,"Block",fingwide,finghei*s,fingwide,true,false,HTrans,HRef,HCol) mbm(pPoint1,0.9,1,0.9) | |
225 | wPoint1 = weld(pPoint1,bPoint1,pPoint1,0,pPoint1.Size.y/2,0,0,0,0) | |
226 | bPoint2 = pa(m,"Block",0,0,0,false,false,HTrans,HRef,HCol) | |
227 | Point2 = weld(bPoint2,pPoint1,bPoint2,0,pPoint1.Size.y/2,0,0,0,0) | |
228 | pPoint2 = pa(m,"Block",fingwide,finghei*s,fingwide,true,false,HTrans,HRef,HCol) mbm(pPoint2,0.9,1,0.9) | |
229 | wPoint2 = weld(pPoint2,bPoint2,pPoint2,0,pPoint1.Size.y/2,0,0,0,0) | |
230 | bPoint3 = pa(m,"Block",0,0,0,false,false,HTrans,HRef,HCol) | |
231 | Point3 = weld(bPoint3,pPoint2,bPoint3,0,pPoint2.Size.y/2,0,0,0,0) | |
232 | pPoint3 = pa(m,"Block",fingwide,tiphei*s,fingwide,true,false,HTrans,HRef,HCol) mbm(pPoint3,0.9,1,0.9) | |
233 | wPoint3 = weld(pPoint3,bPoint3,pPoint3,0,pPoint3.Size.y/2,0,0,0,0) | |
234 | bMid1 = pa(m,"Block",0,0,0,false,false,HTrans,HRef,HCol) | |
235 | Mid1 = weld(bMid1,Palm,bMid1,-x/2+((fingwide/2)+((fingwide)*1)),y/2,0,0,0,0) | |
236 | pMid1 = pa(m,"Block",fingwide,(finghei*1.1)*s,fingwide,true,false,HTrans,HRef,HCol) mbm(pMid1,0.9,1,0.9) | |
237 | wMid1 = weld(pMid1,bMid1,pMid1,0,pMid1.Size.y/2,0,0,0,0) | |
238 | bMid2 = pa(m,"Block",0,0,0,false,false,HTrans,HRef,HCol) | |
239 | Mid2 = weld(bMid2,pMid1,bMid2,0,pMid1.Size.y/2,0,0,0,0) | |
240 | pMid2 = pa(m,"Block",fingwide,(finghei*1.1)*s,fingwide,true,false,HTrans,HRef,HCol) mbm(pMid2,0.9,1,0.9) | |
241 | wMid2 = weld(pMid2,bMid2,pMid2,0,pMid1.Size.y/2,0,0,0,0) | |
242 | bMid3 = pa(m,"Block",0,0,0,false,false,HTrans,HRef,HCol) | |
243 | Mid3 = weld(bMid3,pMid2,bMid3,0,pMid2.Size.y/2,0,0,0,0) | |
244 | pMid3 = pa(m,"Block",fingwide,(tiphei*1.1)*s,fingwide,true,false,HTrans,HRef,HCol) mbm(pMid3,0.9,1,0.9) | |
245 | wMid3 = weld(pMid3,bMid3,pMid3,0,pMid3.Size.y/2,0,0,0,0) | |
246 | bRing1 = pa(m,"Block",0,0,0,false,false,HTrans,HRef,HCol) | |
247 | Ring1 = weld(bRing1,Palm,bRing1,-x/2+((fingwide/2)+((fingwide)*2)),y/2,0,0,0,0) | |
248 | pRing1 = pa(m,"Block",fingwide,(finghei*0.98)*s,fingwide,true,false,HTrans,HRef,HCol) mbm(pRing1,0.9,1,0.9) | |
249 | wRing1 = weld(pRing1,bRing1,pRing1,0,pRing1.Size.y/2,0,0,0,0) | |
250 | bRing2 = pa(m,"Block",0,0,0,false,false,HTrans,HRef,HCol) | |
251 | Ring2 = weld(bRing2,pRing1,bRing2,0,pRing1.Size.y/2,0,0,0,0) | |
252 | pRing2 = pa(m,"Block",fingwide,(finghei*0.98)*s,fingwide,true,false,HTrans,HRef,HCol) mbm(pRing2,0.9,1,0.9) | |
253 | wRing2 = weld(pRing2,bRing2,pRing2,0,pRing1.Size.y/2,0,0,0,0) | |
254 | bRing3 = pa(m,"Block",0,0,0,false,false,HTrans,HRef,HCol) | |
255 | Ring3 = weld(bRing3,pRing2,bRing3,0,pRing2.Size.y/2,0,0,0,0) | |
256 | pRing3 = pa(m,"Block",fingwide,(tiphei*0.98)*s,fingwide,true,false,HTrans,HRef,HCol) mbm(pRing3,0.9,1,0.9) | |
257 | wRing3 = weld(pRing3,bRing3,pRing3,0,pRing3.Size.y/2,0,0,0,0) | |
258 | bPinkie1 = pa(m,"Block",0,0,0,false,false,HTrans,HRef,HCol) | |
259 | Pinkie1 = weld(bPinkie1,Palm,bPinkie1,-x/2+((fingwide/2)+((fingwide)*3)),y/2,0,0,0,0) | |
260 | pPinkie1 = pa(m,"Block",fingwide,(finghei*0.8)*s,fingwide,true,false,HTrans,HRef,HCol) mbm(pPinkie1,0.9,1,0.9) | |
261 | wPinkie1 = weld(pPinkie1,bPinkie1,pPinkie1,0,pPinkie1.Size.y/2,0,0,0,0) | |
262 | bPinkie2 = pa(m,"Block",0,0,0,false,false,HTrans,HRef,HCol) | |
263 | Pinkie2 = weld(bPinkie2,pPinkie1,bPinkie2,0,pPinkie1.Size.y/2,0,0,0,0) | |
264 | pPinkie2 = pa(m,"Block",fingwide,(finghei*0.8)*s,fingwide,true,false,HTrans,HRef,HCol) mbm(pPinkie2,0.9,1,0.9) | |
265 | wPinkie2 = weld(pPinkie2,bPinkie2,pPinkie2,0,pPinkie1.Size.y/2,0,0,0,0) | |
266 | bPinkie3 = pa(m,"Block",0,0,0,false,false,HTrans,HRef,HCol) | |
267 | Pinkie3 = weld(bPinkie3,pPinkie2,bPinkie3,0,pPinkie2.Size.y/2,0,0,0,0) | |
268 | pPinkie3 = pa(m,"Block",fingwide,(tiphei*0.8)*s,fingwide,true,false,HTrans,HRef,HCol) mbm(pPinkie3,0.9,1,0.9) | |
269 | wPinkie3 = weld(pPinkie3,bPinkie3,pPinkie3,0,pPinkie3.Size.y/2,0,0,0,0) | |
270 | bThumb1 = pa(m,"Block",0,0,0,false,false,HTrans,HRef,HCol) | |
271 | Thumb1 = weld(bThumb1,Palm,bThumb1,-x/2+(fingwide/7),-y*0.1,-fingwide*0.25,0,0,0) | |
272 | pThumb1 = pa(m,"Block",fingwide*1.4,(finghei*1)*s,fingwide*1.4,true,false,HTrans,HRef,HCol) mbm(pThumb1,0.9,1,0.9) | |
273 | wThumb1 = weld(pThumb1,bThumb1,pThumb1,0,pThumb1.Size.y/2,0,0,0,0) | |
274 | bThumb2 = pa(m,"Block",0,0,0,false,false,HTrans,HRef,HCol) | |
275 | Thumb2 = weld(bThumb2,pThumb1,bThumb2,0,pThumb1.Size.y/2,0,0,0,0) | |
276 | pThumb2 = pa(m,"Block",fingwide*1.3,(finghei*1)*s,fingwide*1.3,true,false,HTrans,HRef,HCol) mbm(pThumb2,0.9,1,0.9) | |
277 | wThumb2 = weld(pThumb2,bThumb2,pThumb2,0,pThumb1.Size.y/2,0,0,0,0) | |
278 | bThumb3 = pa(m,"Block",0,0,0,false,false,HTrans,HRef,HCol) | |
279 | Thumb3 = weld(bThumb3,pThumb2,bThumb3,0,pThumb2.Size.y/2,0,0,0,0) | |
280 | pThumb3 = pa(m,"Block",fingwide*1.25,(tiphei*1)*s,fingwide*1.25,true,false,HTrans,HRef,HCol) mbm(pThumb3,0.9,1,0.9) | |
281 | wThumb3 = weld(pThumb3,bThumb3,pThumb3,0,pThumb3.Size.y/2,0,0,0,0) | |
282 | ||
283 | w["a1"] = Pinkie1 | |
284 | w["a2"] = Pinkie2 | |
285 | w["a3"] = Pinkie3 | |
286 | w["b1"] = Ring1 | |
287 | w["b2"] = Ring2 | |
288 | w["b3"] = Ring3 | |
289 | w["c1"] = Mid1 | |
290 | w["c2"] = Mid2 | |
291 | w["c3"] = Mid3 | |
292 | w["d1"] = Point1 | |
293 | w["d2"] = Point2 | |
294 | w["d3"] = Point3 | |
295 | w["e1"] = Thumb1 | |
296 | w["e2"] = Thumb2 | |
297 | w["e3"] = Thumb3 | |
298 | w.e1.C1 = ca(0,rd(35),rd(-20)) | |
299 | w.e2.C1 = ca(rd(20),0,0) | |
300 | w.e3.C1 = ca(rd(20),0,0) | |
301 | w.d1.C1 = ca(0,0,rd(-3)) | |
302 | w.c1.C1 = ca(0,0,rd(-1)) | |
303 | w.b1.C1 = ca(0,0,rd(1)) | |
304 | w.a1.C1 = ca(0,0,rd(3)) | |
305 | function c1(wexx,smmx,xx,yy,zz) | |
306 | coroutine.resume(coroutine.create(function() | |
307 | local xx2,yy2,zz2 = wexx.C1:toEulerAnglesXYZ() | |
308 | local aa,bb,cc = wexx.C0.x,wexx.C0.y,wexx.C0.z | |
309 | local twa = smmx/wt | |
310 | Anim.Welding = Anim.Welding + 1 | |
311 | for i=0,twa,1 do wexx.C0 = cf(aa,bb,cc) | |
312 | wexx.C1 = ca(xx2-(((xx2-rd(xx))/twa)*i),yy2-(((yy2-rd(yy))/twa)*i),zz2-(((zz2-rd(zz))/twa)*i)) | |
313 | wait() | |
314 | end | |
315 | Anim.Welding = Anim.Welding - 1 | |
316 | end)) | |
317 | end | |
318 | function CloseFing(fingz,spee) if spee == nil then spee = 1 end c1(w[fingz.. "1"],spee,80,0,0) c1(w[fingz.. "2"],spee,110,0,0) c1(w[fingz.. "3"],spee,30,0,0) end | |
319 | function OpenFing(fingz,spee) if spee == nil then spee = 1 end c1(w[fingz.. "1"],spee,2,0,0) c1(w[fingz.. "2"],spee,2,0,0) c1(w[fingz.. "3"],spee,2,0,0) end | |
320 | function HandSign(form,spee) form = form:lower() if spee == nil then spee = 1 end | |
321 | if form == "f" then | |
322 | CloseFing("d",spee) CloseFing("a",spee) CloseFing("b",spee) | |
323 | c1(w["c1"],spee,0,0,0) c1(w["c2"],spee,0,0,0) c1(w["c3"],spee,0,0,0) | |
324 | c1(w["e1"],spee,70,40,-90) c1(w["e2"],spee,50,0,0) c1(w["e3"],spee,50,0,0) | |
325 | elseif form == "fist" then | |
326 | CloseFing("d",spee) CloseFing("a",spee) CloseFing("b",spee) CloseFing("c",spee) | |
327 | c1(w["e1"],spee,70,40,-90) c1(w["e2"],spee,50,0,0) c1(w["e3"],spee,50,0,0) | |
328 | elseif form == "pointer" then | |
329 | CloseFing("a",spee) CloseFing("b",spee) CloseFing("c",spee) | |
330 | c1(w["d1"],spee,5,0,0) c1(w["d2"],spee,5,0,0) c1(w["d3"],spee,5,0,0) | |
331 | c1(w["e1"],spee,70,40,-90) c1(w["e2"],spee,50,0,0) c1(w["e3"],spee,50,0,0) | |
332 | elseif form == "v" then | |
333 | CloseFing("a",spee) CloseFing("b",spee) | |
334 | c1(w["c1"],spee,1,0,15) c1(w["c2"],spee,1,0,0) c1(w["c3"],spee,1,0,0) | |
335 | c1(w["d1"],spee,1,0,-15) c1(w["d2"],spee,1,0,0) c1(w["d3"],spee,1,0,0) | |
336 | c1(w["e1"],spee,70,40,-90) c1(w["e2"],spee,50,0,0) c1(w["e3"],spee,50,0,0) | |
337 | elseif form == "free" or form == "five" then | |
338 | OpenFing("a",spee) OpenFing("b",spee) OpenFing("c",spee) OpenFing("d",spee) | |
339 | c1(w["e1"],spee,0,35,-20) c1(w["e2"],spee,20,0,0) c1(w["e3"],spee,20,0,0) | |
340 | elseif form == "ride" then | |
341 | c1(w["a1"],spee,60,0,0) c1(w["a2"],spee,-30,0,0) c1(w["a3"],spee,-30,0,0) | |
342 | c1(w["b1"],spee,30,0,0) c1(w["b2"],spee,65,0,0) c1(w["b3"],spee,60,0,0) | |
343 | c1(w["c1"],spee,30,0,0) c1(w["c2"],spee,65,0,0) c1(w["c3"],spee,60,0,0) | |
344 | c1(w["d1"],spee,30,0,0) c1(w["d2"],spee,65,0,0) c1(w["d3"],spee,60,0,0) | |
345 | c1(w["e1"],spee,-70,185,0) c1(w["e2"],spee,30,0,0) c1(w["e3"],spee,30,0,0) | |
346 | elseif form == "gun" then | |
347 | CloseFing("a",spee) CloseFing("b",spee) | |
348 | c1(w["c1"],spee,0,0,1) c1(w["c2"],spee,0,0,0) c1(w["c3"],spee,0,0,0) | |
349 | c1(w["d1"],spee,0,0,-1) c1(w["d2"],spee,0,0,0) c1(w["d3"],spee,0,0,0) | |
350 | c1(w["e1"],spee,-60,90,0) c1(w["e2"],spee,20,0,0) c1(w["e3"],spee,-20,0,0) | |
351 | elseif form == "wide" then | |
352 | c1(w["a1"],spee,-3,0,45) c1(w["a2"],spee,-3,0,0) c1(w["a3"],spee,-3,0,0) | |
353 | c1(w["b1"],spee,-3,0,15) c1(w["b2"],spee,-3,0,0) c1(w["b3"],spee,-3,0,0) | |
354 | c1(w["c1"],spee,-3,0,-15) c1(w["c2"],spee,-3,0,0) c1(w["c3"],spee,-3,0,0) | |
355 | c1(w["d1"],spee,-3,0,-45) c1(w["d2"],spee,-3,0,0) c1(w["d3"],spee,-3,0,0) | |
356 | c1(w["e1"],spee,-70,90,0) c1(w["e2"],spee,10,0,0) c1(w["e3"],spee,-10,0,0) | |
357 | elseif form == "wide2" then | |
358 | c1(w["a1"],spee,-18,0,45) c1(w["a2"],spee,36,0,0) c1(w["a3"],spee,30,0,0) | |
359 | c1(w["b1"],spee,-18,0,15) c1(w["b2"],spee,36,0,0) c1(w["b3"],spee,30,0,0) | |
360 | c1(w["c1"],spee,-18,0,-15) c1(w["c2"],spee,36,0,0) c1(w["c3"],spee,30,0,0) | |
361 | c1(w["d1"],spee,-18,0,-45) c1(w["d2"],spee,36,0,0) c1(w["d3"],spee,30,0,0) | |
362 | c1(w["e1"],spee,-50,90,-10) c1(w["e2"],spee,5,0,-30) c1(w["e3"],spee,-10,0,-40) | |
363 | elseif form == "grab2" then | |
364 | c1(w["a1"],spee,-70,-65,0) c1(w["a2"],spee,40,0,0) c1(w["a3"],spee,20,0,0) | |
365 | c1(w["b1"],spee,-70,-20,0) c1(w["b2"],spee,40,0,0) c1(w["b3"],spee,20,0,0) | |
366 | c1(w["c1"],spee,-70,20,-0) c1(w["c2"],spee,40,0,0) c1(w["c3"],spee,20,0,0) | |
367 | c1(w["d1"],spee,-70,65,-0) c1(w["d2"],spee,40,0,0) c1(w["d3"],spee,20,0,0) | |
368 | c1(w["e1"],spee,-70,150,0) c1(w["e2"],spee,30,0,0) c1(w["e3"],spee,30,0,0) | |
369 | elseif form == "grab3" then | |
370 | c1(w["a1"],spee,-30,-40,30) c1(w["a2"],spee,50,0,0) c1(w["a3"],spee,35,0,0) | |
371 | c1(w["b1"],spee,-30,-15,12) c1(w["b2"],spee,50,0,0) c1(w["b3"],spee,35,0,0) | |
372 | c1(w["c1"],spee,-30,15,-12) c1(w["c2"],spee,50,0,0) c1(w["c3"],spee,35,0,0) | |
373 | c1(w["d1"],spee,-30,40,-30) c1(w["d2"],spee,50,0,0) c1(w["d3"],spee,35,0,0) | |
374 | c1(w["e1"],spee,-55,205,0) c1(w["e2"],spee,30,0,0) c1(w["e3"],spee,30,0,0) | |
375 | end | |
376 | end | |
377 | function ColFings(iscol) | |
378 | pPinkie1.CanCollide = iscol | |
379 | pPinkie2.CanCollide = iscol | |
380 | pPinkie3.CanCollide = iscol | |
381 | pRing1.CanCollide = iscol | |
382 | pRing2.CanCollide = iscol | |
383 | pRing3.CanCollide = iscol | |
384 | pMid1.CanCollide = iscol | |
385 | pMid2.CanCollide = iscol | |
386 | pMid3.CanCollide = iscol | |
387 | pPoint1.CanCollide = iscol | |
388 | pPoint2.CanCollide = iscol | |
389 | pPoint3.CanCollide = iscol | |
390 | pThumb1.CanCollide = iscol | |
391 | pThumb2.CanCollide = iscol | |
392 | pThumb3.CanCollide = iscol | |
393 | end | |
394 | function ray(Pos, Dir) | |
395 | return Workspace:FindPartOnRay(Ray.new(Pos, Dir.unit *999), c) | |
396 | end | |
397 | function Earthsplosion(pos,siz,dmg,rndmg,forc,eos) local colz22 = "Really red" if eos == nil or eos == "earth" then eos = "earth" else colz22 = "Really black" eos = "sand" end | |
398 | coroutine.resume(coroutine.create(function() | |
399 | if eos == "earth" then local cr = pa(m,"Block",((14*siz)/10)*s,0,((14*siz)/10)*s,false,false,1,0,"") cr.Anchored = true cr.CFrame = pos *ca(rd(0),rd(ra(-360,360)),rd(0)) cr.CFrame = cr.CFrame + v3(ra(-siz*10,siz*10)/22,0,ra(-siz*10,siz*10)/22) | |
400 | local de = it("Decal",cr) de.Face = "Top" de.Texture = asset .. Decs.Crack Serv.d:AddItem(cr,25) end | |
401 | for i=1,4 do | |
402 | coroutine.resume(coroutine.create(function() | |
403 | local sw = pa(m,"Block",(siz/3)*s,(siz*1.3)*s,(siz/3)*s,true,true,0,0,colz22) sw.Anchored = true sw.CFrame = pos *cf(ra(-3*s,3*s),0,ra(-3*s,3*s)) *ca(rd(ra(-27,27)),rd(ra(-360,360)),rd(ra(-27,27))) local swm = it("SpecialMesh",sw) if eos == "earth" then swm.MeshType = "FileMesh" | |
404 | swm.MeshId = asset .. Decs.Spike else swm.MeshType = "Sphere" end if eos == "earth" then swm.Scale = v3(sw.Size.x/1.3,sw.Size.y*1.2,sw.Size.z/1.3) | |
405 | else swm.Scale = v3(sw.Size.x/10,sw.Size.y/37,sw.Size.z/10) end sw.CFrame = sw.CFrame + v3(ra(-0.3*siz*s,0.3*siz*s,7),0,ra(-0.3*siz*s,0.3*siz*s)) sw.CFrame = sw.CFrame * cf(0,-sw.Size.y/1.4,0) | |
406 | Dustplosion(cf(pos.p+v3(0,2*s,0)),18*s,{"Really red","Really black","Really red"},1) | |
407 | if eos == "earth" then | |
408 | for x=1,8 do | |
409 | sw.CFrame = sw.CFrame *cf(0,sw.Size.y/8,0) wait() end wait(ra(1,5)) | |
410 | for x=1,20 do | |
411 | sw.CFrame = sw.CFrame *cf(0,-sw.Size.y/20,0) wait() | |
412 | end sw:Remove() | |
413 | else | |
414 | for x=1,25 do | |
415 | sw.CFrame = sw.CFrame *cf(0,sw.Size.y/25,0) sw.Transparency = x/25 - 0.1 swm.Scale = swm.Scale + v3(0.025,0.025,0.025) wait() end | |
416 | end sw:Remove() | |
417 | end)) end | |
418 | wait(0.3) | |
419 | DmgHumanoidsNear(pos.p,dmg,rndmg,5.5*s*(siz/4),forc) | |
420 | end)) | |
421 | end | |
422 | ||
423 | function Dustplosion(onb,scale,col,cls) coroutine.resume(coroutine.create(function() | |
424 | for x=1,cls do coroutine.resume(coroutine.create(function() | |
425 | local sw = pa(m,"Block",1*s,0,1*s,false,false,0.2,0,col[ra(1,#col)]) sw.Anchored = true sw.CFrame = onb *ca(rd(ra(-35,35)),rd(ra(-360,360)),rd(ra(-35,35))) local swm = it("SpecialMesh",sw) swm.MeshType = "FileMesh" | |
426 | swm.MeshId = asset .. Decs.Cloud sw.CFrame = sw.CFrame + v3(ra(-scale,scale)/8,ra(-scale,scale)/8,ra(-scale,scale)/8) | |
427 | for i=1,scale,0.25 do | |
428 | swm.Scale = v3(i*1.5,i*1,i*1.5) sw.Transparency = ((i/scale)/2) + 0.45 | |
429 | wait() | |
430 | end | |
431 | sw:Remove() | |
432 | end)) end | |
433 | end)) end | |
434 | function ShockWave(onb,scale,col) coroutine.resume(coroutine.create(function() local sw = pa(m,"Block",1*s,0,1*s,false,false,0.2,0,col) sw.Anchored = true sw.CFrame = onb *ca(rd(90),0,0) local swm = it("SpecialMesh",sw) swm.MeshType = "FileMesh" swm.MeshId = RingMesh.MeshId | |
435 | for i=1,scale,0.75 do swm.Scale = v3(i*1.5,i*1.5,i*1.5) sw.Transparency = (i/scale) + 0 wait() end sw:Remove() end)) end | |
436 | function BlastWave(onb,scale,ymes,col) coroutine.resume(coroutine.create(function() | |
437 | local sw = pa(m,"Block",1*s,0,1*s,false,false,0.2,0,col) sw.Anchored = true sw.CFrame = onb *ca(rd(0),0,0) local swm = it("SpecialMesh",sw) swm.MeshType = "FileMesh" | |
438 | swm.MeshId = BlastMesh.MeshId | |
439 | for i=1,scale,scale/11 do | |
440 | swm.Scale = v3(i*1.25,i*ymes,i*1.25) sw.CFrame = sw.CFrame *ca(0,rd(720*(i/scale)),0) sw.Transparency = (i/scale) + 0 | |
441 | wait() | |
442 | end | |
443 | sw:Remove() | |
444 | end)) | |
445 | end | |
446 | function Explode(onb,scale,col) local Torm = m coroutine.resume(coroutine.create(function() local e1 = Instance.new("Part") e1.Anchored = true e1.formFactor = "Custom" e1.CanCollide = false e1.Size = Vector3.new(1,1,1) e1.BrickColor = BrickColor.new(col) | |
447 | e1.Transparency = 0.6 e1.TopSurface = 0 e1.BottomSurface = 0 e1.Parent = Torm e1.CFrame = onb local e1m = Instance.new("SpecialMesh") | |
448 | e1m.MeshType = "Sphere" e1m.Parent = e1 local r1 = Instance.new("Part") r1.Anchored = true r1.formFactor = "Custom" r1.CanCollide = false r1.Size = Vector3.new(1,1,1) r1.BrickColor = BrickColor.new(col) r1.Transparency = 0.6 r1.TopSurface = 0 r1.BottomSurface = 0 r1.Parent = Torm r1.CFrame = e1.CFrame *CFrame.Angles(math.rad(180),0,0) local r1m = Instance.new("SpecialMesh") r1m.MeshType = "FileMesh" | |
449 | r1m.Scale = Vector3.new(3,3,3) r1m.Parent = r1 r1m.MeshId = RingMesh.MeshId local r2 = Instance.new("Part") r2.Anchored = true r2.formFactor = "Custom" r2.CanCollide = false r2.Size = Vector3.new(1,1,1) r2.BrickColor = BrickColor.new(col) r2.Transparency = 0.6 r2.TopSurface = 0 r2.BottomSurface = 0 r2.Parent = Torm r2.CFrame = e1.CFrame *CFrame.Angles(0,math.rad(180),0) local r2m = Instance.new("SpecialMesh") r2m.MeshType = "FileMesh" | |
450 | r2m.Parent = r2 r2m.Scale = Vector3.new(3,3,3) r2m.MeshId = RingMesh.MeshId local bla = Instance.new("Part") bla.Anchored = true | |
451 | bla.formFactor = "Custom" bla.CanCollide = false bla.Size = Vector3.new(1,1,1) bla.BrickColor = BrickColor.new(col) bla.Transparency = 0.6 bla.TopSurface = 0 bla.BottomSurface = 0 bla.Parent = Torm bla.CFrame = onb local blam = Instance.new("SpecialMesh") | |
452 | blam.MeshType = "FileMesh" blam.Parent = bla blam.Scale = Vector3.new(5,5,5) blam.MeshId = BlastMesh.MeshId for i=1,30 do local pluscal = scale/38 e1m.Scale = e1m.Scale + Vector3.new(pluscal,pluscal,pluscal) | |
453 | r1m.Scale = r1m.Scale + Vector3.new(pluscal,pluscal,pluscal) r2m.Scale = r1m.Scale + Vector3.new(pluscal,pluscal,pluscal) | |
454 | blam.Scale = blam.Scale + Vector3.new(pluscal,pluscal/2,pluscal) bla.CFrame = bla.CFrame * CFrame.Angles(0,math.rad(12),0) r1.CFrame = r1.CFrame * CFrame.Angles(math.rad(6),0,0) r2.CFrame = r2.CFrame * CFrame.Angles(0,math.rad(6),0) wait() end for i=1,30 do local pluscal = scale/38 e1m.Scale = e1m.Scale + Vector3.new(pluscal,pluscal,pluscal) r1m.Scale = r1m.Scale + Vector3.new(pluscal,pluscal,pluscal) r2m.Scale = r1m.Scale + Vector3.new(pluscal,pluscal,pluscal) | |
455 | blam.Scale = blam.Scale + Vector3.new(pluscal/3,pluscal/3,pluscal/3) bla.CFrame = bla.CFrame * CFrame.Angles(0,math.rad(12),0) r1.CFrame = r1.CFrame * CFrame.Angles(math.rad(6),0,0) r2.CFrame = r2.CFrame * CFrame.Angles(0,math.rad(6),0) bla.Transparency = bla.Transparency + 0.1 e1.Transparency = e1.Transparency + 0.1 r1.Transparency = r1.Transparency + 0.1 r2.Transparency = r2.Transparency + 0.1 wait() end e1:Remove() r1:Remove() r2:Remove() end)) end | |
456 | ||
457 | function Hurtsplosion(pos,dmg,rndmg,siz,forc) | |
458 | coroutine.resume(coroutine.create(function() local boomcol = {"Really red","Really black","Really red"} | |
459 | for i=1,3 do | |
460 | coroutine.resume(coroutine.create(function() | |
461 | local plos = pa(m,"Block",1*s*siz,1.5*s*siz,0.7*s*siz,false,false,0.3,0,boomcol) spm("Sphere",plos,1) plos.Anchored = true | |
462 | plos.CFrame = cf(pos + v3(0,0,0)) * ca(rd(ra(-360,360)),rd(ra(-360,360)),rd(ra(-360,360))) | |
463 | plos.Mesh.Scale = v3(0.1,0.1,0.1) | |
464 | for i=0.3,1,0.03 do local plc = plos.CFrame | |
465 | plos.Mesh.Scale = v3(i*6,i*6,i*6) plos.Transparency = i plos.CFrame = plc * ca(rd(3),rd(3),0) | |
466 | wait() | |
467 | end | |
468 | plos:Remove() | |
469 | end)) | |
470 | end | |
471 | end)) | |
472 | wait(0.1) | |
473 | DmgHumanoidsNear(pos,dmg,rndmg,5.5*s*siz,forc) | |
474 | end | |
475 | ||
476 | function DmgHumanoidsNear(pos,dmg,rndmg,mag,forc) | |
477 | local function kidive(ob) | |
478 | for i,v in pairs(ob:children()) do | |
479 | if v:IsA("BasePart") and v.Parent.Parent:findFirstChild("Humanoid") == nil and v.Parent:findFirstChild("Humanoid") == nil and (v.Position - pos).magnitude < mag*1.3 and v.Anchored == false and v:GetMass() < 150 then | |
480 | v:BreakJoints() v.Velocity = cf(pos,v.Position).lookVector*forc | |
481 | end | |
482 | if v:IsA("Humanoid") and v ~= hu and v.Parent:findFirstChild("Torso") then | |
483 | if (pos - v.Parent.Torso.Position).magnitude < mag then local tdmg = dmg*ra(1,rndmg) | |
484 | if v.Parent:findFirstChild("Hh") == nil then local hh= Instance.new("NumberValue",v.Parent) hh.Name = "Hh" | |
485 | hh.Value = v.Health - tdmg else v.Parent.Hh.Value = v.Health - (tdmg*3.5) end | |
486 | v.Health = v.Parent.Hh.Value if v.Parent.Hh.Value < 1 then v.Parent:BreakJoints() end | |
487 | end | |
488 | end | |
489 | if v:IsA("Model") or v:IsA("Workspace") then kidive(v) end end end | |
490 | kidive(workspace) | |
491 | end | |
492 | function Fire(bullet,typez,siz,dmg,rndmg,forc) | |
493 | if typez == 1 then | |
494 | bullet.Anchored = true | |
495 | local bullethit = false | |
496 | local tyms = 0 | |
497 | repeat | |
498 | tyms = tyms + 2 | |
499 | local bhit,bpos = ray(bullet.Position,bullet.Position - (bullet.CFrame *cf(0,0,-1)).p) | |
500 | if bpos ~= nil and (bpos - bullet.Position).magnitude < 7 then bullethit = true else bullet.CFrame = bullet.CFrame *cf(0,0,-1*s) *ca(rd(-0.0025),rd(0),0) end | |
501 | if tyms%32 == 0 then wait() end | |
502 | until bullethit or bullet.Position.y < -300 or tyms > 800 | |
503 | bullet.CFrame = bullet.CFrame *cf(0,0,8) bullet:Remove() | |
504 | if bullet.Position.y < -300 then | |
505 | else | |
506 | Hurtsplosion(bullet.Position,dmg,rndmg,siz,forc) | |
507 | end | |
508 | elseif typez == 2 then | |
509 | bullet.Anchored = true | |
510 | local bullethit = false | |
511 | local tyms = 0 | |
512 | local ming = 0.001 | |
513 | repeat | |
514 | if tyms > 70 and (ming == 0.001 or ming == -2.5) then ming = -2.5 | |
515 | local bpos = (bullet.CFrame *cf(0,0,-300)).p if (bpos - v3(Palm.Position.x,bpos.y,Palm.Position.z)).magnitude < 25*s then ming = 0 end | |
516 | end | |
517 | tyms = tyms + 2 | |
518 | local bhit,bpos = ray(bullet.Position,bullet.Position - (bullet.CFrame *cf(0,0,-1)).p) | |
519 | if bpos ~= nil and (bpos - bullet.Position).magnitude < 7 then bullethit = true else bullet.CFrame = bullet.CFrame *cf(0,0,-0.5) *ca(rd(ming),rd(0),0) end | |
520 | if tyms%16 == 0 then wait() end | |
521 | until bullethit or bullet.Position.y < -300 or tyms > 500 | |
522 | bullet.CFrame = bullet.CFrame *cf(0,0,8) bullet:Remove() | |
523 | if bullet.Position.y < -300 then | |
524 | else | |
525 | Hurtsplosion(bullet.Position,dmg,rndmg,siz,forc) | |
526 | end | |
527 | elseif typez == 3 then | |
528 | end | |
529 | end | |
530 | function ShortifiedAnim(theanim) | |
531 | if theanim == "Beam" then | |
532 | local crom = pa(m,"Block",0,0,0,true,true,0.5,0,LaserCol3) local cromm = it("SpecialMesh",crom) cromm.MeshType = "FileMesh" cromm.MeshId = asset .. Decs.Crown | |
533 | cromm.Scale = v3(15*s,5*s,15*s) crom.Anchored = true --local cromw = weld(crom,Palm,crom,0,Palm.Size.y/3.6,-Palm.Size.z*1.8,rd(-90),0,0) | |
534 | dias = {} loldiv = 360/8 for x=0,360,loldiv do | |
535 | local dia = pa(m,"Block",0,0,0,false,false,0,0,LaserCol2) dia.Anchored = true local diam = it("SpecialMesh",dia) diam.MeshType = "FileMesh" diam.MeshId = DiamondMesh.MeshId | |
536 | diam.Scale = v3(3*s,9*s,3*s) table.insert(dias,dia) | |
537 | end Button = true coroutine.resume(coroutine.create(function() local tardz = 0 repeat wait() tardz = tardz+ 15 | |
538 | crom.CFrame = Palm.CFrame *ca(rd(-90),0,0) *cf(0,5.5*s,2*s) *ca(0,rd(tardz),0) | |
539 | for rofl=1,#dias do dias[rofl].CFrame = crom.CFrame *ca(0,rd(rofl*loldiv),0) *cf(0,-19*s,0) *ca(rd(25),0,0) *cf(0,32*s,0) end | |
540 | until not Button for x2=0.5,1,0.05 do wait() crom.Transparency = x2 end end)) | |
541 | coroutine.resume(coroutine.create(function() for xk=1,0.5,-0.02 do wait() for i=1,#dias do dias.Transparency =xk end end end)) | |
542 | wait(1) local beamoffset = v3(0,0,0) | |
543 | local b1 = pa(m,"Ball",10*s,10*s,10*s,false,false,0.1,0,LaserCol) b1.Anchored = true | |
544 | local b2 = pa(m,"Block",10*s,1,10*s,false,false,0.1,0,LaserCol) b2.Anchored = true local b2m = it("CylinderMesh",b2) | |
545 | local b3 = pa(m,"Ball",10*s,10*s,10*s,false,false,0.1,0,LaserCol) b3.Anchored = true | |
546 | local bpos = nil local bhit = nil local ts = 0 | |
547 | repeat beamoffset = v3(ra(-2*s,2*s),ra(-2*s,2*s),ra(-2*s,2*s)) ts = ts + 1 | |
548 | bhit,bpos = ray(Palm.Position,Palm.Position - (Palm.CFrame *cf(0,0,1)).p) | |
549 | if bhit == nil or (Palm.Position - bpos).magnitude > 1500 then break end | |
550 | b1.CFrame = Palm.CFrame *cf(0,3*s,-11*s) | |
551 | b3.CFrame = cf(bpos) local lenz = (b1.Position - b3.Position).magnitude | |
552 | b2.CFrame = cf(b1.Position,b3.Position) *ca(rd(90),0,0) *cf(0,-lenz/2,0) b2m.Scale = v3(1,lenz,1) | |
553 | b1.CFrame = b1.CFrame + beamoffset b2.CFrame = b2.CFrame + beamoffset b3.CFrame = b3.CFrame + beamoffset | |
554 | if ts%10 == 0 then DmgHumanoidsNear(b3.Position,3,10,(14*s)+2,100) Explode(b3.CFrame*cf(0,b3.Size.y/3,0),25*s,LaserCol2) end | |
555 | wait() until not Button or ts > 600 | |
556 | coroutine.resume(coroutine.create(function() for xk=0.1,1.1,0.08 do wait() b1.Transparency = xk b2.Transparency = xk b3.Transparency = xk end b1:Remove() b2:Remove() b3:Remove() end)) | |
557 | coroutine.resume(coroutine.create(function() for xk=0.5,1.1,0.02 do wait() for i=1,#dias do dias.Transparency =xk end end end)) | |
558 | wait(1) clearit(dias) crom:Remove() | |
559 | end | |
560 | end | |
561 | PalmLev = it("BodyPosition",Palm) | |
562 | PalmFace = it("BodyGyro",Palm) PalmFace.maxTorque = v3(0,0,0) | |
563 | coroutine.resume(coroutine.create(function() | |
564 | PalmLev.position = (t.CFrame *cf(handoffset)).p | |
565 | local yspi = 0 | |
566 | while true do yspi = yspi + 8 | |
567 | if Anim.a == "Gun" or Anim.a == "Ride" or Anim.a == "Pound" then | |
568 | Facing = "Mouse" bgx = -90 bgy = 90 bgz = 0 | |
569 | elseif Anim.a == "Fu" or Anim.a == "Fist" or Anim.a == "GroundGrip" then | |
570 | Facing = "Mouse" bgx = -90 bgy = 0 bgz = 0 | |
571 | elseif Anim.a == "Splat" or Anim.a == "Beam" then | |
572 | Facing = "Mouse" bgx = 0 bgy = 0 bgz = 0 | |
573 | elseif Anim.a == "None" then | |
574 | Facing = "Owner" bgx = -90 bgy = 0 bgz = 0 Posing = "Follow" | |
575 | elseif Anim.a == "Shower" then | |
576 | Facing = "None" bgx = 0 bgy = 0 bgz = 0 Posing = "TopOwner" | |
577 | end | |
578 | if Posing == "Follow" then | |
579 | PalmLev.maxForce = v3(1/0,1/0,1/0) PalmLev.position = (t.CFrame *cf(handoffset) *cf(0,0,0)).p | |
580 | elseif Posing == "TopOwner" then | |
581 | PalmLev.maxForce = v3(1/0,1/0,1/0) PalmLev.position = (t.CFrame *cf(0,12*s,0)).p | |
582 | end | |
583 | if Facing == "Owner" then | |
584 | PalmFace.maxTorque = v3(1/0,1/0,1/0) PalmFace.cframe = cf(Palm.Position,he.Position) *ca(rd(bgx),rd(bgy),rd(bgz)) | |
585 | elseif Facing == "Mouse" and mou ~= nil and Equip then | |
586 | if Anim.a == "Gun" or Anim.a == "Beam" or Anim.a == "Ride" or Anim.a == "GroundGrip" or Anim.a == "Fu" or Anim.a == "Pound" or Anim.a == "Splat" or Anim.a == "Fist" then | |
587 | if Anim.b == "None" or Anim.a == "Beam" or Anim.a == "Ride" then | |
588 | PalmFace.cframe = cf(Palm.Position,mou.Hit.p) *ca(rd(bgx),rd(bgy),rd(bgz)) wait(0.05) | |
589 | end end end | |
590 | wait(0.05) | |
591 | end | |
592 | end)) | |
593 | function FireFinger(lasercol,ffingz,targ,typez,siz,dmg,rndmg,forc) coroutine.resume(coroutine.create(function() | |
594 | local laser = pa(m,"Block",fingwide*1.3,fingwide*1.3,fingwide*2.5,true,false,0,0,lasercol) spm("Sphere",laser,1+(siz/5.5)) laser.Name = "Projectile" | |
595 | local lw = weld(laser,ffingz,laser,0,ffingz.Size.y/0.8 +(siz/2.5),0,rd(90),0,0) | |
596 | for i=1,0.4,-0.05 do laser.Transparency = i wait() end | |
597 | BlastWave(ffingz.CFrame*cf(0,ffingz.Size.y*1.3,0)*ca(0,0,0),ffingz.Size.x*1.6,1.8,LaserCol2) | |
598 | lw:Remove() laser.CFrame = cf(laser.Position,targ) | |
599 | Fire(laser,typez,siz,dmg,rndmg,forc) | |
600 | end)) | |
601 | end | |
602 | GrabWeld = it("Weld",m) | |
603 | Palm.Touched:connect(function(touch) | |
604 | if Anim.a == "Ride" and GrabWeld.Part1 == nil and touch.Parent:findFirstChild("Torso") and touch.Parent:findFirstChild("Humanoid") then | |
605 | local tor = touch.Parent.Torso touch.Parent.Humanoid.PlatformStand = true | |
606 | GrabWeld.Part0 = Palm GrabWeld.Part1 = tor GrabWeld.C0 = cf(-3*s,4.5*s,-Palm.Size.x/2) GrabWeld.C1 = ca(0,rd(90),rd(-90)) *ca(0,rd(0),0) | |
607 | end | |
608 | end) | |
609 | re(bp,"Hand") | |
610 | hb = it("HopperBin",bp) hb.Name = "Hand" | |
611 | hb.Selected:connect(function(mouse) mou = mouse Equip = true | |
612 | mouse.KeyDown:connect(function(k) k = k:lower() | |
613 | if Anim.a == "Ride" and k == "f" then FireFinger(LaserCol,pPinkie3,mouse.Hit.p,1,2.25,1,18,30) end | |
614 | if Anim.b ~= "None" or Anim.Welding ~= 0 then return end | |
615 | if Anim.a == "None" then | |
616 | if k == "f" then -- on anim on | |
617 | Anim.a = "Gun" HandSign("Gun",0.7) | |
618 | elseif k == "p" then | |
619 | Anim.a = "Fu" HandSign("f",1) | |
620 | elseif k == "g" then | |
621 | Anim.a = "Fist" HandSign("fist",1) | |
622 | elseif k == "c" then | |
623 | Anim.a = "Splat" HandSign("wide",1) | |
624 | elseif k == "r" then | |
625 | Anim.a = "Ride" HandSign("ride",1) Posing = "None" | |
626 | elseif k == "v" then | |
627 | Anim.a = "Shower" HandSign("grab2",1) PalmFace.cframe = cf(0,0,0) *ca(0,0,0) | |
628 | elseif k == "b" then | |
629 | Anim.a = "Pound" HandSign("fist",1) | |
630 | elseif k == "x" then | |
631 | Anim.a = "GroundGrip" HandSign("grab2",1) | |
632 | elseif k == "z" then | |
633 | Anim.a = "Beam" HandSign("wide2",1) | |
634 | end | |
635 | else | |
636 | if k == "f" and Anim.a == "Gun" then -- on anim off | |
637 | Anim.a = "None" HandSign("five",0.8) | |
638 | elseif k == "p" and Anim.a == "Fu" then | |
639 | Anim.a = "None" HandSign("five",0.8) | |
640 | elseif k == "g" and Anim.a == "Fist" then | |
641 | Anim.a = "None" HandSign("five",0.8) | |
642 | elseif k == "c" and Anim.a == "Splat" then | |
643 | Anim.a = "None" HandSign("five",0.8) | |
644 | elseif k == "r" and Anim.a == "Ride" then | |
645 | Anim.a = "None" HandSign("five",0.8) GrabWeld.Part0 = nil Anim.b = "None" Posing = "Follow" Facing = "Owner" | |
646 | if GrabWeld.Part1 ~= nil and GrabWeld.Part1.Parent:findFirstChild("Humanoid") ~= nil then GrabWeld.Part1.Parent.Humanoid.PlatformStand = false end GrabWeld.Part1 = nil | |
647 | elseif k == "v" and Anim.a == "Shower" then | |
648 | Anim.a = "None" HandSign("five",0.8) Posing = "Follow" Facing = "Owner" | |
649 | elseif k == "b" and Anim.a == "Pound" then | |
650 | Anim.a = "None" HandSign("five",0.8) | |
651 | elseif k == "x" and Anim.a == "GroundGrip" then | |
652 | Anim.a = "None" HandSign("five",0.8) | |
653 | elseif k == "z" and Anim.a == "Beam" then | |
654 | Anim.a = "None" HandSign("five",0.8) | |
655 | end | |
656 | end | |
657 | end) | |
658 | mouse.Button1Down:connect(function() | |
659 | if Anim.a == "None" or Anim.b ~= "None" then return end | |
660 | if Anim.a == "Gun" then | |
661 | Anim.b = "Gun" FireFinger(LaserCol,pPoint3,mouse.Hit.p,1,2.25,1,10,60) FireFinger(LaserCol,pMid3,mouse.Hit.p,1,2.25) wait(1) Anim.b = "None" | |
662 | elseif Anim.a == "Fu" then | |
663 | Anim.b = "Fu" FireFinger(LaserCol,pMid3,mouse.Hit.p,1,3.65,2,14,95) wait(0.25) Anim.b = "None" | |
664 | elseif Anim.a == "Fist" then | |
665 | local bhit,bpos = ray(Palm.Position,Palm.Position - (Palm.CFrame *cf(0,-1,0)).p) | |
666 | if bhit == nil or (Palm.Position - bpos).magnitude > 500 then return end | |
667 | Anim.b = "Fist" Posing = "None" PalmFace.cframe = cf(Palm.Position,bpos) *ca(rd(-90),0,0) | |
668 | PalmLev.position = (Palm.CFrame *cf(0,-15*s,0)).p | |
669 | wait(0.45) | |
670 | PalmLev.position = bpos + ((Palm.CFrame *cf(0,1*s,0)).p - Palm.Position) | |
671 | local tz = 0 repeat wait() BlastWave(Palm.CFrame*ca(rd(180),0,0),8*s,3.5,HCol) tz = tz + wait() until (PalmLev.position - Palm.Position).magnitude < 8*s or tz > 1 | |
672 | Explode(Palm.CFrame *cf(0,6*s,0) *ca(rd(180),0,0),15*s,ts(bhit.BrickColor)) | |
673 | DmgHumanoidsNear((Palm.CFrame *cf(0,8,0)).p,3,10,(12*s)+2,105) | |
674 | if not bhit.Anchored then PalmLev.position = (Palm.CFrame *cf(0,12*s,0)).p wait(0.5) end | |
675 | wait(1) Posing = "Follow" Anim.b = "None" | |
676 | elseif Anim.a == "Splat" then | |
677 | if mouse.Target == nil and (Palm.Position - mouse.Hit.p).magnitude > 500 then return end local bpos = mouse.Hit.p | |
678 | Anim.b = "Splat" Posing = "None" | |
679 | local ya,yb,yc = PalmFace.cframe:toEulerAnglesXYZ() PalmFace.cframe = cf(0,0,0) *ca(0,yb,0) *ca(rd(-90),0,0) PalmLev.position = bpos + v3(0,10*s,0) | |
680 | local tz = 0 repeat wait() tz = tz + wait() until (PalmLev.position - Palm.Position).magnitude < 5*s or tz > 1.3 | |
681 | for i=-90,0,5 do | |
682 | PalmLev.position = PalmLev.position + v3(0,2*s,0) PalmFace.cframe = cf(0,0,0) *ca(0,yb,0) *ca(rd(i),0,0) | |
683 | wait() | |
684 | end wait(0.2) | |
685 | for i=0,-100,-10 do | |
686 | local lewd = i | |
687 | if lewd < -50 then lewd = -95 end | |
688 | PalmLev.position = PalmLev.position - v3(0,4.7*s,0) PalmFace.cframe = cf(0,0,0) *ca(0,yb,0) *ca(rd(lewd),0,0) | |
689 | wait() | |
690 | end wait(0.2) | |
691 | local cr = pa(m,"Block",16*s,0,16*s,false,false,1,0,"") cr.Anchored = true cr.CFrame = cf(bpos) *ca(0,rd(ra(-360,360)),0) | |
692 | local de = it("Decal",cr) de.Face = "Top" de.Texture = asset .. Decs.Crack Serv.d:AddItem(cr,16) | |
693 | DmgHumanoidsNear((Palm.CFrame *cf(0,0,-1)).p,3,20,(15*s)+2,110) | |
694 | ShockWave(Palm.CFrame *ca(rd(90),0,0),25*s,LaserCol) | |
695 | wait(1) Posing = "Follow" Anim.b = "None" | |
696 | elseif Anim.a == "Ride" and Button == false then | |
697 | Posing = "None" Anim.b = "Ride" | |
698 | Button = true | |
699 | repeat PalmLev.position = (Palm.CFrame *cf(0,10,0)).p wait() until Button == false | |
700 | Anim.b = "None" | |
701 | elseif Anim.a == "Shower" and Button == false then | |
702 | Anim.b = "Shower" Button = true | |
703 | repeat | |
704 | local targz = Palm.Position + v3(0,20*s,0) | |
705 | if ra(1,12) == 1 then FireFinger(LaserCol,pPinkie3,targz,2,4,1,18,55) end | |
706 | if ra(1,13) == 1 then FireFinger(LaserCol,pRing3,targz,2,4,1,18,60) end | |
707 | if ra(1,12) == 1 then FireFinger(LaserCol,pMid3,targz,2,4,1,18,65) end | |
708 | if ra(1,13) == 1 then FireFinger(LaserCol,pPoint3,targz,2,4,1,18,70) end | |
709 | if ra(1,12) == 1 then FireFinger(LaserCol,pThumb3,targz,2,4,1,18,80) end | |
710 | PalmFace.cframe = PalmFace.cframe *ca(0,rd(10),0) | |
711 | wait() | |
712 | until Button == false | |
713 | Anim.b = "None" | |
714 | elseif Anim.a == "Pound" and Anim.b == "None" then Posing = "None" Anim.b = "Pound" | |
715 | local bhit,bpos = ray(Palm.Position,Palm.Position - (Palm.CFrame *cf(0,-1,0)).p) | |
716 | if bhit == nil or (Palm.Position - bpos).magnitude > 500 then return end | |
717 | PalmLev.position = bpos + v3(0,15*s,0) | |
718 | local ya,yb,yc = PalmFace.cframe:toEulerAnglesXYZ() PalmFace.cframe = ca(ya,yb,yc) | |
719 | local tz = 0 repeat wait() tz = tz + wait() until (PalmLev.position - Palm.Position).magnitude < 5*s or tz > 1.3 wait(0.1) | |
720 | for i=-90,-10,10 do | |
721 | PalmFace.cframe = ca(ya,yb,yc) *ca(0,0,rd(i+90)) PalmLev.position = PalmLev.position + v3(0,2.5*s,0) | |
722 | wait() end wait(0.25) local realcf = cf(v3(he.Position.x,0,he.Position.z),v3(Palm.Position.x,0,Palm.Position.z)) | |
723 | for i=-10,-90,-10 do | |
724 | PalmFace.cframe = ca(ya,yb,yc) *ca(0,0,rd(i+90)) PalmLev.position = PalmLev.position - v3(0,4*s,0) | |
725 | wait() end PalmFace.cframe = realcf *ca(rd(-90),rd(90),0) wait(0.25) | |
726 | local cr = pa(m,"Block",22*s,0,22*s,false,false,1,0,"") cr.Anchored = true cr.CFrame = cf(bpos) *ca(0,rd(ra(-360,360)),0) | |
727 | local de = it("Decal",cr) de.Face = "Top" de.Texture = asset .. Decs.Crack Serv.d:AddItem(cr,16) | |
728 | Dustplosion(Palm.CFrame *cf(2*s,0,0) *ca(rd(90),0,rd(90)),30*s,{"Really red","Really black","Really red"},3) | |
729 | ShockWave(Palm.CFrame *cf(2*s,0,0) *ca(rd(90),0,rd(90)),20*s,ts(bhit.BrickColor)) | |
730 | DmgHumanoidsNear((Palm.CFrame *cf(0,1,0)).p,1,20,(15*s)+2,90) wait(0.2) | |
731 | local palmcf = cf(bpos) local earthsplos = ra(5,8) palmcf = Palm.CFrame *ca(0,rd(90),0) *ca(rd(-90),0,rd(0)) | |
732 | for i=1,earthsplos do Earthsplosion(palmcf *cf(0,-2*s,((i*7)+7)*s),10,1,20,75) wait(0.1) end | |
733 | Earthsplosion(palmcf *cf(0,-2*s,(((earthsplos+1)*7)+7)*s),16,2,25,75) | |
734 | wait(1) Posing = "Follow" wait(0.25) Anim.b = "None" | |
735 | elseif Anim.a == "GroundGrip" then Posing = "None" Anim.b = "GroundGrip" | |
736 | local bhit,bpos = ray(Palm.Position,Palm.Position - (Palm.CFrame *cf(0,-1,0)).p) | |
737 | if bhit == nil or (Palm.Position - bpos).magnitude > 500 then return end | |
738 | PalmLev.position = bpos + v3(0,27*s,0) ColFings(false) | |
739 | local tz = 0 repeat wait() tz = tz + wait() until (PalmLev.position - Palm.Position).magnitude < 8*s or tz > 1.3 wait(0.1) | |
740 | local thepos = (Palm.CFrame *cf(0,-0.1*s,0)).p - Palm.Position | |
741 | PalmFace.cframe = cf(Palm.Position,bpos + thepos) *ca(rd(-90),0,0) | |
742 | for i=27,1,-3 do PalmLev.position = bpos + v3(0,i*s,0) wait(0.07) end HandSign("grab3",0.4) wait(0.55) | |
743 | local ro = pa(m,"Ball",0,0,0,false,false,0,0,"Earth green") ro.Name = "Rock" local row = it("SpecialMesh",ro) row.MeshType = "FileMesh" row.MeshId = asset .. Decs.Rock | |
744 | local rowe = weld(ro,Palm,ro,0,Palm.Size.y,-Palm.Size.z*1.2,0,0,0) row.Scale = v3(9*s,10*s,9*s) | |
745 | coroutine.resume(coroutine.create(function() for xz=1,70,7 do PalmLev.position = bpos + v3(0,xz*s,0) wait(0.06) end end)) | |
746 | wait(0.25) Dustplosion(cf(bpos),30*s,{"Really red","Really black","Really red"},3) local lolra = ra(-360,360) | |
747 | Earthsplosion(cf(bpos),25,1,20,125,"sand") for yyy=0,360,60 do coroutine.resume(coroutine.create(function() | |
748 | for zzz=1,4 do | |
749 | Earthsplosion(cf(bpos) *ca(0,rd(yyy+lolra),0) *cf(0,0,zzz*15*s),10,1,20,75) wait(0.14) | |
750 | end wait(0.25) Earthsplosion(cf(bpos) *ca(0,rd(yyy+lolra),0) *cf(0,0,5*18*s),25,1,20,120) end)) end | |
751 | wait(0.3) HandSign("grab2",0.5) wait(0.75) Serv.d:AddItem(ro,20) rowe:Remove() ro.CanCollide = true local rocf = ro.CFrame ro.Size=v3(14*s,14*s,14*s) ro.CFrame = rocf wait(0.75) ColFings(true) Posing = "Follow" Anim.b = "None" | |
752 | elseif Anim.a == "Beam" and not Button and Anim.b == "None" then Anim.b = "Beam" | |
753 | ShortifiedAnim("Beam") wait(0.5) Anim.b = "None" | |
754 | end | |
755 | end) | |
756 | mouse.Button1Up:connect(function() | |
757 | Button = false | |
758 | end) | |
759 | mouse.Move:connect(function() | |
760 | end) | |
761 | ||
762 | end) | |
763 | hb.Deselected:connect(function(mouse) | |
764 | Equip = false | |
765 | end) |