mirror of
https://github.com/copyrighttxt/watrbx-game-engine.git
synced 2026-09-05 05:07:48 +00:00
GEEKING
This commit is contained in:
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
File diff suppressed because it is too large
Load Diff
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,102 @@
|
||||
<roblox xmlns:xmime="http://www.w3.org/2005/05/xmlmime" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://www.watrbx.wtf/roblox.xsd" version="4">
|
||||
<External>null</External>
|
||||
<External>nil</External>
|
||||
<Item class="Part" referent="RBX0">
|
||||
<Properties>
|
||||
<bool name="Anchored">false</bool>
|
||||
<float name="BackParamA">-0.5</float>
|
||||
<float name="BackParamB">0.5</float>
|
||||
<token name="BackSurface">3</token>
|
||||
<token name="BackSurfaceInput">0</token>
|
||||
<float name="BottomParamA">-0.5</float>
|
||||
<float name="BottomParamB">0.5</float>
|
||||
<token name="BottomSurface">3</token>
|
||||
<token name="BottomSurfaceInput">0</token>
|
||||
<int name="BrickColor">23</int>
|
||||
<CoordinateFrame name="CFrame">
|
||||
<X>-0.5</X>
|
||||
<Y>0.5</Y>
|
||||
<Z>0</Z>
|
||||
<R00>-1.1920929e-007</R00>
|
||||
<R01>1.00000012</R01>
|
||||
<R02>0</R02>
|
||||
<R10>1.00000012</R10>
|
||||
<R11>-1.1920929e-007</R11>
|
||||
<R12>0</R12>
|
||||
<R20>0</R20>
|
||||
<R21>0</R21>
|
||||
<R22>-1.00000024</R22>
|
||||
</CoordinateFrame>
|
||||
<bool name="CanCollide">true</bool>
|
||||
<bool name="CastsShadows">true</bool>
|
||||
<token name="Controller">0</token>
|
||||
<bool name="ControllerFlagShown">true</bool>
|
||||
<bool name="Cullable">true</bool>
|
||||
<float name="Elasticity">0.5</float>
|
||||
<token name="FormFactor">0</token>
|
||||
<float name="Friction">0.300000012</float>
|
||||
<float name="FrontParamA">-0.5</float>
|
||||
<float name="FrontParamB">0.5</float>
|
||||
<token name="FrontSurface">3</token>
|
||||
<token name="FrontSurfaceInput">0</token>
|
||||
<float name="LeftParamA">-0.5</float>
|
||||
<float name="LeftParamB">0.5</float>
|
||||
<token name="LeftSurface">3</token>
|
||||
<token name="LeftSurfaceInput">0</token>
|
||||
<bool name="Locked">false</bool>
|
||||
<string name="Name">Rocket</string>
|
||||
<float name="Reflectance">0</float>
|
||||
<float name="RightParamA">-0.5</float>
|
||||
<float name="RightParamB">0.5</float>
|
||||
<token name="RightSurface">3</token>
|
||||
<token name="RightSurfaceInput">0</token>
|
||||
<Vector3 name="RotVelocity">
|
||||
<X>0</X>
|
||||
<Y>0</Y>
|
||||
<Z>0</Z>
|
||||
</Vector3>
|
||||
<float name="TopParamA">-0.5</float>
|
||||
<float name="TopParamB">0.5</float>
|
||||
<token name="TopSurface">3</token>
|
||||
<token name="TopSurfaceInput">0</token>
|
||||
<float name="Transparency">0</float>
|
||||
<Vector3 name="Velocity">
|
||||
<X>0</X>
|
||||
<Y>0</Y>
|
||||
<Z>0</Z>
|
||||
</Vector3>
|
||||
<token name="shape">1</token>
|
||||
<Vector3 name="size">
|
||||
<X>1</X>
|
||||
<Y>1</Y>
|
||||
<Z>4</Z>
|
||||
</Vector3>
|
||||
</Properties>
|
||||
<Item class="Sound">
|
||||
<Properties>
|
||||
<bool name="Looped">true</bool>
|
||||
<string name="Name">Swoosh</string>
|
||||
<int name="PlayCount">0</int>
|
||||
<bool name="PlayOnRemove">false</bool>
|
||||
<Content name="SoundId"><url>rbxasset://sounds\Rocket whoosh 01.wav</url></Content>
|
||||
<float name="Volume">0.699999988</float>
|
||||
</Properties>
|
||||
</Item>
|
||||
<Item class="Sound">
|
||||
<Properties>
|
||||
<bool name="Looped">false</bool>
|
||||
<string name="Name">Explosion</string>
|
||||
<int name="PlayCount">0</int>
|
||||
<bool name="PlayOnRemove">true</bool>
|
||||
<Content name="SoundId"><url>rbxasset://sounds\collide.wav</url></Content>
|
||||
<float name="Volume">1</float>
|
||||
</Properties>
|
||||
</Item>
|
||||
<Item class="Script">
|
||||
<Properties>
|
||||
<string name="Name">Script</string>
|
||||
<string name="Source">r = game:service("RunService") shaft = script.Parent position = Vector3.new(0,0,0) function fly() 	direction = shaft.CFrame.lookVector 	position = position + direction 	error = position - shaft.Position 	shaft.Velocity = 7*error end function blow() 	swoosh:Stop() 	explosion = Instance.new("Explosion") 	explosion.Position = shaft.Position 	explosion.Parent = game.Workspace 	connection:disconnect() 	shaft:remove() end t, s = r.Stepped:wait() swoosh = script.Parent.Swoosh swoosh:Play() position = shaft.Position d = t + 10.0 - s connection = shaft.Touched:connect(blow) while t < d do 	fly() 	t = r.Stepped:wait() end script.Parent.Explosion.PlayOnRemove = false swoosh:Stop() shaft:remove() </string>
|
||||
</Properties>
|
||||
</Item>
|
||||
</Item>
|
||||
</roblox>
|
||||
@@ -0,0 +1,82 @@
|
||||
<roblox xmlns:xmime="http://www.w3.org/2005/05/xmlmime" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://www.watrbx.wtf/roblox.xsd" version="4">
|
||||
<External>null</External>
|
||||
<External>nil</External>
|
||||
<Item class="Part" referent="RBX0">
|
||||
<Properties>
|
||||
<bool name="Anchored">false</bool>
|
||||
<float name="BackParamA">-0.5</float>
|
||||
<float name="BackParamB">0.5</float>
|
||||
<token name="BackSurface">0</token>
|
||||
<token name="BackSurfaceInput">0</token>
|
||||
<float name="BottomParamA">-0.5</float>
|
||||
<float name="BottomParamB">0.5</float>
|
||||
<token name="BottomSurface">4</token>
|
||||
<token name="BottomSurfaceInput">0</token>
|
||||
<int name="BrickColor">194</int>
|
||||
<CoordinateFrame name="CFrame">
|
||||
<X>0</X>
|
||||
<Y>6.4000001</Y>
|
||||
<Z>-8</Z>
|
||||
<R00>1</R00>
|
||||
<R01>0</R01>
|
||||
<R02>0</R02>
|
||||
<R10>0</R10>
|
||||
<R11>1</R11>
|
||||
<R12>0</R12>
|
||||
<R20>0</R20>
|
||||
<R21>0</R21>
|
||||
<R22>1</R22>
|
||||
</CoordinateFrame>
|
||||
<bool name="CanCollide">true</bool>
|
||||
<bool name="CastsShadows">true</bool>
|
||||
<token name="Controller">0</token>
|
||||
<bool name="ControllerFlagShown">true</bool>
|
||||
<bool name="Cullable">true</bool>
|
||||
<float name="Elasticity">0.5</float>
|
||||
<token name="FormFactor">0</token>
|
||||
<float name="Friction">0.300000012</float>
|
||||
<float name="FrontParamA">-0.5</float>
|
||||
<float name="FrontParamB">0.5</float>
|
||||
<token name="FrontSurface">0</token>
|
||||
<token name="FrontSurfaceInput">0</token>
|
||||
<float name="LeftParamA">-0.5</float>
|
||||
<float name="LeftParamB">0.5</float>
|
||||
<token name="LeftSurface">0</token>
|
||||
<token name="LeftSurfaceInput">0</token>
|
||||
<bool name="Locked">false</bool>
|
||||
<string name="Name">Pellet</string>
|
||||
<float name="Reflectance">0</float>
|
||||
<float name="RightParamA">-0.5</float>
|
||||
<float name="RightParamB">0.5</float>
|
||||
<token name="RightSurface">0</token>
|
||||
<token name="RightSurfaceInput">0</token>
|
||||
<Vector3 name="RotVelocity">
|
||||
<X>0</X>
|
||||
<Y>0</Y>
|
||||
<Z>0</Z>
|
||||
</Vector3>
|
||||
<float name="TopParamA">-0.5</float>
|
||||
<float name="TopParamB">0.5</float>
|
||||
<token name="TopSurface">3</token>
|
||||
<token name="TopSurfaceInput">0</token>
|
||||
<float name="Transparency">0</float>
|
||||
<Vector3 name="Velocity">
|
||||
<X>0</X>
|
||||
<Y>0</Y>
|
||||
<Z>0</Z>
|
||||
</Vector3>
|
||||
<token name="shape">0</token>
|
||||
<Vector3 name="size">
|
||||
<X>2</X>
|
||||
<Y>2</Y>
|
||||
<Z>2</Z>
|
||||
</Vector3>
|
||||
</Properties>
|
||||
<Item class="Script">
|
||||
<Properties>
|
||||
<string name="Name">Script</string>
|
||||
<string name="Source"> pellet = script.Parent damage = 8 function onTouched(hit) 	humanoid = hit.Parent:findFirstChild("Humanoid") 	if humanoid~=nil then 		humanoid.Health = humanoid.Health - damage 		connection:disconnect() 	else 		damage = damage / 2 		if damage < 0.1 then 			connection:disconnect() 		end 	end end connection = pellet.Touched:connect(onTouched) r = game:service("RunService") t, s = r.Stepped:wait() d = t + 1.0 - s while t < d do 	t = r.Stepped:wait() end pellet.Parent = nil</string>
|
||||
</Properties>
|
||||
</Item>
|
||||
</Item>
|
||||
</roblox>
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,527 @@
|
||||
<roblox xmlns:xmime="http://www.w3.org/2005/05/xmlmime" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://www.watrbx.wtf/roblox.xsd" version="4">
|
||||
<External>null</External>
|
||||
<External>nil</External>
|
||||
<Item class="Model" referent="RBX0">
|
||||
<Properties>
|
||||
<token name="Controller">7</token>
|
||||
<bool name="ControllerFlagShown">true</bool>
|
||||
<CoordinateFrame name="ModelInPrimary">
|
||||
<X>0</X>
|
||||
<Y>0</Y>
|
||||
<Z>0</Z>
|
||||
<R00>1</R00>
|
||||
<R01>0</R01>
|
||||
<R02>0</R02>
|
||||
<R10>0</R10>
|
||||
<R11>1</R11>
|
||||
<R12>0</R12>
|
||||
<R20>0</R20>
|
||||
<R21>0</R21>
|
||||
<R22>1</R22>
|
||||
</CoordinateFrame>
|
||||
<string name="Name">erik.cassel</string>
|
||||
<Ref name="PrimaryPart">RBX1</Ref>
|
||||
<bool name="archivable">true</bool>
|
||||
</Properties>
|
||||
<Item class="Part" referent="RBX1">
|
||||
<Properties>
|
||||
<bool name="Anchored">false</bool>
|
||||
<float name="BackParamA">-0.5</float>
|
||||
<float name="BackParamB">0.5</float>
|
||||
<token name="BackSurface">0</token>
|
||||
<token name="BackSurfaceInput">0</token>
|
||||
<float name="BottomParamA">-0.5</float>
|
||||
<float name="BottomParamB">0.5</float>
|
||||
<token name="BottomSurface">4</token>
|
||||
<token name="BottomSurfaceInput">0</token>
|
||||
<int name="BrickColor">24</int>
|
||||
<CoordinateFrame name="CFrame">
|
||||
<X>0</X>
|
||||
<Y>4.5</Y>
|
||||
<Z>25.5</Z>
|
||||
<R00>-1</R00>
|
||||
<R01>0</R01>
|
||||
<R02>0</R02>
|
||||
<R10>0</R10>
|
||||
<R11>1</R11>
|
||||
<R12>0</R12>
|
||||
<R20>0</R20>
|
||||
<R21>0</R21>
|
||||
<R22>-1</R22>
|
||||
</CoordinateFrame>
|
||||
<bool name="CanCollide">true</bool>
|
||||
<token name="Controller">0</token>
|
||||
<bool name="ControllerFlagShown">true</bool>
|
||||
<bool name="DraggingV1">false</bool>
|
||||
<float name="Elasticity">0.5</float>
|
||||
<token name="FormFactor">0</token>
|
||||
<float name="Friction">0.300000012</float>
|
||||
<float name="FrontParamA">-0.5</float>
|
||||
<float name="FrontParamB">0.5</float>
|
||||
<token name="FrontSurface">0</token>
|
||||
<token name="FrontSurfaceInput">0</token>
|
||||
<float name="LeftParamA">-0.5</float>
|
||||
<float name="LeftParamB">0.5</float>
|
||||
<token name="LeftSurface">0</token>
|
||||
<token name="LeftSurfaceInput">0</token>
|
||||
<bool name="Locked">true</bool>
|
||||
<string name="Name">Head</string>
|
||||
<float name="Reflectance">0</float>
|
||||
<float name="RightParamA">-0.5</float>
|
||||
<float name="RightParamB">0.5</float>
|
||||
<token name="RightSurface">0</token>
|
||||
<token name="RightSurfaceInput">0</token>
|
||||
<Vector3 name="RotVelocity">
|
||||
<X>0</X>
|
||||
<Y>0</Y>
|
||||
<Z>0</Z>
|
||||
</Vector3>
|
||||
<float name="TopParamA">-0.5</float>
|
||||
<float name="TopParamB">0.5</float>
|
||||
<token name="TopSurface">0</token>
|
||||
<token name="TopSurfaceInput">0</token>
|
||||
<float name="Transparency">0</float>
|
||||
<Vector3 name="Velocity">
|
||||
<X>0</X>
|
||||
<Y>0</Y>
|
||||
<Z>0</Z>
|
||||
</Vector3>
|
||||
<bool name="archivable">true</bool>
|
||||
<token name="shape">1</token>
|
||||
<Vector3 name="size">
|
||||
<X>2</X>
|
||||
<Y>1</Y>
|
||||
<Z>1</Z>
|
||||
</Vector3>
|
||||
</Properties>
|
||||
<Item class="SpecialMesh" referent="RBX2">
|
||||
<Properties>
|
||||
<Content name="MeshId"><null></null></Content>
|
||||
<token name="MeshType">0</token>
|
||||
<string name="Name">Mesh</string>
|
||||
<Vector3 name="Scale">
|
||||
<X>1.25</X>
|
||||
<Y>1.25</Y>
|
||||
<Z>1.25</Z>
|
||||
</Vector3>
|
||||
<Content name="TextureId"><null></null></Content>
|
||||
<Vector3 name="VertexColor">
|
||||
<X>1</X>
|
||||
<Y>1</Y>
|
||||
<Z>1</Z>
|
||||
</Vector3>
|
||||
<bool name="archivable">true</bool>
|
||||
</Properties>
|
||||
</Item>
|
||||
<Item class="Decal" referent="RBX3">
|
||||
<Properties>
|
||||
<token name="Face">5</token>
|
||||
<string name="Name">face</string>
|
||||
<float name="Shiny">20</float>
|
||||
<float name="Specular">0</float>
|
||||
<Content name="Texture"><url>rbxasset://textures/face.png</url></Content>
|
||||
<bool name="archivable">true</bool>
|
||||
</Properties>
|
||||
</Item>
|
||||
</Item>
|
||||
<Item class="Part" referent="RBX4">
|
||||
<Properties>
|
||||
<bool name="Anchored">false</bool>
|
||||
<float name="BackParamA">-0.5</float>
|
||||
<float name="BackParamB">0.5</float>
|
||||
<token name="BackSurface">0</token>
|
||||
<token name="BackSurfaceInput">0</token>
|
||||
<float name="BottomParamA">-0.5</float>
|
||||
<float name="BottomParamB">0.5</float>
|
||||
<token name="BottomSurface">4</token>
|
||||
<token name="BottomSurfaceInput">0</token>
|
||||
<int name="BrickColor">23</int>
|
||||
<CoordinateFrame name="CFrame">
|
||||
<X>0</X>
|
||||
<Y>3</Y>
|
||||
<Z>25.5</Z>
|
||||
<R00>-1</R00>
|
||||
<R01>0</R01>
|
||||
<R02>-0</R02>
|
||||
<R10>-0</R10>
|
||||
<R11>1</R11>
|
||||
<R12>-0</R12>
|
||||
<R20>-0</R20>
|
||||
<R21>0</R21>
|
||||
<R22>-1</R22>
|
||||
</CoordinateFrame>
|
||||
<bool name="CanCollide">true</bool>
|
||||
<token name="Controller">0</token>
|
||||
<bool name="ControllerFlagShown">true</bool>
|
||||
<bool name="DraggingV1">false</bool>
|
||||
<float name="Elasticity">0.5</float>
|
||||
<token name="FormFactor">0</token>
|
||||
<float name="Friction">0.300000012</float>
|
||||
<float name="FrontParamA">-0.5</float>
|
||||
<float name="FrontParamB">0.5</float>
|
||||
<token name="FrontSurface">0</token>
|
||||
<token name="FrontSurfaceInput">0</token>
|
||||
<float name="LeftParamA">0</float>
|
||||
<float name="LeftParamB">0</float>
|
||||
<token name="LeftSurface">2</token>
|
||||
<token name="LeftSurfaceInput">0</token>
|
||||
<bool name="Locked">true</bool>
|
||||
<string name="Name">Torso</string>
|
||||
<float name="Reflectance">0</float>
|
||||
<float name="RightParamA">0</float>
|
||||
<float name="RightParamB">0</float>
|
||||
<token name="RightSurface">2</token>
|
||||
<token name="RightSurfaceInput">0</token>
|
||||
<Vector3 name="RotVelocity">
|
||||
<X>0</X>
|
||||
<Y>0</Y>
|
||||
<Z>0</Z>
|
||||
</Vector3>
|
||||
<float name="TopParamA">-0.5</float>
|
||||
<float name="TopParamB">0.5</float>
|
||||
<token name="TopSurface">3</token>
|
||||
<token name="TopSurfaceInput">0</token>
|
||||
<float name="Transparency">0</float>
|
||||
<Vector3 name="Velocity">
|
||||
<X>0</X>
|
||||
<Y>0</Y>
|
||||
<Z>0</Z>
|
||||
</Vector3>
|
||||
<bool name="archivable">true</bool>
|
||||
<token name="shape">1</token>
|
||||
<Vector3 name="size">
|
||||
<X>2</X>
|
||||
<Y>2</Y>
|
||||
<Z>1</Z>
|
||||
</Vector3>
|
||||
</Properties>
|
||||
<Item class="Decal" referent="RBX5">
|
||||
<Properties>
|
||||
<token name="Face">5</token>
|
||||
<string name="Name">roblox</string>
|
||||
<float name="Shiny">20</float>
|
||||
<float name="Specular">0</float>
|
||||
<Content name="Texture">
|
||||
<null></null>
|
||||
</Content>
|
||||
<bool name="archivable">true</bool>
|
||||
</Properties>
|
||||
</Item>
|
||||
</Item>
|
||||
<Item class="Part" referent="RBX6">
|
||||
<Properties>
|
||||
<bool name="Anchored">false</bool>
|
||||
<float name="BackParamA">-0.5</float>
|
||||
<float name="BackParamB">0.5</float>
|
||||
<token name="BackSurface">0</token>
|
||||
<token name="BackSurfaceInput">0</token>
|
||||
<float name="BottomParamA">-0.5</float>
|
||||
<float name="BottomParamB">0.5</float>
|
||||
<token name="BottomSurface">4</token>
|
||||
<token name="BottomSurfaceInput">0</token>
|
||||
<int name="BrickColor">24</int>
|
||||
<CoordinateFrame name="CFrame">
|
||||
<X>1.5</X>
|
||||
<Y>3</Y>
|
||||
<Z>25.5</Z>
|
||||
<R00>-1</R00>
|
||||
<R01>0</R01>
|
||||
<R02>0</R02>
|
||||
<R10>0</R10>
|
||||
<R11>1</R11>
|
||||
<R12>0</R12>
|
||||
<R20>0</R20>
|
||||
<R21>0</R21>
|
||||
<R22>-1</R22>
|
||||
</CoordinateFrame>
|
||||
<bool name="CanCollide">false</bool>
|
||||
<token name="Controller">0</token>
|
||||
<bool name="ControllerFlagShown">true</bool>
|
||||
<bool name="DraggingV1">false</bool>
|
||||
<float name="Elasticity">0.5</float>
|
||||
<token name="FormFactor">0</token>
|
||||
<float name="Friction">0.300000012</float>
|
||||
<float name="FrontParamA">-0.5</float>
|
||||
<float name="FrontParamB">0.5</float>
|
||||
<token name="FrontSurface">0</token>
|
||||
<token name="FrontSurfaceInput">0</token>
|
||||
<float name="LeftParamA">-0.5</float>
|
||||
<float name="LeftParamB">0.5</float>
|
||||
<token name="LeftSurface">0</token>
|
||||
<token name="LeftSurfaceInput">0</token>
|
||||
<bool name="Locked">true</bool>
|
||||
<string name="Name">Left Arm</string>
|
||||
<float name="Reflectance">0</float>
|
||||
<float name="RightParamA">-0.5</float>
|
||||
<float name="RightParamB">0.5</float>
|
||||
<token name="RightSurface">0</token>
|
||||
<token name="RightSurfaceInput">0</token>
|
||||
<Vector3 name="RotVelocity">
|
||||
<X>0</X>
|
||||
<Y>0</Y>
|
||||
<Z>0</Z>
|
||||
</Vector3>
|
||||
<float name="TopParamA">-0.5</float>
|
||||
<float name="TopParamB">0.5</float>
|
||||
<token name="TopSurface">3</token>
|
||||
<token name="TopSurfaceInput">0</token>
|
||||
<float name="Transparency">0</float>
|
||||
<Vector3 name="Velocity">
|
||||
<X>0</X>
|
||||
<Y>0</Y>
|
||||
<Z>0</Z>
|
||||
</Vector3>
|
||||
<bool name="archivable">true</bool>
|
||||
<token name="shape">1</token>
|
||||
<Vector3 name="size">
|
||||
<X>1</X>
|
||||
<Y>2</Y>
|
||||
<Z>1</Z>
|
||||
</Vector3>
|
||||
</Properties>
|
||||
</Item>
|
||||
<Item class="Part" referent="RBX7">
|
||||
<Properties>
|
||||
<bool name="Anchored">false</bool>
|
||||
<float name="BackParamA">-0.5</float>
|
||||
<float name="BackParamB">0.5</float>
|
||||
<token name="BackSurface">0</token>
|
||||
<token name="BackSurfaceInput">0</token>
|
||||
<float name="BottomParamA">-0.5</float>
|
||||
<float name="BottomParamB">0.5</float>
|
||||
<token name="BottomSurface">4</token>
|
||||
<token name="BottomSurfaceInput">0</token>
|
||||
<int name="BrickColor">24</int>
|
||||
<CoordinateFrame name="CFrame">
|
||||
<X>-1.5</X>
|
||||
<Y>3</Y>
|
||||
<Z>25.5</Z>
|
||||
<R00>-1</R00>
|
||||
<R01>0</R01>
|
||||
<R02>0</R02>
|
||||
<R10>0</R10>
|
||||
<R11>1</R11>
|
||||
<R12>0</R12>
|
||||
<R20>0</R20>
|
||||
<R21>0</R21>
|
||||
<R22>-1</R22>
|
||||
</CoordinateFrame>
|
||||
<bool name="CanCollide">false</bool>
|
||||
<token name="Controller">0</token>
|
||||
<bool name="ControllerFlagShown">true</bool>
|
||||
<bool name="DraggingV1">false</bool>
|
||||
<float name="Elasticity">0.5</float>
|
||||
<token name="FormFactor">0</token>
|
||||
<float name="Friction">0.300000012</float>
|
||||
<float name="FrontParamA">-0.5</float>
|
||||
<float name="FrontParamB">0.5</float>
|
||||
<token name="FrontSurface">0</token>
|
||||
<token name="FrontSurfaceInput">0</token>
|
||||
<float name="LeftParamA">-0.5</float>
|
||||
<float name="LeftParamB">0.5</float>
|
||||
<token name="LeftSurface">0</token>
|
||||
<token name="LeftSurfaceInput">0</token>
|
||||
<bool name="Locked">true</bool>
|
||||
<string name="Name">Right Arm</string>
|
||||
<float name="Reflectance">0</float>
|
||||
<float name="RightParamA">-0.5</float>
|
||||
<float name="RightParamB">0.5</float>
|
||||
<token name="RightSurface">0</token>
|
||||
<token name="RightSurfaceInput">0</token>
|
||||
<Vector3 name="RotVelocity">
|
||||
<X>0</X>
|
||||
<Y>0</Y>
|
||||
<Z>0</Z>
|
||||
</Vector3>
|
||||
<float name="TopParamA">-0.5</float>
|
||||
<float name="TopParamB">0.5</float>
|
||||
<token name="TopSurface">3</token>
|
||||
<token name="TopSurfaceInput">0</token>
|
||||
<float name="Transparency">0</float>
|
||||
<Vector3 name="Velocity">
|
||||
<X>0</X>
|
||||
<Y>0</Y>
|
||||
<Z>0</Z>
|
||||
</Vector3>
|
||||
<bool name="archivable">true</bool>
|
||||
<token name="shape">1</token>
|
||||
<Vector3 name="size">
|
||||
<X>1</X>
|
||||
<Y>2</Y>
|
||||
<Z>1</Z>
|
||||
</Vector3>
|
||||
</Properties>
|
||||
</Item>
|
||||
<Item class="Part" referent="RBX8">
|
||||
<Properties>
|
||||
<bool name="Anchored">false</bool>
|
||||
<float name="BackParamA">-0.5</float>
|
||||
<float name="BackParamB">0.5</float>
|
||||
<token name="BackSurface">0</token>
|
||||
<token name="BackSurfaceInput">0</token>
|
||||
<float name="BottomParamA">-0.5</float>
|
||||
<float name="BottomParamB">0.5</float>
|
||||
<token name="BottomSurface">0</token>
|
||||
<token name="BottomSurfaceInput">0</token>
|
||||
<int name="BrickColor">119</int>
|
||||
<CoordinateFrame name="CFrame">
|
||||
<X>0.5</X>
|
||||
<Y>1</Y>
|
||||
<Z>25.5</Z>
|
||||
<R00>-1</R00>
|
||||
<R01>0</R01>
|
||||
<R02>0</R02>
|
||||
<R10>0</R10>
|
||||
<R11>1</R11>
|
||||
<R12>0</R12>
|
||||
<R20>0</R20>
|
||||
<R21>0</R21>
|
||||
<R22>-1</R22>
|
||||
</CoordinateFrame>
|
||||
<bool name="CanCollide">false</bool>
|
||||
<token name="Controller">0</token>
|
||||
<bool name="ControllerFlagShown">true</bool>
|
||||
<bool name="DraggingV1">false</bool>
|
||||
<float name="Elasticity">0.5</float>
|
||||
<token name="FormFactor">0</token>
|
||||
<float name="Friction">0.300000012</float>
|
||||
<float name="FrontParamA">-0.5</float>
|
||||
<float name="FrontParamB">0.5</float>
|
||||
<token name="FrontSurface">0</token>
|
||||
<token name="FrontSurfaceInput">0</token>
|
||||
<float name="LeftParamA">-0.5</float>
|
||||
<float name="LeftParamB">0.5</float>
|
||||
<token name="LeftSurface">0</token>
|
||||
<token name="LeftSurfaceInput">0</token>
|
||||
<bool name="Locked">true</bool>
|
||||
<string name="Name">Left Leg</string>
|
||||
<float name="Reflectance">0</float>
|
||||
<float name="RightParamA">-0.5</float>
|
||||
<float name="RightParamB">0.5</float>
|
||||
<token name="RightSurface">0</token>
|
||||
<token name="RightSurfaceInput">0</token>
|
||||
<Vector3 name="RotVelocity">
|
||||
<X>0</X>
|
||||
<Y>0</Y>
|
||||
<Z>0</Z>
|
||||
</Vector3>
|
||||
<float name="TopParamA">-0.5</float>
|
||||
<float name="TopParamB">0.5</float>
|
||||
<token name="TopSurface">3</token>
|
||||
<token name="TopSurfaceInput">0</token>
|
||||
<float name="Transparency">0</float>
|
||||
<Vector3 name="Velocity">
|
||||
<X>0</X>
|
||||
<Y>0</Y>
|
||||
<Z>0</Z>
|
||||
</Vector3>
|
||||
<bool name="archivable">true</bool>
|
||||
<token name="shape">1</token>
|
||||
<Vector3 name="size">
|
||||
<X>1</X>
|
||||
<Y>2</Y>
|
||||
<Z>1</Z>
|
||||
</Vector3>
|
||||
</Properties>
|
||||
</Item>
|
||||
<Item class="Part" referent="RBX9">
|
||||
<Properties>
|
||||
<bool name="Anchored">false</bool>
|
||||
<float name="BackParamA">-0.5</float>
|
||||
<float name="BackParamB">0.5</float>
|
||||
<token name="BackSurface">0</token>
|
||||
<token name="BackSurfaceInput">0</token>
|
||||
<float name="BottomParamA">-0.5</float>
|
||||
<float name="BottomParamB">0.5</float>
|
||||
<token name="BottomSurface">0</token>
|
||||
<token name="BottomSurfaceInput">0</token>
|
||||
<int name="BrickColor">119</int>
|
||||
<CoordinateFrame name="CFrame">
|
||||
<X>-0.5</X>
|
||||
<Y>1</Y>
|
||||
<Z>25.5</Z>
|
||||
<R00>-1</R00>
|
||||
<R01>0</R01>
|
||||
<R02>0</R02>
|
||||
<R10>0</R10>
|
||||
<R11>1</R11>
|
||||
<R12>0</R12>
|
||||
<R20>0</R20>
|
||||
<R21>0</R21>
|
||||
<R22>-1</R22>
|
||||
</CoordinateFrame>
|
||||
<bool name="CanCollide">false</bool>
|
||||
<token name="Controller">0</token>
|
||||
<bool name="ControllerFlagShown">true</bool>
|
||||
<bool name="DraggingV1">false</bool>
|
||||
<float name="Elasticity">0.5</float>
|
||||
<token name="FormFactor">0</token>
|
||||
<float name="Friction">0.300000012</float>
|
||||
<float name="FrontParamA">-0.5</float>
|
||||
<float name="FrontParamB">0.5</float>
|
||||
<token name="FrontSurface">0</token>
|
||||
<token name="FrontSurfaceInput">0</token>
|
||||
<float name="LeftParamA">-0.5</float>
|
||||
<float name="LeftParamB">0.5</float>
|
||||
<token name="LeftSurface">0</token>
|
||||
<token name="LeftSurfaceInput">0</token>
|
||||
<bool name="Locked">true</bool>
|
||||
<string name="Name">Right Leg</string>
|
||||
<float name="Reflectance">0</float>
|
||||
<float name="RightParamA">-0.5</float>
|
||||
<float name="RightParamB">0.5</float>
|
||||
<token name="RightSurface">0</token>
|
||||
<token name="RightSurfaceInput">0</token>
|
||||
<Vector3 name="RotVelocity">
|
||||
<X>0</X>
|
||||
<Y>0</Y>
|
||||
<Z>0</Z>
|
||||
</Vector3>
|
||||
<float name="TopParamA">-0.5</float>
|
||||
<float name="TopParamB">0.5</float>
|
||||
<token name="TopSurface">3</token>
|
||||
<token name="TopSurfaceInput">0</token>
|
||||
<float name="Transparency">0</float>
|
||||
<Vector3 name="Velocity">
|
||||
<X>0</X>
|
||||
<Y>0</Y>
|
||||
<Z>0</Z>
|
||||
</Vector3>
|
||||
<bool name="archivable">true</bool>
|
||||
<token name="shape">1</token>
|
||||
<Vector3 name="size">
|
||||
<X>1</X>
|
||||
<Y>2</Y>
|
||||
<Z>1</Z>
|
||||
</Vector3>
|
||||
</Properties>
|
||||
</Item>
|
||||
<Item class="Humanoid" referent="RBX10">
|
||||
<Properties>
|
||||
<float name="Health">100</float>
|
||||
<bool name="Jump">false</bool>
|
||||
<float name="MaxHealth">100</float>
|
||||
<string name="Name">Humanoid</string>
|
||||
<bool name="Sit">false</bool>
|
||||
<Vector3 name="TargetPoint">
|
||||
<X>0</X>
|
||||
<Y>0</Y>
|
||||
<Z>0</Z>
|
||||
</Vector3>
|
||||
<Vector3 name="WalkDirection">
|
||||
<X>0</X>
|
||||
<Y>0</Y>
|
||||
<Z>0</Z>
|
||||
</Vector3>
|
||||
<float name="WalkRotationalVelocity">0</float>
|
||||
<Ref name="WalkToPart">null</Ref>
|
||||
<Vector3 name="WalkToPoint">
|
||||
<X>0</X>
|
||||
<Y>0</Y>
|
||||
<Z>0</Z>
|
||||
</Vector3>
|
||||
<bool name="archivable">true</bool>
|
||||
</Properties>
|
||||
</Item>
|
||||
</Item>
|
||||
</roblox>
|
||||
@@ -0,0 +1,599 @@
|
||||
<roblox xmlns:xmime="http://www.w3.org/2005/05/xmlmime" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://www.watrbx.wtf/roblox.xsd" version="4">
|
||||
<External>null</External>
|
||||
<External>nil</External>
|
||||
<Item class="Model" referent="RBX0">
|
||||
<Properties>
|
||||
<token name="Controller">7</token>
|
||||
<bool name="ControllerFlagShown">true</bool>
|
||||
<CoordinateFrame name="ModelInPrimary">
|
||||
<X>0</X>
|
||||
<Y>0</Y>
|
||||
<Z>0</Z>
|
||||
<R00>1</R00>
|
||||
<R01>0</R01>
|
||||
<R02>0</R02>
|
||||
<R10>0</R10>
|
||||
<R11>1</R11>
|
||||
<R12>0</R12>
|
||||
<R20>0</R20>
|
||||
<R21>0</R21>
|
||||
<R22>1</R22>
|
||||
</CoordinateFrame>
|
||||
<string name="Name">erik.cassel</string>
|
||||
<Ref name="PrimaryPart">RBX1</Ref>
|
||||
<bool name="archivable">true</bool>
|
||||
</Properties>
|
||||
<Item class="Part" referent="RBX1">
|
||||
<Properties>
|
||||
<bool name="Anchored">false</bool>
|
||||
<float name="BackParamA">-0.5</float>
|
||||
<float name="BackParamB">0.5</float>
|
||||
<token name="BackSurface">0</token>
|
||||
<token name="BackSurfaceInput">0</token>
|
||||
<float name="BottomParamA">-0.5</float>
|
||||
<float name="BottomParamB">0.5</float>
|
||||
<token name="BottomSurface">4</token>
|
||||
<token name="BottomSurfaceInput">0</token>
|
||||
<int name="BrickColor">24</int>
|
||||
<CoordinateFrame name="CFrame">
|
||||
<X>0</X>
|
||||
<Y>4.5</Y>
|
||||
<Z>25.5</Z>
|
||||
<R00>-1</R00>
|
||||
<R01>0</R01>
|
||||
<R02>0</R02>
|
||||
<R10>0</R10>
|
||||
<R11>1</R11>
|
||||
<R12>0</R12>
|
||||
<R20>0</R20>
|
||||
<R21>0</R21>
|
||||
<R22>-1</R22>
|
||||
</CoordinateFrame>
|
||||
<bool name="CanCollide">true</bool>
|
||||
<token name="Controller">0</token>
|
||||
<bool name="ControllerFlagShown">true</bool>
|
||||
<bool name="DraggingV1">false</bool>
|
||||
<float name="Elasticity">0.5</float>
|
||||
<token name="FormFactor">0</token>
|
||||
<float name="Friction">0.300000012</float>
|
||||
<float name="FrontParamA">-0.5</float>
|
||||
<float name="FrontParamB">0.5</float>
|
||||
<token name="FrontSurface">0</token>
|
||||
<token name="FrontSurfaceInput">0</token>
|
||||
<float name="LeftParamA">-0.5</float>
|
||||
<float name="LeftParamB">0.5</float>
|
||||
<token name="LeftSurface">0</token>
|
||||
<token name="LeftSurfaceInput">0</token>
|
||||
<bool name="Locked">true</bool>
|
||||
<string name="Name">Head</string>
|
||||
<float name="Reflectance">0</float>
|
||||
<float name="RightParamA">-0.5</float>
|
||||
<float name="RightParamB">0.5</float>
|
||||
<token name="RightSurface">0</token>
|
||||
<token name="RightSurfaceInput">0</token>
|
||||
<Vector3 name="RotVelocity">
|
||||
<X>0</X>
|
||||
<Y>0</Y>
|
||||
<Z>0</Z>
|
||||
</Vector3>
|
||||
<float name="TopParamA">-0.5</float>
|
||||
<float name="TopParamB">0.5</float>
|
||||
<token name="TopSurface">0</token>
|
||||
<token name="TopSurfaceInput">0</token>
|
||||
<float name="Transparency">0</float>
|
||||
<Vector3 name="Velocity">
|
||||
<X>0</X>
|
||||
<Y>0</Y>
|
||||
<Z>0</Z>
|
||||
</Vector3>
|
||||
<bool name="archivable">true</bool>
|
||||
<token name="shape">1</token>
|
||||
<Vector3 name="size">
|
||||
<X>2</X>
|
||||
<Y>1</Y>
|
||||
<Z>1</Z>
|
||||
</Vector3>
|
||||
</Properties>
|
||||
<Item class="SpecialMesh" referent="RBX2">
|
||||
<Properties>
|
||||
<Content name="MeshId"><null></null></Content>
|
||||
<token name="MeshType">0</token>
|
||||
<string name="Name">Mesh</string>
|
||||
<Vector3 name="Scale">
|
||||
<X>1.25</X>
|
||||
<Y>1.25</Y>
|
||||
<Z>1.25</Z>
|
||||
</Vector3>
|
||||
<Content name="TextureId"><null></null></Content>
|
||||
<Vector3 name="VertexColor">
|
||||
<X>1</X>
|
||||
<Y>1</Y>
|
||||
<Z>1</Z>
|
||||
</Vector3>
|
||||
<bool name="archivable">true</bool>
|
||||
</Properties>
|
||||
</Item>
|
||||
<Item class="Decal" referent="RBX3">
|
||||
<Properties>
|
||||
<token name="Face">5</token>
|
||||
<string name="Name">face</string>
|
||||
<float name="Shiny">20</float>
|
||||
<float name="Specular">0</float>
|
||||
<Content name="Texture"><url>rbxasset://textures/face.png</url></Content>
|
||||
<bool name="archivable">true</bool>
|
||||
</Properties>
|
||||
</Item>
|
||||
</Item>
|
||||
<Item class="Part" referent="RBX4">
|
||||
<Properties>
|
||||
<bool name="Anchored">false</bool>
|
||||
<float name="BackParamA">-0.5</float>
|
||||
<float name="BackParamB">0.5</float>
|
||||
<token name="BackSurface">0</token>
|
||||
<token name="BackSurfaceInput">0</token>
|
||||
<float name="BottomParamA">-0.5</float>
|
||||
<float name="BottomParamB">0.5</float>
|
||||
<token name="BottomSurface">4</token>
|
||||
<token name="BottomSurfaceInput">0</token>
|
||||
<int name="BrickColor">23</int>
|
||||
<CoordinateFrame name="CFrame">
|
||||
<X>0</X>
|
||||
<Y>3</Y>
|
||||
<Z>25.5</Z>
|
||||
<R00>-1</R00>
|
||||
<R01>0</R01>
|
||||
<R02>-0</R02>
|
||||
<R10>-0</R10>
|
||||
<R11>1</R11>
|
||||
<R12>-0</R12>
|
||||
<R20>-0</R20>
|
||||
<R21>0</R21>
|
||||
<R22>-1</R22>
|
||||
</CoordinateFrame>
|
||||
<bool name="CanCollide">true</bool>
|
||||
<token name="Controller">0</token>
|
||||
<bool name="ControllerFlagShown">true</bool>
|
||||
<bool name="DraggingV1">false</bool>
|
||||
<float name="Elasticity">0.5</float>
|
||||
<token name="FormFactor">0</token>
|
||||
<float name="Friction">0.300000012</float>
|
||||
<float name="FrontParamA">-0.5</float>
|
||||
<float name="FrontParamB">0.5</float>
|
||||
<token name="FrontSurface">0</token>
|
||||
<token name="FrontSurfaceInput">0</token>
|
||||
<float name="LeftParamA">0</float>
|
||||
<float name="LeftParamB">0</float>
|
||||
<token name="LeftSurface">2</token>
|
||||
<token name="LeftSurfaceInput">0</token>
|
||||
<bool name="Locked">true</bool>
|
||||
<string name="Name">Torso</string>
|
||||
<float name="Reflectance">0</float>
|
||||
<float name="RightParamA">0</float>
|
||||
<float name="RightParamB">0</float>
|
||||
<token name="RightSurface">2</token>
|
||||
<token name="RightSurfaceInput">0</token>
|
||||
<Vector3 name="RotVelocity">
|
||||
<X>0</X>
|
||||
<Y>0</Y>
|
||||
<Z>0</Z>
|
||||
</Vector3>
|
||||
<float name="TopParamA">-0.5</float>
|
||||
<float name="TopParamB">0.5</float>
|
||||
<token name="TopSurface">3</token>
|
||||
<token name="TopSurfaceInput">0</token>
|
||||
<float name="Transparency">0</float>
|
||||
<Vector3 name="Velocity">
|
||||
<X>0</X>
|
||||
<Y>0</Y>
|
||||
<Z>0</Z>
|
||||
</Vector3>
|
||||
<bool name="archivable">true</bool>
|
||||
<token name="shape">1</token>
|
||||
<Vector3 name="size">
|
||||
<X>2</X>
|
||||
<Y>2</Y>
|
||||
<Z>1</Z>
|
||||
</Vector3>
|
||||
</Properties>
|
||||
<Item class="Decal" referent="RBX5">
|
||||
<Properties>
|
||||
<token name="Face">5</token>
|
||||
<string name="Name">roblox</string>
|
||||
<float name="Shiny">20</float>
|
||||
<float name="Specular">0</float>
|
||||
<Content name="Texture">
|
||||
<null></null>
|
||||
</Content>
|
||||
<bool name="archivable">true</bool>
|
||||
</Properties>
|
||||
</Item>
|
||||
</Item>
|
||||
<Item class="Part" referent="RBX6">
|
||||
<Properties>
|
||||
<bool name="Anchored">false</bool>
|
||||
<float name="BackParamA">-0.5</float>
|
||||
<float name="BackParamB">0.5</float>
|
||||
<token name="BackSurface">0</token>
|
||||
<token name="BackSurfaceInput">0</token>
|
||||
<float name="BottomParamA">-0.5</float>
|
||||
<float name="BottomParamB">0.5</float>
|
||||
<token name="BottomSurface">4</token>
|
||||
<token name="BottomSurfaceInput">0</token>
|
||||
<int name="BrickColor">24</int>
|
||||
<CoordinateFrame name="CFrame">
|
||||
<X>1.5</X>
|
||||
<Y>3</Y>
|
||||
<Z>25.5</Z>
|
||||
<R00>-1</R00>
|
||||
<R01>0</R01>
|
||||
<R02>0</R02>
|
||||
<R10>0</R10>
|
||||
<R11>1</R11>
|
||||
<R12>0</R12>
|
||||
<R20>0</R20>
|
||||
<R21>0</R21>
|
||||
<R22>-1</R22>
|
||||
</CoordinateFrame>
|
||||
<bool name="CanCollide">false</bool>
|
||||
<token name="Controller">0</token>
|
||||
<bool name="ControllerFlagShown">true</bool>
|
||||
<bool name="DraggingV1">false</bool>
|
||||
<float name="Elasticity">0.5</float>
|
||||
<token name="FormFactor">0</token>
|
||||
<float name="Friction">0.300000012</float>
|
||||
<float name="FrontParamA">-0.5</float>
|
||||
<float name="FrontParamB">0.5</float>
|
||||
<token name="FrontSurface">0</token>
|
||||
<token name="FrontSurfaceInput">0</token>
|
||||
<float name="LeftParamA">-0.5</float>
|
||||
<float name="LeftParamB">0.5</float>
|
||||
<token name="LeftSurface">0</token>
|
||||
<token name="LeftSurfaceInput">0</token>
|
||||
<bool name="Locked">true</bool>
|
||||
<string name="Name">Left Arm</string>
|
||||
<float name="Reflectance">0</float>
|
||||
<float name="RightParamA">-0.5</float>
|
||||
<float name="RightParamB">0.5</float>
|
||||
<token name="RightSurface">0</token>
|
||||
<token name="RightSurfaceInput">0</token>
|
||||
<Vector3 name="RotVelocity">
|
||||
<X>0</X>
|
||||
<Y>0</Y>
|
||||
<Z>0</Z>
|
||||
</Vector3>
|
||||
<float name="TopParamA">-0.5</float>
|
||||
<float name="TopParamB">0.5</float>
|
||||
<token name="TopSurface">3</token>
|
||||
<token name="TopSurfaceInput">0</token>
|
||||
<float name="Transparency">0</float>
|
||||
<Vector3 name="Velocity">
|
||||
<X>0</X>
|
||||
<Y>0</Y>
|
||||
<Z>0</Z>
|
||||
</Vector3>
|
||||
<bool name="archivable">true</bool>
|
||||
<token name="shape">1</token>
|
||||
<Vector3 name="size">
|
||||
<X>1</X>
|
||||
<Y>2</Y>
|
||||
<Z>1</Z>
|
||||
</Vector3>
|
||||
</Properties>
|
||||
</Item>
|
||||
<Item class="Part" referent="RBX7">
|
||||
<Properties>
|
||||
<bool name="Anchored">false</bool>
|
||||
<float name="BackParamA">-0.5</float>
|
||||
<float name="BackParamB">0.5</float>
|
||||
<token name="BackSurface">0</token>
|
||||
<token name="BackSurfaceInput">0</token>
|
||||
<float name="BottomParamA">-0.5</float>
|
||||
<float name="BottomParamB">0.5</float>
|
||||
<token name="BottomSurface">4</token>
|
||||
<token name="BottomSurfaceInput">0</token>
|
||||
<int name="BrickColor">24</int>
|
||||
<CoordinateFrame name="CFrame">
|
||||
<X>-1.5</X>
|
||||
<Y>3</Y>
|
||||
<Z>25.5</Z>
|
||||
<R00>-1</R00>
|
||||
<R01>0</R01>
|
||||
<R02>0</R02>
|
||||
<R10>0</R10>
|
||||
<R11>1</R11>
|
||||
<R12>0</R12>
|
||||
<R20>0</R20>
|
||||
<R21>0</R21>
|
||||
<R22>-1</R22>
|
||||
</CoordinateFrame>
|
||||
<bool name="CanCollide">false</bool>
|
||||
<token name="Controller">0</token>
|
||||
<bool name="ControllerFlagShown">true</bool>
|
||||
<bool name="DraggingV1">false</bool>
|
||||
<float name="Elasticity">0.5</float>
|
||||
<token name="FormFactor">0</token>
|
||||
<float name="Friction">0.300000012</float>
|
||||
<float name="FrontParamA">-0.5</float>
|
||||
<float name="FrontParamB">0.5</float>
|
||||
<token name="FrontSurface">0</token>
|
||||
<token name="FrontSurfaceInput">0</token>
|
||||
<float name="LeftParamA">-0.5</float>
|
||||
<float name="LeftParamB">0.5</float>
|
||||
<token name="LeftSurface">0</token>
|
||||
<token name="LeftSurfaceInput">0</token>
|
||||
<bool name="Locked">true</bool>
|
||||
<string name="Name">Right Arm</string>
|
||||
<float name="Reflectance">0</float>
|
||||
<float name="RightParamA">-0.5</float>
|
||||
<float name="RightParamB">0.5</float>
|
||||
<token name="RightSurface">0</token>
|
||||
<token name="RightSurfaceInput">0</token>
|
||||
<Vector3 name="RotVelocity">
|
||||
<X>0</X>
|
||||
<Y>0</Y>
|
||||
<Z>0</Z>
|
||||
</Vector3>
|
||||
<float name="TopParamA">-0.5</float>
|
||||
<float name="TopParamB">0.5</float>
|
||||
<token name="TopSurface">3</token>
|
||||
<token name="TopSurfaceInput">0</token>
|
||||
<float name="Transparency">0</float>
|
||||
<Vector3 name="Velocity">
|
||||
<X>0</X>
|
||||
<Y>0</Y>
|
||||
<Z>0</Z>
|
||||
</Vector3>
|
||||
<bool name="archivable">true</bool>
|
||||
<token name="shape">1</token>
|
||||
<Vector3 name="size">
|
||||
<X>1</X>
|
||||
<Y>2</Y>
|
||||
<Z>1</Z>
|
||||
</Vector3>
|
||||
</Properties>
|
||||
</Item>
|
||||
<Item class="Part" referent="RBX8">
|
||||
<Properties>
|
||||
<bool name="Anchored">false</bool>
|
||||
<float name="BackParamA">-0.5</float>
|
||||
<float name="BackParamB">0.5</float>
|
||||
<token name="BackSurface">0</token>
|
||||
<token name="BackSurfaceInput">0</token>
|
||||
<float name="BottomParamA">-0.5</float>
|
||||
<float name="BottomParamB">0.5</float>
|
||||
<token name="BottomSurface">0</token>
|
||||
<token name="BottomSurfaceInput">0</token>
|
||||
<int name="BrickColor">119</int>
|
||||
<CoordinateFrame name="CFrame">
|
||||
<X>0.5</X>
|
||||
<Y>1</Y>
|
||||
<Z>25.5</Z>
|
||||
<R00>-1</R00>
|
||||
<R01>0</R01>
|
||||
<R02>0</R02>
|
||||
<R10>0</R10>
|
||||
<R11>1</R11>
|
||||
<R12>0</R12>
|
||||
<R20>0</R20>
|
||||
<R21>0</R21>
|
||||
<R22>-1</R22>
|
||||
</CoordinateFrame>
|
||||
<bool name="CanCollide">false</bool>
|
||||
<token name="Controller">0</token>
|
||||
<bool name="ControllerFlagShown">true</bool>
|
||||
<bool name="DraggingV1">false</bool>
|
||||
<float name="Elasticity">0.5</float>
|
||||
<token name="FormFactor">0</token>
|
||||
<float name="Friction">0.300000012</float>
|
||||
<float name="FrontParamA">-0.5</float>
|
||||
<float name="FrontParamB">0.5</float>
|
||||
<token name="FrontSurface">0</token>
|
||||
<token name="FrontSurfaceInput">0</token>
|
||||
<float name="LeftParamA">-0.5</float>
|
||||
<float name="LeftParamB">0.5</float>
|
||||
<token name="LeftSurface">0</token>
|
||||
<token name="LeftSurfaceInput">0</token>
|
||||
<bool name="Locked">true</bool>
|
||||
<string name="Name">Left Leg</string>
|
||||
<float name="Reflectance">0</float>
|
||||
<float name="RightParamA">-0.5</float>
|
||||
<float name="RightParamB">0.5</float>
|
||||
<token name="RightSurface">0</token>
|
||||
<token name="RightSurfaceInput">0</token>
|
||||
<Vector3 name="RotVelocity">
|
||||
<X>0</X>
|
||||
<Y>0</Y>
|
||||
<Z>0</Z>
|
||||
</Vector3>
|
||||
<float name="TopParamA">-0.5</float>
|
||||
<float name="TopParamB">0.5</float>
|
||||
<token name="TopSurface">3</token>
|
||||
<token name="TopSurfaceInput">0</token>
|
||||
<float name="Transparency">0</float>
|
||||
<Vector3 name="Velocity">
|
||||
<X>0</X>
|
||||
<Y>0</Y>
|
||||
<Z>0</Z>
|
||||
</Vector3>
|
||||
<bool name="archivable">true</bool>
|
||||
<token name="shape">1</token>
|
||||
<Vector3 name="size">
|
||||
<X>1</X>
|
||||
<Y>2</Y>
|
||||
<Z>1</Z>
|
||||
</Vector3>
|
||||
</Properties>
|
||||
</Item>
|
||||
<Item class="Part" referent="RBX9">
|
||||
<Properties>
|
||||
<bool name="Anchored">false</bool>
|
||||
<float name="BackParamA">-0.5</float>
|
||||
<float name="BackParamB">0.5</float>
|
||||
<token name="BackSurface">0</token>
|
||||
<token name="BackSurfaceInput">0</token>
|
||||
<float name="BottomParamA">-0.5</float>
|
||||
<float name="BottomParamB">0.5</float>
|
||||
<token name="BottomSurface">0</token>
|
||||
<token name="BottomSurfaceInput">0</token>
|
||||
<int name="BrickColor">119</int>
|
||||
<CoordinateFrame name="CFrame">
|
||||
<X>-0.5</X>
|
||||
<Y>1</Y>
|
||||
<Z>25.5</Z>
|
||||
<R00>-1</R00>
|
||||
<R01>0</R01>
|
||||
<R02>0</R02>
|
||||
<R10>0</R10>
|
||||
<R11>1</R11>
|
||||
<R12>0</R12>
|
||||
<R20>0</R20>
|
||||
<R21>0</R21>
|
||||
<R22>-1</R22>
|
||||
</CoordinateFrame>
|
||||
<bool name="CanCollide">false</bool>
|
||||
<token name="Controller">0</token>
|
||||
<bool name="ControllerFlagShown">true</bool>
|
||||
<bool name="DraggingV1">false</bool>
|
||||
<float name="Elasticity">0.5</float>
|
||||
<token name="FormFactor">0</token>
|
||||
<float name="Friction">0.300000012</float>
|
||||
<float name="FrontParamA">-0.5</float>
|
||||
<float name="FrontParamB">0.5</float>
|
||||
<token name="FrontSurface">0</token>
|
||||
<token name="FrontSurfaceInput">0</token>
|
||||
<float name="LeftParamA">-0.5</float>
|
||||
<float name="LeftParamB">0.5</float>
|
||||
<token name="LeftSurface">0</token>
|
||||
<token name="LeftSurfaceInput">0</token>
|
||||
<bool name="Locked">true</bool>
|
||||
<string name="Name">Right Leg</string>
|
||||
<float name="Reflectance">0</float>
|
||||
<float name="RightParamA">-0.5</float>
|
||||
<float name="RightParamB">0.5</float>
|
||||
<token name="RightSurface">0</token>
|
||||
<token name="RightSurfaceInput">0</token>
|
||||
<Vector3 name="RotVelocity">
|
||||
<X>0</X>
|
||||
<Y>0</Y>
|
||||
<Z>0</Z>
|
||||
</Vector3>
|
||||
<float name="TopParamA">-0.5</float>
|
||||
<float name="TopParamB">0.5</float>
|
||||
<token name="TopSurface">3</token>
|
||||
<token name="TopSurfaceInput">0</token>
|
||||
<float name="Transparency">0</float>
|
||||
<Vector3 name="Velocity">
|
||||
<X>0</X>
|
||||
<Y>0</Y>
|
||||
<Z>0</Z>
|
||||
</Vector3>
|
||||
<bool name="archivable">true</bool>
|
||||
<token name="shape">1</token>
|
||||
<Vector3 name="size">
|
||||
<X>1</X>
|
||||
<Y>2</Y>
|
||||
<Z>1</Z>
|
||||
</Vector3>
|
||||
</Properties>
|
||||
</Item>
|
||||
<Item class="Humanoid" referent="RBX10">
|
||||
<Properties>
|
||||
<float name="Health">100</float>
|
||||
<bool name="Jump">false</bool>
|
||||
<float name="MaxHealth">100</float>
|
||||
<string name="Name">Humanoid</string>
|
||||
<bool name="Sit">false</bool>
|
||||
<Vector3 name="TargetPoint">
|
||||
<X>0</X>
|
||||
<Y>0</Y>
|
||||
<Z>0</Z>
|
||||
</Vector3>
|
||||
<Vector3 name="WalkDirection">
|
||||
<X>0</X>
|
||||
<Y>0</Y>
|
||||
<Z>0</Z>
|
||||
</Vector3>
|
||||
<float name="WalkRotationalVelocity">0</float>
|
||||
<Ref name="WalkToPart">null</Ref>
|
||||
<Vector3 name="WalkToPoint">
|
||||
<X>0</X>
|
||||
<Y>0</Y>
|
||||
<Z>0</Z>
|
||||
</Vector3>
|
||||
<bool name="archivable">true</bool>
|
||||
</Properties>
|
||||
</Item>
|
||||
<Item class="Part" referent="RBX11">
|
||||
<Properties>
|
||||
<bool name="Anchored">false</bool>
|
||||
<float name="BackParamA">-0.5</float>
|
||||
<float name="BackParamB">0.5</float>
|
||||
<token name="BackSurface">0</token>
|
||||
<token name="BackSurfaceInput">0</token>
|
||||
<float name="BottomParamA">-0.5</float>
|
||||
<float name="BottomParamB">0.5</float>
|
||||
<token name="BottomSurface">0</token>
|
||||
<token name="BottomSurfaceInput">0</token>
|
||||
<int name="BrickColor">23</int>
|
||||
<CoordinateFrame name="CFrame">
|
||||
<X>0</X>
|
||||
<Y>3</Y>
|
||||
<Z>25.5</Z>
|
||||
<R00>-1</R00>
|
||||
<R01>0</R01>
|
||||
<R02>-0</R02>
|
||||
<R10>-0</R10>
|
||||
<R11>1</R11>
|
||||
<R12>-0</R12>
|
||||
<R20>-0</R20>
|
||||
<R21>0</R21>
|
||||
<R22>-1</R22>
|
||||
</CoordinateFrame>
|
||||
<bool name="CanCollide">false</bool>
|
||||
<token name="Controller">0</token>
|
||||
<bool name="ControllerFlagShown">true</bool>
|
||||
<bool name="DraggingV1">false</bool>
|
||||
<float name="Elasticity">0.5</float>
|
||||
<token name="FormFactor">0</token>
|
||||
<float name="Friction">0.300000012</float>
|
||||
<float name="FrontParamA">-0.5</float>
|
||||
<float name="FrontParamB">0.5</float>
|
||||
<token name="FrontSurface">0</token>
|
||||
<token name="FrontSurfaceInput">0</token>
|
||||
<float name="LeftParamA">0</float>
|
||||
<float name="LeftParamB">0</float>
|
||||
<token name="LeftSurface">0</token>
|
||||
<token name="LeftSurfaceInput">0</token>
|
||||
<bool name="Locked">true</bool>
|
||||
<string name="Name">HumanoidRootPart</string>
|
||||
<float name="Reflectance">0</float>
|
||||
<float name="RightParamA">0</float>
|
||||
<float name="RightParamB">0</float>
|
||||
<token name="RightSurface">0</token>
|
||||
<token name="RightSurfaceInput">0</token>
|
||||
<Vector3 name="RotVelocity">
|
||||
<X>0</X>
|
||||
<Y>0</Y>
|
||||
<Z>0</Z>
|
||||
</Vector3>
|
||||
<float name="TopParamA">-0.5</float>
|
||||
<float name="TopParamB">0.5</float>
|
||||
<token name="TopSurface">0</token>
|
||||
<token name="TopSurfaceInput">0</token>
|
||||
<float name="Transparency">1</float>
|
||||
<Vector3 name="Velocity">
|
||||
<X>0</X>
|
||||
<Y>0</Y>
|
||||
<Z>0</Z>
|
||||
</Vector3>
|
||||
<bool name="archivable">true</bool>
|
||||
<token name="shape">1</token>
|
||||
<Vector3 name="size">
|
||||
<X>2</X>
|
||||
<Y>2</Y>
|
||||
<Z>1</Z>
|
||||
</Vector3>
|
||||
</Properties>
|
||||
</Item>
|
||||
</Item>
|
||||
</roblox>
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
Binary file not shown.
@@ -0,0 +1,356 @@
|
||||
a 6>
|
||||
4=:90
|
||||
4;499,
|
||||
4; &
|
||||
4&=:90
|
||||
4&=:90&
|
||||
4&&=:90
|
||||
4&&=:90&
|
||||
4&&><&&0'
|
||||
704&!<49<!,
|
||||
704&!<9<!,
|
||||
70&!<49<!,
|
||||
7<6=
|
||||
7<6=0&
|
||||
7<6!=
|
||||
7<!6
|
||||
7<!6=
|
||||
7<!6=0'
|
||||
7<!6=0'&
|
||||
7<!6=0&
|
||||
7<!6=<;
|
||||
7<!6=<;2
|
||||
7<!6=&
|
||||
79:"?:7
|
||||
79:"?:7&
|
||||
7:;0'
|
||||
7 99&=<!
|
||||
7 9&=<!
|
||||
7 !!3 6>
|
||||
7 !!3 6>0'
|
||||
7 !!=4<'
|
||||
7 !!&0-
|
||||
7 !!&06&
|
||||
7 !!&0>&
|
||||
6=<;>
|
||||
6<'690?0'>
|
||||
69<!
|
||||
6e;1e8&
|
||||
6:;1e8&
|
||||
6e;1:8&
|
||||
6:6>
|
||||
6:6>{
|
||||
6:6>&
|
||||
6:6>& 6>
|
||||
6:6>& 6>01
|
||||
6:6>& 6>0'
|
||||
6:6>& 6><;2
|
||||
6:6>& 6>&
|
||||
6:>
|
||||
6:;1:8
|
||||
6:;1:8&
|
||||
6::!0'
|
||||
6 8
|
||||
6 880'
|
||||
6 88<;2
|
||||
6 8&
|
||||
6 8&=:!
|
||||
6 8&=:!
|
||||
6 ;<9<;2 &
|
||||
6 ;<99<;2 &
|
||||
6 ;;<9<;2 &
|
||||
6 ;!
|
||||
6 ;!9<6>
|
||||
6 ;!9<6>0'
|
||||
6 ;!9<6><;2
|
||||
6 ;!&
|
||||
6,70'3 6
|
||||
6,70'3 6>
|
||||
6,70'3 6>01
|
||||
6,70'3 6>0'
|
||||
6,70'3 6>0'&
|
||||
6,70'3 6><;2
|
||||
1<6>
|
||||
1<6>&
|
||||
1<>0
|
||||
1<91:
|
||||
1<91:
|
||||
1<91:&
|
||||
1<91:&
|
||||
1<%&=<!
|
||||
1: 6=0
|
||||
1: 6=0742
|
||||
1,>0
|
||||
0?46 94!0
|
||||
0?46 94!01
|
||||
0?46 94!0&
|
||||
0?46 94!<;2
|
||||
0?46 94!<;2&
|
||||
0?46 94!<:;
|
||||
30'
|
||||
3<;2
|
||||
342
|
||||
3420!
|
||||
3422
|
||||
34220!
|
||||
3422<;2
|
||||
3422<!
|
||||
3422:!
|
||||
3422&
|
||||
342<!
|
||||
342:!
|
||||
342:!&
|
||||
342&
|
||||
34%%0'
|
||||
34%%<;2
|
||||
34%%<;
|
||||
34">
|
||||
36><;2
|
||||
3094!<:
|
||||
3094!<:
|
||||
30994!<:
|
||||
3<;20'74;2
|
||||
3<;20'3 6>
|
||||
3<;20'3 6>01
|
||||
3<;20'3 6>0'
|
||||
3<;20'3 6>0'&
|
||||
3<;20'3 6><;2
|
||||
3<;20'3 6>&
|
||||
3<&!3 6>
|
||||
3<&!3 6>01
|
||||
3<&!3 6>0'
|
||||
3<&!3 6>0'&
|
||||
3<&!3 6><;2
|
||||
3<&!3 6><;2&
|
||||
3<&!3 6>&
|
||||
3:6><;2
|
||||
3 6>
|
||||
3 6>t
|
||||
3 6>0
|
||||
3 6>01
|
||||
3 6>0;
|
||||
3 6>0'
|
||||
3 6>0'&
|
||||
3 6><;
|
||||
3 6><;2
|
||||
3 6><;2&
|
||||
3 6>>>>>>>>>>>>>>>>>
|
||||
3 6>80
|
||||
3 6>&
|
||||
3 6>!4'1
|
||||
3 6>,:
|
||||
3 >
|
||||
3 >0'
|
||||
3 ><;
|
||||
3 ><;2
|
||||
3 >>
|
||||
3 >&
|
||||
3 '7 '20'
|
||||
24;274;2
|
||||
24;274;201
|
||||
24;274;2&
|
||||
24,
|
||||
24,&0-
|
||||
24/:;24&
|
||||
24/:;20'&
|
||||
2:;41&
|
||||
2::>
|
||||
=4'16:'0&0-
|
||||
=4'1:;
|
||||
=:8:
|
||||
=::>0'
|
||||
=:';<0&!
|
||||
=:';,
|
||||
=:!&0-
|
||||
= 8%
|
||||
?46>4&&
|
||||
?46><;2:33
|
||||
?46>:33
|
||||
?46>x:33
|
||||
?4%
|
||||
?0'>x:33
|
||||
?0"
|
||||
?<&8
|
||||
?</
|
||||
?</8
|
||||
?<//
|
||||
><>0
|
||||
>>>
|
||||
>:6>
|
||||
>:;1 8
|
||||
>:;1 8&
|
||||
> 8
|
||||
> 880'
|
||||
> 88<;2
|
||||
> 8&
|
||||
> ;<9<;2 &
|
||||
90&7<4;
|
||||
90&7:
|
||||
9 &!<;2
|
||||
80'10
|
||||
8:90&!
|
||||
8:!=43 6>
|
||||
8:!=43 6>
|
||||
8:!=43 6>4
|
||||
8:!=43 6>4
|
||||
8:!=43 6>4&
|
||||
8:!=43 6>4&
|
||||
8:!=43 6>4/
|
||||
8:!=43 6>4/
|
||||
8:!=43 6>01
|
||||
8:!=43 6>01
|
||||
8:!=43 6>0'
|
||||
8:!=43 6>0'
|
||||
8:!=43 6>0'&
|
||||
8:!=43 6>0'&
|
||||
8:!=43 6><;
|
||||
8:!=43 6><;
|
||||
8:!=43 6><;2
|
||||
8:!=43 6><;2
|
||||
8:!=43 6><;2&
|
||||
8:!=43 6><;2&
|
||||
8:!=43 6>&
|
||||
8:!=43 6>&
|
||||
8:!=0'3 6>
|
||||
8:!=0'3 6>
|
||||
8:!=0'3 6>01
|
||||
8:!=0'3 6>0'
|
||||
8:!=0'3 6>0'
|
||||
8:!=0'3 6>0'&
|
||||
8:!=0'3 6>0'&
|
||||
8:!=0'3 6><;
|
||||
8:!=0'3 6><;
|
||||
8:!=0'3 6><;2
|
||||
8:!=0'3 6><;2
|
||||
8:!=0'3 6><;2&
|
||||
8:!=0'3 6><;2&
|
||||
8:!=0'3 6>&
|
||||
8:!=0'3 6>&
|
||||
;4/<
|
||||
;<20'
|
||||
;<224
|
||||
;<224&
|
||||
;<220'
|
||||
;<220'
|
||||
;<220'&
|
||||
;<220'&
|
||||
:'24&<8
|
||||
:'24&<8&
|
||||
:'24&8
|
||||
:'24&8&
|
||||
%06>0'
|
||||
%0;<&
|
||||
%=:;0&0-
|
||||
%= >01
|
||||
%= ><;2
|
||||
%= >>01
|
||||
%= >><;2
|
||||
%= >
|
||||
%= >&
|
||||
%= $
|
||||
%<8%
|
||||
%<&&:33
|
||||
%:';
|
||||
%:';:
|
||||
%:';:2'4%=,
|
||||
%:';:&
|
||||
%'<6>
|
||||
%'<6>&
|
||||
%':&!<! !0
|
||||
% &<0&
|
||||
% &&<0&
|
||||
% &&,
|
||||
% &&,&
|
||||
% &,
|
||||
% &,&
|
||||
$ 00'
|
||||
'%0
|
||||
'%01
|
||||
'4%0
|
||||
'4%01
|
||||
&6=9:;2
|
||||
&0-
|
||||
&0--
|
||||
&0---
|
||||
&=<!3 99
|
||||
&=<!<;2
|
||||
&=<!<;2&
|
||||
&=<!&
|
||||
&=<!!01
|
||||
&=<!!0'
|
||||
&=<!!0'&
|
||||
&=<!!<;2
|
||||
&=<!!<;2&
|
||||
&=<!!,
|
||||
&=<!,
|
||||
&9 !
|
||||
&9 !&
|
||||
&8 !
|
||||
&;4!6=
|
||||
&:1:8<!0
|
||||
&:1:8</0
|
||||
&:1:8</0'
|
||||
&:1:8,
|
||||
&% ;>
|
||||
& 6>
|
||||
!'48%
|
||||
!"4!
|
||||
#42<;4
|
||||
#<7'4!:'
|
||||
"4;2
|
||||
"4;>
|
||||
"4;>0'
|
||||
"0!746>
|
||||
"=:'0
|
||||
":%
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Binary file not shown.
@@ -0,0 +1,89 @@
|
||||
# Windows - DINPUT
|
||||
8f0e1200000000000000504944564944,Acme,platform:Windows,x:b2,a:b0,b:b1,y:b3,back:b8,start:b9,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b5,rightshoulder:b6,righttrigger:b7,leftstick:b10,rightstick:b11,leftx:a0,lefty:a1,rightx:a3,righty:a2,
|
||||
341a3608000000000000504944564944,Afterglow PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,
|
||||
ffff0000000000000000504944564944,GameStop Gamepad,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Windows,
|
||||
6d0416c2000000000000504944564944,Generic DirectInput Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,
|
||||
6d0419c2000000000000504944564944,Logitech F710 Gamepad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,
|
||||
88880803000000000000504944564944,PS3 Controller,a:b2,b:b1,back:b8,dpdown:h0.8,dpleft:h0.4,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b9,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:b7,rightx:a3,righty:a4,start:b11,x:b0,y:b3,platform:Windows,
|
||||
4c056802000000000000504944564944,PS3 Controller,a:b14,b:b13,back:b0,dpdown:b6,dpleft:b7,dpright:b5,dpup:b4,guide:b16,leftshoulder:b10,leftstick:b1,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b11,rightstick:b2,righttrigger:b9,rightx:a2,righty:a3,start:b3,x:b15,y:b12,platform:Windows,
|
||||
25090500000000000000504944564944,PS3 DualShock,a:b2,b:b1,back:b9,dpdown:h0.8,dpleft:h0.4,dpright:h0.2,dpup:h0.1,guide:,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a2,righty:a3,start:b8,x:b0,y:b3,platform:Windows,
|
||||
4c05c405000000000000504944564944,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows,
|
||||
6d0418c2000000000000504944564944,Logitech RumblePad 2 USB,platform:Windows,x:b0,a:b1,b:b2,y:b3,back:b8,start:b9,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,leftstick:b10,rightstick:b11,leftx:a0,lefty:a1,rightx:a2,righty:a3,
|
||||
36280100000000000000504944564944,OUYA Controller,platform:Windows,a:b0,b:b3,y:b2,x:b1,start:b14,guide:b15,leftstick:b6,rightstick:b7,leftshoulder:b4,rightshoulder:b5,dpup:b8,dpleft:b10,dpdown:b9,dpright:b11,leftx:a0,lefty:a1,rightx:a3,righty:a4,lefttrigger:b12,righttrigger:b13,
|
||||
4f0400b3000000000000504944564944,Thrustmaster Firestorm Dual Power,a:b0,b:b2,y:b3,x:b1,start:b10,guide:b8,back:b9,leftstick:b11,rightstick:b12,leftshoulder:b4,rightshoulder:b6,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:b5,righttrigger:b7,platform:Windows,
|
||||
00f00300000000000000504944564944,RetroUSB.com RetroPad,a:b1,b:b5,x:b0,y:b4,back:b2,start:b3,leftshoulder:b6,rightshoulder:b7,leftx:a0,lefty:a1,platform:Windows,
|
||||
00f0f100000000000000504944564944,RetroUSB.com Super RetroPort,a:b1,b:b5,x:b0,y:b4,back:b2,start:b3,leftshoulder:b6,rightshoulder:b7,leftx:a0,lefty:a1,platform:Windows,
|
||||
28040140000000000000504944564944,GamePad Pro USB,platform:Windows,a:b1,b:b2,x:b0,y:b3,back:b8,start:b9,leftshoulder:b4,rightshoulder:b5,leftx:a0,lefty:a1,lefttrigger:b6,righttrigger:b7,
|
||||
ff113133000000000000504944564944,SVEN X-PAD,platform:Windows,a:b2,b:b3,y:b1,x:b0,start:b5,back:b4,leftshoulder:b6,rightshoulder:b7,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftx:a0,lefty:a1,rightx:a2,righty:a4,lefttrigger:b8,righttrigger:b9,
|
||||
8f0e0300000000000000504944564944,Piranha xtreme,platform:Windows,x:b3,a:b2,b:b1,y:b0,back:b8,start:b9,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,dpup:h0.1,leftshoulder:b6,lefttrigger:b4,rightshoulder:b7,righttrigger:b5,leftstick:b10,rightstick:b11,leftx:a0,lefty:a1,rightx:a3,righty:a2,
|
||||
8f0e0d31000000000000504944564944,Multilaser JS071 USB,platform:Windows,a:b1,b:b2,y:b3,x:b0,start:b9,back:b8,leftstick:b10,rightstick:b11,leftshoulder:b4,rightshoulder:b5,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:b6,righttrigger:b7,
|
||||
10080300000000000000504944564944,PS2 USB,platform:Windows,a:b2,b:b1,y:b0,x:b3,start:b9,back:b8,leftstick:b10,rightstick:b11,leftshoulder:b6,rightshoulder:b7,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftx:a0,lefty:a1,rightx:a4,righty:a2,lefttrigger:b4,righttrigger:b5,
|
||||
79000600000000000000504944564944,G-Shark GS-GP702,a:b2,b:b1,x:b3,y:b0,back:b8,start:b9,leftstick:b10,rightstick:b11,leftshoulder:b4,rightshoulder:b5,dpup:h0.1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,leftx:a0,lefty:a1,rightx:a2,righty:a4,lefttrigger:b6,righttrigger:b7,platform:Windows,
|
||||
4b12014d000000000000504944564944,NYKO AIRFLO,a:b0,b:b1,x:b2,y:b3,back:b8,guide:b10,start:b9,leftstick:a0,rightstick:a2,leftshoulder:a3,rightshoulder:b5,dpup:h0.1,dpdown:h0.0,dpleft:h0.8,dpright:h0.2,leftx:h0.6,lefty:h0.12,rightx:h0.9,righty:h0.4,lefttrigger:b6,righttrigger:b7,platform:Windows,
|
||||
d6206dca000000000000504944564944,PowerA Pro Ex,a:b1,b:b2,x:b0,y:b3,back:b8,guide:b12,start:b9,leftstick:b10,rightstick:b11,leftshoulder:b4,rightshoulder:b5,dpup:h0.1,dpdown:h0.0,dpleft:h0.8,dpright:h0.2,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:b6,righttrigger:b7,platform:Windows,
|
||||
a3060cff000000000000504944564944,Saitek P2500,a:b2,b:b3,y:b1,x:b0,start:b4,guide:b10,back:b5,leftstick:b8,rightstick:b9,leftshoulder:b6,rightshoulder:b7,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftx:a0,lefty:a1,rightx:a2,righty:a3,platform:Windows,
|
||||
8f0e0300000000000000504944564944,Trust GTX 28,a:b2,b:b1,y:b0,x:b3,start:b9,back:b8,leftstick:b10,rightstick:b11,leftshoulder:b4,rightshoulder:b5,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:b6,righttrigger:b7,platform:Windows,
|
||||
4f0415b3000000000000504944564944,Thrustmaster Dual Analog 3.2,platform:Windows,x:b1,a:b0,b:b2,y:b3,back:b8,start:b9,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b5,rightshoulder:b6,righttrigger:b7,leftstick:b10,rightstick:b11,leftx:a0,lefty:a1,rightx:a2,righty:a3,
|
||||
|
||||
# OS X
|
||||
0500000047532047616d657061640000,GameStop Gamepad,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Mac OS X,
|
||||
6d0400000000000016c2000000000000,Logitech F310 Gamepad (DInput),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X,
|
||||
6d0400000000000018c2000000000000,Logitech F510 Gamepad (DInput),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X,
|
||||
6d040000000000001fc2000000000000,Logitech F710 Gamepad (XInput),a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b8,x:b2,y:b3,platform:Mac OS X,
|
||||
6d0400000000000019c2000000000000,Logitech Wireless Gamepad (DInput),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X,
|
||||
4c050000000000006802000000000000,PS3 Controller,a:b14,b:b13,back:b0,dpdown:b6,dpleft:b7,dpright:b5,dpup:b4,guide:b16,leftshoulder:b10,leftstick:b1,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b11,rightstick:b2,righttrigger:b9,rightx:a2,righty:a3,start:b3,x:b15,y:b12,platform:Mac OS X,
|
||||
4c05000000000000c405000000000000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,Platform:Mac OS X,
|
||||
5e040000000000008e02000000000000,X360 Controller,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b8,x:b2,y:b3,platform:Mac OS X,
|
||||
891600000000000000fd000000000000,Razer Onza Tournament,a:b0,b:b1,y:b3,x:b2,start:b8,guide:b10,back:b9,leftstick:b6,rightstick:b7,leftshoulder:b4,rightshoulder:b5,dpup:b11,dpleft:b13,dpdown:b12,dpright:b14,leftx:a0,lefty:a1,rightx:a3,righty:a4,lefttrigger:a2,righttrigger:a5,platform:Mac OS X,
|
||||
4f0400000000000000b3000000000000,Thrustmaster Firestorm Dual Power,a:b0,b:b2,y:b3,x:b1,start:b10,guide:b8,back:b9,leftstick:b11,rightstick:,leftshoulder:b4,rightshoulder:b6,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:b5,righttrigger:b7,platform:Mac OS X,
|
||||
8f0e0000000000000300000000000000,Piranha xtreme,platform:Mac OS X,x:b3,a:b2,b:b1,y:b0,back:b8,start:b9,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,dpup:h0.1,leftshoulder:b6,lefttrigger:b4,rightshoulder:b7,righttrigger:b5,leftstick:b10,rightstick:b11,leftx:a0,lefty:a1,rightx:a3,righty:a2,
|
||||
0d0f0000000000004d00000000000000,HORI Gem Pad 3,platform:Mac OS X,a:b1,b:b2,y:b3,x:b0,start:b9,guide:b12,back:b8,leftstick:b10,rightstick:b11,leftshoulder:b4,rightshoulder:b5,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:b6,righttrigger:b7,
|
||||
79000000000000000600000000000000,G-Shark GP-702,a:b2,b:b1,x:b3,y:b0,back:b8,start:b9,leftstick:b10,rightstick:b11,leftshoulder:b4,rightshoulder:b5,dpup:h0.1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,leftx:a0,lefty:a1,rightx:a3,righty:a4,lefttrigger:b6,righttrigger:b7,platform:Mac OS X,
|
||||
4f0400000000000015b3000000000000,Thrustmaster Dual Analog 3.2,platform:Mac OS X,x:b1,a:b0,b:b2,y:b3,back:b8,start:b9,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b5,rightshoulder:b6,righttrigger:b7,leftstick:b10,rightstick:b11,leftx:a0,lefty:a1,rightx:a2,righty:a3,
|
||||
|
||||
# Linux
|
||||
0500000047532047616d657061640000,GameStop Gamepad,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Linux,
|
||||
03000000ba2200002010000001010000,Jess Technology USB Game Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b3,y:b0,platform:Linux,
|
||||
030000006d04000019c2000010010000,Logitech Cordless RumblePad 2,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux,
|
||||
030000006d0400001dc2000014400000,Logitech F310 Gamepad (XInput),a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,
|
||||
030000006d0400001ec2000020200000,Logitech F510 Gamepad (XInput),a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,
|
||||
030000006d04000019c2000011010000,Logitech F710 Gamepad (DInput),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux,
|
||||
030000006d0400001fc2000005030000,Logitech F710 Gamepad (XInput),a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,
|
||||
030000004c0500006802000011010000,PS3 Controller,a:b14,b:b13,back:b0,dpdown:b6,dpleft:b7,dpright:b5,dpup:b4,guide:b16,leftshoulder:b10,leftstick:b1,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b11,rightstick:b2,righttrigger:b9,rightx:a2,righty:a3,start:b3,x:b15,y:b12,platform:Linux,
|
||||
030000004c050000c405000011010000,Sony DualShock 4,a:b1,b:b2,y:b3,x:b0,start:b9,guide:b12,back:b8,leftstick:b10,rightstick:b11,leftshoulder:b4,rightshoulder:b5,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftx:a0,lefty:a1,rightx:a2,righty:a5,lefttrigger:b6,righttrigger:b7,platform:Linux,
|
||||
03000000de280000ff11000001000000,Valve Streaming Gamepad,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,
|
||||
030000005e0400008e02000014010000,X360 Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,
|
||||
030000005e0400008e02000010010000,X360 Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,
|
||||
030000005e0400001907000000010000,X360 Wireless Controller,a:b0,b:b1,back:b6,dpdown:b14,dpleft:b11,dpright:b12,dpup:b13,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,
|
||||
03000000100800000100000010010000,Twin USB PS2 Adapter,a:b2,b:b1,y:b0,x:b3,start:b9,guide:,back:b8,leftstick:b10,rightstick:b11,leftshoulder:b6,rightshoulder:b7,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftx:a0,lefty:a1,rightx:a3,righty:a2,lefttrigger:b4,righttrigger:b5,platform:Linux,
|
||||
03000000a306000023f6000011010000,Saitek Cyborg V.1 Game Pad,a:b1,b:b2,y:b3,x:b0,start:b9,guide:b12,back:b8,leftstick:b10,rightstick:b11,leftshoulder:b4,rightshoulder:b5,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftx:a0,lefty:a1,rightx:a2,righty:a4,lefttrigger:b6,righttrigger:b7,platform:Linux,
|
||||
030000004f04000020b3000010010000,Thrustmaster 2 in 1 DT,a:b0,b:b2,y:b3,x:b1,start:b9,guide:,back:b8,leftstick:b10,rightstick:b11,leftshoulder:b4,rightshoulder:b6,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:b5,righttrigger:b7,platform:Linux,
|
||||
030000004f04000023b3000000010000,Thrustmaster Dual Trigger 3-in-1,platform:Linux,x:b0,a:b1,b:b2,y:b3,back:b8,start:b9,dpleft:h0.8,dpdown:h0.0,dpdown:h0.4,dpright:h0.0,dpright:h0.2,dpup:h0.0,dpup:h0.1,leftshoulder:h0.0,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,leftstick:b10,rightstick:b11,leftx:a0,lefty:a1,rightx:a2,righty:a5,
|
||||
030000008f0e00000300000010010000,GreenAsia Inc. USB Joystick ,platform:Linux,x:b3,a:b2,b:b1,y:b0,back:b8,start:b9,dpleft:h0.8,dpdown:h0.0,dpdown:h0.4,dpright:h0.0,dpright:h0.2,dpup:h0.0,dpup:h0.1,leftshoulder:h0.0,leftshoulder:b6,lefttrigger:b4,rightshoulder:b7,righttrigger:b5,leftstick:b10,rightstick:b11,leftx:a0,lefty:a1,rightx:a3,righty:a2,
|
||||
030000008f0e00001200000010010000,GreenAsia Inc. USB Joystick ,platform:Linux,x:b2,a:b0,b:b1,y:b3,back:b8,start:b9,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b5,rightshoulder:b6,righttrigger:b7,leftstick:b10,rightstick:b11,leftx:a0,lefty:a1,rightx:a3,righty:a2,
|
||||
030000005e0400009102000007010000,X360 Wireless Controller,a:b0,b:b1,y:b3,x:b2,start:b7,guide:b8,back:b6,leftstick:b9,rightstick:b10,leftshoulder:b4,rightshoulder:b5,dpup:b13,dpleft:b11,dpdown:b14,dpright:b12,leftx:a0,lefty:a1,rightx:a3,righty:a4,lefttrigger:a2,righttrigger:a5,platform:Linux,
|
||||
030000006d04000016c2000010010000,Logitech Logitech Dual Action,platform:Linux,x:b0,a:b1,b:b2,y:b3,back:b8,start:b9,dpleft:h0.8,dpdown:h0.0,dpdown:h0.4,dpright:h0.0,dpright:h0.2,dpup:h0.0,dpup:h0.1,leftshoulder:h0.0,dpup:h0.1,leftshoulder:h0.0,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,leftstick:b10,rightstick:b11,leftx:a0,lefty:a1,rightx:a2,righty:a3,
|
||||
03000000260900008888000000010000,GameCube {WiseGroup USB box},a:b0,b:b2,y:b3,x:b1,start:b7,leftshoulder:,rightshoulder:b6,dpup:h0.1,dpleft:h0.8,rightstick:,dpdown:h0.4,dpright:h0.2,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:a4,righttrigger:a5,platform:Linux,
|
||||
030000006d04000011c2000010010000,Logitech WingMan Cordless RumblePad,a:b0,b:b1,y:b4,x:b3,start:b8,guide:b5,back:b2,leftshoulder:b6,rightshoulder:b7,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftx:a0,lefty:a1,rightx:a3,righty:a4,lefttrigger:b9,righttrigger:b10,platform:Linux,
|
||||
030000006d04000018c2000010010000,Logitech Logitech RumblePad 2 USB,platform:Linux,x:b0,a:b1,b:b2,y:b3,back:b8,start:b9,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,leftstick:b10,rightstick:b11,leftx:a0,lefty:a1,rightx:a2,righty:a3,
|
||||
05000000d6200000ad0d000001000000,Moga Pro,platform:Linux,a:b0,b:b1,y:b3,x:b2,start:b6,leftstick:b7,rightstick:b8,leftshoulder:b4,rightshoulder:b5,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:a5,righttrigger:a4,
|
||||
030000004f04000009d0000000010000,Thrustmaster Run N Drive Wireless PS3,platform:Linux,a:b1,b:b2,x:b0,y:b3,start:b9,guide:b12,back:b8,leftstick:b10,rightstick:b11,leftshoulder:b4,rightshoulder:b5,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:b6,righttrigger:b7,
|
||||
030000004f04000008d0000000010000,Thrustmaster Run N Drive Wireless,platform:Linux,a:b1,b:b2,x:b0,y:b3,start:b9,back:b8,leftstick:b10,rightstick:b11,leftshoulder:b4,rightshoulder:b5,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftx:a0,lefty:a1,rightx:a2,righty:a5,lefttrigger:b6,righttrigger:b7,
|
||||
0300000000f000000300000000010000,RetroUSB.com RetroPad,a:b1,b:b5,x:b0,y:b4,back:b2,start:b3,leftshoulder:b6,rightshoulder:b7,leftx:a0,lefty:a1,platform:Linux,
|
||||
0300000000f00000f100000000010000,RetroUSB.com Super RetroPort,a:b1,b:b5,x:b0,y:b4,back:b2,start:b3,leftshoulder:b6,rightshoulder:b7,leftx:a0,lefty:a1,platform:Linux,
|
||||
030000006f0e00001f01000000010000,Generic X-Box pad,platform:Linux,x:b2,a:b0,b:b1,y:b3,back:b6,guide:b8,start:b7,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:a2,rightshoulder:b5,righttrigger:a5,leftstick:b9,rightstick:b10,leftx:a0,lefty:a1,rightx:a3,righty:a4,
|
||||
03000000280400000140000000010000,Gravis GamePad Pro USB ,platform:Linux,x:b0,a:b1,b:b2,y:b3,back:b8,start:b9,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,leftx:a0,lefty:a1,
|
||||
030000005e0400008902000021010000,Microsoft X-Box pad v2 (US),platform:Linux,x:b3,a:b0,b:b1,y:b4,back:b6,start:b7,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,dpup:h0.1,leftshoulder:b5,lefttrigger:a2,rightshoulder:b2,righttrigger:a5,leftstick:b8,rightstick:b9,leftx:a0,lefty:a1,rightx:a3,righty:a4,
|
||||
030000006f0e00001e01000011010000,Rock Candy Gamepad for PS3,platform:Linux,a:b1,b:b2,x:b0,y:b3,back:b8,start:b9,guide:b12,leftshoulder:b4,rightshoulder:b5,leftstick:b10,rightstick:b11,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:b6,righttrigger:b7,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,
|
||||
03000000250900000500000000010000,Sony PS2 pad with SmartJoy adapter,platform:Linux,a:b2,b:b1,y:b0,x:b3,start:b8,back:b9,leftstick:b10,rightstick:b11,leftshoulder:b6,rightshoulder:b7,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:b4,righttrigger:b5,
|
||||
030000008916000000fd000024010000,Razer Onza Tournament,a:b0,b:b1,y:b3,x:b2,start:b7,guide:b8,back:b6,leftstick:b9,rightstick:b10,leftshoulder:b4,rightshoulder:b5,dpup:b13,dpleft:b11,dpdown:b14,dpright:b12,leftx:a0,lefty:a1,rightx:a3,righty:a4,lefttrigger:a2,righttrigger:a5,platform:Linux,
|
||||
030000004f04000000b3000010010000,Thrustmaster Firestorm Dual Power,a:b0,b:b2,y:b3,x:b1,start:b10,guide:b8,back:b9,leftstick:b11,rightstick:b12,leftshoulder:b4,rightshoulder:b6,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:b5,righttrigger:b7,platform:Linux,
|
||||
03000000ad1b000001f5000033050000,Hori Pad EX Turbo 2,a:b0,b:b1,y:b3,x:b2,start:b7,guide:b8,back:b6,leftstick:b9,rightstick:b10,leftshoulder:b4,rightshoulder:b5,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftx:a0,lefty:a1,rightx:a3,righty:a4,lefttrigger:a2,righttrigger:a5,platform:Linux,
|
||||
050000004c050000c405000000010000,PS4 Controller (Bluetooth),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux,
|
||||
060000004c0500006802000000010000,PS3 Controller (Bluetooth),a:b14,b:b13,y:b12,x:b15,start:b3,guide:b16,back:b0,leftstick:b1,rightstick:b2,leftshoulder:b10,rightshoulder:b11,dpup:b4,dpleft:b7,dpdown:b6,dpright:b5,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:b8,righttrigger:b9,platform:Linux,
|
||||
03000000790000000600000010010000,DragonRise Inc. Generic USB Joystick ,platform:Linux,x:b3,a:b2,b:b1,y:b0,back:b8,start:b9,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,leftstick:b10,rightstick:b11,leftx:a0,lefty:a1,rightx:a3,righty:a4,
|
||||
03000000666600000488000000010000,Super Joy Box 5 Pro,platform:Linux,a:b2,b:b1,x:b3,y:b0,back:b9,start:b8,leftshoulder:b6,rightshoulder:b7,leftstick:b10,rightstick:b11,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:b4,righttrigger:b5,dpup:b12,dpleft:b15,dpdown:b14,dpright:b13,
|
||||
05000000362800000100000002010000,OUYA Game Controller,a:b0,b:b3,dpdown:b9,dpleft:b10,dpright:b11,dpup:b8,guide:b14,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,platform:Linux,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,x:b1,y:b2,
|
||||
05000000362800000100000003010000,OUYA Game Controller,a:b0,b:b3,dpdown:b9,dpleft:b10,dpright:b11,dpup:b8,guide:b14,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,platform:Linux,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,x:b1,y:b2,
|
||||
030000008916000001fd000024010000,Razer Onza Classic Edition,platform:Linux,x:b2,a:b0,b:b1,y:b3,back:b6,guide:b8,start:b7,dpleft:b11,dpdown:b14,dpright:b12,dpup:b13,leftshoulder:b4,lefttrigger:a2,rightshoulder:b5,righttrigger:a5,leftstick:b9,rightstick:b10,leftx:a0,lefty:a1,rightx:a3,righty:a4,
|
||||
030000005e040000d102000001010000,Microsoft X-Box One pad,platform:Linux,x:b2,a:b0,b:b1,y:b3,back:b6,guide:b8,start:b7,dpleft:h0.8,dpdown:h0.0,dpdown:h0.4,dpright:h0.0,dpright:h0.2,dpup:h0.0,dpup:h0.1,leftshoulder:h0.0,leftshoulder:b4,lefttrigger:a2,rightshoulder:b5,righttrigger:a5,leftstick:b9,rightstick:b10,leftx:a0,lefty:a1,rightx:a3,righty:a4,
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,296 @@
|
||||
<roblox xmlns:xmime="http://www.w3.org/2005/05/xmlmime" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://www.watrbx.wtf/roblox.xsd" version="4">
|
||||
<External>null</External>
|
||||
<External>nil</External>
|
||||
<Item class="Script" referent="RBX0">
|
||||
<Properties>
|
||||
<bool name="Disabled">false</bool>
|
||||
<Content name="LinkedSource"><null></null></Content>
|
||||
<string name="Name">Animate</string>
|
||||
<string name="Source">-- Now with exciting TeamColors HACK!
|
||||
|
||||
function waitForChild(parent, childName)
|
||||
local child = parent:findFirstChild(childName)
|
||||
if child then return child end
|
||||
while true do
|
||||
child = parent.ChildAdded:wait()
|
||||
if child.Name==childName then return child end
|
||||
end
|
||||
end
|
||||
|
||||
-- TEAM COLORS
|
||||
|
||||
|
||||
function onTeamChanged(player)
|
||||
|
||||
wait(1)
|
||||
|
||||
local char = player.Character
|
||||
if char == nil then return end
|
||||
|
||||
if player.Neutral then
|
||||
-- Replacing the current BodyColor object will force a reset
|
||||
local old = char:findFirstChild("Body Colors")
|
||||
if not old then return end
|
||||
old:clone().Parent = char
|
||||
old.Parent = nil
|
||||
else
|
||||
local head = char:findFirstChild("Head")
|
||||
local torso = char:findFirstChild("Torso")
|
||||
local left_arm = char:findFirstChild("Left Arm")
|
||||
local right_arm = char:findFirstChild("Right Arm")
|
||||
local left_leg = char:findFirstChild("Left Leg")
|
||||
local right_leg = char:findFirstChild("Right Leg")
|
||||
|
||||
if head then head.BrickColor = BrickColor.new(24) end
|
||||
if torso then torso.BrickColor = player.TeamColor end
|
||||
if left_arm then left_arm.BrickColor = BrickColor.new(26) end
|
||||
if right_arm then right_arm.BrickColor = BrickColor.new(26) end
|
||||
if left_leg then left_leg.BrickColor = BrickColor.new(26) end
|
||||
if right_leg then right_leg.BrickColor = BrickColor.new(26) end
|
||||
end
|
||||
end
|
||||
|
||||
function onPlayerPropChanged(property, player)
|
||||
if property == "Character" then
|
||||
onTeamChanged(player)
|
||||
end
|
||||
if property== "TeamColor" or property == "Neutral" then
|
||||
onTeamChanged(player)
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
local cPlayer = game.Players:GetPlayerFromCharacter(script.Parent)
|
||||
cPlayer.Changed:connect(function(property) onPlayerPropChanged(property, cPlayer) end )
|
||||
onTeamChanged(cPlayer)
|
||||
|
||||
|
||||
-- ANIMATION
|
||||
|
||||
-- declarations
|
||||
|
||||
local Figure = script.Parent
|
||||
local Torso = waitForChild(Figure, "Torso")
|
||||
local RightShoulder = waitForChild(Torso, "Right Shoulder")
|
||||
local LeftShoulder = waitForChild(Torso, "Left Shoulder")
|
||||
local RightHip = waitForChild(Torso, "Right Hip")
|
||||
local LeftHip = waitForChild(Torso, "Left Hip")
|
||||
local Neck = waitForChild(Torso, "Neck")
|
||||
local Humanoid = waitForChild(Figure, "Humanoid")
|
||||
local pose = "Standing"
|
||||
|
||||
local toolAnim = "None"
|
||||
local toolAnimTime = 0
|
||||
|
||||
-- functions
|
||||
|
||||
function onRunning(speed)
|
||||
if speed>0 then
|
||||
pose = "Running"
|
||||
else
|
||||
pose = "Standing"
|
||||
end
|
||||
end
|
||||
|
||||
function onDied()
|
||||
pose = "Dead"
|
||||
end
|
||||
|
||||
function onJumping()
|
||||
pose = "Jumping"
|
||||
end
|
||||
|
||||
function onClimbing()
|
||||
pose = "Climbing"
|
||||
end
|
||||
|
||||
function onGettingUp()
|
||||
pose = "GettingUp"
|
||||
end
|
||||
|
||||
function onFreeFall()
|
||||
pose = "FreeFall"
|
||||
end
|
||||
|
||||
function onFallingDown()
|
||||
pose = "FallingDown"
|
||||
end
|
||||
|
||||
function onSeated()
|
||||
pose = "Seated"
|
||||
end
|
||||
|
||||
function onPlatformStanding()
|
||||
pose = "PlatformStanding"
|
||||
end
|
||||
|
||||
function moveJump()
|
||||
RightShoulder.MaxVelocity = 0.5
|
||||
LeftShoulder.MaxVelocity = 0.5
|
||||
RightShoulder:SetDesiredAngle(3.14)
|
||||
LeftShoulder:SetDesiredAngle(-3.14)
|
||||
RightHip:SetDesiredAngle(0)
|
||||
LeftHip:SetDesiredAngle(0)
|
||||
end
|
||||
|
||||
|
||||
-- same as jump for now
|
||||
|
||||
function moveFreeFall()
|
||||
RightShoulder.MaxVelocity = 0.5
|
||||
LeftShoulder.MaxVelocity = 0.5
|
||||
RightShoulder:SetDesiredAngle(3.14)
|
||||
LeftShoulder:SetDesiredAngle(-3.14)
|
||||
RightHip:SetDesiredAngle(0)
|
||||
LeftHip:SetDesiredAngle(0)
|
||||
end
|
||||
|
||||
function moveSit()
|
||||
RightShoulder.MaxVelocity = 0.15
|
||||
LeftShoulder.MaxVelocity = 0.15
|
||||
RightShoulder:SetDesiredAngle(3.14 /2)
|
||||
LeftShoulder:SetDesiredAngle(-3.14 /2)
|
||||
RightHip:SetDesiredAngle(3.14 /2)
|
||||
LeftHip:SetDesiredAngle(-3.14 /2)
|
||||
end
|
||||
|
||||
function getTool()
|
||||
for _, kid in ipairs(Figure:GetChildren()) do
|
||||
if kid.className == "Tool" then return kid end
|
||||
end
|
||||
return nil
|
||||
end
|
||||
|
||||
function getToolAnim(tool)
|
||||
for _, c in ipairs(tool:GetChildren()) do
|
||||
if c.Name == "toolanim" and c.className == "StringValue" then
|
||||
return c
|
||||
end
|
||||
end
|
||||
return nil
|
||||
end
|
||||
|
||||
function animateTool()
|
||||
|
||||
if (toolAnim == "None") then
|
||||
RightShoulder:SetDesiredAngle(1.57)
|
||||
return
|
||||
end
|
||||
|
||||
if (toolAnim == "Slash") then
|
||||
RightShoulder.MaxVelocity = 0.5
|
||||
RightShoulder:SetDesiredAngle(0)
|
||||
return
|
||||
end
|
||||
|
||||
if (toolAnim == "Lunge") then
|
||||
RightShoulder.MaxVelocity = 0.5
|
||||
LeftShoulder.MaxVelocity = 0.5
|
||||
RightHip.MaxVelocity = 0.5
|
||||
LeftHip.MaxVelocity = 0.5
|
||||
RightShoulder:SetDesiredAngle(1.57)
|
||||
LeftShoulder:SetDesiredAngle(1.0)
|
||||
RightHip:SetDesiredAngle(1.57)
|
||||
LeftHip:SetDesiredAngle(1.0)
|
||||
return
|
||||
end
|
||||
end
|
||||
|
||||
function move(time)
|
||||
local amplitude
|
||||
local frequency
|
||||
|
||||
if (pose == "Jumping") then
|
||||
moveJump()
|
||||
return
|
||||
end
|
||||
|
||||
if (pose == "FreeFall") then
|
||||
moveFreeFall()
|
||||
return
|
||||
end
|
||||
|
||||
if (pose == "Seated") then
|
||||
moveSit()
|
||||
return
|
||||
end
|
||||
|
||||
local climbFudge = 0
|
||||
|
||||
if (pose == "Running") then
|
||||
RightShoulder.MaxVelocity = 0.15
|
||||
LeftShoulder.MaxVelocity = 0.15
|
||||
amplitude = 1
|
||||
frequency = 9
|
||||
elseif (pose == "Climbing") then
|
||||
RightShoulder.MaxVelocity = 0.5
|
||||
LeftShoulder.MaxVelocity = 0.5
|
||||
amplitude = 1
|
||||
frequency = 9
|
||||
climbFudge = 3.14
|
||||
else
|
||||
amplitude = 0.1
|
||||
frequency = 1
|
||||
end
|
||||
|
||||
desiredAngle = amplitude * math.sin(time*frequency)
|
||||
|
||||
RightShoulder:SetDesiredAngle(desiredAngle + climbFudge)
|
||||
LeftShoulder:SetDesiredAngle(desiredAngle - climbFudge)
|
||||
RightHip:SetDesiredAngle(-desiredAngle)
|
||||
LeftHip:SetDesiredAngle(-desiredAngle)
|
||||
|
||||
|
||||
local tool = getTool()
|
||||
|
||||
if tool then
|
||||
|
||||
animStringValueObject = getToolAnim(tool)
|
||||
|
||||
if animStringValueObject then
|
||||
toolAnim = animStringValueObject.Value
|
||||
-- message recieved, delete StringValue
|
||||
animStringValueObject.Parent = nil
|
||||
toolAnimTime = time + .3
|
||||
end
|
||||
|
||||
if time > toolAnimTime then
|
||||
toolAnimTime = 0
|
||||
toolAnim = "None"
|
||||
end
|
||||
|
||||
animateTool()
|
||||
|
||||
|
||||
else
|
||||
toolAnim = "None"
|
||||
toolAnimTime = 0
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
-- connect events
|
||||
|
||||
Humanoid.Died:connect(onDied)
|
||||
Humanoid.Running:connect(onRunning)
|
||||
Humanoid.Jumping:connect(onJumping)
|
||||
Humanoid.Climbing:connect(onClimbing)
|
||||
Humanoid.GettingUp:connect(onGettingUp)
|
||||
Humanoid.FreeFalling:connect(onFreeFall)
|
||||
Humanoid.FallingDown:connect(onFallingDown)
|
||||
Humanoid.Seated:connect(onSeated)
|
||||
Humanoid.PlatformStanding:connect(onPlatformStanding)
|
||||
|
||||
-- main program
|
||||
|
||||
local runService = game:service("RunService");
|
||||
|
||||
while Figure.Parent~=nil do
|
||||
local _, time = wait(0.1)
|
||||
move(time)
|
||||
end
|
||||
</string>
|
||||
<bool name="archivable">true</bool>
|
||||
</Properties>
|
||||
</Item>
|
||||
</roblox>
|
||||
@@ -0,0 +1,336 @@
|
||||
<roblox xmlns:xmime="http://www.w3.org/2005/05/xmlmime" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://www.watrbx.wtf/roblox.xsd" version="4">
|
||||
<External>null</External>
|
||||
<External>nil</External>
|
||||
<Item class="LocalScript" referent="RBX0">
|
||||
<Properties>
|
||||
<bool name="Disabled">false</bool>
|
||||
<Content name="LinkedSource"><null></null></Content>
|
||||
<string name="Name">Animate</string>
|
||||
<string name="Source">
|
||||
|
||||
function waitForChild(parent, childName)
|
||||
local child = parent:findFirstChild(childName)
|
||||
if child then return child end
|
||||
while true do
|
||||
child = parent.ChildAdded:wait()
|
||||
if child.Name==childName then return child end
|
||||
end
|
||||
end
|
||||
|
||||
-- ANIMATION
|
||||
|
||||
-- declarations
|
||||
|
||||
local Figure = script.Parent
|
||||
local Torso = waitForChild(Figure, "Torso")
|
||||
local RightShoulder = waitForChild(Torso, "Right Shoulder")
|
||||
local LeftShoulder = waitForChild(Torso, "Left Shoulder")
|
||||
local RightHip = waitForChild(Torso, "Right Hip")
|
||||
local LeftHip = waitForChild(Torso, "Left Hip")
|
||||
local Neck = waitForChild(Torso, "Neck")
|
||||
local Humanoid = waitForChild(Figure, "Humanoid")
|
||||
local pose = "Standing"
|
||||
|
||||
local toolAnim = "None"
|
||||
local toolAnimTime = 0
|
||||
|
||||
local jumpMaxLimbVelocity = 0.75
|
||||
|
||||
-- functions
|
||||
|
||||
function onRunning(speed)
|
||||
if speed>0 then
|
||||
pose = "Running"
|
||||
else
|
||||
pose = "Standing"
|
||||
end
|
||||
end
|
||||
|
||||
function onDied()
|
||||
pose = "Dead"
|
||||
end
|
||||
|
||||
function onJumping()
|
||||
pose = "Jumping"
|
||||
end
|
||||
|
||||
function onClimbing()
|
||||
pose = "Climbing"
|
||||
end
|
||||
|
||||
function onGettingUp()
|
||||
pose = "GettingUp"
|
||||
end
|
||||
|
||||
function onFreeFall()
|
||||
pose = "FreeFall"
|
||||
end
|
||||
|
||||
function onFallingDown()
|
||||
pose = "FallingDown"
|
||||
end
|
||||
|
||||
function onSeated()
|
||||
pose = "Seated"
|
||||
end
|
||||
|
||||
function onPlatformStanding()
|
||||
pose = "PlatformStanding"
|
||||
end
|
||||
|
||||
function onSwimming(speed)
|
||||
if speed>0 then
|
||||
pose = "Running"
|
||||
else
|
||||
pose = "Standing"
|
||||
end
|
||||
end
|
||||
|
||||
function moveJump()
|
||||
RightShoulder.MaxVelocity = jumpMaxLimbVelocity
|
||||
LeftShoulder.MaxVelocity = jumpMaxLimbVelocity
|
||||
RightShoulder:SetDesiredAngle(3.14)
|
||||
LeftShoulder:SetDesiredAngle(-3.14)
|
||||
RightHip:SetDesiredAngle(0)
|
||||
LeftHip:SetDesiredAngle(0)
|
||||
end
|
||||
|
||||
|
||||
-- same as jump for now
|
||||
|
||||
function moveFreeFall()
|
||||
RightShoulder.MaxVelocity = jumpMaxLimbVelocity
|
||||
LeftShoulder.MaxVelocity = jumpMaxLimbVelocity
|
||||
RightShoulder:SetDesiredAngle(3.14)
|
||||
LeftShoulder:SetDesiredAngle(-3.14)
|
||||
RightHip:SetDesiredAngle(0)
|
||||
LeftHip:SetDesiredAngle(0)
|
||||
end
|
||||
|
||||
function moveSit()
|
||||
RightShoulder.MaxVelocity = 0.15
|
||||
LeftShoulder.MaxVelocity = 0.15
|
||||
RightShoulder:SetDesiredAngle(3.14 /2)
|
||||
LeftShoulder:SetDesiredAngle(-3.14 /2)
|
||||
RightHip:SetDesiredAngle(3.14 /2)
|
||||
LeftHip:SetDesiredAngle(-3.14 /2)
|
||||
end
|
||||
|
||||
function getTool()
|
||||
for _, kid in ipairs(Figure:GetChildren()) do
|
||||
if kid.className == "Tool" then return kid end
|
||||
end
|
||||
return nil
|
||||
end
|
||||
|
||||
function getToolAnim(tool)
|
||||
for _, c in ipairs(tool:GetChildren()) do
|
||||
if c.Name == "toolanim" and c.className == "StringValue" then
|
||||
return c
|
||||
end
|
||||
end
|
||||
return nil
|
||||
end
|
||||
|
||||
function animateTool()
|
||||
|
||||
if (toolAnim == "None") then
|
||||
RightShoulder:SetDesiredAngle(1.57)
|
||||
return
|
||||
end
|
||||
|
||||
if (toolAnim == "Slash") then
|
||||
RightShoulder.MaxVelocity = 0.5
|
||||
RightShoulder:SetDesiredAngle(0)
|
||||
return
|
||||
end
|
||||
|
||||
if (toolAnim == "Lunge") then
|
||||
RightShoulder.MaxVelocity = 0.5
|
||||
LeftShoulder.MaxVelocity = 0.5
|
||||
RightHip.MaxVelocity = 0.5
|
||||
LeftHip.MaxVelocity = 0.5
|
||||
RightShoulder:SetDesiredAngle(1.57)
|
||||
LeftShoulder:SetDesiredAngle(1.0)
|
||||
RightHip:SetDesiredAngle(1.57)
|
||||
LeftHip:SetDesiredAngle(1.0)
|
||||
return
|
||||
end
|
||||
end
|
||||
|
||||
function move(time)
|
||||
local amplitude
|
||||
local frequency
|
||||
|
||||
if (pose == "Jumping") then
|
||||
moveJump()
|
||||
return
|
||||
end
|
||||
|
||||
if (pose == "FreeFall") then
|
||||
moveFreeFall()
|
||||
return
|
||||
end
|
||||
|
||||
if (pose == "Seated") then
|
||||
moveSit()
|
||||
return
|
||||
end
|
||||
|
||||
local climbFudge = 0
|
||||
|
||||
if (pose == "Running") then
|
||||
if (RightShoulder.CurrentAngle > 1.5 or RightShoulder.CurrentAngle < -1.5) then
|
||||
RightShoulder.MaxVelocity = jumpMaxLimbVelocity
|
||||
else
|
||||
RightShoulder.MaxVelocity = 0.15
|
||||
end
|
||||
if (LeftShoulder.CurrentAngle > 1.5 or LeftShoulder.CurrentAngle < -1.5) then
|
||||
LeftShoulder.MaxVelocity = jumpMaxLimbVelocity
|
||||
else
|
||||
LeftShoulder.MaxVelocity = 0.15
|
||||
end
|
||||
amplitude = 1
|
||||
frequency = 9
|
||||
elseif (pose == "Climbing") then
|
||||
RightShoulder.MaxVelocity = 0.5
|
||||
LeftShoulder.MaxVelocity = 0.5
|
||||
amplitude = 1
|
||||
frequency = 9
|
||||
climbFudge = 3.14
|
||||
else
|
||||
amplitude = 0.1
|
||||
frequency = 1
|
||||
end
|
||||
|
||||
desiredAngle = amplitude * math.sin(time*frequency)
|
||||
|
||||
RightShoulder:SetDesiredAngle(desiredAngle + climbFudge)
|
||||
LeftShoulder:SetDesiredAngle(desiredAngle - climbFudge)
|
||||
RightHip:SetDesiredAngle(-desiredAngle)
|
||||
LeftHip:SetDesiredAngle(-desiredAngle)
|
||||
|
||||
|
||||
local tool = getTool()
|
||||
|
||||
if tool then
|
||||
|
||||
animStringValueObject = getToolAnim(tool)
|
||||
|
||||
if animStringValueObject then
|
||||
toolAnim = animStringValueObject.Value
|
||||
-- message recieved, delete StringValue
|
||||
animStringValueObject.Parent = nil
|
||||
toolAnimTime = time + .3
|
||||
end
|
||||
|
||||
if time > toolAnimTime then
|
||||
toolAnimTime = 0
|
||||
toolAnim = "None"
|
||||
end
|
||||
|
||||
animateTool()
|
||||
|
||||
|
||||
else
|
||||
toolAnim = "None"
|
||||
toolAnimTime = 0
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
-- connect events
|
||||
|
||||
Humanoid.Died:connect(onDied)
|
||||
Humanoid.Running:connect(onRunning)
|
||||
Humanoid.Jumping:connect(onJumping)
|
||||
Humanoid.Climbing:connect(onClimbing)
|
||||
Humanoid.GettingUp:connect(onGettingUp)
|
||||
Humanoid.FreeFalling:connect(onFreeFall)
|
||||
Humanoid.FallingDown:connect(onFallingDown)
|
||||
Humanoid.Seated:connect(onSeated)
|
||||
Humanoid.PlatformStanding:connect(onPlatformStanding)
|
||||
Humanoid.Swimming:connect(onSwimming)
|
||||
-- main program
|
||||
|
||||
local runService = game:service("RunService");
|
||||
|
||||
while Figure.Parent~=nil do
|
||||
local _, time = wait(0.1)
|
||||
move(time)
|
||||
end
|
||||
</string>
|
||||
<bool name="archivable">true</bool>
|
||||
</Properties>
|
||||
</Item>
|
||||
<Item class="Script" referent="RBX1">
|
||||
<Properties>
|
||||
<bool name="Disabled">false</bool>
|
||||
<Content name="LinkedSource">
|
||||
<null></null>
|
||||
</Content>
|
||||
<string name="Name">RobloxTeam</string>
|
||||
<string name="Source">
|
||||
-- Now with exciting TeamColors HACK!
|
||||
|
||||
function waitForChild(parent, childName)
|
||||
local child = parent:findFirstChild(childName)
|
||||
if child then return child end
|
||||
while true do
|
||||
child = parent.ChildAdded:wait()
|
||||
if child.Name==childName then return child end
|
||||
end
|
||||
end
|
||||
|
||||
-- TEAM COLORS
|
||||
|
||||
|
||||
function onTeamChanged(player)
|
||||
|
||||
wait(1)
|
||||
|
||||
local char = player.Character
|
||||
if char == nil then return end
|
||||
|
||||
if player.Neutral then
|
||||
-- Replacing the current BodyColor object will force a reset
|
||||
local old = char:findFirstChild("Body Colors")
|
||||
if not old then return end
|
||||
old:clone().Parent = char
|
||||
old.Parent = nil
|
||||
else
|
||||
local head = char:findFirstChild("Head")
|
||||
local torso = char:findFirstChild("Torso")
|
||||
local left_arm = char:findFirstChild("Left Arm")
|
||||
local right_arm = char:findFirstChild("Right Arm")
|
||||
local left_leg = char:findFirstChild("Left Leg")
|
||||
local right_leg = char:findFirstChild("Right Leg")
|
||||
|
||||
if head then head.BrickColor = BrickColor.new(24) end
|
||||
if torso then torso.BrickColor = player.TeamColor end
|
||||
if left_arm then left_arm.BrickColor = BrickColor.new(26) end
|
||||
if right_arm then right_arm.BrickColor = BrickColor.new(26) end
|
||||
if left_leg then left_leg.BrickColor = BrickColor.new(26) end
|
||||
if right_leg then right_leg.BrickColor = BrickColor.new(26) end
|
||||
end
|
||||
end
|
||||
|
||||
function onPlayerPropChanged(property, player)
|
||||
if property == "Character" then
|
||||
onTeamChanged(player)
|
||||
end
|
||||
if property== "TeamColor" or property == "Neutral" then
|
||||
onTeamChanged(player)
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
local cPlayer = game.Players:GetPlayerFromCharacter(script.Parent)
|
||||
cPlayer.Changed:connect(function(property) onPlayerPropChanged(property, cPlayer) end )
|
||||
onTeamChanged(cPlayer)
|
||||
|
||||
</string>
|
||||
<bool name="archivable">true</bool>
|
||||
</Properties>
|
||||
</Item>
|
||||
</roblox>
|
||||
@@ -0,0 +1,649 @@
|
||||
<roblox xmlns:xmime="http://www.w3.org/2005/05/xmlmime" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://www.watrbx.wtf/roblox.xsd" version="4">
|
||||
<External>null</External>
|
||||
<External>nil</External>
|
||||
<Item class="LocalScript" referent="RBX715229BE23804EB781837156DFCBE808">
|
||||
<Properties>
|
||||
<bool name="Disabled">false</bool>
|
||||
<Content name="LinkedSource"><null></null></Content>
|
||||
<string name="Name">Animate</string>
|
||||
<ProtectedString name="Source">function waitForChild(parent, childName)
|
||||
	local child = parent:findFirstChild(childName)
|
||||
	if child then return child end
|
||||
	while true do
|
||||
		child = parent.ChildAdded:wait()
|
||||
		if child.Name==childName then return child end
|
||||
	end
|
||||
end
|
||||
|
||||
local Figure = script.Parent
|
||||
local Torso = waitForChild(Figure, "Torso")
|
||||
local RightShoulder = waitForChild(Torso, "Right Shoulder")
|
||||
local LeftShoulder = waitForChild(Torso, "Left Shoulder")
|
||||
local RightHip = waitForChild(Torso, "Right Hip")
|
||||
local LeftHip = waitForChild(Torso, "Left Hip")
|
||||
local Neck = waitForChild(Torso, "Neck")
|
||||
local Humanoid = waitForChild(Figure, "Humanoid")
|
||||
local pose = "Standing"
|
||||
|
||||
local currentAnim = ""
|
||||
local currentAnimTrack = nil
|
||||
local currentAnimKeyframeHandler = nil
|
||||
local currentAnimSpeed = 1.0
|
||||
local animTable = {}
|
||||
local animNames = {
|
||||
	idle = 	{	
|
||||
				{ id = "http://www.watrbx.wtf/asset/?id=125750544", weight = 9 },
|
||||
				{ id = "http://www.watrbx.wtf/asset/?id=125750618", weight = 1 }
|
||||
			},
|
||||
	walk = 	{ 	
|
||||
				{ id = "http://www.watrbx.wtf/asset/?id=125749145", weight = 10 }
|
||||
			},
|
||||
	run = 	{
|
||||
				{ id = "run.xml", weight = 10 }
|
||||
			},
|
||||
	jump = 	{
|
||||
				{ id = "http://www.watrbx.wtf/asset/?id=125750702", weight = 10 }
|
||||
			},
|
||||
	fall = 	{
|
||||
				{ id = "http://www.watrbx.wtf/asset/?id=125750759", weight = 10 }
|
||||
			},
|
||||
	climb = {
|
||||
				{ id = "http://www.watrbx.wtf/asset/?id=125750800", weight = 10 }
|
||||
			},
|
||||
	sit = 	{
|
||||
				{ id = "http://www.watrbx.wtf/asset/?id=178130996", weight = 10 }
|
||||
			},	
|
||||
	toolnone = {
|
||||
				{ id = "http://www.watrbx.wtf/asset/?id=125750867", weight = 10 }
|
||||
			},
|
||||
	toolslash = {
|
||||
				{ id = "http://www.watrbx.wtf/asset/?id=129967390", weight = 10 }
|
||||
--				{ id = "slash.xml", weight = 10 }
|
||||
			},
|
||||
	toollunge = {
|
||||
				{ id = "http://www.watrbx.wtf/asset/?id=129967478", weight = 10 }
|
||||
			},
|
||||
	wave = {
|
||||
				{ id = "http://www.watrbx.wtf/asset/?id=128777973", weight = 10 }
|
||||
			},
|
||||
	point = {
|
||||
				{ id = "http://www.watrbx.wtf/asset/?id=128853357", weight = 10 }
|
||||
			},
|
||||
	dance = {
|
||||
				{ id = "http://www.watrbx.wtf/asset/?id=130018893", weight = 10 },
|
||||
				{ id = "http://www.watrbx.wtf/asset/?id=132546839", weight = 10 },
|
||||
				{ id = "http://www.watrbx.wtf/asset/?id=132546884", weight = 10 }
|
||||
			},
|
||||
	dance2 = {
|
||||
				{ id = "http://www.watrbx.wtf/asset/?id=160934142", weight = 10 },
|
||||
				{ id = "http://www.watrbx.wtf/asset/?id=160934298", weight = 10 },
|
||||
				{ id = "http://www.watrbx.wtf/asset/?id=160934376", weight = 10 }
|
||||
			},
|
||||
	dance3 = {
|
||||
				{ id = "http://www.watrbx.wtf/asset/?id=160934458", weight = 10 },
|
||||
				{ id = "http://www.watrbx.wtf/asset/?id=160934530", weight = 10 },
|
||||
				{ id = "http://www.watrbx.wtf/asset/?id=160934593", weight = 10 }
|
||||
			},
|
||||
	laugh = {
|
||||
				{ id = "http://www.watrbx.wtf/asset/?id=129423131", weight = 10 }
|
||||
			},
|
||||
	cheer = {
|
||||
				{ id = "http://www.watrbx.wtf/asset/?id=129423030", weight = 10 }
|
||||
			},
|
||||
}
|
||||
|
||||
-- Existance in this list signifies that it is an emote, the value indicates if it is a looping emote
|
||||
local emoteNames = { wave = false, point = false, dance = true, dance2 = true, dance3 = true, laugh = false, cheer = false}
|
||||
|
||||
math.randomseed(tick())
|
||||
|
||||
function configureAnimationSet(name, fileList)
|
||||
	if (animTable[name] ~= nil) then
|
||||
		for _, connection in pairs(animTable[name].connections) do
|
||||
			connection:disconnect()
|
||||
		end
|
||||
	end
|
||||
	animTable[name] = {}
|
||||
	animTable[name].count = 0
|
||||
	animTable[name].totalWeight = 0	
|
||||
	animTable[name].connections = {}
|
||||
|
||||
	-- check for config values
|
||||
	local config = script:FindFirstChild(name)
|
||||
	if (config ~= nil) then
|
||||
--		print("Loading anims " .. name)
|
||||
		table.insert(animTable[name].connections, config.ChildAdded:connect(function(child) configureAnimationSet(name, fileList) end))
|
||||
		table.insert(animTable[name].connections, config.ChildRemoved:connect(function(child) configureAnimationSet(name, fileList) end))
|
||||
		local idx = 1
|
||||
		for _, childPart in pairs(config:GetChildren()) do
|
||||
			if (childPart:IsA("Animation")) then
|
||||
				table.insert(animTable[name].connections, childPart.Changed:connect(function(property) configureAnimationSet(name, fileList) end))
|
||||
				animTable[name][idx] = {}
|
||||
				animTable[name][idx].anim = childPart
|
||||
				local weightObject = childPart:FindFirstChild("Weight")
|
||||
				if (weightObject == nil) then
|
||||
					animTable[name][idx].weight = 1
|
||||
				else
|
||||
					animTable[name][idx].weight = weightObject.Value
|
||||
				end
|
||||
				animTable[name].count = animTable[name].count + 1
|
||||
				animTable[name].totalWeight = animTable[name].totalWeight + animTable[name][idx].weight
|
||||
	--			print(name .. " [" .. idx .. "] " .. animTable[name][idx].anim.AnimationId .. " (" .. animTable[name][idx].weight .. ")")
|
||||
				idx = idx + 1
|
||||
			end
|
||||
		end
|
||||
	end
|
||||
|
||||
	-- fallback to defaults
|
||||
	if (animTable[name].count <= 0) then
|
||||
		for idx, anim in pairs(fileList) do
|
||||
			animTable[name][idx] = {}
|
||||
			animTable[name][idx].anim = Instance.new("Animation")
|
||||
			animTable[name][idx].anim.Name = name
|
||||
			animTable[name][idx].anim.AnimationId = anim.id
|
||||
			animTable[name][idx].weight = anim.weight
|
||||
			animTable[name].count = animTable[name].count + 1
|
||||
			animTable[name].totalWeight = animTable[name].totalWeight + anim.weight
|
||||
--			print(name .. " [" .. idx .. "] " .. anim.id .. " (" .. anim.weight .. ")")
|
||||
		end
|
||||
	end
|
||||
end
|
||||
|
||||
-- Setup animation objects
|
||||
function scriptChildModified(child)
|
||||
	local fileList = animNames[child.Name]
|
||||
	if (fileList ~= nil) then
|
||||
		configureAnimationSet(child.Name, fileList)
|
||||
	end	
|
||||
end
|
||||
|
||||
script.ChildAdded:connect(scriptChildModified)
|
||||
script.ChildRemoved:connect(scriptChildModified)
|
||||
|
||||
|
||||
for name, fileList in pairs(animNames) do
|
||||
	configureAnimationSet(name, fileList)
|
||||
end	
|
||||
|
||||
-- ANIMATION
|
||||
|
||||
-- declarations
|
||||
local toolAnim = "None"
|
||||
local toolAnimTime = 0
|
||||
|
||||
local jumpAnimTime = 0
|
||||
local jumpAnimDuration = 0.3
|
||||
|
||||
local toolTransitionTime = 0.1
|
||||
local fallTransitionTime = 0.3
|
||||
local jumpMaxLimbVelocity = 0.75
|
||||
|
||||
-- functions
|
||||
|
||||
function stopAllAnimations()
|
||||
	local oldAnim = currentAnim
|
||||
|
||||
	-- return to idle if finishing an emote
|
||||
	if (emoteNames[oldAnim] ~= nil and emoteNames[oldAnim] == false) then
|
||||
		oldAnim = "idle"
|
||||
	end
|
||||
|
||||
	currentAnim = ""
|
||||
	if (currentAnimKeyframeHandler ~= nil) then
|
||||
		currentAnimKeyframeHandler:disconnect()
|
||||
	end
|
||||
|
||||
	if (currentAnimTrack ~= nil) then
|
||||
		currentAnimTrack:Stop()
|
||||
		currentAnimTrack:Destroy()
|
||||
		currentAnimTrack = nil
|
||||
	end
|
||||
	return oldAnim
|
||||
end
|
||||
|
||||
function setAnimationSpeed(speed)
|
||||
	if speed ~= currentAnimSpeed then
|
||||
		currentAnimSpeed = speed
|
||||
		currentAnimTrack:AdjustSpeed(currentAnimSpeed)
|
||||
	end
|
||||
end
|
||||
|
||||
function keyFrameReachedFunc(frameName)
|
||||
	if (frameName == "End") then
|
||||
--		print("Keyframe : ".. frameName)
|
||||
		local repeatAnim = stopAllAnimations()
|
||||
		local animSpeed = currentAnimSpeed
|
||||
		playAnimation(repeatAnim, 0.0, Humanoid)
|
||||
		setAnimationSpeed(animSpeed)
|
||||
	end
|
||||
end
|
||||
|
||||
-- Preload animations
|
||||
function playAnimation(animName, transitionTime, humanoid)
|
||||
	local idleFromEmote = (animName == "idle" and emoteNames[currentAnim] ~= nil)
|
||||
	if (animName ~= currentAnim and not idleFromEmote) then		
|
||||
		
|
||||
		if (currentAnimTrack ~= nil) then
|
||||
			currentAnimTrack:Stop(transitionTime)
|
||||
			currentAnimTrack:Destroy()
|
||||
		end
|
||||
|
||||
		currentAnimSpeed = 1.0
|
||||
		local roll = math.random(1, animTable[animName].totalWeight)
|
||||
		local origRoll = roll
|
||||
		local idx = 1
|
||||
		while (roll > animTable[animName][idx].weight) do
|
||||
			roll = roll - animTable[animName][idx].weight
|
||||
			idx = idx + 1
|
||||
		end
|
||||
--		print(animName .. " " .. idx .. " [" .. origRoll .. "]")
|
||||
		local anim = animTable[animName][idx].anim
|
||||
|
||||
		-- load it to the humanoid; get AnimationTrack
|
||||
		currentAnimTrack = humanoid:LoadAnimation(anim)
|
||||
		
|
||||
		-- play the animation
|
||||
		currentAnimTrack:Play(transitionTime)
|
||||
		currentAnim = animName
|
||||
|
||||
		-- set up keyframe name triggers
|
||||
		if (currentAnimKeyframeHandler ~= nil) then
|
||||
			currentAnimKeyframeHandler:disconnect()
|
||||
		end
|
||||
		currentAnimKeyframeHandler = currentAnimTrack.KeyframeReached:connect(keyFrameReachedFunc)
|
||||
	end
|
||||
end
|
||||
|
||||
-------------------------------------------------------------------------------------------
|
||||
-------------------------------------------------------------------------------------------
|
||||
|
||||
local toolAnimName = ""
|
||||
local toolAnimTrack = nil
|
||||
local currentToolAnimKeyframeHandler = nil
|
||||
|
||||
function toolKeyFrameReachedFunc(frameName)
|
||||
	if (frameName == "End") then
|
||||
--		print("Keyframe : ".. frameName)
|
||||
		local repeatAnim = stopToolAnimations()
|
||||
		playToolAnimation(repeatAnim, 0.0, Humanoid)
|
||||
	end
|
||||
end
|
||||
|
||||
|
||||
function playToolAnimation(animName, transitionTime, humanoid)
|
||||
	if (animName ~= toolAnimName) then		
|
||||
		
|
||||
		if (toolAnimTrack ~= nil) then
|
||||
			toolAnimTrack:Stop()
|
||||
			toolAnimTrack:Destroy()
|
||||
			transitionTime = 0
|
||||
		end
|
||||
|
||||
		local roll = math.random(1, animTable[animName].totalWeight)
|
||||
		local origRoll = roll
|
||||
		local idx = 1
|
||||
		while (roll > animTable[animName][idx].weight) do
|
||||
			roll = roll - animTable[animName][idx].weight
|
||||
			idx = idx + 1
|
||||
		end
|
||||
--		print(animName .. " * " .. idx .. " [" .. origRoll .. "]")
|
||||
		local anim = animTable[animName][idx].anim
|
||||
|
||||
		-- load it to the humanoid; get AnimationTrack
|
||||
		toolAnimTrack = humanoid:LoadAnimation(anim)
|
||||
		
|
||||
		-- play the animation
|
||||
		toolAnimTrack:Play(transitionTime)
|
||||
		toolAnimName = animName
|
||||
|
||||
		currentToolAnimKeyframeHandler = toolAnimTrack.KeyframeReached:connect(toolKeyFrameReachedFunc)
|
||||
	end
|
||||
end
|
||||
|
||||
function stopToolAnimations()
|
||||
	local oldAnim = toolAnimName
|
||||
|
||||
	if (currentToolAnimKeyframeHandler ~= nil) then
|
||||
		currentToolAnimKeyframeHandler:disconnect()
|
||||
	end
|
||||
|
||||
	toolAnimName = ""
|
||||
	if (toolAnimTrack ~= nil) then
|
||||
		toolAnimTrack:Stop()
|
||||
		toolAnimTrack:Destroy()
|
||||
		toolAnimTrack = nil
|
||||
	end
|
||||
|
||||
|
||||
	return oldAnim
|
||||
end
|
||||
|
||||
-------------------------------------------------------------------------------------------
|
||||
-------------------------------------------------------------------------------------------
|
||||
|
||||
|
||||
function onRunning(speed)
|
||||
	if speed>0.5 then
|
||||
		playAnimation("walk", 0.1, Humanoid)
|
||||
		pose = "Running"
|
||||
	else
|
||||
		playAnimation("idle", 0.1, Humanoid)
|
||||
		pose = "Standing"
|
||||
	end
|
||||
end
|
||||
|
||||
function onDied()
|
||||
	pose = "Dead"
|
||||
end
|
||||
|
||||
function onJumping()
|
||||
	playAnimation("jump", 0.1, Humanoid)
|
||||
	jumpAnimTime = jumpAnimDuration
|
||||
	pose = "Jumping"
|
||||
end
|
||||
|
||||
function onClimbing(speed)
|
||||
	playAnimation("climb", 0.1, Humanoid)
|
||||
	setAnimationSpeed(speed / 12.0)
|
||||
	pose = "Climbing"
|
||||
end
|
||||
|
||||
function onGettingUp()
|
||||
	pose = "GettingUp"
|
||||
end
|
||||
|
||||
function onFreeFall()
|
||||
	if (jumpAnimTime <= 0) then
|
||||
		playAnimation("fall", fallTransitionTime, Humanoid)
|
||||
	end
|
||||
	pose = "FreeFall"
|
||||
end
|
||||
|
||||
function onFallingDown()
|
||||
	pose = "FallingDown"
|
||||
end
|
||||
|
||||
function onSeated()
|
||||
	pose = "Seated"
|
||||
end
|
||||
|
||||
function onPlatformStanding()
|
||||
	pose = "PlatformStanding"
|
||||
end
|
||||
|
||||
function onSwimming(speed)
|
||||
	if speed>0 then
|
||||
		pose = "Running"
|
||||
	else
|
||||
		pose = "Standing"
|
||||
	end
|
||||
end
|
||||
|
||||
function getTool()	
|
||||
	for _, kid in ipairs(Figure:GetChildren()) do
|
||||
		if kid.className == "Tool" then return kid end
|
||||
	end
|
||||
	return nil
|
||||
end
|
||||
|
||||
function getToolAnim(tool)
|
||||
	for _, c in ipairs(tool:GetChildren()) do
|
||||
		if c.Name == "toolanim" and c.className == "StringValue" then
|
||||
			return c
|
||||
		end
|
||||
	end
|
||||
	return nil
|
||||
end
|
||||
|
||||
function animateTool()
|
||||
	
|
||||
	if (toolAnim == "None") then
|
||||
		playToolAnimation("toolnone", toolTransitionTime, Humanoid)
|
||||
		return
|
||||
	end
|
||||
|
||||
	if (toolAnim == "Slash") then
|
||||
		playToolAnimation("toolslash", 0, Humanoid)
|
||||
		return
|
||||
	end
|
||||
|
||||
	if (toolAnim == "Lunge") then
|
||||
		playToolAnimation("toollunge", 0, Humanoid)
|
||||
		return
|
||||
	end
|
||||
end
|
||||
|
||||
function moveSit()
|
||||
	RightShoulder.MaxVelocity = 0.15
|
||||
	LeftShoulder.MaxVelocity = 0.15
|
||||
	RightShoulder:SetDesiredAngle(3.14 /2)
|
||||
	LeftShoulder:SetDesiredAngle(-3.14 /2)
|
||||
	RightHip:SetDesiredAngle(3.14 /2)
|
||||
	LeftHip:SetDesiredAngle(-3.14 /2)
|
||||
end
|
||||
|
||||
local lastTick = 0
|
||||
|
||||
function move(time)
|
||||
	local amplitude = 1
|
||||
	local frequency = 1
|
||||
	local deltaTime = time - lastTick
|
||||
	lastTick = time
|
||||
|
||||
	local climbFudge = 0
|
||||
	local setAngles = false
|
||||
|
||||
	if (jumpAnimTime > 0) then
|
||||
		jumpAnimTime = jumpAnimTime - deltaTime
|
||||
	end
|
||||
|
||||
	if (pose == "FreeFall" and jumpAnimTime <= 0) then
|
||||
		playAnimation("fall", fallTransitionTime, Humanoid)
|
||||
	elseif (pose == "Seated") then
|
||||
		playAnimation("sit", 0.5, Humanoid)
|
||||
		return
|
||||
	elseif (pose == "Running") then
|
||||
		playAnimation("walk", 0.1, Humanoid)
|
||||
	elseif (pose == "Dead" or pose == "GettingUp" or pose == "FallingDown" or pose == "Seated" or pose == "PlatformStanding") then
|
||||
--		print("Wha " .. pose)
|
||||
		stopAllAnimations()
|
||||
		amplitude = 0.1
|
||||
		frequency = 1
|
||||
		setAngles = true
|
||||
	end
|
||||
|
||||
	if (setAngles) then
|
||||
		desiredAngle = amplitude * math.sin(time * frequency)
|
||||
|
||||
		RightShoulder:SetDesiredAngle(desiredAngle + climbFudge)
|
||||
		LeftShoulder:SetDesiredAngle(desiredAngle - climbFudge)
|
||||
		RightHip:SetDesiredAngle(-desiredAngle)
|
||||
		LeftHip:SetDesiredAngle(-desiredAngle)
|
||||
	end
|
||||
|
||||
	-- Tool Animation handling
|
||||
	local tool = getTool()
|
||||
	if tool then
|
||||
	
|
||||
		animStringValueObject = getToolAnim(tool)
|
||||
|
||||
		if animStringValueObject then
|
||||
			toolAnim = animStringValueObject.Value
|
||||
			-- message recieved, delete StringValue
|
||||
			animStringValueObject.Parent = nil
|
||||
			toolAnimTime = time + .3
|
||||
		end
|
||||
|
||||
		if time > toolAnimTime then
|
||||
			toolAnimTime = 0
|
||||
			toolAnim = "None"
|
||||
		end
|
||||
|
||||
		animateTool()		
|
||||
	else
|
||||
		stopToolAnimations()
|
||||
		toolAnim = "None"
|
||||
		toolAnimTime = 0
|
||||
	end
|
||||
end
|
||||
|
||||
-- connect events
|
||||
Humanoid.Died:connect(onDied)
|
||||
Humanoid.Running:connect(onRunning)
|
||||
Humanoid.Jumping:connect(onJumping)
|
||||
Humanoid.Climbing:connect(onClimbing)
|
||||
Humanoid.GettingUp:connect(onGettingUp)
|
||||
Humanoid.FreeFalling:connect(onFreeFall)
|
||||
Humanoid.FallingDown:connect(onFallingDown)
|
||||
Humanoid.Seated:connect(onSeated)
|
||||
Humanoid.PlatformStanding:connect(onPlatformStanding)
|
||||
Humanoid.Swimming:connect(onSwimming)
|
||||
|
||||
-- setup emote chat hook
|
||||
Game.Players.LocalPlayer.Chatted:connect(function(msg)
|
||||
	local emote = ""
|
||||
	if (string.sub(msg, 1, 3) == "/e ") then
|
||||
		emote = string.sub(msg, 4)
|
||||
	elseif (string.sub(msg, 1, 7) == "/emote ") then
|
||||
		emote = string.sub(msg, 8)
|
||||
	end
|
||||
	
|
||||
	if (pose == "Standing" and emoteNames[emote] ~= nil) then
|
||||
		playAnimation(emote, 0.1, Humanoid)
|
||||
	end
|
||||
--	print("===> " .. string.sub(msg, 1, 3) .. "(" .. emote .. ")")
|
||||
end)
|
||||
|
||||
|
||||
-- main program
|
||||
|
||||
local runService = game:service("RunService");
|
||||
|
||||
-- initialize to idle
|
||||
playAnimation("idle", 0.1, Humanoid)
|
||||
pose = "Standing"
|
||||
|
||||
while Figure.Parent~=nil do
|
||||
	local _, time = wait(0.1)
|
||||
	move(time)
|
||||
end
|
||||
|
||||
|
||||
</ProtectedString>
|
||||
</Properties>
|
||||
<Item class="StringValue" referent="RBXB9F94AC9C8714EE9B8DC5AC6394A39D8">
|
||||
<Properties>
|
||||
<string name="Name">idle</string>
|
||||
<string name="Value"></string>
|
||||
</Properties>
|
||||
<Item class="Animation" referent="RBX00CF3DBBF6A44ED5BBC717359071CB44">
|
||||
<Properties>
|
||||
<Content name="AnimationId"><url>http://www.watrbx.wtf/asset/?id=125750544</url></Content>
|
||||
<string name="Name">Animation1</string>
|
||||
</Properties>
|
||||
<Item class="NumberValue" referent="RBX5B18FB5697DC46F69374CB1D7236BD8C">
|
||||
<Properties>
|
||||
<string name="Name">Weight</string>
|
||||
<double name="Value">9</double>
|
||||
</Properties>
|
||||
</Item>
|
||||
</Item>
|
||||
<Item class="Animation" referent="RBX4FDE2C9CBC2245C18F7583D18E8FA849">
|
||||
<Properties>
|
||||
<Content name="AnimationId"><url>http://www.watrbx.wtf/asset/?id=125750618</url></Content>
|
||||
<string name="Name">Animation2</string>
|
||||
</Properties>
|
||||
<Item class="NumberValue" referent="RBX52104EA5D6A54AF19E439A7E4F5D2874">
|
||||
<Properties>
|
||||
<string name="Name">Weight</string>
|
||||
<double name="Value">1</double>
|
||||
</Properties>
|
||||
</Item>
|
||||
</Item>
|
||||
</Item>
|
||||
<Item class="StringValue" referent="RBX3C93974F58884058B4A4E6B086D58272">
|
||||
<Properties>
|
||||
<string name="Name">walk</string>
|
||||
<string name="Value"></string>
|
||||
</Properties>
|
||||
<Item class="Animation" referent="RBX038BF3EC9C3E4F06B2F24E69A20F347C">
|
||||
<Properties>
|
||||
<Content name="AnimationId"><url>http://www.watrbx.wtf/asset/?id=125749145</url></Content>
|
||||
<string name="Name">WalkAnim</string>
|
||||
</Properties>
|
||||
</Item>
|
||||
</Item>
|
||||
<Item class="StringValue" referent="RBX2755DD130F8B4D69AC40662FF9F5E27B">
|
||||
<Properties>
|
||||
<string name="Name">run</string>
|
||||
<string name="Value"></string>
|
||||
</Properties>
|
||||
<Item class="Animation" referent="RBX8755FB1F0AB24E028CD877AC4266F885">
|
||||
<Properties>
|
||||
<Content name="AnimationId"><url>http://www.watrbx.wtf/asset/?id=125749145</url></Content>
|
||||
<string name="Name">RunAnim</string>
|
||||
</Properties>
|
||||
</Item>
|
||||
</Item>
|
||||
<Item class="StringValue" referent="RBXDE338122B8944CB4BBF75A4869F808D4">
|
||||
<Properties>
|
||||
<string name="Name">jump</string>
|
||||
<string name="Value"></string>
|
||||
</Properties>
|
||||
<Item class="Animation" referent="RBX94F8E8E31C3B4343A24D76E4721CA64F">
|
||||
<Properties>
|
||||
<Content name="AnimationId"><url>http://www.watrbx.wtf/asset/?id=125750702</url></Content>
|
||||
<string name="Name">JumpAnim</string>
|
||||
</Properties>
|
||||
</Item>
|
||||
</Item>
|
||||
<Item class="StringValue" referent="RBXF5D613DC6F6B44E789F7AAB2ED845805">
|
||||
<Properties>
|
||||
<string name="Name">climb</string>
|
||||
<string name="Value"></string>
|
||||
</Properties>
|
||||
<Item class="Animation" referent="RBX7CB10265BA4B4488A67823BF80A77DC0">
|
||||
<Properties>
|
||||
<Content name="AnimationId"><url>http://www.watrbx.wtf/asset/?id=125750800</url></Content>
|
||||
<string name="Name">ClimbAnim</string>
|
||||
</Properties>
|
||||
</Item>
|
||||
</Item>
|
||||
<Item class="StringValue" referent="RBX6E21A99A8A89468F9D60E1A2005C68A3">
|
||||
<Properties>
|
||||
<string name="Name">toolnone</string>
|
||||
<string name="Value"></string>
|
||||
</Properties>
|
||||
<Item class="Animation" referent="RBX8210E414C2DD416BAFD78558576B7955">
|
||||
<Properties>
|
||||
<Content name="AnimationId"><url>http://www.watrbx.wtf/asset/?id=125750867</url></Content>
|
||||
<string name="Name">ToolNoneAnim</string>
|
||||
</Properties>
|
||||
</Item>
|
||||
</Item>
|
||||
<Item class="StringValue" referent="RBXC92C8796E26C411984CCB70BA8E39107">
|
||||
<Properties>
|
||||
<string name="Name">fall</string>
|
||||
<string name="Value"></string>
|
||||
</Properties>
|
||||
<Item class="Animation" referent="RBX9A2EC4B488454C1ABEEEF09689D5BD33">
|
||||
<Properties>
|
||||
<Content name="AnimationId"><url>http://www.watrbx.wtf/asset/?id=125750759</url></Content>
|
||||
<string name="Name">FallAnim</string>
|
||||
</Properties>
|
||||
</Item>
|
||||
</Item>
|
||||
<Item class="StringValue" referent="RBX70F38631790D415F950C39166423D8AA">
|
||||
<Properties>
|
||||
<string name="Name">sit</string>
|
||||
<string name="Value"></string>
|
||||
</Properties>
|
||||
<Item class="Animation" referent="RBX7A130B7EFF964AFDB81E41B6BF7A0FC7">
|
||||
<Properties>
|
||||
<Content name="AnimationId"><url>http://www.watrbx.wtf/asset/?id=178130996</url></Content>
|
||||
<string name="Name">SitAnim</string>
|
||||
</Properties>
|
||||
</Item>
|
||||
</Item>
|
||||
</Item>
|
||||
</roblox>
|
||||
@@ -0,0 +1,669 @@
|
||||
<roblox xmlns:xmime="http://www.w3.org/2005/05/xmlmime" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://www.watrbx.wtf/roblox.xsd" version="4">
|
||||
<External>null</External>
|
||||
<External>nil</External>
|
||||
<Item class="LocalScript" referent="RBXC49238CC391A40B0B08D3C0989F85A53">
|
||||
<Properties>
|
||||
<bool name="Disabled">false</bool>
|
||||
<Content name="LinkedSource"><null></null></Content>
|
||||
<string name="Name">Animate</string>
|
||||
<ProtectedString name="Source"><![CDATA[function waitForChild(parent, childName)
|
||||
local child = parent:findFirstChild(childName)
|
||||
if child then return child end
|
||||
while true do
|
||||
child = parent.ChildAdded:wait()
|
||||
if child.Name==childName then return child end
|
||||
end
|
||||
end
|
||||
|
||||
local Figure = script.Parent
|
||||
local Torso = waitForChild(Figure, "Torso")
|
||||
local RightShoulder = waitForChild(Torso, "Right Shoulder")
|
||||
local LeftShoulder = waitForChild(Torso, "Left Shoulder")
|
||||
local RightHip = waitForChild(Torso, "Right Hip")
|
||||
local LeftHip = waitForChild(Torso, "Left Hip")
|
||||
local Neck = waitForChild(Torso, "Neck")
|
||||
local Humanoid = waitForChild(Figure, "Humanoid")
|
||||
local pose = "Standing"
|
||||
|
||||
local currentAnim = ""
|
||||
local currentAnimInstance = nil
|
||||
local currentAnimTrack = nil
|
||||
local currentAnimKeyframeHandler = nil
|
||||
local currentAnimSpeed = 1.0
|
||||
local animTable = {}
|
||||
local animNames = {
|
||||
idle = {
|
||||
{ id = "http://www.watrbx.wtf/asset/?id=180435571", weight = 9 },
|
||||
{ id = "http://www.watrbx.wtf/asset/?id=180435792", weight = 1 }
|
||||
},
|
||||
walk = {
|
||||
{ id = "http://www.watrbx.wtf/asset/?id=180426354", weight = 10 }
|
||||
},
|
||||
run = {
|
||||
{ id = "run.xml", weight = 10 }
|
||||
},
|
||||
jump = {
|
||||
{ id = "http://www.watrbx.wtf/asset/?id=125750702", weight = 10 }
|
||||
},
|
||||
fall = {
|
||||
{ id = "http://www.watrbx.wtf/asset/?id=180436148", weight = 10 }
|
||||
},
|
||||
climb = {
|
||||
{ id = "http://www.watrbx.wtf/asset/?id=180436334", weight = 10 }
|
||||
},
|
||||
sit = {
|
||||
{ id = "http://www.watrbx.wtf/asset/?id=178130996", weight = 10 }
|
||||
},
|
||||
toolnone = {
|
||||
{ id = "http://www.watrbx.wtf/asset/?id=182393478", weight = 10 }
|
||||
},
|
||||
toolslash = {
|
||||
{ id = "http://www.watrbx.wtf/asset/?id=129967390", weight = 10 }
|
||||
-- { id = "slash.xml", weight = 10 }
|
||||
},
|
||||
toollunge = {
|
||||
{ id = "http://www.watrbx.wtf/asset/?id=129967478", weight = 10 }
|
||||
},
|
||||
wave = {
|
||||
{ id = "http://www.watrbx.wtf/asset/?id=128777973", weight = 10 }
|
||||
},
|
||||
point = {
|
||||
{ id = "http://www.watrbx.wtf/asset/?id=128853357", weight = 10 }
|
||||
},
|
||||
dance1 = {
|
||||
{ id = "http://www.watrbx.wtf/asset/?id=182435998", weight = 10 },
|
||||
{ id = "http://www.watrbx.wtf/asset/?id=182491037", weight = 10 },
|
||||
{ id = "http://www.watrbx.wtf/asset/?id=182491065", weight = 10 }
|
||||
},
|
||||
dance2 = {
|
||||
{ id = "http://www.watrbx.wtf/asset/?id=182436842", weight = 10 },
|
||||
{ id = "http://www.watrbx.wtf/asset/?id=182491248", weight = 10 },
|
||||
{ id = "http://www.watrbx.wtf/asset/?id=182491277", weight = 10 }
|
||||
},
|
||||
dance3 = {
|
||||
{ id = "http://www.watrbx.wtf/asset/?id=182436935", weight = 10 },
|
||||
{ id = "http://www.watrbx.wtf/asset/?id=182491368", weight = 10 },
|
||||
{ id = "http://www.watrbx.wtf/asset/?id=182491423", weight = 10 }
|
||||
},
|
||||
laugh = {
|
||||
{ id = "http://www.watrbx.wtf/asset/?id=129423131", weight = 10 }
|
||||
},
|
||||
cheer = {
|
||||
{ id = "http://www.watrbx.wtf/asset/?id=129423030", weight = 10 }
|
||||
},
|
||||
}
|
||||
local dances = {"dance1", "dance2", "dance3"}
|
||||
|
||||
-- Existance in this list signifies that it is an emote, the value indicates if it is a looping emote
|
||||
local emoteNames = { wave = false, point = false, dance1 = true, dance2 = true, dance3 = true, laugh = false, cheer = false}
|
||||
|
||||
function configureAnimationSet(name, fileList)
|
||||
if (animTable[name] ~= nil) then
|
||||
for _, connection in pairs(animTable[name].connections) do
|
||||
connection:disconnect()
|
||||
end
|
||||
end
|
||||
animTable[name] = {}
|
||||
animTable[name].count = 0
|
||||
animTable[name].totalWeight = 0
|
||||
animTable[name].connections = {}
|
||||
|
||||
-- check for config values
|
||||
local config = script:FindFirstChild(name)
|
||||
if (config ~= nil) then
|
||||
-- print("Loading anims " .. name)
|
||||
table.insert(animTable[name].connections, config.ChildAdded:connect(function(child) configureAnimationSet(name, fileList) end))
|
||||
table.insert(animTable[name].connections, config.ChildRemoved:connect(function(child) configureAnimationSet(name, fileList) end))
|
||||
local idx = 1
|
||||
for _, childPart in pairs(config:GetChildren()) do
|
||||
if (childPart:IsA("Animation")) then
|
||||
table.insert(animTable[name].connections, childPart.Changed:connect(function(property) configureAnimationSet(name, fileList) end))
|
||||
animTable[name][idx] = {}
|
||||
animTable[name][idx].anim = childPart
|
||||
local weightObject = childPart:FindFirstChild("Weight")
|
||||
if (weightObject == nil) then
|
||||
animTable[name][idx].weight = 1
|
||||
else
|
||||
animTable[name][idx].weight = weightObject.Value
|
||||
end
|
||||
animTable[name].count = animTable[name].count + 1
|
||||
animTable[name].totalWeight = animTable[name].totalWeight + animTable[name][idx].weight
|
||||
-- print(name .. " [" .. idx .. "] " .. animTable[name][idx].anim.AnimationId .. " (" .. animTable[name][idx].weight .. ")")
|
||||
idx = idx + 1
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
-- fallback to defaults
|
||||
if (animTable[name].count <= 0) then
|
||||
for idx, anim in pairs(fileList) do
|
||||
animTable[name][idx] = {}
|
||||
animTable[name][idx].anim = Instance.new("Animation")
|
||||
animTable[name][idx].anim.Name = name
|
||||
animTable[name][idx].anim.AnimationId = anim.id
|
||||
animTable[name][idx].weight = anim.weight
|
||||
animTable[name].count = animTable[name].count + 1
|
||||
animTable[name].totalWeight = animTable[name].totalWeight + anim.weight
|
||||
-- print(name .. " [" .. idx .. "] " .. anim.id .. " (" .. anim.weight .. ")")
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
-- Setup animation objects
|
||||
function scriptChildModified(child)
|
||||
local fileList = animNames[child.Name]
|
||||
if (fileList ~= nil) then
|
||||
configureAnimationSet(child.Name, fileList)
|
||||
end
|
||||
end
|
||||
|
||||
script.ChildAdded:connect(scriptChildModified)
|
||||
script.ChildRemoved:connect(scriptChildModified)
|
||||
|
||||
|
||||
for name, fileList in pairs(animNames) do
|
||||
configureAnimationSet(name, fileList)
|
||||
end
|
||||
|
||||
-- ANIMATION
|
||||
|
||||
-- declarations
|
||||
local toolAnim = "None"
|
||||
local toolAnimTime = 0
|
||||
|
||||
local jumpAnimTime = 0
|
||||
local jumpAnimDuration = 0.3
|
||||
|
||||
local toolTransitionTime = 0.1
|
||||
local fallTransitionTime = 0.3
|
||||
local jumpMaxLimbVelocity = 0.75
|
||||
|
||||
-- functions
|
||||
|
||||
function stopAllAnimations()
|
||||
local oldAnim = currentAnim
|
||||
|
||||
-- return to idle if finishing an emote
|
||||
if (emoteNames[oldAnim] ~= nil and emoteNames[oldAnim] == false) then
|
||||
oldAnim = "idle"
|
||||
end
|
||||
|
||||
currentAnim = ""
|
||||
currentAnimInstance = nil
|
||||
if (currentAnimKeyframeHandler ~= nil) then
|
||||
currentAnimKeyframeHandler:disconnect()
|
||||
end
|
||||
|
||||
if (currentAnimTrack ~= nil) then
|
||||
currentAnimTrack:Stop()
|
||||
currentAnimTrack:Destroy()
|
||||
currentAnimTrack = nil
|
||||
end
|
||||
return oldAnim
|
||||
end
|
||||
|
||||
function setAnimationSpeed(speed)
|
||||
if speed ~= currentAnimSpeed then
|
||||
currentAnimSpeed = speed
|
||||
currentAnimTrack:AdjustSpeed(currentAnimSpeed)
|
||||
end
|
||||
end
|
||||
|
||||
function keyFrameReachedFunc(frameName)
|
||||
if (frameName == "End") then
|
||||
|
||||
local repeatAnim = currentAnim
|
||||
-- return to idle if finishing an emote
|
||||
if (emoteNames[repeatAnim] ~= nil and emoteNames[repeatAnim] == false) then
|
||||
repeatAnim = "idle"
|
||||
end
|
||||
|
||||
local animSpeed = currentAnimSpeed
|
||||
playAnimation(repeatAnim, 0.0, Humanoid)
|
||||
setAnimationSpeed(animSpeed)
|
||||
end
|
||||
end
|
||||
|
||||
-- Preload animations
|
||||
function playAnimation(animName, transitionTime, humanoid)
|
||||
|
||||
local roll = math.random(1, animTable[animName].totalWeight)
|
||||
local origRoll = roll
|
||||
local idx = 1
|
||||
while (roll > animTable[animName][idx].weight) do
|
||||
roll = roll - animTable[animName][idx].weight
|
||||
idx = idx + 1
|
||||
end
|
||||
-- print(animName .. " " .. idx .. " [" .. origRoll .. "]")
|
||||
local anim = animTable[animName][idx].anim
|
||||
|
||||
-- switch animation
|
||||
if (anim ~= currentAnimInstance) then
|
||||
|
||||
if (currentAnimTrack ~= nil) then
|
||||
currentAnimTrack:Stop(transitionTime)
|
||||
currentAnimTrack:Destroy()
|
||||
end
|
||||
|
||||
currentAnimSpeed = 1.0
|
||||
|
||||
-- load it to the humanoid; get AnimationTrack
|
||||
currentAnimTrack = humanoid:LoadAnimation(anim)
|
||||
|
||||
-- play the animation
|
||||
currentAnimTrack:Play(transitionTime)
|
||||
currentAnim = animName
|
||||
currentAnimInstance = anim
|
||||
|
||||
-- set up keyframe name triggers
|
||||
if (currentAnimKeyframeHandler ~= nil) then
|
||||
currentAnimKeyframeHandler:disconnect()
|
||||
end
|
||||
currentAnimKeyframeHandler = currentAnimTrack.KeyframeReached:connect(keyFrameReachedFunc)
|
||||
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
-------------------------------------------------------------------------------------------
|
||||
-------------------------------------------------------------------------------------------
|
||||
|
||||
local toolAnimName = ""
|
||||
local toolAnimTrack = nil
|
||||
local toolAnimInstance = nil
|
||||
local currentToolAnimKeyframeHandler = nil
|
||||
|
||||
function toolKeyFrameReachedFunc(frameName)
|
||||
if (frameName == "End") then
|
||||
-- print("Keyframe : ".. frameName)
|
||||
playToolAnimation(toolAnimName, 0.0, Humanoid)
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
function playToolAnimation(animName, transitionTime, humanoid)
|
||||
|
||||
local roll = math.random(1, animTable[animName].totalWeight)
|
||||
local origRoll = roll
|
||||
local idx = 1
|
||||
while (roll > animTable[animName][idx].weight) do
|
||||
roll = roll - animTable[animName][idx].weight
|
||||
idx = idx + 1
|
||||
end
|
||||
-- print(animName .. " * " .. idx .. " [" .. origRoll .. "]")
|
||||
local anim = animTable[animName][idx].anim
|
||||
|
||||
if (toolAnimInstance ~= anim) then
|
||||
|
||||
if (toolAnimTrack ~= nil) then
|
||||
toolAnimTrack:Stop()
|
||||
toolAnimTrack:Destroy()
|
||||
transitionTime = 0
|
||||
end
|
||||
|
||||
-- load it to the humanoid; get AnimationTrack
|
||||
toolAnimTrack = humanoid:LoadAnimation(anim)
|
||||
|
||||
-- play the animation
|
||||
toolAnimTrack:Play(transitionTime)
|
||||
toolAnimName = animName
|
||||
toolAnimInstance = anim
|
||||
|
||||
currentToolAnimKeyframeHandler = toolAnimTrack.KeyframeReached:connect(toolKeyFrameReachedFunc)
|
||||
end
|
||||
end
|
||||
|
||||
function stopToolAnimations()
|
||||
local oldAnim = toolAnimName
|
||||
|
||||
if (currentToolAnimKeyframeHandler ~= nil) then
|
||||
currentToolAnimKeyframeHandler:disconnect()
|
||||
end
|
||||
|
||||
toolAnimName = ""
|
||||
toolAnimInstance = nil
|
||||
if (toolAnimTrack ~= nil) then
|
||||
toolAnimTrack:Stop()
|
||||
toolAnimTrack:Destroy()
|
||||
toolAnimTrack = nil
|
||||
end
|
||||
|
||||
|
||||
return oldAnim
|
||||
end
|
||||
|
||||
-------------------------------------------------------------------------------------------
|
||||
-------------------------------------------------------------------------------------------
|
||||
|
||||
|
||||
function onRunning(speed)
|
||||
if speed>0.01 then
|
||||
playAnimation("walk", 0.1, Humanoid)
|
||||
if currentAnimInstance and currentAnimInstance.AnimationId == "http://www.watrbx.wtf/asset/?id=180426354" then
|
||||
setAnimationSpeed(speed / 14.5)
|
||||
end
|
||||
pose = "Running"
|
||||
else
|
||||
playAnimation("idle", 0.1, Humanoid)
|
||||
pose = "Standing"
|
||||
end
|
||||
end
|
||||
|
||||
function onDied()
|
||||
pose = "Dead"
|
||||
end
|
||||
|
||||
function onJumping()
|
||||
playAnimation("jump", 0.1, Humanoid)
|
||||
jumpAnimTime = jumpAnimDuration
|
||||
pose = "Jumping"
|
||||
end
|
||||
|
||||
function onClimbing(speed)
|
||||
playAnimation("climb", 0.1, Humanoid)
|
||||
setAnimationSpeed(speed / 12.0)
|
||||
pose = "Climbing"
|
||||
end
|
||||
|
||||
function onGettingUp()
|
||||
pose = "GettingUp"
|
||||
end
|
||||
|
||||
function onFreeFall()
|
||||
if (jumpAnimTime <= 0) then
|
||||
playAnimation("fall", fallTransitionTime, Humanoid)
|
||||
end
|
||||
pose = "FreeFall"
|
||||
end
|
||||
|
||||
function onFallingDown()
|
||||
pose = "FallingDown"
|
||||
end
|
||||
|
||||
function onSeated()
|
||||
pose = "Seated"
|
||||
end
|
||||
|
||||
function onPlatformStanding()
|
||||
pose = "PlatformStanding"
|
||||
end
|
||||
|
||||
function onSwimming(speed)
|
||||
if speed>0 then
|
||||
pose = "Running"
|
||||
else
|
||||
pose = "Standing"
|
||||
end
|
||||
end
|
||||
|
||||
function getTool()
|
||||
for _, kid in ipairs(Figure:GetChildren()) do
|
||||
if kid.className == "Tool" then return kid end
|
||||
end
|
||||
return nil
|
||||
end
|
||||
|
||||
function getToolAnim(tool)
|
||||
for _, c in ipairs(tool:GetChildren()) do
|
||||
if c.Name == "toolanim" and c.className == "StringValue" then
|
||||
return c
|
||||
end
|
||||
end
|
||||
return nil
|
||||
end
|
||||
|
||||
function animateTool()
|
||||
|
||||
if (toolAnim == "None") then
|
||||
playToolAnimation("toolnone", toolTransitionTime, Humanoid)
|
||||
return
|
||||
end
|
||||
|
||||
if (toolAnim == "Slash") then
|
||||
playToolAnimation("toolslash", 0, Humanoid)
|
||||
return
|
||||
end
|
||||
|
||||
if (toolAnim == "Lunge") then
|
||||
playToolAnimation("toollunge", 0, Humanoid)
|
||||
return
|
||||
end
|
||||
end
|
||||
|
||||
function moveSit()
|
||||
RightShoulder.MaxVelocity = 0.15
|
||||
LeftShoulder.MaxVelocity = 0.15
|
||||
RightShoulder:SetDesiredAngle(3.14 /2)
|
||||
LeftShoulder:SetDesiredAngle(-3.14 /2)
|
||||
RightHip:SetDesiredAngle(3.14 /2)
|
||||
LeftHip:SetDesiredAngle(-3.14 /2)
|
||||
end
|
||||
|
||||
local lastTick = 0
|
||||
|
||||
function move(time)
|
||||
local amplitude = 1
|
||||
local frequency = 1
|
||||
local deltaTime = time - lastTick
|
||||
lastTick = time
|
||||
|
||||
local climbFudge = 0
|
||||
local setAngles = false
|
||||
|
||||
if (jumpAnimTime > 0) then
|
||||
jumpAnimTime = jumpAnimTime - deltaTime
|
||||
end
|
||||
|
||||
if (pose == "FreeFall" and jumpAnimTime <= 0) then
|
||||
playAnimation("fall", fallTransitionTime, Humanoid)
|
||||
elseif (pose == "Seated") then
|
||||
playAnimation("sit", 0.5, Humanoid)
|
||||
return
|
||||
elseif (pose == "Running") then
|
||||
playAnimation("walk", 0.1, Humanoid)
|
||||
elseif (pose == "Dead" or pose == "GettingUp" or pose == "FallingDown" or pose == "Seated" or pose == "PlatformStanding") then
|
||||
-- print("Wha " .. pose)
|
||||
stopAllAnimations()
|
||||
amplitude = 0.1
|
||||
frequency = 1
|
||||
setAngles = true
|
||||
end
|
||||
|
||||
if (setAngles) then
|
||||
desiredAngle = amplitude * math.sin(time * frequency)
|
||||
|
||||
RightShoulder:SetDesiredAngle(desiredAngle + climbFudge)
|
||||
LeftShoulder:SetDesiredAngle(desiredAngle - climbFudge)
|
||||
RightHip:SetDesiredAngle(-desiredAngle)
|
||||
LeftHip:SetDesiredAngle(-desiredAngle)
|
||||
end
|
||||
|
||||
-- Tool Animation handling
|
||||
local tool = getTool()
|
||||
if tool and tool:FindFirstChild("Handle") then
|
||||
|
||||
animStringValueObject = getToolAnim(tool)
|
||||
|
||||
if animStringValueObject then
|
||||
toolAnim = animStringValueObject.Value
|
||||
-- message recieved, delete StringValue
|
||||
animStringValueObject.Parent = nil
|
||||
toolAnimTime = time + .3
|
||||
end
|
||||
|
||||
if time > toolAnimTime then
|
||||
toolAnimTime = 0
|
||||
toolAnim = "None"
|
||||
end
|
||||
|
||||
animateTool()
|
||||
else
|
||||
stopToolAnimations()
|
||||
toolAnim = "None"
|
||||
toolAnimInstance = nil
|
||||
toolAnimTime = 0
|
||||
end
|
||||
end
|
||||
|
||||
-- connect events
|
||||
Humanoid.Died:connect(onDied)
|
||||
Humanoid.Running:connect(onRunning)
|
||||
Humanoid.Jumping:connect(onJumping)
|
||||
Humanoid.Climbing:connect(onClimbing)
|
||||
Humanoid.GettingUp:connect(onGettingUp)
|
||||
Humanoid.FreeFalling:connect(onFreeFall)
|
||||
Humanoid.FallingDown:connect(onFallingDown)
|
||||
Humanoid.Seated:connect(onSeated)
|
||||
Humanoid.PlatformStanding:connect(onPlatformStanding)
|
||||
Humanoid.Swimming:connect(onSwimming)
|
||||
|
||||
-- setup emote chat hook
|
||||
game.Players.LocalPlayer.Chatted:connect(function(msg)
|
||||
local emote = ""
|
||||
if msg == "/e dance" then
|
||||
emote = dances[math.random(1, #dances)]
|
||||
elseif (string.sub(msg, 1, 3) == "/e ") then
|
||||
emote = string.sub(msg, 4)
|
||||
elseif (string.sub(msg, 1, 7) == "/emote ") then
|
||||
emote = string.sub(msg, 8)
|
||||
end
|
||||
|
||||
if (pose == "Standing" and emoteNames[emote] ~= nil) then
|
||||
playAnimation(emote, 0.1, Humanoid)
|
||||
end
|
||||
|
||||
end)
|
||||
|
||||
|
||||
-- main program
|
||||
|
||||
local runService = game:service("RunService");
|
||||
|
||||
-- initialize to idle
|
||||
playAnimation("idle", 0.1, Humanoid)
|
||||
pose = "Standing"
|
||||
|
||||
while Figure.Parent~=nil do
|
||||
local _, time = wait(0.1)
|
||||
move(time)
|
||||
end
|
||||
|
||||
|
||||
]]></ProtectedString>
|
||||
</Properties>
|
||||
<Item class="StringValue" referent="RBX3D115054235C475E9E23460AF948BD6F">
|
||||
<Properties>
|
||||
<string name="Name">idle</string>
|
||||
<string name="Value"></string>
|
||||
</Properties>
|
||||
<Item class="Animation" referent="RBXDB67065FB85E4931999CB515B5F2012A">
|
||||
<Properties>
|
||||
<Content name="AnimationId"><url>http://www.watrbx.wtf/asset/?id=180435571</url></Content>
|
||||
<string name="Name">Animation1</string>
|
||||
</Properties>
|
||||
<Item class="NumberValue" referent="RBX9C1D89D976924979BDD8B81DA97BE114">
|
||||
<Properties>
|
||||
<string name="Name">Weight</string>
|
||||
<double name="Value">9</double>
|
||||
</Properties>
|
||||
</Item>
|
||||
</Item>
|
||||
<Item class="Animation" referent="RBXEEE171AA4C1C4802A98EA849C0B0A8AC">
|
||||
<Properties>
|
||||
<Content name="AnimationId"><url>http://www.watrbx.wtf/asset/?id=180435792</url></Content>
|
||||
<string name="Name">Animation2</string>
|
||||
</Properties>
|
||||
<Item class="NumberValue" referent="RBX37B140D9414C4473A5F27F7880B0EC4E">
|
||||
<Properties>
|
||||
<string name="Name">Weight</string>
|
||||
<double name="Value">1</double>
|
||||
</Properties>
|
||||
</Item>
|
||||
</Item>
|
||||
</Item>
|
||||
<Item class="StringValue" referent="RBX6B0595F7D6464E039C6C20310AF91669">
|
||||
<Properties>
|
||||
<string name="Name">walk</string>
|
||||
<string name="Value"></string>
|
||||
</Properties>
|
||||
<Item class="Animation" referent="RBX45D6152C54FA4EF7B0F9CBF069550557">
|
||||
<Properties>
|
||||
<Content name="AnimationId"><url>http://www.watrbx.wtf/asset/?id=180426354</url></Content>
|
||||
<string name="Name">WalkAnim</string>
|
||||
</Properties>
|
||||
</Item>
|
||||
</Item>
|
||||
<Item class="StringValue" referent="RBX304A801B2F904AA59F892145C3DA51F4">
|
||||
<Properties>
|
||||
<string name="Name">run</string>
|
||||
<string name="Value"></string>
|
||||
</Properties>
|
||||
<Item class="Animation" referent="RBXA37336981B6E454C90E45A7F01515966">
|
||||
<Properties>
|
||||
<Content name="AnimationId"><url>http://www.watrbx.wtf/asset/?id=180426354</url></Content>
|
||||
<string name="Name">RunAnim</string>
|
||||
</Properties>
|
||||
</Item>
|
||||
</Item>
|
||||
<Item class="StringValue" referent="RBX992310CD075D4083AA3FC397200F0E12">
|
||||
<Properties>
|
||||
<string name="Name">jump</string>
|
||||
<string name="Value"></string>
|
||||
</Properties>
|
||||
<Item class="Animation" referent="RBXDB0FB6EAF0A94640AD7C222F7E4E39F4">
|
||||
<Properties>
|
||||
<Content name="AnimationId"><url>http://www.watrbx.wtf/asset/?id=125750702</url></Content>
|
||||
<string name="Name">JumpAnim</string>
|
||||
</Properties>
|
||||
</Item>
|
||||
</Item>
|
||||
<Item class="StringValue" referent="RBXE784B068E17041EDBE1C80F73A8FB305">
|
||||
<Properties>
|
||||
<string name="Name">climb</string>
|
||||
<string name="Value"></string>
|
||||
</Properties>
|
||||
<Item class="Animation" referent="RBX94C1F5C954294A889B341487BAC89356">
|
||||
<Properties>
|
||||
<Content name="AnimationId"><url>http://www.watrbx.wtf/asset/?id=180436334</url></Content>
|
||||
<string name="Name">ClimbAnim</string>
|
||||
</Properties>
|
||||
</Item>
|
||||
</Item>
|
||||
<Item class="StringValue" referent="RBX40FB7BAC1B514D918FD0D59D70A13401">
|
||||
<Properties>
|
||||
<string name="Name">toolnone</string>
|
||||
<string name="Value"></string>
|
||||
</Properties>
|
||||
<Item class="Animation" referent="RBX6B27C35810754C93915CA4FE34E8EB95">
|
||||
<Properties>
|
||||
<Content name="AnimationId"><url>http://www.watrbx.wtf/asset/?id=182393478</url></Content>
|
||||
<string name="Name">ToolNoneAnim</string>
|
||||
</Properties>
|
||||
</Item>
|
||||
</Item>
|
||||
<Item class="StringValue" referent="RBX9D56FC8B85B240089A73C4C0BF994681">
|
||||
<Properties>
|
||||
<string name="Name">fall</string>
|
||||
<string name="Value"></string>
|
||||
</Properties>
|
||||
<Item class="Animation" referent="RBX0766704DC00944A88D7F0204B7AD2177">
|
||||
<Properties>
|
||||
<Content name="AnimationId"><url>http://www.watrbx.wtf/asset/?id=180436148</url></Content>
|
||||
<string name="Name">FallAnim</string>
|
||||
</Properties>
|
||||
</Item>
|
||||
</Item>
|
||||
<Item class="StringValue" referent="RBXCE77F4BD43F74ECE8CEC4CB497927D27">
|
||||
<Properties>
|
||||
<string name="Name">sit</string>
|
||||
<string name="Value"></string>
|
||||
</Properties>
|
||||
<Item class="Animation" referent="RBXBEBAA19B49FE45FB9D852B2290377C2C">
|
||||
<Properties>
|
||||
<Content name="AnimationId"><url>http://www.watrbx.wtf/asset/?id=178130996</url></Content>
|
||||
<string name="Name">SitAnim</string>
|
||||
</Properties>
|
||||
</Item>
|
||||
</Item>
|
||||
</Item>
|
||||
</roblox>
|
||||
@@ -0,0 +1,669 @@
|
||||
<roblox xmlns:xmime="http://www.w3.org/2005/05/xmlmime" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://www.watrbx.wtf/roblox.xsd" version="4">
|
||||
<External>null</External>
|
||||
<External>nil</External>
|
||||
<Item class="LocalScript" referent="RBX6FAEF2BC81AC4B2A86AB109BC483D22E">
|
||||
<Properties>
|
||||
<bool name="Disabled">false</bool>
|
||||
<Content name="LinkedSource"><null></null></Content>
|
||||
<string name="Name">Animate</string>
|
||||
<ProtectedString name="Source"><![CDATA[function waitForChild(parent, childName)
|
||||
local child = parent:findFirstChild(childName)
|
||||
if child then return child end
|
||||
while true do
|
||||
child = parent.ChildAdded:wait()
|
||||
if child.Name==childName then return child end
|
||||
end
|
||||
end
|
||||
|
||||
local Figure = script.Parent
|
||||
local Humanoid = waitForChild(Figure, "Humanoid")
|
||||
local pose = "Standing"
|
||||
|
||||
local currentAnim = ""
|
||||
local currentAnimInstance = nil
|
||||
local currentAnimTrack = nil
|
||||
local currentAnimKeyframeHandler = nil
|
||||
local currentAnimSpeed = 1.0
|
||||
local animTable = {}
|
||||
local animNames = {
|
||||
idle = {
|
||||
{ id = "rbxasset://R15021216/idle_stretch.xml", weight = 1 },
|
||||
{ id = "rbxasset://R15021216/idle_look.xml", weight = 1 },
|
||||
{ id = "rbxasset://R15021216/idle.xml", weight = 9 }
|
||||
},
|
||||
walk = {
|
||||
{ id = "rbxasset://R15021216/run.xml", weight = 10 }
|
||||
},
|
||||
run = {
|
||||
{ id = "rbxasset://R15021216/run.xml", weight = 10 }
|
||||
},
|
||||
jump = {
|
||||
{ id = "rbxasset://R15021216/jump.xml", weight = 10 }
|
||||
},
|
||||
fall = {
|
||||
{ id = "rbxasset://R15021216/falling.xml", weight = 10 }
|
||||
},
|
||||
climb = {
|
||||
{ id = "rbxasset://R15021216/climb.xml", weight = 10 }
|
||||
},
|
||||
sit = {
|
||||
{ id = "http://www.watrbx.wtf/asset/?id=434419018", weight = 10 }
|
||||
},
|
||||
toolnone = {
|
||||
{ id = "http://www.watrbx.wtf/asset/?id=434419638", weight = 10 }
|
||||
},
|
||||
toolslash = {
|
||||
{ id = "http://www.watrbx.wtf/asset/?id=434419638", weight = 10 }
|
||||
-- { id = "slash.xml", weight = 10 }
|
||||
},
|
||||
toollunge = {
|
||||
{ id = "http://www.watrbx.wtf/asset/?id=434419638", weight = 10 }
|
||||
},
|
||||
wave = {
|
||||
{ id = "http://www.watrbx.wtf/asset/?id=434420105", weight = 10 }
|
||||
},
|
||||
point = {
|
||||
{ id = "http://www.watrbx.wtf/asset/?id=434420378", weight = 10 }
|
||||
},
|
||||
dance = {
|
||||
{ id = "http://www.watrbx.wtf/asset/?id=434422187", weight = 10 },
|
||||
{ id = "http://www.watrbx.wtf/asset/?id=434422809", weight = 10 },
|
||||
{ id = "http://www.watrbx.wtf/asset/?id=434423133", weight = 10 }
|
||||
},
|
||||
dance2 = {
|
||||
{ id = "http://www.watrbx.wtf/asset/?id=434423431", weight = 10 },
|
||||
{ id = "http://www.watrbx.wtf/asset/?id=434424210", weight = 10 },
|
||||
{ id = "http://www.watrbx.wtf/asset/?id=434424519", weight = 10 }
|
||||
},
|
||||
dance3 = {
|
||||
{ id = "http://www.watrbx.wtf/asset/?id=434424825", weight = 10 },
|
||||
{ id = "http://www.watrbx.wtf/asset/?id=434425108", weight = 10 },
|
||||
{ id = "http://www.watrbx.wtf/asset/?id=434425599", weight = 10 }
|
||||
},
|
||||
laugh = {
|
||||
{ id = "http://www.watrbx.wtf/asset/?id=434421799", weight = 10 }
|
||||
},
|
||||
cheer = {
|
||||
{ id = "http://www.watrbx.wtf/asset/?id=434421226", weight = 10 }
|
||||
},
|
||||
}
|
||||
|
||||
-- Existance in this list signifies that it is an emote, the value indicates if it is a looping emote
|
||||
local emoteNames = { wave = false, point = false, dance = true, dance2 = true, dance3 = true, laugh = false, cheer = false}
|
||||
|
||||
math.randomseed(tick())
|
||||
|
||||
function configureAnimationSet(name, fileList)
|
||||
if (animTable[name] ~= nil) then
|
||||
for _, connection in pairs(animTable[name].connections) do
|
||||
connection:disconnect()
|
||||
end
|
||||
end
|
||||
animTable[name] = {}
|
||||
animTable[name].count = 0
|
||||
animTable[name].totalWeight = 0
|
||||
animTable[name].connections = {}
|
||||
|
||||
-- check for config values
|
||||
local config = script:FindFirstChild(name)
|
||||
if (config ~= nil) then
|
||||
-- print("Loading anims " .. name)
|
||||
table.insert(animTable[name].connections, config.ChildAdded:connect(function(child) configureAnimationSet(name, fileList) end))
|
||||
table.insert(animTable[name].connections, config.ChildRemoved:connect(function(child) configureAnimationSet(name, fileList) end))
|
||||
local idx = 1
|
||||
for _, childPart in pairs(config:GetChildren()) do
|
||||
if (childPart:IsA("Animation")) then
|
||||
table.insert(animTable[name].connections, childPart.Changed:connect(function(property) configureAnimationSet(name, fileList) end))
|
||||
animTable[name][idx] = {}
|
||||
animTable[name][idx].anim = childPart
|
||||
local weightObject = childPart:FindFirstChild("Weight")
|
||||
if (weightObject == nil) then
|
||||
animTable[name][idx].weight = 1
|
||||
else
|
||||
animTable[name][idx].weight = weightObject.Value
|
||||
end
|
||||
animTable[name].count = animTable[name].count + 1
|
||||
animTable[name].totalWeight = animTable[name].totalWeight + animTable[name][idx].weight
|
||||
-- print(name .. " [" .. idx .. "] " .. animTable[name][idx].anim.AnimationId .. " (" .. animTable[name][idx].weight .. ")")
|
||||
idx = idx + 1
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
-- fallback to defaults
|
||||
if (animTable[name].count <= 0) then
|
||||
for idx, anim in pairs(fileList) do
|
||||
animTable[name][idx] = {}
|
||||
animTable[name][idx].anim = Instance.new("Animation")
|
||||
animTable[name][idx].anim.Name = name
|
||||
animTable[name][idx].anim.AnimationId = anim.id
|
||||
animTable[name][idx].weight = anim.weight
|
||||
animTable[name].count = animTable[name].count + 1
|
||||
animTable[name].totalWeight = animTable[name].totalWeight + anim.weight
|
||||
-- print(name .. " [" .. idx .. "] " .. anim.id .. " (" .. anim.weight .. ")")
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
-- Setup animation objects
|
||||
function scriptChildModified(child)
|
||||
local fileList = animNames[child.Name]
|
||||
if (fileList ~= nil) then
|
||||
configureAnimationSet(child.Name, fileList)
|
||||
end
|
||||
end
|
||||
|
||||
script.ChildAdded:connect(scriptChildModified)
|
||||
script.ChildRemoved:connect(scriptChildModified)
|
||||
|
||||
|
||||
for name, fileList in pairs(animNames) do
|
||||
configureAnimationSet(name, fileList)
|
||||
end
|
||||
|
||||
-- ANIMATION
|
||||
|
||||
-- declarations
|
||||
local toolAnim = "None"
|
||||
local toolAnimTime = 0
|
||||
|
||||
local jumpAnimTime = 0
|
||||
local jumpAnimDuration = 0.31
|
||||
|
||||
local toolTransitionTime = 0.1
|
||||
local fallTransitionTime = 0.2
|
||||
|
||||
-- functions
|
||||
|
||||
function stopAllAnimations()
|
||||
local oldAnim = currentAnim
|
||||
|
||||
-- return to idle if finishing an emote
|
||||
if (emoteNames[oldAnim] ~= nil and emoteNames[oldAnim] == false) then
|
||||
oldAnim = "idle"
|
||||
end
|
||||
|
||||
currentAnim = ""
|
||||
currentAnimInstance = nil
|
||||
if (currentAnimKeyframeHandler ~= nil) then
|
||||
currentAnimKeyframeHandler:disconnect()
|
||||
end
|
||||
|
||||
if (currentAnimTrack ~= nil) then
|
||||
currentAnimTrack:Stop()
|
||||
currentAnimTrack:Destroy()
|
||||
currentAnimTrack = nil
|
||||
end
|
||||
return oldAnim
|
||||
end
|
||||
|
||||
function setAnimationSpeed(speed)
|
||||
if speed ~= currentAnimSpeed then
|
||||
currentAnimSpeed = speed
|
||||
currentAnimTrack:AdjustSpeed(currentAnimSpeed)
|
||||
end
|
||||
end
|
||||
|
||||
function keyFrameReachedFunc(frameName)
|
||||
if (frameName == "End") then
|
||||
-- print("Keyframe : ".. frameName)
|
||||
|
||||
local repeatAnim = currentAnim
|
||||
-- return to idle if finishing an emote
|
||||
if (emoteNames[repeatAnim] ~= nil and emoteNames[repeatAnim] == false) then
|
||||
repeatAnim = "idle"
|
||||
end
|
||||
|
||||
local animSpeed = currentAnimSpeed
|
||||
playAnimation(repeatAnim, 0.15, Humanoid)
|
||||
setAnimationSpeed(animSpeed)
|
||||
end
|
||||
end
|
||||
|
||||
-- Preload animations
|
||||
function playAnimation(animName, transitionTime, humanoid)
|
||||
|
||||
local roll = math.random(1, animTable[animName].totalWeight)
|
||||
local origRoll = roll
|
||||
local idx = 1
|
||||
while (roll > animTable[animName][idx].weight) do
|
||||
roll = roll - animTable[animName][idx].weight
|
||||
idx = idx + 1
|
||||
end
|
||||
|
||||
-- print(animName .. " " .. idx .. " [" .. origRoll .. "]")
|
||||
|
||||
local anim = animTable[animName][idx].anim
|
||||
|
||||
-- switch animation
|
||||
if (anim ~= currentAnimInstance) then
|
||||
|
||||
if (currentAnimTrack ~= nil) then
|
||||
currentAnimTrack:Stop(transitionTime)
|
||||
currentAnimTrack:Destroy()
|
||||
end
|
||||
|
||||
currentAnimSpeed = 1.0
|
||||
|
||||
-- load it to the humanoid; get AnimationTrack
|
||||
currentAnimTrack = humanoid:LoadAnimation(anim)
|
||||
|
||||
-- play the animation
|
||||
currentAnimTrack:Play(transitionTime)
|
||||
currentAnim = animName
|
||||
currentAnimInstance = anim
|
||||
|
||||
-- set up keyframe name triggers
|
||||
if (currentAnimKeyframeHandler ~= nil) then
|
||||
currentAnimKeyframeHandler:disconnect()
|
||||
end
|
||||
currentAnimKeyframeHandler = currentAnimTrack.KeyframeReached:connect(keyFrameReachedFunc)
|
||||
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
-------------------------------------------------------------------------------------------
|
||||
-------------------------------------------------------------------------------------------
|
||||
|
||||
local toolAnimName = ""
|
||||
local toolAnimTrack = nil
|
||||
local toolAnimInstance = nil
|
||||
local currentToolAnimKeyframeHandler = nil
|
||||
|
||||
function toolKeyFrameReachedFunc(frameName)
|
||||
if (frameName == "End") then
|
||||
-- print("Keyframe : ".. frameName)
|
||||
playToolAnimation(toolAnimName, 0.0, Humanoid)
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
function playToolAnimation(animName, transitionTime, humanoid)
|
||||
|
||||
local roll = math.random(1, animTable[animName].totalWeight)
|
||||
local origRoll = roll
|
||||
local idx = 1
|
||||
while (roll > animTable[animName][idx].weight) do
|
||||
roll = roll - animTable[animName][idx].weight
|
||||
idx = idx + 1
|
||||
end
|
||||
-- print(animName .. " * " .. idx .. " [" .. origRoll .. "]")
|
||||
local anim = animTable[animName][idx].anim
|
||||
|
||||
if (toolAnimInstance ~= anim) then
|
||||
|
||||
if (toolAnimTrack ~= nil) then
|
||||
toolAnimTrack:Stop()
|
||||
toolAnimTrack:Destroy()
|
||||
transitionTime = 0
|
||||
end
|
||||
|
||||
-- load it to the humanoid; get AnimationTrack
|
||||
toolAnimTrack = humanoid:LoadAnimation(anim)
|
||||
|
||||
-- play the animation
|
||||
toolAnimTrack:Play(transitionTime)
|
||||
toolAnimName = animName
|
||||
toolAnimInstance = anim
|
||||
|
||||
currentToolAnimKeyframeHandler = toolAnimTrack.KeyframeReached:connect(toolKeyFrameReachedFunc)
|
||||
end
|
||||
end
|
||||
|
||||
function stopToolAnimations()
|
||||
local oldAnim = toolAnimName
|
||||
|
||||
if (currentToolAnimKeyframeHandler ~= nil) then
|
||||
currentToolAnimKeyframeHandler:disconnect()
|
||||
end
|
||||
|
||||
toolAnimName = ""
|
||||
toolAnimInstance = nil
|
||||
if (toolAnimTrack ~= nil) then
|
||||
toolAnimTrack:Stop()
|
||||
toolAnimTrack:Destroy()
|
||||
toolAnimTrack = nil
|
||||
end
|
||||
|
||||
|
||||
return oldAnim
|
||||
end
|
||||
|
||||
-------------------------------------------------------------------------------------------
|
||||
-------------------------------------------------------------------------------------------
|
||||
|
||||
|
||||
function onRunning(speed)
|
||||
if speed>0.01 then
|
||||
local scale = 15.0
|
||||
playAnimation("walk", 0.1, Humanoid)
|
||||
setAnimationSpeed(speed / scale)
|
||||
pose = "Running"
|
||||
else
|
||||
playAnimation("idle", 0.1, Humanoid)
|
||||
pose = "Standing"
|
||||
end
|
||||
end
|
||||
|
||||
function onDied()
|
||||
pose = "Dead"
|
||||
end
|
||||
|
||||
function onJumping()
|
||||
playAnimation("jump", 0.1, Humanoid)
|
||||
jumpAnimTime = jumpAnimDuration
|
||||
pose = "Jumping"
|
||||
end
|
||||
|
||||
function onClimbing(speed)
|
||||
local scale = 2.0
|
||||
playAnimation("climb", 0.1, Humanoid)
|
||||
setAnimationSpeed(speed / scale)
|
||||
pose = "Climbing"
|
||||
end
|
||||
|
||||
function onGettingUp()
|
||||
pose = "GettingUp"
|
||||
end
|
||||
|
||||
function onFreeFall()
|
||||
if (jumpAnimTime <= 0) then
|
||||
playAnimation("fall", fallTransitionTime, Humanoid)
|
||||
end
|
||||
pose = "FreeFall"
|
||||
end
|
||||
|
||||
function onFallingDown()
|
||||
pose = "FallingDown"
|
||||
end
|
||||
|
||||
function onSeated()
|
||||
pose = "Seated"
|
||||
end
|
||||
|
||||
function onPlatformStanding()
|
||||
pose = "PlatformStanding"
|
||||
end
|
||||
|
||||
function onSwimming(speed)
|
||||
if speed>0 then
|
||||
pose = "Running"
|
||||
else
|
||||
pose = "Standing"
|
||||
end
|
||||
end
|
||||
|
||||
function getTool()
|
||||
for _, kid in ipairs(Figure:GetChildren()) do
|
||||
if kid.className == "Tool" then return kid end
|
||||
end
|
||||
return nil
|
||||
end
|
||||
|
||||
function getToolAnim(tool)
|
||||
for _, c in ipairs(tool:GetChildren()) do
|
||||
if c.Name == "toolanim" and c.className == "StringValue" then
|
||||
return c
|
||||
end
|
||||
end
|
||||
return nil
|
||||
end
|
||||
|
||||
function animateTool()
|
||||
|
||||
if (toolAnim == "None") then
|
||||
playToolAnimation("toolnone", toolTransitionTime, Humanoid)
|
||||
return
|
||||
end
|
||||
|
||||
if (toolAnim == "Slash") then
|
||||
playToolAnimation("toolslash", 0, Humanoid)
|
||||
return
|
||||
end
|
||||
|
||||
if (toolAnim == "Lunge") then
|
||||
playToolAnimation("toollunge", 0, Humanoid)
|
||||
return
|
||||
end
|
||||
end
|
||||
|
||||
function moveSit()
|
||||
RightShoulder.MaxVelocity = 0.15
|
||||
LeftShoulder.MaxVelocity = 0.15
|
||||
RightShoulder:SetDesiredAngle(3.14 /2)
|
||||
LeftShoulder:SetDesiredAngle(-3.14 /2)
|
||||
RightHip:SetDesiredAngle(3.14 /2)
|
||||
LeftHip:SetDesiredAngle(-3.14 /2)
|
||||
end
|
||||
|
||||
local lastTick = 0
|
||||
|
||||
function move(time)
|
||||
local amplitude = 1
|
||||
local frequency = 1
|
||||
local deltaTime = time - lastTick
|
||||
lastTick = time
|
||||
|
||||
local climbFudge = 0
|
||||
local setAngles = false
|
||||
|
||||
if (jumpAnimTime > 0) then
|
||||
jumpAnimTime = jumpAnimTime - deltaTime
|
||||
end
|
||||
|
||||
if (pose == "FreeFall" and jumpAnimTime <= 0) then
|
||||
playAnimation("fall", fallTransitionTime, Humanoid)
|
||||
elseif (pose == "Seated") then
|
||||
playAnimation("sit", 0.5, Humanoid)
|
||||
return
|
||||
elseif (pose == "Running") then
|
||||
playAnimation("walk", 0.1, Humanoid)
|
||||
elseif (pose == "Dead" or pose == "GettingUp" or pose == "FallingDown" or pose == "Seated" or pose == "PlatformStanding") then
|
||||
stopAllAnimations()
|
||||
amplitude = 0.1
|
||||
frequency = 1
|
||||
setAngles = true
|
||||
end
|
||||
|
||||
-- Tool Animation handling
|
||||
local tool = getTool()
|
||||
if tool then
|
||||
|
||||
animStringValueObject = getToolAnim(tool)
|
||||
|
||||
if animStringValueObject then
|
||||
toolAnim = animStringValueObject.Value
|
||||
-- message recieved, delete StringValue
|
||||
animStringValueObject.Parent = nil
|
||||
toolAnimTime = time + .3
|
||||
end
|
||||
|
||||
if time > toolAnimTime then
|
||||
toolAnimTime = 0
|
||||
toolAnim = "None"
|
||||
end
|
||||
|
||||
animateTool()
|
||||
else
|
||||
stopToolAnimations()
|
||||
toolAnim = "None"
|
||||
toolAnimInstance = nil
|
||||
toolAnimTime = 0
|
||||
end
|
||||
end
|
||||
|
||||
-- connect events
|
||||
Humanoid.Died:connect(onDied)
|
||||
Humanoid.Running:connect(onRunning)
|
||||
Humanoid.Jumping:connect(onJumping)
|
||||
Humanoid.Climbing:connect(onClimbing)
|
||||
Humanoid.GettingUp:connect(onGettingUp)
|
||||
Humanoid.FreeFalling:connect(onFreeFall)
|
||||
Humanoid.FallingDown:connect(onFallingDown)
|
||||
Humanoid.Seated:connect(onSeated)
|
||||
Humanoid.PlatformStanding:connect(onPlatformStanding)
|
||||
Humanoid.Swimming:connect(onSwimming)
|
||||
|
||||
-- setup emote chat hook
|
||||
Game.Players.LocalPlayer.Chatted:connect(function(msg)
|
||||
local emote = ""
|
||||
if (string.sub(msg, 1, 3) == "/e ") then
|
||||
emote = string.sub(msg, 4)
|
||||
elseif (string.sub(msg, 1, 7) == "/emote ") then
|
||||
emote = string.sub(msg, 8)
|
||||
end
|
||||
|
||||
if (pose == "Standing" and emoteNames[emote] ~= nil) then
|
||||
playAnimation(emote, 0.1, Humanoid)
|
||||
end
|
||||
-- print("===> " .. string.sub(msg, 1, 3) .. "(" .. emote .. ")")
|
||||
end)
|
||||
|
||||
|
||||
-- main program
|
||||
|
||||
local runService = game:service("RunService");
|
||||
|
||||
-- print("bottom")
|
||||
|
||||
-- initialize to idle
|
||||
playAnimation("idle", 0.1, Humanoid)
|
||||
pose = "Standing"
|
||||
|
||||
while Figure.Parent~=nil do
|
||||
local _, time = wait(0.1)
|
||||
move(time)
|
||||
end
|
||||
|
||||
|
||||
]]></ProtectedString>
|
||||
</Properties>
|
||||
<Item class="StringValue" referent="RBX46E2E332A429402F82B8165A9C0274B5">
|
||||
<Properties>
|
||||
<string name="Name">climb</string>
|
||||
<string name="Value"></string>
|
||||
</Properties>
|
||||
<Item class="Animation" referent="RBX86915EC08DCE4F59ACD120FD238F349A">
|
||||
<Properties>
|
||||
<Content name="AnimationId"><url>http://www.watrbx.wtf/asset/?id=434415851</url></Content>
|
||||
<string name="Name">ClimbAnim</string>
|
||||
</Properties>
|
||||
</Item>
|
||||
</Item>
|
||||
<Item class="StringValue" referent="RBX7A1F8B88C13549A5AF2CBF28C9EF4611">
|
||||
<Properties>
|
||||
<string name="Name">fall</string>
|
||||
<string name="Value"></string>
|
||||
</Properties>
|
||||
<Item class="Animation" referent="RBX6EC39B2515BB452D84D31E6CF36ACFDB">
|
||||
<Properties>
|
||||
<Content name="AnimationId"><url>http://www.watrbx.wtf/asset/?id=434418643</url></Content>
|
||||
<string name="Name">FallAnim</string>
|
||||
</Properties>
|
||||
</Item>
|
||||
</Item>
|
||||
<Item class="StringValue" referent="RBXC26C332F48294D14897B7BB010302641">
|
||||
<Properties>
|
||||
<string name="Name">idle</string>
|
||||
<string name="Value"></string>
|
||||
</Properties>
|
||||
<Item class="Animation" referent="RBXDF0B3CD69EE54DA1B7B732D9B92C3FAB">
|
||||
<Properties>
|
||||
<Content name="AnimationId"><url>http://www.watrbx.wtf/asset/?id=434416649</url></Content>
|
||||
<string name="Name">Animation1</string>
|
||||
</Properties>
|
||||
<Item class="NumberValue" referent="RBX61087E7864744B418198C8290A603722">
|
||||
<Properties>
|
||||
<string name="Name">Weight</string>
|
||||
<double name="Value">9</double>
|
||||
</Properties>
|
||||
</Item>
|
||||
</Item>
|
||||
<Item class="Animation" referent="RBX3BC5344B91AB441F9CFE58BDD1A8DC6A">
|
||||
<Properties>
|
||||
<Content name="AnimationId"><url>http://www.watrbx.wtf/asset/?id=434417169</url></Content>
|
||||
<string name="Name">Animation2</string>
|
||||
</Properties>
|
||||
<Item class="NumberValue" referent="RBXDD7D9684AACE428B905F512A95F5ADAA">
|
||||
<Properties>
|
||||
<string name="Name">Weight</string>
|
||||
<double name="Value">1</double>
|
||||
</Properties>
|
||||
</Item>
|
||||
</Item>
|
||||
<Item class="Animation" referent="RBXAF93B9583F91430DA4CC77653CB25B25">
|
||||
<Properties>
|
||||
<Content name="AnimationId"><url>http://www.watrbx.wtf/asset/?id=434417655</url></Content>
|
||||
<string name="Name">Animation3</string>
|
||||
</Properties>
|
||||
<Item class="NumberValue" referent="RBX8F359BD385614039BCCD8BA3195A33C6">
|
||||
<Properties>
|
||||
<string name="Name">Weight</string>
|
||||
<double name="Value">1</double>
|
||||
</Properties>
|
||||
</Item>
|
||||
</Item>
|
||||
</Item>
|
||||
<Item class="StringValue" referent="RBXFF6E3B718B0748CEBC9263C1E5F29A50">
|
||||
<Properties>
|
||||
<string name="Name">jump</string>
|
||||
<string name="Value"></string>
|
||||
</Properties>
|
||||
<Item class="Animation" referent="RBX606D26FE17D343DFB970F328093A7BBC">
|
||||
<Properties>
|
||||
<Content name="AnimationId"><url>http://www.watrbx.wtf/asset/?id=434415339</url></Content>
|
||||
<string name="Name">JumpAnim</string>
|
||||
</Properties>
|
||||
</Item>
|
||||
</Item>
|
||||
<Item class="StringValue" referent="RBX0ABEAC8348CA49D0B7C7B996BE8538E8">
|
||||
<Properties>
|
||||
<string name="Name">run</string>
|
||||
<string name="Value"></string>
|
||||
</Properties>
|
||||
<Item class="Animation" referent="RBX2E15FFA1141F46E49B530ADEEBF24EEE">
|
||||
<Properties>
|
||||
<Content name="AnimationId"><url>http://www.watrbx.wtf/asset/?id=434418038</url></Content>
|
||||
<string name="Name">RunAnim</string>
|
||||
</Properties>
|
||||
</Item>
|
||||
</Item>
|
||||
<Item class="StringValue" referent="RBX4F16A850E4334F29A5A17E6E1C0B3721">
|
||||
<Properties>
|
||||
<string name="Name">sit</string>
|
||||
<string name="Value"></string>
|
||||
</Properties>
|
||||
<Item class="Animation" referent="RBX91144ECEDB034748B333C8621651A523">
|
||||
<Properties>
|
||||
<Content name="AnimationId"><url>http://www.watrbx.wtf/asset/?id=434419018</url></Content>
|
||||
<string name="Name">SitAnim</string>
|
||||
</Properties>
|
||||
</Item>
|
||||
</Item>
|
||||
<Item class="StringValue" referent="RBXAD10A4020BA64B93AFC152DA9195F531">
|
||||
<Properties>
|
||||
<string name="Name">toolnone</string>
|
||||
<string name="Value"></string>
|
||||
</Properties>
|
||||
<Item class="Animation" referent="RBX0A920533C1844D779D82A499930C6B10">
|
||||
<Properties>
|
||||
<Content name="AnimationId"><url>http://www.watrbx.wtf/asset/?id=434419638</url></Content>
|
||||
<string name="Name">ToolNoneAnim</string>
|
||||
</Properties>
|
||||
</Item>
|
||||
</Item>
|
||||
<Item class="StringValue" referent="RBX3F4DCB146EB642F7B866DE4B65DDFD7A">
|
||||
<Properties>
|
||||
<string name="Name">walk</string>
|
||||
<string name="Value"></string>
|
||||
</Properties>
|
||||
<Item class="Animation" referent="RBXCECB9B1E254F4A7293C0327AB396AA27">
|
||||
<Properties>
|
||||
<Content name="AnimationId"><url>http://www.watrbx.wtf/asset/?id=387947975</url></Content>
|
||||
<string name="Name">WalkAnim</string>
|
||||
</Properties>
|
||||
</Item>
|
||||
</Item>
|
||||
</Item>
|
||||
</roblox>
|
||||
@@ -0,0 +1,11 @@
|
||||
<roblox xmlns:xmime="http://www.w3.org/2005/05/xmlmime" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://www.watrbx.wtf/roblox.xsd" version="4">
|
||||
<External>null</External>
|
||||
<External>nil</External>
|
||||
<Item class="Script">
|
||||
<Properties>
|
||||
<bool name="Disabled">false</bool>
|
||||
<string name="Name">Script</string>
|
||||
<string name="Source"> while script.Parent.Head==nil do 	wait(0.05) end function newSound(id) 	local sound = Instance.new("Sound") 	sound.SoundId = id 	sound.Parent = script.Parent.Head 	return sound end sDied = newSound("rbxasset://sounds/uuhhh.wav") sFallingDown = newSound("rbxasset://sounds/splat.wav") sFreeFalling = newSound("rbxasset://sounds/swoosh.wav") sGettingUp = newSound("rbxasset://sounds/hit.wav") sJumping = newSound("rbxasset://sounds/button.wav") sRunning = newSound("rbxasset://sounds/bfsl-minifigfoots1.mp3") sRunning.Looped = true function onDied() 	sDied:play() end function onState(state, sound) 	if state then 		sound:play() 	else 		sound:pause() 	end end function onRunning(speed) 	if speed>0 then 		sRunning:play() 	else 		sRunning:pause() 	end end while script.Parent.Humanoid==nil do 	wait(0.05) end h = script.Parent.Humanoid h.Died:connect(onDied) h.Running:connect(onRunning) h.Jumping:connect(function(state) onState(state, sJumping) end) h.GettingUp:connect(function(state) onState(state, sGettingUp) end) h.FreeFalling:connect(function(state) onState(state, sFreeFalling) end) h.FallingDown:connect(function(state) onState(state, sFallingDown) end) -- regeneration while true do 	local s = wait(1) 	local health=h.Health 	if health>0 and health<h.MaxHealth then 		health = health + 0.01*s*h.MaxHealth 		if health*1.05 < h.MaxHealth then 			h.Health = health 		else 			h.Health = h.MaxHealth 		end 	end end </string>
|
||||
</Properties>
|
||||
</Item>
|
||||
</roblox>
|
||||
@@ -0,0 +1,75 @@
|
||||
<roblox xmlns:xmime="http://www.w3.org/2005/05/xmlmime" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://www.watrbx.wtf/roblox.xsd" version="4">
|
||||
<External>null</External>
|
||||
<External>nil</External>
|
||||
<Item class="Script" referent="RBX0">
|
||||
<Properties>
|
||||
<bool name="Disabled">false</bool>
|
||||
<Content name="LinkedSource"><null></null></Content>
|
||||
<string name="Name">Sound</string>
|
||||
<ProtectedString name="Source">-- util
|
||||
|
||||
function waitForChild(parent, childName)
|
||||
	local child = parent:findFirstChild(childName)
|
||||
	if child then return child end
|
||||
	while true do
|
||||
		child = parent.ChildAdded:wait()
|
||||
		if child.Name==childName then return child end
|
||||
	end
|
||||
end
|
||||
|
||||
function newSound(id)
|
||||
	local sound = Instance.new("Sound")
|
||||
	sound.SoundId = id
|
||||
	sound.archivable = false
|
||||
	sound.Parent = script.Parent.Head
|
||||
	return sound
|
||||
end
|
||||
|
||||
-- declarations
|
||||
|
||||
local sDied = newSound("rbxasset://sounds/uuhhh.wav")
|
||||
local sFallingDown = newSound("rbxasset://sounds/splat.wav")
|
||||
local sFreeFalling = newSound("rbxasset://sounds/swoosh.wav")
|
||||
local sGettingUp = newSound("rbxasset://sounds/hit.wav")
|
||||
local sJumping = newSound("rbxasset://sounds/button.wav")
|
||||
local sRunning = newSound("rbxasset://sounds/bfsl-minifigfoots1.mp3")
|
||||
sRunning.Looped = true
|
||||
|
||||
local Figure = script.Parent
|
||||
local Head = waitForChild(Figure, "Head")
|
||||
local Humanoid = waitForChild(Figure, "Humanoid")
|
||||
|
||||
-- functions
|
||||
|
||||
function onDied()
|
||||
	sDied:Play()
|
||||
end
|
||||
|
||||
function onState(state, sound)
|
||||
	if state then
|
||||
		sound:Play()
|
||||
	else
|
||||
		sound:Pause()
|
||||
	end
|
||||
end
|
||||
|
||||
function onRunning(speed)
|
||||
	if speed>0.01 then
|
||||
		sRunning:Play()
|
||||
	else
|
||||
		sRunning:Pause()
|
||||
	end
|
||||
end
|
||||
|
||||
-- connect up
|
||||
|
||||
Humanoid.Died:connect(onDied)
|
||||
Humanoid.Running:connect(onRunning)
|
||||
Humanoid.Jumping:connect(function(state) onState(state, sJumping) end)
|
||||
Humanoid.GettingUp:connect(function(state) onState(state, sGettingUp) end)
|
||||
Humanoid.FreeFalling:connect(function(state) onState(state, sFreeFalling) end)
|
||||
Humanoid.FallingDown:connect(function(state) onState(state, sFallingDown) end)
|
||||
</ProtectedString>
|
||||
</Properties>
|
||||
</Item>
|
||||
</roblox>
|
||||
@@ -0,0 +1,43 @@
|
||||
<roblox xmlns:xmime="http://www.w3.org/2005/05/xmlmime" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://www.watrbx.wtf/roblox.xsd" version="4">
|
||||
<External>null</External>
|
||||
<External>nil</External>
|
||||
<Item class="Script" referent="RBX0">
|
||||
<Properties>
|
||||
<bool name="Disabled">false</bool>
|
||||
<Content name="LinkedSource"><null></null></Content>
|
||||
<string name="Name">Sound</string>
|
||||
<ProtectedString name="Source">-- util
|
||||
|
||||
function waitForChild(parent, childName)
|
||||
	local child = parent:findFirstChild(childName)
|
||||
	if child then return child end
|
||||
	while true do
|
||||
		child = parent.ChildAdded:wait()
|
||||
		if child.Name==childName then return child end
|
||||
		end
|
||||
end
|
||||
|
||||
function newSound(id, name)
|
||||
	local sound = Instance.new("Sound")
|
||||
	sound.SoundId = id
|
||||
	sound.archivable = false
|
||||
	sound.Parent = script.Parent.Head
|
||||
	sound.Name = name
|
||||
	return sound
|
||||
end
|
||||
|
||||
-- declarations
|
||||
local Figure = script.Parent
|
||||
local Head = waitForChild(Figure, "Head")
|
||||
local Humanoid = waitForChild(Figure, "Humanoid")
|
||||
|
||||
local sDied = newSound("rbxasset://sounds/uuhhh.wav", "DiedSound")
|
||||
local sFallingDown = newSound("rbxasset://sounds/splat.wav", "FallingDownSound")
|
||||
local sFreeFalling = newSound("rbxasset://sounds/swoosh.wav", "FreeFallingSound")
|
||||
local sGettingUp = newSound("rbxasset://sounds/hit.wav", "GettingUpSound")
|
||||
local sJumping = newSound("rbxasset://sounds/button.wav", "JumpingSound")
|
||||
local sRunning = newSound("rbxasset://sounds/bfsl-minifigfoots1.mp3", "RunningSound")
|
||||
sRunning.Looped = true</ProtectedString>
|
||||
</Properties>
|
||||
</Item>
|
||||
</roblox>
|
||||
@@ -0,0 +1,160 @@
|
||||
<roblox xmlns:xmime="http://www.w3.org/2005/05/xmlmime" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://www.watrbx.wtf/roblox.xsd" version="4">
|
||||
<External>null</External>
|
||||
<External>nil</External>
|
||||
<Item class="Script" referent="RBX0">
|
||||
<Properties>
|
||||
<bool name="Disabled">false</bool>
|
||||
<Content name="LinkedSource"><null></null></Content>
|
||||
<string name="Name">Sound</string>
|
||||
<ProtectedString name="Source"><![CDATA[-- util
|
||||
|
||||
function waitForChild(parent, childName)
|
||||
local child = parent:findFirstChild(childName)
|
||||
if child then return child end
|
||||
while true do
|
||||
child = parent.ChildAdded:wait()
|
||||
if child.Name==childName then return child end
|
||||
end
|
||||
end
|
||||
|
||||
function newSound(id)
|
||||
local sound = Instance.new("Sound")
|
||||
sound.SoundId = id
|
||||
sound.archivable = false
|
||||
sound.Parent = script.Parent.Head
|
||||
return sound
|
||||
end
|
||||
|
||||
-- declarations
|
||||
|
||||
local sGettingUp = newSound("rbxasset://sounds/action_get_up.mp3")
|
||||
local sDied = newSound("rbxasset://sounds/uuhhh.mp3")
|
||||
local sFreeFalling = newSound("rbxasset://sounds/action_falling.mp3")
|
||||
local sJumping = newSound("rbxasset://sounds/action_jump.mp3")
|
||||
local sLanding = newSound("rbxasset://sounds/action_jump_land.mp3")
|
||||
local sSplash = newSound("rbxasset://sounds/impact_water.mp3")
|
||||
local sRunning = newSound("rbxasset://sounds/action_footsteps_plastic.mp3")
|
||||
sRunning.Looped = true
|
||||
local sSwimming = newSound("rbxasset://sounds/action_swim.mp3")
|
||||
sSwimming.Looped = true
|
||||
local sClimbing = newSound("rbxasset://sounds/action_footsteps_plastic.mp3")
|
||||
sClimbing.Looped = true
|
||||
|
||||
local Figure = script.Parent
|
||||
local Head = waitForChild(Figure, "Head")
|
||||
local Humanoid = waitForChild(Figure, "Humanoid")
|
||||
|
||||
local prevState = "None"
|
||||
|
||||
-- functions
|
||||
|
||||
function onDied()
|
||||
stopLoopedSounds()
|
||||
sDied:Play()
|
||||
end
|
||||
|
||||
local fallCount = 0
|
||||
local fallSpeed = 0
|
||||
function onStateFall(state, sound)
|
||||
fallCount = fallCount + 1
|
||||
if state then
|
||||
sound.Volume = 0
|
||||
sound:Play()
|
||||
Spawn( function()
|
||||
local t = 0
|
||||
local thisFall = fallCount
|
||||
while t < 1.5 and fallCount == thisFall do
|
||||
local vol = math.max(t - 0.3 , 0)
|
||||
sound.Volume = vol
|
||||
wait(0.1)
|
||||
t = t + 0.1
|
||||
end
|
||||
end)
|
||||
else
|
||||
sound:Stop()
|
||||
end
|
||||
fallSpeed = math.max(fallSpeed, math.abs(Head.Velocity.Y))
|
||||
end
|
||||
|
||||
|
||||
function onStateNoStop(state, sound)
|
||||
if state then
|
||||
sound:Play()
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
function onRunning(speed)
|
||||
sClimbing:Stop()
|
||||
sSwimming:Stop()
|
||||
if (prevState == "FreeFall" and fallSpeed > 0.1) then
|
||||
local vol = math.min(1.0, math.max(0.0, (fallSpeed - 50) / 110))
|
||||
sLanding.Volume = vol
|
||||
sLanding:Play()
|
||||
fallSpeed = 0
|
||||
end
|
||||
if speed>0.5 then
|
||||
sRunning:Play()
|
||||
sRunning.Pitch = speed / 8.0
|
||||
else
|
||||
sRunning:Stop()
|
||||
end
|
||||
prevState = "Run"
|
||||
end
|
||||
|
||||
function onSwimming(speed)
|
||||
if (prevState ~= "Swim" and speed > 0.1) then
|
||||
local volume = math.min(1.0, speed / 350)
|
||||
sSplash.Volume = volume
|
||||
sSplash:Play()
|
||||
prevState = "Swim"
|
||||
end
|
||||
sClimbing:Stop()
|
||||
sRunning:Stop()
|
||||
sSwimming.Pitch = 1.6
|
||||
sSwimming:Play()
|
||||
end
|
||||
|
||||
function onClimbing(speed)
|
||||
sRunning:Stop()
|
||||
sSwimming:Stop()
|
||||
if speed>0.01 then
|
||||
sClimbing:Play()
|
||||
sClimbing.Pitch = speed / 5.5
|
||||
else
|
||||
sClimbing:Stop()
|
||||
end
|
||||
prevState = "Climb"
|
||||
end
|
||||
-- connect up
|
||||
|
||||
function stopLoopedSounds()
|
||||
sRunning:Stop()
|
||||
sClimbing:Stop()
|
||||
sSwimming:Stop()
|
||||
end
|
||||
|
||||
Humanoid.Died:connect(onDied)
|
||||
Humanoid.Running:connect(onRunning)
|
||||
Humanoid.Swimming:connect(onSwimming)
|
||||
Humanoid.Climbing:connect(onClimbing)
|
||||
Humanoid.Jumping:connect(function(state) onStateNoStop(state, sJumping) prevState = "Jump" end)
|
||||
Humanoid.GettingUp:connect(function(state) stopLoopedSounds() onStateNoStop(state, sGettingUp) prevState = "GetUp" end)
|
||||
Humanoid.FreeFalling:connect(function(state) stopLoopedSounds() onStateFall(state, sFreeFalling) prevState = "FreeFall" end)
|
||||
Humanoid.FallingDown:connect(function(state) stopLoopedSounds() end)
|
||||
Humanoid.StateChanged:connect(function(old, new)
|
||||
if not (new.Name == "Dead" or
|
||||
new.Name == "Running" or
|
||||
new.Name == "RunningNoPhysics" or
|
||||
new.Name == "Swimming" or
|
||||
new.Name == "Jumping" or
|
||||
new.Name == "GettingUp" or
|
||||
new.Name == "Freefall" or
|
||||
new.Name == "FallingDown") then
|
||||
stopLoopedSounds()
|
||||
end
|
||||
end)
|
||||
]]></ProtectedString>
|
||||
</Properties>
|
||||
</Item>
|
||||
</roblox>
|
||||
@@ -0,0 +1,317 @@
|
||||
<roblox xmlns:xmime="http://www.w3.org/2005/05/xmlmime" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://www.watrbx.wtf/roblox.xsd" version="4">
|
||||
<External>null</External>
|
||||
<External>nil</External>
|
||||
<Item class="Script" referent="RBX440EE2113E074565A1C69E447652B15D">
|
||||
<Properties>
|
||||
<bool name="Disabled">false</bool>
|
||||
<Content name="LinkedSource"><null></null></Content>
|
||||
<string name="Name">Sound</string>
|
||||
<ProtectedString name="Source"><![CDATA[---This server script creates the sounds and also exists so that it can be easily copied into an NPC and create sounds for that NPC.
|
||||
--Remove the local script if you copy this into an NPC.
|
||||
|
||||
function waitForChild(parent, childName)
|
||||
local child = parent:findFirstChild(childName)
|
||||
if child then return child end
|
||||
while true do
|
||||
child = parent.ChildAdded:wait()
|
||||
if child.Name==childName then return child end
|
||||
end
|
||||
end
|
||||
|
||||
function newSound(name, id)
|
||||
local sound = Instance.new("Sound")
|
||||
sound.SoundId = id
|
||||
sound.Name = name
|
||||
sound.archivable = false
|
||||
sound.Parent = script.Parent.Head
|
||||
return sound
|
||||
end
|
||||
|
||||
-- declarations
|
||||
|
||||
local sGettingUp = newSound("GettingUp", "rbxasset://sounds/action_get_up.mp3")
|
||||
local sDied = newSound("Died", "rbxasset://sounds/uuhhh.mp3")
|
||||
local sFreeFalling = newSound("FreeFalling", "rbxasset://sounds/action_falling.mp3")
|
||||
local sJumping = newSound("Jumping", "rbxasset://sounds/action_jump.mp3")
|
||||
local sLanding = newSound("Landing", "rbxasset://sounds/action_jump_land.mp3")
|
||||
local sSplash = newSound("Splash", "rbxasset://sounds/impact_water.mp3")
|
||||
local sRunning = newSound("Running", "rbxasset://sounds/action_footsteps_plastic.mp3")
|
||||
sRunning.Looped = true
|
||||
local sSwimming = newSound("Swimming", "rbxasset://sounds/action_swim.mp3")
|
||||
sSwimming.Looped = true
|
||||
local sClimbing = newSound("Climbing", "rbxasset://sounds/action_footsteps_plastic.mp3")
|
||||
sClimbing.Looped = true
|
||||
|
||||
local Figure = script.Parent
|
||||
local Head = waitForChild(Figure, "Head")
|
||||
local Humanoid = waitForChild(Figure, "Humanoid")
|
||||
local hasPlayer = game.Players:GetPlayerFromCharacter(script.Parent)
|
||||
local filteringEnabled = game.Workspace.FilteringEnabled
|
||||
|
||||
local prevState = "None"
|
||||
|
||||
-- functions
|
||||
|
||||
function onDied()
|
||||
stopLoopedSounds()
|
||||
sDied:Play()
|
||||
end
|
||||
|
||||
local fallCount = 0
|
||||
local fallSpeed = 0
|
||||
function onStateFall(state, sound)
|
||||
fallCount = fallCount + 1
|
||||
if state then
|
||||
sound.Volume = 0
|
||||
sound:Play()
|
||||
Spawn( function()
|
||||
local t = 0
|
||||
local thisFall = fallCount
|
||||
while t < 1.5 and fallCount == thisFall do
|
||||
local vol = math.max(t - 0.3 , 0)
|
||||
sound.Volume = vol
|
||||
wait(0.1)
|
||||
t = t + 0.1
|
||||
end
|
||||
end)
|
||||
else
|
||||
sound:Stop()
|
||||
end
|
||||
fallSpeed = math.max(fallSpeed, math.abs(Head.Velocity.Y))
|
||||
end
|
||||
|
||||
|
||||
function onStateNoStop(state, sound)
|
||||
if state then
|
||||
sound:Play()
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
function onRunning(speed)
|
||||
sClimbing:Stop()
|
||||
sSwimming:Stop()
|
||||
if (prevState == "FreeFall" and fallSpeed > 0.1) then
|
||||
local vol = math.min(1.0, math.max(0.0, (fallSpeed - 50) / 110))
|
||||
sLanding.Volume = vol
|
||||
sLanding:Play()
|
||||
fallSpeed = 0
|
||||
end
|
||||
if speed>0.5 then
|
||||
sRunning:Play()
|
||||
sRunning.Pitch = speed / 8.0
|
||||
else
|
||||
sRunning:Stop()
|
||||
end
|
||||
prevState = "Run"
|
||||
end
|
||||
|
||||
function onSwimming(speed)
|
||||
if (prevState ~= "Swim" and speed > 0.1) then
|
||||
local volume = math.min(1.0, speed / 350)
|
||||
sSplash.Volume = volume
|
||||
sSplash:Play()
|
||||
prevState = "Swim"
|
||||
end
|
||||
sClimbing:Stop()
|
||||
sRunning:Stop()
|
||||
sSwimming.Pitch = 1.6
|
||||
sSwimming:Play()
|
||||
end
|
||||
|
||||
function onClimbing(speed)
|
||||
sRunning:Stop()
|
||||
sSwimming:Stop()
|
||||
if speed>0.01 then
|
||||
sClimbing:Play()
|
||||
sClimbing.Pitch = speed / 5.5
|
||||
else
|
||||
sClimbing:Stop()
|
||||
end
|
||||
prevState = "Climb"
|
||||
end
|
||||
-- connect up
|
||||
|
||||
function stopLoopedSounds()
|
||||
sRunning:Stop()
|
||||
sClimbing:Stop()
|
||||
sSwimming:Stop()
|
||||
end
|
||||
|
||||
if hasPlayer == nil then
|
||||
Humanoid.Died:connect(onDied)
|
||||
Humanoid.Running:connect(onRunning)
|
||||
Humanoid.Swimming:connect(onSwimming)
|
||||
Humanoid.Climbing:connect(onClimbing)
|
||||
Humanoid.Jumping:connect(function(state) onStateNoStop(state, sJumping) prevState = "Jump" end)
|
||||
Humanoid.GettingUp:connect(function(state) stopLoopedSounds() onStateNoStop(state, sGettingUp) prevState = "GetUp" end)
|
||||
Humanoid.FreeFalling:connect(function(state) stopLoopedSounds() onStateFall(state, sFreeFalling) prevState = "FreeFall" end)
|
||||
Humanoid.FallingDown:connect(function(state) stopLoopedSounds() end)
|
||||
Humanoid.StateChanged:connect(function(old, new)
|
||||
if not (new.Name == "Dead" or
|
||||
new.Name == "Running" or
|
||||
new.Name == "RunningNoPhysics" or
|
||||
new.Name == "Swimming" or
|
||||
new.Name == "Jumping" or
|
||||
new.Name == "GettingUp" or
|
||||
new.Name == "Freefall" or
|
||||
new.Name == "FallingDown") then
|
||||
stopLoopedSounds()
|
||||
end
|
||||
end)
|
||||
end
|
||||
]]></ProtectedString>
|
||||
</Properties>
|
||||
<Item class="LocalScript" referent="RBXACC3E7AAF68642CC9341039CBCE06F78">
|
||||
<Properties>
|
||||
<bool name="Disabled">false</bool>
|
||||
<Content name="LinkedSource"><null></null></Content>
|
||||
<string name="Name">LocalSound</string>
|
||||
<ProtectedString name="Source"><![CDATA[--This local script will run only for the player whos character it is in. It's changes to the sounds will replicate as they are changes to the character.
|
||||
-- util
|
||||
|
||||
function waitForChild(parent, childName)
|
||||
local child = parent:findFirstChild(childName)
|
||||
if child then return child end
|
||||
while true do
|
||||
child = parent.ChildAdded:wait()
|
||||
if child.Name==childName then return child end
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
-- declarations
|
||||
|
||||
local Figure = script.Parent.Parent
|
||||
local Head = waitForChild(Figure, "Head")
|
||||
local Humanoid = waitForChild(Figure, "Humanoid")
|
||||
|
||||
local sGettingUp = waitForChild(Head, "GettingUp")
|
||||
local sDied = waitForChild(Head, "Died")
|
||||
local sFreeFalling = waitForChild(Head, "FreeFalling")
|
||||
local sJumping = waitForChild(Head, "Jumping")
|
||||
local sLanding = waitForChild(Head, "Landing")
|
||||
local sSplash = waitForChild(Head, "Splash")
|
||||
local sRunning = waitForChild(Head, "Running")
|
||||
sRunning.Looped = true
|
||||
local sSwimming = waitForChild(Head, "Swimming")
|
||||
sSwimming.Looped = true
|
||||
local sClimbing =waitForChild(Head, "Climbing")
|
||||
sClimbing.Looped = true
|
||||
|
||||
local prevState = "None"
|
||||
|
||||
-- functions
|
||||
|
||||
function onDied()
|
||||
stopLoopedSounds()
|
||||
sDied:Play()
|
||||
end
|
||||
|
||||
local fallCount = 0
|
||||
local fallSpeed = 0
|
||||
function onStateFall(state, sound)
|
||||
fallCount = fallCount + 1
|
||||
if state then
|
||||
sound.Volume = 0
|
||||
sound:Play()
|
||||
Spawn( function()
|
||||
local t = 0
|
||||
local thisFall = fallCount
|
||||
while t < 1.5 and fallCount == thisFall do
|
||||
local vol = math.max(t - 0.3 , 0)
|
||||
sound.Volume = vol
|
||||
wait(0.1)
|
||||
t = t + 0.1
|
||||
end
|
||||
end)
|
||||
else
|
||||
sound:Stop()
|
||||
end
|
||||
fallSpeed = math.max(fallSpeed, math.abs(Head.Velocity.Y))
|
||||
end
|
||||
|
||||
|
||||
function onStateNoStop(state, sound)
|
||||
if state then
|
||||
sound:Play()
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
function onRunning(speed)
|
||||
sClimbing:Stop()
|
||||
sSwimming:Stop()
|
||||
if (prevState == "FreeFall" and fallSpeed > 0.1) then
|
||||
local vol = math.min(1.0, math.max(0.0, (fallSpeed - 50) / 110))
|
||||
sLanding.Volume = vol
|
||||
sLanding:Play()
|
||||
fallSpeed = 0
|
||||
end
|
||||
if speed>0.5 then
|
||||
sRunning:Play()
|
||||
sRunning.Pitch = speed / 8.0
|
||||
else
|
||||
sRunning:Stop()
|
||||
end
|
||||
prevState = "Run"
|
||||
end
|
||||
|
||||
function onSwimming(speed)
|
||||
if (prevState ~= "Swim" and speed > 0.1) then
|
||||
local volume = math.min(1.0, speed / 350)
|
||||
sSplash.Volume = volume
|
||||
sSplash:Play()
|
||||
prevState = "Swim"
|
||||
end
|
||||
sClimbing:Stop()
|
||||
sRunning:Stop()
|
||||
sSwimming.Pitch = 1.6
|
||||
sSwimming:Play()
|
||||
end
|
||||
|
||||
function onClimbing(speed)
|
||||
sRunning:Stop()
|
||||
sSwimming:Stop()
|
||||
if speed>0.01 then
|
||||
sClimbing:Play()
|
||||
sClimbing.Pitch = speed / 5.5
|
||||
else
|
||||
sClimbing:Stop()
|
||||
end
|
||||
prevState = "Climb"
|
||||
end
|
||||
-- connect up
|
||||
|
||||
function stopLoopedSounds()
|
||||
sRunning:Stop()
|
||||
sClimbing:Stop()
|
||||
sSwimming:Stop()
|
||||
end
|
||||
|
||||
Humanoid.Died:connect(onDied)
|
||||
Humanoid.Running:connect(onRunning)
|
||||
Humanoid.Swimming:connect(onSwimming)
|
||||
Humanoid.Climbing:connect(onClimbing)
|
||||
Humanoid.Jumping:connect(function(state) onStateNoStop(state, sJumping) prevState = "Jump" end)
|
||||
Humanoid.GettingUp:connect(function(state) stopLoopedSounds() onStateNoStop(state, sGettingUp) prevState = "GetUp" end)
|
||||
Humanoid.FreeFalling:connect(function(state) stopLoopedSounds() onStateFall(state, sFreeFalling) prevState = "FreeFall" end)
|
||||
Humanoid.FallingDown:connect(function(state) stopLoopedSounds() end)
|
||||
Humanoid.StateChanged:connect(function(old, new)
|
||||
if not (new.Name == "Dead" or
|
||||
new.Name == "Running" or
|
||||
new.Name == "RunningNoPhysics" or
|
||||
new.Name == "Swimming" or
|
||||
new.Name == "Jumping" or
|
||||
new.Name == "GettingUp" or
|
||||
new.Name == "Freefall" or
|
||||
new.Name == "FallingDown") then
|
||||
stopLoopedSounds()
|
||||
end
|
||||
end)
|
||||
|
||||
]]></ProtectedString>
|
||||
</Properties>
|
||||
</Item>
|
||||
</Item>
|
||||
</roblox>
|
||||
@@ -0,0 +1,12 @@
|
||||
<roblox xmlns:xmime="http://www.w3.org/2005/05/xmlmime" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://www.watrbx.wtf/roblox.xsd" version="4">
|
||||
<External>null</External>
|
||||
<External>nil</External>
|
||||
<Item class="Script">
|
||||
<Properties>
|
||||
<bool name="Disabled">false</bool>
|
||||
<string name="Name">Static</string>
|
||||
<string name="Source">local Figure = script.Parent local Torso = Figure:findFirstChild("Torso") Torso:makeJoints()</string>
|
||||
<bool name="archivable">true</bool>
|
||||
</Properties>
|
||||
</Item>
|
||||
</roblox>
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,737 @@
|
||||
<roblox xmlns:xmime="http://www.w3.org/2005/05/xmlmime" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://www.watrbx.wtf/roblox.xsd" version="4">
|
||||
<External>null</External>
|
||||
<External>nil</External>
|
||||
<utterance>Use the Chat menu to talk to me.</utterance>
|
||||
<utterance>I can only see menu chats.</utterance>
|
||||
<utterance>
|
||||
Hello
|
||||
<utterance>
|
||||
Hi
|
||||
<utterance>Hi there!</utterance>
|
||||
<utterance>Hi everyone</utterance>
|
||||
</utterance>
|
||||
<utterance>
|
||||
Howdy
|
||||
<utterance>Howdy partner!</utterance>
|
||||
</utterance>
|
||||
<utterance>
|
||||
Greetings
|
||||
<utterance>Greetings everyone</utterance>
|
||||
<utterance>Greetings Robloxians!</utterance>
|
||||
<utterance>Seasons greetings!</utterance>
|
||||
</utterance>
|
||||
<utterance>
|
||||
Welcome
|
||||
<utterance>Welcome to my place</utterance>
|
||||
<utterance>Welcome to our base</utterance>
|
||||
<utterance>Welcome to my barbeque</utterance>
|
||||
</utterance>
|
||||
<utterance>Hey there!</utterance>
|
||||
<utterance>
|
||||
What's up?
|
||||
<utterance>How are you doing?</utterance>
|
||||
<utterance>How's it going?</utterance>
|
||||
<utterance>What's new?</utterance>
|
||||
</utterance>
|
||||
<utterance>
|
||||
Good day
|
||||
<utterance>Good morning</utterance>
|
||||
<utterance>Good afternoon</utterance>
|
||||
<utterance>Good evening</utterance>
|
||||
<utterance>Good night</utterance>
|
||||
</utterance>
|
||||
<utterance>
|
||||
Silly
|
||||
<utterance>Waaaaaaaz up?!</utterance>
|
||||
<utterance>Hullo!</utterance>
|
||||
<utterance>Behold greatness, mortals!</utterance>
|
||||
<utterance>Pardon me, is this Sparta?</utterance>
|
||||
<utterance>THIS IS SPARTAAAA!</utterance>
|
||||
</utterance>
|
||||
<utterance>
|
||||
Happy Holidays!
|
||||
<utterance>Happy New Year!</utterance>
|
||||
<utterance>Happy Valentine's Day!</utterance>
|
||||
<utterance>Beware the Ides of March!</utterance>
|
||||
<utterance>Happy St. Patrick's Day! </utterance>
|
||||
<utterance>Happy Easter!</utterance>
|
||||
<utterance>Happy Earth Day!</utterance>
|
||||
<utterance>Happy 4th of July!</utterance>
|
||||
<utterance>Happy Thanksgiving!</utterance>
|
||||
<utterance>Happy Halloween!</utterance>
|
||||
<utterance>Happy Hanukkah!</utterance>
|
||||
<utterance>Merry Christmas!</utterance>
|
||||
<utterance>Happy Halloween!</utterance>
|
||||
<utterance>Happy Earth Day!</utterance>
|
||||
<utterance>Happy May Day!</utterance>
|
||||
<utterance>Happy Towel Day!</utterance>
|
||||
<utterance>Happy ROBLOX Day!</utterance>
|
||||
<utterance>Happy LOL Day!</utterance>
|
||||
</utterance>
|
||||
</utterance>
|
||||
<utterance>
|
||||
Goodbye
|
||||
<utterance>
|
||||
Good Night
|
||||
<utterance>Sweet dreams</utterance>
|
||||
<utterance>Go to sleep!</utterance>
|
||||
<utterance>Lights out!</utterance>
|
||||
<utterance>Bedtime</utterance>
|
||||
<utterance>Going to bed now</utterance>
|
||||
</utterance>
|
||||
<utterance>
|
||||
Later
|
||||
<utterance>See ya later</utterance>
|
||||
<utterance>Later gator!</utterance>
|
||||
<utterance>See you tomorrow</utterance>
|
||||
</utterance>
|
||||
<utterance>
|
||||
Bye
|
||||
<utterance>Hasta la bye bye!</utterance>
|
||||
</utterance>
|
||||
<utterance>I'll be right back</utterance>
|
||||
<utterance>I have to go</utterance>
|
||||
<utterance>
|
||||
Farewell
|
||||
<utterance>Take care</utterance>
|
||||
<utterance>Have a nice day</utterance>
|
||||
<utterance>Goodluck!</utterance>
|
||||
<utterance>Ta-ta for now!</utterance>
|
||||
</utterance>
|
||||
<utterance>
|
||||
Peace
|
||||
<utterance>Peace out!</utterance>
|
||||
<utterance>Peace dudes!</utterance>
|
||||
<utterance>Rest in pieces!</utterance>
|
||||
</utterance>
|
||||
<utterance>
|
||||
Silly
|
||||
<utterance>To the batcave!</utterance>
|
||||
<utterance>Over and out!</utterance>
|
||||
<utterance>Happy trails!</utterance>
|
||||
<utterance>I've got to book it!</utterance>
|
||||
<utterance>Tootles!</utterance>
|
||||
<utterance>Smell you later!</utterance>
|
||||
<utterance>GG!</utterance>
|
||||
<utterance>My house is on fire! gtg.</utterance>
|
||||
</utterance>
|
||||
</utterance>
|
||||
<utterance>
|
||||
Friend
|
||||
<utterance>Wanna be friends?</utterance>
|
||||
<utterance>
|
||||
Follow me
|
||||
<utterance>Come to my place!</utterance>
|
||||
<utterance>Come to my base!</utterance>
|
||||
<utterance>Follow me, team!</utterance>
|
||||
<utterance>Follow me</utterance>
|
||||
</utterance>
|
||||
<utterance>
|
||||
Your place is cool
|
||||
<utterance>Your place is fun</utterance>
|
||||
<utterance>Your place is awesome</utterance>
|
||||
<utterance>Your place looks good</utterance>
|
||||
<utterance>This place is awesome!</utterance>
|
||||
</utterance>
|
||||
<utterance>
|
||||
Thank you
|
||||
<utterance>Thanks for playing</utterance>
|
||||
<utterance>Thanks for visiting</utterance>
|
||||
<utterance>Thanks for everything</utterance>
|
||||
<utterance>No, thank you</utterance>
|
||||
<utterance>Thanx</utterance>
|
||||
</utterance>
|
||||
<utterance>
|
||||
No problem
|
||||
<utterance>Don't worry</utterance>
|
||||
<utterance>That's ok</utterance>
|
||||
<utterance>np</utterance>
|
||||
</utterance>
|
||||
<utterance>
|
||||
You are ...
|
||||
<utterance>You are great!</utterance>
|
||||
<utterance>You are good!</utterance>
|
||||
<utterance>You are cool!</utterance>
|
||||
<utterance>You are funny!</utterance>
|
||||
<utterance>You are silly!</utterance>
|
||||
<utterance>You are awesome!</utterance>
|
||||
<utterance>You are doing something I don't like, please stop</utterance>
|
||||
</utterance>
|
||||
<utterance>
|
||||
I like ...
|
||||
<utterance>I like your name</utterance>
|
||||
<utterance>I like your shirt</utterance>
|
||||
<utterance>I like your place</utterance>
|
||||
<utterance>I like your style</utterance>
|
||||
<utterance>I like you</utterance>
|
||||
<utterance>I like items</utterance>
|
||||
<utterance>I like money</utterance>
|
||||
</utterance>
|
||||
<utterance>
|
||||
Sorry
|
||||
<utterance>My bad!</utterance>
|
||||
<utterance>I'm sorry</utterance>
|
||||
<utterance>Whoops!</utterance>
|
||||
<utterance>Please forgive me.</utterance>
|
||||
<utterance>I forgive you.</utterance>
|
||||
<utterance>I didn't mean to do that.</utterance>
|
||||
<utterance>Sorry, I'll stop now.</utterance>
|
||||
</utterance>
|
||||
</utterance>
|
||||
<utterance>
|
||||
Questions
|
||||
<utterance>
|
||||
Who?
|
||||
<utterance>Who wants to be my friend?</utterance>
|
||||
<utterance>Who wants to be on my team?</utterance>
|
||||
<utterance>Who made this brilliant game?</utterance>
|
||||
<utterance>LOLWHO?</utterance>
|
||||
</utterance>
|
||||
<utterance>
|
||||
What?
|
||||
<utterance>What is your favorite animal?</utterance>
|
||||
<utterance>What is your favorite game?</utterance>
|
||||
<utterance>What is your favorite movie?</utterance>
|
||||
<utterance>What is your favorite TV show?</utterance>
|
||||
<utterance>What is your favorite music?</utterance>
|
||||
<utterance>What are your hobbies?</utterance>
|
||||
<utterance>LOLWUT?</utterance>
|
||||
</utterance>
|
||||
<utterance>
|
||||
When?
|
||||
<utterance>When are you online?</utterance>
|
||||
<utterance>When is the new version coming out?</utterance>
|
||||
<utterance>When can we play again?</utterance>
|
||||
<utterance>When will your place be done?</utterance>
|
||||
</utterance>
|
||||
<utterance>
|
||||
Where?
|
||||
<utterance>Where do you want to go?</utterance>
|
||||
<utterance>Where are you going?</utterance>
|
||||
<utterance>Where am I?!</utterance>
|
||||
<utterance>Where did you go?</utterance>
|
||||
</utterance>
|
||||
<utterance>
|
||||
How?
|
||||
<utterance>How are you today?</utterance>
|
||||
<utterance>How did you make this cool place?</utterance>
|
||||
<utterance>LOLHOW?</utterance>
|
||||
</utterance>
|
||||
<utterance>
|
||||
Can I...
|
||||
<utterance>Can I have a tour?</utterance>
|
||||
<utterance>Can I be on your team?</utterance>
|
||||
<utterance>Can I be your friend?</utterance>
|
||||
<utterance>Can I try something?</utterance>
|
||||
<utterance>Can I have that please?</utterance>
|
||||
<utterance>Can I have that back please?</utterance>
|
||||
<utterance>Can I have borrow your hat?</utterance>
|
||||
<utterance>Can I have borrow your gear?</utterance>
|
||||
</utterance>
|
||||
</utterance>
|
||||
<utterance>
|
||||
Answers
|
||||
<utterance>
|
||||
You need help?
|
||||
<utterance>Check out the news section</utterance>
|
||||
<utterance>Check out the help section</utterance>
|
||||
<utterance>Read the wiki!</utterance>
|
||||
<utterance>All the answers are in the wiki!</utterance>
|
||||
<utterance>I will help you with this.</utterance>
|
||||
</utterance>
|
||||
<utterance>
|
||||
Some people ...
|
||||
<utterance>Me</utterance>
|
||||
<utterance>Not me</utterance>
|
||||
<utterance>You</utterance>
|
||||
<utterance>All of us</utterance>
|
||||
<utterance>Everyone but you</utterance>
|
||||
<utterance>Builderman!</utterance>
|
||||
<utterance>Telamon!</utterance>
|
||||
<utterance>My team</utterance>
|
||||
<utterance>My group</utterance>
|
||||
<utterance>Mom</utterance>
|
||||
<utterance>Dad</utterance>
|
||||
<utterance>Sister</utterance>
|
||||
<utterance>Brother</utterance>
|
||||
<utterance>Cousin</utterance>
|
||||
<utterance>Grandparent</utterance>
|
||||
<utterance>Friend</utterance>
|
||||
</utterance>
|
||||
<utterance>
|
||||
Time ...
|
||||
<utterance>In the morning</utterance>
|
||||
<utterance>In the afternoon</utterance>
|
||||
<utterance>At night</utterance>
|
||||
<utterance>Tomorrow</utterance>
|
||||
<utterance>This week</utterance>
|
||||
<utterance>This month</utterance>
|
||||
<utterance>Sometime</utterance>
|
||||
<utterance>Sometimes</utterance>
|
||||
<utterance>Whenever you want</utterance>
|
||||
<utterance>Never</utterance>
|
||||
<utterance>After this</utterance>
|
||||
<utterance>In 10 minutes</utterance>
|
||||
<utterance>In a couple hours</utterance>
|
||||
<utterance>In a couple days</utterance>
|
||||
</utterance>
|
||||
<utterance>
|
||||
Animals
|
||||
<utterance>
|
||||
Cats
|
||||
<utterance>Lion</utterance>
|
||||
<utterance>Tiger</utterance>
|
||||
<utterance>Leopard</utterance>
|
||||
<utterance>Cheetah</utterance>
|
||||
</utterance>
|
||||
<utterance>
|
||||
Dogs
|
||||
<utterance>Wolves</utterance>
|
||||
<utterance>Beagle</utterance>
|
||||
<utterance>Collie</utterance>
|
||||
<utterance>Dalmatian</utterance>
|
||||
<utterance>Poodle</utterance>
|
||||
<utterance>Spaniel</utterance>
|
||||
<utterance>Shepherd</utterance>
|
||||
<utterance>Terrier</utterance>
|
||||
<utterance>Retriever</utterance>
|
||||
</utterance>
|
||||
<utterance>
|
||||
Horses
|
||||
<utterance>Ponies</utterance>
|
||||
<utterance>Stallions</utterance>
|
||||
<utterance>Pwnyz</utterance>
|
||||
</utterance>
|
||||
<utterance>
|
||||
Reptiles
|
||||
<utterance>Dinosaurs</utterance>
|
||||
<utterance>Lizards</utterance>
|
||||
<utterance>Snakes</utterance>
|
||||
<utterance>Turtles!</utterance>
|
||||
</utterance>
|
||||
<utterance>Hamster</utterance>
|
||||
<utterance>Monkey</utterance>
|
||||
<utterance>Bears</utterance>
|
||||
<utterance>
|
||||
Fish
|
||||
<utterance>Goldfish</utterance>
|
||||
<utterance>Sharks</utterance>
|
||||
<utterance>Sea Bass</utterance>
|
||||
<utterance>Halibut</utterance>
|
||||
<utterance>Tropical Fish</utterance>
|
||||
</utterance>
|
||||
<utterance>
|
||||
Birds
|
||||
<utterance>Eagles</utterance>
|
||||
<utterance>Penguins</utterance>
|
||||
<utterance>Parakeets</utterance>
|
||||
<utterance>Owls</utterance>
|
||||
<utterance>Hawks</utterance>
|
||||
<utterance>Pidgeons</utterance>
|
||||
</utterance>
|
||||
<utterance>Elephants</utterance>
|
||||
<utterance>
|
||||
Mythical Beasts
|
||||
<utterance>Dragons</utterance>
|
||||
<utterance>Unicorns</utterance>
|
||||
<utterance>Sea Serpents</utterance>
|
||||
<utterance>Sphinx</utterance>
|
||||
<utterance>Cyclops</utterance>
|
||||
<utterance>Minotaurs</utterance>
|
||||
<utterance>Goblins</utterance>
|
||||
<utterance>Honest Politicians</utterance>
|
||||
<utterance>Ghosts</utterance>
|
||||
<utterance>Scylla and Charybdis</utterance>
|
||||
</utterance>
|
||||
</utterance>
|
||||
<utterance>
|
||||
Games
|
||||
<utterance>
|
||||
Roblox
|
||||
<utterance>BrickBattle</utterance>
|
||||
<utterance>Community Building</utterance>
|
||||
<utterance>Roblox Minigames</utterance>
|
||||
<utterance>Contest Place</utterance>
|
||||
</utterance>
|
||||
<utterance>Action</utterance>
|
||||
<utterance>Puzzle</utterance>
|
||||
<utterance>Strategy</utterance>
|
||||
<utterance>Racing</utterance>
|
||||
<utterance>RPG</utterance>
|
||||
<utterance>Obstacle Course</utterance>
|
||||
<utterance>Tycoon</utterance>
|
||||
<utterance>
|
||||
Board games
|
||||
<utterance>Chess</utterance>
|
||||
<utterance>Checkers</utterance>
|
||||
<utterance>Settlers of Catan</utterance>
|
||||
<utterance>Tigris and Euphrates</utterance>
|
||||
<utterance>El Grande</utterance>
|
||||
<utterance>Stratego</utterance>
|
||||
<utterance>Carcassonne</utterance>
|
||||
</utterance>
|
||||
</utterance>
|
||||
<utterance>
|
||||
Sports
|
||||
<utterance>Hockey</utterance>
|
||||
<utterance>Soccer</utterance>
|
||||
<utterance>Football</utterance>
|
||||
<utterance>Baseball</utterance>
|
||||
<utterance>Basketball</utterance>
|
||||
<utterance>Volleyball</utterance>
|
||||
<utterance>Tennis</utterance>
|
||||
<utterance>Sports team practice</utterance>
|
||||
<utterance>
|
||||
Watersports
|
||||
<utterance>Surfing</utterance>
|
||||
<utterance>Swimming</utterance>
|
||||
<utterance>Water Polo</utterance>
|
||||
</utterance>
|
||||
<utterance>
|
||||
Winter sports
|
||||
<utterance>Skiing</utterance>
|
||||
<utterance>Snowboarding</utterance>
|
||||
<utterance>Sledding</utterance>
|
||||
<utterance>Skating</utterance>
|
||||
</utterance>
|
||||
<utterance>
|
||||
Adventure
|
||||
<utterance>Rock climbing</utterance>
|
||||
<utterance>Hiking</utterance>
|
||||
<utterance>Fishing</utterance>
|
||||
<utterance>Horseback riding</utterance>
|
||||
</utterance>
|
||||
<utterance>
|
||||
Wacky
|
||||
<utterance>Foosball</utterance>
|
||||
<utterance>Calvinball</utterance>
|
||||
<utterance>Croquet</utterance>
|
||||
<utterance>Cricket</utterance>
|
||||
<utterance>Dodgeball</utterance>
|
||||
<utterance>Squash</utterance>
|
||||
<utterance>Trampoline</utterance>
|
||||
</utterance>
|
||||
</utterance>
|
||||
<utterance>
|
||||
Movies/TV
|
||||
<utterance>Science Fiction</utterance>
|
||||
<utterance>
|
||||
Animated
|
||||
<utterance>Anime</utterance>
|
||||
</utterance>
|
||||
<utterance>Comedy</utterance>
|
||||
<utterance>Romantic</utterance>
|
||||
<utterance>Action</utterance>
|
||||
<utterance>Fantasy</utterance>
|
||||
</utterance>
|
||||
<utterance>
|
||||
Music
|
||||
<utterance>Country</utterance>
|
||||
<utterance>Jazz</utterance>
|
||||
<utterance>Rap</utterance>
|
||||
<utterance>Hip-hop</utterance>
|
||||
<utterance>Techno</utterance>
|
||||
<utterance>Classical</utterance>
|
||||
<utterance>Pop</utterance>
|
||||
<utterance>Rock</utterance>
|
||||
</utterance>
|
||||
<utterance>
|
||||
Hobbies
|
||||
<utterance>
|
||||
Computers
|
||||
<utterance>Building computers</utterance>
|
||||
<utterance>Videogames</utterance>
|
||||
<utterance>Coding</utterance>
|
||||
<utterance>Hacking</utterance>
|
||||
</utterance>
|
||||
<utterance>
|
||||
The Internet
|
||||
<utterance>lol. teh internets!</utterance>
|
||||
<utterance>Watching vids</utterance>
|
||||
</utterance>
|
||||
<utterance>Dance</utterance>
|
||||
<utterance>Gymnastics</utterance>
|
||||
<utterance>
|
||||
Martial Arts
|
||||
<utterance>Karate</utterance>
|
||||
<utterance>Judo</utterance>
|
||||
<utterance>Taikwon Do</utterance>
|
||||
<utterance>Wushu</utterance>
|
||||
<utterance>Street fighting</utterance>
|
||||
</utterance>
|
||||
<utterance>Listening to music</utterance>
|
||||
<utterance>
|
||||
Music lessons
|
||||
<utterance>Playing in my band</utterance>
|
||||
<utterance>Playing piano</utterance>
|
||||
<utterance>Playing guitar</utterance>
|
||||
<utterance>Playing violin</utterance>
|
||||
<utterance>Playing drums</utterance>
|
||||
<utterance>Playing a weird instrument</utterance>
|
||||
</utterance>
|
||||
<utterance>Arts and crafts</utterance>
|
||||
</utterance>
|
||||
<utterance>
|
||||
Location
|
||||
<utterance>
|
||||
USA
|
||||
<utterance>
|
||||
West
|
||||
<utterance>Alaska</utterance>
|
||||
<utterance>Arizona</utterance>
|
||||
<utterance>California</utterance>
|
||||
<utterance>Colorado</utterance>
|
||||
<utterance>Hawaii</utterance>
|
||||
<utterance>Idaho</utterance>
|
||||
<utterance>Montana</utterance>
|
||||
<utterance>Nevada</utterance>
|
||||
<utterance>New Mexico</utterance>
|
||||
<utterance>Oregon</utterance>
|
||||
<utterance>Utah</utterance>
|
||||
<utterance>Washington</utterance>
|
||||
<utterance>Wyoming</utterance>
|
||||
</utterance>
|
||||
<utterance>
|
||||
Midwest
|
||||
<utterance>Illinois</utterance>
|
||||
<utterance>Indiana</utterance>
|
||||
<utterance>Iowa</utterance>
|
||||
<utterance>Kansas</utterance>
|
||||
<utterance>Michigan</utterance>
|
||||
<utterance>Minnesota</utterance>
|
||||
<utterance>Missouri</utterance>
|
||||
<utterance>Nebraska</utterance>
|
||||
<utterance>North Dakota</utterance>
|
||||
<utterance>Ohio</utterance>
|
||||
<utterance>South Dakota</utterance>
|
||||
<utterance>Wisconsin</utterance>
|
||||
</utterance>
|
||||
<utterance>
|
||||
Northeast
|
||||
<utterance>Connecticut</utterance>
|
||||
<utterance>Delaware</utterance>
|
||||
<utterance>Maine</utterance>
|
||||
<utterance>Maryland</utterance>
|
||||
<utterance>Massachusetts</utterance>
|
||||
<utterance>New Hampshire</utterance>
|
||||
<utterance>New Jersey</utterance>
|
||||
<utterance>New York</utterance>
|
||||
<utterance>Pennsylvania</utterance>
|
||||
<utterance>Rhode Island</utterance>
|
||||
<utterance>Vermont</utterance>
|
||||
</utterance>
|
||||
<utterance>
|
||||
South
|
||||
<utterance>Alabama</utterance>
|
||||
<utterance>Arkansas</utterance>
|
||||
<utterance>Florida</utterance>
|
||||
<utterance>Georgia</utterance>
|
||||
<utterance>Kentucky</utterance>
|
||||
<utterance>Louisiana</utterance>
|
||||
<utterance>Mississippi</utterance>
|
||||
<utterance>North Carolina</utterance>
|
||||
<utterance>Oklahoma</utterance>
|
||||
<utterance>South Carolina</utterance>
|
||||
<utterance>Tennessee</utterance>
|
||||
<utterance>Texas</utterance>
|
||||
<utterance>Virginia</utterance>
|
||||
<utterance>West Virginia</utterance>
|
||||
</utterance>
|
||||
</utterance>
|
||||
<utterance>
|
||||
Canada
|
||||
<utterance>Alberta</utterance>
|
||||
<utterance>British Columbia</utterance>
|
||||
<utterance>Manitoba</utterance>
|
||||
<utterance>New Brunswick</utterance>
|
||||
<utterance>Newfoundland</utterance>
|
||||
<utterance>Northwest Territories</utterance>
|
||||
<utterance>Nova Scotia</utterance>
|
||||
<utterance>Nunavut</utterance>
|
||||
<utterance>Ontario</utterance>
|
||||
<utterance>Prince Edward Island</utterance>
|
||||
<utterance>Quebec</utterance>
|
||||
<utterance>Saskatchewan</utterance>
|
||||
<utterance>Yukon</utterance>
|
||||
</utterance>
|
||||
<utterance>Mexico</utterance>
|
||||
<utterance>Central America</utterance>
|
||||
<utterance>
|
||||
Europe
|
||||
<utterance>
|
||||
Great Britain
|
||||
<utterance>England</utterance>
|
||||
<utterance>Scotland</utterance>
|
||||
<utterance>Wales</utterance>
|
||||
<utterance>Northern Ireland</utterance>
|
||||
</utterance>
|
||||
<utterance>France</utterance>
|
||||
<utterance>Germany</utterance>
|
||||
<utterance>Spain</utterance>
|
||||
<utterance>Italy</utterance>
|
||||
<utterance>Poland</utterance>
|
||||
<utterance>Switzerland</utterance>
|
||||
<utterance>Greece</utterance>
|
||||
<utterance>Romania</utterance>
|
||||
<utterance>Netherlands</utterance>
|
||||
</utterance>
|
||||
<utterance>
|
||||
Asia
|
||||
<utterance>China</utterance>
|
||||
<utterance>India</utterance>
|
||||
<utterance>Japan</utterance>
|
||||
<utterance>Korea</utterance>
|
||||
<utterance>Russia</utterance>
|
||||
<utterance>Vietnam</utterance>
|
||||
</utterance>
|
||||
<utterance>
|
||||
South America
|
||||
<utterance>Argentina</utterance>
|
||||
<utterance>Brazil</utterance>
|
||||
</utterance>
|
||||
<utterance>
|
||||
Africa
|
||||
<utterance>Eygpt</utterance>
|
||||
<utterance>Swaziland</utterance>
|
||||
</utterance>
|
||||
<utterance>Australia</utterance>
|
||||
<utterance>Middle East</utterance>
|
||||
<utterance>Antarctica</utterance>
|
||||
<utterance>New Zealand</utterance>
|
||||
</utterance>
|
||||
<utterance>
|
||||
Age
|
||||
<utterance>Rugrat</utterance>
|
||||
<utterance>Kid</utterance>
|
||||
<utterance>Tween</utterance>
|
||||
<utterance>Teen</utterance>
|
||||
<utterance>Twenties</utterance>
|
||||
<utterance>Old</utterance>
|
||||
<utterance>Ancient</utterance>
|
||||
<utterance>Mesozoic</utterance>
|
||||
<utterance>I don't want to say my age. Don't ask.</utterance>
|
||||
</utterance>
|
||||
<utterance>
|
||||
Mood
|
||||
<utterance>Good</utterance>
|
||||
<utterance>Great!</utterance>
|
||||
<utterance>Not bad</utterance>
|
||||
<utterance>Sad</utterance>
|
||||
<utterance>Hyper</utterance>
|
||||
<utterance>Chill</utterance>
|
||||
<utterance>Happy</utterance>
|
||||
<utterance>Kind of mad</utterance>
|
||||
</utterance>
|
||||
<utterance>Boy</utterance>
|
||||
<utterance>Girl</utterance>
|
||||
<utterance>I don't want to say boy or girl. Don't ask.</utterance>
|
||||
</utterance>
|
||||
<utterance>
|
||||
Game
|
||||
<utterance>Let's build</utterance>
|
||||
<utterance>Let's battle</utterance>
|
||||
<utterance>Nice one!</utterance>
|
||||
<utterance>So far so good!</utterance>
|
||||
<utterance>Lucky shot!</utterance>
|
||||
<utterance>Oh man!</utterance>
|
||||
<utterance>I challenge you to a fight!</utterance>
|
||||
<utterance>Help me with this</utterance>
|
||||
<utterance>Let's go to your game</utterance>
|
||||
<utterance>Can you show me how do to that?</utterance>
|
||||
<utterance>Backflip!</utterance>
|
||||
<utterance>Frontflip!</utterance>
|
||||
<utterance>Dance!</utterance>
|
||||
<utterance>I'm on your side!</utterance>
|
||||
<utterance>
|
||||
Game Commands
|
||||
<utterance>regen</utterance>
|
||||
<utterance>reset</utterance>
|
||||
<utterance>go</utterance>
|
||||
<utterance>fix</utterance>
|
||||
<utterance>respawn</utterance>
|
||||
</utterance>
|
||||
</utterance>
|
||||
<utterance>
|
||||
Silly
|
||||
<utterance>Muahahahaha!</utterance>
|
||||
<utterance>all your base are belong to me!</utterance>
|
||||
<utterance>GET OFF MAH LAWN</utterance>
|
||||
<utterance>TEH EPIK DUCK IS COMING!!!</utterance>
|
||||
<utterance>ROFL</utterance>
|
||||
<utterance>
|
||||
1337
|
||||
<utterance>i r teh pwnz0r!</utterance>
|
||||
<utterance>w00t!</utterance>
|
||||
<utterance>z0mg h4x!</utterance>
|
||||
<utterance>ub3rR0xXorzage!</utterance>
|
||||
</utterance>
|
||||
</utterance>
|
||||
<utterance>
|
||||
Yes
|
||||
<utterance>Absolutely!</utterance>
|
||||
<utterance>Rock on!</utterance>
|
||||
<utterance>Totally!</utterance>
|
||||
<utterance>Juice!</utterance>
|
||||
<utterance>Yay!</utterance>
|
||||
<utterance>Yesh</utterance>
|
||||
</utterance>
|
||||
<utterance>
|
||||
No
|
||||
<utterance>Ummm. No.</utterance>
|
||||
<utterance>...</utterance>
|
||||
<utterance>Stop!</utterance>
|
||||
<utterance>Go away!</utterance>
|
||||
<utterance>Don't do that</utterance>
|
||||
<utterance>Stop breaking the rules</utterance>
|
||||
<utterance>I don't want to</utterance>
|
||||
</utterance>
|
||||
<utterance>
|
||||
Ok
|
||||
<utterance>Well... ok</utterance>
|
||||
<utterance>Sure</utterance>
|
||||
</utterance>
|
||||
<utterance>
|
||||
Uncertain
|
||||
<utterance>Maybe</utterance>
|
||||
<utterance>I don't know</utterance>
|
||||
<utterance>idk</utterance>
|
||||
<utterance>I can't decide</utterance>
|
||||
<utterance>Hmm...</utterance>
|
||||
</utterance>
|
||||
|
||||
<utterance>
|
||||
:-)
|
||||
<utterance>:-(</utterance>
|
||||
<utterance>:D</utterance>
|
||||
<utterance>:-O</utterance>
|
||||
<utterance>lol</utterance>
|
||||
<utterance>=D</utterance>
|
||||
<utterance>D=</utterance>
|
||||
<utterance>XD</utterance>
|
||||
<utterance>;D</utterance>
|
||||
<utterance>;)</utterance>
|
||||
<utterance>O_O</utterance>
|
||||
<utterance>=)</utterance>
|
||||
<utterance>@_@</utterance>
|
||||
<utterance>>_<</utterance>
|
||||
<utterance>T_T</utterance>
|
||||
<utterance>^_^</utterance>
|
||||
<utterance><(0_0<) <(0_0)> (>0_0)> KIRBY DANCE</utterance>
|
||||
<utterance>)';</utterance>
|
||||
<utterance>:3</utterance>
|
||||
</utterance>
|
||||
<utterance>
|
||||
Ratings
|
||||
<utterance>Rate it!</utterance>
|
||||
<utterance>I give it a 1 out of 10</utterance>
|
||||
<utterance>I give it a 2 out of 10</utterance>
|
||||
<utterance>I give it a 3 out of 10</utterance>
|
||||
<utterance>I give it a 4 out of 10</utterance>
|
||||
<utterance>I give it a 5 out of 10</utterance>
|
||||
<utterance>I give it a 6 out of 10</utterance>
|
||||
<utterance>I give it a 7 out of 10</utterance>
|
||||
<utterance>I give it a 8 out of 10</utterance>
|
||||
<utterance>I give it a 9 out of 10</utterance>
|
||||
<utterance>I give it a 10 out of 10!</utterance>
|
||||
</utterance>
|
||||
</roblox>
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,192 @@
|
||||
/////////////////////////////////////////////////////////
|
||||
// The fast rising center plume of the explosion.
|
||||
// Grows and rotates.
|
||||
/////////////////////////////////////////////////////////
|
||||
particle_system explosion/explosionPlume
|
||||
{
|
||||
quota 40
|
||||
material explosion/explosionMatl
|
||||
particle_width 6
|
||||
particle_height 6
|
||||
cull_each false
|
||||
renderer billboard
|
||||
billboard_type point
|
||||
sorted false
|
||||
local_space false
|
||||
iteration_interval 0
|
||||
nonvisible_update_timeout 0
|
||||
billboard_type point
|
||||
billboard_origin center
|
||||
billboard_rotation_type vertex
|
||||
common_up_vector 0 1 0
|
||||
point_rendering false
|
||||
accurate_facing false
|
||||
|
||||
emitter Ellipsoid
|
||||
{
|
||||
angle 16
|
||||
colour 1.0 0.4 0.2 1.0
|
||||
colour_range_start 1.0 0.4 0.2 1.0
|
||||
colour_range_end 0.7 0.2 0.1 0.6
|
||||
direction 0 1 0
|
||||
emission_rate 100
|
||||
position 0 6 0
|
||||
velocity 25
|
||||
velocity_min 25
|
||||
velocity_max 38
|
||||
time_to_live 1.5
|
||||
time_to_live_min 1.5
|
||||
time_to_live_max 1.5
|
||||
duration 0.2
|
||||
duration_min 0.2
|
||||
duration_max 0.2
|
||||
repeat_delay 10000
|
||||
repeat_delay_min 10000
|
||||
repeat_delay_max 10000
|
||||
width 3
|
||||
height 3
|
||||
depth 3
|
||||
}
|
||||
|
||||
affector ColourFader
|
||||
{
|
||||
red -0.9
|
||||
green -0.5
|
||||
blue -0.3
|
||||
alpha -1.0
|
||||
}
|
||||
affector Scaler
|
||||
{
|
||||
rate 13
|
||||
}
|
||||
affector Rotator
|
||||
{
|
||||
rotation_speed_range_start 100
|
||||
rotation_speed_range_end 200
|
||||
rotation_range_start 100
|
||||
rotation_range_end 300
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////
|
||||
//The slow moving base of the explosion.
|
||||
/////////////////////////////////////////////////////////
|
||||
particle_system explosion/explosionBase
|
||||
{
|
||||
quota 40
|
||||
material explosion/explosionMatl
|
||||
particle_width 20
|
||||
particle_height 20
|
||||
cull_each false
|
||||
renderer billboard
|
||||
billboard_type point
|
||||
sorted false
|
||||
local_space false
|
||||
iteration_interval 0
|
||||
nonvisible_update_timeout 0
|
||||
billboard_type point
|
||||
billboard_origin center
|
||||
billboard_rotation_type vertex
|
||||
common_up_vector 0 1 0
|
||||
point_rendering false
|
||||
accurate_facing false
|
||||
|
||||
emitter Ellipsoid
|
||||
{
|
||||
angle 100
|
||||
colour 1.0 0.4 0.2 1.0
|
||||
colour_range_start 1.0 0.4 0.2 1.0
|
||||
colour_range_end 0.7 0.2 0.1 0.6
|
||||
direction 0 1 0
|
||||
emission_rate 80
|
||||
position 0 0 0
|
||||
velocity 11
|
||||
velocity_min 11
|
||||
velocity_max 16
|
||||
time_to_live 1.5
|
||||
time_to_live_min 1.5
|
||||
time_to_live_max 1.5
|
||||
duration 0.2
|
||||
duration_min 0.2
|
||||
duration_max 0.2
|
||||
repeat_delay 10000
|
||||
repeat_delay_min 10000
|
||||
repeat_delay_max 10000
|
||||
width 15
|
||||
height 15
|
||||
depth 15
|
||||
}
|
||||
|
||||
affector ColourFader
|
||||
{
|
||||
red -0.9
|
||||
green -0.5
|
||||
blue -0.3
|
||||
alpha -1.0
|
||||
}
|
||||
affector Scaler
|
||||
{
|
||||
rate 5
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////
|
||||
// The fast flying sparks of the explosion.
|
||||
/////////////////////////////////////////////////////////
|
||||
particle_system explosion/explosionSparks
|
||||
{
|
||||
quota 120
|
||||
material explosion/explosparkMatl
|
||||
particle_width 3
|
||||
particle_height 3
|
||||
cull_each false
|
||||
renderer billboard
|
||||
billboard_type point
|
||||
sorted false
|
||||
local_space false
|
||||
iteration_interval 0
|
||||
nonvisible_update_timeout 0
|
||||
billboard_type point
|
||||
billboard_origin center
|
||||
billboard_rotation_type vertex
|
||||
common_up_vector 0 1 0
|
||||
point_rendering false
|
||||
accurate_facing false
|
||||
|
||||
emitter Point
|
||||
{
|
||||
angle 120
|
||||
colour 1.0 0.6 0.4 1.0
|
||||
colour_range_start 1.0 0.6 0.4 1.0
|
||||
colour_range_end 1.0 0.6 0.4 1.0
|
||||
direction 0 1 0
|
||||
emission_rate 900
|
||||
position 0 0 0
|
||||
velocity 30
|
||||
velocity_min 30
|
||||
velocity_max 60
|
||||
time_to_live 1.2
|
||||
time_to_live_min 1.2
|
||||
time_to_live_max 1.2
|
||||
duration 0.2
|
||||
duration_min 0.1
|
||||
duration_max 0.1
|
||||
repeat_delay 10000
|
||||
repeat_delay_min 10000
|
||||
repeat_delay_max 10000
|
||||
}
|
||||
|
||||
affector ColourFader
|
||||
{
|
||||
red -0.7
|
||||
green -0.6
|
||||
blue -0.4
|
||||
alpha -0.7
|
||||
}
|
||||
affector Scaler
|
||||
{
|
||||
rate -3
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,65 @@
|
||||
|
||||
/////////////////////////////////////////////////////
|
||||
// Material used for bright explosion parts
|
||||
/////////////////////////////////////////////////////
|
||||
material explosion/explosionMatl
|
||||
{
|
||||
technique
|
||||
{
|
||||
pass
|
||||
{
|
||||
lighting off
|
||||
depth_write off
|
||||
scene_blend alpha_blend
|
||||
|
||||
texture_unit
|
||||
{
|
||||
texture textures/explosion.png
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/////////////////////////////////////////////////////
|
||||
// Bright sparks that fly out from explosions
|
||||
/////////////////////////////////////////////////////
|
||||
material explosion/explosparkMatl
|
||||
{
|
||||
technique
|
||||
{
|
||||
pass
|
||||
{
|
||||
lighting off
|
||||
depth_write off
|
||||
scene_blend alpha_blend
|
||||
|
||||
texture_unit
|
||||
{
|
||||
texture textures/spark.png
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
///////////////////////////////////////////////////////////
|
||||
// Alpha blended smoke from explosions.
|
||||
// Disabled because they overpower the bright explosion parts.
|
||||
///////////////////////////////////////////////////////////
|
||||
material explosion/explosmokeMatl
|
||||
{
|
||||
technique
|
||||
{
|
||||
pass
|
||||
{
|
||||
lighting off
|
||||
depth_write off
|
||||
scene_blend alpha_blend
|
||||
|
||||
texture_unit
|
||||
{
|
||||
texture textures/explosion.png
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,59 @@
|
||||
/////////////////////////////////////////////////////////
|
||||
// Fire
|
||||
/////////////////////////////////////////////////////////
|
||||
|
||||
// height and width modified by RbxParticleFactory for user input size
|
||||
particle_system FireTemplate
|
||||
{
|
||||
material fireMat1
|
||||
particle_width 5
|
||||
particle_height 5
|
||||
cull_each false
|
||||
quota 40
|
||||
renderer billboard
|
||||
billboard_type point
|
||||
point_rendering false
|
||||
accurate_facing false
|
||||
sorted false
|
||||
local_space false
|
||||
iteration_interval 0
|
||||
nonvisible_update_timeout 0
|
||||
|
||||
// emission rate is modified by RbxParticleManager for throttling
|
||||
// of particle systems
|
||||
emitter Point
|
||||
{
|
||||
colour_range_start 240 240 240
|
||||
colour_range_end 240 240 240
|
||||
angle 18
|
||||
emission_rate 35
|
||||
time_to_live_min 1
|
||||
time_to_live_max 1
|
||||
direction 0 1 0
|
||||
velocity_min 2.33
|
||||
velocity_max 7.0
|
||||
}
|
||||
affector Rotator
|
||||
{
|
||||
rotation_range_start 0
|
||||
rotation_range_end 365
|
||||
rotation_speed_range_start 0
|
||||
rotation_speed_range_end 100
|
||||
}
|
||||
// modified in RbxParticleFactory for user input size
|
||||
affector Scaler
|
||||
{
|
||||
rate -5.0
|
||||
}
|
||||
// modified in RbxParticleFactory for user input colors
|
||||
affector ColourInterpolator
|
||||
{
|
||||
time0 0
|
||||
colour0 240 240 240 1
|
||||
|
||||
time1 1
|
||||
colour1 240 240 240 1
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,36 @@
|
||||
|
||||
/////////////////////////////////////////////////////
|
||||
// Material used for fire
|
||||
/////////////////////////////////////////////////////
|
||||
material fireMat1
|
||||
{
|
||||
technique
|
||||
{
|
||||
pass
|
||||
{
|
||||
lighting off
|
||||
depth_write off
|
||||
scene_blend alpha_blend
|
||||
|
||||
texture_unit
|
||||
{
|
||||
texture textures/fire_0.png
|
||||
tex_address_mode clamp
|
||||
colour_op_ex modulate src_texture src_manual 0.3 0.3 0.3
|
||||
alpha_op_ex source1 src_texture
|
||||
}
|
||||
|
||||
texture_unit
|
||||
{
|
||||
texture textures/fire_0.png
|
||||
tex_address_mode clamp
|
||||
colour_op_ex add src_current src_texture
|
||||
}
|
||||
|
||||
texture_unit
|
||||
{
|
||||
colour_op_ex add src_current src_diffuse
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,55 @@
|
||||
/////////////////////////////////////////////////////////
|
||||
// Beam
|
||||
/////////////////////////////////////////////////////////
|
||||
particle_system forceField/beam
|
||||
{
|
||||
quota 40
|
||||
material PE/lensflare
|
||||
particle_width 0.5
|
||||
particle_height 2
|
||||
cull_each false
|
||||
billboard_type oriented_common
|
||||
common_direction 0 1 0
|
||||
|
||||
emitter Ring
|
||||
{
|
||||
colour 1 1 1 0
|
||||
angle 0
|
||||
direction 0 1 0
|
||||
emission_rate 20
|
||||
position 0 -2 0
|
||||
velocity_min 2
|
||||
velocity_max 5
|
||||
time_to_live 2
|
||||
duration 0
|
||||
duration_min 0
|
||||
duration_max 0
|
||||
repeat_delay 0
|
||||
repeat_delay_min 0
|
||||
repeat_delay_max 0
|
||||
width 5
|
||||
height 5
|
||||
depth 1
|
||||
inner_width 0.8
|
||||
inner_height 0.8
|
||||
}
|
||||
|
||||
//affector LinearForce
|
||||
// {
|
||||
// force_vector 0 -1 0
|
||||
// force_application add
|
||||
//}
|
||||
|
||||
affector ColourFader2
|
||||
{
|
||||
red1 0
|
||||
green1 0
|
||||
blue1 0
|
||||
alpha1 1
|
||||
red2 0
|
||||
green2 0
|
||||
blue2 0
|
||||
alpha2 -1
|
||||
state_change 1
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,51 @@
|
||||
/////////////////////////////////////////////////////////
|
||||
// Radial
|
||||
/////////////////////////////////////////////////////////
|
||||
particle_system forceField/radial
|
||||
{
|
||||
material PE/lensflare
|
||||
particle_width 5
|
||||
particle_height 5
|
||||
cull_each false
|
||||
quota 6
|
||||
renderer billboard
|
||||
billboard_type point
|
||||
point_rendering false
|
||||
accurate_facing false
|
||||
sorted false
|
||||
local_space false
|
||||
iteration_interval 0
|
||||
nonvisible_update_timeout 0
|
||||
|
||||
// emission rate is modified by RbxParticleManager for throttling
|
||||
// of particle systems
|
||||
emitter Point
|
||||
{
|
||||
angle 18
|
||||
emission_rate 2
|
||||
time_to_live_min 2
|
||||
time_to_live_max 2
|
||||
direction 0 1 0
|
||||
velocity_min 0
|
||||
velocity_max 0.1
|
||||
}
|
||||
affector Rotator
|
||||
{
|
||||
rotation_range_start 0
|
||||
rotation_range_end 365
|
||||
rotation_speed_range_start 4
|
||||
rotation_speed_range_end 100
|
||||
}
|
||||
// modified in RbxParticleFactory for user input size
|
||||
affector Scaler
|
||||
{
|
||||
rate 6.0
|
||||
}
|
||||
affector ColourFader
|
||||
{
|
||||
red 0
|
||||
green 0
|
||||
blue 0
|
||||
alpha -0.5
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
material PE/lensflare
|
||||
{
|
||||
technique
|
||||
{
|
||||
pass
|
||||
{
|
||||
lighting off
|
||||
depth_write off
|
||||
scene_blend src_alpha one
|
||||
|
||||
texture_unit
|
||||
{
|
||||
texture textures/glow.png
|
||||
tex_address_mode clamp
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,57 @@
|
||||
particle_system SmokeTemplate
|
||||
{
|
||||
quota 70
|
||||
material PE/smoke
|
||||
particle_width 1
|
||||
particle_height 1
|
||||
cull_each false
|
||||
renderer billboard
|
||||
billboard_type point
|
||||
|
||||
emitter Box
|
||||
{
|
||||
angle 180
|
||||
colour 0.8 0.8 0.8 0.3
|
||||
colour_range_start 0.8 0.8 0.8 0.3
|
||||
colour_range_end 0.8 0.8 0.8 0.3
|
||||
direction 0 1 0
|
||||
emission_rate 6
|
||||
position 0 0 0
|
||||
velocity 0.1
|
||||
velocity_min 0
|
||||
velocity_max 0.1
|
||||
time_to_live 4
|
||||
time_to_live_min 4
|
||||
time_to_live_max 6
|
||||
duration 0
|
||||
duration_min 0
|
||||
duration_max 0
|
||||
repeat_delay 0
|
||||
repeat_delay_min 0
|
||||
repeat_delay_max 0
|
||||
width 1
|
||||
height 1
|
||||
depth 1
|
||||
}
|
||||
|
||||
affector ColourFader
|
||||
{
|
||||
red -0.11
|
||||
green -0.11
|
||||
blue -0.11
|
||||
alpha -0.1
|
||||
}
|
||||
|
||||
affector Scaler
|
||||
{
|
||||
rate 1.5
|
||||
}
|
||||
|
||||
affector Rotator
|
||||
{
|
||||
rotation_speed_range_start 0
|
||||
rotation_speed_range_end 0
|
||||
rotation_range_start 0
|
||||
rotation_range_end 0
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
material PE/smoke
|
||||
{
|
||||
technique
|
||||
{
|
||||
pass
|
||||
{
|
||||
lighting off
|
||||
depth_write off
|
||||
scene_blend alpha_blend
|
||||
|
||||
texture_unit
|
||||
{
|
||||
texture textures/Smoke.png
|
||||
colour_op_ex add_signed src_diffuse src_texture
|
||||
tex_address_mode clamp
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,49 @@
|
||||
/////////////////////////////////////////////////////////
|
||||
// Sparkles
|
||||
/////////////////////////////////////////////////////////
|
||||
particle_system SparklesTemplate
|
||||
{
|
||||
quota 40
|
||||
material sparkle/sparkleMatl
|
||||
particle_width 0.8
|
||||
particle_height 1
|
||||
cull_each false
|
||||
renderer billboard
|
||||
sorted false
|
||||
local_space false
|
||||
iteration_interval 0
|
||||
nonvisible_update_timeout 0
|
||||
billboard_type point
|
||||
billboard_origin center
|
||||
billboard_rotation_type vertex
|
||||
common_up_vector 0 1 0
|
||||
point_rendering false
|
||||
accurate_facing false
|
||||
|
||||
emitter Point
|
||||
{
|
||||
angle 180
|
||||
direction 0 -1 0
|
||||
emission_rate 35
|
||||
position 0 0 0
|
||||
velocity_min 4
|
||||
velocity_max 8
|
||||
duration 0.0
|
||||
time_to_live 1.1
|
||||
//repeat_delay 2.0
|
||||
}
|
||||
affector Rotator
|
||||
{
|
||||
rotation_speed_range_end 360
|
||||
rotation_range_start 0
|
||||
rotation_range_end 360
|
||||
}
|
||||
affector ColourFader
|
||||
{
|
||||
red 0
|
||||
green 0
|
||||
blue 0
|
||||
alpha -1
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,23 @@
|
||||
|
||||
/////////////////////////////////////////////////////
|
||||
// Material used for sparkles
|
||||
/////////////////////////////////////////////////////
|
||||
material sparkle/sparkleMatl
|
||||
{
|
||||
technique
|
||||
{
|
||||
pass
|
||||
{
|
||||
lighting off
|
||||
depth_write off
|
||||
scene_blend alpha_blend
|
||||
|
||||
texture_unit
|
||||
{
|
||||
texture textures/sparkle.png
|
||||
colour_op add
|
||||
alpha_op_ex modulate src_diffuse src_texture
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
+857
@@ -0,0 +1,857 @@
|
||||
-- This script creates almost all gui elements found in the backpack (warning: there are a lot!)
|
||||
-- TODO: automate this process
|
||||
|
||||
--if game.CoreGui.Version < 3 then return end -- peace out if we aren't using the right client
|
||||
|
||||
local gui = script.Parent
|
||||
|
||||
-- A couple of necessary functions
|
||||
local function waitForChild(instance, name)
|
||||
while not instance:FindFirstChild(name) do
|
||||
print('(BPBuilder): Waiting for ...', instance, name)
|
||||
instance.ChildAdded:wait()
|
||||
end
|
||||
end
|
||||
local function waitForProperty(instance, property)
|
||||
while not instance[property] do
|
||||
instance.Changed:wait()
|
||||
end
|
||||
end
|
||||
|
||||
local function IsTouchDevice()
|
||||
local touchEnabled = false
|
||||
pcall(function() touchEnabled = Game:GetService('UserInputService').TouchEnabled end)
|
||||
return touchEnabled
|
||||
end
|
||||
|
||||
local function IsPhone()
|
||||
if gui.AbsoluteSize.Y <= 320 then
|
||||
return true
|
||||
end
|
||||
return false
|
||||
end
|
||||
|
||||
waitForChild(game,"Players")
|
||||
waitForProperty(game.Players,"LocalPlayer")
|
||||
local player = game.Players.LocalPlayer
|
||||
|
||||
-- First up is the current loadout
|
||||
local CurrentLoadout = Instance.new("Frame")
|
||||
CurrentLoadout.Name = "CurrentLoadout"
|
||||
CurrentLoadout.Position = UDim2.new(0.5, -300, 1, -85)
|
||||
CurrentLoadout.Size = UDim2.new(0, 600, 0, 54)
|
||||
CurrentLoadout.BackgroundTransparency = 1
|
||||
CurrentLoadout.RobloxLocked = true
|
||||
CurrentLoadout.Parent = gui
|
||||
|
||||
local CLBackground = Instance.new('ImageLabel')
|
||||
CLBackground.Name = 'Background';
|
||||
CLBackground.Size = UDim2.new(1.2, 0, 1.2, 0);
|
||||
CLBackground.Image = "http://www.watrbx.wtf/asset/?id=23"
|
||||
CLBackground.BackgroundTransparency = 1.0;
|
||||
CLBackground.Position = UDim2.new(-0.1, 0, -0.1, 0);
|
||||
CLBackground.ZIndex = 0.0;
|
||||
CLBackground.Parent = CurrentLoadout
|
||||
CLBackground.Visible = false
|
||||
|
||||
local BackgroundUp = Instance.new('ImageLabel')
|
||||
BackgroundUp.Size = UDim2.new(1, 0, 0.025, 1)
|
||||
BackgroundUp.Position = UDim2.new(0, 0, 0, 0)
|
||||
BackgroundUp.Image = 'http://www.watrbx.wtf/asset/?id=24'
|
||||
BackgroundUp.BackgroundTransparency = 1.0
|
||||
BackgroundUp.Parent = CLBackground
|
||||
|
||||
local Debounce = Instance.new("BoolValue")
|
||||
Debounce.Name = "Debounce"
|
||||
Debounce.RobloxLocked = true
|
||||
Debounce.Parent = CurrentLoadout
|
||||
|
||||
local BackpackButton = Instance.new("ImageButton")
|
||||
BackpackButton.RobloxLocked = true
|
||||
BackpackButton.Visible = false
|
||||
BackpackButton.Name = "BackpackButton"
|
||||
BackpackButton.BackgroundTransparency = 1
|
||||
BackpackButton.Image = "http://www.watrbx.wtf/asset/?id=21"
|
||||
BackpackButton.Position = UDim2.new(0.5, -60, 1, -108)
|
||||
BackpackButton.Size = UDim2.new(0, 120, 0, 18)
|
||||
waitForChild(gui,"ControlFrame")
|
||||
BackpackButton.Parent = gui.ControlFrame
|
||||
|
||||
local NumSlots = 9
|
||||
|
||||
if IsPhone() then
|
||||
NumSlots = 3
|
||||
CurrentLoadout.Size = UDim2.new(0, 180, 0, 54)
|
||||
CurrentLoadout.Position = UDim2.new(0.5, -90, 1, -85)
|
||||
end
|
||||
|
||||
|
||||
for i = 0, NumSlots do
|
||||
local slotFrame = Instance.new("Frame")
|
||||
slotFrame.RobloxLocked = true
|
||||
slotFrame.BackgroundColor3 = Color3.new(0,0,0)
|
||||
slotFrame.BackgroundTransparency = 1
|
||||
slotFrame.BorderColor3 = Color3.new(1, 1, 1)
|
||||
slotFrame.Name = "Slot" .. tostring(i)
|
||||
slotFrame.ZIndex = 4.0
|
||||
if i == 0 then
|
||||
slotFrame.Position = UDim2.new(0.9, 0, 0, 0)
|
||||
else
|
||||
slotFrame.Position = UDim2.new((i - 1) * 0.1, (i-1)* 6,0,0)
|
||||
end
|
||||
|
||||
|
||||
slotFrame.Size = UDim2.new(0, 54, 1, 0)
|
||||
slotFrame.Parent = CurrentLoadout
|
||||
|
||||
if gui.AbsoluteSize.Y <= 320 then
|
||||
slotFrame.Position = UDim2.new(0, (i-1)* 60, 0, -50)
|
||||
print('Well got here', slotFrame, slotFrame.Position.X.Scale, slotFrame.Position.X.Offset)
|
||||
end
|
||||
if gui.AbsoluteSize.Y <= 320 and i == 0 then
|
||||
slotFrame:Destroy()
|
||||
end
|
||||
end
|
||||
|
||||
local TempSlot = Instance.new("ImageButton")
|
||||
TempSlot.Name = "TempSlot"
|
||||
TempSlot.Active = true
|
||||
TempSlot.Size = UDim2.new(1,0,1,0)
|
||||
TempSlot.BackgroundTransparency = 1.0
|
||||
TempSlot.Style = 'Custom'
|
||||
TempSlot.Visible = false
|
||||
TempSlot.RobloxLocked = true
|
||||
TempSlot.Parent = CurrentLoadout
|
||||
TempSlot.ZIndex = 4.0
|
||||
|
||||
local slotBackground = Instance.new('ImageLabel')
|
||||
slotBackground.Name = 'Background'
|
||||
slotBackground.BackgroundTransparency = 1.0
|
||||
slotBackground.Image = 'http://www.watrbx.wtf/asset/?id=25'
|
||||
slotBackground.Size = UDim2.new(1, 0, 1, 0)
|
||||
slotBackground.Parent = TempSlot
|
||||
|
||||
local HighLight = Instance.new('ImageLabel')
|
||||
HighLight.Name = 'Highlight'
|
||||
HighLight.BackgroundTransparency = 1.0
|
||||
HighLight.Image = 'http://www.watrbx.wtf/asset/?id=26'
|
||||
HighLight.Size = UDim2.new(1, 0, 1, 0)
|
||||
--HighLight.Parent = TempSlot
|
||||
HighLight.Visible = false
|
||||
|
||||
-- TempSlot Children
|
||||
local GearReference = Instance.new("ObjectValue")
|
||||
GearReference.Name = "GearReference"
|
||||
GearReference.RobloxLocked = true
|
||||
GearReference.Parent = TempSlot
|
||||
|
||||
|
||||
local ToolTipLabel = Instance.new("TextLabel")
|
||||
ToolTipLabel.Name = "ToolTipLabel"
|
||||
ToolTipLabel.RobloxLocked = true
|
||||
ToolTipLabel.Text = ""
|
||||
ToolTipLabel.BackgroundTransparency = 0.5
|
||||
ToolTipLabel.BorderSizePixel = 0
|
||||
ToolTipLabel.Visible = false
|
||||
ToolTipLabel.TextColor3 = Color3.new(1,1,1)
|
||||
ToolTipLabel.BackgroundColor3 = Color3.new(0,0,0)
|
||||
ToolTipLabel.TextStrokeTransparency = 0
|
||||
ToolTipLabel.Font = Enum.Font.ArialBold
|
||||
ToolTipLabel.FontSize = Enum.FontSize.Size14
|
||||
--ToolTipLabel.TextWrap = true
|
||||
ToolTipLabel.Size = UDim2.new(1,60,0,20)
|
||||
ToolTipLabel.Position = UDim2.new(0,-30,0,-30)
|
||||
ToolTipLabel.Parent = TempSlot
|
||||
|
||||
|
||||
local Kill = Instance.new("BoolValue")
|
||||
Kill.Name = "Kill"
|
||||
Kill.RobloxLocked = true
|
||||
Kill.Parent = TempSlot
|
||||
|
||||
local GearImage = Instance.new("ImageLabel")
|
||||
GearImage.Name = "GearImage"
|
||||
GearImage.BackgroundTransparency = 1
|
||||
GearImage.Position = UDim2.new(0, 0, 0, 0)
|
||||
GearImage.Size = UDim2.new(1, 0, 1, 0)
|
||||
GearImage.ZIndex = 5.0
|
||||
GearImage.RobloxLocked = true
|
||||
GearImage.Parent = TempSlot
|
||||
|
||||
local SlotNumber = Instance.new("TextLabel")
|
||||
SlotNumber.Name = "SlotNumber"
|
||||
SlotNumber.BackgroundTransparency = 1
|
||||
SlotNumber.BorderSizePixel = 0
|
||||
SlotNumber.Font = Enum.Font.ArialBold
|
||||
SlotNumber.FontSize = Enum.FontSize.Size18
|
||||
SlotNumber.Position = UDim2.new(0, 0, 0, 0)
|
||||
SlotNumber.Size = UDim2.new(0,10,0,15)
|
||||
SlotNumber.TextColor3 = Color3.new(1,1,1)
|
||||
SlotNumber.TextTransparency = 0
|
||||
SlotNumber.TextXAlignment = Enum.TextXAlignment.Left
|
||||
SlotNumber.TextYAlignment = Enum.TextYAlignment.Bottom
|
||||
SlotNumber.RobloxLocked = true
|
||||
SlotNumber.Parent = TempSlot
|
||||
SlotNumber.ZIndex = 5
|
||||
|
||||
if IsTouchDevice() then
|
||||
SlotNumber.Visible = false
|
||||
end
|
||||
|
||||
local SlotNumberDownShadow = SlotNumber:Clone()
|
||||
SlotNumberDownShadow.Name = "SlotNumberDownShadow"
|
||||
SlotNumberDownShadow.TextColor3 = Color3.new(0,0,0)
|
||||
SlotNumberDownShadow.Position = UDim2.new(0, 1, 0, -1)
|
||||
SlotNumberDownShadow.Parent = TempSlot
|
||||
SlotNumberDownShadow.ZIndex = 2
|
||||
|
||||
local SlotNumberUpShadow = SlotNumberDownShadow:Clone()
|
||||
SlotNumberUpShadow.Name = "SlotNumberUpShadow"
|
||||
SlotNumberUpShadow.Position = UDim2.new(0, -1, 0, -1)
|
||||
SlotNumberUpShadow.Parent = TempSlot
|
||||
|
||||
local GearText = Instance.new("TextLabel")
|
||||
GearText.RobloxLocked = true
|
||||
GearText.Name = "GearText"
|
||||
GearText.BackgroundTransparency = 1
|
||||
GearText.Font = Enum.Font.Arial
|
||||
GearText.FontSize = Enum.FontSize.Size14
|
||||
GearText.Position = UDim2.new(0,-8,0,-8)
|
||||
GearText.Size = UDim2.new(1,16,1,16)
|
||||
GearText.Text = ""
|
||||
GearText.TextColor3 = Color3.new(1,1,1)
|
||||
GearText.TextWrap = true
|
||||
GearText.Parent = TempSlot
|
||||
GearText.ZIndex = 5.0
|
||||
|
||||
--- Great, now lets make the inventory!
|
||||
|
||||
local Backpack = Instance.new("Frame")
|
||||
Backpack.RobloxLocked = true
|
||||
Backpack.Visible = false
|
||||
Backpack.Name = "Backpack"
|
||||
Backpack.Position = UDim2.new(0.5, 0, 0.5, 0)
|
||||
Backpack.BackgroundColor3 = Color3.new(32/255, 32/255, 32/255)
|
||||
Backpack.BackgroundTransparency = 0.0
|
||||
Backpack.BorderSizePixel = 0
|
||||
Backpack.Parent = gui
|
||||
Backpack.Active = true
|
||||
|
||||
-- Backpack Children
|
||||
local SwapSlot = Instance.new("BoolValue")
|
||||
SwapSlot.RobloxLocked = true
|
||||
SwapSlot.Name = "SwapSlot"
|
||||
SwapSlot.Parent = Backpack
|
||||
|
||||
-- SwapSlot Children
|
||||
local Slot = Instance.new("IntValue")
|
||||
Slot.RobloxLocked = true
|
||||
Slot.Name = "Slot"
|
||||
Slot.Parent = SwapSlot
|
||||
|
||||
local GearButton = Instance.new("ObjectValue")
|
||||
GearButton.RobloxLocked = true
|
||||
GearButton.Name = "GearButton"
|
||||
GearButton.Parent = SwapSlot
|
||||
|
||||
local Tabs = Instance.new("Frame")
|
||||
Tabs.Name = "Tabs"
|
||||
Tabs.Visible = false
|
||||
Tabs.Active = false
|
||||
Tabs.RobloxLocked = true
|
||||
Tabs.BackgroundColor3 = Color3.new(0,0,0)
|
||||
Tabs.BackgroundTransparency = 0.08
|
||||
Tabs.BorderSizePixel = 0
|
||||
Tabs.Position = UDim2.new(0,0,-0.1,-4)
|
||||
Tabs.Size = UDim2.new(1,0,0.1,4)
|
||||
Tabs.Parent = Backpack
|
||||
|
||||
-- Tabs Children
|
||||
|
||||
local tabLine = Instance.new("Frame")
|
||||
tabLine.RobloxLocked = true
|
||||
tabLine.Name = "TabLine"
|
||||
tabLine.BackgroundColor3 = Color3.new(53/255, 53/255, 53/255)
|
||||
tabLine.BorderSizePixel = 0
|
||||
tabLine.Position = UDim2.new(0,5,1,-4)
|
||||
tabLine.Size = UDim2.new(1,-10,0,4)
|
||||
tabLine.ZIndex = 2
|
||||
tabLine.Parent = Tabs
|
||||
|
||||
local InventoryButton = Instance.new("TextButton")
|
||||
InventoryButton.RobloxLocked = true
|
||||
InventoryButton.Name = "InventoryButton"
|
||||
InventoryButton.Size = UDim2.new(0,60,0,30)
|
||||
InventoryButton.Position = UDim2.new(0,7,1,-31)
|
||||
InventoryButton.BackgroundColor3 = Color3.new(1,1,1)
|
||||
InventoryButton.BorderColor3 = Color3.new(1,1,1)
|
||||
InventoryButton.Font = Enum.Font.ArialBold
|
||||
InventoryButton.FontSize = Enum.FontSize.Size18
|
||||
InventoryButton.Text = "Gear"
|
||||
InventoryButton.AutoButtonColor = false
|
||||
InventoryButton.TextColor3 = Color3.new(0,0,0)
|
||||
InventoryButton.Selected = true
|
||||
InventoryButton.Active = true
|
||||
InventoryButton.ZIndex = 3
|
||||
InventoryButton.Parent = Tabs
|
||||
|
||||
local closeButton = Instance.new("TextButton")
|
||||
closeButton.RobloxLocked = true
|
||||
closeButton.Name = "CloseButton"
|
||||
closeButton.Font = Enum.Font.ArialBold
|
||||
closeButton.FontSize = Enum.FontSize.Size24
|
||||
closeButton.Position = UDim2.new(1,-33,0,4)
|
||||
closeButton.Size = UDim2.new(0,30,0,30)
|
||||
closeButton.Style = Enum.ButtonStyle.RobloxButton
|
||||
closeButton.Text = ""
|
||||
closeButton.TextColor3 = Color3.new(1,1,1)
|
||||
closeButton.Parent = Tabs
|
||||
closeButton.Modal = true
|
||||
|
||||
--closeButton child
|
||||
local XImage = Instance.new("ImageLabel")
|
||||
XImage.RobloxLocked = true
|
||||
XImage.Name = "XImage"
|
||||
game:GetService("ContentProvider"):Preload("http://www.watrbx.wtf/asset/?id=27")
|
||||
XImage.Image = "http://www.watrbx.wtf/asset/?id=27" --TODO: move to rbxasset
|
||||
XImage.BackgroundTransparency = 1
|
||||
XImage.Position = UDim2.new(-.25,-1,-.25,-1)
|
||||
XImage.Size = UDim2.new(1.5,2,1.5,2)
|
||||
XImage.ZIndex = 2
|
||||
XImage.Parent = closeButton
|
||||
|
||||
-- Generic Search gui used across backpack
|
||||
local SearchFrame = Instance.new("Frame")
|
||||
SearchFrame.RobloxLocked = true
|
||||
SearchFrame.Name = "SearchFrame"
|
||||
SearchFrame.BackgroundTransparency = 1
|
||||
SearchFrame.Position = UDim2.new(1,-220,0,2)
|
||||
SearchFrame.Size = UDim2.new(0,220,0,24)
|
||||
SearchFrame.Parent = Backpack
|
||||
|
||||
-- SearchFrame Children
|
||||
local SearchButton = Instance.new("ImageButton")
|
||||
SearchButton.RobloxLocked = true
|
||||
SearchButton.Name = "SearchButton"
|
||||
SearchButton.Size = UDim2.new(0,25,0,25)
|
||||
SearchButton.BackgroundTransparency = 1
|
||||
SearchButton.Image = "rbxasset://textures/ui/SearchIcon.png"
|
||||
SearchButton.Parent = SearchFrame
|
||||
|
||||
local SearchBoxFrame = Instance.new("TextButton")
|
||||
SearchBoxFrame.RobloxLocked = true
|
||||
SearchBoxFrame.Position = UDim2.new(0,25,0,0)
|
||||
SearchBoxFrame.Size = UDim2.new(1,-28,0,26)
|
||||
SearchBoxFrame.Name = "SearchBoxFrame"
|
||||
SearchBoxFrame.Text = ""
|
||||
SearchBoxFrame.Style = Enum.ButtonStyle.RobloxButton
|
||||
SearchBoxFrame.Parent = SearchFrame
|
||||
|
||||
-- SearchBoxFrame Children
|
||||
local SearchBox = Instance.new("TextBox")
|
||||
SearchBox.RobloxLocked = true
|
||||
SearchBox.Name = "SearchBox"
|
||||
SearchBox.BackgroundTransparency = 1
|
||||
SearchBox.Font = Enum.Font.ArialBold
|
||||
SearchBox.FontSize = Enum.FontSize.Size12
|
||||
SearchBox.Position = UDim2.new(0,-5,0,-5)
|
||||
SearchBox.Size = UDim2.new(1,10,1,10)
|
||||
SearchBox.TextColor3 = Color3.new(1,1,1)
|
||||
SearchBox.TextXAlignment = Enum.TextXAlignment.Left
|
||||
SearchBox.ZIndex = 2
|
||||
SearchBox.TextWrap = true
|
||||
SearchBox.Text = "Search..."
|
||||
SearchBox.Parent = SearchBoxFrame
|
||||
|
||||
|
||||
local ResetButton = Instance.new("TextButton")
|
||||
ResetButton.RobloxLocked = true
|
||||
ResetButton.Visible = false
|
||||
ResetButton.Name = "ResetButton"
|
||||
ResetButton.Position = UDim2.new(1,-26,0,3)
|
||||
ResetButton.Size = UDim2.new(0,20,0,20)
|
||||
ResetButton.Style = Enum.ButtonStyle.RobloxButtonDefault
|
||||
ResetButton.Text = "X"
|
||||
ResetButton.TextColor3 = Color3.new(1,1,1)
|
||||
ResetButton.Font = Enum.Font.ArialBold
|
||||
ResetButton.FontSize = Enum.FontSize.Size18
|
||||
ResetButton.ZIndex = 3
|
||||
ResetButton.Parent = SearchFrame
|
||||
|
||||
------------------------------- GEAR -------------------------------------------------------
|
||||
local Gear = Instance.new("Frame")
|
||||
Gear.Name = "Gear"
|
||||
Gear.RobloxLocked = true
|
||||
Gear.BackgroundTransparency = 1
|
||||
Gear.Size = UDim2.new(1,0,1,0)
|
||||
Gear.Parent = Backpack
|
||||
|
||||
-- Gear Children
|
||||
local AssetsList = Instance.new("Frame")
|
||||
AssetsList.RobloxLocked = true
|
||||
AssetsList.Name = "AssetsList"
|
||||
AssetsList.BackgroundTransparency = 1
|
||||
AssetsList.Size = UDim2.new(0.2,0,1,0)
|
||||
AssetsList.Style = Enum.FrameStyle.RobloxSquare
|
||||
AssetsList.Visible = false
|
||||
AssetsList.Parent = Gear
|
||||
|
||||
local GearGrid = Instance.new("Frame")
|
||||
GearGrid.RobloxLocked = true
|
||||
GearGrid.Name = "GearGrid"
|
||||
GearGrid.Size = UDim2.new(0.95, 0, 1, 0)
|
||||
GearGrid.BackgroundTransparency = 1
|
||||
GearGrid.Parent = Gear
|
||||
|
||||
|
||||
local GearButton = Instance.new("ImageButton")
|
||||
GearButton.RobloxLocked = true
|
||||
GearButton.Visible = false
|
||||
GearButton.Name = "GearButton"
|
||||
GearButton.Size = UDim2.new(0, 54, 0, 54)
|
||||
GearButton.Style = 'Custom'
|
||||
GearButton.Parent = GearGrid
|
||||
GearButton.BackgroundTransparency = 1.0
|
||||
|
||||
local slotBackground = Instance.new('ImageLabel')
|
||||
slotBackground.Name = 'Background'
|
||||
slotBackground.BackgroundTransparency = 1.0
|
||||
slotBackground.Image = 'http://www.watrbx.wtf/asset/?id=25'
|
||||
slotBackground.Size = UDim2.new(1, 0, 1, 0)
|
||||
slotBackground.Parent = GearButton
|
||||
|
||||
|
||||
-- GearButton Children
|
||||
local GearReference = Instance.new("ObjectValue")
|
||||
GearReference.RobloxLocked = true
|
||||
GearReference.Name = "GearReference"
|
||||
GearReference.Parent = GearButton
|
||||
|
||||
local GreyOutButton = Instance.new("Frame")
|
||||
GreyOutButton.RobloxLocked = true
|
||||
GreyOutButton.Name = "GreyOutButton"
|
||||
GreyOutButton.BackgroundTransparency = 0.5
|
||||
GreyOutButton.Size = UDim2.new(1,0,1,0)
|
||||
GreyOutButton.Active = true
|
||||
GreyOutButton.Visible = false
|
||||
GreyOutButton.ZIndex = 3
|
||||
GreyOutButton.Parent = GearButton
|
||||
|
||||
local GearText = Instance.new("TextLabel")
|
||||
GearText.RobloxLocked = true
|
||||
GearText.Name = "GearText"
|
||||
GearText.BackgroundTransparency = 1
|
||||
GearText.Font = Enum.Font.Arial
|
||||
GearText.FontSize = Enum.FontSize.Size14
|
||||
GearText.Position = UDim2.new(0,-8,0,-8)
|
||||
GearText.Size = UDim2.new(1,16,1,16)
|
||||
GearText.Text = ""
|
||||
GearText.ZIndex = 2
|
||||
GearText.TextColor3 = Color3.new(1,1,1)
|
||||
GearText.TextWrap = true
|
||||
GearText.Parent = GearButton
|
||||
|
||||
local GearGridScrollingArea = Instance.new("Frame")
|
||||
GearGridScrollingArea.RobloxLocked = true
|
||||
GearGridScrollingArea.Name = "GearGridScrollingArea"
|
||||
GearGridScrollingArea.Position = UDim2.new(1, -19, 0, 35)
|
||||
GearGridScrollingArea.Size = UDim2.new(0, 17, 1, -45)
|
||||
GearGridScrollingArea.BackgroundTransparency = 1
|
||||
GearGridScrollingArea.Parent = Gear
|
||||
|
||||
local GearLoadouts = Instance.new("Frame")
|
||||
GearLoadouts.RobloxLocked = true
|
||||
GearLoadouts.Name = "GearLoadouts"
|
||||
GearLoadouts.BackgroundTransparency = 1
|
||||
GearLoadouts.Position = UDim2.new(0.7,23,0.5,1)
|
||||
GearLoadouts.Size = UDim2.new(0.3,-23,0.5,-1)
|
||||
GearLoadouts.Parent = Gear
|
||||
GearLoadouts.Visible = false
|
||||
|
||||
-- GearLoadouts Children
|
||||
local GearLoadoutsHeader = Instance.new("Frame")
|
||||
GearLoadoutsHeader.RobloxLocked = true
|
||||
GearLoadoutsHeader.Name = "GearLoadoutsHeader"
|
||||
GearLoadoutsHeader.BackgroundColor3 = Color3.new(0,0,0)
|
||||
GearLoadoutsHeader.BackgroundTransparency = 0.2
|
||||
GearLoadoutsHeader.BorderColor3 = Color3.new(1,0,0)
|
||||
GearLoadoutsHeader.Size = UDim2.new(1,2,0.15,-1)
|
||||
GearLoadoutsHeader.Parent = GearLoadouts
|
||||
|
||||
-- GearLoadoutsHeader Children
|
||||
local LoadoutsHeaderText = Instance.new("TextLabel")
|
||||
LoadoutsHeaderText.RobloxLocked = true
|
||||
LoadoutsHeaderText.Name = "LoadoutsHeaderText"
|
||||
LoadoutsHeaderText.BackgroundTransparency = 1
|
||||
LoadoutsHeaderText.Font = Enum.Font.ArialBold
|
||||
LoadoutsHeaderText.FontSize = Enum.FontSize.Size18
|
||||
LoadoutsHeaderText.Size = UDim2.new(1,0,1,0)
|
||||
LoadoutsHeaderText.Text = "Loadouts"
|
||||
LoadoutsHeaderText.TextColor3 = Color3.new(1,1,1)
|
||||
LoadoutsHeaderText.Parent = GearLoadoutsHeader
|
||||
|
||||
local GearLoadoutsScrollingArea = GearGridScrollingArea:clone()
|
||||
GearLoadoutsScrollingArea.RobloxLocked = true
|
||||
GearLoadoutsScrollingArea.Name = "GearLoadoutsScrollingArea"
|
||||
GearLoadoutsScrollingArea.Position = UDim2.new(1,-15,0.15,2)
|
||||
GearLoadoutsScrollingArea.Size = UDim2.new(0,17,0.85,-2)
|
||||
GearLoadoutsScrollingArea.Parent = GearLoadouts
|
||||
|
||||
local LoadoutsList = Instance.new("Frame")
|
||||
LoadoutsList.RobloxLocked = true
|
||||
LoadoutsList.Name = "LoadoutsList"
|
||||
LoadoutsList.Position = UDim2.new(0,0,0.15,2)
|
||||
LoadoutsList.Size = UDim2.new(1,-17,0.85,-2)
|
||||
LoadoutsList.Style = Enum.FrameStyle.RobloxSquare
|
||||
LoadoutsList.Parent = GearLoadouts
|
||||
|
||||
local GearPreview = Instance.new("Frame")
|
||||
GearPreview.RobloxLocked = true
|
||||
GearPreview.Name = "GearPreview"
|
||||
GearPreview.Position = UDim2.new(0.7,23,0,0)
|
||||
GearPreview.Size = UDim2.new(0.3,-28,0.5,-1)
|
||||
GearPreview.BackgroundTransparency = 1
|
||||
GearPreview.ZIndex = 7
|
||||
GearPreview.Parent = Gear
|
||||
|
||||
-- GearPreview Children
|
||||
local GearStats = Instance.new("Frame")
|
||||
GearStats.RobloxLocked = true
|
||||
GearStats.Name = "GearStats"
|
||||
GearStats.BackgroundTransparency = 1
|
||||
GearStats.Position = UDim2.new(0,0,0.75,0)
|
||||
GearStats.Size = UDim2.new(1,0,0.25,0)
|
||||
GearStats.ZIndex = 8
|
||||
GearStats.Parent = GearPreview
|
||||
|
||||
-- GearStats Children
|
||||
local GearName = Instance.new("TextLabel")
|
||||
GearName.RobloxLocked = true
|
||||
GearName.Name = "GearName"
|
||||
GearName.BackgroundTransparency = 1
|
||||
GearName.Font = Enum.Font.ArialBold
|
||||
GearName.FontSize = Enum.FontSize.Size18
|
||||
GearName.Position = UDim2.new(0,-3,0,0)
|
||||
GearName.Size = UDim2.new(1,6,1,5)
|
||||
GearName.Text = ""
|
||||
GearName.TextColor3 = Color3.new(1,1,1)
|
||||
GearName.TextWrap = true
|
||||
GearName.ZIndex = 9
|
||||
GearName.Parent = GearStats
|
||||
|
||||
local GearImage = Instance.new("ImageLabel")
|
||||
GearImage.RobloxLocked = true
|
||||
GearImage.Name = "GearImage"
|
||||
GearImage.Image = ""
|
||||
GearImage.BackgroundTransparency = 1
|
||||
GearImage.Position = UDim2.new(0.125,0,0,0)
|
||||
GearImage.Size = UDim2.new(0.75,0,0.75,0)
|
||||
GearImage.ZIndex = 8
|
||||
GearImage.Parent = GearPreview
|
||||
|
||||
--GearImage Children
|
||||
local GearIcons = Instance.new("Frame")
|
||||
GearIcons.BackgroundColor3 = Color3.new(0,0,0)
|
||||
GearIcons.BackgroundTransparency = 0.5
|
||||
GearIcons.BorderSizePixel = 0
|
||||
GearIcons.RobloxLocked = true
|
||||
GearIcons.Name = "GearIcons"
|
||||
GearIcons.Position = UDim2.new(0.4,2,0.85,-2)
|
||||
GearIcons.Size = UDim2.new(0.6,0,0.15,0)
|
||||
GearIcons.Visible = false
|
||||
GearIcons.ZIndex = 9
|
||||
GearIcons.Parent = GearImage
|
||||
|
||||
-- GearIcons Children
|
||||
local GenreImage = Instance.new("ImageLabel")
|
||||
GenreImage.RobloxLocked = true
|
||||
GenreImage.Name = "GenreImage"
|
||||
GenreImage.BackgroundColor3 = Color3.new(102/255,153/255,1)
|
||||
GenreImage.BackgroundTransparency = 0.5
|
||||
GenreImage.BorderSizePixel = 0
|
||||
GenreImage.Size = UDim2.new(0.25,0,1,0)
|
||||
GenreImage.Parent = GearIcons
|
||||
|
||||
local AttributeOneImage = GenreImage:clone()
|
||||
AttributeOneImage.RobloxLocked = true
|
||||
AttributeOneImage.Name = "AttributeOneImage"
|
||||
AttributeOneImage.BackgroundColor3 = Color3.new(1,51/255,0)
|
||||
AttributeOneImage.Position = UDim2.new(0.25,0,0,0)
|
||||
AttributeOneImage.Parent = GearIcons
|
||||
|
||||
local AttributeTwoImage = GenreImage:clone()
|
||||
AttributeTwoImage.RobloxLocked = true
|
||||
AttributeTwoImage.Name = "AttributeTwoImage"
|
||||
AttributeTwoImage.BackgroundColor3 = Color3.new(153/255,1,153/255)
|
||||
AttributeTwoImage.Position = UDim2.new(0.5,0,0,0)
|
||||
AttributeTwoImage.Parent = GearIcons
|
||||
|
||||
local AttributeThreeImage = GenreImage:clone()
|
||||
AttributeThreeImage.RobloxLocked = true
|
||||
AttributeThreeImage.Name = "AttributeThreeImage"
|
||||
AttributeThreeImage.BackgroundColor3 = Color3.new(0,0.5,0.5)
|
||||
AttributeThreeImage.Position = UDim2.new(0.75,0,0,0)
|
||||
AttributeThreeImage.Parent = GearIcons
|
||||
|
||||
------------------------------- WARDROBE -------------------------------------------------------
|
||||
if game.CoreGui.Version < 8 then
|
||||
-- no need for this to stick around, we aren't ready for wardrobe
|
||||
script:remove()
|
||||
return
|
||||
end
|
||||
|
||||
local function makeCharFrame(frameName, parent)
|
||||
local frame = Instance.new("Frame")
|
||||
frame.RobloxLocked = true
|
||||
frame.Size = UDim2.new(1,0,1,-70)
|
||||
frame.Position = UDim2.new(0,0,0,20)
|
||||
frame.Name = frameName
|
||||
frame.BackgroundTransparency = 1
|
||||
frame.Parent = parent
|
||||
frame.Visible = false
|
||||
return frame
|
||||
end
|
||||
local function makeZone( zoneName, image, size, position, parent )
|
||||
local zone = Instance.new("ImageLabel")
|
||||
zone.RobloxLocked = true
|
||||
zone.Name = zoneName
|
||||
zone.Image = image
|
||||
zone.Size = size
|
||||
zone.BackgroundTransparency = 1
|
||||
zone.Position = position
|
||||
zone.Parent = parent
|
||||
return zone
|
||||
end
|
||||
local function makeStyledButton( buttonName, size, position, parent, buttonStyle )
|
||||
local button = Instance.new("ImageButton")
|
||||
button.RobloxLocked = true
|
||||
button.Name = buttonName
|
||||
button.Size = size
|
||||
button.Position = position
|
||||
if buttonStyle then
|
||||
button.Style = buttonStyle
|
||||
else
|
||||
button.BackgroundColor3 = Color3.new(0,0,0)
|
||||
button.BorderColor3 = Color3.new(1,1,1)
|
||||
end
|
||||
button.Parent = parent
|
||||
return button
|
||||
end
|
||||
local function makeTextLabel( TextLabelName,text,position,parent )
|
||||
local label = Instance.new("TextLabel")
|
||||
label.RobloxLocked = true
|
||||
label.BackgroundTransparency = 1
|
||||
label.Size = UDim2.new(0,32,0,14)
|
||||
label.Name = TextLabelName
|
||||
label.Font = Enum.Font.Arial
|
||||
label.TextColor3 = Color3.new(1,1,1)
|
||||
label.FontSize = Enum.FontSize.Size14
|
||||
label.Text = text
|
||||
label.Position = position
|
||||
label.Parent = parent
|
||||
end
|
||||
|
||||
|
||||
local Wardrobe = Instance.new("Frame")
|
||||
Wardrobe.Name = "Wardrobe"
|
||||
Wardrobe.RobloxLocked = true
|
||||
Wardrobe.BackgroundTransparency = 1
|
||||
Wardrobe.Visible = false
|
||||
Wardrobe.Size = UDim2.new(1,0,1,0)
|
||||
Wardrobe.Parent = Backpack
|
||||
|
||||
local AssetList = Instance.new("Frame")
|
||||
AssetList.RobloxLocked = true
|
||||
AssetList.Name = "AssetList"
|
||||
AssetList.Position = UDim2.new(0,4,0,5)
|
||||
AssetList.Size = UDim2.new(0,85,1,-5)
|
||||
AssetList.BackgroundTransparency = 1
|
||||
AssetList.Visible = true
|
||||
AssetList.Parent = Wardrobe
|
||||
|
||||
local PreviewAssetFrame = Instance.new("Frame")
|
||||
PreviewAssetFrame.RobloxLocked = true
|
||||
PreviewAssetFrame.Name = "PreviewAssetFrame"
|
||||
PreviewAssetFrame.BackgroundTransparency = 1
|
||||
PreviewAssetFrame.Position = UDim2.new(1,-240,0,30)
|
||||
PreviewAssetFrame.Size = UDim2.new(0,250,0,250)
|
||||
PreviewAssetFrame.Parent = Wardrobe
|
||||
|
||||
local PreviewAssetBacking = Instance.new("TextButton")
|
||||
PreviewAssetBacking.RobloxLocked = true
|
||||
PreviewAssetBacking.Name = "PreviewAssetBacking"
|
||||
PreviewAssetBacking.Active = false
|
||||
PreviewAssetBacking.Text = ""
|
||||
PreviewAssetBacking.AutoButtonColor = false
|
||||
PreviewAssetBacking.Size = UDim2.new(1,0,1,0)
|
||||
PreviewAssetBacking.Style = Enum.ButtonStyle.RobloxButton
|
||||
PreviewAssetBacking.Visible = false
|
||||
PreviewAssetBacking.ZIndex = 9
|
||||
PreviewAssetBacking.Parent = PreviewAssetFrame
|
||||
|
||||
local PreviewAssetImage = Instance.new("ImageLabel")
|
||||
PreviewAssetImage.RobloxLocked = true
|
||||
PreviewAssetImage.Name = "PreviewAssetImage"
|
||||
PreviewAssetImage.BackgroundTransparency = 0.8
|
||||
PreviewAssetImage.Position = UDim2.new(0.5,-100,0,0)
|
||||
PreviewAssetImage.Size = UDim2.new(0,200,0,200)
|
||||
PreviewAssetImage.BorderSizePixel = 0
|
||||
PreviewAssetImage.ZIndex = 10
|
||||
PreviewAssetImage.Parent = PreviewAssetBacking
|
||||
|
||||
local AssetNameLabel = Instance.new("TextLabel")
|
||||
AssetNameLabel.Name = "AssetNameLabel"
|
||||
AssetNameLabel.RobloxLocked = true
|
||||
AssetNameLabel.BackgroundTransparency = 1
|
||||
AssetNameLabel.Position = UDim2.new(0,0,1,-20)
|
||||
AssetNameLabel.Size = UDim2.new(0.5,0,0,24)
|
||||
AssetNameLabel.ZIndex = 10
|
||||
AssetNameLabel.Font = Enum.Font.Arial
|
||||
AssetNameLabel.Text = ""
|
||||
AssetNameLabel.TextColor3 = Color3.new(1,1,1)
|
||||
AssetNameLabel.TextScaled = true
|
||||
AssetNameLabel.Parent = PreviewAssetBacking
|
||||
|
||||
local AssetTypeLabel = AssetNameLabel:clone()
|
||||
AssetTypeLabel.RobloxLocked = true
|
||||
AssetTypeLabel.Name = "AssetTypeLabel"
|
||||
AssetTypeLabel.TextScaled = false
|
||||
AssetTypeLabel.FontSize = Enum.FontSize.Size18
|
||||
AssetTypeLabel.Position = UDim2.new(0.5,3,1,-20)
|
||||
AssetTypeLabel.Parent = PreviewAssetBacking
|
||||
|
||||
|
||||
|
||||
local PreviewButton = Instance.new("TextButton")
|
||||
PreviewButton.RobloxLocked = true
|
||||
PreviewButton.Name = "PreviewButton"
|
||||
PreviewButton.Text = "Rotate"
|
||||
PreviewButton.BackgroundColor3 = Color3.new(0,0,0)
|
||||
PreviewButton.BackgroundTransparency = 0.5
|
||||
PreviewButton.BorderColor3 = Color3.new(1,1,1)
|
||||
PreviewButton.Position = UDim2.new(1.2,-62,1,-50)
|
||||
PreviewButton.Size = UDim2.new(0,125,0,50)
|
||||
PreviewButton.Font = Enum.Font.ArialBold
|
||||
PreviewButton.FontSize = Enum.FontSize.Size24
|
||||
PreviewButton.TextColor3 = Color3.new(1,1,1)
|
||||
PreviewButton.TextWrapped = true
|
||||
PreviewButton.TextStrokeTransparency = 0
|
||||
PreviewButton.Parent = Wardrobe
|
||||
|
||||
local CharacterPane = Instance.new("Frame")
|
||||
CharacterPane.RobloxLocked = true
|
||||
CharacterPane.Name = "CharacterPane"
|
||||
CharacterPane.Position = UDim2.new(1,-220,0,32)
|
||||
CharacterPane.Size = UDim2.new(0,220,1,-40)
|
||||
CharacterPane.BackgroundTransparency = 1
|
||||
CharacterPane.Visible = true
|
||||
CharacterPane.Parent = Wardrobe
|
||||
|
||||
--CharacterPane Children
|
||||
local FaceFrame = makeCharFrame("FacesFrame", CharacterPane)
|
||||
game:GetService("ContentProvider"):Preload("http://www.watrbx.wtf/asset/?id=28")
|
||||
makeZone("FaceZone","http://www.watrbx.wtf/asset/?id=28",UDim2.new(0,157,0,137),UDim2.new(0.5,-78,0.5,-68),FaceFrame)
|
||||
makeStyledButton("Face",UDim2.new(0,64,0,64),UDim2.new(0.5,-32,0.5,-135),FaceFrame)
|
||||
|
||||
local HeadFrame = makeCharFrame("HeadsFrame", CharacterPane)
|
||||
makeZone("FaceZone","http://www.watrbx.wtf/asset/?id=28",UDim2.new(0,157,0,137),UDim2.new(0.5,-78,0.5,-68),HeadFrame)
|
||||
makeStyledButton("Head",UDim2.new(0,64,0,64),UDim2.new(0.5,-32,0.5,-135),HeadFrame)
|
||||
|
||||
local HatsFrame = makeCharFrame("HatsFrame", CharacterPane)
|
||||
game:GetService("ContentProvider"):Preload("http://www.watrbx.wtf/asset/?id=29")
|
||||
local HatsZone = makeZone("HatsZone","http://www.watrbx.wtf/asset/?id=29",UDim2.new(0,186,0,184),UDim2.new(0.5,-93,0.5,-100), HatsFrame)
|
||||
makeStyledButton("Hat1Button",UDim2.new(0,64,0,64),UDim2.new(0,-1,0,-1),HatsZone,Enum.ButtonStyle.RobloxButton)
|
||||
makeStyledButton("Hat2Button",UDim2.new(0,64,0,64),UDim2.new(0,63,0,-1),HatsZone,Enum.ButtonStyle.RobloxButton)
|
||||
makeStyledButton("Hat3Button",UDim2.new(0,64,0,64),UDim2.new(0,127,0,-1),HatsZone,Enum.ButtonStyle.RobloxButton)
|
||||
|
||||
local PantsFrame = makeCharFrame("PantsFrame", CharacterPane)
|
||||
game:GetService("ContentProvider"):Preload("http://www.watrbx.wtf/asset/?id=30")
|
||||
makeZone("PantsZone","http://www.watrbx.wtf/asset/?id=30",UDim2.new(0,121,0,99),UDim2.new(0.5,-60,0.5,-100),PantsFrame)
|
||||
|
||||
local pantFrame = Instance.new("Frame")
|
||||
pantFrame.RobloxLocked = true
|
||||
pantFrame.Size = UDim2.new(0,25,0,56)
|
||||
pantFrame.Position = UDim2.new(0.5,-26,0.5,0)
|
||||
pantFrame.BackgroundColor3 = Color3.new(0,0,0)
|
||||
pantFrame.BorderColor3 = Color3.new(1,1,1)
|
||||
pantFrame.Name = "PantFrame"
|
||||
pantFrame.Parent = PantsFrame
|
||||
|
||||
local otherPantFrame = pantFrame:clone()
|
||||
otherPantFrame.Position = UDim2.new(0.5,3,0.5,0)
|
||||
otherPantFrame.RobloxLocked = true
|
||||
otherPantFrame.Parent = PantsFrame
|
||||
|
||||
local CurrentPants = Instance.new("ImageButton")
|
||||
CurrentPants.RobloxLocked = true
|
||||
CurrentPants.BackgroundTransparency = 1
|
||||
CurrentPants.ZIndex = 2
|
||||
CurrentPants.Name = "CurrentPants"
|
||||
CurrentPants.Position = UDim2.new(0.5,-31,0.5,-4)
|
||||
CurrentPants.Size = UDim2.new(0,54,0,59)
|
||||
CurrentPants.Parent = PantsFrame
|
||||
|
||||
local MeshFrame = makeCharFrame("PackagesFrame", CharacterPane)
|
||||
local torsoButton = makeStyledButton("TorsoMeshButton", UDim2.new(0,64,0,64),UDim2.new(0.5,-32,0.5,-110),MeshFrame,Enum.ButtonStyle.RobloxButton)
|
||||
makeTextLabel("TorsoLabel","Torso",UDim2.new(0.5,-16,0,-25),torsoButton)
|
||||
local leftLegButton = makeStyledButton("LeftLegMeshButton", UDim2.new(0,64,0,64),UDim2.new(0.5,0,0.5,-25),MeshFrame,Enum.ButtonStyle.RobloxButton)
|
||||
makeTextLabel("LeftLegLabel","Left Leg",UDim2.new(0.5,-16,0,-25),leftLegButton)
|
||||
local rightLegButton = makeStyledButton("RightLegMeshButton", UDim2.new(0,64,0,64),UDim2.new(0.5,-64,0.5,-25),MeshFrame,Enum.ButtonStyle.RobloxButton)
|
||||
makeTextLabel("RightLegLabel","Right Leg",UDim2.new(0.5,-16,0,-25),rightLegButton)
|
||||
local rightArmButton = makeStyledButton("RightArmMeshButton", UDim2.new(0,64,0,64),UDim2.new(0.5,-96,0.5,-110),MeshFrame,Enum.ButtonStyle.RobloxButton)
|
||||
makeTextLabel("RightArmLabel","Right Arm",UDim2.new(0.5,-16,0,-25),rightArmButton)
|
||||
local leftArmButton = makeStyledButton("LeftArmMeshButton", UDim2.new(0,64,0,64),UDim2.new(0.5,32,0.5,-110),MeshFrame,Enum.ButtonStyle.RobloxButton)
|
||||
makeTextLabel("LeftArmLabel","Left Arm",UDim2.new(0.5,-16,0,-25),leftArmButton)
|
||||
|
||||
local TShirtFrame = makeCharFrame("T-ShirtsFrame",CharacterPane)
|
||||
game:GetService("ContentProvider"):Preload("http://www.watrbx.wtf/asset/?id=31")
|
||||
makeZone("TShirtZone","http://www.watrbx.wtf/asset/?id=31",UDim2.new(0,121,0,154),UDim2.new(0.5,-60,0.5,-100),TShirtFrame)
|
||||
makeStyledButton("TShirtButton", UDim2.new(0,64,0,64),UDim2.new(0.5,-32,0.5,-64),TShirtFrame)
|
||||
|
||||
|
||||
local ShirtFrame = makeCharFrame("ShirtsFrame", CharacterPane)
|
||||
makeZone("ShirtZone","http://www.watrbx.wtf/asset/?id=31",UDim2.new(0,121,0,154),UDim2.new(0.5,-60,0.5,-100),ShirtFrame)
|
||||
makeStyledButton("ShirtButton", UDim2.new(0,64,0,64),UDim2.new(0.5,-32,0.5,-64),ShirtFrame)
|
||||
|
||||
|
||||
local ColorFrame = makeCharFrame("ColorFrame", CharacterPane)
|
||||
game:GetService("ContentProvider"):Preload("http://www.watrbx.wtf.com/asset/?id=32")
|
||||
local ColorZone = makeZone("ColorZone","http://www.watrbx.wtf/asset/?id=32", UDim2.new(0,120,0,150),UDim2.new(0.5,-60,0.5,-100),ColorFrame)
|
||||
makeStyledButton("Head",UDim2.new(0.26,0,0.19,0),UDim2.new(0.37,0,0.02,0),ColorZone).AutoButtonColor = false
|
||||
makeStyledButton("LeftArm",UDim2.new(0.19,0,0.36,0),UDim2.new(0.78,0,0.26,0),ColorZone).AutoButtonColor = false
|
||||
makeStyledButton("RightArm",UDim2.new(0.19,0,0.36,0),UDim2.new(0.025,0,0.26,0),ColorZone).AutoButtonColor = false
|
||||
makeStyledButton("Torso",UDim2.new(0.43,0,0.36,0),UDim2.new(0.28,0,0.26,0),ColorZone).AutoButtonColor = false
|
||||
makeStyledButton("RightLeg",UDim2.new(0.19,0,0.31,0),UDim2.new(0.275,0,0.67,0),ColorZone).AutoButtonColor = false
|
||||
makeStyledButton("LeftLeg",UDim2.new(0.19,0,0.31,0),UDim2.new(0.525,0,0.67,0),ColorZone).AutoButtonColor = false
|
||||
|
||||
-- Character Panel label (shows what category we are currently browsing)
|
||||
local CategoryLabel = Instance.new("TextLabel")
|
||||
CategoryLabel.RobloxLocked = true
|
||||
CategoryLabel.Name = "CategoryLabel"
|
||||
CategoryLabel.BackgroundTransparency = 1
|
||||
CategoryLabel.Font = Enum.Font.ArialBold
|
||||
CategoryLabel.FontSize = Enum.FontSize.Size18
|
||||
CategoryLabel.Position = UDim2.new(0,0,0,-7)
|
||||
CategoryLabel.Size = UDim2.new(1,0,0,20)
|
||||
CategoryLabel.TextXAlignment = Enum.TextXAlignment.Center
|
||||
CategoryLabel.Text = "All"
|
||||
CategoryLabel.TextColor3 = Color3.new(1,1,1)
|
||||
CategoryLabel.Parent = CharacterPane
|
||||
|
||||
--Save Button
|
||||
local SaveButton = Instance.new("TextButton")
|
||||
SaveButton.RobloxLocked = true
|
||||
SaveButton.Name = "SaveButton"
|
||||
SaveButton.Size = UDim2.new(0.6,0,0,50)
|
||||
SaveButton.Position = UDim2.new(0.2,0,1,-50)
|
||||
SaveButton.Style = Enum.ButtonStyle.RobloxButton
|
||||
SaveButton.Selected = false
|
||||
SaveButton.Font = Enum.Font.ArialBold
|
||||
SaveButton.FontSize = Enum.FontSize.Size18
|
||||
SaveButton.Text = "Save"
|
||||
SaveButton.TextColor3 = Color3.new(1,1,1)
|
||||
SaveButton.Parent = CharacterPane
|
||||
|
||||
-- no need for this to stick around
|
||||
|
||||
script:Destroy()
|
||||
+862
@@ -0,0 +1,862 @@
|
||||
-- A couple of necessary functions
|
||||
local function waitForChild(instance, name)
|
||||
assert(instance)
|
||||
assert(name)
|
||||
while not instance:FindFirstChild(name) do
|
||||
print('(BPGear): Waiting for ...', instance, name)
|
||||
instance.ChildAdded:wait()
|
||||
end
|
||||
return instance:FindFirstChild(name)
|
||||
end
|
||||
local function waitForProperty(instance, property)
|
||||
assert(instance)
|
||||
assert(property)
|
||||
while not instance[property] do
|
||||
instance.Changed:wait()
|
||||
end
|
||||
end
|
||||
|
||||
local function IsTouchDevice()
|
||||
local touchEnabled = false
|
||||
pcall(function() touchEnabled = Game:GetService('UserInputService').TouchEnabled end)
|
||||
return touchEnabled
|
||||
end
|
||||
|
||||
|
||||
waitForChild(game,"Players")
|
||||
waitForProperty(game.Players,"LocalPlayer")
|
||||
local player = game.Players.LocalPlayer
|
||||
|
||||
local RbxGui, msg = LoadLibrary("RbxGuiThirteen")
|
||||
if not RbxGui then print("could not find RbxGui!") return end
|
||||
|
||||
--- Begin Locals
|
||||
local StaticTabName = "gear"
|
||||
|
||||
local backpack = script.Parent
|
||||
local screen = script.Parent.Parent
|
||||
|
||||
local backpackItems = {}
|
||||
local buttons = {}
|
||||
|
||||
local debounce = false
|
||||
local browsingMenu = false
|
||||
|
||||
local mouseEnterCons = {}
|
||||
local mouseClickCons = {}
|
||||
|
||||
local characterChildAddedCon = nil
|
||||
local characterChildRemovedCon = nil
|
||||
local backpackAddCon = nil
|
||||
|
||||
local playerBackpack = waitForChild(player,"Backpack")
|
||||
|
||||
waitForChild(backpack,"Tabs")
|
||||
|
||||
waitForChild(backpack,"Gear")
|
||||
local gearPreview = waitForChild(backpack.Gear,"GearPreview")
|
||||
|
||||
local scroller = waitForChild(backpack.Gear,"GearGridScrollingArea")
|
||||
|
||||
local currentLoadout = waitForChild(backpack.Parent,"CurrentLoadout")
|
||||
|
||||
local grid = waitForChild(backpack.Gear,"GearGrid")
|
||||
local gearButton = waitForChild(grid,"GearButton")
|
||||
|
||||
local swapSlot = waitForChild(script.Parent,"SwapSlot")
|
||||
|
||||
local backpackManager = waitForChild(script.Parent,"CoreScripts/2013/BackpackScripts/BackpackManager")
|
||||
local backpackOpenEvent = waitForChild(backpackManager,"BackpackOpenEvent")
|
||||
local backpackCloseEvent = waitForChild(backpackManager,"BackpackCloseEvent")
|
||||
local tabClickedEvent = waitForChild(backpackManager,"TabClickedEvent")
|
||||
local resizeEvent = waitForChild(backpackManager,"ResizeEvent")
|
||||
local searchRequestedEvent = waitForChild(backpackManager,"SearchRequestedEvent")
|
||||
local tellBackpackReadyFunc = waitForChild(backpackManager,"BackpackReady")
|
||||
|
||||
-- creating scroll bar early as to make sure items get placed correctly
|
||||
local scrollFrame, scrollUp, scrollDown, recalculateScroll = RbxGui.CreateScrollingFrame(nil, "grid", Vector2.new(6, 6))
|
||||
|
||||
scrollFrame.Position = UDim2.new(0,0,0,30)
|
||||
scrollFrame.Size = UDim2.new(1,0,1,-30)
|
||||
scrollFrame.Parent = backpack.Gear.GearGrid
|
||||
|
||||
local scrollBar = Instance.new("Frame")
|
||||
scrollBar.Name = "ScrollBar"
|
||||
scrollBar.BackgroundTransparency = 0.9
|
||||
scrollBar.BackgroundColor3 = Color3.new(1,1,1)
|
||||
scrollBar.BorderSizePixel = 0
|
||||
scrollBar.Size = UDim2.new(0, 17, 1, -36)
|
||||
scrollBar.Position = UDim2.new(0,0,0,18)
|
||||
scrollBar.Parent = scroller
|
||||
|
||||
scrollDown.Position = UDim2.new(0,0,1,-17)
|
||||
|
||||
scrollUp.Parent = scroller
|
||||
scrollDown.Parent = scroller
|
||||
|
||||
local scrollFrameLoadout, scrollUpLoadout, scrollDownLoadout, recalculateScrollLoadout = RbxGui.CreateScrollingFrame()
|
||||
|
||||
scrollFrameLoadout.Position = UDim2.new(0,0,0,0)
|
||||
scrollFrameLoadout.Size = UDim2.new(1,0,1,0)
|
||||
scrollFrameLoadout.Parent = backpack.Gear.GearLoadouts.LoadoutsList
|
||||
|
||||
local LoadoutButton = Instance.new("TextButton")
|
||||
LoadoutButton.RobloxLocked = true
|
||||
LoadoutButton.Name = "LoadoutButton"
|
||||
LoadoutButton.Font = Enum.Font.ArialBold
|
||||
LoadoutButton.FontSize = Enum.FontSize.Size14
|
||||
LoadoutButton.Position = UDim2.new(0,0,0,0)
|
||||
LoadoutButton.Size = UDim2.new(1,0,0,32)
|
||||
LoadoutButton.Style = Enum.ButtonStyle.RobloxButton
|
||||
LoadoutButton.Text = "Loadout #1"
|
||||
LoadoutButton.TextColor3 = Color3.new(1,1,1)
|
||||
LoadoutButton.Parent = scrollFrameLoadout
|
||||
|
||||
local LoadoutButtonTwo = LoadoutButton:clone()
|
||||
LoadoutButtonTwo.Text = "Loadout #2"
|
||||
LoadoutButtonTwo.Parent = scrollFrameLoadout
|
||||
|
||||
local LoadoutButtonThree = LoadoutButton:clone()
|
||||
LoadoutButtonThree.Text = "Loadout #3"
|
||||
LoadoutButtonThree.Parent = scrollFrameLoadout
|
||||
|
||||
local LoadoutButtonFour = LoadoutButton:clone()
|
||||
LoadoutButtonFour.Text = "Loadout #4"
|
||||
LoadoutButtonFour.Parent = scrollFrameLoadout
|
||||
|
||||
local scrollBarLoadout = Instance.new("Frame")
|
||||
scrollBarLoadout.Name = "ScrollBarLoadout"
|
||||
scrollBarLoadout.BackgroundTransparency = 0.9
|
||||
scrollBarLoadout.BackgroundColor3 = Color3.new(1,1,1)
|
||||
scrollBarLoadout.BorderSizePixel = 0
|
||||
scrollBarLoadout.Size = UDim2.new(0, 17, 1, -36)
|
||||
scrollBarLoadout.Position = UDim2.new(0,0,0,18)
|
||||
scrollBarLoadout.Parent = backpack.Gear.GearLoadouts.GearLoadoutsScrollingArea
|
||||
|
||||
scrollDownLoadout.Position = UDim2.new(0,0,1,-17)
|
||||
|
||||
scrollUpLoadout.Parent = backpack.Gear.GearLoadouts.GearLoadoutsScrollingArea
|
||||
scrollDownLoadout.Parent = backpack.Gear.GearLoadouts.GearLoadoutsScrollingArea
|
||||
|
||||
|
||||
-- Begin Functions
|
||||
function removeFromMap(map,object)
|
||||
for i = 1, #map do
|
||||
if map[i] == object then
|
||||
table.remove(map,i)
|
||||
break
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function robloxLock(instance)
|
||||
instance.RobloxLocked = true
|
||||
children = instance:GetChildren()
|
||||
if children then
|
||||
for i, child in ipairs(children) do
|
||||
robloxLock(child)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function resize()
|
||||
local size = 0
|
||||
if gearPreview.AbsoluteSize.Y > gearPreview.AbsoluteSize.X then
|
||||
size = gearPreview.AbsoluteSize.X * 0.75
|
||||
else
|
||||
size = gearPreview.AbsoluteSize.Y * 0.75
|
||||
end
|
||||
|
||||
waitForChild(gearPreview,"GearImage")
|
||||
gearPreview.GearImage.Size = UDim2.new(0,size,0,size)
|
||||
gearPreview.GearImage.Position = UDim2.new(0,gearPreview.AbsoluteSize.X/2 - size/2,0.75,-size)
|
||||
|
||||
resizeGrid()
|
||||
end
|
||||
|
||||
function addToGrid(child)
|
||||
if not child:IsA("Tool") then
|
||||
if not child:IsA("HopperBin") then
|
||||
return
|
||||
end
|
||||
end
|
||||
if child:FindFirstChild("RobloxBuildTool") then return end
|
||||
|
||||
for i,v in pairs(backpackItems) do -- check to see if we already have this gear registered
|
||||
if v == child then return end
|
||||
end
|
||||
|
||||
table.insert(backpackItems,child)
|
||||
|
||||
local changeCon = child.Changed:connect(function(prop)
|
||||
if prop == "Name" then
|
||||
if buttons[child] then
|
||||
if buttons[child].Image == "" then
|
||||
buttons[child].GearText.Text = child.Name
|
||||
end
|
||||
end
|
||||
end
|
||||
end)
|
||||
local ancestryCon = nil
|
||||
ancestryCon = child.AncestryChanged:connect(function(theChild,theParent)
|
||||
local thisObject = nil
|
||||
for k,v in pairs(backpackItems) do
|
||||
if v == child then
|
||||
thisObject = v
|
||||
break
|
||||
end
|
||||
end
|
||||
|
||||
waitForProperty(player,"Character")
|
||||
waitForChild(player,"Backpack")
|
||||
if (child.Parent ~= player.Backpack and child.Parent ~= player.Character) then
|
||||
if ancestryCon then ancestryCon:disconnect() end
|
||||
if changeCon then changeCon:disconnect() end
|
||||
|
||||
for k,v in pairs(backpackItems) do
|
||||
if v == thisObject then
|
||||
if mouseEnterCons[buttons[v]] then mouseEnterCons[buttons[v]]:disconnect() end
|
||||
if mouseClickCons[buttons[v]] then mouseClickCons[buttons[v]]:disconnect() end
|
||||
buttons[v].Parent = nil
|
||||
buttons[v] = nil
|
||||
break
|
||||
end
|
||||
end
|
||||
|
||||
removeFromMap(backpackItems,thisObject)
|
||||
|
||||
resizeGrid()
|
||||
else
|
||||
resizeGrid()
|
||||
end
|
||||
updateGridActive()
|
||||
end)
|
||||
resizeGrid()
|
||||
end
|
||||
|
||||
function buttonClick(button)
|
||||
if button:FindFirstChild("UnequipContextMenu") and not button.Active then
|
||||
button.UnequipContextMenu.Visible = true
|
||||
browsingMenu = true
|
||||
end
|
||||
end
|
||||
|
||||
function previewGear(button)
|
||||
if not browsingMenu then
|
||||
gearPreview.Visible = false
|
||||
gearPreview.GearImage.Image = button.Image
|
||||
gearPreview.GearStats.GearName.Text = button.GearReference.Value.Name
|
||||
end
|
||||
end
|
||||
|
||||
function findEmptySlot()
|
||||
local smallestNum = nil
|
||||
local loadout = currentLoadout:GetChildren()
|
||||
for i = 1, #loadout do
|
||||
if loadout[i]:IsA("Frame") and #loadout[i]:GetChildren() <= 0 then
|
||||
local frameNum = tonumber(string.sub(loadout[i].Name,5))
|
||||
if frameNum == 0 then frameNum = 10 end
|
||||
if not smallestNum or (smallestNum > frameNum) then
|
||||
smallestNum = frameNum
|
||||
end
|
||||
end
|
||||
end
|
||||
if smallestNum == 10 then smallestNum = 0 end
|
||||
return smallestNum
|
||||
end
|
||||
|
||||
function checkForSwap(button,x,y)
|
||||
local loadoutChildren = currentLoadout:GetChildren()
|
||||
for i = 1, #loadoutChildren do
|
||||
if loadoutChildren[i]:IsA("Frame") and string.find(loadoutChildren[i].Name,"Slot") then
|
||||
if x >= loadoutChildren[i].AbsolutePosition.x and x <= (loadoutChildren[i].AbsolutePosition.x + loadoutChildren[i].AbsoluteSize.x) then
|
||||
if y >= loadoutChildren[i].AbsolutePosition.y and y <= (loadoutChildren[i].AbsolutePosition.y + loadoutChildren[i].AbsoluteSize.y) then
|
||||
local slot = tonumber(string.sub(loadoutChildren[i].Name,5))
|
||||
swapGearSlot(slot,button)
|
||||
return true
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
return false
|
||||
end
|
||||
|
||||
function resizeGrid()
|
||||
for k,v in pairs(backpackItems) do
|
||||
if not v:FindFirstChild("RobloxBuildTool") then
|
||||
if not buttons[v] then
|
||||
local buttonClone = gearButton:clone()
|
||||
buttonClone.Parent = grid.ScrollingFrame
|
||||
buttonClone.Visible = true
|
||||
buttonClone.Image = v.TextureId
|
||||
if buttonClone.Image == "" then
|
||||
buttonClone.GearText.Text = v.Name
|
||||
end
|
||||
|
||||
buttonClone.GearReference.Value = v
|
||||
buttonClone.Draggable = true
|
||||
buttons[v] = buttonClone
|
||||
|
||||
|
||||
if not IsTouchDevice() then
|
||||
local unequipMenu = getGearContextMenu()
|
||||
|
||||
|
||||
unequipMenu.Visible = false
|
||||
unequipMenu.Parent = buttonClone
|
||||
end
|
||||
|
||||
local beginPos = nil
|
||||
buttonClone.DragBegin:connect(function(value)
|
||||
waitForChild(buttonClone, 'Background')
|
||||
buttonClone['Background'].ZIndex = 10
|
||||
buttonClone.ZIndex = 10
|
||||
beginPos = value
|
||||
end)
|
||||
buttonClone.DragStopped:connect(function(x,y)
|
||||
waitForChild(buttonClone, 'Background')
|
||||
buttonClone['Background'].ZIndex = 1.0
|
||||
buttonClone.ZIndex = 2
|
||||
if beginPos ~= buttonClone.Position then
|
||||
if not checkForSwap(buttonClone,x,y) then
|
||||
buttonClone:TweenPosition(beginPos,Enum.EasingDirection.Out, Enum.EasingStyle.Quad, 0.5, true)
|
||||
buttonClone.Draggable = false
|
||||
delay(0.5,function()
|
||||
buttonClone.Draggable = true
|
||||
end)
|
||||
else
|
||||
buttonClone.Position = beginPos
|
||||
end
|
||||
end
|
||||
end)
|
||||
local clickTime = tick()
|
||||
mouseEnterCons[buttonClone] = buttonClone.MouseEnter:connect(function() previewGear(buttonClone) end)
|
||||
mouseClickCons[buttonClone] = buttonClone.MouseButton1Click:connect(function()
|
||||
local newClickTime = tick()
|
||||
if buttonClone.Active and (newClickTime - clickTime) < 0.5 then
|
||||
local slot = findEmptySlot()
|
||||
if slot then
|
||||
buttonClone.ZIndex = 1
|
||||
swapGearSlot(slot,buttonClone)
|
||||
end
|
||||
else
|
||||
buttonClick(buttonClone)
|
||||
end
|
||||
clickTime = newClickTime
|
||||
end)
|
||||
end
|
||||
end
|
||||
end
|
||||
recalculateScroll()
|
||||
end
|
||||
|
||||
function showPartialGrid(subset)
|
||||
for k,v in pairs(buttons) do
|
||||
v.Parent = nil
|
||||
end
|
||||
if subset then
|
||||
for k,v in pairs(subset) do
|
||||
v.Parent = grid.ScrollingFrame
|
||||
end
|
||||
end
|
||||
recalculateScroll()
|
||||
end
|
||||
|
||||
function showEntireGrid()
|
||||
for k,v in pairs(buttons) do
|
||||
v.Parent = grid.ScrollingFrame
|
||||
end
|
||||
recalculateScroll()
|
||||
end
|
||||
|
||||
function inLoadout(gear)
|
||||
local children = currentLoadout:GetChildren()
|
||||
for i = 1, #children do
|
||||
if children[i]:IsA("Frame") then
|
||||
local button = children[i]:GetChildren()
|
||||
if #button > 0 then
|
||||
if button[1].GearReference.Value and button[1].GearReference.Value == gear then
|
||||
return true
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
return false
|
||||
end
|
||||
|
||||
function updateGridActive()
|
||||
for k,v in pairs(backpackItems) do
|
||||
if buttons[v] then
|
||||
local gear = nil
|
||||
local gearRef = buttons[v]:FindFirstChild("GearReference")
|
||||
|
||||
if gearRef then gear = gearRef.Value end
|
||||
|
||||
if not gear then
|
||||
buttons[v].Active = false
|
||||
elseif inLoadout(gear) then
|
||||
buttons[v].Active = false
|
||||
else
|
||||
buttons[v].Active = true
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function centerGear(loadoutChildren)
|
||||
local gearButtons = {}
|
||||
local lastSlotAdd = nil
|
||||
for i = 1, #loadoutChildren do
|
||||
if loadoutChildren[i]:IsA("Frame") and #loadoutChildren[i]:GetChildren() > 0 then
|
||||
if loadoutChildren[i].Name == "Slot0" then
|
||||
lastSlotAdd = loadoutChildren[i]
|
||||
else
|
||||
table.insert(gearButtons, loadoutChildren[i])
|
||||
end
|
||||
end
|
||||
end
|
||||
if lastSlotAdd then table.insert(gearButtons,lastSlotAdd) end
|
||||
|
||||
local startPos = ( 1 - (#gearButtons * 0.1) ) / 2
|
||||
for i = 1, #gearButtons do
|
||||
gearButtons[i]:TweenPosition(UDim2.new(startPos + ((i - 1) * 0.1),0,0,0), Enum.EasingDirection.Out, Enum.EasingStyle.Quad, 0.25, true)
|
||||
end
|
||||
end
|
||||
|
||||
function tabClickHandler(tabName)
|
||||
if tabName == StaticTabName then
|
||||
backpackOpenHandler(tabName)
|
||||
else
|
||||
backpackCloseHandler(tabName)
|
||||
end
|
||||
end
|
||||
|
||||
function backpackOpenHandler(currentTab)
|
||||
if currentTab and currentTab ~= StaticTabName then
|
||||
backpack.Gear.Visible = false
|
||||
return
|
||||
end
|
||||
|
||||
backpack.Gear.Visible = true
|
||||
updateGridActive()
|
||||
|
||||
resizeGrid()
|
||||
resize()
|
||||
tellBackpackReadyFunc:Invoke()
|
||||
end
|
||||
|
||||
function backpackCloseHandler(currentTab)
|
||||
if currentTab and currentTab ~= StaticTabName then
|
||||
backpack.Gear.Visible = false
|
||||
return
|
||||
end
|
||||
|
||||
backpack.Gear.Visible = false
|
||||
|
||||
resizeGrid()
|
||||
resize()
|
||||
tellBackpackReadyFunc:Invoke()
|
||||
end
|
||||
|
||||
function loadoutCheck(child, selectState)
|
||||
if not child:IsA("ImageButton") then return end
|
||||
for k,v in pairs(backpackItems) do
|
||||
if buttons[v] then
|
||||
if child:FindFirstChild("GearReference") and buttons[v]:FindFirstChild("GearReference") then
|
||||
if buttons[v].GearReference.Value == child.GearReference.Value then
|
||||
buttons[v].Active = selectState
|
||||
break
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function clearPreview()
|
||||
gearPreview.GearImage.Image = ""
|
||||
gearPreview.GearStats.GearName.Text = ""
|
||||
end
|
||||
|
||||
function removeAllEquippedGear(physGear)
|
||||
local stuff = player.Character:GetChildren()
|
||||
for i = 1, #stuff do
|
||||
if ( stuff[i]:IsA("Tool") or stuff[i]:IsA("HopperBin") ) and stuff[i] ~= physGear then
|
||||
stuff[i].Parent = playerBackpack
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function equipGear(physGear)
|
||||
removeAllEquippedGear(physGear)
|
||||
physGear.Parent = player.Character
|
||||
updateGridActive()
|
||||
end
|
||||
|
||||
function unequipGear(physGear)
|
||||
physGear.Parent = playerBackpack
|
||||
updateGridActive()
|
||||
end
|
||||
|
||||
function highlight(button)
|
||||
button.TextColor3 = Color3.new(0,0,0)
|
||||
button.BackgroundColor3 = Color3.new(0.8,0.8,0.8)
|
||||
end
|
||||
function clearHighlight(button)
|
||||
button.TextColor3 = Color3.new(1,1,1)
|
||||
button.BackgroundColor3 = Color3.new(0,0,0)
|
||||
end
|
||||
|
||||
function swapGearSlot(slot,gearButton)
|
||||
if not swapSlot.Value then -- signal loadout to swap a gear out
|
||||
swapSlot.Slot.Value = slot
|
||||
swapSlot.GearButton.Value = gearButton
|
||||
swapSlot.Value = true
|
||||
updateGridActive()
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
local UnequipGearMenuClick = function(element, menu)
|
||||
if type(element.Action) ~= "number" then return end
|
||||
local num = element.Action
|
||||
if num == 1 then -- remove from loadout
|
||||
unequipGear(menu.Parent.GearReference.Value)
|
||||
local inventoryButton = menu.Parent
|
||||
local gearToUnequip = inventoryButton.GearReference.Value
|
||||
local loadoutChildren = currentLoadout:GetChildren()
|
||||
local slot = -1
|
||||
for i = 1, #loadoutChildren do
|
||||
if loadoutChildren[i]:IsA("Frame") then
|
||||
local button = loadoutChildren[i]:GetChildren()
|
||||
if button[1] and button[1].GearReference.Value == gearToUnequip then
|
||||
slot = button[1].SlotNumber.Text
|
||||
break
|
||||
end
|
||||
end
|
||||
end
|
||||
swapGearSlot(slot,nil)
|
||||
end
|
||||
end
|
||||
|
||||
function setupCharacterConnections()
|
||||
|
||||
if backpackAddCon then backpackAddCon:disconnect() end
|
||||
backpackAddCon = game.Players.LocalPlayer.Backpack.ChildAdded:connect(function(child) addToGrid(child) end)
|
||||
|
||||
-- make sure we get all the children
|
||||
local backpackChildren = game.Players.LocalPlayer.Backpack:GetChildren()
|
||||
for i = 1, #backpackChildren do
|
||||
addToGrid(backpackChildren[i])
|
||||
end
|
||||
|
||||
if characterChildAddedCon then characterChildAddedCon:disconnect() end
|
||||
characterChildAddedCon =
|
||||
game.Players.LocalPlayer.Character.ChildAdded:connect(function(child)
|
||||
addToGrid(child)
|
||||
updateGridActive()
|
||||
end)
|
||||
|
||||
if characterChildRemovedCon then characterChildRemovedCon:disconnect() end
|
||||
characterChildRemovedCon =
|
||||
game.Players.LocalPlayer.Character.ChildRemoved:connect(function(child)
|
||||
updateGridActive()
|
||||
end)
|
||||
|
||||
wait()
|
||||
centerGear(currentLoadout:GetChildren())
|
||||
end
|
||||
|
||||
function removeCharacterConnections()
|
||||
if characterChildAddedCon then characterChildAddedCon:disconnect() end
|
||||
if characterChildRemovedCon then characterChildRemovedCon:disconnect() end
|
||||
if backpackAddCon then backpackAddCon:disconnect() end
|
||||
end
|
||||
|
||||
function trim(s)
|
||||
return (s:gsub("^%s*(.-)%s*$", "%1"))
|
||||
end
|
||||
|
||||
function filterGear(terms)
|
||||
local filteredGear = {}
|
||||
for k,v in pairs(backpackItems) do
|
||||
if buttons[v] then
|
||||
local gearString = string.lower(buttons[v].GearReference.Value.Name)
|
||||
gearString = trim(gearString)
|
||||
for i = 1, #terms do
|
||||
if string.match(gearString,terms[i]) then
|
||||
table.insert(filteredGear,buttons[v])
|
||||
break
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
return filteredGear
|
||||
end
|
||||
function splitByWhitespace(text)
|
||||
if type(text) ~= "string" then return nil end
|
||||
|
||||
local terms = {}
|
||||
for token in string.gmatch(text, "[^%s]+") do
|
||||
if string.len(token) > 0 then
|
||||
table.insert(terms,token)
|
||||
end
|
||||
end
|
||||
return terms
|
||||
end
|
||||
function showSearchGear(searchTerms)
|
||||
if not backpack.Gear.Visible then return end -- currently not active tab
|
||||
|
||||
local searchTermTable = splitByWhitespace(searchTerms)
|
||||
if searchTermTable and (#searchTermTable > 0) then
|
||||
currSearchTerms = searchTermTable
|
||||
else
|
||||
currSearchTerms = nil
|
||||
end
|
||||
|
||||
if searchTermTable == nil then
|
||||
showEntireGrid()
|
||||
return
|
||||
end
|
||||
|
||||
local filteredButtons = filterGear(currSearchTerms)
|
||||
showPartialGrid(filteredButtons)
|
||||
end
|
||||
|
||||
function nukeBackpack()
|
||||
while #buttons > 0 do
|
||||
table.remove(buttons)
|
||||
end
|
||||
buttons = {}
|
||||
while #backpackItems > 0 do
|
||||
table.remove(backpackItems)
|
||||
end
|
||||
backpackItems = {}
|
||||
local scrollingFrameChildren = grid.ScrollingFrame:GetChildren()
|
||||
for i = 1, #scrollingFrameChildren do
|
||||
scrollingFrameChildren[i]:remove()
|
||||
end
|
||||
end
|
||||
|
||||
function getGearContextMenu()
|
||||
local gearContextMenu = Instance.new("Frame")
|
||||
gearContextMenu.Active = true
|
||||
gearContextMenu.Name = "UnequipContextMenu"
|
||||
gearContextMenu.Size = UDim2.new(0,115,0,70)
|
||||
gearContextMenu.Position = UDim2.new(0,-16,0,-16)
|
||||
gearContextMenu.BackgroundTransparency = 1
|
||||
gearContextMenu.Visible = false
|
||||
|
||||
local gearContextMenuButton = Instance.new("TextButton")
|
||||
gearContextMenuButton.Name = "UnequipContextMenuButton"
|
||||
gearContextMenuButton.Text = ""
|
||||
gearContextMenuButton.Style = Enum.ButtonStyle.RobloxButtonDefault
|
||||
gearContextMenuButton.ZIndex = 8
|
||||
gearContextMenuButton.Size = UDim2.new(1, 0, 1, -20)
|
||||
gearContextMenuButton.Visible = true
|
||||
gearContextMenuButton.Parent = gearContextMenu
|
||||
|
||||
local elementHeight = 12
|
||||
|
||||
local contextMenuElements = {}
|
||||
local contextMenuElementsName = {"Remove Hotkey"}
|
||||
|
||||
for i = 1, #contextMenuElementsName do
|
||||
local element = {}
|
||||
element.Type = "Button"
|
||||
element.Text = contextMenuElementsName[i]
|
||||
element.Action = i
|
||||
element.DoIt = UnequipGearMenuClick
|
||||
table.insert(contextMenuElements,element)
|
||||
end
|
||||
|
||||
for i, contextElement in ipairs(contextMenuElements) do
|
||||
local element = contextElement
|
||||
if element.Type == "Button" then
|
||||
local button = Instance.new("TextButton")
|
||||
button.Name = "UnequipContextButton" .. i
|
||||
button.BackgroundColor3 = Color3.new(0,0,0)
|
||||
button.BorderSizePixel = 0
|
||||
button.TextXAlignment = Enum.TextXAlignment.Left
|
||||
button.Text = " " .. contextElement.Text
|
||||
button.Font = Enum.Font.Arial
|
||||
button.FontSize = Enum.FontSize.Size14
|
||||
button.Size = UDim2.new(1, 8, 0, elementHeight)
|
||||
button.Position = UDim2.new(0,0,0,elementHeight * i)
|
||||
button.TextColor3 = Color3.new(1,1,1)
|
||||
button.ZIndex = 9
|
||||
button.Parent = gearContextMenuButton
|
||||
|
||||
if not IsTouchDevice() then
|
||||
|
||||
button.MouseButton1Click:connect(function()
|
||||
if button.Active and not gearContextMenu.Parent.Active then
|
||||
local success, result = pcall(function() element.DoIt(element, gearContextMenu) end)
|
||||
browsingMenu = false
|
||||
gearContextMenu.Visible = false
|
||||
clearHighlight(button)
|
||||
clearPreview()
|
||||
end
|
||||
end)
|
||||
|
||||
button.MouseEnter:connect(function()
|
||||
if button.Active and gearContextMenu.Parent.Active then
|
||||
highlight(button)
|
||||
end
|
||||
end)
|
||||
button.MouseLeave:connect(function()
|
||||
if button.Active and gearContextMenu.Parent.Active then
|
||||
clearHighlight(button)
|
||||
end
|
||||
end)
|
||||
end
|
||||
|
||||
contextElement.Button = button
|
||||
contextElement.Element = button
|
||||
elseif element.Type == "Label" then
|
||||
local frame = Instance.new("Frame")
|
||||
frame.Name = "ContextLabel" .. i
|
||||
frame.BackgroundTransparency = 1
|
||||
frame.Size = UDim2.new(1, 8, 0, elementHeight)
|
||||
|
||||
local label = Instance.new("TextLabel")
|
||||
label.Name = "Text1"
|
||||
label.BackgroundTransparency = 1
|
||||
label.BackgroundColor3 = Color3.new(1,1,1)
|
||||
label.BorderSizePixel = 0
|
||||
label.TextXAlignment = Enum.TextXAlignment.Left
|
||||
label.Font = Enum.Font.ArialBold
|
||||
label.FontSize = Enum.FontSize.Size14
|
||||
label.Position = UDim2.new(0.0, 0, 0, 0)
|
||||
label.Size = UDim2.new(0.5, 0, 1, 0)
|
||||
label.TextColor3 = Color3.new(1,1,1)
|
||||
label.ZIndex = 9
|
||||
label.Parent = frame
|
||||
element.Label1 = label
|
||||
|
||||
if element.GetText2 then
|
||||
label = Instance.new("TextLabel")
|
||||
label.Name = "Text2"
|
||||
label.BackgroundTransparency = 1
|
||||
label.BackgroundColor3 = Color3.new(1,1,1)
|
||||
label.BorderSizePixel = 0
|
||||
label.TextXAlignment = Enum.TextXAlignment.Right
|
||||
label.Font = Enum.Font.Arial
|
||||
label.FontSize = Enum.FontSize.Size14
|
||||
label.Position = UDim2.new(0.5, 0, 0, 0)
|
||||
label.Size = UDim2.new(0.5, 0, 1, 0)
|
||||
label.TextColor3 = Color3.new(1,1,1)
|
||||
label.ZIndex = 9
|
||||
label.Parent = frame
|
||||
element.Label2 = label
|
||||
end
|
||||
frame.Parent = gearContextMenuButton
|
||||
element.Label = frame
|
||||
element.Element = frame
|
||||
end
|
||||
end
|
||||
|
||||
gearContextMenu.ZIndex = 4
|
||||
gearContextMenu.MouseLeave:connect(function()
|
||||
browsingMenu = false
|
||||
gearContextMenu.Visible = false
|
||||
clearPreview()
|
||||
end)
|
||||
robloxLock(gearContextMenu)
|
||||
|
||||
return gearContextMenu
|
||||
end
|
||||
|
||||
local backpackChildren = player.Backpack:GetChildren()
|
||||
for i = 1, #backpackChildren do
|
||||
addToGrid(backpackChildren[i])
|
||||
end
|
||||
|
||||
------------------------- Start Lifelong Connections -----------------------
|
||||
|
||||
|
||||
resizeEvent.Event:connect(function(absSize)
|
||||
if debounce then return end
|
||||
|
||||
debounce = true
|
||||
wait()
|
||||
resize()
|
||||
resizeGrid()
|
||||
debounce = false
|
||||
end)
|
||||
|
||||
currentLoadout.ChildAdded:connect(function(child) loadoutCheck(child, false) end)
|
||||
currentLoadout.ChildRemoved:connect(function(child) loadoutCheck(child, true) end)
|
||||
|
||||
currentLoadout.DescendantAdded:connect(function(descendant)
|
||||
if not backpack.Visible and ( descendant:IsA("ImageButton") or descendant:IsA("TextButton") ) then
|
||||
centerGear(currentLoadout:GetChildren())
|
||||
end
|
||||
end)
|
||||
currentLoadout.DescendantRemoving:connect(function(descendant)
|
||||
if not backpack.Visible and ( descendant:IsA("ImageButton") or descendant:IsA("TextButton") ) then
|
||||
wait()
|
||||
centerGear(currentLoadout:GetChildren())
|
||||
end
|
||||
end)
|
||||
|
||||
grid.MouseEnter:connect(function() clearPreview() end)
|
||||
grid.MouseLeave:connect(function() clearPreview() end)
|
||||
|
||||
player.CharacterRemoving:connect(function()
|
||||
removeCharacterConnections()
|
||||
nukeBackpack()
|
||||
end)
|
||||
player.CharacterAdded:connect(function() setupCharacterConnections() end)
|
||||
|
||||
player.ChildAdded:connect(function(child)
|
||||
if child:IsA("Backpack") then
|
||||
playerBackpack = child
|
||||
if backpackAddCon then backpackAddCon:disconnect() end
|
||||
backpackAddCon = game.Players.LocalPlayer.Backpack.ChildAdded:connect(function(child) addToGrid(child) end)
|
||||
end
|
||||
end)
|
||||
|
||||
swapSlot.Changed:connect(function()
|
||||
if not swapSlot.Value then
|
||||
updateGridActive()
|
||||
end
|
||||
end)
|
||||
|
||||
local loadoutChildren = currentLoadout:GetChildren()
|
||||
for i = 1, #loadoutChildren do
|
||||
if loadoutChildren[i]:IsA("Frame") and string.find(loadoutChildren[i].Name,"Slot") then
|
||||
loadoutChildren[i].ChildRemoved:connect(function()
|
||||
updateGridActive()
|
||||
end)
|
||||
loadoutChildren[i].ChildAdded:connect(function()
|
||||
updateGridActive()
|
||||
end)
|
||||
end
|
||||
end
|
||||
------------------------- End Lifelong Connections -----------------------
|
||||
|
||||
resize()
|
||||
resizeGrid()
|
||||
|
||||
-- make sure any items in the loadout are accounted for in inventory
|
||||
local loadoutChildren = currentLoadout:GetChildren()
|
||||
for i = 1, #loadoutChildren do
|
||||
loadoutCheck(loadoutChildren[i], false)
|
||||
end
|
||||
if not backpack.Visible then centerGear(currentLoadout:GetChildren()) end
|
||||
|
||||
-- make sure that inventory is listening to gear reparenting
|
||||
if characterChildAddedCon == nil and game.Players.LocalPlayer["Character"] then
|
||||
setupCharacterConnections()
|
||||
end
|
||||
if not backpackAddCon then
|
||||
backpackAddCon = game.Players.LocalPlayer.Backpack.ChildAdded:connect(function(child) addToGrid(child) end)
|
||||
end
|
||||
|
||||
backpackOpenEvent.Event:connect(backpackOpenHandler)
|
||||
backpackCloseEvent.Event:connect(backpackCloseHandler)
|
||||
tabClickedEvent.Event:connect(tabClickHandler)
|
||||
searchRequestedEvent.Event:connect(showSearchGear)
|
||||
|
||||
recalculateScrollLoadout()
|
||||
+416
@@ -0,0 +1,416 @@
|
||||
-- This script manages context switches in the backpack (Gear to Wardrobe, etc.) and player state changes. Also manages global functions across different tabs (currently only search)
|
||||
--if game.CoreGui.Version < 7 then return end -- peace out if we aren't using the right client
|
||||
|
||||
-- basic functions
|
||||
local function waitForChild(instance, name)
|
||||
while not instance:FindFirstChild(name) do
|
||||
print('(BPManager): Waiting for ...', instance, name)
|
||||
instance.ChildAdded:wait()
|
||||
end
|
||||
return instance:FindFirstChild(name)
|
||||
end
|
||||
local function waitForProperty(instance, property)
|
||||
while not instance[property] do
|
||||
instance.Changed:wait()
|
||||
end
|
||||
end
|
||||
|
||||
-- don't do anything if we are in an empty game
|
||||
waitForChild(game,"Players")
|
||||
if #game.Players:GetChildren() < 1 then
|
||||
game.Players.ChildAdded:wait()
|
||||
end
|
||||
-- make sure everything is loaded in before we do anything
|
||||
-- get our local player
|
||||
waitForProperty(game.Players,"LocalPlayer")
|
||||
local player = game.Players.LocalPlayer
|
||||
|
||||
|
||||
|
||||
------------------------ Locals ------------------------------
|
||||
local backpack = script.Parent
|
||||
waitForChild(backpack,"Gear")
|
||||
|
||||
local screen = script.Parent.Parent
|
||||
assert(screen:IsA("ScreenGui"))
|
||||
|
||||
waitForChild(backpack, "Tabs")
|
||||
waitForChild(backpack.Tabs, "CloseButton")
|
||||
local closeButton = backpack.Tabs.CloseButton
|
||||
|
||||
waitForChild(backpack.Tabs, "InventoryButton")
|
||||
local inventoryButton = backpack.Tabs.InventoryButton
|
||||
if True then
|
||||
waitForChild(backpack.Tabs, "WardrobeButton")
|
||||
local wardrobeButton = backpack.Tabs.WardrobeButton
|
||||
end
|
||||
waitForChild(backpack.Parent,"ControlFrame")
|
||||
local backpackButton = waitForChild(backpack.Parent.ControlFrame,"BackpackButton")
|
||||
local currentTab = "gear"
|
||||
|
||||
local searchFrame = waitForChild(backpack,"SearchFrame")
|
||||
waitForChild(backpack.SearchFrame,"SearchBoxFrame")
|
||||
local searchBox = waitForChild(backpack.SearchFrame.SearchBoxFrame,"SearchBox")
|
||||
local searchButton = waitForChild(backpack.SearchFrame,"SearchButton")
|
||||
local resetButton = waitForChild(backpack.SearchFrame,"ResetButton")
|
||||
|
||||
local robloxGui = waitForChild(Game.CoreGui, 'RobloxGui')
|
||||
local currentLoadout = waitForChild(robloxGui, 'CurrentLoadout')
|
||||
local loadoutBackground = waitForChild(currentLoadout, 'Background')
|
||||
|
||||
local canToggle = true
|
||||
local readyForNextEvent = true
|
||||
local backpackIsOpen = false
|
||||
local active = true
|
||||
|
||||
local humanoidDiedCon = nil
|
||||
|
||||
local backpackButtonPos
|
||||
|
||||
local guiTweenSpeed = 0.25 -- how quickly we open/close the backpack
|
||||
|
||||
local searchDefaultText = "Search..."
|
||||
local tilde = "~"
|
||||
local backquote = "`"
|
||||
|
||||
local backpackSize = UDim2.new(0, 600, 0, 400)
|
||||
|
||||
if robloxGui.AbsoluteSize.Y <= 320 then
|
||||
backpackSize = UDim2.new(0, 200, 0, 140)
|
||||
end
|
||||
|
||||
------------------------ End Locals ---------------------------
|
||||
|
||||
|
||||
---------------------------------------- Public Event Setup ----------------------------------------
|
||||
|
||||
function createPublicEvent(eventName)
|
||||
assert(eventName, "eventName is nil")
|
||||
assert(tostring(eventName),"eventName is not a string")
|
||||
|
||||
local newEvent = Instance.new("BindableEvent")
|
||||
newEvent.Name = tostring(eventName)
|
||||
newEvent.Parent = script
|
||||
|
||||
return newEvent
|
||||
end
|
||||
|
||||
function createPublicFunction(funcName, invokeFunc)
|
||||
assert(funcName, "funcName is nil")
|
||||
assert(tostring(funcName), "funcName is not a string")
|
||||
assert(invokeFunc, "invokeFunc is nil")
|
||||
assert(type(invokeFunc) == "function", "invokeFunc should be of type 'function'")
|
||||
|
||||
local newFunction = Instance.new("BindableFunction")
|
||||
newFunction.Name = tostring(funcName)
|
||||
newFunction.OnInvoke = invokeFunc
|
||||
newFunction.Parent = script
|
||||
|
||||
return newFunction
|
||||
end
|
||||
|
||||
-- Events
|
||||
local resizeEvent = createPublicEvent("ResizeEvent")
|
||||
local backpackOpenEvent = createPublicEvent("BackpackOpenEvent")
|
||||
local backpackCloseEvent = createPublicEvent("BackpackCloseEvent")
|
||||
local tabClickedEvent = createPublicEvent("TabClickedEvent")
|
||||
local searchRequestedEvent = createPublicEvent("SearchRequestedEvent")
|
||||
---------------------------------------- End Public Event Setup ----------------------------------------
|
||||
|
||||
|
||||
|
||||
--------------------------- Internal Functions ----------------------------------------
|
||||
|
||||
function deactivateBackpack()
|
||||
backpack.Visible = false
|
||||
active = false
|
||||
end
|
||||
|
||||
function activateBackpack()
|
||||
initHumanoidDiedConnections()
|
||||
active = true
|
||||
backpack.Visible = backpackIsOpen
|
||||
if backpackIsOpen then
|
||||
toggleBackpack()
|
||||
end
|
||||
end
|
||||
|
||||
function initHumanoidDiedConnections()
|
||||
if humanoidDiedCon then
|
||||
humanoidDiedCon:disconnect()
|
||||
end
|
||||
waitForProperty(game.Players.LocalPlayer,"Character")
|
||||
waitForChild(game.Players.LocalPlayer.Character,"Humanoid")
|
||||
humanoidDiedCon = game.Players.LocalPlayer.Character.Humanoid.Died:connect(deactivateBackpack)
|
||||
end
|
||||
|
||||
local hideBackpack = function()
|
||||
backpackIsOpen = false
|
||||
readyForNextEvent = false
|
||||
backpackButton.Selected = false
|
||||
resetSearch()
|
||||
backpackCloseEvent:Fire(currentTab)
|
||||
backpack.Tabs.Visible = false
|
||||
searchFrame.Visible = false
|
||||
backpack:TweenSizeAndPosition(UDim2.new(0, backpackSize.X.Offset,0, 0), UDim2.new(0.5, -backpackSize.X.Offset/2, 1, -85), Enum.EasingDirection.Out, Enum.EasingStyle.Quad, guiTweenSpeed, true,
|
||||
function()
|
||||
game.GuiService:RemoveCenterDialog(backpack)
|
||||
backpack.Visible = false
|
||||
backpackButton.Selected = false
|
||||
end)
|
||||
delay(guiTweenSpeed,function()
|
||||
game.GuiService:RemoveCenterDialog(backpack)
|
||||
backpack.Visible = false
|
||||
backpackButton.Selected = false
|
||||
readyForNextEvent = true
|
||||
canToggle = true
|
||||
end)
|
||||
end
|
||||
|
||||
function showBackpack()
|
||||
game.GuiService:AddCenterDialog(backpack, Enum.CenterDialogType.PlayerInitiatedDialog,
|
||||
function()
|
||||
backpack.Visible = true
|
||||
backpackButton.Selected = true
|
||||
end,
|
||||
function()
|
||||
backpack.Visible = false
|
||||
backpackButton.Selected = false
|
||||
end)
|
||||
backpack.Visible = true
|
||||
backpackButton.Selected = true
|
||||
backpack:TweenSizeAndPosition(backpackSize, UDim2.new(0.5, -backpackSize.X.Offset/2, 1, -backpackSize.Y.Offset - 88), Enum.EasingDirection.Out, Enum.EasingStyle.Quad, guiTweenSpeed, true)
|
||||
delay(guiTweenSpeed,function()
|
||||
backpack.Tabs.Visible = false
|
||||
searchFrame.Visible = true
|
||||
backpackOpenEvent:Fire(currentTab)
|
||||
canToggle = true
|
||||
readyForNextEvent = true
|
||||
backpackButton.Image = 'http://www.watrbx.wtf/asset/?id=21'
|
||||
backpackButton.Position = UDim2.new(0.5, -60, 1, -backpackSize.Y.Offset - 103)
|
||||
end)
|
||||
end
|
||||
|
||||
function toggleBackpack()
|
||||
if not game.Players.LocalPlayer then return end
|
||||
if not game.Players.LocalPlayer["Character"] then return end
|
||||
if not canToggle then return end
|
||||
if not readyForNextEvent then return end
|
||||
readyForNextEvent = false
|
||||
canToggle = false
|
||||
|
||||
backpackIsOpen = not backpackIsOpen
|
||||
|
||||
if backpackIsOpen then
|
||||
loadoutBackground.Image = 'http://www.watrbx.wtf/asset/?id=22'
|
||||
loadoutBackground.Position = UDim2.new(-0.03, 0, -0.17, 0)
|
||||
loadoutBackground.Size = UDim2.new(1.05, 0, 1.25, 0)
|
||||
loadoutBackground.ZIndex = 2.0
|
||||
loadoutBackground.Visible = true
|
||||
--backpackButton.Position = UDim2.new(0.5, -60, 1, -503)
|
||||
showBackpack()
|
||||
else
|
||||
backpackButton.Position = UDim2.new(0.5, -60, 1, -44)
|
||||
loadoutBackground.Visible = false
|
||||
backpackButton.Selected = false
|
||||
backpackButton.Image = "http://www.watrbx.wtf/asset/?id=21"
|
||||
loadoutBackground.Image = 'http://www.watrbx.wtf.com/asset/?id=23'
|
||||
loadoutBackground.Position = UDim2.new(-0.1, 0, -0.1, 0)
|
||||
loadoutBackground.Size = UDim2.new(1.2, 0, 1.2, 0)
|
||||
hideBackpack()
|
||||
|
||||
|
||||
local clChildren = currentLoadout:GetChildren()
|
||||
for i = 1, #clChildren do
|
||||
if clChildren[i] and clChildren[i]:IsA('Frame') then
|
||||
local frame = clChildren[i]
|
||||
if #frame:GetChildren() > 0 then
|
||||
backpackButton.Position = UDim2.new(0.5, -60, 1, -108)
|
||||
backpackButton.Visible = true
|
||||
loadoutBackground.Visible = true
|
||||
if frame:GetChildren()[1]:IsA('ImageButton') then
|
||||
local imgButton = frame:GetChildren()[1]
|
||||
imgButton.Active = true
|
||||
imgButton.Draggable = false
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
|
||||
function closeBackpack()
|
||||
if backpackIsOpen then
|
||||
toggleBackpack()
|
||||
end
|
||||
end
|
||||
|
||||
function setSelected(tab)
|
||||
assert(tab)
|
||||
assert(tab:IsA("TextButton"))
|
||||
|
||||
tab.BackgroundColor3 = Color3.new(1,1,1)
|
||||
tab.TextColor3 = Color3.new(0,0,0)
|
||||
tab.Selected = true
|
||||
tab.ZIndex = 3
|
||||
end
|
||||
|
||||
function setUnselected(tab)
|
||||
assert(tab)
|
||||
assert(tab:IsA("TextButton"))
|
||||
|
||||
tab.BackgroundColor3 = Color3.new(0,0,0)
|
||||
tab.TextColor3 = Color3.new(1,1,1)
|
||||
tab.Selected = false
|
||||
tab.ZIndex = 1
|
||||
end
|
||||
|
||||
function updateTabGui(selectedTab)
|
||||
assert(selectedTab)
|
||||
|
||||
if selectedTab == "gear" then
|
||||
setSelected(inventoryButton)
|
||||
setUnselected(wardrobeButton)
|
||||
elseif selectedTab == "wardrobe" then
|
||||
setSelected(wardrobeButton)
|
||||
setUnselected(inventoryButton)
|
||||
end
|
||||
end
|
||||
|
||||
function mouseLeaveTab(button)
|
||||
assert(button)
|
||||
assert(button:IsA("TextButton"))
|
||||
|
||||
if button.Selected then return end
|
||||
|
||||
button.BackgroundColor3 = Color3.new(0,0,0)
|
||||
end
|
||||
|
||||
function mouseOverTab(button)
|
||||
assert(button)
|
||||
assert(button:IsA("TextButton"))
|
||||
|
||||
if button.Selected then return end
|
||||
|
||||
button.BackgroundColor3 = Color3.new(39/255,39/255,39/255)
|
||||
end
|
||||
|
||||
function newTabClicked(tabName)
|
||||
assert(tabName)
|
||||
tabName = string.lower(tabName)
|
||||
currentTab = tabName
|
||||
|
||||
updateTabGui(tabName)
|
||||
tabClickedEvent:Fire(tabName)
|
||||
resetSearch()
|
||||
end
|
||||
|
||||
function trim(s)
|
||||
return (s:gsub("^%s*(.-)%s*$", "%1"))
|
||||
end
|
||||
|
||||
function splitByWhitespace(text)
|
||||
if type(text) ~= "string" then return nil end
|
||||
|
||||
local terms = {}
|
||||
for token in string.gmatch(text, "[^%s]+") do
|
||||
if string.len(token) > 0 then
|
||||
table.insert(terms,token)
|
||||
end
|
||||
end
|
||||
return terms
|
||||
end
|
||||
|
||||
function resetSearchBoxGui()
|
||||
resetButton.Visible = false
|
||||
searchBox.Text = searchDefaultText
|
||||
end
|
||||
|
||||
function doSearch()
|
||||
local searchText = searchBox.Text
|
||||
if searchText == "" then
|
||||
resetSearch()
|
||||
return
|
||||
end
|
||||
searchText = trim(searchText)
|
||||
resetButton.Visible = true
|
||||
termTable = splitByWhitespace(searchText)
|
||||
searchRequestedEvent:Fire(searchText) -- todo: replace this with termtable when table passing is possible
|
||||
end
|
||||
|
||||
function resetSearch()
|
||||
resetSearchBoxGui()
|
||||
searchRequestedEvent:Fire()
|
||||
end
|
||||
|
||||
local backpackReady = function()
|
||||
readyForNextEvent = true
|
||||
end
|
||||
|
||||
--------------------------- End Internal Functions -------------------------------------
|
||||
|
||||
|
||||
------------------------------ Public Functions Setup -------------------------------------
|
||||
createPublicFunction("CloseBackpack", hideBackpack)
|
||||
createPublicFunction("BackpackReady", backpackReady)
|
||||
------------------------------ End Public Functions Setup ---------------------------------
|
||||
|
||||
|
||||
------------------------ Connections/Script Main -------------------------------------------
|
||||
|
||||
inventoryButton.MouseButton1Click:connect(function() newTabClicked("gear") end)
|
||||
inventoryButton.MouseEnter:connect(function() mouseOverTab(inventoryButton) end)
|
||||
inventoryButton.MouseLeave:connect(function() mouseLeaveTab(inventoryButton) end)
|
||||
|
||||
if True then
|
||||
wardrobeButton.MouseButton1Click:connect(function() newTabClicked("wardrobe") end)
|
||||
wardrobeButton.MouseEnter:connect(function() mouseOverTab(wardrobeButton) end)
|
||||
wardrobeButton.MouseLeave:connect(function() mouseLeaveTab(wardrobeButton) end)
|
||||
end
|
||||
|
||||
closeButton.MouseButton1Click:connect(closeBackpack)
|
||||
|
||||
screen.Changed:connect(function(prop)
|
||||
if prop == "AbsoluteSize" then
|
||||
resizeEvent:Fire(screen.AbsoluteSize)
|
||||
end
|
||||
end)
|
||||
|
||||
-- GuiService key setup
|
||||
game:GetService("GuiService"):AddKey(tilde)
|
||||
game:GetService("GuiService"):AddKey(backquote)
|
||||
game:GetService("GuiService").KeyPressed:connect(function(key)
|
||||
if not active then return end
|
||||
if key == tilde or key == backquote then
|
||||
toggleBackpack()
|
||||
end
|
||||
end)
|
||||
backpackButton.MouseButton1Click:connect(function()
|
||||
if not active then return end
|
||||
toggleBackpack()
|
||||
end)
|
||||
|
||||
if game.Players.LocalPlayer["Character"] then
|
||||
activateBackpack()
|
||||
end
|
||||
|
||||
game.Players.LocalPlayer.CharacterAdded:connect(activateBackpack)
|
||||
|
||||
-- search functions
|
||||
searchBox.FocusLost:connect(function(enterPressed)
|
||||
if enterPressed or searchBox.Text ~= "" then
|
||||
doSearch()
|
||||
elseif searchBox.Text == "" then
|
||||
resetSearch()
|
||||
end
|
||||
end)
|
||||
searchButton.MouseButton1Click:connect(doSearch)
|
||||
resetButton.MouseButton1Click:connect(resetSearch)
|
||||
|
||||
if searchFrame and robloxGui.AbsoluteSize.Y <= 320 then
|
||||
searchFrame.RobloxLocked = false
|
||||
searchFrame:Destroy()
|
||||
end
|
||||
|
||||
--backpackButton.Visible = true
|
||||
+1021
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1 @@
|
||||
print("Loading Game")
|
||||
@@ -0,0 +1,560 @@
|
||||
function waitForProperty(instance, name)
|
||||
while not instance[name] do
|
||||
instance.Changed:wait()
|
||||
end
|
||||
end
|
||||
|
||||
function waitForChild(instance, name)
|
||||
while not instance:FindFirstChild(name) do
|
||||
instance.ChildAdded:wait()
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
local mainFrame
|
||||
local choices = {}
|
||||
local lastChoice
|
||||
local choiceMap = {}
|
||||
local currentConversationDialog
|
||||
local currentConversationPartner
|
||||
local currentAbortDialogScript
|
||||
|
||||
local tooFarAwayMessage = "You are too far away to chat!"
|
||||
local tooFarAwaySize = 300
|
||||
local characterWanderedOffMessage = "Chat ended because you walked away"
|
||||
local characterWanderedOffSize = 350
|
||||
local conversationTimedOut = "Chat ended because you didn't reply"
|
||||
local conversationTimedOutSize = 350
|
||||
|
||||
local player
|
||||
local screenGui
|
||||
local chatNotificationGui
|
||||
local messageDialog
|
||||
local timeoutScript
|
||||
local reenableDialogScript
|
||||
local dialogMap = {}
|
||||
local dialogConnections = {}
|
||||
|
||||
local gui = nil
|
||||
waitForChild(game,"CoreGui")
|
||||
waitForChild(game.CoreGui,"RobloxGui")
|
||||
if game.CoreGui.RobloxGui:FindFirstChild("ControlFrame") then
|
||||
gui = game.CoreGui.RobloxGui.ControlFrame
|
||||
else
|
||||
gui = game.CoreGui.RobloxGui
|
||||
end
|
||||
|
||||
function currentTone()
|
||||
if currentConversationDialog then
|
||||
return currentConversationDialog.Tone
|
||||
else
|
||||
return Enum.DialogTone.Neutral
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
function createChatNotificationGui()
|
||||
chatNotificationGui = Instance.new("BillboardGui")
|
||||
chatNotificationGui.Name = "ChatNotificationGui"
|
||||
chatNotificationGui.ExtentsOffset = Vector3.new(0,1,0)
|
||||
chatNotificationGui.Size = UDim2.new(4, 0, 5.42857122, 0)
|
||||
chatNotificationGui.SizeOffset = Vector2.new(0,0)
|
||||
chatNotificationGui.StudsOffset = Vector3.new(0.4, 4.3, 0)
|
||||
chatNotificationGui.Enabled = true
|
||||
chatNotificationGui.RobloxLocked = true
|
||||
chatNotificationGui.Active = true
|
||||
|
||||
local image = Instance.new("ImageLabel")
|
||||
image.Name = "Image"
|
||||
image.Active = false
|
||||
image.BackgroundTransparency = 1
|
||||
image.Position = UDim2.new(0,0,0,0)
|
||||
image.Size = UDim2.new(1.0,0,1.0,0)
|
||||
image.Image = ""
|
||||
image.RobloxLocked = true
|
||||
image.Parent = chatNotificationGui
|
||||
|
||||
|
||||
local button = Instance.new("ImageButton")
|
||||
button.Name = "Button"
|
||||
button.AutoButtonColor = false
|
||||
button.Position = UDim2.new(0.0879999995, 0, 0.0529999994, 0)
|
||||
button.Size = UDim2.new(0.829999983, 0, 0.460000008, 0)
|
||||
button.Image = ""
|
||||
button.BackgroundTransparency = 1
|
||||
button.RobloxLocked = true
|
||||
button.Parent = image
|
||||
end
|
||||
|
||||
function getChatColor(tone)
|
||||
if tone == Enum.DialogTone.Neutral then
|
||||
return Enum.ChatColor.Blue
|
||||
elseif tone == Enum.DialogTone.Friendly then
|
||||
return Enum.ChatColor.Green
|
||||
elseif tone == Enum.DialogTone.Enemy then
|
||||
return Enum.ChatColor.Red
|
||||
end
|
||||
end
|
||||
|
||||
function styleChoices(tone)
|
||||
for i, obj in pairs(choices) do
|
||||
resetColor(obj, tone)
|
||||
end
|
||||
resetColor(lastChoice, tone)
|
||||
end
|
||||
|
||||
function styleMainFrame(tone)
|
||||
if tone == Enum.DialogTone.Neutral then
|
||||
mainFrame.Style = Enum.FrameStyle.ChatBlue
|
||||
mainFrame.Tail.Image = "rbxasset://textures/chatBubble_botBlue_tailRight.png"
|
||||
elseif tone == Enum.DialogTone.Friendly then
|
||||
mainFrame.Style = Enum.FrameStyle.ChatGreen
|
||||
mainFrame.Tail.Image = "rbxasset://textures/chatBubble_botGreen_tailRight.png"
|
||||
elseif tone == Enum.DialogTone.Enemy then
|
||||
mainFrame.Style = Enum.FrameStyle.ChatRed
|
||||
mainFrame.Tail.Image = "rbxasset://textures/chatBubble_botRed_tailRight.png"
|
||||
end
|
||||
|
||||
styleChoices(tone)
|
||||
end
|
||||
function setChatNotificationTone(gui, purpose, tone)
|
||||
if tone == Enum.DialogTone.Neutral then
|
||||
gui.Image.Image = "rbxasset://textures/chatBubble_botBlue_notify_bkg.png"
|
||||
elseif tone == Enum.DialogTone.Friendly then
|
||||
gui.Image.Image = "rbxasset://textures/chatBubble_botGreen_notify_bkg.png"
|
||||
elseif tone == Enum.DialogTone.Enemy then
|
||||
gui.Image.Image = "rbxasset://textures/chatBubble_botRed_notify_bkg.png"
|
||||
end
|
||||
if purpose == Enum.DialogPurpose.Quest then
|
||||
gui.Image.Button.Image = "rbxasset://textures/chatBubble_bot_notify_bang.png"
|
||||
elseif purpose == Enum.DialogPurpose.Help then
|
||||
gui.Image.Button.Image = "rbxasset://textures/chatBubble_bot_notify_question.png"
|
||||
elseif purpose == Enum.DialogPurpose.Shop then
|
||||
gui.Image.Button.Image = "rbxasset://textures/chatBubble_bot_notify_money.png"
|
||||
end
|
||||
end
|
||||
|
||||
function createMessageDialog()
|
||||
messageDialog = Instance.new("Frame");
|
||||
messageDialog.Name = "DialogScriptMessage"
|
||||
messageDialog.Style = Enum.FrameStyle.RobloxRound
|
||||
messageDialog.Visible = false
|
||||
|
||||
local text = Instance.new("TextLabel")
|
||||
text.Name = "Text"
|
||||
text.Position = UDim2.new(0,0,0,-1)
|
||||
text.Size = UDim2.new(1,0,1,0)
|
||||
text.FontSize = Enum.FontSize.Size14
|
||||
text.BackgroundTransparency = 1
|
||||
text.TextColor3 = Color3.new(1,1,1)
|
||||
text.RobloxLocked = true
|
||||
text.Parent = messageDialog
|
||||
end
|
||||
|
||||
function showMessage(msg, size)
|
||||
messageDialog.Text.Text = msg
|
||||
messageDialog.Size = UDim2.new(0,size,0,40)
|
||||
messageDialog.Position = UDim2.new(0.5, -size/2, 0.5, -40)
|
||||
messageDialog.Visible = true
|
||||
wait(2)
|
||||
messageDialog.Visible = false
|
||||
end
|
||||
|
||||
function variableDelay(str)
|
||||
local length = math.min(string.len(str), 100)
|
||||
wait(0.75 + ((length/75) * 1.5))
|
||||
end
|
||||
|
||||
function resetColor(frame, tone)
|
||||
if tone == Enum.DialogTone.Neutral then
|
||||
frame.BackgroundColor3 = Color3.new(0/255, 0/255, 179/255)
|
||||
frame.Number.TextColor3 = Color3.new(45/255, 142/255, 245/255)
|
||||
elseif tone == Enum.DialogTone.Friendly then
|
||||
frame.BackgroundColor3 = Color3.new(0/255, 77/255, 0/255)
|
||||
frame.Number.TextColor3 = Color3.new(0/255, 190/255, 0/255)
|
||||
elseif tone == Enum.DialogTone.Enemy then
|
||||
frame.BackgroundColor3 = Color3.new(140/255, 0/255, 0/255)
|
||||
frame.Number.TextColor3 = Color3.new(255/255,88/255, 79/255)
|
||||
end
|
||||
end
|
||||
|
||||
function highlightColor(frame, tone)
|
||||
if tone == Enum.DialogTone.Neutral then
|
||||
frame.BackgroundColor3 = Color3.new(2/255, 108/255, 255/255)
|
||||
frame.Number.TextColor3 = Color3.new(1, 1, 1)
|
||||
elseif tone == Enum.DialogTone.Friendly then
|
||||
frame.BackgroundColor3 = Color3.new(0/255, 128/255, 0/255)
|
||||
frame.Number.TextColor3 = Color3.new(1, 1, 1)
|
||||
elseif tone == Enum.DialogTone.Enemy then
|
||||
frame.BackgroundColor3 = Color3.new(204/255, 0/255, 0/255)
|
||||
frame.Number.TextColor3 = Color3.new(1, 1, 1)
|
||||
end
|
||||
end
|
||||
|
||||
function wanderDialog()
|
||||
print("Wander")
|
||||
mainFrame.Visible = false
|
||||
endDialog()
|
||||
showMessage(characterWanderedOffMessage, characterWanderedOffSize)
|
||||
end
|
||||
|
||||
function timeoutDialog()
|
||||
print("Timeout")
|
||||
mainFrame.Visible = false
|
||||
endDialog()
|
||||
showMessage(conversationTimedOut, conversationTimedOutSize)
|
||||
end
|
||||
function normalEndDialog()
|
||||
print("Done")
|
||||
endDialog()
|
||||
end
|
||||
|
||||
function endDialog()
|
||||
if currentAbortDialogScript then
|
||||
currentAbortDialogScript:Remove()
|
||||
currentAbortDialogScript = nil
|
||||
end
|
||||
|
||||
local dialog = currentConversationDialog
|
||||
currentConversationDialog = nil
|
||||
if dialog and dialog.InUse then
|
||||
local reenableScript = reenableDialogScript:Clone()
|
||||
reenableScript.archivable = false
|
||||
reenableScript.Disabled = false
|
||||
reenableScript.Parent = dialog
|
||||
end
|
||||
|
||||
for dialog, gui in pairs(dialogMap) do
|
||||
if dialog and gui then
|
||||
gui.Enabled = not dialog.InUse
|
||||
end
|
||||
end
|
||||
|
||||
currentConversationPartner = nil
|
||||
end
|
||||
|
||||
function sanitizeMessage(msg)
|
||||
if string.len(msg) == 0 then
|
||||
return "..."
|
||||
else
|
||||
return msg
|
||||
end
|
||||
end
|
||||
|
||||
function selectChoice(choice)
|
||||
renewKillswitch(currentConversationDialog)
|
||||
|
||||
--First hide the Gui
|
||||
mainFrame.Visible = false
|
||||
if choice == lastChoice then
|
||||
game.Chat:Chat(game.Players.LocalPlayer.Character, "Goodbye!", getChatColor(currentTone()))
|
||||
|
||||
normalEndDialog()
|
||||
else
|
||||
local dialogChoice = choiceMap[choice]
|
||||
|
||||
game.Chat:Chat(game.Players.LocalPlayer.Character, sanitizeMessage(dialogChoice.UserDialog), getChatColor(currentTone()))
|
||||
wait(1)
|
||||
currentConversationDialog:SignalDialogChoiceSelected(player, dialogChoice)
|
||||
game.Chat:Chat(currentConversationPartner, sanitizeMessage(dialogChoice.ResponseDialog), getChatColor(currentTone()))
|
||||
|
||||
variableDelay(dialogChoice.ResponseDialog)
|
||||
presentDialogChoices(currentConversationPartner, dialogChoice:GetChildren())
|
||||
end
|
||||
end
|
||||
|
||||
function newChoice(numberText)
|
||||
local frame = Instance.new("TextButton")
|
||||
frame.BackgroundColor3 = Color3.new(0/255, 0/255, 179/255)
|
||||
frame.AutoButtonColor = false
|
||||
frame.BorderSizePixel = 0
|
||||
frame.Text = ""
|
||||
frame.MouseEnter:connect(function() highlightColor(frame, currentTone()) end)
|
||||
frame.MouseLeave:connect(function() resetColor(frame, currentTone()) end)
|
||||
frame.MouseButton1Click:connect(function() selectChoice(frame) end)
|
||||
frame.RobloxLocked = true
|
||||
|
||||
local number = Instance.new("TextLabel")
|
||||
number.Name = "Number"
|
||||
number.TextColor3 = Color3.new(127/255, 212/255, 255/255)
|
||||
number.Text = numberText
|
||||
number.FontSize = Enum.FontSize.Size14
|
||||
number.BackgroundTransparency = 1
|
||||
number.Position = UDim2.new(0,4,0,2)
|
||||
number.Size = UDim2.new(0,20,0,24)
|
||||
number.TextXAlignment = Enum.TextXAlignment.Left
|
||||
number.TextYAlignment = Enum.TextYAlignment.Top
|
||||
number.RobloxLocked = true
|
||||
number.Parent = frame
|
||||
|
||||
local prompt = Instance.new("TextLabel")
|
||||
prompt.Name = "UserPrompt"
|
||||
prompt.BackgroundTransparency = 1
|
||||
prompt.TextColor3 = Color3.new(1,1,1)
|
||||
prompt.FontSize = Enum.FontSize.Size14
|
||||
prompt.Position = UDim2.new(0,28, 0, 2)
|
||||
prompt.Size = UDim2.new(1,-32, 1, -4)
|
||||
prompt.TextXAlignment = Enum.TextXAlignment.Left
|
||||
prompt.TextYAlignment = Enum.TextYAlignment.Top
|
||||
prompt.TextWrap = true
|
||||
prompt.RobloxLocked = true
|
||||
prompt.Parent = frame
|
||||
|
||||
return frame
|
||||
end
|
||||
function initialize(parent)
|
||||
choices[1] = newChoice("1)")
|
||||
choices[2] = newChoice("2)")
|
||||
choices[3] = newChoice("3)")
|
||||
choices[4] = newChoice("4)")
|
||||
|
||||
lastChoice = newChoice("5)")
|
||||
lastChoice.UserPrompt.Text = "Goodbye!"
|
||||
lastChoice.Size = UDim2.new(1,0,0,28)
|
||||
|
||||
mainFrame = Instance.new("Frame")
|
||||
mainFrame.Name = "UserDialogArea"
|
||||
mainFrame.Size = UDim2.new(0, 350, 0, 200)
|
||||
mainFrame.Style = Enum.FrameStyle.ChatBlue
|
||||
mainFrame.Visible = false
|
||||
|
||||
imageLabel = Instance.new("ImageLabel")
|
||||
imageLabel.Name = "Tail"
|
||||
imageLabel.Size = UDim2.new(0,62,0,53)
|
||||
imageLabel.Position = UDim2.new(1,8,0.25)
|
||||
imageLabel.Image = "rbxasset://textures/chatBubble_botBlue_tailRight.png"
|
||||
imageLabel.BackgroundTransparency = 1
|
||||
imageLabel.RobloxLocked = true
|
||||
imageLabel.Parent = mainFrame
|
||||
|
||||
for n, obj in pairs(choices) do
|
||||
obj.RobloxLocked = true
|
||||
obj.Parent = mainFrame
|
||||
end
|
||||
lastChoice.RobloxLocked = true
|
||||
lastChoice.Parent = mainFrame
|
||||
|
||||
mainFrame.RobloxLocked = true
|
||||
mainFrame.Parent = parent
|
||||
end
|
||||
|
||||
function presentDialogChoices(talkingPart, dialogChoices)
|
||||
if not currentConversationDialog then
|
||||
return
|
||||
end
|
||||
|
||||
currentConversationPartner = talkingPart
|
||||
sortedDialogChoices = {}
|
||||
for n, obj in pairs(dialogChoices) do
|
||||
if obj:IsA("DialogChoice") then
|
||||
table.insert(sortedDialogChoices, obj)
|
||||
end
|
||||
end
|
||||
table.sort(sortedDialogChoices, function(a,b) return a.Name < b.Name end)
|
||||
|
||||
if #sortedDialogChoices == 0 then
|
||||
normalEndDialog()
|
||||
return
|
||||
end
|
||||
|
||||
local pos = 1
|
||||
local yPosition = 0
|
||||
choiceMap = {}
|
||||
for n, obj in pairs(choices) do
|
||||
obj.Visible = false
|
||||
end
|
||||
|
||||
for n, obj in pairs(sortedDialogChoices) do
|
||||
if pos <= #choices then
|
||||
--3 lines is the maximum, set it to that temporarily
|
||||
choices[pos].Size = UDim2.new(1, 0, 0, 24*3)
|
||||
choices[pos].UserPrompt.Text = obj.UserDialog
|
||||
local height = math.ceil(choices[pos].UserPrompt.TextBounds.Y/24)*24
|
||||
|
||||
choices[pos].Position = UDim2.new(0, 0, 0, yPosition)
|
||||
choices[pos].Size = UDim2.new(1, 0, 0, height)
|
||||
choices[pos].Visible = true
|
||||
|
||||
choiceMap[choices[pos]] = obj
|
||||
|
||||
yPosition = yPosition + height
|
||||
pos = pos + 1
|
||||
end
|
||||
end
|
||||
|
||||
lastChoice.Position = UDim2.new(0,0,0,yPosition)
|
||||
lastChoice.Number.Text = pos .. ")"
|
||||
|
||||
mainFrame.Size = UDim2.new(0, 350, 0, yPosition+24+32)
|
||||
mainFrame.Position = UDim2.new(0,20,0.0, -mainFrame.Size.Y.Offset-20)
|
||||
styleMainFrame(currentTone())
|
||||
mainFrame.Visible = true
|
||||
end
|
||||
|
||||
function doDialog(dialog)
|
||||
while not Instance.Lock(dialog, player) do
|
||||
wait()
|
||||
end
|
||||
|
||||
if dialog.InUse then
|
||||
Instance.Unlock(dialog)
|
||||
return
|
||||
else
|
||||
dialog.InUse = true
|
||||
Instance.Unlock(dialog)
|
||||
end
|
||||
|
||||
currentConversationDialog = dialog
|
||||
game.Chat:Chat(dialog.Parent, dialog.InitialPrompt, getChatColor(dialog.Tone))
|
||||
variableDelay(dialog.InitialPrompt)
|
||||
|
||||
presentDialogChoices(dialog.Parent, dialog:GetChildren())
|
||||
end
|
||||
|
||||
function renewKillswitch(dialog)
|
||||
if currentAbortDialogScript then
|
||||
currentAbortDialogScript:Remove()
|
||||
currentAbortDialogScript = nil
|
||||
end
|
||||
|
||||
currentAbortDialogScript = timeoutScript:Clone()
|
||||
currentAbortDialogScript.archivable = false
|
||||
currentAbortDialogScript.Disabled = false
|
||||
currentAbortDialogScript.Parent = dialog
|
||||
end
|
||||
|
||||
function checkForLeaveArea()
|
||||
while currentConversationDialog do
|
||||
if currentConversationDialog.Parent and (player:DistanceFromCharacter(currentConversationDialog.Parent.Position) >= currentConversationDialog.ConversationDistance) then
|
||||
wanderDialog()
|
||||
end
|
||||
wait(1)
|
||||
end
|
||||
end
|
||||
|
||||
function startDialog(dialog)
|
||||
if dialog.Parent and dialog.Parent:IsA("BasePart") then
|
||||
if player:DistanceFromCharacter(dialog.Parent.Position) >= dialog.ConversationDistance then
|
||||
showMessage(tooFarAwayMessage, tooFarAwaySize)
|
||||
return
|
||||
end
|
||||
|
||||
for dialog, gui in pairs(dialogMap) do
|
||||
if dialog and gui then
|
||||
gui.Enabled = false
|
||||
end
|
||||
end
|
||||
|
||||
renewKillswitch(dialog)
|
||||
|
||||
delay(1, checkForLeaveArea)
|
||||
doDialog(dialog)
|
||||
end
|
||||
end
|
||||
|
||||
function removeDialog(dialog)
|
||||
if dialogMap[dialog] then
|
||||
dialogMap[dialog]:Remove()
|
||||
dialogMap[dialog] = nil
|
||||
end
|
||||
if dialogConnections[dialog] then
|
||||
dialogConnections[dialog]:disconnect()
|
||||
dialogConnections[dialog] = nil
|
||||
end
|
||||
end
|
||||
|
||||
function addDialog(dialog)
|
||||
if dialog.Parent then
|
||||
if dialog.Parent:IsA("BasePart") then
|
||||
local chatGui = chatNotificationGui:clone()
|
||||
chatGui.Enabled = not dialog.InUse
|
||||
chatGui.Adornee = dialog.Parent
|
||||
chatGui.RobloxLocked = true
|
||||
chatGui.Parent = game.CoreGui
|
||||
chatGui.Image.Button.MouseButton1Click:connect(function() startDialog(dialog) end)
|
||||
setChatNotificationTone(chatGui, dialog.Purpose, dialog.Tone)
|
||||
|
||||
dialogMap[dialog] = chatGui
|
||||
|
||||
dialogConnections[dialog] = dialog.Changed:connect(function(prop)
|
||||
if prop == "Parent" and dialog.Parent then
|
||||
--This handles the reparenting case, seperate from removal case
|
||||
removeDialog(dialog)
|
||||
addDialog(dialog)
|
||||
elseif prop == "InUse" then
|
||||
chatGui.Enabled = not currentConversationDialog and not dialog.InUse
|
||||
if dialog == currentConversationDialog then
|
||||
timeoutDialog()
|
||||
end
|
||||
elseif prop == "Tone" or prop == "Purpose" then
|
||||
setChatNotificationTone(chatGui, dialog.Purpose, dialog.Tone)
|
||||
end
|
||||
end)
|
||||
else -- still need to listen to parent changes even if current parent is not a BasePart
|
||||
dialogConnections[dialog] = dialog.Changed:connect(function(prop)
|
||||
if prop == "Parent" and dialog.Parent then
|
||||
--This handles the reparenting case, seperate from removal case
|
||||
removeDialog(dialog)
|
||||
addDialog(dialog)
|
||||
end
|
||||
end)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function fetchScripts()
|
||||
local model = game:GetService("InsertService"):LoadAsset(39226062)
|
||||
if type(model) == "string" then -- load failed, lets try again
|
||||
wait(0.1)
|
||||
model = game:GetService("InsertService"):LoadAsset(39226062)
|
||||
end
|
||||
if type(model) == "string" then -- not going to work, lets bail
|
||||
return
|
||||
end
|
||||
|
||||
waitForChild(model,"TimeoutScript")
|
||||
timeoutScript = model.TimeoutScript
|
||||
waitForChild(model,"ReenableDialogScript")
|
||||
reenableDialogScript = model.ReenableDialogScript
|
||||
end
|
||||
|
||||
function onLoad()
|
||||
waitForProperty(game.Players, "LocalPlayer")
|
||||
player = game.Players.LocalPlayer
|
||||
waitForProperty(player, "Character")
|
||||
|
||||
--print("Fetching Scripts")
|
||||
fetchScripts()
|
||||
|
||||
--print("Creating Guis")
|
||||
createChatNotificationGui()
|
||||
|
||||
--print("Creating MessageDialog")
|
||||
createMessageDialog()
|
||||
messageDialog.RobloxLocked = true
|
||||
messageDialog.Parent = gui
|
||||
|
||||
--print("Waiting for BottomLeftControl")
|
||||
waitForChild(gui, "BottomLeftControl")
|
||||
|
||||
--print("Initializing Frame")
|
||||
local frame = Instance.new("Frame")
|
||||
frame.Name = "DialogFrame"
|
||||
frame.Position = UDim2.new(0,0,0,0)
|
||||
frame.Size = UDim2.new(0,0,0,0)
|
||||
frame.BackgroundTransparency = 1
|
||||
frame.RobloxLocked = true
|
||||
frame.Parent = gui.BottomLeftControl
|
||||
initialize(frame)
|
||||
|
||||
--print("Adding Dialogs")
|
||||
game.CollectionService.ItemAdded:connect(function(obj) if obj:IsA("Dialog") then addDialog(obj) end end)
|
||||
game.CollectionService.ItemRemoved:connect(function(obj) if obj:IsA("Dialog") then removeDialog(obj) end end)
|
||||
for i, obj in pairs(game.CollectionService:GetCollection("Dialog")) do
|
||||
if obj:IsA("Dialog") then
|
||||
addDialog(obj)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
onLoad()
|
||||
@@ -0,0 +1,36 @@
|
||||
-- Library Registration Script
|
||||
-- This script is used to register RbxLua Modules on game servers, so game scripts have
|
||||
-- access to all of the Modules (otherwise only local scripts do)
|
||||
|
||||
local function waitForChild(instance, name)
|
||||
while not instance:FindFirstChild(name) do
|
||||
instance.ChildAdded:wait()
|
||||
print("Waiting...")
|
||||
end
|
||||
return instance:FindFirstChild(name)
|
||||
end
|
||||
local function waitForProperty(instance, property)
|
||||
while not instance[property] do
|
||||
instance.Changed:wait()
|
||||
print("Waiting...")
|
||||
end
|
||||
end
|
||||
|
||||
local sc = game:GetService("ScriptContext")
|
||||
local RobloxGui = game:GetService("CoreGui"):WaitForChild("RobloxGui")
|
||||
local tries = 0
|
||||
|
||||
while not sc and tries < 3 do
|
||||
tries = tries + 1
|
||||
sc = game:GetService("ScriptContext")
|
||||
wait(0.2)
|
||||
end
|
||||
|
||||
if sc then
|
||||
LoadLibrary("RbxGuiThirteen")
|
||||
LoadLibrary("RbxGearThirteen")
|
||||
LoadLibrary("RbxUtility")
|
||||
LoadLibrary("RbxStamperThirteen")
|
||||
else
|
||||
print("failed to find script context, Modules did not load")
|
||||
end
|
||||
@@ -0,0 +1,214 @@
|
||||
function waitForProperty(instance, property)
|
||||
while not instance[property] do
|
||||
instance.Changed:wait()
|
||||
end
|
||||
end
|
||||
function waitForChild(instance, name)
|
||||
while not instance:FindFirstChild(name) do
|
||||
instance.ChildAdded:wait()
|
||||
end
|
||||
end
|
||||
|
||||
waitForProperty(game.Players,"LocalPlayer")
|
||||
waitForChild(script.Parent,"Popup")
|
||||
waitForChild(script.Parent.Popup,"AcceptButton")
|
||||
script.Parent.Popup.AcceptButton.Modal = true
|
||||
|
||||
local localPlayer = game.Players.LocalPlayer
|
||||
local acceptedTeleport = Instance.new("IntValue")
|
||||
|
||||
local friendRequestBlacklist = {}
|
||||
|
||||
local teleportEnabled = true
|
||||
|
||||
local makePopupInvisible = function()
|
||||
if script.Parent.Popup then script.Parent.Popup.Visible = false end
|
||||
end
|
||||
|
||||
function makeFriend(fromPlayer,toPlayer)
|
||||
|
||||
local popup = script.Parent:FindFirstChild("Popup")
|
||||
if popup == nil then return end -- there is no popup!
|
||||
if popup.Visible then return end -- currently popping something, abort!
|
||||
if friendRequestBlacklist[fromPlayer] then return end -- previously cancelled friend request, we don't want it!
|
||||
|
||||
popup.PopupText.Text = "Accept Friend Request from " .. tostring(fromPlayer.Name) .. "?"
|
||||
popup.PopupImage.Image = "http://www.watrbx.wtf/thumbs/avatar.ashx?userId="..tostring(fromPlayer.userId).."&x=352&y=352"
|
||||
|
||||
showTwoButtons()
|
||||
popup.Visible = true
|
||||
popup.AcceptButton.Text = "Accept"
|
||||
popup.DeclineButton.Text = "Decline"
|
||||
popup:TweenSize(UDim2.new(0,330,0,350),Enum.EasingDirection.Out,Enum.EasingStyle.Quart,1,true)
|
||||
|
||||
local yesCon, noCon
|
||||
|
||||
yesCon = popup.AcceptButton.MouseButton1Click:connect(function()
|
||||
popup.Visible = false
|
||||
toPlayer:RequestFriendship(fromPlayer)
|
||||
if yesCon then yesCon:disconnect() end
|
||||
if noCon then noCon:disconnect() end
|
||||
popup:TweenSize(UDim2.new(0,0,0,0),Enum.EasingDirection.Out,Enum.EasingStyle.Quart,1,true,makePopupInvisible())
|
||||
end)
|
||||
|
||||
noCon = popup.DeclineButton.MouseButton1Click:connect(function()
|
||||
popup.Visible = false
|
||||
toPlayer:RevokeFriendship(fromPlayer)
|
||||
friendRequestBlacklist[fromPlayer] = true
|
||||
print("pop up blacklist")
|
||||
if yesCon then yesCon:disconnect() end
|
||||
if noCon then noCon:disconnect() end
|
||||
popup:TweenSize(UDim2.new(0,0,0,0),Enum.EasingDirection.Out,Enum.EasingStyle.Quart,1,true,makePopupInvisible())
|
||||
end)
|
||||
end
|
||||
|
||||
|
||||
game.Players.FriendRequestEvent:connect(function(fromPlayer,toPlayer,event)
|
||||
|
||||
-- if this doesn't involve me, then do nothing
|
||||
if fromPlayer ~= localPlayer and toPlayer ~= localPlayer then return end
|
||||
|
||||
if fromPlayer == localPlayer then
|
||||
if event == Enum.FriendRequestEvent.Accept then
|
||||
game:GetService("GuiService"):SendNotification("You are Friends",
|
||||
"With " .. toPlayer.Name .. "!",
|
||||
"http://www.watrbx.wtf/thumbs/avatar.ashx?userId="..tostring(toPlayer.userId).."&x=48&y=48",
|
||||
5,
|
||||
function()
|
||||
|
||||
end)
|
||||
end
|
||||
elseif toPlayer == localPlayer then
|
||||
if event == Enum.FriendRequestEvent.Issue then
|
||||
if friendRequestBlacklist[fromPlayer] then return end -- previously cancelled friend request, we don't want it!
|
||||
game:GetService("GuiService"):SendNotification("Friend Request",
|
||||
"From " .. fromPlayer.Name,
|
||||
"http://www.watrbx.wtf/thumbs/avatar.ashx?userId="..tostring(fromPlayer.userId).."&x=48&y=48",
|
||||
8,
|
||||
function()
|
||||
makeFriend(fromPlayer,toPlayer)
|
||||
end)
|
||||
elseif event == Enum.FriendRequestEvent.Accept then
|
||||
game:GetService("GuiService"):SendNotification("You are Friends",
|
||||
"With " .. fromPlayer.Name .. "!",
|
||||
"http://www.watrbx.wtf/thumbs/avatar.ashx?userId="..tostring(fromPlayer.userId).."&x=48&y=48",
|
||||
5,
|
||||
function()
|
||||
|
||||
end)
|
||||
end
|
||||
end
|
||||
end)
|
||||
|
||||
function showOneButton()
|
||||
local popup = script.Parent:FindFirstChild("Popup")
|
||||
if popup then
|
||||
popup.OKButton.Visible = true
|
||||
popup.DeclineButton.Visible = false
|
||||
popup.AcceptButton.Visible = false
|
||||
end
|
||||
end
|
||||
|
||||
function showTwoButtons()
|
||||
local popup = script.Parent:FindFirstChild("Popup")
|
||||
if popup then
|
||||
popup.OKButton.Visible = false
|
||||
popup.DeclineButton.Visible = true
|
||||
popup.AcceptButton.Visible = true
|
||||
end
|
||||
end
|
||||
|
||||
if teleportEnabled then
|
||||
game:GetService("TeleportService").ErrorCallback = function(message)
|
||||
local popup = script.Parent:FindFirstChild("Popup")
|
||||
showOneButton()
|
||||
popup.PopupText.Text = message
|
||||
local clickCon
|
||||
clickCon = popup.OKButton.MouseButton1Click:connect(function()
|
||||
if clickCon then clickCon:disconnect() end
|
||||
game.GuiService:RemoveCenterDialog(script.Parent:FindFirstChild("Popup"))
|
||||
popup:TweenSize(UDim2.new(0,0,0,0),Enum.EasingDirection.Out,Enum.EasingStyle.Quart,1,true,makePopupInvisible())
|
||||
end)
|
||||
game.GuiService:AddCenterDialog(script.Parent:FindFirstChild("Popup"), Enum.CenterDialogType.QuitDialog,
|
||||
--ShowFunction
|
||||
function()
|
||||
showOneButton()
|
||||
script.Parent:FindFirstChild("Popup").Visible = true
|
||||
popup:TweenSize(UDim2.new(0,330,0,350),Enum.EasingDirection.Out,Enum.EasingStyle.Quart,1,true)
|
||||
end,
|
||||
--HideFunction
|
||||
function()
|
||||
popup:TweenSize(UDim2.new(0,0,0,0),Enum.EasingDirection.Out,Enum.EasingStyle.Quart,1,true,makePopupInvisible())
|
||||
end)
|
||||
|
||||
end
|
||||
game:GetService("TeleportService").ConfirmationCallback = function(message, placeId, spawnName)
|
||||
local popup = script.Parent:FindFirstChild("Popup")
|
||||
popup.PopupText.Text = message
|
||||
popup.PopupImage.Image = ""
|
||||
|
||||
local yesCon, noCon
|
||||
|
||||
local function killCons()
|
||||
if yesCon then yesCon:disconnect() end
|
||||
if noCon then noCon:disconnect() end
|
||||
game.GuiService:RemoveCenterDialog(script.Parent:FindFirstChild("Popup"))
|
||||
popup:TweenSize(UDim2.new(0,0,0,0),Enum.EasingDirection.Out,Enum.EasingStyle.Quart,1,true,makePopupInvisible())
|
||||
end
|
||||
|
||||
yesCon = popup.AcceptButton.MouseButton1Click:connect(function()
|
||||
killCons()
|
||||
local success, err = pcall(function() game:GetService("TeleportService"):TeleportImpl(placeId,spawnName) end)
|
||||
if not success then
|
||||
showOneButton()
|
||||
popup.PopupText.Text = err
|
||||
local clickCon
|
||||
clickCon = popup.OKButton.MouseButton1Click:connect(function()
|
||||
if clickCon then clickCon:disconnect() end
|
||||
game.GuiService:RemoveCenterDialog(script.Parent:FindFirstChild("Popup"))
|
||||
popup:TweenSize(UDim2.new(0,0,0,0),Enum.EasingDirection.Out,Enum.EasingStyle.Quart,1,true,makePopupInvisible())
|
||||
end)
|
||||
game.GuiService:AddCenterDialog(script.Parent:FindFirstChild("Popup"), Enum.CenterDialogType.QuitDialog,
|
||||
--ShowFunction
|
||||
function()
|
||||
showOneButton()
|
||||
script.Parent:FindFirstChild("Popup").Visible = true
|
||||
popup:TweenSize(UDim2.new(0,330,0,350),Enum.EasingDirection.Out,Enum.EasingStyle.Quart,1,true)
|
||||
end,
|
||||
--HideFunction
|
||||
function()
|
||||
popup:TweenSize(UDim2.new(0,0,0,0),Enum.EasingDirection.Out,Enum.EasingStyle.Quart,1,true,makePopupInvisible())
|
||||
end)
|
||||
end
|
||||
end)
|
||||
|
||||
noCon = popup.DeclineButton.MouseButton1Click:connect(function()
|
||||
killCons()
|
||||
local success = pcall(function() game:GetService("TeleportService"):TeleportCancel() end)
|
||||
end)
|
||||
|
||||
local centerDialogSuccess = pcall(function() game.GuiService:AddCenterDialog(script.Parent:FindFirstChild("Popup"), Enum.CenterDialogType.QuitDialog,
|
||||
--ShowFunction
|
||||
function()
|
||||
showTwoButtons()
|
||||
popup.AcceptButton.Text = "Leave"
|
||||
popup.DeclineButton.Text = "Stay"
|
||||
script.Parent:FindFirstChild("Popup").Visible = true
|
||||
popup:TweenSize(UDim2.new(0,330,0,350),Enum.EasingDirection.Out,Enum.EasingStyle.Quart,1,true)
|
||||
end,
|
||||
--HideFunction
|
||||
function()
|
||||
popup:TweenSize(UDim2.new(0,0,0,0),Enum.EasingDirection.Out,Enum.EasingStyle.Quart,1,true,makePopupInvisible())
|
||||
end)
|
||||
end)
|
||||
|
||||
if centerDialogSuccess == false then
|
||||
script.Parent:FindFirstChild("Popup").Visible = true
|
||||
popup.AcceptButton.Text = "Leave"
|
||||
popup.DeclineButton.Text = "Stay"
|
||||
popup:TweenSize(UDim2.new(0,330,0,350),Enum.EasingDirection.Out,Enum.EasingStyle.Quart,1,true)
|
||||
end
|
||||
return true
|
||||
|
||||
end
|
||||
end
|
||||
File diff suppressed because it is too large
Load Diff
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user