SHOW:
|
|
- or go back to the newest paste.
1 | - | ---[[ Cloud "Visualizer", Rushed out and made by Zuu_Roku, Credits to Cass for being a cool dood]]--- |
1 | + | if game:GetService("RunService"):IsClient() then error("Please run as a server script. Use h/ instead of hl/.") end |
2 | print("FE Compatibility: by WaverlyCole & Mokiros") | |
3 | InternalData = {} | |
4 | do | |
5 | script.Parent = owner.Character | |
6 | local Event = Instance.new("RemoteEvent") | |
7 | Event.Name = "UserInput" | |
8 | local function NewFakeEvent() | |
9 | local Fake = {fakeEvent=true,Connect=function(self,Func)self.Function=Func end}Fake.connect = Fake.Connect | |
10 | return Fake | |
11 | end | |
12 | local Mouse = {Target=nil,Hit=CFrame.new(),KeyUp=NewFakeEvent(),KeyDown=NewFakeEvent(),Button1Up=NewFakeEvent(),Button1Down=NewFakeEvent()} | |
13 | local UserInputService = {InputBegan=NewFakeEvent(),InputEnded=NewFakeEvent()} | |
14 | local ContextActionService = {Actions={},BindAction = function(self,actionName,Func,touch,...) | |
15 | self.Actions[actionName] = Func and {Name=actionName,Function=Func,Keys={...}} or nil | |
16 | end};ContextActionService.UnBindAction = ContextActionService.BindAction | |
17 | local function TriggerEvent(self,Event,...) | |
18 | local Trigger = Mouse[Event] | |
19 | if Trigger and Trigger.fakeEvent and Trigger.Function then | |
20 | Trigger.Function(...) | |
21 | end | |
22 | end | |
23 | Mouse.TrigEvent = TriggerEvent | |
24 | UserInputService.TrigEvent = TriggerEvent | |
25 | Event.OnServerEvent:Connect(function(FiredBy,Input) | |
26 | if FiredBy.Name ~= owner.Name then end | |
27 | if Input.MouseEvent then | |
28 | Mouse.Target = Input.Target | |
29 | Mouse.Hit = Input.Hit | |
30 | else | |
31 | local Begin = Input.UserInputState == Enum.UserInputState.Begin | |
32 | if Input.UserInputType == Enum.UserInputType.MouseButton1 then | |
33 | return Mouse:TrigEvent(Begin and "Button1Down" or "Button1Up") | |
34 | end | |
35 | for _,Action in pairs(ContextActionService.Actions) do | |
36 | for _,Key in pairs(Action.Keys) do | |
37 | if Key==Input.KeyCode then | |
38 | Action.Function(Action.Name,Input.UserInputState,Input) | |
39 | end | |
40 | end | |
41 | end | |
42 | Mouse:TrigEvent(Begin and "KeyDown" or "KeyUp",Input.KeyCode.Name:lower()) | |
43 | - | S.SoundId = "rbxassetid://1117396305" |
43 | + | UserInputService:TrigEvent(Begin and "InputBegan" or "InputEnded",Input,false) |
44 | end | |
45 | end) | |
46 | InternalData["Mouse"] = Mouse | |
47 | InternalData["ContextActionService"] = ContextActionService | |
48 | InternalData["UserInputService"] = UserInputService | |
49 | Event.Parent = NLS([[ | |
50 | local Player = owner | |
51 | local Event = script:WaitForChild("UserInput") | |
52 | local UserInputService = game:GetService("UserInputService") | |
53 | local Mouse = Player:GetMouse() | |
54 | local Input = function(Input,gameProcessedEvent) | |
55 | if gameProcessedEvent then return end | |
56 | Event:FireServer({KeyCode=Input.KeyCode,UserInputType=Input.UserInputType,UserInputState=Input.UserInputState}) | |
57 | end | |
58 | UserInputService.InputBegan:Connect(Input) | |
59 | UserInputService.InputEnded:Connect(Input) | |
60 | local Hit,Target | |
61 | while wait(1/30) do | |
62 | if Hit ~= Mouse.Hit or Target ~= Mouse.Target then | |
63 | Hit,Target = Mouse.Hit,Mouse.Target | |
64 | Event:FireServer({["MouseEvent"]=true,["Target"]=Target,["Hit"]=Hit}) | |
65 | end | |
66 | end | |
67 | ]],owner.Character) | |
68 | end | |
69 | RealGame = game;game = setmetatable({},{ | |
70 | __index = function (self,Index) | |
71 | local Sandbox = function (Thing) | |
72 | if Thing:IsA("Player") then | |
73 | local RealPlayer = Thing | |
74 | return setmetatable({},{ | |
75 | __index = function (self,Index) | |
76 | local Type = type(RealPlayer[Index]) | |
77 | if Type == "function" then | |
78 | if Index:lower() == "getmouse" or Index:lower() == "mouse" then | |
79 | return function (self) | |
80 | return InternalData["Mouse"] | |
81 | end | |
82 | end | |
83 | return function (self,...) | |
84 | return RealPlayer[Index](RealPlayer,...) | |
85 | end | |
86 | else | |
87 | if Index == "PlrObj" then | |
88 | return RealPlayer | |
89 | end | |
90 | return RealPlayer[Index] | |
91 | end | |
92 | end; | |
93 | __tostring = function(self) | |
94 | return RealPlayer.Name | |
95 | end | |
96 | }) | |
97 | end | |
98 | end | |
99 | if RealGame[Index] then | |
100 | local Type = type(RealGame[Index]) | |
101 | if Type == "function" then | |
102 | if Index:lower() == "getservice" or Index:lower() == "service" then | |
103 | return function (self,Service) | |
104 | if Service:lower() == "players" then | |
105 | return setmetatable({},{ | |
106 | __index = function (self2,Index2) | |
107 | local RealService = RealGame:GetService(Service) | |
108 | local Type2 = type(Index2) | |
109 | if Type2 == "function" then | |
110 | return function (self,...) | |
111 | return RealService[Index2](RealService,...) | |
112 | end | |
113 | else | |
114 | if Index2:lower() == "localplayer" then | |
115 | return Sandbox(owner) | |
116 | end | |
117 | return RealService[Index2] | |
118 | end | |
119 | end; | |
120 | __tostring = function(self) | |
121 | return RealGame:GetService(Service).Name | |
122 | end | |
123 | }) | |
124 | elseif Service:lower() == "contextactionservice" then | |
125 | return InternalData["ContextActionService"] | |
126 | elseif Service:lower() == "contextactionservice" then | |
127 | return InternalData["UserInputService"] | |
128 | elseif Service:lower() == "runservice" then | |
129 | return setmetatable({},{ | |
130 | __index = function(self2,Index2) | |
131 | local RealService = RealGame:GetService(Service) | |
132 | local Type2 = type(Index2) | |
133 | if Type2 == "function" then | |
134 | return function (self,...) | |
135 | return RealService[Index2](RealService,...) | |
136 | end | |
137 | else | |
138 | if Index2:lower() == "bindtorenderstep" then | |
139 | return function (self,Name,Priority,Function) | |
140 | return RealGame:GetService("RunService").Stepped:Connect(Function) | |
141 | end | |
142 | end | |
143 | if Index2:lower() == "renderstepped" then | |
144 | return RealService["Stepped"] | |
145 | end | |
146 | return RealService[Index2] | |
147 | end | |
148 | end | |
149 | }) | |
150 | else | |
151 | return RealGame:GetService(Service) | |
152 | end | |
153 | end | |
154 | end | |
155 | return function (self,...) | |
156 | return RealGame[Index](RealGame,...) | |
157 | end | |
158 | else | |
159 | if game:GetService(Index) then | |
160 | return game:GetService(Index) | |
161 | end | |
162 | return RealGame[Index] | |
163 | end | |
164 | else | |
165 | return nil | |
166 | end | |
167 | end | |
168 | });Game = game;owner = game:GetService("Players").LocalPlayer;script = {} | |
169 | print("Complete! Running...") | |
170 | ||
171 | print("Made by Zuu_Roku, Commands are !play !snow !rain !multiplier and !volume") | |
172 | ||
173 | print("Credits to Cass / PPATTA for being a cool dood") | |
174 | ||
175 | ||
176 | local Player = game.Players.LocalPlayer | |
177 | ||
178 | local Character = Player.Character | |
179 | ||
180 | local H = Character["Head"] | |
181 | ||
182 | local multiplier = 4 | |
183 | ||
184 | local Cloud = Instance.new('Part',Character) | |
185 | ||
186 | Cloud.Size = Vector3.new(20,15,20) | |
187 | ||
188 | Cloud.Anchored = true | |
189 | ||
190 | Cloud.CanCollide = false | |
191 | ||
192 | Cloud.Transparency = 0 | |
193 | ||
194 | ||
195 | ||
196 | local CloudMesh = Instance.new('SpecialMesh',Cloud) | |
197 | ||
198 | CloudMesh.Scale = Vector3.new(25,10,25) | |
199 | ||
200 | CloudMesh.MeshId = "http://www.roblox.com/asset/?id=1095708" | |
201 | ||
202 | CloudMesh.Offset = Vector3.new(0,10,0) | |
203 | ||
204 | ||
205 | local loudness = 0 | |
206 | ||
207 | ||
208 | ||
209 | local S = Instance.new('Sound',Cloud) | |
210 | ||
211 | S.SoundId = "rbxassetid://2743813268" | |
212 | ||
213 | S.Looped = true | |
214 | ||
215 | S.Volume = 8 | |
216 | ||
217 | S.MaxDistance = 100 | |
218 | ||
219 | S:Play() | |
220 | ||
221 | ||
222 | ||
223 | local Rain = Instance.new('ParticleEmitter',Cloud) | |
224 | ||
225 | Rain.Color = ColorSequence.new(Color3.new(1,1,1),Color3.fromRGB(175,255,255)) | |
226 | ||
227 | Rain.Size = NumberSequence.new(.5) | |
228 | ||
229 | Rain.Texture = "http://www.roblox.com/asset/?id=241876428" | |
230 | ||
231 | Rain.Transparency = NumberSequence.new(0,.6) | |
232 | ||
233 | Rain.Acceleration = Vector3.new(0,-150,0) | |
234 | ||
235 | Rain.Lifetime = NumberRange.new(5,10) | |
236 | ||
237 | Rain.Rate = 100 | |
238 | ||
239 | local rad = math.rad | |
240 | ||
241 | local sin = math.sin | |
242 | ||
243 | local tan = math.tan | |
244 | ||
245 | local cos = math.cos | |
246 | ||
247 | Player.Chatted:connect(function(m) | |
248 | ||
249 | if m:match("!play%s%d+") then | |
250 | ||
251 | S:Stop() | |
252 | ||
253 | S.SoundId = "rbxassetid://"..m:match("!play%s(%d+)") | |
254 | ||
255 | S:Play() | |
256 | ||
257 | elseif m:match("!volume%s%d+") then | |
258 | ||
259 | S.Volume = m:match("!volume%s(%d+)") | |
260 | ||
261 | elseif m:match("!pitch%s%d+") then | |
262 | ||
263 | S.Pitch = m:match("!volume%s(%d+)") | |
264 | ||
265 | elseif m:match("!snow") then | |
266 | ||
267 | Rain.Texture = "http://www.roblox.com/asset/?id=605668174" | |
268 | ||
269 | Rain.Acceleration = Vector3.new(0,-10,0) | |
270 | ||
271 | Rain.Lifetime = NumberRange.new(15,20) | |
272 | ||
273 | Rain.Size = NumberSequence.new(.2) | |
274 | ||
275 | elseif m:match("!rain") then | |
276 | ||
277 | Rain.Texture = "http://www.roblox.com/asset/?id=241876428" | |
278 | ||
279 | Rain.Acceleration = Vector3.new(0,-150,0) | |
280 | ||
281 | Rain.Lifetime = NumberRange.new(5,10) | |
282 | ||
283 | Rain.Size = NumberSequence.new(.5) | |
284 | ||
285 | elseif m:match("!multiplier%s%d+") then | |
286 | ||
287 | multiplier = m:match("!multiplier%s(%d+)") | |
288 | ||
289 | elseif m:match("!rr") then | |
290 | ||
291 | print(Rain.Rate) | |
292 | ||
293 | end | |
294 | end) | |
295 | ||
296 | ||
297 | ||
298 | function Weld(x,y) | |
299 | ||
300 | local w = Instance.new("Weld") | |
301 | ||
302 | w.Part0 = x | |
303 | ||
304 | w.Part1 = y | |
305 | ||
306 | w.Name = tostring(y.Name).."_Weld" | |
307 | ||
308 | w.Parent = x | |
309 | ||
310 | return w | |
311 | ||
312 | end | |
313 | ||
314 | ||
315 | ||
316 | function Clerp(start,destination,increment) | |
317 | ||
318 | local function slerp(a,b,c)return (1-c)*a+(c*b)end | |
319 | ||
320 | local c1 = {start.X,start.Y,start.Z,start:toEulerAnglesXYZ()} | |
321 | ||
322 | local c2 = {destination.X,destination.Y,destination.Z,destination:toEulerAnglesXYZ()} | |
323 | ||
324 | for i,v in pairs(c1)do c1[i] = slerp(v,c2[i],increment)end | |
325 | ||
326 | return CFrame.new(c1[1],c1[2],c1[3])*CFrame.Angles(c1[4],c1[5],c1[6]) | |
327 | ||
328 | end | |
329 | ||
330 | ||
331 | ||
332 | while true do | |
333 | ||
334 | Rain.Rate = (S.PlaybackLoudness + 50) * multiplier | |
335 | ||
336 | game:GetService('RunService').RenderStepped:wait() | |
337 | ||
338 | local HP = H.CFrame.p | |
339 | ||
340 | local sizer = S.PlaybackLoudness/50 + 15 | |
341 | ||
342 | Cloud.Size = Vector3.new(sizer,15,sizer) | |
343 | ||
344 | CloudMesh.Scale = Vector3.new(sizer,10,sizer) | |
345 | ||
346 | Cloud.CFrame = Clerp(Cloud.CFrame, CFrame.new(HP + Vector3.new(0,4,0))*CFrame.Angles(0,rad(90),0), .1) | |
347 | ||
348 | Cloud.BrickColor = BrickColor.new(Color3.fromRGB(255 - S.PlaybackLoudness*1.1, 255-S.PlaybackLoudness*1.1, 255-S.PlaybackLoudness*1.1)) | |
349 | end |