SHOW:
|
|
- or go back to the newest paste.
1 | wait(.5) | |
2 | ||
3 | --Converted with ttyyuu12345's model to script plugin v4 | |
4 | function sandbox(var,func) | |
5 | local env = getfenv(func) | |
6 | local newenv = setmetatable({},{ | |
7 | __index = function(self,k) | |
8 | if k=="script" then | |
9 | return var | |
10 | else | |
11 | return env[k] | |
12 | end | |
13 | end, | |
14 | }) | |
15 | setfenv(func,newenv) | |
16 | return func | |
17 | end | |
18 | cors = {} | |
19 | mas = Instance.new("Model",game:GetService("Lighting")) | |
20 | Model0 = Instance.new("Model") | |
21 | Part1 = Instance.new("Part") | |
22 | Part2 = Instance.new("Part") | |
23 | Part3 = Instance.new("Part") | |
24 | Decal4 = Instance.new("Decal") | |
25 | Motor6D5 = Instance.new("Motor6D") | |
26 | Motor6D6 = Instance.new("Motor6D") | |
27 | Motor6D7 = Instance.new("Motor6D") | |
28 | Motor6D8 = Instance.new("Motor6D") | |
29 | Motor6D9 = Instance.new("Motor6D") | |
30 | Motor6D10 = Instance.new("Motor6D") | |
31 | Motor6D11 = Instance.new("Motor6D") | |
32 | Decal12 = Instance.new("Decal") | |
33 | attac = Instance.new("Attachment") | |
34 | attac1 = Instance.new("Attachment") | |
35 | attac2 = Instance.new("Attachment") | |
36 | attac3 = Instance.new("Attachment") | |
37 | Decal13 = Instance.new("Decal") | |
38 | RopeConstraint14 = Instance.new("RopeConstraint") | |
39 | RopeConstraint15 = Instance.new("RopeConstraint") | |
40 | Part16 = Instance.new("Part") | |
41 | Part17 = Instance.new("Part") | |
42 | RopeConstraint18 = Instance.new("RopeConstraint") | |
43 | Part19 = Instance.new("Part") | |
44 | Motor6D20 = Instance.new("Motor6D") | |
45 | Part21 = Instance.new("Part") | |
46 | Part22 = Instance.new("Part") | |
47 | Part23 = Instance.new("Part") | |
48 | Script24 = Instance.new("Script") | |
49 | Sound25 = Instance.new("Sound") | |
50 | Part26 = Instance.new("Part") | |
51 | Part27 = Instance.new("Part") | |
52 | ||
53 | LocalScript29 = Instance.new("LocalScript") | |
54 | StringValue30 = Instance.new("StringValue") | |
55 | Animation31 = Instance.new("Animation") | |
56 | NumberValue32 = Instance.new("NumberValue") | |
57 | Animation33 = Instance.new("Animation") | |
58 | NumberValue34 = Instance.new("NumberValue") | |
59 | StringValue35 = Instance.new("StringValue") | |
60 | Animation36 = Instance.new("Animation") | |
61 | StringValue37 = Instance.new("StringValue") | |
62 | Animation38 = Instance.new("Animation") | |
63 | StringValue39 = Instance.new("StringValue") | |
64 | Animation40 = Instance.new("Animation") | |
65 | StringValue41 = Instance.new("StringValue") | |
66 | Animation42 = Instance.new("Animation") | |
67 | StringValue43 = Instance.new("StringValue") | |
68 | Animation44 = Instance.new("Animation") | |
69 | StringValue45 = Instance.new("StringValue") | |
70 | Animation46 = Instance.new("Animation") | |
71 | StringValue47 = Instance.new("StringValue") | |
72 | Animation48 = Instance.new("Animation") | |
73 | NumberValue49 = Instance.new("NumberValue") | |
74 | Model0.Name = "a" | |
75 | Model0.Parent = mas | |
76 | Part1.Name = "front right leg" | |
77 | Part1.Parent = Model0 | |
78 | Part1.CFrame = CFrame.new(1.25000703, 0.975010395, -0.475000978, 1, 0, 0, 0, 1, 0, 0, 0, 1) | |
79 | Part1.Position = Vector3.new(1.25000703, 0.975010395, -0.475000978) | |
80 | Part1.Color = Color3.new(0.835294, 0.45098, 0.239216) | |
81 | Part1.Size = Vector3.new(1, 2, 1) | |
82 | Part1.BottomSurface = Enum.SurfaceType.Smooth | |
83 | Part1.BrickColor = BrickColor.new("Neon orange") | |
84 | Part1.CanCollide = false | |
85 | Part1.TopSurface = Enum.SurfaceType.Smooth | |
86 | Part1.brickColor = BrickColor.new("Neon orange") | |
87 | Part2.Name = "back left leg" | |
88 | Part2.Parent = Model0 | |
89 | Part2.CFrame = CFrame.new(-1.74999297, 0.975010395, 2.52499914, 1, 0, 0, 0, 1, 0, 0, 0, 1) | |
90 | Part2.Position = Vector3.new(-1.74999297, 0.975010395, 2.52499914) | |
91 | Part2.Color = Color3.new(0.835294, 0.45098, 0.239216) | |
92 | Part2.Size = Vector3.new(1, 2, 1) | |
93 | Part2.BottomSurface = Enum.SurfaceType.Smooth | |
94 | Part2.BrickColor = BrickColor.new("Neon orange") | |
95 | Part2.CanCollide = false | |
96 | Part2.TopSurface = Enum.SurfaceType.Smooth | |
97 | Part2.brickColor = BrickColor.new("Neon orange") | |
98 | Part3.Name = "Torso" | |
99 | Part3.Parent = Model0 | |
100 | Part3.CFrame = CFrame.new(-0.249992996, 3.9750104, 1.02499902, 1, 0, 0, 0, 1, 0, 0, 0, 1) | |
101 | Part3.Position = Vector3.new(-0.249992996, 3.9750104, 1.02499902) | |
102 | Part3.Color = Color3.new(0.835294, 0.45098, 0.239216) | |
103 | Part3.Size = Vector3.new(4, 4, 4) | |
104 | Part3.BottomSurface = Enum.SurfaceType.Smooth | |
105 | Part3.BrickColor = BrickColor.new("Neon orange") | |
106 | Part3.TopSurface = Enum.SurfaceType.Smooth | |
107 | Part3.brickColor = BrickColor.new("Neon orange") | |
108 | Decal4.Name = "Cat Face" | |
109 | Decal4.Parent = Part3 | |
110 | Decal4.Texture = "http://www.roblox.com/asset/?id=161258368" | |
111 | Motor6D5.Name = "stripe1" | |
112 | Motor6D5.Parent = Part3 | |
113 | Motor6D5.C1 = CFrame.new(0, -2.0250001, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1) | |
114 | Motor6D5.Part0 = Part3 | |
115 | Motor6D5.Part1 = Part23 | |
116 | Motor6D5.part1 = Part23 | |
117 | Motor6D6.Name = "stripe2" | |
118 | Motor6D6.Parent = Part3 | |
119 | Motor6D6.C1 = CFrame.new(0, -2.0250001, -1, 1, 0, 0, 0, 1, 0, 0, 0, 1) | |
120 | Motor6D6.Part0 = Part3 | |
121 | Motor6D6.Part1 = Part26 | |
122 | Motor6D6.part1 = Part26 | |
123 | Motor6D7.Name = "fll" | |
124 | Motor6D7.Parent = Part3 | |
125 | Motor6D7.C0 = CFrame.new(-1.60000002, -2, -1.5999999, 1, 0, 0, 0, 1, 0, 0, 0, 1) | |
126 | Motor6D7.C1 = CFrame.new(-0.0999999791, 1, -0.0999999493, 1, 0, 0, 0, 1, 0, 0, 0, 1) | |
127 | Motor6D7.Part0 = Part3 | |
128 | Motor6D7.Part1 = Part16 | |
129 | Motor6D7.part1 = Part16 | |
130 | Motor6D8.Name = "bll" | |
131 | Motor6D8.Parent = Part3 | |
132 | Motor6D8.C0 = CFrame.new(-1.39999998, -2, 1.60000014, 1, 0, 0, 0, 1, 0, 0, 0, 1) | |
133 | Motor6D8.C1 = CFrame.new(0.100000024, 0.99999994, 0.100000054, 1, 0, 0, 0, 1, 0, 0, 0, 1) | |
134 | Motor6D8.Part0 = Part3 | |
135 | Motor6D8.Part1 = Part2 | |
136 | Motor6D8.part1 = Part2 | |
137 | Motor6D9.Name = "frl" | |
138 | Motor6D9.Parent = Part3 | |
139 | Motor6D9.C0 = CFrame.new(1.60000002, -1.80000007, -1.60000002, 1, 0, 0, 0, 1, 0, 0, 0, 1) | |
140 | Motor6D9.C1 = CFrame.new(0.100000024, 1.19999993, -0.100000024, 1, 0, 0, 0, 1, 0, 0, 0, 1) | |
141 | Motor6D9.Part0 = Part3 | |
142 | Motor6D9.Part1 = Part1 | |
143 | Motor6D9.part1 = Part1 | |
144 | Motor6D10.Name = "brl" | |
145 | Motor6D10.Parent = Part3 | |
146 | Motor6D10.C0 = CFrame.new(1.60000002, -2, 1.60000002, 1, 0, 0, 0, 1, 0, 0, 0, 1) | |
147 | Motor6D10.C1 = CFrame.new(0.100000024, 0.99999994, 0.100000024, 1, 0, 0, 0, 1, 0, 0, 0, 1) | |
148 | Motor6D10.Part0 = Part3 | |
149 | Motor6D10.Part1 = Part21 | |
150 | Motor6D10.part1 = Part21 | |
151 | Motor6D11.Name = "Head" | |
152 | Motor6D11.Parent = Part3 | |
153 | Motor6D11.C1 = CFrame.new(0, -1, 0.5, 1, 0, 0, 0, 1, 0, 0, 0, 1) | |
154 | Motor6D11.Part0 = Part3 | |
155 | Motor6D11.Part1 = Part27 | |
156 | Motor6D11.part1 = Part27 | |
157 | Decal12.Name = "award winning art" | |
158 | Decal12.Parent = Part3 | |
159 | Decal12.Texture = "http://www.roblox.com/asset/?id=2912303330" | |
160 | Decal12.Face = Enum.NormalId.Left | |
161 | Decal13.Name = "award winning art" | |
162 | Decal13.Parent = Part3 | |
163 | Decal13.Texture = "http://www.roblox.com/asset/?id=2912303330" | |
164 | Decal13.Face = Enum.NormalId.Right | |
165 | attac.Name = "attac" | |
166 | attac.Parent = Part3 | |
167 | ||
168 | attac.Position = Vector3.new(0,-.35,2) | |
169 | attac1.Name = "attac1" | |
170 | attac1.Parent = Part17 | |
171 | ||
172 | attac1.Position = Vector3.new(0,-1,-0.15) | |
173 | attac2.Name = "attac2" | |
174 | attac2.Parent = Part17 | |
175 | ||
176 | attac2.Position = Vector3.new(0,1,0) | |
177 | attac3.Name = "attac3" | |
178 | attac3.Parent = Part22 | |
179 | ||
180 | attac3.Position = Vector3.new(0,-.775,0) | |
181 | RopeConstraint14.Parent = Part3 | |
182 | RopeConstraint14.Length = 0.034995075315237 | |
183 | RopeConstraint14.Visible = true | |
184 | RopeConstraint14.Attachment0 = attac | |
185 | RopeConstraint14.Attachment1 = attac1 | |
186 | RopeConstraint15.Parent = Part3 | |
187 | RopeConstraint15.Length = 0.034995075315237 | |
188 | RopeConstraint15.Visible = true | |
189 | RopeConstraint15.Attachment0 = attac | |
190 | RopeConstraint15.Attachment1 = attac1 | |
191 | Part16.Name = "front left leg" | |
192 | Part16.Parent = Model0 | |
193 | Part16.CFrame = CFrame.new(-1.74999297, 0.975010395, -0.475000978, 1, 0, 0, 0, 1, 0, 0, 0, 1) | |
194 | Part16.Position = Vector3.new(-1.74999297, 0.975010395, -0.475000978) | |
195 | Part16.Color = Color3.new(0.835294, 0.45098, 0.239216) | |
196 | Part16.Size = Vector3.new(1, 2, 1) | |
197 | Part16.BottomSurface = Enum.SurfaceType.Smooth | |
198 | Part16.BrickColor = BrickColor.new("Neon orange") | |
199 | Part16.CanCollide = false | |
200 | Part16.TopSurface = Enum.SurfaceType.Smooth | |
201 | Part16.brickColor = BrickColor.new("Neon orange") | |
202 | Part17.Name = "tail1" | |
203 | Part17.Parent = Model0 | |
204 | Part17.CFrame = CFrame.new(-0.249992996, 3.4707334, 4.0597291, 1, 0, 0, 0, 0, -1, 0, 1, 0) | |
205 | Part17.Orientation = Vector3.new(90, 0, 0) | |
206 | Part17.Position = Vector3.new(-0.249992996, 3.4707334, 4.0597291) | |
207 | Part17.Rotation = Vector3.new(90, 0, 0) | |
208 | Part17.Color = Color3.new(0.835294, 0.45098, 0.239216) | |
209 | Part17.Size = Vector3.new(1, 2, 1) | |
210 | Part17.BottomSurface = Enum.SurfaceType.Smooth | |
211 | Part17.BrickColor = BrickColor.new("Neon orange") | |
212 | Part17.CanCollide = false | |
213 | Part17.TopSurface = Enum.SurfaceType.Smooth | |
214 | Part17.brickColor = BrickColor.new("Neon orange") | |
215 | RopeConstraint18.Parent = Part17 | |
216 | RopeConstraint18.Length = 0.30000001192093 | |
217 | RopeConstraint18.Visible = true | |
218 | RopeConstraint18.Attachment0 = attac2 | |
219 | RopeConstraint18.Attachment1 = attac3 | |
220 | Part19.Name = "HumanoidRootPart" | |
221 | Part19.Parent = Model0 | |
222 | Part19.CFrame = CFrame.new(-0.249992996, 3.9750104, 1.02499902, 1, 0, 0, 0, 1, 0, 0, 0, 1) | |
223 | Part19.Position = Vector3.new(-0.249992996, 3.9750104, 1.02499902) | |
224 | Part19.Color = Color3.new(0.835294, 0.45098, 0.239216) | |
225 | Part19.Size = Vector3.new(2, 2, 2) | |
226 | Part19.BottomSurface = Enum.SurfaceType.Smooth | |
227 | Part19.BrickColor = BrickColor.new("Neon orange") | |
228 | Part19.TopSurface = Enum.SurfaceType.Smooth | |
229 | Part19.brickColor = BrickColor.new("Neon orange") | |
230 | Motor6D20.Name = "Torso" | |
231 | Motor6D20.Parent = Part19 | |
232 | Motor6D20.Part0 = Part19 | |
233 | Motor6D20.Part1 = Part3 | |
234 | Motor6D20.part1 = Part3 | |
235 | Part21.Name = "back right leg" | |
236 | Part21.Parent = Model0 | |
237 | Part21.CFrame = CFrame.new(1.25000703, 0.975010395, 2.52499914, 1, 0, 0, 0, 1, 0, 0, 0, 1) | |
238 | Part21.Position = Vector3.new(1.25000703, 0.975010395, 2.52499914) | |
239 | Part21.Color = Color3.new(0.835294, 0.45098, 0.239216) | |
240 | Part21.Size = Vector3.new(1, 2, 1) | |
241 | Part21.BottomSurface = Enum.SurfaceType.Smooth | |
242 | Part21.BrickColor = BrickColor.new("Neon orange") | |
243 | Part21.CanCollide = false | |
244 | Part21.TopSurface = Enum.SurfaceType.Smooth | |
245 | Part21.brickColor = BrickColor.new("Neon orange") | |
246 | Part22.Name = "tail2" | |
247 | Part22.Parent = Model0 | |
248 | Part22.CFrame = CFrame.new(-0.249992996, 3.45801449, 5.8580308, 1, 0, 0, 0, 0, -1, 0, 1, 0) | |
249 | Part22.Orientation = Vector3.new(90, 0, 0) | |
250 | Part22.Position = Vector3.new(-0.249992996, 3.45801449, 5.8580308) | |
251 | Part22.Rotation = Vector3.new(90, 0, 0) | |
252 | Part22.Color = Color3.new(0.835294, 0.45098, 0.239216) | |
253 | Part22.Size = Vector3.new(1, 1.55000007, 1) | |
254 | Part22.BottomSurface = Enum.SurfaceType.Smooth | |
255 | Part22.BrickColor = BrickColor.new("Neon orange") | |
256 | Part22.CanCollide = false | |
257 | Part22.CollisionGroupId = 1 | |
258 | Part22.TopSurface = Enum.SurfaceType.Smooth | |
259 | Part22.brickColor = BrickColor.new("Neon orange") | |
260 | Part23.Name = "stipe 1" | |
261 | Part23.Parent = Model0 | |
262 | Part23.CFrame = CFrame.new(-0.249992996, 6.00001049, 0.0249990225, 1, 0, 0, 0, 1, 0, 0, 0, 1) | |
263 | Part23.Position = Vector3.new(-0.249992996, 6.00001049, 0.0249990225) | |
264 | Part23.Color = Color3.new(0.411765, 0.25098, 0.156863) | |
265 | Part23.Size = Vector3.new(3.9000001, 0.0500000715, 1) | |
266 | Part23.BottomSurface = Enum.SurfaceType.Smooth | |
267 | Part23.BrickColor = BrickColor.new("Reddish brown") | |
268 | Part23.CanCollide = false | |
269 | Part23.TopSurface = Enum.SurfaceType.Smooth | |
270 | Part23.brickColor = BrickColor.new("Reddish brown") | |
271 | Script24.Name = "i told u ppl" | |
272 | Script24.Parent = Part23 | |
273 | ||
274 | Sound25.Name = "Song" | |
275 | Sound25.Parent = Script24 | |
276 | Sound25.SoundId = "rbxassetid://1091083826" | |
277 | Sound25.Volume = 1 | |
278 | Part26.Name = "stripe 2" | |
279 | Part26.Parent = Model0 | |
280 | Part26.CFrame = CFrame.new(-0.249992996, 6.00001049, 2.02499914, 1, 0, 0, 0, 1, 0, 0, 0, 1) | |
281 | Part26.Position = Vector3.new(-0.249992996, 6.00001049, 2.02499914) | |
282 | Part26.Color = Color3.new(0.411765, 0.25098, 0.156863) | |
283 | Part26.Size = Vector3.new(3.9000001, 0.0500000715, 1) | |
284 | Part26.BottomSurface = Enum.SurfaceType.Smooth | |
285 | Part26.BrickColor = BrickColor.new("Reddish brown") | |
286 | Part26.CanCollide = false | |
287 | Part26.TopSurface = Enum.SurfaceType.Smooth | |
288 | Part26.brickColor = BrickColor.new("Reddish brown") | |
289 | Part27.Name = "Head" | |
290 | Part27.Parent = Model0 | |
291 | Part27.CFrame = CFrame.new(-0.249992996, 4.9750104, 0.524999022, 1, 0, 0, 0, 1, 0, 0, 0, 1) | |
292 | Part27.Position = Vector3.new(-0.249992996, 4.9750104, 0.524999022) | |
293 | Part27.Color = Color3.new(0.835294, 0.45098, 0.239216) | |
294 | Part27.Size = Vector3.new(2, 2, 2) | |
295 | Part27.BottomSurface = Enum.SurfaceType.Smooth | |
296 | Part27.BrickColor = BrickColor.new("Neon orange") | |
297 | Part27.CanCollide = false | |
298 | Part27.TopSurface = Enum.SurfaceType.Smooth | |
299 | Part27.brickColor = BrickColor.new("Neon orange") | |
300 | ||
301 | LocalScript29.Name = "Animate" | |
302 | LocalScript29.Parent = Model0 | |
303 | table.insert(cors,sandbox(LocalScript29,function() | |
304 | local Figure = script.Parent | |
305 | local Torso = Figure:WaitForChild("Torso") | |
306 | local RightShoulder = Torso:WaitForChild("Right Shoulder") | |
307 | local LeftShoulder = Torso:WaitForChild("Left Shoulder") | |
308 | local RightHip = Torso:WaitForChild("Right Hip") | |
309 | local LeftHip = Torso:WaitForChild("Left Hip") | |
310 | local Neck = Torso:WaitForChild("Neck") | |
311 | local Humanoid = Figure:WaitForChild("Humanoid") | |
312 | local pose = "Standing" | |
313 | ||
314 | local currentAnim = "" | |
315 | local currentAnimInstance = nil | |
316 | local currentAnimTrack = nil | |
317 | local currentAnimKeyframeHandler = nil | |
318 | local currentAnimSpeed = 1.0 | |
319 | local animTable = {} | |
320 | local animNames = { | |
321 | idle = { | |
322 | { id = "http://www.roblox.com/asset/?id=2912266963", weight = 9 }, | |
323 | { id = "http://www.roblox.com/asset/?id=2912266963", weight = 1 } | |
324 | }, | |
325 | walk = { | |
326 | { id = "http://www.roblox.com/asset/?id=2912268301", weight = 10 } | |
327 | }, | |
328 | run = { | |
329 | { id = "run.xml", weight = 10 } | |
330 | }, | |
331 | jump = { | |
332 | { id = "http://www.roblox.com/asset/?id=125750702", weight = 10 } | |
333 | }, | |
334 | fall = { | |
335 | { id = "http://www.roblox.com/asset/?id=180436148", weight = 10 } | |
336 | }, | |
337 | climb = { | |
338 | { id = "http://www.roblox.com/asset/?id=180436334", weight = 10 } | |
339 | }, | |
340 | sit = { | |
341 | { id = "http://www.roblox.com/asset/?id=178130996", weight = 10 } | |
342 | }, | |
343 | toolnone = { | |
344 | { id = "http://www.roblox.com/asset/?id=182393478", weight = 10 } | |
345 | }, | |
346 | toolslash = { | |
347 | { id = "http://www.roblox.com/asset/?id=129967390", weight = 10 } | |
348 | -- { id = "slash.xml", weight = 10 } | |
349 | }, | |
350 | toollunge = { | |
351 | { id = "http://www.roblox.com/asset/?id=129967478", weight = 10 } | |
352 | }, | |
353 | wave = { | |
354 | { id = "http://www.roblox.com/asset/?id=128777973", weight = 10 } | |
355 | }, | |
356 | point = { | |
357 | { id = "http://www.roblox.com/asset/?id=128853357", weight = 10 } | |
358 | }, | |
359 | dance1 = { | |
360 | { id = "http://www.roblox.com/asset/?id=182435998", weight = 10 }, | |
361 | { id = "http://www.roblox.com/asset/?id=182491037", weight = 10 }, | |
362 | { id = "http://www.roblox.com/asset/?id=182491065", weight = 10 } | |
363 | }, | |
364 | dance2 = { | |
365 | { id = "http://www.roblox.com/asset/?id=182436842", weight = 10 }, | |
366 | { id = "http://www.roblox.com/asset/?id=182491248", weight = 10 }, | |
367 | { id = "http://www.roblox.com/asset/?id=182491277", weight = 10 } | |
368 | }, | |
369 | dance3 = { | |
370 | { id = "http://www.roblox.com/asset/?id=182436935", weight = 10 }, | |
371 | { id = "http://www.roblox.com/asset/?id=182491368", weight = 10 }, | |
372 | { id = "http://www.roblox.com/asset/?id=182491423", weight = 10 } | |
373 | }, | |
374 | laugh = { | |
375 | { id = "http://www.roblox.com/asset/?id=129423131", weight = 10 } | |
376 | }, | |
377 | cheer = { | |
378 | { id = "http://www.roblox.com/asset/?id=129423030", weight = 10 } | |
379 | }, | |
380 | } | |
381 | local dances = {"dance1", "dance2", "dance3"} | |
382 | ||
383 | -- Existance in this list signifies that it is an emote, the value indicates if it is a looping emote | |
384 | local emoteNames = { wave = false, point = false, dance1 = true, dance2 = true, dance3 = true, laugh = false, cheer = false} | |
385 | ||
386 | function configureAnimationSet(name, fileList) | |
387 | if (animTable[name] ~= nil) then | |
388 | for _, connection in pairs(animTable[name].connections) do | |
389 | connection:disconnect() | |
390 | end | |
391 | end | |
392 | animTable[name] = {} | |
393 | animTable[name].count = 0 | |
394 | animTable[name].totalWeight = 0 | |
395 | animTable[name].connections = {} | |
396 | ||
397 | -- check for config values | |
398 | local config = script:FindFirstChild(name) | |
399 | if (config ~= nil) then | |
400 | -- print("Loading anims " .. name) | |
401 | table.insert(animTable[name].connections, config.ChildAdded:connect(function(child) configureAnimationSet(name, fileList) end)) | |
402 | table.insert(animTable[name].connections, config.ChildRemoved:connect(function(child) configureAnimationSet(name, fileList) end)) | |
403 | local idx = 1 | |
404 | for _, childPart in pairs(config:GetChildren()) do | |
405 | if (childPart:IsA("Animation")) then | |
406 | table.insert(animTable[name].connections, childPart.Changed:connect(function(property) configureAnimationSet(name, fileList) end)) | |
407 | animTable[name][idx] = {} | |
408 | animTable[name][idx].anim = childPart | |
409 | local weightObject = childPart:FindFirstChild("Weight") | |
410 | if (weightObject == nil) then | |
411 | animTable[name][idx].weight = 1 | |
412 | else | |
413 | animTable[name][idx].weight = weightObject.Value | |
414 | end | |
415 | animTable[name].count = animTable[name].count + 1 | |
416 | animTable[name].totalWeight = animTable[name].totalWeight + animTable[name][idx].weight | |
417 | -- print(name .. " [" .. idx .. "] " .. animTable[name][idx].anim.AnimationId .. " (" .. animTable[name][idx].weight .. ")") | |
418 | idx = idx + 1 | |
419 | end | |
420 | end | |
421 | end | |
422 | ||
423 | -- fallback to defaults | |
424 | if (animTable[name].count <= 0) then | |
425 | for idx, anim in pairs(fileList) do | |
426 | animTable[name][idx] = {} | |
427 | animTable[name][idx].anim = Instance.new("Animation") | |
428 | animTable[name][idx].anim.Name = name | |
429 | animTable[name][idx].anim.AnimationId = anim.id | |
430 | animTable[name][idx].weight = anim.weight | |
431 | animTable[name].count = animTable[name].count + 1 | |
432 | animTable[name].totalWeight = animTable[name].totalWeight + anim.weight | |
433 | -- print(name .. " [" .. idx .. "] " .. anim.id .. " (" .. anim.weight .. ")") | |
434 | end | |
435 | end | |
436 | end | |
437 | ||
438 | -- Setup animation objects | |
439 | function scriptChildModified(child) | |
440 | local fileList = animNames[child.Name] | |
441 | if (fileList ~= nil) then | |
442 | configureAnimationSet(child.Name, fileList) | |
443 | end | |
444 | end | |
445 | ||
446 | script.ChildAdded:connect(scriptChildModified) | |
447 | script.ChildRemoved:connect(scriptChildModified) | |
448 | ||
449 | ||
450 | for name, fileList in pairs(animNames) do | |
451 | configureAnimationSet(name, fileList) | |
452 | end | |
453 | ||
454 | -- ANIMATION | |
455 | ||
456 | -- declarations | |
457 | local toolAnim = "None" | |
458 | local toolAnimTime = 0 | |
459 | ||
460 | local jumpAnimTime = 0 | |
461 | local jumpAnimDuration = 0.3 | |
462 | ||
463 | local toolTransitionTime = 0.1 | |
464 | local fallTransitionTime = 0.3 | |
465 | local jumpMaxLimbVelocity = 0.75 | |
466 | ||
467 | -- functions | |
468 | ||
469 | function stopAllAnimations() | |
470 | local oldAnim = currentAnim | |
471 | ||
472 | -- return to idle if finishing an emote | |
473 | if (emoteNames[oldAnim] ~= nil and emoteNames[oldAnim] == false) then | |
474 | oldAnim = "idle" | |
475 | end | |
476 | ||
477 | currentAnim = "" | |
478 | currentAnimInstance = nil | |
479 | if (currentAnimKeyframeHandler ~= nil) then | |
480 | currentAnimKeyframeHandler:disconnect() | |
481 | end | |
482 | ||
483 | if (currentAnimTrack ~= nil) then | |
484 | currentAnimTrack:Stop() | |
485 | currentAnimTrack:Destroy() | |
486 | currentAnimTrack = nil | |
487 | end | |
488 | return oldAnim | |
489 | end | |
490 | ||
491 | function setAnimationSpeed(speed) | |
492 | if speed ~= currentAnimSpeed then | |
493 | currentAnimSpeed = speed | |
494 | currentAnimTrack:AdjustSpeed(currentAnimSpeed) | |
495 | end | |
496 | end | |
497 | ||
498 | function keyFrameReachedFunc(frameName) | |
499 | if (frameName == "End") then | |
500 | ||
501 | local repeatAnim = currentAnim | |
502 | -- return to idle if finishing an emote | |
503 | if (emoteNames[repeatAnim] ~= nil and emoteNames[repeatAnim] == false) then | |
504 | repeatAnim = "idle" | |
505 | end | |
506 | ||
507 | local animSpeed = currentAnimSpeed | |
508 | playAnimation(repeatAnim, 0.0, Humanoid) | |
509 | setAnimationSpeed(animSpeed) | |
510 | end | |
511 | end | |
512 | ||
513 | -- Preload animations | |
514 | function playAnimation(animName, transitionTime, humanoid) | |
515 | ||
516 | local roll = math.random(1, animTable[animName].totalWeight) | |
517 | local origRoll = roll | |
518 | local idx = 1 | |
519 | while (roll > animTable[animName][idx].weight) do | |
520 | roll = roll - animTable[animName][idx].weight | |
521 | idx = idx + 1 | |
522 | end | |
523 | -- print(animName .. " " .. idx .. " [" .. origRoll .. "]") | |
524 | local anim = animTable[animName][idx].anim | |
525 | ||
526 | -- switch animation | |
527 | if (anim ~= currentAnimInstance) then | |
528 | ||
529 | if (currentAnimTrack ~= nil) then | |
530 | currentAnimTrack:Stop(transitionTime) | |
531 | currentAnimTrack:Destroy() | |
532 | end | |
533 | ||
534 | currentAnimSpeed = 1.0 | |
535 | ||
536 | -- load it to the humanoid; get AnimationTrack | |
537 | currentAnimTrack = humanoid:LoadAnimation(anim) | |
538 | currentAnimTrack.Priority = Enum.AnimationPriority.Core | |
539 | ||
540 | -- play the animation | |
541 | currentAnimTrack:Play(transitionTime) | |
542 | currentAnim = animName | |
543 | currentAnimInstance = anim | |
544 | ||
545 | -- set up keyframe name triggers | |
546 | if (currentAnimKeyframeHandler ~= nil) then | |
547 | currentAnimKeyframeHandler:disconnect() | |
548 | end | |
549 | currentAnimKeyframeHandler = currentAnimTrack.KeyframeReached:connect(keyFrameReachedFunc) | |
550 | ||
551 | end | |
552 | ||
553 | end | |
554 | ||
555 | ------------------------------------------------------------------------------------------- | |
556 | ------------------------------------------------------------------------------------------- | |
557 | ||
558 | local toolAnimName = "" | |
559 | local toolAnimTrack = nil | |
560 | local toolAnimInstance = nil | |
561 | local currentToolAnimKeyframeHandler = nil | |
562 | ||
563 | function toolKeyFrameReachedFunc(frameName) | |
564 | if (frameName == "End") then | |
565 | -- print("Keyframe : ".. frameName) | |
566 | playToolAnimation(toolAnimName, 0.0, Humanoid) | |
567 | end | |
568 | end | |
569 | ||
570 | ||
571 | function playToolAnimation(animName, transitionTime, humanoid, priority) | |
572 | ||
573 | local roll = math.random(1, animTable[animName].totalWeight) | |
574 | local origRoll = roll | |
575 | local idx = 1 | |
576 | while (roll > animTable[animName][idx].weight) do | |
577 | roll = roll - animTable[animName][idx].weight | |
578 | idx = idx + 1 | |
579 | end | |
580 | -- print(animName .. " * " .. idx .. " [" .. origRoll .. "]") | |
581 | local anim = animTable[animName][idx].anim | |
582 | ||
583 | if (toolAnimInstance ~= anim) then | |
584 | ||
585 | if (toolAnimTrack ~= nil) then | |
586 | toolAnimTrack:Stop() | |
587 | toolAnimTrack:Destroy() | |
588 | transitionTime = 0 | |
589 | end | |
590 | ||
591 | -- load it to the humanoid; get AnimationTrack | |
592 | toolAnimTrack = humanoid:LoadAnimation(anim) | |
593 | if priority then | |
594 | toolAnimTrack.Priority = priority | |
595 | end | |
596 | ||
597 | -- play the animation | |
598 | toolAnimTrack:Play(transitionTime) | |
599 | toolAnimName = animName | |
600 | toolAnimInstance = anim | |
601 | ||
602 | currentToolAnimKeyframeHandler = toolAnimTrack.KeyframeReached:connect(toolKeyFrameReachedFunc) | |
603 | end | |
604 | end | |
605 | ||
606 | function stopToolAnimations() | |
607 | local oldAnim = toolAnimName | |
608 | ||
609 | if (currentToolAnimKeyframeHandler ~= nil) then | |
610 | currentToolAnimKeyframeHandler:disconnect() | |
611 | end | |
612 | ||
613 | toolAnimName = "" | |
614 | toolAnimInstance = nil | |
615 | if (toolAnimTrack ~= nil) then | |
616 | toolAnimTrack:Stop() | |
617 | toolAnimTrack:Destroy() | |
618 | toolAnimTrack = nil | |
619 | end | |
620 | ||
621 | ||
622 | return oldAnim | |
623 | end | |
624 | ||
625 | ------------------------------------------------------------------------------------------- | |
626 | ------------------------------------------------------------------------------------------- | |
627 | ||
628 | ||
629 | function onRunning(speed) | |
630 | if speed > 0.01 then | |
631 | playAnimation("walk", 0.1, Humanoid) | |
632 | if currentAnimInstance and currentAnimInstance.AnimationId == "http://www.roblox.com/asset/?id=180426354" then | |
633 | setAnimationSpeed(speed / 14.5) | |
634 | end | |
635 | pose = "Running" | |
636 | else | |
637 | if emoteNames[currentAnim] == nil then | |
638 | playAnimation("idle", 0.1, Humanoid) | |
639 | pose = "Standing" | |
640 | end | |
641 | end | |
642 | end | |
643 | ||
644 | function onDied() | |
645 | pose = "Dead" | |
646 | end | |
647 | ||
648 | function onJumping() | |
649 | playAnimation("jump", 0.1, Humanoid) | |
650 | jumpAnimTime = jumpAnimDuration | |
651 | pose = "Jumping" | |
652 | end | |
653 | ||
654 | function onClimbing(speed) | |
655 | playAnimation("climb", 0.1, Humanoid) | |
656 | setAnimationSpeed(speed / 12.0) | |
657 | pose = "Climbing" | |
658 | end | |
659 | ||
660 | function onGettingUp() | |
661 | pose = "GettingUp" | |
662 | end | |
663 | ||
664 | function onFreeFall() | |
665 | if (jumpAnimTime <= 0) then | |
666 | playAnimation("fall", fallTransitionTime, Humanoid) | |
667 | end | |
668 | pose = "FreeFall" | |
669 | end | |
670 | ||
671 | function onFallingDown() | |
672 | pose = "FallingDown" | |
673 | end | |
674 | ||
675 | function onSeated() | |
676 | pose = "Seated" | |
677 | end | |
678 | ||
679 | function onPlatformStanding() | |
680 | pose = "PlatformStanding" | |
681 | end | |
682 | ||
683 | function onSwimming(speed) | |
684 | if speed > 0 then | |
685 | pose = "Running" | |
686 | else | |
687 | pose = "Standing" | |
688 | end | |
689 | end | |
690 | ||
691 | function getTool() | |
692 | for _, kid in ipairs(Figure:GetChildren()) do | |
693 | if kid.className == "Tool" then return kid end | |
694 | end | |
695 | return nil | |
696 | end | |
697 | ||
698 | function getToolAnim(tool) | |
699 | for _, c in ipairs(tool:GetChildren()) do | |
700 | if c.Name == "toolanim" and c.className == "StringValue" then | |
701 | return c | |
702 | end | |
703 | end | |
704 | return nil | |
705 | end | |
706 | ||
707 | function animateTool() | |
708 | ||
709 | if (toolAnim == "None") then | |
710 | playToolAnimation("toolnone", toolTransitionTime, Humanoid, Enum.AnimationPriority.Idle) | |
711 | return | |
712 | end | |
713 | ||
714 | if (toolAnim == "Slash") then | |
715 | playToolAnimation("toolslash", 0, Humanoid, Enum.AnimationPriority.Action) | |
716 | return | |
717 | end | |
718 | ||
719 | if (toolAnim == "Lunge") then | |
720 | playToolAnimation("toollunge", 0, Humanoid, Enum.AnimationPriority.Action) | |
721 | return | |
722 | end | |
723 | end | |
724 | ||
725 | function moveSit() | |
726 | RightShoulder.MaxVelocity = 0.15 | |
727 | LeftShoulder.MaxVelocity = 0.15 | |
728 | RightShoulder:SetDesiredAngle(3.14 /2) | |
729 | LeftShoulder:SetDesiredAngle(-3.14 /2) | |
730 | RightHip:SetDesiredAngle(3.14 /2) | |
731 | LeftHip:SetDesiredAngle(-3.14 /2) | |
732 | end | |
733 | ||
734 | local lastTick = 0 | |
735 | ||
736 | function move(time) | |
737 | local amplitude = 1 | |
738 | local frequency = 1 | |
739 | local deltaTime = time - lastTick | |
740 | lastTick = time | |
741 | ||
742 | local climbFudge = 0 | |
743 | local setAngles = false | |
744 | ||
745 | if (jumpAnimTime > 0) then | |
746 | jumpAnimTime = jumpAnimTime - deltaTime | |
747 | end | |
748 | ||
749 | if (pose == "FreeFall" and jumpAnimTime <= 0) then | |
750 | playAnimation("fall", fallTransitionTime, Humanoid) | |
751 | elseif (pose == "Seated") then | |
752 | playAnimation("sit", 0.5, Humanoid) | |
753 | return | |
754 | elseif (pose == "Running") then | |
755 | playAnimation("walk", 0.1, Humanoid) | |
756 | elseif (pose == "Dead" or pose == "GettingUp" or pose == "FallingDown" or pose == "Seated" or pose == "PlatformStanding") then | |
757 | -- print("Wha " .. pose) | |
758 | stopAllAnimations() | |
759 | amplitude = 0.1 | |
760 | frequency = 1 | |
761 | setAngles = true | |
762 | end | |
763 | ||
764 | if (setAngles) then | |
765 | local desiredAngle = amplitude * math.sin(time * frequency) | |
766 | ||
767 | RightShoulder:SetDesiredAngle(desiredAngle + climbFudge) | |
768 | LeftShoulder:SetDesiredAngle(desiredAngle - climbFudge) | |
769 | RightHip:SetDesiredAngle(-desiredAngle) | |
770 | LeftHip:SetDesiredAngle(-desiredAngle) | |
771 | end | |
772 | ||
773 | -- Tool Animation handling | |
774 | local tool = getTool() | |
775 | if tool and tool:FindFirstChild("Handle") then | |
776 | ||
777 | local animStringValueObject = getToolAnim(tool) | |
778 | ||
779 | if animStringValueObject then | |
780 | toolAnim = animStringValueObject.Value | |
781 | -- message recieved, delete StringValue | |
782 | animStringValueObject.Parent = nil | |
783 | toolAnimTime = time + .3 | |
784 | end | |
785 | ||
786 | if time > toolAnimTime then | |
787 | toolAnimTime = 0 | |
788 | toolAnim = "None" | |
789 | end | |
790 | ||
791 | animateTool() | |
792 | else | |
793 | stopToolAnimations() | |
794 | toolAnim = "None" | |
795 | toolAnimInstance = nil | |
796 | toolAnimTime = 0 | |
797 | end | |
798 | end | |
799 | ||
800 | -- connect events | |
801 | Humanoid.Died:connect(onDied) | |
802 | Humanoid.Running:connect(onRunning) | |
803 | Humanoid.Jumping:connect(onJumping) | |
804 | Humanoid.Climbing:connect(onClimbing) | |
805 | Humanoid.GettingUp:connect(onGettingUp) | |
806 | Humanoid.FreeFalling:connect(onFreeFall) | |
807 | Humanoid.FallingDown:connect(onFallingDown) | |
808 | Humanoid.Seated:connect(onSeated) | |
809 | Humanoid.PlatformStanding:connect(onPlatformStanding) | |
810 | Humanoid.Swimming:connect(onSwimming) | |
811 | ||
812 | -- setup emote chat hook | |
813 | game:GetService("Players").LocalPlayer.Chatted:connect(function(msg) | |
814 | local emote = "" | |
815 | if msg == "/e dance" then | |
816 | emote = dances[math.random(1, #dances)] | |
817 | elseif (string.sub(msg, 1, 3) == "/e ") then | |
818 | emote = string.sub(msg, 4) | |
819 | elseif (string.sub(msg, 1, 7) == "/emote ") then | |
820 | emote = string.sub(msg, 8) | |
821 | end | |
822 | ||
823 | if (pose == "Standing" and emoteNames[emote] ~= nil) then | |
824 | playAnimation(emote, 0.1, Humanoid) | |
825 | end | |
826 | ||
827 | end) | |
828 | ||
829 | ||
830 | -- main program | |
831 | ||
832 | -- initialize to idle | |
833 | playAnimation("idle", 0.1, Humanoid) | |
834 | pose = "Standing" | |
835 | ||
836 | while Figure.Parent ~= nil do | |
837 | local _, time = wait(0.1) | |
838 | move(time) | |
839 | end | |
840 | ||
841 | ||
842 | ||
843 | end)) | |
844 | StringValue30.Name = "idle" | |
845 | StringValue30.Parent = LocalScript29 | |
846 | Animation31.Name = "Animation1" | |
847 | Animation31.Parent = StringValue30 | |
848 | Animation31.AnimationId = "rbxassetid://2912268301" | |
849 | NumberValue32.Name = "Weight" | |
850 | NumberValue32.Parent = Animation31 | |
851 | NumberValue32.Value = 9 | |
852 | Animation33.Name = "Animation2" | |
853 | Animation33.Parent = StringValue30 | |
854 | Animation33.AnimationId = "rbxassetid://2912268301" | |
855 | NumberValue34.Name = "Weight" | |
856 | NumberValue34.Parent = Animation33 | |
857 | NumberValue34.Value = 1 | |
858 | StringValue35.Name = "walk" | |
859 | StringValue35.Parent = LocalScript29 | |
860 | Animation36.Name = "WalkAnim" | |
861 | Animation36.Parent = StringValue35 | |
862 | Animation36.AnimationId = "rbxassetid://2912266963" | |
863 | StringValue37.Name = "run" | |
864 | StringValue37.Parent = LocalScript29 | |
865 | Animation38.Name = "RunAnim" | |
866 | Animation38.Parent = StringValue37 | |
867 | Animation38.AnimationId = "rbxassetid://2912266963" | |
868 | StringValue39.Name = "jump" | |
869 | StringValue39.Parent = LocalScript29 | |
870 | Animation40.Name = "JumpAnim" | |
871 | Animation40.Parent = StringValue39 | |
872 | Animation40.AnimationId = "http://www.roblox.com/asset/?id=125750702" | |
873 | StringValue41.Name = "climb" | |
874 | StringValue41.Parent = LocalScript29 | |
875 | Animation42.Name = "ClimbAnim" | |
876 | Animation42.Parent = StringValue41 | |
877 | Animation42.AnimationId = "http://www.roblox.com/asset/?id=180436334" | |
878 | StringValue43.Name = "toolnone" | |
879 | StringValue43.Parent = LocalScript29 | |
880 | Animation44.Name = "ToolNoneAnim" | |
881 | Animation44.Parent = StringValue43 | |
882 | Animation44.AnimationId = "http://www.roblox.com/asset/?id=182393478" | |
883 | StringValue45.Name = "fall" | |
884 | StringValue45.Parent = LocalScript29 | |
885 | Animation46.Name = "FallAnim" | |
886 | Animation46.Parent = StringValue45 | |
887 | Animation46.AnimationId = "http://www.roblox.com/asset/?id=180436148" | |
888 | StringValue47.Name = "sit" | |
889 | StringValue47.Parent = LocalScript29 | |
890 | Animation48.Name = "SitAnim" | |
891 | Animation48.Parent = StringValue47 | |
892 | Animation48.AnimationId = "http://www.roblox.com/asset/?id=178130996" | |
893 | NumberValue49.Name = "ScaleDampeningPercent" | |
894 | NumberValue49.Parent = LocalScript29 | |
895 | NumberValue49.Value = 0.40000000596046 | |
896 | for i,v in pairs(mas:GetChildren()) do | |
897 | v.Parent = workspace | |
898 | pcall(function() v:MakeJoints() end) | |
899 | end | |
900 | mas:Destroy() | |
901 | for i,v in pairs(cors) do | |
902 | spawn(function() | |
903 | pcall(v) | |
904 | end) | |
905 | end | |
906 | ||
907 | - | local Torso = game.workspace.Tabby_Cxt.Torso |
907 | + | local Torso = game.workspace.lafur2.Torso |
908 | ||
909 | local weld = Instance.new("Weld",Torso) | |
910 | weld.C0 = Torso.CFrame:Inverse() * workspace.a.Torso.CFrame | |
911 | weld.Part0 = Torso | |
912 | weld.Part1 = workspace.a.Torso | |
913 | local a = Torso.Parent | |
914 | c = a:GetChildren() | |
915 | for i=1, #c do | |
916 | if (c[i].className == "Accessory") then | |
917 | c[i]:remove() | |
918 | end | |
919 | end | |
920 | ||
921 | Torso.Transparency = 1 | |
922 | a.Head.Transparency = 1 | |
923 | a["Left Arm"].Transparency = 1 | |
924 | a["Right Arm"].Transparency = 1 | |
925 | a["Left Leg"].Transparency = 1 | |
926 | a["Right Leg"].Transparency = 1 |