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,Mouse,mouse,UserInputService,ContextActionService = owner | |
4 | local RealPlayer = Player | |
5 | do print("FE Compatibility code by Mokiros")local a=RealPlayer;script.Parent=a.Character;local b=Instance.new("RemoteEvent")b.Name="UserInput_Event"local function c()local d={_fakeEvent=true,Functions={},Connect=function(self,e)table.insert(self.Functions,e)end}d.connect=d.Connect;return d end;local f={Target=nil,Hit=CFrame.new(),KeyUp=c(),KeyDown=c(),Button1Up=c(),Button1Down=c(),Button2Up=c(),Button2Down=c()}local g={InputBegan=c(),InputEnded=c()}local CAS={Actions={},BindAction=function(self,h,i,j,...)CAS.Actions[h]=i and{Name=h,Function=i,Keys={...}}or nil end}CAS.UnbindAction=CAS.BindAction;local function k(self,l,...)local d=f[l]if d and d._fakeEvent then for m,e in pairs(d.Functions)do e(...)end end end;f.TrigEvent=k;g.TrigEvent=k;b.OnServerEvent:Connect(function(n,o)if n~=a then return end;f.Target=o.Target;f.Hit=o.Hit;if not o.isMouse then local p=o.UserInputState==Enum.UserInputState.Begin;if o.UserInputType==Enum.UserInputType.MouseButton1 then return f:TrigEvent(p and"Button1Down"or"Button1Up")end;if o.UserInputType==Enum.UserInputType.MouseButton2 then return f:TrigEvent(p and"Button2Down"or"Button2Up")end;for m,d in pairs(CAS.Actions)do for m,q in pairs(d.Keys)do if q==o.KeyCode then d.Function(d.Name,o.UserInputState,o)end end end;f:TrigEvent(p and"KeyDown"or"KeyUp",o.KeyCode.Name:lower())g:TrigEvent(p and"InputBegan"or"InputEnded",o,false)end end)b.Parent=NLS([==[local a=game:GetService("Players").LocalPlayer;local b=script:WaitForChild("UserInput_Event")local c=a:GetMouse()local d=game:GetService("UserInputService")local e=function(f,g)if g then return end;b:FireServer({KeyCode=f.KeyCode,UserInputType=f.UserInputType,UserInputState=f.UserInputState,Hit=c.Hit,Target=c.Target})end;d.InputBegan:Connect(e)d.InputEnded:Connect(e)local h,i;while wait(1/30)do if h~=c.Hit or i~=c.Target then h,i=c.Hit,c.Target;b:FireServer({isMouse=true,Target=i,Hit=h})end end]==],Player.Character)local r=game;local s={__index=function(self,q)local t=rawget(self,"_RealService")if t then return typeof(t[q])=="function"and function(m,...)return t[q](t,...)end or t[q]end end,__newindex=function(self,q,u)local t=rawget(self,"_RealService")if t then t[q]=u end end}local function v(d,w)d._RealService=typeof(w)=="string"and r:GetService(w)or w;return setmetatable(d,s)end;local x={GetService=function(self,t)return rawget(self,t)or r:GetService(t)end,Players=v({LocalPlayer=v({GetMouse=function(self)return f end},Player)},"Players"),UserInputService=v(g,"UserInputService"),ContextActionService=v(CAS,"ContextActionService"),RunService=v({_btrs={},Soundscape=r:GetService("RunService").Heartbeat,BindToSoundscape=function(self,h,m,i)self._btrs[h]=self.Heartbeat:Connect(i)end,UnbindFromRenderStep=function(self,h)self._btrs[h]:Disconnect()end},"RunService")}rawset(x.Players,"localPlayer",x.Players.LocalPlayer)x.service=x.GetService;v(x,game)game,owner=x,x.Players.LocalPlayer end | |
6 | - | local p = game:service'Players'.polocasuz |
6 | + | local p = game:service'Players'lafur2 |
7 | local c = p.Character | |
8 | local bp = p.Backpack | |
9 | pcall(function() _G.mm:Remove() end) | |
10 | pcall(function() bp.RMTank:Remove() end) | |
11 | it = Instance.new | |
12 | v3=Vector3.new | |
13 | bc=BrickColor.new | |
14 | c3=Color3.new | |
15 | cn=CFrame.new | |
16 | ca=CFrame.Angles | |
17 | ti=table.insert | |
18 | tr=table.remove | |
19 | rn=math.random | |
20 | rd=math.rad | |
21 | mf=math.floor | |
22 | asset = "http://www.roblox.com/asset/?id=" | |
23 | ds = {} | |
24 | ds.Claw = "10681506" | |
25 | ds.Ring = "3270017" | |
26 | ds.Crack = "49173398" | |
27 | ds.Cloud = "1095708" | |
28 | ds.Spike = "1033714" | |
29 | ds.Rock = "1290033" | |
30 | ds.Crown = "1323306" | |
31 | ds.Hood = "16952952" | |
32 | ds.Slash = "10209645" | |
33 | ds.Slash2 = "46760716" | |
34 | ds.MadFace = "2235131" | |
35 | ds.BanditMask = "20637493" | |
36 | ds.Hood2 = "25211365" | |
37 | ds.HoodT2 = "64240784" | |
38 | ds.Axe = "12768042" | |
39 | ds.AxeT = "12768034" | |
40 | ds.Fist = "65322375" | |
41 | ds.Tree1 = "1090398" | |
42 | ds.Vine = "13108500" | |
43 | ds.VineT = "17585271" | |
44 | ds.TreeTexture = "2861779" | |
45 | ds.Tug = "31173820" -- sound | |
46 | ds.Fire = "2693346" --"2760979" | |
47 | ds.Hit = "2801263" | |
48 | ds.BulletHole = "64291961" | |
49 | ds.Camo = "4268107" | |
50 | table.foreach(ds,function(a,b) | |
51 | if tonumber(b:sub(1,3)) then | |
52 | ds[a] = asset .. b game:service'ContentProvider':Preload(ds[a]) | |
53 | end | |
54 | end) | |
55 | q = function(f) | |
56 | coroutine.resume(coroutine.create(function() | |
57 | f() | |
58 | end)) | |
59 | end | |
60 | ft = function(tablez,item) | |
61 | for i=1,#tablez do | |
62 | if tablez[i] == item then | |
63 | return i | |
64 | end | |
65 | end | |
66 | return nil | |
67 | end | |
68 | pa = function(pa,pn,sh,x,y,z,c,a,tr,re,bc2) | |
69 | local fp=nil | |
70 | if sh ~= "Wedge" and sh ~= "CornerWedge" and sh ~= "VehicleSeat" and sh ~= "Seat" then | |
71 | fp=it("Part",pa) | |
72 | fp.Shape=sh | |
73 | fp.formFactor="Custom" | |
74 | elseif sh == "Wedge" then | |
75 | fp=it("WedgePart",pa) | |
76 | fp.formFactor="Custom" | |
77 | elseif sh == "CornerWedge" then | |
78 | fp=it("CornerWedgePart",pa) | |
79 | elseif sh == "VehicleSeat" then | |
80 | fp=it("VehicleSeat",pa) | |
81 | elseif sh == "Seat" then | |
82 | fp=it("Seat",pa) | |
83 | end | |
84 | fp.Size=v3(x,y,z) | |
85 | fp.Friction = 2 | |
86 | fp.CanCollide=c | |
87 | fp.Anchored=false | |
88 | fp.BrickColor=bc(bc2) | |
89 | fp.Transparency=tr | |
90 | fp.Reflectance=re | |
91 | fp.BottomSurface=0 | |
92 | fp.Name=pn | |
93 | fp.Locked = true | |
94 | --fp.FrontSurface="Hinge" | |
95 | fp.TopSurface=0 | |
96 | fp.CFrame = cn(-9000,9000,-9000) | |
97 | fp:BreakJoints() | |
98 | fp.Anchored = a | |
99 | return fp | |
100 | end | |
101 | weld = function(pa,p0,p1,x,y,z,a,b,c) | |
102 | local fw=it("Weld",pa) | |
103 | fw.Part0=p0 | |
104 | fw.Part1=p1 | |
105 | fw.C0=cn(x,y,z) *ca(a,b,c) | |
106 | return fw | |
107 | end | |
108 | fade = function(prt,incr) | |
109 | q(function() | |
110 | for i=prt.Transparency,1,incr do | |
111 | prt.Transparency=i | |
112 | wait() | |
113 | end | |
114 | prt:Remove'' | |
115 | end) | |
116 | end | |
117 | stick = function(hit2,hit) | |
118 | local weld=it("Weld") | |
119 | weld.Part0=hit2 | |
120 | weld.Part1=hit | |
121 | local HitPos=hit2.Position | |
122 | local CJ=cn(HitPos) | |
123 | local C0=hit2.CFrame:inverse() *CJ | |
124 | local C1=hit.CFrame:inverse() * CJ | |
125 | weld.C0=C0 | |
126 | weld.C1=C1 | |
127 | weld.Parent=hit2 | |
128 | end | |
129 | ray = function(Pos, Dir,xxz) | |
130 | local xxz2=c | |
131 | if xxz ~= nil then | |
132 | xxz2=nil | |
133 | end | |
134 | return workspace:FindPartOnRay(Ray.new(Pos, Dir.unit *999),xxz2) | |
135 | end | |
136 | ft2 = function(tablez,item) | |
137 | for i=1,#tablez do | |
138 | if tablez[i][1] == item then | |
139 | return i | |
140 | end | |
141 | end | |
142 | return nil | |
143 | end | |
144 | Trail = function(ob,times,waitz,col,thickz,ofz) | |
145 | q(function() | |
146 | local oldpos=(ob.CFrame *ofz).p | |
147 | for i=1,times do | |
148 | local obp=(ob.CFrame *ofz).p | |
149 | local mag=(oldpos - obp).magnitude | |
150 | local tr=pa(ob,"trail","Block",0,0,0,false,false,0.5,0.15,col) | |
151 | tr.Anchored=true | |
152 | tr.CFrame=cn(oldpos,obp) | |
153 | tr.CFrame=tr.CFrame + tr.CFrame.lookVector* (mag/2) | |
154 | local trm=it("CylinderMesh",tr) | |
155 | trm.Scale=v3(5*thickz,mag*5,5*thickz) | |
156 | q(function() | |
157 | for i=5*thickz,0,-5*thickz/10 do | |
158 | trm.Scale=v3(i,mag*5,i) | |
159 | wait() | |
160 | end | |
161 | tr:Remove'' | |
162 | end) | |
163 | tr.CFrame=tr.CFrame *ca(rd(90),0,0) | |
164 | oldpos=obp wait(waitz) | |
165 | end | |
166 | end) | |
167 | end | |
168 | qi = function(ttz) | |
169 | local qii = it(ttz[1],ttz[2]) | |
170 | table.foreach(ttz,function(oi,oi2) | |
171 | if oi ~= 1 and oi ~= 2 then | |
172 | qii[oi] = oi2 | |
173 | end | |
174 | end) | |
175 | return qii | |
176 | end | |
177 | de = function(it,ti) game:service'Debris':AddItem(it,ti) end | |
178 | GlowMesh = function(anch,meshid2,rootz,mv3,colzz,adjus,l1,l2,l3) q(function() | |
179 | local spi=pa(rootz,"","Block",1,1,1,false,false,l1,0,colzz) local spim=it("SpecialMesh",spi) if meshid2:lower()=="sphere" then spim.MeshType="Sphere" elseif meshid2:lower()=="block" then spim.MeshType="Brick" else spim.MeshType="FileMesh" spim.MeshId=meshid2 end | |
180 | if anch then local spiw=qi({"Weld",spi,Part0=rootz,Part1=spi}) spiw.C0 =spiw.C0 *adjus else spi.Anchored=true spi.CFrame=adjus end | |
181 | for i=l1,l2,l1 do spi.Transparency=i spim.Scale=mv3*(i+0.3) wait() end spi:Remove'' end) | |
182 | end | |
183 | DetectSurface = function(pos, part) | |
184 | local surface = nil | |
185 | local pospos = part.CFrame | |
186 | local pos2 = pospos:pointToObjectSpace(pos) | |
187 | local siz = part.Size | |
188 | local shaep = part.Shape | |
189 | if shaep == Enum.PartType.Ball or shaep == Enum.PartType.Cylinder then | |
190 | surface = {"Anything", cn(pospos.p, pos)*cn(0, 0, -(pospos.p - pos).magnitude+0.12)*ca(rd(-90), 0, 0)} | |
191 | else | |
192 | if pos2.Y > ((siz.Y/2)-0.01) then | |
193 | surface = {"Top", ca(0, 0, 0)} | |
194 | elseif pos2.Y < -((siz.Y/2)-0.01) then | |
195 | surface = {"Bottom", ca(-math.pi, 0, 0)} | |
196 | elseif pos2.X > ((siz.X/2)-0.01) then | |
197 | surface = {"Right", ca(0, 0, rd(-90))} | |
198 | elseif pos2.X < -((siz.X/2)-0.01) then | |
199 | surface = {"Left", ca(0, 0, rd(90))} | |
200 | elseif pos2.Z > ((siz.Z/2)-0.01) then | |
201 | surface = {"Back", ca(rd(90), 0, 0)} | |
202 | elseif pos2.Z < -((siz.Z/2)-0.01) then | |
203 | surface = {"Front", ca(rd(-90), 0, 0)} | |
204 | end end | |
205 | return surface | |
206 | end | |
207 | BulletHole = function(HitPos,HitObj,sc) | |
208 | local Surface = DetectSurface(HitPos, HitObj) | |
209 | local C = cn(HitPos) * ca(HitObj.CFrame:toEulerAnglesXYZ()) * Surface[2] | |
210 | if Surface[1] == "Anything" then C = Surface[2] end | |
211 | local bl = pa(workspace,"","Block",sc,0,sc,false,true,1,0,"") qi({"Decal",bl,Face="Top",Texture=ds.BulletHole}) | |
212 | bl.CFrame = C*cn(0,-0.1,0) if not HitObj.Anchored then bl.Anchored = false stick(bl,HitObj) bl.ChildRemoved:connect(function() bl:Remove() end) end de(bl,5) | |
213 | end | |
214 | so = function(id,par,vol,pit) q(function() | |
215 | local sou = qi({"Sound",par or workspace,Volume=vol/1.5 or 0.75,Pitch=pit or 1,SoundId=id}) | |
216 | wait() sou:play() wait(2) sou:Remove() end) end | |
217 | GetRegion = function(p0,p1,f,f2) | |
218 | q(function() | |
219 | for i,v in pairs(workspace:FindPartsInRegion3(Region3.new(p0,p1),c,100) ) do | |
220 | if v.Parent:findFirstChild("H") == nil and v.Name == "Torso" and v.Parent:findFirstChild("Humanoid") and v.Parent.Humanoid.Health > 0 and v.Parent:findFirstChild("Torso") then | |
221 | q(function() | |
222 | f(v.Parent) | |
223 | end) | |
224 | elseif f2 and v.Parent.Parent:findFirstChild("Humanoid") == nil then | |
225 | f2(v) | |
226 | end | |
227 | end | |
228 | end) | |
229 | end | |
230 | FindGround = function(pos) | |
231 | local ax,ay,az = pos:toEulerAnglesXYZ() | |
232 | local bhit,bpos=ray(pos.p,pos.p - (pos.p + v3(0,200,0))) | |
233 | if bhit and bpos then | |
234 | return cn(bpos)*ca(ax,ay,az) | |
235 | end | |
236 | return nil | |
237 | end | |
238 | MakeCrater = function(pos,sc,tyms,debz) | |
239 | q(function() | |
240 | if not debz then | |
241 | debz = 5 | |
242 | end | |
243 | local bhit,bpos=ray(pos,pos - (pos + v3(0,200,0))) | |
244 | if bhit and bpos then | |
245 | for i=1,tyms do | |
246 | q(function() | |
247 | local gr = pa(misc,"","Block",rn(5,13)/10*sc,0.25*sc,rn(4,10)/10*sc,true,true,bhit.Transparency,bhit.Reflectance,bhit.BrickColor.Name) | |
248 | gr.Material = bhit.Material | |
249 | gr.TopSurface = bhit.TopSurface | |
250 | gr.CFrame = cn(bpos+v3(rn(-12,12)/10*sc,0,rn(-12,12)/10*sc))*ca(rd(rn(-40,40)),rd(rn(-360,360)),rd(rn(-40,40))) | |
251 | wait(debz) | |
252 | fade(gr,0.1) | |
253 | end) | |
254 | end | |
255 | end | |
256 | end) | |
257 | end | |
258 | MakeCrack = function(pos,sc,debz) | |
259 | q(function() | |
260 | if not debz then | |
261 | debz = 5 | |
262 | end | |
263 | local bhit,bpos=ray(pos,pos - (pos + v3(0,10,0))) | |
264 | if bhit and bpos then | |
265 | local cr = pa(misc,"","Block",sc,0,sc,false,true,1,0,"") cr.CFrame = cn(bpos) | |
266 | local dec=qi({"Decal",cr,Face="Top",Texture=ds.Crack}) de(cr,debz) | |
267 | end | |
268 | end) | |
269 | end | |
270 | f1 = function(cff,hit2,hit) | |
271 | local HitPos=cff.p | |
272 | local CJ=cn(HitPos) | |
273 | local C0=cff:inverse() *CJ | |
274 | local C1=hit.CFrame:inverse() * CJ | |
275 | return C0,C1 | |
276 | end | |
277 | a = {} | |
278 | a.insw={} | |
279 | function cleanweld(wexx,namzi) | |
280 | local tn=ft2(a.insw,wexx) | |
281 | if tn==nil then return end | |
282 | if namzi=="p0" then | |
283 | a.insw[tn][2]["p0x"],a.insw[tn][2]["p0y"],a.insw[tn][2]["p0z"]=0,0,0 elseif namzi=="p1" then | |
284 | a.insw[tn][2]["p1x"],a.insw[tn][2]["p1y"],a.insw[tn][2]["p1z"]=0,0,0 elseif namzi=="a0" then | |
285 | a.insw[tn][2]["a0x"],a.insw[tn][2]["a0y"],a.insw[tn][2]["a0z"]=0,0,0 elseif namzi=="a1" then | |
286 | a.insw[tn][2]["a1x"],a.insw[tn][2]["a1y"],a.insw[tn][2]["a1z"]=0,0,0 | |
287 | end | |
288 | end | |
289 | function c2(wexx,smmx,c0orc1,aa,bb,cc,xx,yy,zz) | |
290 | q(function() | |
291 | c1(wexx,smmx,c0orc1,aa,bb,cc,xx,yy,zz) | |
292 | end) | |
293 | end | |
294 | a.Welding=0 | |
295 | function c1(wexx,smmx,c0orc1,aa,bb,cc,xx,yy,zz) | |
296 | if ft2(a.insw,wexx)==nil then | |
297 | ti(a.insw,{wexx,{}}) | |
298 | local tn=ft2(a.insw,wexx) | |
299 | a.insw[tn][2]["p0x"],a.insw[tn][2]["p0y"],a.insw[tn][2]["p0z"]=wexx.C0.x,wexx.C0.y,wexx.C0.z | |
300 | a.insw[tn][2]["p1x"],a.insw[tn][2]["p1y"],a.insw[tn][2]["p1z"]=wexx.C1.x,wexx.C1.y,wexx.C1.z | |
301 | a.insw[tn][2]["a0x"],a.insw[tn][2]["a0y"],a.insw[tn][2]["a0z"]=wexx.C0:toEulerAnglesXYZ() | |
302 | a.insw[tn][2]["a1x"],a.insw[tn][2]["a1y"],a.insw[tn][2]["a1z"]=wexx.C1:toEulerAnglesXYZ() | |
303 | end | |
304 | local tn=ft2(a.insw,wexx) | |
305 | local xx2,yy2,zz2=0,0,0 | |
306 | local x2,y2,z2=0,0,0 | |
307 | if c0orc1==0 then | |
308 | xx2,yy2,zz2=a.insw[tn][2]["a0x"],a.insw[tn][2]["a0y"],a.insw[tn][2]["a0z"] | |
309 | x2,y2,z2=a.insw[tn][2]["p0x"],a.insw[tn][2]["p0y"],a.insw[tn][2]["p0z"] | |
310 | elseif c0orc1==1 then | |
311 | xx2,yy2,zz2=a.insw[tn][2]["a1x"],a.insw[tn][2]["a1y"],a.insw[tn][2]["a1z"] | |
312 | x2,y2,z2=a.insw[tn][2]["p1x"],a.insw[tn][2]["p1y"],a.insw[tn][2]["p1z"] | |
313 | else | |
314 | xx2,yy2,zz2=a.insw[tn][2]["a1x"],a.insw[tn][2]["a1y"],a.insw[tn][2]["a1z"] | |
315 | x2,y2,z2=a.insw[tn][2]["p0x"],a.insw[tn][2]["p0y"],a.insw[tn][2]["p0z"] | |
316 | end a.Welding=a.Welding + 1 | |
317 | local twa=1 | |
318 | if smmx >= 1 then | |
319 | else | |
320 | for i=smmx,0.8,smmx do | |
321 | twa = 1 | |
322 | if c0orc1==0 then | |
323 | wexx.C0=cn(x2-(((x2-aa)/twa)*i),y2-(((y2-bb)/twa)*i),z2-(((z2-cc)/twa)*i)) *ca(xx2-(((xx2-rd(xx))/twa)*i),yy2-(((yy2-rd(yy))/twa)*i),zz2-(((zz2-rd(zz))/twa)*i)) | |
324 | elseif c0orc1==1 then | |
325 | wexx.C1=cn(x2-(((x2-aa)/twa)*i),y2-(((y2-bb)/twa)*i),z2-(((z2-cc)/twa)*i)) *ca(xx2-(((xx2-rd(xx))/twa)*i),yy2-(((yy2-rd(yy))/twa)*i),zz2-(((zz2-rd(zz))/twa)*i)) | |
326 | else local x,y,z = wexx.C0:toEulerAnglesXYZ() | |
327 | wexx.C0=cn(x2-(((x2-aa)/twa)*i),y2-(((y2-bb)/twa)*i),z2-(((z2-cc)/twa)*i))*ca(x,y,z) | |
328 | wexx.C1=cn(wexx.C1.x,wexx.C1.y,wexx.C1.z)*ca(xx2-(((xx2-rd(xx))/twa)*i),yy2-(((yy2-rd(yy))/twa)*i),zz2-(((zz2-rd(zz))/twa)*i)) | |
329 | end | |
330 | if fu then | |
331 | q(fu) | |
332 | end | |
333 | wait() | |
334 | end | |
335 | for i=0.8,1,smmx*0.45 do | |
336 | twa = 1 | |
337 | if c0orc1==0 then | |
338 | wexx.C0=cn(x2-(((x2-aa)/twa)*i),y2-(((y2-bb)/twa)*i),z2-(((z2-cc)/twa)*i)) *ca(xx2-(((xx2-rd(xx))/twa)*i),yy2-(((yy2-rd(yy))/twa)*i),zz2-(((zz2-rd(zz))/twa)*i)) | |
339 | elseif c0orc1==1 then | |
340 | wexx.C1=cn(x2-(((x2-aa)/twa)*i),y2-(((y2-bb)/twa)*i),z2-(((z2-cc)/twa)*i)) *ca(xx2-(((xx2-rd(xx))/twa)*i),yy2-(((yy2-rd(yy))/twa)*i),zz2-(((zz2-rd(zz))/twa)*i)) | |
341 | else local x,y,z = wexx.C0:toEulerAnglesXYZ() | |
342 | wexx.C0=cn(x2-(((x2-aa)/twa)*i),y2-(((y2-bb)/twa)*i),z2-(((z2-cc)/twa)*i))*ca(x,y,z) | |
343 | wexx.C1=cn(wexx.C1.x,wexx.C1.y,wexx.C1.z)*ca(xx2-(((xx2-rd(xx))/twa)*i),yy2-(((yy2-rd(yy))/twa)*i),zz2-(((zz2-rd(zz))/twa)*i)) | |
344 | end | |
345 | wait() | |
346 | end | |
347 | end | |
348 | local i=1 | |
349 | if c0orc1==0 then | |
350 | wexx.C0=cn(x2-(((x2-aa)/twa)*i),y2-(((y2-bb)/twa)*i),z2-(((z2-cc)/twa)*i)) *ca(xx2-(((xx2-rd(xx))/twa)*i),yy2-(((yy2-rd(yy))/twa)*i),zz2-(((zz2-rd(zz))/twa)*i)) | |
351 | elseif c0orc1==1 then | |
352 | wexx.C1=cn(x2-(((x2-aa)/twa)*i),y2-(((y2-bb)/twa)*i),z2-(((z2-cc)/twa)*i)) *ca(xx2-(((xx2-rd(xx))/twa)*i),yy2-(((yy2-rd(yy))/twa)*i),zz2-(((zz2-rd(zz))/twa)*i)) | |
353 | else local x,y,z = wexx.C0:toEulerAnglesXYZ() | |
354 | wexx.C0=cn(x2-(((x2-aa)/twa)*i),y2-(((y2-bb)/twa)*i),z2-(((z2-cc)/twa)*i))*ca(x,y,z) | |
355 | wexx.C1=cn(wexx.C1.x,wexx.C1.y,wexx.C1.z)*ca(xx2-(((xx2-rd(xx))/twa)*i),yy2-(((yy2-rd(yy))/twa)*i),zz2-(((zz2-rd(zz))/twa)*i)) | |
356 | end | |
357 | a.Welding=a.Welding - 1 | |
358 | local tn=ft2(a.insw,wexx) | |
359 | if c0orc1==0 then | |
360 | a.insw[tn][2]["p0x"],a.insw[tn][2]["p0y"],a.insw[tn][2]["p0z"]=x2-(((x2-aa)/twa)*i),y2-(((y2-bb)/twa)*i),z2-(((z2-cc)/twa)*i) | |
361 | a.insw[tn][2]["a0x"],a.insw[tn][2]["a0y"],a.insw[tn][2]["a0z"]=xx2-(((xx2-rd(xx))/twa)*i),yy2-(((yy2-rd(yy))/twa)*i),zz2-(((zz2-rd(zz))/twa)*i) | |
362 | elseif c0orc1==1 then | |
363 | a.insw[tn][2]["p1x"],a.insw[tn][2]["p1y"],a.insw[tn][2]["p1z"]=x2-(((x2-aa)/twa)*i),y2-(((y2-bb)/twa)*i),z2-(((z2-cc)/twa)*i) | |
364 | a.insw[tn][2]["a1x"],a.insw[tn][2]["a1y"],a.insw[tn][2]["a1z"]=xx2-(((xx2-rd(xx))/twa)*i),yy2-(((yy2-rd(yy))/twa)*i),zz2-(((zz2-rd(zz))/twa)*i) | |
365 | elseif c0orc1==3 then | |
366 | local x,y,z=wexx.C0.x,wexx.C0.y,wexx.C0.z | |
367 | a.insw[tn][2]["p0x"],a.insw[tn][2]["p0y"],a.insw[tn][2]["p0z"]=x2-(((x2-aa)/twa)*i),y2-(((y2-bb)/twa)*i),z2-(((z2-cc)/twa)*i) | |
368 | local x,y,z=wexx.C1:toEulerAnglesXYZ() | |
369 | a.insw[tn][2]["a1x"],a.insw[tn][2]["a1y"],a.insw[tn][2]["a1z"]=xx2-(((xx2-rd(xx))/twa)*i),yy2-(((yy2-rd(yy))/twa)*i),zz2-(((zz2-rd(zz))/twa)*i) | |
370 | end | |
371 | end | |
372 | gunshot = function(speed,sc,dmg,cff) q(function() | |
373 | local bb = pa(workspace,"","Block",0.2*sc,0.3*sc,0.2*sc,true,true,0,0.1,"Black") qi({"CylinderMesh",bb}) | |
374 | bb.CFrame = cff*ca(rd(rn(-1000,1000)/1500),rd(rn(-1000,1000)/1500),rd(rn(-1000,1000)/1500)) | |
375 | so(ds.Fire,bb,0.3,1) wait() for i=1,50 do | |
376 | bhit,bpos=ray(bb.Position,bb.Position - (bb.CFrame *cn(0,-1,0)).p) | |
377 | if bhit and bpos and (bpos - bb.Position).magnitude < speed then break end | |
378 | bb.CFrame=bb.CFrame*cn(0,speed,0)*ca(rd(-0.2),0,0) | |
379 | wait() | |
380 | end bb.CFrame=bb.CFrame*cn(0,(bpos-bb.Position).magnitude,0) | |
381 | if not bhit.Anchored then | |
382 | if bhit.Parent:findFirstChild("Humanoid") then local h = bhit.Parent.Humanoid h.Health=h.Health-dmg so(ds.Hit,bhit,0.3,1) end | |
383 | else end bb:Remove() | |
384 | if bhit.Parent:findFirstChild("Humanoid") == nil then BulletHole(bpos,bhit,0.7*sc) end | |
385 | end) end | |
386 | _G.mm = qi({"Model",workspace,Name="RMTank"}) | |
387 | local mm = _G.mm | |
388 | engine=pa(mm,"","Block",14,3,20,true,false,0,0,"Bright yellow") it('BlockMesh',engine) | |
389 | engine.CFrame = c.Torso.CFrame*cn(0,0,-20) | |
390 | front=pa(mm,"","Wedge",14,3,3,true,false,0,0,"Bright yellow") | |
391 | qi({"Weld",front,Part0=engine,Part1=front,C0=cn(0,0,-11.5)*ca(rd(180),rd(180),0)}) | |
392 | front2=pa(mm,"","Wedge",14,2,6,true,false,0,0,"Bright yellow") | |
393 | qi({"Weld",front,Part0=engine,Part1=front2,C0=cn(0,2.5,-10)}) | |
394 | back=pa(mm,"","Wedge",14,5,6,true,false,0,0,"Bright yellow") | |
395 | qi({"Weld",front,Part0=engine,Part1=back,C0=cn(0,1,13)*ca(rd(180),rd(0),0)}) | |
396 | body2=pa(mm,"","Block",14,2,17,true,false,0,0,"Bright yellow") it('BlockMesh',body2) | |
397 | qi({"Weld",body2,Part0=engine,Part1=body2,C0=cn(0,2.5,1.5)}) | |
398 | body3=pa(mm,"","Wedge",14,1,8,true,false,0,0,"Bright yellow") | |
399 | qi({"Weld",body2,Part0=engine,Part1=body3,C0=cn(0,4,12)}) | |
400 | lbody=pa(mm,"","Block",2.3,3,24,true,false,0,0,"Bright yellow") it('BlockMesh',lbody) | |
401 | qi({"Weld",body2,Part0=engine,Part1=lbody,C0=cn(8.1,2.5,1.5)}) | |
402 | rbody=pa(mm,"","Block",2.3,3,24,true,false,0,0,"Bright yellow") it('BlockMesh',rbody) | |
403 | qi({"Weld",body2,Part0=engine,Part1=rbody,C0=cn(-8.1,2.5,1.5)}) | |
404 | lb=pa(mm,"","Block",2.25,0.4,18,true,false,0,0,"Black") it('BlockMesh',lb) | |
405 | qi({"Weld",body2,Part0=engine,Part1=lb,C0=cn(8,-2.5,1.5)}) | |
406 | rb=pa(mm,"","Block",2.25,0.4,18,true,false,0,0,"Black") it('BlockMesh',lb) | |
407 | qi({"Weld",body2,Part0=engine,Part1=rb,C0=cn(-8,-2.5,1.5)}) | |
408 | spi=pa(mm,"","Block",5,3,5,true,false,0,0,"Bright yellow") it('CylinderMesh',spi) | |
409 | spiw = qi({"Weld",body2,Part0=engine,Part1=spi,C0=cn(0,5,5)}) | |
410 | spi2=pa(mm,"","Block",12,3,12,true,false,0,0,"Bright yellow") it('BlockMesh',spi2) | |
411 | qi({"Weld",body2,Part0=spi,Part1=spi2,C0=cn(0,1,0)}) | |
412 | spi6=pa(mm,"","Wedge",12,3,2,true,false,0,0,"Bright yellow") it('BlockMesh',spi2) | |
413 | qi({"Weld",body2,Part0=spi2,Part1=spi6,C0=cn(0,0,7)*ca(rd(180),rd(0),0)}) | |
414 | spi3=pa(mm,"","Wedge",3,6,4,true,false,0,0,"Bright yellow") | |
415 | qi({"Weld",body2,Part0=spi2,Part1=spi3,C0=cn(-3,0,-8)*ca(0,0,rd(90))}) | |
416 | spi4=pa(mm,"","Wedge",3,6,4,true,false,0,0,"Bright yellow") | |
417 | qi({"Weld",body2,Part0=spi2,Part1=spi4,C0=cn(3,0,-8)*ca(0,0,rd(-90))}) | |
418 | tilt=pa(mm,"","Block",5,3,5,true,false,0,0,"Bright yellow") it('CylinderMesh',tilt) | |
419 | tiltw=qi({"Weld",body2,Part0=spi2,Part1=tilt,C0=cn(0,0.5,-8.5)*ca(0,0,rd(90))}) | |
420 | can=pa(mm,"","Block",2,20,2,true,false,0,0,"Bright yellow") it('CylinderMesh',can) | |
421 | canw=qi({"Weld",body2,Part0=tilt,Part1=can,C0=cn(0,0,-11)*ca(rd(-90),0,0)}) | |
422 | can2=pa(mm,"","Block",3.4,1.5,3.4,true,false,0,0,"Bright yellow") it('CylinderMesh',can2) | |
423 | qi({"Weld",body2,Part0=can,Part1=can2,C0=cn(0,-4,0)}) | |
424 | can5=pa(mm,"","Block",2.4,1.5,2.4,true,false,0,0,"Bright yellow") it('CylinderMesh',can5) | |
425 | qi({"Weld",body2,Part0=can,Part1=can5,C0=cn(0,9,0)}) | |
426 | can3=pa(mm,"","Block",2.5,10,2.5,true,false,0,0,"Bright yellow") it('CylinderMesh',can3) | |
427 | qi({"Weld",body2,Part0=can,Part1=can3,C0=cn(0,-5,0)}) | |
428 | can4=pa(mm,"","Block",3,4,3,true,false,0,0,"Bright yellow") it('CylinderMesh',can4) | |
429 | qi({"Weld",body2,Part0=can,Part1=can4,C0=cn(0,1,0)}) | |
430 | hol=pa(mm,"","Block",1.75,0,1.75,true,false,0,0,"Really black") it('CylinderMesh',hol) | |
431 | qi({"Weld",body2,Part0=can,Part1=hol,C0=cn(0,10,0)}) | |
432 | smo = qi({"Smoke",hol,RiseVelocity=25,Size=8,Color=BrickColor.new("White").Color,Opacity=0.1,Enabled=false}) | |
433 | hol2=pa(mm,"","Block",0,0,0,true,false,0,0,"Really black") it('CylinderMesh',hol2).Scale=v3(5,0.2,5)*5 | |
434 | qi({"Weld",body2,Part0=spi2,Part1=hol2,C0=cn(0,1.5,4)}) | |
435 | cap=pa(mm,"","Block",5.1,0,5.1,true,false,0,0,"Brick blue") it('CylinderMesh',cap) | |
436 | capw = qi({"Weld",body2,Part0=hol2,Part1=cap,C0=cn(0,0.1,2.5),C1=cn(0,0,2.5)}) | |
437 | aaa=pa(mm,"","Block",3,0.5,0.5,true,false,0,0,"Brick blue") | |
438 | qi({"Weld",body2,Part0=hol2,Part1=aaa,C0=cn(0,0,2.5)}) | |
439 | aaa2=pa(mm,"","Block",5,0.5,5,true,false,0,0,"Bright yellow") it('CylinderMesh',aaa2) | |
440 | aaa2w=qi({"Weld",body2,Part0=spi2,Part1=aaa2,C0=cn(-3.4,1.7,-4.6)*ca(0,rd(35),0)}) | |
441 | lb.Friction = 0.045 | |
442 | rb.Friction = 0.045 | |
443 | for x=-5,5,10/3 do | |
444 | aaax=pa(mm,"","Block",2,3.5,2,true,false,0,0,"") | |
445 | qi({"Weld",body2,Part0=spi2,Part1=aaax,C0=cn(x,0,7.5)*ca(rd(80),0,0)}) it('CylinderMesh',aaax) | |
446 | end | |
447 | for x=-1,1 do | |
448 | aaa=pa(mm,"","Block",x~=0 and 3 or 2,3,0.5,true,false,0,0,"Bright yellow") | |
449 | qi({"Weld",body2,Part0=aaa2,Part1=aaa,C0=cn(x*2,1.6,x~=0 and -1 or -2)*ca(0,rd(-45*x),0)}) | |
450 | if x==0 then | |
451 | ball=pa(mm,"","Block",0,0,0,true,false,0,0,"Bright yellow") qi({"SpecialMesh",ball,MeshType="Sphere",Scale=v3(1.7,1,1)*7}) | |
452 | ballw=qi({"Weld",body2,Part0=aaa,Part1=ball,C0=cn(0,1.5,0)}) | |
453 | gun1=pa(mm,"","Block",0.5,2,0.5,true,false,0,0,"Bright yellow") it('CylinderMesh',gun1) | |
454 | qi({"Weld",body2,Part0=ball,Part1=gun1,C0=cn(-0.4,0,-1)*ca(rd(-90),0,0)}) | |
455 | gun2=pa(mm,"","Block",0.5,2,0.5,true,false,0,0,"Bright yellow") it('CylinderMesh',gun2) | |
456 | qi({"Weld",body2,Part0=ball,Part1=gun2,C0=cn(0.4,0,-1)*ca(rd(-90),0,0)}) | |
457 | for i,v in pairs({gun1,gun2}) do | |
458 | gunhol=pa(mm,"","Block",0.3,0,0.3,true,false,0,0,"Really black") it('CylinderMesh',gunhol) | |
459 | qi({"Weld",body2,Part0=v,Part1=gunhol,C0=cn(0,0.92,0)}) | |
460 | end | |
461 | seat2=pa(mm,"","VehicleSeat",2,0.5,2,true,false,0,0,"Bright yellow") it('CylinderMesh',seat2) | |
462 | seat2w=qi({"Weld",body2,Part0=aaa2,Part1=seat2,C0=cn(0,0.5,0)}) | |
463 | seat2.HeadsUpDisplay=false | |
464 | q(function() | |
465 | local guntilt = 0 | |
466 | for i,v in pairs({aaa2,ball,seat2}) do | |
467 | local gcd = qi({"ClickDetector",v,MaxActivationDistance=8}) | |
468 | gcd.MouseClick:connect(function() | |
469 | gunshot(10,1,5,gun1.CFrame*cn(0,1+(rn(0,2000)/600),0)) | |
470 | gunshot(10,1,5,gun2.CFrame*cn(0,1+(rn(0,2000)/600),0)) | |
471 | end) | |
472 | end | |
473 | while true do if rn(1,8) == 1 then wait() else wait(0.0345) end | |
474 | aaa2w.C1=aaa2w.C1*ca(0,rd(seat2.Steer*6),0) | |
475 | if seat2.Throttle == 1 and guntilt<112 then guntilt = guntilt+4 | |
476 | elseif seat2.Throttle == -1 and guntilt>-48 then guntilt=guntilt-4 | |
477 | --elseif seat2.Throttle==0 then if guntilt > 0 then guntilt=guntilt-4 elseif guntilt<0 then guntilt=guntilt+4 end | |
478 | end | |
479 | ballw.C1=ca(rd(-guntilt),0,0) | |
480 | end | |
481 | end) | |
482 | end | |
483 | end | |
484 | for x=-1,1,2 do | |
485 | for z=-1,1,2 do | |
486 | whe=pa(mm,"","Block",4,2,4,true,false,0,0,"Black") qi({"CylinderMesh",whe}) | |
487 | qi({"Weld",whe,Part0=engine,Part1=whe,C0=cn(x*8,0.8,(z*11.5)+1.5)*ca(0,0,rd(90))}) | |
488 | ss=pa(mm,"","Block",2.25,0.3,5,true,false,0,0,"Black") | |
489 | qi({"Weld",body2,Part0=engine,Part1=ss,C0=cn(x*8,-1.5,(z*11.2)+1.5)*ca(rd(-23*z),0,0)}) | |
490 | ss=pa(mm,"","Block",2.25,2,0.3,true,false,0,0,"Black") | |
491 | qi({"Weld",body2,Part0=engine,Part1=ss,C0=cn(x*8,0.4,(z*13.4)+1.5)}) | |
492 | ss=pa(mm,"","Wedge",2.3,3,3,true,false,0,0,"Bright yellow") | |
493 | local trolo = z == 1 and 180 or 0 | |
494 | qi({"Weld",body2,Part0=engine,Part1=ss,C0=cn(x*8.1,2.5,(z*13.5)+1.5)*ca(0,rd(trolo),0)}) | |
495 | end end | |
496 | local form = 4*4 | |
497 | for x=-1,1,2 do | |
498 | for z=form/2,-form/2,-form/3 do | |
499 | whe=pa(mm,"","Block",4,2,4,true,false,0,0,"Black") qi({"CylinderMesh",whe}) | |
500 | qi({"Weld",whe,Part0=engine,Part1=whe,C0=cn(8*x,-0.5,(z*0.9)+1.5)*ca(0,0,rd(90))}) | |
501 | end | |
502 | end | |
503 | for i,p in pairs(mm:children()) do if p.BrickColor.Name=="Bright yellow" then | |
504 | for i,s in pairs({"Back","Front","Bottom","Top","Left","Right"}) do | |
505 | --qi({"Texture",p,Face=s,Texture=ds.Camo,StudsPerTileU=0,StudsPerTileV=0}) | |
506 | end | |
507 | end end | |
508 | game.Lighting.Ambient=Color3.new(1,1,1) | |
509 | local bin = qi({"HopperBin",bp,Name="RMTank"}) | |
510 | t = {} | |
511 | t.Vault = "Closed" | |
512 | t.Steer = "" | |
513 | t.Steer2 = "" | |
514 | t.Steering="" | |
515 | t.Tilt = 0 | |
516 | t.Move = "" | |
517 | t.Fire = false | |
518 | ks = {} | |
519 | TheWeld = nil | |
520 | Seated = false | |
521 | TankSpeed=16 | |
522 | bv = qi({"BodyVelocity",engine}) bv.maxForce=v3(0,0,0) | |
523 | bav = qi({"BodyAngularVelocity",engine}) bav.maxTorque=v3(0,0,0) | |
524 | bin.Selected:connect(function(mouse) | |
525 | mouse.KeyDown:connect(function(k) k = k:lower() ks[k]=false | |
526 | if k == "g" and t.Vault~="moving" then if t.Vault=="Closed" then | |
527 | t.Vault = "moving" for i=0,-110,-10 do capw.C1=cn(0,0,2.5)*ca(rd(i),0,0) wait(0.034) end t.Vault="Opened" else | |
528 | t.Vault = "moving" for i=-110,0,10 do capw.C1=cn(0,0,2.5)*ca(rd(i),0,0) wait(0.034) end t.Vault="Closed" end | |
529 | elseif k == "h" and t.Steer=="" then t.Steer = "Left" repeat spiw.C1=spiw.C1*ca(0,rd(-2),0) wait(0.034) until ks[k] t.Steer = "" | |
530 | elseif k == "k" and t.Steer=="" then t.Steer = "Right" repeat spiw.C1=spiw.C1*ca(0,rd(2),0) wait(0.034) until ks[k] t.Steer = "" | |
531 | elseif k == "u" and t.Steer2=="" then t.Steer2 = "Up" repeat t.Tilt=t.Tilt+1.5 tiltw.C1=ca(0,rd(t.Tilt),0) wait(0.034) until t.Tilt>=90 or ks[k] t.Steer2 = "" | |
532 | elseif k == "j" and t.Steer2=="" then t.Steer2 = "Down" repeat t.Tilt=t.Tilt-1.5 tiltw.C1=ca(0,rd(t.Tilt),0) wait(0.034) until t.Tilt<=-12 or ks[k] t.Steer2 = "" | |
533 | elseif k == "z" and t.Vault=="Opened" and Seated and TheWeld then Seated = false TheWeld:Remove() c.Humanoid.PlatformStand = false c.Torso.CFrame = hol2.CFrame*cn(0,4,0) mm.Parent = workspace | |
534 | elseif k == "w" and Seated and t.Move == "" then t.Move = "Forward" bv.maxForce=v3(1/0,0,1/0) repeat bv.velocity=engine.CFrame.lookVector*TankSpeed wait() until ks[k] bv.maxForce=v3(0,0,0) t.Move = "" | |
535 | elseif k == "s" and Seated and t.Move == "" then t.Move = "Backward" bv.maxForce=v3(1/0,0,1/0) repeat bv.velocity=engine.CFrame.lookVector*(-TankSpeed/1.2) wait() until ks[k] bv.maxForce=v3(0,0,0) t.Move = "" | |
536 | elseif k == "a" and Seated and t.Steering=="" then t.Steering="Left" bav.maxTorque=v3(0,1/0,0) bav.angularvelocity=v3(0,0.8,0) repeat wait() until ks[k] bav.maxTorque=v3(0,0,0) t.Steering = "" | |
537 | elseif k == "d" and Seated and t.Steering=="" then t.Steering="Right" bav.maxTorque=v3(0,1/0,0) bav.angularvelocity=v3(0,-0.8,0) repeat wait() until ks[k] bav.maxTorque=v3(0,0,0) t.Steering = "" | |
538 | elseif k == "f" and not t.Fire then t.Fire = true | |
539 | q(function() | |
540 | GlowMesh(false,ds.Ring,hol,v3(7,7,7),'New Yeller',hol.CFrame*cn(0,0,0)*ca(rd(90),0,0),0.1,1,0.13) | |
541 | local speed = 8 local cff = hol.CFrame*cn(0,2,0) local dmg = 25 | |
542 | local bb = pa(mm,"","Block",2,2,2,true,true,0,0.2,"Black") qi({"CylinderMesh",bb}) | |
543 | local bb2 = pa(mm,"","Block",0,0,0,true,true,0,0.2,"Black") qi({"SpecialMesh",bb2,MeshType="Sphere",Scale=v3(2,3,2)*5}) | |
544 | bb.CFrame = cff*ca(rd(rn(-1000,1000)/1500),rd(rn(-1000,1000)/1500),rd(rn(-1000,1000)/1500)) | |
545 | so(ds.Fire,bb,0.3,1) wait() for i=1,50 do bb2.CFrame = bb.CFrame*cn(0,-5,0) | |
546 | bhit,bpos=ray(bb.Position,bb.Position - (bb.CFrame *cn(0,-1,0)).p) | |
547 | if bhit and bpos and (bpos - bb.Position).magnitude < speed then break end | |
548 | bb.CFrame=bb.CFrame*cn(0,speed,0)*ca(0,0,rd(0.2)) bb2.CFrame=bb.CFrame*cn(0,1,0) | |
549 | wait() | |
550 | end bb.CFrame=bb.CFrame*cn(0,(bpos-bb.Position).magnitude,0) | |
551 | bb:Remove() bb2:Remove() | |
552 | for i=1,3 do | |
553 | GlowMesh(false,"Sphere",hol,v3(rn(10,20),rn(10,20),rn(10,20)),'New Yeller',bb.CFrame*cn(rn(-3,3),rn(-3,3),rn(-3,3))*ca(rd(rn(-360,360)),rd(rn(-360,360)),rd(rn(-360,360))),0.1,1,0.1) end | |
554 | local rr = 10 GetRegion(bb.Position-v3(rr,rr,rr),bb.Position+v3(rr,rr,rr),function(v) if v.Name~="Torso" then return end v.Humanoid.Health=b.Humanoid.Health-dmg end,function(v) if v.Anchored or v:GetMass()>500 then return end v:BreakJoints() v.Velocity=cn(bb.Position,v.Position).lookVector*rn(70,120) end) | |
555 | end) | |
556 | smo.Enabled = true for i=0,-3,-1 do canw.C1=cn(0,-i/1.3,0) wait(0.033) end for i=-3,0,1 do canw.C1=cn(0,-i/1.3,0) wait(0.033) end | |
557 | smo.Enabled = false t.Fire = false | |
558 | end | |
559 | end) | |
560 | mouse.KeyUp:connect(function(k) k=k:lower() ks[k]=true | |
561 | end) | |
562 | end) | |
563 | hol2.Touched:connect(function(hit) if hit.Parent ~= c or Seated or t.Vault~="Opened" then return end | |
564 | _G.mm.Parent = c Seated = true | |
565 | local hu = c.Humanoid hu.PlatformStand = true wait() | |
566 | TheWeld = qi({"Weld",engine,Part0=engine,Part1=c.Torso,C0=cn(0,1.5,2)*ca(rd(90),0,0)}) | |
567 | end) |