Advertisement
samuelrichter66

FIREWORKS

Jun 29th, 2019
451
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 11.99 KB | None | 0 0
  1. --https://github.com/Mokiros/roblox-FE-compatibility
  2. if game:GetService("RunService"):IsClient() then error("Script must be server-side in order to work; use h/ and not hl/") end
  3. local Player,game,owner = owner,game
  4. local RealPlayer = Player
  5. do
  6. print("FE Compatibility code V2 by Mokiros")
  7. local RealPlayer = RealPlayer
  8. script.Parent = RealPlayer.Character
  9.  
  10. --Fake event to make stuff like Mouse.KeyDown work
  11. local Disconnect_Function = function(this)
  12. this[1].Functions[this[2]] = nil
  13. end
  14. local Disconnect_Metatable = {__index={disconnect=Disconnect_Function,Disconnect=Disconnect_Function}}
  15. local FakeEvent_Metatable = {__index={
  16. Connect = function(this,f)
  17. local i = tostring(math.random(0,10000))
  18. while this.Functions[i] do
  19. i = tostring(math.random(0,10000))
  20. end
  21. this.Functions[i] = f
  22. return setmetatable({this,i},Disconnect_Metatable)
  23. end
  24. }}
  25. FakeEvent_Metatable.__index.connect = FakeEvent_Metatable.__index.Connect
  26. local function fakeEvent()
  27. return setmetatable({Functions={}},FakeEvent_Metatable)
  28. end
  29.  
  30. --Creating fake input objects with fake variables
  31. local FakeMouse = {Hit=CFrame.new(),KeyUp=fakeEvent(),KeyDown=fakeEvent(),Button1Up=fakeEvent(),Button1Down=fakeEvent(),Button2Up=fakeEvent(),Button2Down=fakeEvent()}
  32. FakeMouse.keyUp = FakeMouse.KeyUp
  33. FakeMouse.keyDown = FakeMouse.KeyDown
  34. local UIS = {InputBegan=fakeEvent(),InputEnded=fakeEvent()}
  35. local CAS = {Actions={},BindAction=function(self,name,fun,touch,...)
  36. CAS.Actions[name] = fun and {Name=name,Function=fun,Keys={...}} or nil
  37. end}
  38. --Merged 2 functions into one by checking amount of arguments
  39. CAS.UnbindAction = CAS.BindAction
  40.  
  41. --This function will trigger the events that have been :Connect()'ed
  42. local function TriggerEvent(self,ev,...)
  43. for _,f in pairs(self[ev].Functions) do
  44. f(...)
  45. end
  46. end
  47. FakeMouse.TriggerEvent = TriggerEvent
  48. UIS.TriggerEvent = TriggerEvent
  49.  
  50. --Client communication
  51. local Event = Instance.new("RemoteEvent")
  52. Event.Name = "UserInput_Event"
  53. Event.OnServerEvent:Connect(function(plr,io)
  54. if plr~=RealPlayer then return end
  55. FakeMouse.Target = io.Target
  56. FakeMouse.Hit = io.Hit
  57. if not io.isMouse then
  58. local b = io.UserInputState == Enum.UserInputState.Begin
  59. if io.UserInputType == Enum.UserInputType.MouseButton1 then
  60. return FakeMouse:TriggerEvent(b and "Button1Down" or "Button1Up")
  61. end
  62. if io.UserInputType == Enum.UserInputType.MouseButton2 then
  63. return FakeMouse:TriggerEvent(b and "Button2Down" or "Button2Up")
  64. end
  65. for _,t in pairs(CAS.Actions) do
  66. for _,k in pairs(t.Keys) do
  67. if k==io.KeyCode then
  68. t.Function(t.Name,io.UserInputState,io)
  69. end
  70. end
  71. end
  72. FakeMouse:TriggerEvent(b and "KeyDown" or "KeyUp",io.KeyCode.Name:lower())
  73. UIS:TriggerEvent(b and "InputBegan" or "InputEnded",io,false)
  74. end
  75. end)
  76. Event.Parent = NLS([==[local Event = script:WaitForChild("UserInput_Event")
  77. local Mouse = owner:GetMouse()
  78. local UIS = game:GetService("UserInputService")
  79. local input = function(io,RobloxHandled)
  80. if RobloxHandled then return end
  81. --Since InputObject is a client-side instance, we create and pass table instead
  82. Event:FireServer({KeyCode=io.KeyCode,UserInputType=io.UserInputType,UserInputState=io.UserInputState,Hit=Mouse.Hit,Target=Mouse.Target})
  83. end
  84. UIS.InputBegan:Connect(input)
  85. UIS.InputEnded:Connect(input)
  86.  
  87. local h,t
  88. --Give the server mouse data every second frame, but only if the values changed
  89. --If player is not moving their mouse, client won't fire events
  90. local HB = game:GetService("RunService").Heartbeat
  91. while true do
  92. if h~=Mouse.Hit or t~=Mouse.Target then
  93. h,t=Mouse.Hit,Mouse.Target
  94. Event:FireServer({isMouse=true,Target=t,Hit=h})
  95. end
  96. --Wait 2 frames
  97. for i=1,2 do
  98. HB:Wait()
  99. end
  100. end]==],script)
  101.  
  102. ----Sandboxed game object that allows the usage of client-side methods and services
  103. --Real game object
  104. local RealGame = game
  105.  
  106. --Metatable for fake service
  107. local FakeService_Metatable = {
  108. __index = function(self,k)
  109. local s = rawget(self,"_RealService")
  110. if s then
  111. return typeof(s[k])=="function"
  112. and function(_,...)return s[k](s,...)end or s[k]
  113. end
  114. end,
  115. __newindex = function(self,k,v)
  116. local s = rawget(self,"_RealService")
  117. if s then s[k]=v end
  118. end
  119. }
  120. local function FakeService(t,RealService)
  121. t._RealService = typeof(RealService)=="string" and RealGame:GetService(RealService) or RealService
  122. return setmetatable(t,FakeService_Metatable)
  123. end
  124.  
  125. --Fake game object
  126. local FakeGame = {
  127. GetService = function(self,s)
  128. return rawget(self,s) or RealGame:GetService(s)
  129. end,
  130. Players = FakeService({
  131. LocalPlayer = FakeService({GetMouse=function(self)return FakeMouse end},Player)
  132. },"Players"),
  133. UserInputService = FakeService(UIS,"UserInputService"),
  134. ContextActionService = FakeService(CAS,"ContextActionService"),
  135. RunService = FakeService({
  136. _btrs = {},
  137. RenderStepped = RealGame:GetService("RunService").Heartbeat,
  138. BindToRenderStep = function(self,name,_,fun)
  139. self._btrs[name] = self.Heartbeat:Connect(fun)
  140. end,
  141. UnbindFromRenderStep = function(self,name)
  142. self._btrs[name]:Disconnect()
  143. end,
  144. },"RunService")
  145. }
  146. rawset(FakeGame.Players,"localPlayer",FakeGame.Players.LocalPlayer)
  147. FakeGame.service = FakeGame.GetService
  148. FakeService(FakeGame,game)
  149. --Changing owner to fake player object to support owner:GetMouse()
  150. game,owner = FakeGame,FakeGame.Players.LocalPlayer
  151. end
  152.  
  153.  
  154.  
  155. --------------
  156. --Fireworks!--
  157. ----------------------------------------------------------------
  158. --By CKbackup (Sugarie Saffron) --
  159. --YT: https://www.youtube.com/channel/UC8n9FFz7e6Zo13ob_5F9MJw--
  160. --Discord: Sugarie Saffron#4705 --
  161. ----------------------------------------------------------------
  162.  
  163. wait(1/60)
  164. Effects = { }
  165. local Player = game:service'Players'.localPlayer
  166. local chara = Player.Character
  167. local Mouse = Player:GetMouse()
  168. local debby = game:GetService("Debris")
  169. local col = "Random"
  170.  
  171. warn("Sugarie's Fireworks")
  172. warn("YT: https://www.youtube.com/channel/UC8n9FFz7e6Zo13ob_5F9MJw")
  173. warn("Discord: Sugarie Saffron#4705")
  174. warn("-----------------------------------------------")
  175. warn('To change colours, chat in "Color " and then:')
  176. warn('"Rainbow" for rainbow colours')
  177. warn('"Random" for random colours (set on default)')
  178. warn('a BrickColor name')
  179. warn("-----------------------------------------------")
  180.  
  181. ArtificialHB = Instance.new("BindableEvent", script)
  182. ArtificialHB.Name = "Heartbeat"
  183. script:WaitForChild("Heartbeat")
  184. frame = 0.03333333333333
  185. tf = 0
  186. allowframeloss = false
  187. tossremainder = false
  188. lastframe = tick()
  189. script.Heartbeat:Fire()
  190. game:GetService("RunService").Heartbeat:connect(function(s, p)
  191. tf = tf + s
  192. if tf >= frame then
  193. if allowframeloss then
  194. script.Heartbeat:Fire()
  195. lastframe = tick()
  196. else
  197. for i = 1, math.floor(tf / frame) do
  198. script.Heartbeat:Fire()
  199. end
  200. lastframe = tick()
  201. end
  202. if tossremainder then
  203. tf = 0
  204. else
  205. tf = tf - frame * math.floor(tf / frame)
  206. end
  207. end
  208. end)
  209. function swait(num)
  210. if num == 0 or num == nil then
  211. ArtificialHB.Event:wait()
  212. else
  213. for i = 0, num do
  214. ArtificialHB.Event:wait()
  215. end
  216. end
  217. end
  218.  
  219. function so(id,par,pit,vol)
  220. local sou = Instance.new("Sound", par or workspace)
  221. if par == chara then
  222. sou.Parent = chara.Torso
  223. end
  224. sou.Volume = vol
  225. sou.Pitch = pit or 1
  226. sou.SoundId = "rbxassetid://" .. id
  227. sou.PlayOnRemove = true
  228. sou:Destroy()
  229. end
  230.  
  231. firecolour = {ColorSequenceKeypoint.new(0,BrickColor.new("Really red").Color),ColorSequenceKeypoint.new(.05,BrickColor.new("Neon orange").Color),ColorSequenceKeypoint.new(.1,BrickColor.new("New yeller").Color),ColorSequenceKeypoint.new(.15,BrickColor.new("Lime green").Color),ColorSequenceKeypoint.new(.2,BrickColor.new("Really blue").Color),ColorSequenceKeypoint.new(.25,BrickColor.new("Alder").Color),ColorSequenceKeypoint.new(1,BrickColor.new("Alder").Color)}
  232. barcolour = {ColorSequenceKeypoint.new(0,BrickColor.new("Really red").Color),ColorSequenceKeypoint.new(.2,BrickColor.new("Neon orange").Color),ColorSequenceKeypoint.new(.4,BrickColor.new("New yeller").Color),ColorSequenceKeypoint.new(.6,BrickColor.new("Lime green").Color),ColorSequenceKeypoint.new(.8,BrickColor.new("Really blue").Color),ColorSequenceKeypoint.new(1,BrickColor.new("Alder").Color)}
  233.  
  234. Player.Chatted:connect(function(msg)
  235. if msg:sub(1,6)== "Color " then
  236. col = msg:sub(7,msg:len())
  237. end
  238. end)
  239.  
  240. function firework()
  241. local fir = Instance.new("Part",chara)
  242. fir.Size = Vector3.new(.6,.6,4)
  243. fir.CanCollide = false
  244. fir.Anchored = true
  245. fir.CustomPhysicalProperties = PhysicalProperties.new(0,0,0,0,0)
  246. fir.CFrame = CFrame.new(Mouse.Hit.p)*CFrame.new(0,2,0)*CFrame.Angles(math.rad(90),0,0)
  247. local firm = Instance.new("SpecialMesh",fir)
  248. firm.MeshId = "rbxassetid://29935141"
  249. firm.TextureId = "rbxassetid://29935304"
  250. firm.Scale = Vector3.new(1.2,1.2,1.2)
  251. local fira = Instance.new("Part",fir)
  252. fira.CanCollide = false
  253. fira.Transparency = 1
  254. fira.Size = Vector3.new()
  255. local firaw = Instance.new("Weld",fira)
  256. firaw.Part0 = fira
  257. firaw.Part1 = fir
  258. firaw.C0 = CFrame.new(0,0,-1)
  259. local firp = Instance.new("ParticleEmitter",fira)
  260. firp.LightEmission = 1
  261. firp.Texture = "rbxasset://textures/particles/fire_main.dds"
  262. firp.Speed = NumberRange.new(0)
  263. firp.Size = NumberSequence.new(.5,0)
  264. firp.Transparency = NumberSequence.new(0,1)
  265. firp.LightInfluence = 0
  266. firp.RotSpeed = NumberRange.new(-300,300)
  267. firp.Rotation = NumberRange.new(0,360)
  268. firp.Lifetime = NumberRange.new(.5)
  269. firp.Rate = 1000
  270. if col == "Rainbow" then
  271. firp.Color = ColorSequence.new(firecolour)
  272. elseif col == "Random" then
  273. firp.Color = ColorSequence.new(BrickColor.Random().Color)
  274. else
  275. firp.Color = ColorSequence.new(BrickColor.new(col).Color)
  276. end
  277. so(11565378,fir,1,1)
  278. swait(60)
  279. so(161034732,fir,1,3)
  280. local bodv = Instance.new("BodyVelocity",fir)
  281. bodv.P = 20000
  282. bodv.MaxForce = Vector3.new(bodv.P,bodv.P,bodv.P)
  283. bodv.Velocity = Vector3.new(0,60,0)
  284. fir.Anchored = false
  285. local weito = math.random(40,60)
  286. swait(weito)
  287. so(161034752,fir,1,5)
  288. fir.Anchored = true
  289. fira.Anchored = true
  290. fir.Transparency = 1
  291. firp.Enabled = false
  292. local cho = math.random(1,2)
  293. if cho == 1 then
  294. local exp = Instance.new("Part",fir)
  295. exp.CanCollide = false
  296. exp.Transparency = 1
  297. exp.Size = Vector3.new()
  298. exp.Anchored = true
  299. exp.CFrame = fir.CFrame
  300. local expem = Instance.new("ParticleEmitter",exp)
  301. expem.LightEmission = 1
  302. expem.LightInfluence = 0
  303. expem.Texture = "rbxassetid://31727958"
  304. expem.Enabled = false
  305. expem.Speed = NumberRange.new(50)
  306. expem.Drag = 5
  307. expem.Lifetime = NumberRange.new(3)
  308. expem.RotSpeed = NumberRange.new(-300,300)
  309. expem.VelocitySpread = 360
  310. expem.Size = NumberSequence.new({
  311. NumberSequenceKeypoint.new(0,1),
  312. NumberSequenceKeypoint.new(.9,1),
  313. NumberSequenceKeypoint.new(1,0)
  314. })
  315. expem.Transparency = NumberSequence.new(0,1)
  316. if col == "Rainbow" then
  317. expem.Color = ColorSequence.new(barcolour)
  318. elseif col == "Random" then
  319. expem.Color = firp.Color
  320. else
  321. expem.Color = ColorSequence.new(BrickColor.new(col).Color)
  322. end
  323. expem:Emit(1000)
  324. elseif cho == 2 then
  325. for a=1,15 do
  326. local exp = Instance.new("Part",fir)
  327. exp.CanCollide = false
  328. exp.Transparency = 1
  329. exp.Size = Vector3.new()
  330. exp.Anchored = true
  331. exp.CFrame = fir.CFrame*CFrame.Angles(math.rad(math.random(0,360)),math.rad(math.random(0,360)),math.rad(math.random(0,360)))
  332. local expem = Instance.new("ParticleEmitter",exp)
  333. expem.LightEmission = 1
  334. expem.LightInfluence = 0
  335. expem.Texture = "rbxassetid://31727958"
  336. expem.Enabled = true
  337. expem.Drag = 3
  338. expem.Speed = NumberRange.new(80)
  339. expem.Lifetime = NumberRange.new(3)
  340. expem.RotSpeed = NumberRange.new(-300,300)
  341. expem.Size = NumberSequence.new(1,0)
  342. expem.Transparency = NumberSequence.new(0,1)
  343. expem.Rate = 10000
  344. if col == "Rainbow" then
  345. expem.Color = ColorSequence.new(firecolour)
  346. elseif col == "Random" then
  347. expem.Color = firp.Color
  348. else
  349. expem.Color = ColorSequence.new(BrickColor.new(col).Color)
  350. end
  351. coroutine.wrap(function()
  352. swait(20)
  353. expem.Enabled = false
  354. end)()
  355. end
  356. end
  357. debby:AddItem(fir,8)
  358. end
  359.  
  360. Mouse.Button1Down:connect(function()
  361. firework()
  362. end)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement