This commit is contained in:
lx
2026-07-06 13:39:13 -04:00
commit 34bf440a8c
2694 changed files with 77580 additions and 0 deletions
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.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+815
View File
@@ -0,0 +1,815 @@
--rbxsig%hm7SbDaf0GHizpUYxb6qQAHuUU7LfsWX8bgPnc64hv1MnSJFX+Komih+acv/5vqLxpzxHNtvBCnuAwN6l63fYukZ0Yat7mDBHBx0w0CPTaWSCs2P5WDx/W7P+L8AkqpaowXKgCKST9VBErgwqTlUySsi0r9+HfExO+cl3h2lXig=%
--rbxassetid%158948138%
-- Creates the generic "ROBLOX" loading screen on startup
-- Written by ArceusInator & Ben Tkacheff, 2014
--
-- Constants
local PLACEID = Game.PlaceId
local MPS = Game:GetService 'MarketplaceService'
local CP = Game:GetService 'ContentProvider'
local COLORS = {
BLACK = Color3.new(0, 0, 0),
DARK = Color3.new(35/255, 35/255, 38/255),
DARKMED = Color3.new(61/255, 61/255, 67/255),
DARKMED2 = Color3.new(75/255, 76/255, 85/255),
MED = Color3.new(118/255, 118/255, 129/255),
LIGHTMED = Color3.new(190/255, 192/255, 212/255),
LIGHT = Color3.new(217/255, 218/255, 231/255),
ERROR = Color3.new(253/255,68/255,72/255)
}
local IMAGES = {
BACKGROUND_THUMBNAIL_VIGNETTE = 'rbxasset://textures/loading/loadingvignette.png',
ROBLOX_LOGO_256 = 'rbxasset://textures/loading/robloxlogo.png',
GAME_THUMBNAIL = 'http://www.roblox.com/Thumbs/Asset.ashx?format=png&width=420&height=230&assetId=',
GAME_BACKGROUND = 'rbxasset://textures/loading/loadingTexture.png'
}
local VALID_TEXT_SIZES = {
12,
14,
18,
24,
36,
48
}
--
-- Variables
local GameAssetInfo -- loaded by InfoProvider:LoadAssets()
local currScreenGui = nil
local renderSteppedConnection = nil
--
-- Utility functions
local create = function(className, defaultParent)
return function(propertyList)
local object = Instance.new(className)
for index, value in next, propertyList do
if type(index) == 'string' then
object[index] = value
else
if type(value) == 'function' then
value(object)
elseif type(value) == 'userdata' then
value.Parent = object
end
end
end
if object.Parent == nil then
object.Parent = defaultParent
end
return object
end
end
--
-- Create objects
local MainGui = {}
local InfoProvider = {}
function InfoProvider:GetGameName()
if GameAssetInfo ~= nil then
return GameAssetInfo.Name
else
return ''
end
end
function InfoProvider:GetCreatorName()
if GameAssetInfo ~= nil then
return GameAssetInfo.Creator.Name
else
return ''
end
end
function InfoProvider:LoadAssets()
Spawn(function()
if PLACEID <= 0 then
while Game.PlaceId <= 0 do
wait()
end
PLACEID = Game.PlaceId
end
IMAGES.GAME_THUMBNAIL = IMAGES.GAME_THUMBNAIL .. tostring(PLACEID)
-- load game asset info
coroutine.resume(coroutine.create(function() GameAssetInfo = MPS:GetProductInfo(PLACEID) end))
while not currScreenGui do
wait()
end
currScreenGui.ThumbnailContainer.Thumbnail.Image = IMAGES.GAME_THUMBNAIL
-- load images
for imageName, imageContent in next, IMAGES do
CP:Preload(imageContent)
end
end)
end
--
-- Declare member functions
function MainGui:GenerateMain()
local screenGui = create 'ScreenGui' {
Name = 'RobloxLoadingGui'
}
--
-- create descendant frames
local mainBackgroundContainer = create 'Frame' {
Name = 'MainBackgroundContainer',
BackgroundColor3 = COLORS.DARK,
Size = UDim2.new(1, 0, 1, 0),
Active = true,
create 'Frame' {
Name = 'TopBar',
BackgroundColor3 = COLORS.DARKMED,
BorderColor3 = COLORS.MED,
BorderSizePixel = 3,
Position = UDim2.new(0, -220, 0, -205),
Rotation = -10,
Size = UDim2.new(0, 1000, 0, 220),
ZIndex = 5,
create 'ImageLabel' {
Name = 'RobloxLogo',
BackgroundTransparency = 1,
Image = IMAGES.ROBLOX_LOGO_256,
Position = UDim2.new(0, 214, 1, -80),
Rotation = 2,
Size = UDim2.new(0, 128, 0, 128),
ZIndex = 6,
create 'TextLabel' {
Name = 'PoweredBy',
BackgroundTransparency = 1,
Position = UDim2.new(0.5, -60, 0, 30),
Size = UDim2.new(0, 80, 0, 18),
Font = Enum.Font.SourceSans,
FontSize = Enum.FontSize.Size18,
TextColor3 = Color3.new(1,1,1),
Text = "Powered By",
ZIndex = 6
}
}
},
create 'ImageButton' {
Name = 'CloseButton',
Image = 'rbxasset://textures/ui/CloseButton.png',
BackgroundTransparency = 1,
Position = UDim2.new(1, -27, 0, 5),
Size = UDim2.new(0, 22, 0, 22),
Active = true,
ZIndex = 10
},
create 'Frame' {
Name = 'ErrorFrame',
BackgroundColor3 = COLORS.ERROR,
BorderSizePixel = 0,
Position = UDim2.new(0.25,0,0,0),
Size = UDim2.new(0.5, 0, 0, 80),
ZIndex = 5,
Visible = false,
create 'TextLabel' {
Name = "ErrorText",
BackgroundTransparency = 1,
ZIndex = 6,
Position = UDim2.new(0,5,0,5),
Size = UDim2.new(1,-10,1,-10),
Font = Enum.Font.SourceSans,
FontSize = Enum.FontSize.Size18,
Text = "",
TextColor3 = Color3.new(1,1,1),
TextXAlignment = Enum.TextXAlignment.Center,
TextYAlignment = Enum.TextYAlignment.Center,
TextWrap = true
}
},
create 'Frame' {
Name = 'BottomBar',
BorderSizePixel = 0,
BackgroundTransparency = 1,
Position = UDim2.new(0, 0, 1, -150),
Size = UDim2.new(1, 0, 0, 300),
ZIndex = 5,
create 'Frame' {
Name = 'BottomBarActual',
BackgroundColor3 = COLORS.DARKMED,
BorderColor3 = COLORS.MED,
BorderSizePixel = 3,
Position = UDim2.new(0, 0, 0, 0),
Size = UDim2.new(1, 0, 1, 0),
ZIndex = 5,
create 'Frame' {
Name = 'TextContainer',
BackgroundTransparency = 1,
Position = UDim2.new(0, -5, 0, 5),
Size = UDim2.new(1, 0, 1, 0),
ZIndex = 8,
create 'TextLabel' {
Name = 'CreatorName',
BackgroundTransparency = 1,
Position = UDim2.new(0, 0, 0, 70),
Size = UDim2.new(1, 0, 1, 0),
ZIndex = 9,
Font = Enum.Font.SourceSansBold,
FontSize = Enum.FontSize.Size48,
Text = InfoProvider:GetCreatorName(),
TextColor3 = COLORS.LIGHT,
TextStrokeColor3 = COLORS.DARKMED2,
TextStrokeTransparency = 0,
TextXAlignment = Enum.TextXAlignment.Right,
TextYAlignment = Enum.TextYAlignment.Top
},
create 'TextLabel' {
Name = 'GameName',
BackgroundTransparency = 1,
Position = UDim2.new(0, 0, 0, 30),
Size = UDim2.new(1, 0, 1, 0),
ZIndex = 9,
Font = Enum.Font.SourceSansBold,
FontSize = Enum.FontSize.Size48,
Text = InfoProvider:GetGameName(),
TextColor3 = COLORS.LIGHT,
TextStrokeColor3 = COLORS.DARKMED2,
TextStrokeTransparency = 0,
TextXAlignment = Enum.TextXAlignment.Right,
TextYAlignment = Enum.TextYAlignment.Top
},
create 'TextLabel' {
Name = 'CreatorNamePrefix',
BackgroundTransparency = 1,
Size = UDim2.new(1, 0, 1, 0),
ZIndex = 9,
Font = Enum.Font.SourceSans,
FontSize = Enum.FontSize.Size48,
Text = 'By',
TextColor3 = COLORS.LIGHTMED,
TextStrokeColor3 = COLORS.DARKMED2,
TextStrokeTransparency = 0,
TextXAlignment = Enum.TextXAlignment.Right,
TextYAlignment = Enum.TextYAlignment.Top
},
create 'TextLabel' {
Name = 'OnYourWay',
BackgroundTransparency = 1,
Size = UDim2.new(1, 0, 1, 0),
ZIndex = 9,
Font = Enum.Font.SourceSans,
FontSize = Enum.FontSize.Size36,
Text = 'You\'re on your way to',
TextColor3 = COLORS.LIGHTMED,
TextStrokeColor3 = COLORS.DARKMED2,
TextStrokeTransparency = 0,
TextXAlignment = Enum.TextXAlignment.Right,
TextYAlignment = Enum.TextYAlignment.Top
}
}
}
},
create 'ImageLabel' {
Name = 'BackgroundThumbnailVignette',
BackgroundTransparency = 1,
Image = IMAGES.BACKGROUND_THUMBNAIL_VIGNETTE,
Size = UDim2.new(1, 0, 1, 0),
ZIndex = 3
},
create 'ImageLabel' {
Name = 'BackgroundThumbnail',
BackgroundTransparency = 1,
Image = IMAGES.GAME_BACKGROUND,
Size = UDim2.new(1.5, 0, 1.5, 0),
Position = UDim2.new(-0.5,0,0,0),
ZIndex = 2
},
Parent = screenGui
}
local thumbnailContainer = create 'Frame' {
Name = 'ThumbnailContainer',
BackgroundColor3 = COLORS.BLACK,
BorderColor3 = COLORS.MED,
BorderSizePixel = 4,
Position = UDim2.new(0.5, -210, 0.5, -115),
Size = UDim2.new(0, 420, 0, 230),
ZIndex = 8,
create 'ImageLabel' {
Name = 'Thumbnail',
BorderColor3 = COLORS.DARKMED2,
BorderSizePixel = 3,
Image = "",
Size = UDim2.new(1, 0, 1, 0),
ZIndex = 8
},
create 'Frame' {
Name = 'LoadingInfoContainer',
BorderColor3 = COLORS.MED,
BackgroundColor3 = COLORS.DARKMED,
BorderSizePixel = 2,
Position = UDim2.new(0,20,1,0),
Size = UDim2.new(1,-40,0,40),
ZIndex = 7,
create 'TextLabel' {
Name = 'InstancesLabel',
BackgroundTransparency = 1,
Position = UDim2.new(0,0,0,5),
Size = UDim2.new(0.25, 0, 1, -10),
ZIndex = 9,
Font = Enum.Font.SourceSansBold,
FontSize = Enum.FontSize.Size14,
Text = 'Instances',
TextColor3 = COLORS.LIGHTMED,
TextStrokeColor3 = COLORS.DARKMED2,
TextStrokeTransparency = 0,
TextXAlignment = Enum.TextXAlignment.Center,
TextYAlignment = Enum.TextYAlignment.Top
},
create 'TextLabel' {
Name = 'InstancesValue',
BackgroundTransparency = 1,
Position = UDim2.new(0,0,0,5),
Size = UDim2.new(0.25, 0, 1, -10),
ZIndex = 9,
Font = Enum.Font.SourceSansBold,
FontSize = Enum.FontSize.Size14,
Text = '0',
TextColor3 = COLORS.LIGHTMED,
TextStrokeColor3 = COLORS.DARKMED2,
TextStrokeTransparency = 0,
TextXAlignment = Enum.TextXAlignment.Center,
TextYAlignment = Enum.TextYAlignment.Bottom
},
create 'TextLabel' {
Name = 'VoxelsLabel',
BackgroundTransparency = 1,
Position = UDim2.new(0.75,0,0,5),
Size = UDim2.new(0.25, 0, 1, -10),
ZIndex = 9,
Font = Enum.Font.SourceSansBold,
FontSize = Enum.FontSize.Size14,
Text = 'Voxels',
TextColor3 = COLORS.LIGHTMED,
TextStrokeColor3 = COLORS.DARKMED2,
TextStrokeTransparency = 0,
TextXAlignment = Enum.TextXAlignment.Center,
TextYAlignment = Enum.TextYAlignment.Top
},
create 'TextLabel' {
Name = 'VoxelsValue',
BackgroundTransparency = 1,
Position = UDim2.new(0.75,0,0,5),
Size = UDim2.new(0.25, 0, 1, -10),
ZIndex = 9,
Font = Enum.Font.SourceSansBold,
FontSize = Enum.FontSize.Size14,
Text = '0',
TextColor3 = COLORS.LIGHTMED,
TextStrokeColor3 = COLORS.DARKMED2,
TextStrokeTransparency = 0,
TextXAlignment = Enum.TextXAlignment.Center,
TextYAlignment = Enum.TextYAlignment.Bottom
},
create 'TextLabel' {
Name = 'ConnectorsLabel',
BackgroundTransparency = 1,
Position = UDim2.new(0.5,0,0,5),
Size = UDim2.new(0.25, 0, 1, -10),
ZIndex = 9,
Font = Enum.Font.SourceSansBold,
FontSize = Enum.FontSize.Size14,
Text = 'Connectors',
TextColor3 = COLORS.LIGHTMED,
TextStrokeColor3 = COLORS.DARKMED2,
TextStrokeTransparency = 0,
TextXAlignment = Enum.TextXAlignment.Center,
TextYAlignment = Enum.TextYAlignment.Top
},
create 'TextLabel' {
Name = 'ConnectorsValue',
BackgroundTransparency = 1,
Position = UDim2.new(0.5,0,0,5),
Size = UDim2.new(0.25, 0, 1, -10),
ZIndex = 9,
Font = Enum.Font.SourceSansBold,
FontSize = Enum.FontSize.Size14,
Text = '0',
TextColor3 = COLORS.LIGHTMED,
TextStrokeColor3 = COLORS.DARKMED2,
TextStrokeTransparency = 0,
TextXAlignment = Enum.TextXAlignment.Center,
TextYAlignment = Enum.TextYAlignment.Bottom
},
create 'TextLabel' {
Name = 'BricksLabel',
BackgroundTransparency = 1,
Position = UDim2.new(0.25,0,0,5),
Size = UDim2.new(0.25, 0, 1, -10),
ZIndex = 9,
Font = Enum.Font.SourceSansBold,
FontSize = Enum.FontSize.Size14,
Text = 'Bricks',
TextColor3 = COLORS.LIGHTMED,
TextStrokeColor3 = COLORS.DARKMED2,
TextStrokeTransparency = 0,
TextXAlignment = Enum.TextXAlignment.Center,
TextYAlignment = Enum.TextYAlignment.Top
},
create 'TextLabel' {
Name = 'BricksValue',
BackgroundTransparency = 1,
Position = UDim2.new(0.25,0,0,5),
Size = UDim2.new(0.25, 0, 1, -10),
ZIndex = 9,
Font = Enum.Font.SourceSansBold,
FontSize = Enum.FontSize.Size14,
Text = '0',
TextColor3 = COLORS.LIGHTMED,
TextStrokeColor3 = COLORS.DARKMED2,
TextStrokeTransparency = 0,
TextXAlignment = Enum.TextXAlignment.Center,
TextYAlignment = Enum.TextYAlignment.Bottom
},
},
Parent = screenGui
}
--
-- recalculate everything
while not Game:GetService("CoreGui") do
wait()
end
screenGui.Parent = Game.CoreGui
MainGui:RecalculateSizes(screenGui)
--
-- return generated gui
return screenGui
end
function MainGui:RecalculateTextSize(screenGui)
local screenSize = screenGui.AbsoluteSize
local textSizeScale = math.min(screenSize.y/800, 1)
local closestValidSizePrevIndex = math.floor(textSizeScale*#VALID_TEXT_SIZES)-1
local closestValidSizePrevIndex2 = closestValidSizePrevIndex-1
local closestValidTextSize
local closestValidTextSizePrev
-- next can't take a 0 because it's a total wuss
if closestValidSizePrevIndex > 0 then
_, closestValidTextSize = next(VALID_TEXT_SIZES, closestValidSizePrevIndex)
if closestValidSizePrevIndex2 > 0 then
_, closestValidTextSizePrev = next(VALID_TEXT_SIZES, closestValidSizePrevIndex2)
else
_, closestValidTextSizePrev = next(VALID_TEXT_SIZES) -- not doing t[1] because this looks cleaner
end
else
_, closestValidTextSize = next(VALID_TEXT_SIZES)
_, closestValidTextSizePrev = next(VALID_TEXT_SIZES)
end
local textSizeEnum = Enum.FontSize['Size'..closestValidTextSize]
local textSizePrevEnum = Enum.FontSize['Size'..closestValidTextSizePrev]
if not screenGui:FindFirstChild("MainBackgroundContainer") then return end
local TextContainer = screenGui.MainBackgroundContainer.BottomBar.BottomBarActual.TextContainer
local currentYBumpDistance = 0
TextContainer.OnYourWay.FontSize = textSizePrevEnum
currentYBumpDistance = currentYBumpDistance + closestValidTextSizePrev*(40/48)
TextContainer.GameName.Position = UDim2.new(0, 0, 0, currentYBumpDistance)
TextContainer.GameName.FontSize = textSizeEnum
currentYBumpDistance = currentYBumpDistance + closestValidTextSize*(40/48)
TextContainer.CreatorName.Position = UDim2.new(0, 0, 0, currentYBumpDistance)
TextContainer.CreatorName.FontSize = textSizeEnum
local currentXBumpDistance = -(TextContainer.CreatorName.TextBounds.X+5)
TextContainer.CreatorNamePrefix.Position = UDim2.new(0, currentXBumpDistance, 0, currentYBumpDistance)
TextContainer.CreatorNamePrefix.FontSize = textSizeEnum
-- recalculate bottom bar size
local sizeScale = closestValidTextSize/48
screenGui.MainBackgroundContainer.BottomBar.Size = UDim2.new(1, 0, 0, 300 * sizeScale)
screenGui.MainBackgroundContainer.BottomBar.Position = UDim2.new(0, 0, 1, -150 * sizeScale)
screenGui.MainBackgroundContainer.BottomBar.BottomBarActual.Position = UDim2.new(0, -130 * sizeScale,0,0)
end
function MainGui:RecalculateSizes(screenGui)
local screenSize = screenGui.AbsoluteSize
-- recalculate thumbnail size
local thumbnailSizeScale = math.min(math.max(screenSize.y/630, 50/230), 1)
local thumbnailSize = UDim2.new(0, thumbnailSizeScale*420, 0, thumbnailSizeScale*230)
local thumbnailPosition = UDim2.new(0.5, -thumbnailSizeScale*420/2, 0.5, -20 - thumbnailSizeScale*230/2 )
screenGui.ThumbnailContainer.Size = thumbnailSize
screenGui.ThumbnailContainer.Position = thumbnailPosition
screenGui.ThumbnailContainer.LoadingInfoContainer.Visible = (screenSize.Y > 500)
-- update names
-- if we don't have a name yet, keep trying!
if InfoProvider:GetCreatorName() == '' or InfoProvider:GetGameName() == '' then
Spawn(function()
while InfoProvider and InfoProvider:GetCreatorName() == '' or InfoProvider:GetGameName() == '' do
wait()
end
if screenGui and screenGui:FindFirstChild("MainBackgroundContainer") then
screenGui.MainBackgroundContainer.BottomBar.BottomBarActual.TextContainer.CreatorName.Text = InfoProvider:GetCreatorName()
screenGui.MainBackgroundContainer.BottomBar.BottomBarActual.TextContainer.GameName.Text = InfoProvider:GetGameName()
end
MainGui:RecalculateTextSize(screenGui)
end)
else
screenGui.MainBackgroundContainer.BottomBar.BottomBarActual.TextContainer.CreatorName.Text = InfoProvider:GetCreatorName()
screenGui.MainBackgroundContainer.BottomBar.BottomBarActual.TextContainer.GameName.Text = InfoProvider:GetGameName()
end
MainGui:RecalculateTextSize(screenGui)
end
function MainGui:Show()
currScreenGui = MainGui:GenerateMain()
currScreenGui.MainBackgroundContainer.Visible = true
currScreenGui.ThumbnailContainer.Visible = true
currScreenGui.Changed:connect(function(prop)
if prop == "AbsoluteSize" then
MainGui:RecalculateSizes(currScreenGui)
end
end)
end
---------------------------------------------------------
-- Main Script (show something now + setup connections)
-- start loading assets asap
InfoProvider:LoadAssets()
MainGui:Show()
local guiService = Game:GetService("GuiService")
local instanceCount = 0
local voxelCount = 0
local brickCount = 0
local connectorCount = 0
local setVerb = true
renderSteppedConnection = Game:GetService("RunService").RenderStepped:connect(function()
instanceCount = guiService:GetInstanceCount()
voxelCount = guiService:GetVoxelCount()
brickCount = guiService:GetBrickCount()
connectorCount = guiService:GetConnectorCount()
if not currScreenGui then return end
if setVerb then
currScreenGui.MainBackgroundContainer.CloseButton:SetVerb("Exit")
setVerb = false
end
currScreenGui.ThumbnailContainer.LoadingInfoContainer.InstancesValue.Text = tostring(instanceCount)
currScreenGui.ThumbnailContainer.LoadingInfoContainer.BricksValue.Text = tostring(brickCount)
currScreenGui.ThumbnailContainer.LoadingInfoContainer.ConnectorsValue.Text = tostring(connectorCount)
if voxelCount <= 0 then
currScreenGui.ThumbnailContainer.LoadingInfoContainer.VoxelsValue.Text = "0"
else
currScreenGui.ThumbnailContainer.LoadingInfoContainer.VoxelsValue.Text = tostring(voxelCount) .." million"
end
end)
guiService.ErrorMessageChanged:connect(function()
if guiService:GetErrorMessage() ~= '' then
currScreenGui.MainBackgroundContainer.ErrorFrame.ErrorText.Text = guiService:GetErrorMessage()
currScreenGui.MainBackgroundContainer.ErrorFrame.Visible = true
else
currScreenGui.MainBackgroundContainer.ErrorFrame.Visible = false
end
end)
if guiService:GetErrorMessage() ~= '' then
currScreenGui.MainBackgroundContainer.ErrorFrame.ErrorText.Text = guiService:GetErrorMessage()
currScreenGui.MainBackgroundContainer.ErrorFrame.Visible = true
end
local forceRemovalTime = 5
local destroyed = false
function removeLoadingScreen()
if renderSteppedConnection then
renderSteppedConnection:disconnect()
end
if currScreenGui then
currScreenGui:Destroy()
currScreenGui = nil
end
if script then script:Destroy() end
destroyed = true
end
function startForceLoadingDoneTimer()
wait(forceRemovalTime)
removeLoadingScreen()
end
function gameIsLoaded()
if Game.ReplicatedFirst:IsDefaultLoadingGuiRemoved() then
removeLoadingScreen()
else
startForceLoadingDoneTimer()
end
end
Game.ReplicatedFirst.RemoveDefaultLoadingGuiSignal:connect(function()
removeLoadingScreen()
end)
if Game.ReplicatedFirst:IsDefaultLoadingGuiRemoved() then
removeLoadingScreen()
return
end
Game.Loaded:connect(function()
gameIsLoaded()
end)
if Game:IsLoaded() then
gameIsLoaded()
end
--------------------------------------------------------------------------
--
-- Animation (make the stuff we are showing look cool)
local blockSize = 10
local blockColor = Color3.new(33/255,66/255,209/255)
local yPosScale = 0
local yPosOffset = -blockSize * 3.5
local tweenStyle = Enum.EasingStyle.Sine
local tweenVelocity = 1500
local tweenTime = (currScreenGui.AbsoluteSize.X/2)/tweenVelocity
function createBlock()
local initBlock = Instance.new("Frame")
initBlock.ZIndex = 5
initBlock.Size = UDim2.new(0,blockSize,0,blockSize)
initBlock.BackgroundColor3 = COLORS.DARK
initBlock.BorderSizePixel = 0
initBlock.Position = UDim2.new(0,-blockSize,yPosScale,yPosOffset)
initBlock.Parent = currScreenGui.MainBackgroundContainer.BottomBar
return initBlock
end
local blocks = {}
for i = 1,6 do
blocks[i] = createBlock()
end
function getYOffset(newSize)
return yPosOffset - (newSize/3)
end
function rightScreenExit()
wait(tweenTime * 3)
if not currScreenGui then return end
local regSize = blocks[6].Size
local regPos = blocks[6].Position
blocks[6].Size = blocks[1].Size
blocks[6].Position = blocks[1].Position
blocks[1].Size = regSize
blocks[1].Position = regPos
wait()
for i = 1,6 do
local delayTime = tweenTime * (i - 1) * 0.5
Delay(delayTime, function()
if not currScreenGui then return end
local blockIndex = i
local blockSizeMultiplier = 4 - (i * 0.5)
blocks[blockIndex]:TweenPosition(UDim2.new(1,0,yPosScale,yPosOffset),
Enum.EasingDirection.Out,tweenStyle,
tweenTime,true)
if i == 6 then
blocks[6]:TweenSizeAndPosition(UDim2.new(0,blockSize,0,blockSize),
UDim2.new(1,0,yPosScale,yPosOffset),
Enum.EasingDirection.InOut,tweenStyle,
tweenTime,true)
wait(tweenTime * 1.1)
leftScreenEntrance()
else
local newSize = blockSize * blockSizeMultiplier
blocks[6]:TweenSizeAndPosition(UDim2.new(0,newSize,0,newSize),
UDim2.new(0.5,-newSize/2,yPosScale,getYOffset(newSize)),
Enum.EasingDirection.InOut,tweenStyle,
tweenTime * 0.75,true)
end
end)
end
end
function leftScreenEntrance()
if not currScreenGui then return end
for i = 1,6 do
blocks[i].Size = UDim2.new(0,blockSize,0,blockSize)
blocks[i].Position = UDim2.new(0,-blockSize,yPosScale,yPosOffset)
end
blocks[1]:TweenPosition(UDim2.new(0.5,-blockSize/2,yPosScale,yPosOffset),Enum.EasingDirection.Out,tweenStyle,tweenTime,true,function()
for i = 1, 6 do
local delayTime = tweenTime * (i - 1) * 0.5
Delay(delayTime, function()
if not currScreenGui then return end
local blockIndex = i
local blockSizeMultiplier = 1 + (i * 0.5)
blocks[blockIndex]:TweenPosition(UDim2.new(0.5,-blockSize/2,yPosScale,yPosOffset),
Enum.EasingDirection.Out,tweenStyle,
tweenTime,true)
local newSize = blockSize * blockSizeMultiplier
blocks[1]:TweenSizeAndPosition(UDim2.new(0,newSize,0,newSize),
UDim2.new(0.5,-newSize/2,yPosScale,getYOffset(newSize)),
Enum.EasingDirection.InOut,tweenStyle,
tweenTime * 0.75,true)
if i == 4 then
rightScreenExit()
end
end)
end
end)
end
function startLoadingAnimation()
currScreenGui.MainBackgroundContainer.BackgroundThumbnail:TweenPosition(UDim2.new(0,0,0,0),Enum.EasingDirection.InOut,Enum.EasingStyle.Linear,20,true)
leftScreenEntrance()
end
----------------------------------
-- Animation Begin
startLoadingAnimation()
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+102
View File
@@ -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.roblox.com/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(&quot;RunService&quot;)&#13;&#10;&#13;&#10;shaft = script.Parent&#13;&#10;position = Vector3.new(0,0,0)&#13;&#10;&#13;&#10;function fly()&#13;&#10;&#9;direction = shaft.CFrame.lookVector&#13;&#10;&#9;position = position + direction&#13;&#10;&#9;error = position - shaft.Position&#13;&#10;&#9;shaft.Velocity = 7*error&#13;&#10;end&#13;&#10;&#13;&#10;function blow()&#13;&#10;&#9;swoosh:Stop()&#13;&#10;&#9;explosion = Instance.new(&quot;Explosion&quot;)&#13;&#10;&#9;explosion.Position = shaft.Position&#13;&#10;&#9;explosion.Parent = game.Workspace&#13;&#10;&#9;connection:disconnect()&#13;&#10;&#9;shaft:remove()&#13;&#10;end&#13;&#10;&#13;&#10;t, s = r.Stepped:wait()&#13;&#10;&#13;&#10;swoosh = script.Parent.Swoosh&#13;&#10;swoosh:Play()&#13;&#10;&#13;&#10;position = shaft.Position&#13;&#10;d = t + 10.0 - s&#13;&#10;connection = shaft.Touched:connect(blow)&#13;&#10;&#13;&#10;while t &lt; d do&#13;&#10;&#9;fly()&#13;&#10;&#9;t = r.Stepped:wait()&#13;&#10;end&#13;&#10;&#13;&#10;script.Parent.Explosion.PlayOnRemove = false&#13;&#10;swoosh:Stop()&#13;&#10;shaft:remove()&#13;&#10;</string>
</Properties>
</Item>
</Item>
</roblox>
Binary file not shown.
+82
View File
@@ -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.roblox.com/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">&#13;&#10;pellet = script.Parent&#13;&#10;damage = 8&#13;&#10;&#13;&#10;function onTouched(hit)&#13;&#10;&#9;humanoid = hit.Parent:findFirstChild(&quot;Humanoid&quot;)&#13;&#10;&#9;if humanoid~=nil then&#13;&#10;&#9;&#9;humanoid.Health = humanoid.Health - damage&#13;&#10;&#9;&#9;connection:disconnect()&#13;&#10;&#9;else&#13;&#10;&#9;&#9;damage = damage / 2&#13;&#10;&#9;&#9;if damage &lt; 0.1 then&#13;&#10;&#9;&#9;&#9;connection:disconnect()&#13;&#10;&#9;&#9;end&#13;&#10;&#9;end&#13;&#10;end&#13;&#10;&#13;&#10;connection = pellet.Touched:connect(onTouched)&#13;&#10;&#13;&#10;r = game:service(&quot;RunService&quot;)&#13;&#10;t, s = r.Stepped:wait()&#13;&#10;d = t + 1.0 - s&#13;&#10;while t &lt; d do&#13;&#10;&#9;t = r.Stepped:wait()&#13;&#10;end&#13;&#10;&#13;&#10;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.
+850
View File
@@ -0,0 +1,850 @@
<roblox xmlns:xmime="http://www.w3.org/2005/05/xmlmime" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://www.roblox.com/roblox.xsd" version="4">
<External>null</External>
<External>nil</External>
<Item class="Model" referent="RBX0">
<Properties>
<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>
</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">194</int>
<CoordinateFrame name="CFrame">
<X>0</X>
<Y>19.5</Y>
<Z>22.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>
<PhysicalProperties name="CustomPhysicalProperties">
<CustomPhysics>false</CustomPhysics>
</PhysicalProperties>
<float name="Elasticity">0.5</float>
<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>
<token name="Material">256</token>
<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>
<token name="formFactorRaw">0</token>
<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>
<token name="LODX">2</token>
<token name="LODY">2</token>
<Content name="MeshId"><null></null></Content>
<token name="MeshType">0</token>
<string name="Name">Mesh</string>
<Vector3 name="Offset">
<X>0</X>
<Y>0</Y>
<Z>0</Z>
</Vector3>
<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>
</Properties>
</Item>
<Item class="Decal" referent="RBX3">
<Properties>
<token name="Face">5</token>
<string name="Name">face</string>
<Content name="Texture"><url>rbxasset://textures/face.png</url></Content>
<float name="Transparency">0</float>
</Properties>
</Item>
<Item class="Attachment" referent="RBX94E86BA569B64785B5D8F3F9C1C9D4F8">
<Properties>
<CoordinateFrame name="CFrame">
<X>0</X>
<Y>0.600000024</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">HairAttachment</string>
</Properties>
</Item>
<Item class="Attachment" referent="RBX378A74DCC4AA4A2598AA40FF503FD481">
<Properties>
<CoordinateFrame name="CFrame">
<X>0</X>
<Y>0.600000024</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">HatAttachment</string>
</Properties>
</Item>
<Item class="Attachment" referent="RBX99DFBABC62D2465A8C279BF27A84727A">
<Properties>
<CoordinateFrame name="CFrame">
<X>0</X>
<Y>0</Y>
<Z>-0.600000024</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">FaceFrontAttachment</string>
</Properties>
</Item>
<Item class="Attachment" referent="RBX1D688DF966C84BC7B8EA35A8C51B3A3E">
<Properties>
<CoordinateFrame name="CFrame">
<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">FaceCenterAttachment</string>
</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">194</int>
<CoordinateFrame name="CFrame">
<X>0</X>
<Y>18</Y>
<Z>22.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>
<PhysicalProperties name="CustomPhysicalProperties">
<CustomPhysics>false</CustomPhysics>
</PhysicalProperties>
<float name="Elasticity">0.5</float>
<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>
<token name="Material">256</token>
<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>
<token name="formFactorRaw">0</token>
<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>
<Content name="Texture"><null></null></Content>
<float name="Transparency">0</float>
</Properties>
</Item>
<Item class="Attachment" referent="RBXF18642A6731741EB965F132B28EAF1DC">
<Properties>
<CoordinateFrame name="CFrame">
<X>0</X>
<Y>1</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">NeckAttachment</string>
</Properties>
</Item>
<Item class="Attachment" referent="RBXE4C1D4019C4A40DA86329D0548957CE3">
<Properties>
<CoordinateFrame name="CFrame">
<X>0</X>
<Y>0</Y>
<Z>-0.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>
<string name="Name">BodyFrontAttachment</string>
</Properties>
</Item>
<Item class="Attachment" referent="RBX9A29D0ACFCB045FE95734B1973F9F3DA">
<Properties>
<CoordinateFrame name="CFrame">
<X>0</X>
<Y>0</Y>
<Z>0.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>
<string name="Name">BodyBackAttachment</string>
</Properties>
</Item>
<Item class="Attachment" referent="RBXB02E7106C39E485995A68DB8B3662D6A">
<Properties>
<CoordinateFrame name="CFrame">
<X>-1</X>
<Y>1</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">LeftCollarAttachment</string>
</Properties>
</Item>
<Item class="Attachment" referent="RBX68757F07EBFA45A8BBC77405BF28AD4A">
<Properties>
<CoordinateFrame name="CFrame">
<X>1</X>
<Y>1</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">RightCollarAttachment</string>
</Properties>
</Item>
<Item class="Attachment" referent="RBXAE8F55F8248748C0B3B008E176195348">
<Properties>
<CoordinateFrame name="CFrame">
<X>0</X>
<Y>-1</Y>
<Z>-0.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>
<string name="Name">WaistFrontAttachment</string>
</Properties>
</Item>
<Item class="Attachment" referent="RBXDBB757C86A6948EE86DA6F8B9A4CBDC0">
<Properties>
<CoordinateFrame name="CFrame">
<X>0</X>
<Y>-1</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">WaistCenterAttachment</string>
</Properties>
</Item>
<Item class="Attachment" referent="RBX0CD5ED23664D4ECABBB224F0DAE8542E">
<Properties>
<CoordinateFrame name="CFrame">
<X>0</X>
<Y>-1</Y>
<Z>0.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>
<string name="Name">WaistBackAttachment</string>
</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">194</int>
<CoordinateFrame name="CFrame">
<X>1.5</X>
<Y>18</Y>
<Z>22.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>
<PhysicalProperties name="CustomPhysicalProperties">
<CustomPhysics>false</CustomPhysics>
</PhysicalProperties>
<float name="Elasticity">0.5</float>
<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>
<token name="Material">256</token>
<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>
<token name="formFactorRaw">0</token>
<token name="shape">1</token>
<Vector3 name="size">
<X>1</X>
<Y>2</Y>
<Z>1</Z>
</Vector3>
</Properties>
<Item class="Attachment" referent="RBX32AAED8CBEAA432B93549F57A8CD264F">
<Properties>
<CoordinateFrame name="CFrame">
<X>0</X>
<Y>1.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">LeftShoulderAttachment</string>
</Properties>
</Item>
</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">194</int>
<CoordinateFrame name="CFrame">
<X>-1.5</X>
<Y>18</Y>
<Z>22.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>
<PhysicalProperties name="CustomPhysicalProperties">
<CustomPhysics>false</CustomPhysics>
</PhysicalProperties>
<float name="Elasticity">0.5</float>
<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>
<token name="Material">256</token>
<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>
<token name="formFactorRaw">0</token>
<token name="shape">1</token>
<Vector3 name="size">
<X>1</X>
<Y>2</Y>
<Z>1</Z>
</Vector3>
</Properties>
<Item class="Attachment" referent="RBX1442A14CF3BB469E8B8A84AEF3ACBA23">
<Properties>
<CoordinateFrame name="CFrame">
<X>0</X>
<Y>1.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">RightShoulderAttachment</string>
</Properties>
</Item>
</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">194</int>
<CoordinateFrame name="CFrame">
<X>0.5</X>
<Y>16</Y>
<Z>22.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>
<PhysicalProperties name="CustomPhysicalProperties">
<CustomPhysics>false</CustomPhysics>
</PhysicalProperties>
<float name="Elasticity">0.5</float>
<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>
<token name="Material">256</token>
<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>
<token name="formFactorRaw">0</token>
<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">194</int>
<CoordinateFrame name="CFrame">
<X>-0.5</X>
<Y>16</Y>
<Z>22.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>
<PhysicalProperties name="CustomPhysicalProperties">
<CustomPhysics>false</CustomPhysics>
</PhysicalProperties>
<float name="Elasticity">0.5</float>
<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>
<token name="Material">256</token>
<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>
<token name="formFactorRaw">0</token>
<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>
<token name="DisplayDistanceType">0</token>
<float name="HealthDisplayDistance">100</float>
<float name="Health_XML">100</float>
<float name="HipHeight">0</float>
<float name="JumpPower">50</float>
<float name="MaxHealth">100</float>
<float name="MaxSlopeAngle">89</float>
<string name="Name">Humanoid</string>
<float name="NameDisplayDistance">100</float>
<token name="NameOcclusion">2</token>
<float name="WalkSpeed">16</float>
</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">194</int>
<CoordinateFrame name="CFrame">
<X>0</X>
<Y>18</Y>
<Z>22.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>
<PhysicalProperties name="CustomPhysicalProperties">
<CustomPhysics>false</CustomPhysics>
</PhysicalProperties>
<float name="Elasticity">0.5</float>
<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>
<token name="Material">256</token>
<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>
<token name="formFactorRaw">0</token>
<token name="shape">1</token>
<Vector3 name="size">
<X>2</X>
<Y>2</Y>
<Z>1</Z>
</Vector3>
</Properties>
</Item>
</Item>
</roblox>
+527
View File
@@ -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.roblox.com/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>
Binary file not shown.
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
File diff suppressed because it is too large Load Diff
+366
View File
@@ -0,0 +1,366 @@
<roblox xmlns:xmime="http://www.w3.org/2005/05/xmlmime" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://www.roblox.com/roblox.xsd" version="4">
<External>null</External>
<External>nil</External>
<Item class="Script" referent="RBXf11428b7b777457c8d872c64386aa070">
<Properties>
<bool name="Disabled">false</bool>
<Content name="LinkedSource"><null></null></Content>
<string name="Name">Sound</string>
<string name="ScriptGuid"></string>
<ProtectedString name="Source"><![CDATA[--[[
Author: @spotco
This script creates sounds which are placed under the character head.
These sounds are used by the "LocalSound" script.
To modify this script, copy it to your "StarterPlayer/StarterCharacterScripts" folder keeping the same script name ("Sound").
The default Sound script loaded for every character will then be replaced with your copy of the script.
]]--
function CreateNewSound(name, id, looped, pitch, parent)
local sound = Instance.new("Sound")
sound.SoundId = id
sound.Name = name
sound.archivable = false
sound.Parent = parent
sound.Pitch = pitch
sound.Looped = looped
sound.MinDistance = 5
sound.MaxDistance = 150
sound.Volume = 0.65
return sound
end
local head = script.Parent:FindFirstChild("Head")
if head == nil then
error("Sound script parent has no child Head.")
return
end
CreateNewSound("GettingUp", "rbxasset://sounds/action_get_up.mp3", false, 1, head)
CreateNewSound("Died", "rbxasset://sounds/uuhhh.mp3", false, 1, head)
CreateNewSound("FreeFalling", "rbxasset://sounds/action_falling.mp3", true, 1, head)
CreateNewSound("Jumping", "rbxasset://sounds/action_jump.mp3", false, 1, head)
CreateNewSound("Landing", "rbxasset://sounds/action_jump_land.mp3", false, 1, head)
CreateNewSound("Splash", "rbxasset://sounds/impact_water.mp3", false, 1, head)
CreateNewSound("Running", "rbxasset://sounds/action_footsteps_plastic.mp3", true, 1.85, head)
CreateNewSound("Swimming", "rbxasset://sounds/action_swim.mp3", true, 1.6, head)
CreateNewSound("Climbing", "rbxasset://sounds/action_footsteps_plastic.mp3", true, 1, head)]]></ProtectedString>
</Properties>
<Item class="LocalScript" referent="RBXcf674087fdd94888aaa89ff050d72c40">
<Properties>
<bool name="Disabled">false</bool>
<Content name="LinkedSource"><null></null></Content>
<string name="Name">LocalSound</string>
<string name="ScriptGuid"></string>
<ProtectedString name="Source"><![CDATA[--[[
Author: @spotco
This script runs locally for the player of the given humanoid.
This script triggers humanoid sound play/pause actions locally.
The Playing/TimePosition properties of Sound objects bypass FilteringEnabled, so this triggers the sound
immediately for the player and is replicated to all other players.
This script is optimized to reduce network traffic through minimizing the amount of property replication.
]]--
--All sounds are referenced by this ID
local SFX = {
Died = 0;
Running = 1;
Swimming = 2;
Climbing = 3,
Jumping = 4;
GettingUp = 5;
FreeFalling = 6;
FallingDown = 7;
Landing = 8;
Splash = 9;
}
local Humanoid = nil
local Head = nil
--SFX ID to Sound object
local Sounds = {}
do
local Figure = script.Parent.Parent
Head = Figure:WaitForChild("Head")
while not Humanoid do
for _,NewHumanoid in pairs(Figure:GetChildren()) do
if NewHumanoid:IsA("Humanoid") then
Humanoid = NewHumanoid
break
end
end
Figure.ChildAdded:wait()
end
Sounds[SFX.Died] = Head:WaitForChild("Died")
Sounds[SFX.Running] = Head:WaitForChild("Running")
Sounds[SFX.Swimming] = Head:WaitForChild("Swimming")
Sounds[SFX.Climbing] = Head:WaitForChild("Climbing")
Sounds[SFX.Jumping] = Head:WaitForChild("Jumping")
Sounds[SFX.GettingUp] = Head:WaitForChild("GettingUp")
Sounds[SFX.FreeFalling] = Head:WaitForChild("FreeFalling")
Sounds[SFX.Landing] = Head:WaitForChild("Landing")
Sounds[SFX.Splash] = Head:WaitForChild("Splash")
end
local Util
Util = {
--Define linear relationship between (pt1x,pt2x) and (pt2x,pt2y). Evaluate this at x.
YForLineGivenXAndTwoPts = function(x,pt1x,pt1y,pt2x,pt2y)
--(y - y1)/(x - x1) = m
local m = (pt1y - pt2y) / (pt1x - pt2x)
--float b = pt1.y - m * pt1.x;
local b = (pt1y - m * pt1x)
return m * x + b
end;
--Clamps the value of "val" between the "min" and "max"
Clamp = function(val,min,max)
return math.min(max,math.max(min,val))
end;
--Gets the horizontal (x,z) velocity magnitude of the given part
HorizontalSpeed = function(Head)
local hVel = Head.Velocity + Vector3.new(0,-Head.Velocity.Y,0)
return hVel.magnitude
end;
--Gets the vertical (y) velocity magnitude of the given part
VerticalSpeed = function(Head)
return math.abs(Head.Velocity.Y)
end;
--Setting Playing/TimePosition values directly result in less network traffic than Play/Pause/Resume/Stop
--If these properties are enabled, use them.
Play = function(sound)
if sound.TimePosition ~= 0 then
sound.TimePosition = 0
end
if not sound.IsPlaying then
sound.Playing = true
end
end;
Pause = function(sound)
if sound.IsPlaying then
sound.Playing = false
end
end;
Resume = function(sound)
if not sound.IsPlaying then
sound.Playing = true
end
end;
Stop = function(sound)
if sound.IsPlaying then
sound.Playing = false
end
if sound.TimePosition ~= 0 then
sound.TimePosition = 0
end
end;
}
do
-- List of all active Looped sounds
local playingLoopedSounds = {}
-- Last seen Enum.HumanoidStateType
local activeState = nil
-- Verify and set that "sound" is in "playingLoopedSounds".
function setSoundInPlayingLoopedSounds(sound)
for i=1, #playingLoopedSounds do
if playingLoopedSounds[i] == sound then
return
end
end
table.insert(playingLoopedSounds,sound)
end
-- Stop all active looped sounds except parameter "except". If "except" is not passed, all looped sounds will be stopped.
function stopPlayingLoopedSoundsExcept(except)
for i=#playingLoopedSounds,1,-1 do
if playingLoopedSounds[i] ~= except then
Util.Pause(playingLoopedSounds[i])
table.remove(playingLoopedSounds,i)
end
end
end
-- Table of Enum.HumanoidStateType to handling function
local stateUpdateHandler = {
[Enum.HumanoidStateType.Dead] = function()
stopPlayingLoopedSoundsExcept()
local sound = Sounds[SFX.Died]
Util.Play(sound)
end;
[Enum.HumanoidStateType.RunningNoPhysics] = function()
stateUpdated(Enum.HumanoidStateType.Running)
end;
[Enum.HumanoidStateType.Running] = function()
local sound = Sounds[SFX.Running]
stopPlayingLoopedSoundsExcept(sound)
if Util.HorizontalSpeed(Head) > 0.5 then
Util.Resume(sound)
setSoundInPlayingLoopedSounds(sound)
else
stopPlayingLoopedSoundsExcept()
end
end;
[Enum.HumanoidStateType.Swimming] = function()
if activeState ~= Enum.HumanoidStateType.Swimming and Util.VerticalSpeed(Head) > 0.1 then
local splashSound = Sounds[SFX.Splash]
splashSound.Volume = Util.Clamp(
Util.YForLineGivenXAndTwoPts(
Util.VerticalSpeed(Head),
100, 0.28,
350, 1),
0,1)
Util.Play(splashSound)
end
do
local sound = Sounds[SFX.Swimming]
stopPlayingLoopedSoundsExcept(sound)
Util.Resume(sound)
setSoundInPlayingLoopedSounds(sound)
end
end;
[Enum.HumanoidStateType.Climbing] = function()
local sound = Sounds[SFX.Climbing]
if Util.VerticalSpeed(Head) > 0.1 then
Util.Resume(sound)
stopPlayingLoopedSoundsExcept(sound)
else
stopPlayingLoopedSoundsExcept()
end
setSoundInPlayingLoopedSounds(sound)
end;
[Enum.HumanoidStateType.Jumping] = function()
if activeState == Enum.HumanoidStateType.Jumping then
return
end
stopPlayingLoopedSoundsExcept()
local sound = Sounds[SFX.Jumping]
Util.Play(sound)
end;
[Enum.HumanoidStateType.GettingUp] = function()
stopPlayingLoopedSoundsExcept()
local sound = Sounds[SFX.GettingUp]
Util.Play(sound)
end;
[Enum.HumanoidStateType.Freefall] = function()
if activeState == Enum.HumanoidStateType.Freefall then
return
end
local sound = Sounds[SFX.FreeFalling]
sound.Volume = 0
stopPlayingLoopedSoundsExcept()
end;
[Enum.HumanoidStateType.FallingDown] = function()
stopPlayingLoopedSoundsExcept()
end;
[Enum.HumanoidStateType.Landed] = function()
stopPlayingLoopedSoundsExcept()
if Util.VerticalSpeed(Head) > 75 then
local landingSound = Sounds[SFX.Landing]
landingSound.Volume = Util.Clamp(
Util.YForLineGivenXAndTwoPts(
Util.VerticalSpeed(Head),
50, 0,
100, 1),
0,1)
Util.Play(landingSound)
end
end;
[Enum.HumanoidStateType.Seated] = function()
stopPlayingLoopedSoundsExcept()
end;
}
-- Handle state event fired or OnChange fired
function stateUpdated(state)
if stateUpdateHandler[state] ~= nil then
stateUpdateHandler[state]()
end
activeState = state
end
Humanoid.Died:connect( function() stateUpdated(Enum.HumanoidStateType.Dead) end)
Humanoid.Running:connect( function() stateUpdated(Enum.HumanoidStateType.Running) end)
Humanoid.Swimming:connect( function() stateUpdated(Enum.HumanoidStateType.Swimming) end)
Humanoid.Climbing:connect( function() stateUpdated(Enum.HumanoidStateType.Climbing) end)
Humanoid.Jumping:connect( function() stateUpdated(Enum.HumanoidStateType.Jumping) end)
Humanoid.GettingUp:connect( function() stateUpdated(Enum.HumanoidStateType.GettingUp) end)
Humanoid.FreeFalling:connect( function() stateUpdated(Enum.HumanoidStateType.Freefall) end)
Humanoid.FallingDown:connect( function() stateUpdated(Enum.HumanoidStateType.FallingDown) end)
-- required for proper handling of Landed event
Humanoid.StateChanged:connect(function(old, new)
stateUpdated(new)
end)
function onUpdate(stepDeltaSeconds, tickSpeedSeconds)
local stepScale = stepDeltaSeconds / tickSpeedSeconds
do
local sound = Sounds[SFX.FreeFalling]
if activeState == Enum.HumanoidStateType.Freefall then
if Head.Velocity.Y < 0 and Util.VerticalSpeed(Head) > 75 then
Util.Resume(sound)
--Volume takes 1.1 seconds to go from volume 0 to 1
local ANIMATION_LENGTH_SECONDS = 1.1
local normalizedIncrement = tickSpeedSeconds / ANIMATION_LENGTH_SECONDS
sound.Volume = Util.Clamp(sound.Volume + normalizedIncrement * stepScale, 0, 1)
else
sound.Volume = 0
end
else
Util.Pause(sound)
end
end
do
local sound = Sounds[SFX.Running]
if activeState == Enum.HumanoidStateType.Running then
if Util.HorizontalSpeed(Head) < 0.5 then
Util.Pause(sound)
end
end
end
end
local lastTick = tick()
local TICK_SPEED_SECONDS = 0.25
while true do
onUpdate(tick() - lastTick,TICK_SPEED_SECONDS)
lastTick = tick()
wait(TICK_SPEED_SECONDS)
end
end
]]></ProtectedString>
</Properties>
</Item>
</Item>
</roblox>
Binary file not shown.
+356
View File
@@ -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.
+89
View File
@@ -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.
+296
View File
@@ -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.roblox.com/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(&quot;Body Colors&quot;)
if not old then return end
old:clone().Parent = char
old.Parent = nil
else
local head = char:findFirstChild(&quot;Head&quot;)
local torso = char:findFirstChild(&quot;Torso&quot;)
local left_arm = char:findFirstChild(&quot;Left Arm&quot;)
local right_arm = char:findFirstChild(&quot;Right Arm&quot;)
local left_leg = char:findFirstChild(&quot;Left Leg&quot;)
local right_leg = char:findFirstChild(&quot;Right Leg&quot;)
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 == &quot;Character&quot; then
onTeamChanged(player)
end
if property== &quot;TeamColor&quot; or property == &quot;Neutral&quot; 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, &quot;Torso&quot;)
local RightShoulder = waitForChild(Torso, &quot;Right Shoulder&quot;)
local LeftShoulder = waitForChild(Torso, &quot;Left Shoulder&quot;)
local RightHip = waitForChild(Torso, &quot;Right Hip&quot;)
local LeftHip = waitForChild(Torso, &quot;Left Hip&quot;)
local Neck = waitForChild(Torso, &quot;Neck&quot;)
local Humanoid = waitForChild(Figure, &quot;Humanoid&quot;)
local pose = &quot;Standing&quot;
local toolAnim = &quot;None&quot;
local toolAnimTime = 0
-- functions
function onRunning(speed)
if speed&gt;0 then
pose = &quot;Running&quot;
else
pose = &quot;Standing&quot;
end
end
function onDied()
pose = &quot;Dead&quot;
end
function onJumping()
pose = &quot;Jumping&quot;
end
function onClimbing()
pose = &quot;Climbing&quot;
end
function onGettingUp()
pose = &quot;GettingUp&quot;
end
function onFreeFall()
pose = &quot;FreeFall&quot;
end
function onFallingDown()
pose = &quot;FallingDown&quot;
end
function onSeated()
pose = &quot;Seated&quot;
end
function onPlatformStanding()
pose = &quot;PlatformStanding&quot;
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 == &quot;Tool&quot; then return kid end
end
return nil
end
function getToolAnim(tool)
for _, c in ipairs(tool:GetChildren()) do
if c.Name == &quot;toolanim&quot; and c.className == &quot;StringValue&quot; then
return c
end
end
return nil
end
function animateTool()
if (toolAnim == &quot;None&quot;) then
RightShoulder:SetDesiredAngle(1.57)
return
end
if (toolAnim == &quot;Slash&quot;) then
RightShoulder.MaxVelocity = 0.5
RightShoulder:SetDesiredAngle(0)
return
end
if (toolAnim == &quot;Lunge&quot;) 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 == &quot;Jumping&quot;) then
moveJump()
return
end
if (pose == &quot;FreeFall&quot;) then
moveFreeFall()
return
end
if (pose == &quot;Seated&quot;) then
moveSit()
return
end
local climbFudge = 0
if (pose == &quot;Running&quot;) then
RightShoulder.MaxVelocity = 0.15
LeftShoulder.MaxVelocity = 0.15
amplitude = 1
frequency = 9
elseif (pose == &quot;Climbing&quot;) 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 &gt; toolAnimTime then
toolAnimTime = 0
toolAnim = &quot;None&quot;
end
animateTool()
else
toolAnim = &quot;None&quot;
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(&quot;RunService&quot;);
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.roblox.com/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, &quot;Torso&quot;)
local RightShoulder = waitForChild(Torso, &quot;Right Shoulder&quot;)
local LeftShoulder = waitForChild(Torso, &quot;Left Shoulder&quot;)
local RightHip = waitForChild(Torso, &quot;Right Hip&quot;)
local LeftHip = waitForChild(Torso, &quot;Left Hip&quot;)
local Neck = waitForChild(Torso, &quot;Neck&quot;)
local Humanoid = waitForChild(Figure, &quot;Humanoid&quot;)
local pose = &quot;Standing&quot;
local toolAnim = &quot;None&quot;
local toolAnimTime = 0
local jumpMaxLimbVelocity = 0.75
-- functions
function onRunning(speed)
if speed&gt;0 then
pose = &quot;Running&quot;
else
pose = &quot;Standing&quot;
end
end
function onDied()
pose = &quot;Dead&quot;
end
function onJumping()
pose = &quot;Jumping&quot;
end
function onClimbing()
pose = &quot;Climbing&quot;
end
function onGettingUp()
pose = &quot;GettingUp&quot;
end
function onFreeFall()
pose = &quot;FreeFall&quot;
end
function onFallingDown()
pose = &quot;FallingDown&quot;
end
function onSeated()
pose = &quot;Seated&quot;
end
function onPlatformStanding()
pose = &quot;PlatformStanding&quot;
end
function onSwimming(speed)
if speed&gt;0 then
pose = &quot;Running&quot;
else
pose = &quot;Standing&quot;
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 == &quot;Tool&quot; then return kid end
end
return nil
end
function getToolAnim(tool)
for _, c in ipairs(tool:GetChildren()) do
if c.Name == &quot;toolanim&quot; and c.className == &quot;StringValue&quot; then
return c
end
end
return nil
end
function animateTool()
if (toolAnim == &quot;None&quot;) then
RightShoulder:SetDesiredAngle(1.57)
return
end
if (toolAnim == &quot;Slash&quot;) then
RightShoulder.MaxVelocity = 0.5
RightShoulder:SetDesiredAngle(0)
return
end
if (toolAnim == &quot;Lunge&quot;) 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 == &quot;Jumping&quot;) then
moveJump()
return
end
if (pose == &quot;FreeFall&quot;) then
moveFreeFall()
return
end
if (pose == &quot;Seated&quot;) then
moveSit()
return
end
local climbFudge = 0
if (pose == &quot;Running&quot;) then
if (RightShoulder.CurrentAngle &gt; 1.5 or RightShoulder.CurrentAngle &lt; -1.5) then
RightShoulder.MaxVelocity = jumpMaxLimbVelocity
else
RightShoulder.MaxVelocity = 0.15
end
if (LeftShoulder.CurrentAngle &gt; 1.5 or LeftShoulder.CurrentAngle &lt; -1.5) then
LeftShoulder.MaxVelocity = jumpMaxLimbVelocity
else
LeftShoulder.MaxVelocity = 0.15
end
amplitude = 1
frequency = 9
elseif (pose == &quot;Climbing&quot;) 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 &gt; toolAnimTime then
toolAnimTime = 0
toolAnim = &quot;None&quot;
end
animateTool()
else
toolAnim = &quot;None&quot;
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(&quot;RunService&quot;);
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(&quot;Body Colors&quot;)
if not old then return end
old:clone().Parent = char
old.Parent = nil
else
local head = char:findFirstChild(&quot;Head&quot;)
local torso = char:findFirstChild(&quot;Torso&quot;)
local left_arm = char:findFirstChild(&quot;Left Arm&quot;)
local right_arm = char:findFirstChild(&quot;Right Arm&quot;)
local left_leg = char:findFirstChild(&quot;Left Leg&quot;)
local right_leg = char:findFirstChild(&quot;Right Leg&quot;)
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 == &quot;Character&quot; then
onTeamChanged(player)
end
if property== &quot;TeamColor&quot; or property == &quot;Neutral&quot; 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.roblox.com/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)
&#9;local child = parent:findFirstChild(childName)
&#9;if child then return child end
&#9;while true do
&#9;&#9;child = parent.ChildAdded:wait()
&#9;&#9;if child.Name==childName then return child end
&#9;end
end
local Figure = script.Parent
local Torso = waitForChild(Figure, &quot;Torso&quot;)
local RightShoulder = waitForChild(Torso, &quot;Right Shoulder&quot;)
local LeftShoulder = waitForChild(Torso, &quot;Left Shoulder&quot;)
local RightHip = waitForChild(Torso, &quot;Right Hip&quot;)
local LeftHip = waitForChild(Torso, &quot;Left Hip&quot;)
local Neck = waitForChild(Torso, &quot;Neck&quot;)
local Humanoid = waitForChild(Figure, &quot;Humanoid&quot;)
local pose = &quot;Standing&quot;
local currentAnim = &quot;&quot;
local currentAnimTrack = nil
local currentAnimKeyframeHandler = nil
local currentAnimSpeed = 1.0
local animTable = {}
local animNames = {
&#9;idle = &#9;{&#9;
&#9;&#9;&#9;&#9;{ id = &quot;http://www.roblox.com/asset/?id=125750544&quot;, weight = 9 },
&#9;&#9;&#9;&#9;{ id = &quot;http://www.roblox.com/asset/?id=125750618&quot;, weight = 1 }
&#9;&#9;&#9;},
&#9;walk = &#9;{ &#9;
&#9;&#9;&#9;&#9;{ id = &quot;http://www.roblox.com/asset/?id=125749145&quot;, weight = 10 }
&#9;&#9;&#9;},
&#9;run = &#9;{
&#9;&#9;&#9;&#9;{ id = &quot;run.xml&quot;, weight = 10 }
&#9;&#9;&#9;},
&#9;jump = &#9;{
&#9;&#9;&#9;&#9;{ id = &quot;http://www.roblox.com/asset/?id=125750702&quot;, weight = 10 }
&#9;&#9;&#9;},
&#9;fall = &#9;{
&#9;&#9;&#9;&#9;{ id = &quot;http://www.roblox.com/asset/?id=125750759&quot;, weight = 10 }
&#9;&#9;&#9;},
&#9;climb = {
&#9;&#9;&#9;&#9;{ id = &quot;http://www.roblox.com/asset/?id=125750800&quot;, weight = 10 }
&#9;&#9;&#9;},
&#9;sit = &#9;{
&#9;&#9;&#9;&#9;{ id = &quot;http://www.roblox.com/asset/?id=178130996&quot;, weight = 10 }
&#9;&#9;&#9;},&#9;
&#9;toolnone = {
&#9;&#9;&#9;&#9;{ id = &quot;http://www.roblox.com/asset/?id=125750867&quot;, weight = 10 }
&#9;&#9;&#9;},
&#9;toolslash = {
&#9;&#9;&#9;&#9;{ id = &quot;http://www.roblox.com/asset/?id=129967390&quot;, weight = 10 }
--&#9;&#9;&#9;&#9;{ id = &quot;slash.xml&quot;, weight = 10 }
&#9;&#9;&#9;},
&#9;toollunge = {
&#9;&#9;&#9;&#9;{ id = &quot;http://www.roblox.com/asset/?id=129967478&quot;, weight = 10 }
&#9;&#9;&#9;},
&#9;wave = {
&#9;&#9;&#9;&#9;{ id = &quot;http://www.roblox.com/asset/?id=128777973&quot;, weight = 10 }
&#9;&#9;&#9;},
&#9;point = {
&#9;&#9;&#9;&#9;{ id = &quot;http://www.roblox.com/asset/?id=128853357&quot;, weight = 10 }
&#9;&#9;&#9;},
&#9;dance = {
&#9;&#9;&#9;&#9;{ id = &quot;http://www.roblox.com/asset/?id=130018893&quot;, weight = 10 },
&#9;&#9;&#9;&#9;{ id = &quot;http://www.roblox.com/asset/?id=132546839&quot;, weight = 10 },
&#9;&#9;&#9;&#9;{ id = &quot;http://www.roblox.com/asset/?id=132546884&quot;, weight = 10 }
&#9;&#9;&#9;},
&#9;dance2 = {
&#9;&#9;&#9;&#9;{ id = &quot;http://www.roblox.com/asset/?id=160934142&quot;, weight = 10 },
&#9;&#9;&#9;&#9;{ id = &quot;http://www.roblox.com/asset/?id=160934298&quot;, weight = 10 },
&#9;&#9;&#9;&#9;{ id = &quot;http://www.roblox.com/asset/?id=160934376&quot;, weight = 10 }
&#9;&#9;&#9;},
&#9;dance3 = {
&#9;&#9;&#9;&#9;{ id = &quot;http://www.roblox.com/asset/?id=160934458&quot;, weight = 10 },
&#9;&#9;&#9;&#9;{ id = &quot;http://www.roblox.com/asset/?id=160934530&quot;, weight = 10 },
&#9;&#9;&#9;&#9;{ id = &quot;http://www.roblox.com/asset/?id=160934593&quot;, weight = 10 }
&#9;&#9;&#9;},
&#9;laugh = {
&#9;&#9;&#9;&#9;{ id = &quot;http://www.roblox.com/asset/?id=129423131&quot;, weight = 10 }
&#9;&#9;&#9;},
&#9;cheer = {
&#9;&#9;&#9;&#9;{ id = &quot;http://www.roblox.com/asset/?id=129423030&quot;, weight = 10 }
&#9;&#9;&#9;},
}
-- 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)
&#9;if (animTable[name] ~= nil) then
&#9;&#9;for _, connection in pairs(animTable[name].connections) do
&#9;&#9;&#9;connection:disconnect()
&#9;&#9;end
&#9;end
&#9;animTable[name] = {}
&#9;animTable[name].count = 0
&#9;animTable[name].totalWeight = 0&#9;
&#9;animTable[name].connections = {}
&#9;-- check for config values
&#9;local config = script:FindFirstChild(name)
&#9;if (config ~= nil) then
--&#9;&#9;print(&quot;Loading anims &quot; .. name)
&#9;&#9;table.insert(animTable[name].connections, config.ChildAdded:connect(function(child) configureAnimationSet(name, fileList) end))
&#9;&#9;table.insert(animTable[name].connections, config.ChildRemoved:connect(function(child) configureAnimationSet(name, fileList) end))
&#9;&#9;local idx = 1
&#9;&#9;for _, childPart in pairs(config:GetChildren()) do
&#9;&#9;&#9;if (childPart:IsA(&quot;Animation&quot;)) then
&#9;&#9;&#9;&#9;table.insert(animTable[name].connections, childPart.Changed:connect(function(property) configureAnimationSet(name, fileList) end))
&#9;&#9;&#9;&#9;animTable[name][idx] = {}
&#9;&#9;&#9;&#9;animTable[name][idx].anim = childPart
&#9;&#9;&#9;&#9;local weightObject = childPart:FindFirstChild(&quot;Weight&quot;)
&#9;&#9;&#9;&#9;if (weightObject == nil) then
&#9;&#9;&#9;&#9;&#9;animTable[name][idx].weight = 1
&#9;&#9;&#9;&#9;else
&#9;&#9;&#9;&#9;&#9;animTable[name][idx].weight = weightObject.Value
&#9;&#9;&#9;&#9;end
&#9;&#9;&#9;&#9;animTable[name].count = animTable[name].count + 1
&#9;&#9;&#9;&#9;animTable[name].totalWeight = animTable[name].totalWeight + animTable[name][idx].weight
&#9;--&#9;&#9;&#9;print(name .. &quot; [&quot; .. idx .. &quot;] &quot; .. animTable[name][idx].anim.AnimationId .. &quot; (&quot; .. animTable[name][idx].weight .. &quot;)&quot;)
&#9;&#9;&#9;&#9;idx = idx + 1
&#9;&#9;&#9;end
&#9;&#9;end
&#9;end
&#9;-- fallback to defaults
&#9;if (animTable[name].count &lt;= 0) then
&#9;&#9;for idx, anim in pairs(fileList) do
&#9;&#9;&#9;animTable[name][idx] = {}
&#9;&#9;&#9;animTable[name][idx].anim = Instance.new(&quot;Animation&quot;)
&#9;&#9;&#9;animTable[name][idx].anim.Name = name
&#9;&#9;&#9;animTable[name][idx].anim.AnimationId = anim.id
&#9;&#9;&#9;animTable[name][idx].weight = anim.weight
&#9;&#9;&#9;animTable[name].count = animTable[name].count + 1
&#9;&#9;&#9;animTable[name].totalWeight = animTable[name].totalWeight + anim.weight
--&#9;&#9;&#9;print(name .. &quot; [&quot; .. idx .. &quot;] &quot; .. anim.id .. &quot; (&quot; .. anim.weight .. &quot;)&quot;)
&#9;&#9;end
&#9;end
end
-- Setup animation objects
function scriptChildModified(child)
&#9;local fileList = animNames[child.Name]
&#9;if (fileList ~= nil) then
&#9;&#9;configureAnimationSet(child.Name, fileList)
&#9;end&#9;
end
script.ChildAdded:connect(scriptChildModified)
script.ChildRemoved:connect(scriptChildModified)
for name, fileList in pairs(animNames) do
&#9;configureAnimationSet(name, fileList)
end&#9;
-- ANIMATION
-- declarations
local toolAnim = &quot;None&quot;
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()
&#9;local oldAnim = currentAnim
&#9;-- return to idle if finishing an emote
&#9;if (emoteNames[oldAnim] ~= nil and emoteNames[oldAnim] == false) then
&#9;&#9;oldAnim = &quot;idle&quot;
&#9;end
&#9;currentAnim = &quot;&quot;
&#9;if (currentAnimKeyframeHandler ~= nil) then
&#9;&#9;currentAnimKeyframeHandler:disconnect()
&#9;end
&#9;if (currentAnimTrack ~= nil) then
&#9;&#9;currentAnimTrack:Stop()
&#9;&#9;currentAnimTrack:Destroy()
&#9;&#9;currentAnimTrack = nil
&#9;end
&#9;return oldAnim
end
function setAnimationSpeed(speed)
&#9;if speed ~= currentAnimSpeed then
&#9;&#9;currentAnimSpeed = speed
&#9;&#9;currentAnimTrack:AdjustSpeed(currentAnimSpeed)
&#9;end
end
function keyFrameReachedFunc(frameName)
&#9;if (frameName == &quot;End&quot;) then
--&#9;&#9;print(&quot;Keyframe : &quot;.. frameName)
&#9;&#9;local repeatAnim = stopAllAnimations()
&#9;&#9;local animSpeed = currentAnimSpeed
&#9;&#9;playAnimation(repeatAnim, 0.0, Humanoid)
&#9;&#9;setAnimationSpeed(animSpeed)
&#9;end
end
-- Preload animations
function playAnimation(animName, transitionTime, humanoid)
&#9;local idleFromEmote = (animName == &quot;idle&quot; and emoteNames[currentAnim] ~= nil)
&#9;if (animName ~= currentAnim and not idleFromEmote) then&#9;&#9;
&#9;&#9;
&#9;&#9;if (currentAnimTrack ~= nil) then
&#9;&#9;&#9;currentAnimTrack:Stop(transitionTime)
&#9;&#9;&#9;currentAnimTrack:Destroy()
&#9;&#9;end
&#9;&#9;currentAnimSpeed = 1.0
&#9;&#9;local roll = math.random(1, animTable[animName].totalWeight)
&#9;&#9;local origRoll = roll
&#9;&#9;local idx = 1
&#9;&#9;while (roll &gt; animTable[animName][idx].weight) do
&#9;&#9;&#9;roll = roll - animTable[animName][idx].weight
&#9;&#9;&#9;idx = idx + 1
&#9;&#9;end
--&#9;&#9;print(animName .. &quot; &quot; .. idx .. &quot; [&quot; .. origRoll .. &quot;]&quot;)
&#9;&#9;local anim = animTable[animName][idx].anim
&#9;&#9;-- load it to the humanoid; get AnimationTrack
&#9;&#9;currentAnimTrack = humanoid:LoadAnimation(anim)
&#9;&#9;
&#9;&#9;-- play the animation
&#9;&#9;currentAnimTrack:Play(transitionTime)
&#9;&#9;currentAnim = animName
&#9;&#9;-- set up keyframe name triggers
&#9;&#9;if (currentAnimKeyframeHandler ~= nil) then
&#9;&#9;&#9;currentAnimKeyframeHandler:disconnect()
&#9;&#9;end
&#9;&#9;currentAnimKeyframeHandler = currentAnimTrack.KeyframeReached:connect(keyFrameReachedFunc)
&#9;end
end
-------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------
local toolAnimName = &quot;&quot;
local toolAnimTrack = nil
local currentToolAnimKeyframeHandler = nil
function toolKeyFrameReachedFunc(frameName)
&#9;if (frameName == &quot;End&quot;) then
--&#9;&#9;print(&quot;Keyframe : &quot;.. frameName)
&#9;&#9;local repeatAnim = stopToolAnimations()
&#9;&#9;playToolAnimation(repeatAnim, 0.0, Humanoid)
&#9;end
end
function playToolAnimation(animName, transitionTime, humanoid)
&#9;if (animName ~= toolAnimName) then&#9;&#9;
&#9;&#9;
&#9;&#9;if (toolAnimTrack ~= nil) then
&#9;&#9;&#9;toolAnimTrack:Stop()
&#9;&#9;&#9;toolAnimTrack:Destroy()
&#9;&#9;&#9;transitionTime = 0
&#9;&#9;end
&#9;&#9;local roll = math.random(1, animTable[animName].totalWeight)
&#9;&#9;local origRoll = roll
&#9;&#9;local idx = 1
&#9;&#9;while (roll &gt; animTable[animName][idx].weight) do
&#9;&#9;&#9;roll = roll - animTable[animName][idx].weight
&#9;&#9;&#9;idx = idx + 1
&#9;&#9;end
--&#9;&#9;print(animName .. &quot; * &quot; .. idx .. &quot; [&quot; .. origRoll .. &quot;]&quot;)
&#9;&#9;local anim = animTable[animName][idx].anim
&#9;&#9;-- load it to the humanoid; get AnimationTrack
&#9;&#9;toolAnimTrack = humanoid:LoadAnimation(anim)
&#9;&#9;
&#9;&#9;-- play the animation
&#9;&#9;toolAnimTrack:Play(transitionTime)
&#9;&#9;toolAnimName = animName
&#9;&#9;currentToolAnimKeyframeHandler = toolAnimTrack.KeyframeReached:connect(toolKeyFrameReachedFunc)
&#9;end
end
function stopToolAnimations()
&#9;local oldAnim = toolAnimName
&#9;if (currentToolAnimKeyframeHandler ~= nil) then
&#9;&#9;currentToolAnimKeyframeHandler:disconnect()
&#9;end
&#9;toolAnimName = &quot;&quot;
&#9;if (toolAnimTrack ~= nil) then
&#9;&#9;toolAnimTrack:Stop()
&#9;&#9;toolAnimTrack:Destroy()
&#9;&#9;toolAnimTrack = nil
&#9;end
&#9;return oldAnim
end
-------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------
function onRunning(speed)
&#9;if speed&gt;0.5 then
&#9;&#9;playAnimation(&quot;walk&quot;, 0.1, Humanoid)
&#9;&#9;pose = &quot;Running&quot;
&#9;else
&#9;&#9;playAnimation(&quot;idle&quot;, 0.1, Humanoid)
&#9;&#9;pose = &quot;Standing&quot;
&#9;end
end
function onDied()
&#9;pose = &quot;Dead&quot;
end
function onJumping()
&#9;playAnimation(&quot;jump&quot;, 0.1, Humanoid)
&#9;jumpAnimTime = jumpAnimDuration
&#9;pose = &quot;Jumping&quot;
end
function onClimbing(speed)
&#9;playAnimation(&quot;climb&quot;, 0.1, Humanoid)
&#9;setAnimationSpeed(speed / 12.0)
&#9;pose = &quot;Climbing&quot;
end
function onGettingUp()
&#9;pose = &quot;GettingUp&quot;
end
function onFreeFall()
&#9;if (jumpAnimTime &lt;= 0) then
&#9;&#9;playAnimation(&quot;fall&quot;, fallTransitionTime, Humanoid)
&#9;end
&#9;pose = &quot;FreeFall&quot;
end
function onFallingDown()
&#9;pose = &quot;FallingDown&quot;
end
function onSeated()
&#9;pose = &quot;Seated&quot;
end
function onPlatformStanding()
&#9;pose = &quot;PlatformStanding&quot;
end
function onSwimming(speed)
&#9;if speed&gt;0 then
&#9;&#9;pose = &quot;Running&quot;
&#9;else
&#9;&#9;pose = &quot;Standing&quot;
&#9;end
end
function getTool()&#9;
&#9;for _, kid in ipairs(Figure:GetChildren()) do
&#9;&#9;if kid.className == &quot;Tool&quot; then return kid end
&#9;end
&#9;return nil
end
function getToolAnim(tool)
&#9;for _, c in ipairs(tool:GetChildren()) do
&#9;&#9;if c.Name == &quot;toolanim&quot; and c.className == &quot;StringValue&quot; then
&#9;&#9;&#9;return c
&#9;&#9;end
&#9;end
&#9;return nil
end
function animateTool()
&#9;
&#9;if (toolAnim == &quot;None&quot;) then
&#9;&#9;playToolAnimation(&quot;toolnone&quot;, toolTransitionTime, Humanoid)
&#9;&#9;return
&#9;end
&#9;if (toolAnim == &quot;Slash&quot;) then
&#9;&#9;playToolAnimation(&quot;toolslash&quot;, 0, Humanoid)
&#9;&#9;return
&#9;end
&#9;if (toolAnim == &quot;Lunge&quot;) then
&#9;&#9;playToolAnimation(&quot;toollunge&quot;, 0, Humanoid)
&#9;&#9;return
&#9;end
end
function moveSit()
&#9;RightShoulder.MaxVelocity = 0.15
&#9;LeftShoulder.MaxVelocity = 0.15
&#9;RightShoulder:SetDesiredAngle(3.14 /2)
&#9;LeftShoulder:SetDesiredAngle(-3.14 /2)
&#9;RightHip:SetDesiredAngle(3.14 /2)
&#9;LeftHip:SetDesiredAngle(-3.14 /2)
end
local lastTick = 0
function move(time)
&#9;local amplitude = 1
&#9;local frequency = 1
&#9;local deltaTime = time - lastTick
&#9;lastTick = time
&#9;local climbFudge = 0
&#9;local setAngles = false
&#9;if (jumpAnimTime &gt; 0) then
&#9;&#9;jumpAnimTime = jumpAnimTime - deltaTime
&#9;end
&#9;if (pose == &quot;FreeFall&quot; and jumpAnimTime &lt;= 0) then
&#9;&#9;playAnimation(&quot;fall&quot;, fallTransitionTime, Humanoid)
&#9;elseif (pose == &quot;Seated&quot;) then
&#9;&#9;playAnimation(&quot;sit&quot;, 0.5, Humanoid)
&#9;&#9;return
&#9;elseif (pose == &quot;Running&quot;) then
&#9;&#9;playAnimation(&quot;walk&quot;, 0.1, Humanoid)
&#9;elseif (pose == &quot;Dead&quot; or pose == &quot;GettingUp&quot; or pose == &quot;FallingDown&quot; or pose == &quot;Seated&quot; or pose == &quot;PlatformStanding&quot;) then
--&#9;&#9;print(&quot;Wha &quot; .. pose)
&#9;&#9;stopAllAnimations()
&#9;&#9;amplitude = 0.1
&#9;&#9;frequency = 1
&#9;&#9;setAngles = true
&#9;end
&#9;if (setAngles) then
&#9;&#9;desiredAngle = amplitude * math.sin(time * frequency)
&#9;&#9;RightShoulder:SetDesiredAngle(desiredAngle + climbFudge)
&#9;&#9;LeftShoulder:SetDesiredAngle(desiredAngle - climbFudge)
&#9;&#9;RightHip:SetDesiredAngle(-desiredAngle)
&#9;&#9;LeftHip:SetDesiredAngle(-desiredAngle)
&#9;end
&#9;-- Tool Animation handling
&#9;local tool = getTool()
&#9;if tool then
&#9;
&#9;&#9;animStringValueObject = getToolAnim(tool)
&#9;&#9;if animStringValueObject then
&#9;&#9;&#9;toolAnim = animStringValueObject.Value
&#9;&#9;&#9;-- message recieved, delete StringValue
&#9;&#9;&#9;animStringValueObject.Parent = nil
&#9;&#9;&#9;toolAnimTime = time + .3
&#9;&#9;end
&#9;&#9;if time &gt; toolAnimTime then
&#9;&#9;&#9;toolAnimTime = 0
&#9;&#9;&#9;toolAnim = &quot;None&quot;
&#9;&#9;end
&#9;&#9;animateTool()&#9;&#9;
&#9;else
&#9;&#9;stopToolAnimations()
&#9;&#9;toolAnim = &quot;None&quot;
&#9;&#9;toolAnimTime = 0
&#9;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)
&#9;local emote = &quot;&quot;
&#9;if (string.sub(msg, 1, 3) == &quot;/e &quot;) then
&#9;&#9;emote = string.sub(msg, 4)
&#9;elseif (string.sub(msg, 1, 7) == &quot;/emote &quot;) then
&#9;&#9;emote = string.sub(msg, 8)
&#9;end
&#9;
&#9;if (pose == &quot;Standing&quot; and emoteNames[emote] ~= nil) then
&#9;&#9;playAnimation(emote, 0.1, Humanoid)
&#9;end
--&#9;print(&quot;===&gt; &quot; .. string.sub(msg, 1, 3) .. &quot;(&quot; .. emote .. &quot;)&quot;)
end)
-- main program
local runService = game:service(&quot;RunService&quot;);
-- initialize to idle
playAnimation(&quot;idle&quot;, 0.1, Humanoid)
pose = &quot;Standing&quot;
while Figure.Parent~=nil do
&#9;local _, time = wait(0.1)
&#9;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.roblox.com/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.roblox.com/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.roblox.com/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.roblox.com/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.roblox.com/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.roblox.com/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.roblox.com/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.roblox.com/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.roblox.com/asset/?id=178130996</url></Content>
<string name="Name">SitAnim</string>
</Properties>
</Item>
</Item>
</Item>
</roblox>
@@ -0,0 +1,673 @@
<roblox xmlns:xmime="http://www.w3.org/2005/05/xmlmime" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://www.roblox.com/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.roblox.com/asset/?id=180435571", weight = 9 },
{ id = "http://www.roblox.com/asset/?id=180435792", weight = 1 }
},
walk = {
{ id = "http://www.roblox.com/asset/?id=180426354", weight = 10 }
},
run = {
{ id = "run.xml", weight = 10 }
},
jump = {
{ id = "http://www.roblox.com/asset/?id=125750702", weight = 10 }
},
fall = {
{ id = "http://www.roblox.com/asset/?id=180436148", weight = 10 }
},
climb = {
{ id = "http://www.roblox.com/asset/?id=180436334", weight = 10 }
},
sit = {
{ id = "http://www.roblox.com/asset/?id=178130996", weight = 10 }
},
toolnone = {
{ id = "http://www.roblox.com/asset/?id=182393478", weight = 10 }
},
toolslash = {
{ id = "http://www.roblox.com/asset/?id=129967390", weight = 10 }
-- { id = "slash.xml", weight = 10 }
},
toollunge = {
{ id = "http://www.roblox.com/asset/?id=129967478", weight = 10 }
},
wave = {
{ id = "http://www.roblox.com/asset/?id=128777973", weight = 10 }
},
point = {
{ id = "http://www.roblox.com/asset/?id=128853357", weight = 10 }
},
dance1 = {
{ id = "http://www.roblox.com/asset/?id=182435998", weight = 10 },
{ id = "http://www.roblox.com/asset/?id=182491037", weight = 10 },
{ id = "http://www.roblox.com/asset/?id=182491065", weight = 10 }
},
dance2 = {
{ id = "http://www.roblox.com/asset/?id=182436842", weight = 10 },
{ id = "http://www.roblox.com/asset/?id=182491248", weight = 10 },
{ id = "http://www.roblox.com/asset/?id=182491277", weight = 10 }
},
dance3 = {
{ id = "http://www.roblox.com/asset/?id=11669649889", weight = 10 },
{ id = "http://www.roblox.com/asset/?id=11669649889", weight = 10 },
{ id = "http://www.roblox.com/asset/?id=11669649889", weight = 10 }
},
laugh = {
{ id = "http://www.roblox.com/asset/?id=129423131", weight = 10 }
},
cheer = {
{ id = "http://www.roblox.com/asset/?id=129423030", weight = 10 }
},
gmod = {
{ id = "http://www.roblox.com/asset/?id=11669649889", weight = 10 }
},
}
local dances = {"dance1", "dance2", "dance3", "gmod"}
-- 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.roblox.com/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.roblox.com/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.roblox.com/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.roblox.com/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.roblox.com/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.roblox.com/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.roblox.com/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.roblox.com/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.roblox.com/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.roblox.com/asset/?id=178130996</url></Content>
<string name="Name">SitAnim</string>
</Properties>
</Item>
</Item>
</Item>
</roblox>
+669
View File
@@ -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.roblox.com/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.roblox.com/asset/?id=434419018", weight = 10 }
},
toolnone = {
{ id = "http://www.roblox.com/asset/?id=434419638", weight = 10 }
},
toolslash = {
{ id = "http://www.roblox.com/asset/?id=434419638", weight = 10 }
-- { id = "slash.xml", weight = 10 }
},
toollunge = {
{ id = "http://www.roblox.com/asset/?id=434419638", weight = 10 }
},
wave = {
{ id = "http://www.roblox.com/asset/?id=434420105", weight = 10 }
},
point = {
{ id = "http://www.roblox.com/asset/?id=434420378", weight = 10 }
},
dance = {
{ id = "http://www.roblox.com/asset/?id=434422187", weight = 10 },
{ id = "http://www.roblox.com/asset/?id=434422809", weight = 10 },
{ id = "http://www.roblox.com/asset/?id=434423133", weight = 10 }
},
dance2 = {
{ id = "http://www.roblox.com/asset/?id=434423431", weight = 10 },
{ id = "http://www.roblox.com/asset/?id=434424210", weight = 10 },
{ id = "http://www.roblox.com/asset/?id=434424519", weight = 10 }
},
dance3 = {
{ id = "http://www.roblox.com/asset/?id=434424825", weight = 10 },
{ id = "http://www.roblox.com/asset/?id=434425108", weight = 10 },
{ id = "http://www.roblox.com/asset/?id=434425599", weight = 10 }
},
laugh = {
{ id = "http://www.roblox.com/asset/?id=434421799", weight = 10 }
},
cheer = {
{ id = "http://www.roblox.com/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.roblox.com/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.roblox.com/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.roblox.com/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.roblox.com/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.roblox.com/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.roblox.com/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.roblox.com/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.roblox.com/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.roblox.com/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.roblox.com/asset/?id=387947975</url></Content>
<string name="Name">WalkAnim</string>
</Properties>
</Item>
</Item>
</Item>
</roblox>
@@ -0,0 +1,694 @@
<roblox xmlns:xmime="http://www.w3.org/2005/05/xmlmime" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://www.roblox.com/roblox.xsd" version="4">
<External>null</External>
<External>nil</External>
<Item class="LocalScript" referent="RBX81CCF0D8D0524CB6BEE9B255C92169B0">
<Properties>
<bool name="Disabled">false</bool>
<Content name="LinkedSource"><null></null></Content>
<string name="Name">Animate</string>
<string name="ScriptGuid"></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 = "http://www.roblox.com/asset/?id=507766666", weight = 1 },
{ id = "http://www.roblox.com/asset/?id=507766951", weight = 1 },
{ id = "http://www.roblox.com/asset/?id=507766388", weight = 9 }
},
walk = {
{ id = "http://www.roblox.com/asset/?id=507777826", weight = 10 }
},
run = {
{ id = "http://www.roblox.com/asset/?id=507767714", weight = 10 }
},
swim = {
{ id = "http://www.roblox.com/asset/?id=507784897", weight = 10 }
},
swimidle = {
{ id = "http://www.roblox.com/asset/?id=507785072", weight = 10 }
},
jump = {
{ id = "http://www.roblox.com/asset/?id=507765000", weight = 10 }
},
fall = {
{ id = "http://www.roblox.com/asset/?id=507767968", weight = 10 }
},
climb = {
{ id = "http://www.roblox.com/asset/?id=507765644", weight = 10 }
},
sit = {
{ id = "http://www.roblox.com/asset/?id=507768133", weight = 10 }
},
toolnone = {
{ id = "http://www.roblox.com/asset/?id=507768375", weight = 10 }
},
toolslash = {
{ id = "http://www.roblox.com/asset/?id=507768375", weight = 10 }
-- { id = "slash.xml", weight = 10 }
},
toollunge = {
{ id = "http://www.roblox.com/asset/?id=507768375", weight = 10 }
},
wave = {
{ id = "http://www.roblox.com/asset/?id=507770239", weight = 10 }
},
point = {
{ id = "http://www.roblox.com/asset/?id=507770453", weight = 10 }
},
dance = {
{ id = "http://www.roblox.com/asset/?id=507771019", weight = 10 },
{ id = "http://www.roblox.com/asset/?id=507771955", weight = 10 },
{ id = "http://www.roblox.com/asset/?id=507772104", weight = 10 }
},
dance2 = {
{ id = "http://www.roblox.com/asset/?id=507776043", weight = 10 },
{ id = "http://www.roblox.com/asset/?id=507776720", weight = 10 },
{ id = "http://www.roblox.com/asset/?id=507776879", weight = 10 }
},
dance3 = {
{ id = "http://www.roblox.com/asset/?id=507777268", weight = 10 },
{ id = "http://www.roblox.com/asset/?id=507777451", weight = 10 },
{ id = "http://www.roblox.com/asset/?id=507777623", weight = 10 }
},
laugh = {
{ id = "http://www.roblox.com/asset/?id=507770818", weight = 10 }
},
cheer = {
{ id = "http://www.roblox.com/asset/?id=507770677", 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
if emoteNames[currentAnim] == nil then
playAnimation("idle", 0.1, Humanoid)
pose = "Standing"
end
end
end
function onDied()
pose = "Dead"
end
function onJumping()
playAnimation("jump", 0.1, Humanoid)
jumpAnimTime = jumpAnimDuration
pose = "Jumping"
end
function onClimbing(speed)
local scale = 5.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 > 1.00 then
local scale = 10.0
playAnimation("swim", 0.4, Humanoid)
setAnimationSpeed(speed / scale)
pose = "Swimming"
else
playAnimation("swimidle", 0.4, Humanoid)
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 and (tool.RequiresHandle or 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 (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="RBX90D2310F3499411E93EB705C595332F9">
<Properties>
<string name="Name">climb</string>
<string name="Value"></string>
</Properties>
<Item class="Animation" referent="RBX751435404EDA413F989EFDB61AEF83F7">
<Properties>
<Content name="AnimationId"><url>http://www.roblox.com/asset/?id=507765644</url></Content>
<string name="Name">ClimbAnim</string>
</Properties>
</Item>
</Item>
<Item class="StringValue" referent="RBX4122099F3058463B8CDC84F8F14A4DE8">
<Properties>
<string name="Name">fall</string>
<string name="Value"></string>
</Properties>
<Item class="Animation" referent="RBX01328E496CA74035ABDDB9ABDBAAE17E">
<Properties>
<Content name="AnimationId"><url>http://www.roblox.com/asset/?id=507767968</url></Content>
<string name="Name">FallAnim</string>
</Properties>
</Item>
</Item>
<Item class="StringValue" referent="RBXEA4D0413A91A40A9ADEFA6C743F90AE6">
<Properties>
<string name="Name">idle</string>
<string name="Value"></string>
</Properties>
<Item class="Animation" referent="RBX413BED0D35534B4793F4941F3F252FD1">
<Properties>
<Content name="AnimationId"><url>http://www.roblox.com/asset/?id=507766388</url></Content>
<string name="Name">Animation1</string>
</Properties>
<Item class="NumberValue" referent="RBX79C9D1CBC12148508B2E98CEF424F7DA">
<Properties>
<string name="Name">Weight</string>
<double name="Value">9</double>
</Properties>
</Item>
</Item>
<Item class="Animation" referent="RBXB64911DB20F2424684C3C387151F94F5">
<Properties>
<Content name="AnimationId"><url>http://www.roblox.com/asset/?id=507766666</url></Content>
<string name="Name">Animation2</string>
</Properties>
<Item class="NumberValue" referent="RBX398CD5B511D1422CA1BAAA4265B163F0">
<Properties>
<string name="Name">Weight</string>
<double name="Value">1</double>
</Properties>
</Item>
</Item>
</Item>
<Item class="StringValue" referent="RBX158746ACDD45430AAF15FE4577B348C7">
<Properties>
<string name="Name">jump</string>
<string name="Value"></string>
</Properties>
<Item class="Animation" referent="RBXC751033764264CA994C549E8E36BD20E">
<Properties>
<Content name="AnimationId"><url>http://www.roblox.com/asset/?id=507765000</url></Content>
<string name="Name">JumpAnim</string>
</Properties>
</Item>
</Item>
<Item class="StringValue" referent="RBXE3EC2CBB21DB4724B90E26E7DA569406">
<Properties>
<string name="Name">run</string>
<string name="Value"></string>
</Properties>
<Item class="Animation" referent="RBXE0AB7B279EAF4E0DA8FD148C57A5A3C8">
<Properties>
<Content name="AnimationId"><url>http://www.roblox.com/asset/?id=5077677142</url></Content>
<string name="Name">RunAnim</string>
</Properties>
</Item>
</Item>
<Item class="StringValue" referent="RBX8A1B8319AEB349469497F7943F9ACBB7">
<Properties>
<string name="Name">sit</string>
<string name="Value"></string>
</Properties>
<Item class="Animation" referent="RBX867339DE035842B4AD88EFAF3625BB49">
<Properties>
<Content name="AnimationId"><url>http://www.roblox.com/asset/?id=507768133</url></Content>
<string name="Name">SitAnim</string>
</Properties>
</Item>
</Item>
<Item class="StringValue" referent="RBXBC54151A25964CED8370B5C005DD8954">
<Properties>
<string name="Name">toolnone</string>
<string name="Value"></string>
</Properties>
<Item class="Animation" referent="RBXD27FB2FCA91E477385E032E6EAD5BD0E">
<Properties>
<Content name="AnimationId"><url>http://www.roblox.com/asset/?id=507768375</url></Content>
<string name="Name">ToolNoneAnim</string>
</Properties>
</Item>
</Item>
<Item class="StringValue" referent="RBX28DA1B6A565F47459169C87D967D6BEC">
<Properties>
<string name="Name">walk</string>
<string name="Value"></string>
</Properties>
<Item class="Animation" referent="RBX51AA2F25CCAB4C4AB610DBE6A384431F">
<Properties>
<Content name="AnimationId"><url>http://www.roblox.com/asset/?id=507777826</url></Content>
<string name="Name">RunAnim</string>
</Properties>
</Item>
</Item>
<Item class="StringValue" referent="RBX37CBFD72FD56488795BD5EB96194EC7F">
<Properties>
<string name="Name">swimidle</string>
<string name="Value"></string>
</Properties>
<Item class="Animation" referent="RBXE057EB1ABC264C799380EB10C18B6E7B">
<Properties>
<Content name="AnimationId"><url>http://www.roblox.com/asset/?id=481825862</url></Content>
<string name="Name">SwimIdle</string>
</Properties>
</Item>
</Item>
<Item class="StringValue" referent="RBX6589FFEFB5CD453A9CC3C3943029E170">
<Properties>
<string name="Name">swim</string>
<string name="Value"></string>
</Properties>
<Item class="Animation" referent="RBX6FC3A2465C0D41BDBB1DAE559068EDE7">
<Properties>
<Content name="AnimationId"><url>http://www.roblox.com/asset/?id=507784897</url></Content>
<string name="Name">Swim</string>
</Properties>
</Item>
</Item>
</Item>
</roblox>
@@ -0,0 +1,942 @@
<roblox xmlns:xmime="http://www.w3.org/2005/05/xmlmime" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://www.roblox.com/roblox.xsd" version="4">
<External>null</External>
<External>nil</External>
<Item class="LocalScript" referent="RBX980D00D6910F408F981BBC8F0BA9B344">
<Properties>
<bool name="Disabled">false</bool>
<Content name="LinkedSource"><null></null></Content>
<string name="Name">Animate</string>
<string name="ScriptGuid"></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 runAnimTrack = nil
local runAnimKeyframeHandler = nil
local animTable = {}
local animNames = {
idle = {
{ id = "http://www.roblox.com/asset/?id=507766666", weight = 1 },
{ id = "http://www.roblox.com/asset/?id=507766951", weight = 1 },
{ id = "http://www.roblox.com/asset/?id=507766388", weight = 9 }
},
walk = {
{ id = "http://www.roblox.com/asset/?id=507777826", weight = 10 }
},
run = {
{ id = "http://www.roblox.com/asset/?id=507767714", weight = 10 }
},
swim = {
{ id = "http://www.roblox.com/asset/?id=507784897", weight = 10 }
},
swimidle = {
{ id = "http://www.roblox.com/asset/?id=507785072", weight = 10 }
},
jump = {
{ id = "http://www.roblox.com/asset/?id=507765000", weight = 10 }
},
fall = {
{ id = "http://www.roblox.com/asset/?id=507767968", weight = 10 }
},
climb = {
{ id = "http://www.roblox.com/asset/?id=507765644", weight = 10 }
},
sit = {
{ id = "http://www.roblox.com/asset/?id=507768133", weight = 10 }
},
toolnone = {
{ id = "http://www.roblox.com/asset/?id=507768375", weight = 10 }
},
toolslash = {
{ id = "http://www.roblox.com/asset/?id=507768375", weight = 10 }
-- { id = "slash.xml", weight = 10 }
},
toollunge = {
{ id = "http://www.roblox.com/asset/?id=507768375", weight = 10 }
},
wave = {
{ id = "http://www.roblox.com/asset/?id=507770239", weight = 10 }
},
point = {
{ id = "http://www.roblox.com/asset/?id=507770453", weight = 10 }
},
dance = {
{ id = "http://www.roblox.com/asset/?id=507771019", weight = 10 },
{ id = "http://www.roblox.com/asset/?id=507771955", weight = 10 },
{ id = "http://www.roblox.com/asset/?id=507772104", weight = 10 }
},
dance2 = {
{ id = "http://www.roblox.com/asset/?id=507776043", weight = 10 },
{ id = "http://www.roblox.com/asset/?id=507776720", weight = 10 },
{ id = "http://www.roblox.com/asset/?id=507776879", weight = 10 }
},
dance3 = {
{ id = "http://www.roblox.com/asset/?id=507777268", weight = 10 },
{ id = "http://www.roblox.com/asset/?id=507777451", weight = 10 },
{ id = "http://www.roblox.com/asset/?id=507777623", weight = 10 }
},
laugh = {
{ id = "http://www.roblox.com/asset/?id=507770818", weight = 10 }
},
cheer = {
{ id = "http://www.roblox.com/asset/?id=507770677", 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
-- clean up walk if there is one
if (runAnimKeyframeHandler ~= nil) then
runAnimKeyframeHandler:disconnect()
end
if (runAnimTrack ~= nil) then
runAnimTrack:Stop()
runAnimTrack:Destroy()
runAnimTrack = nil
end
return oldAnim
end
local smallButNotZero = 0.0001
function setRunSpeed(speed)
if speed < 0.33 then
currentAnimTrack:AdjustWeight(1.0)
runAnimTrack:AdjustWeight(smallButNotZero)
elseif speed < 0.66 then
local weight = ((speed - 0.33) / 0.33)
currentAnimTrack:AdjustWeight(1.0 - weight + smallButNotZero)
runAnimTrack:AdjustWeight(weight + smallButNotZero)
else
currentAnimTrack:AdjustWeight(smallButNotZero)
runAnimTrack:AdjustWeight(1.0)
end
local speedScaled = speed * 1.25
runAnimTrack:AdjustSpeed(speedScaled)
currentAnimTrack:AdjustSpeed(speedScaled)
end
function setAnimationSpeed(speed)
if speed ~= currentAnimSpeed then
currentAnimSpeed = speed
if currentAnim == "walk" then
setRunSpeed(speed)
else
currentAnimTrack:AdjustSpeed(currentAnimSpeed)
end
end
end
function keyFrameReachedFunc(frameName)
-- print("CurrentAnim ", currentAnim, " ", frameName)
if (frameName == "End") then
if currentAnim == "walk" then
runAnimTrack.TimePosition = 0.0
currentAnimTrack.TimePosition = 0.0
else
-- 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
end
function rollAnimation(animName)
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
return idx
end
function playAnimation(animName, transitionTime, humanoid)
local idx = rollAnimation(animName)
-- 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
if (runAnimTrack ~= nil) then
runAnimTrack:Stop(transitionTime)
runAnimTrack: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)
-- check to see if we need to blend a walk/run animation
if animName == "walk" then
local runAnimName = "run"
local runIdx = rollAnimation(runAnimName)
runAnimTrack = humanoid:LoadAnimation(animTable[runAnimName][runIdx].anim)
runAnimTrack:Play(transitionTime)
if (runAnimKeyframeHandler ~= nil) then
runAnimKeyframeHandler:disconnect()
end
runAnimKeyframeHandler = runAnimTrack.KeyframeReached:connect(keyFrameReachedFunc)
end
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 idx = rollAnimation(animName)
-- 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 = 16.0
playAnimation("walk", 0.1, Humanoid)
setAnimationSpeed(speed / scale)
pose = "Running"
else
if emoteNames[currentAnim] == nil then
playAnimation("idle", 0.1, Humanoid)
pose = "Standing"
end
end
end
function onDied()
pose = "Dead"
end
function onJumping()
playAnimation("jump", 0.1, Humanoid)
jumpAnimTime = jumpAnimDuration
pose = "Jumping"
end
function onClimbing(speed)
local scale = 5.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 > 1.00 then
local scale = 10.0
playAnimation("swim", 0.4, Humanoid)
setAnimationSpeed(speed / scale)
pose = "Swimming"
else
playAnimation("swimidle", 0.4, Humanoid)
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 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 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
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
local 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)
-- initialize to idle
playAnimation("idle", 0.1, Humanoid)
pose = "Standing"
-- loop to handle timed state transitions and tool animations
while Figure.Parent~=nil do
local _, time = wait(0.1)
move(time)
end
]]></ProtectedString>
</Properties>
<Item class="StringValue" referent="RBX8B778A72BCBF4ACB8696D8C5A38B6E83">
<Properties>
<string name="Name">climb</string>
<string name="Value"></string>
</Properties>
<Item class="Animation" referent="RBXD74196C64A4A414E85E1862FB322BCAC">
<Properties>
<Content name="AnimationId"><url>http://www.roblox.com/asset/?id=507765644</url></Content>
<string name="Name">ClimbAnim</string>
</Properties>
</Item>
</Item>
<Item class="StringValue" referent="RBX928CEDB1BFED487AA543BA482976A985">
<Properties>
<string name="Name">fall</string>
<string name="Value"></string>
</Properties>
<Item class="Animation" referent="RBX031D73ED004E4A33927224B4919609F0">
<Properties>
<Content name="AnimationId"><url>http://www.roblox.com/asset/?id=507767968</url></Content>
<string name="Name">FallAnim</string>
</Properties>
</Item>
</Item>
<Item class="StringValue" referent="RBXA494D4E93F9847F89A9402026287C007">
<Properties>
<string name="Name">idle</string>
<string name="Value"></string>
</Properties>
<Item class="Animation" referent="RBX1D83AA3674B5426E917DE58F21AD87B6">
<Properties>
<Content name="AnimationId"><url>http://www.roblox.com/asset/?id=507766388</url></Content>
<string name="Name">Animation1</string>
</Properties>
<Item class="NumberValue" referent="RBXC51E8CA58EBB4E2FBE6C29AC7CB459EA">
<Properties>
<string name="Name">Weight</string>
<double name="Value">9</double>
</Properties>
</Item>
</Item>
<Item class="Animation" referent="RBX370A7EC91BE94BFEA920D6DD82B5DBBD">
<Properties>
<Content name="AnimationId"><url>http://www.roblox.com/asset/?id=507766666</url></Content>
<string name="Name">Animation2</string>
</Properties>
<Item class="NumberValue" referent="RBX558D7AA1389F4C6F8DE31F704F8C4575">
<Properties>
<string name="Name">Weight</string>
<double name="Value">1</double>
</Properties>
</Item>
</Item>
</Item>
<Item class="StringValue" referent="RBX6B204E5BF017427C8149141368DF0CCF">
<Properties>
<string name="Name">jump</string>
<string name="Value"></string>
</Properties>
<Item class="Animation" referent="RBX2EC0C03F466D4763B69F30C89FCF2B47">
<Properties>
<Content name="AnimationId"><url>http://www.roblox.com/asset/?id=507765000</url></Content>
<string name="Name">JumpAnim</string>
</Properties>
</Item>
</Item>
<Item class="StringValue" referent="RBX62F3FD55984848F1A96A7DB1913CF17E">
<Properties>
<string name="Name">run</string>
<string name="Value"></string>
</Properties>
<Item class="Animation" referent="RBX658DCBD687FC42AAB1FCF76F46730A8C">
<Properties>
<Content name="AnimationId"><url>http://www.roblox.com/asset/?id=507767714</url></Content>
<string name="Name">RunAnim</string>
</Properties>
</Item>
</Item>
<Item class="StringValue" referent="RBX2FE204914EE043A89D62442E82365571">
<Properties>
<string name="Name">sit</string>
<string name="Value"></string>
</Properties>
<Item class="Animation" referent="RBXAB6D8B0D7C9249F6B4D472B5F2267200">
<Properties>
<Content name="AnimationId"><url>http://www.roblox.com/asset/?id=507768133</url></Content>
<string name="Name">SitAnim</string>
</Properties>
</Item>
</Item>
<Item class="StringValue" referent="RBX9457B9D2E87D40B89760E538A71F3039">
<Properties>
<string name="Name">toollunge</string>
<string name="Value"></string>
</Properties>
<Item class="Animation" referent="RBXCF6FEED13778435BAB1847FB03DF8AD8">
<Properties>
<Content name="AnimationId"><url>http://www.roblox.com/asset/?id=507768375</url></Content>
<string name="Name">ToolLungeAnim</string>
</Properties>
</Item>
</Item>
<Item class="StringValue" referent="RBXE60446BE714E4BBDBC4CE151F5212861">
<Properties>
<string name="Name">walk</string>
<string name="Value"></string>
</Properties>
<Item class="Animation" referent="RBX7EA30331FA0B479C9BDB302BA01F2419">
<Properties>
<Content name="AnimationId"><url>http://www.roblox.com/asset/?id=540798782</url></Content>
<string name="Name">WalkAnim</string>
</Properties>
</Item>
</Item>
<Item class="StringValue" referent="RBX5EA7F5420B9E4B4CA7E3730B24262BAF">
<Properties>
<string name="Name">swimidle</string>
<string name="Value"></string>
</Properties>
<Item class="Animation" referent="RBX5FD148051EF5456FA4E349FB28AC0C22">
<Properties>
<Content name="AnimationId"><url>http://www.roblox.com/asset/?id=481825862</url></Content>
<string name="Name">SwimIdle</string>
</Properties>
</Item>
</Item>
<Item class="StringValue" referent="RBX6FDDF6C9EEF6406C8D7282785DFB78CD">
<Properties>
<string name="Name">swim</string>
<string name="Value"></string>
</Properties>
<Item class="Animation" referent="RBXDB64D8D3F7054C00868C8A5B596BA6DA">
<Properties>
<Content name="AnimationId"><url>http://www.roblox.com/asset/?id=507784897</url></Content>
<string name="Name">Swim</string>
</Properties>
</Item>
</Item>
<Item class="StringValue" referent="RBX86C7EBEDF2D841A88347669EB61C0DAA">
<Properties>
<string name="Name">toolslash</string>
<string name="Value"></string>
</Properties>
<Item class="Animation" referent="RBXB6069EFEDD074A1E8950D252CD0BEDAC">
<Properties>
<Content name="AnimationId"><url>http://www.roblox.com/asset/?id=507768375</url></Content>
<string name="Name">ToolSlashAnim</string>
</Properties>
</Item>
</Item>
<Item class="StringValue" referent="RBX74C535A97ACC43E7A0D6496268E02A21">
<Properties>
<string name="Name">toolnone</string>
<string name="Value"></string>
</Properties>
<Item class="Animation" referent="RBX235A33030B114950B95F9A803CE18011">
<Properties>
<Content name="AnimationId"><url>http://www.roblox.com/asset/?id=507768375</url></Content>
<string name="Name">ToolNoneAnim</string>
</Properties>
</Item>
</Item>
<Item class="StringValue" referent="RBX22E0A32FB67744DC8ADE68FFC73E14A8">
<Properties>
<string name="Name">wave</string>
<string name="Value"></string>
</Properties>
<Item class="Animation" referent="RBX289607FF40264B5283CBE52A0968D369">
<Properties>
<Content name="AnimationId"><url>http://www.roblox.com/asset/?id=507770239</url></Content>
<string name="Name">WaveAnim</string>
</Properties>
</Item>
</Item>
<Item class="StringValue" referent="RBX15A7BD9A74634E038B3D3809D1B8E03F">
<Properties>
<string name="Name">laugh</string>
<string name="Value"></string>
</Properties>
<Item class="Animation" referent="RBXC1F3C6BE473E463B831DF758C6E33E7B">
<Properties>
<Content name="AnimationId"><url>http://www.roblox.com/asset/?id=507770818</url></Content>
<string name="Name">LaughAnim</string>
</Properties>
</Item>
</Item>
<Item class="StringValue" referent="RBX0CC63179A9FA41FD8171BC4CE7ACEB04">
<Properties>
<string name="Name">point</string>
<string name="Value"></string>
</Properties>
<Item class="Animation" referent="RBX97A5E04897324DC29B502AD151492628">
<Properties>
<Content name="AnimationId"><url>http://www.roblox.com/asset/?id=507770453</url></Content>
<string name="Name">PointAnim</string>
</Properties>
</Item>
</Item>
<Item class="StringValue" referent="RBX52BC1CDE71CF44F9B6E26A5C13944A26">
<Properties>
<string name="Name">cheer</string>
<string name="Value"></string>
</Properties>
<Item class="Animation" referent="RBX1FBCD816A95947FD92F88F27A2742E76">
<Properties>
<Content name="AnimationId"><url>http://www.roblox.com/asset/?id=507770677</url></Content>
<string name="Name">CheerAnim</string>
</Properties>
</Item>
</Item>
<Item class="StringValue" referent="RBX905B92DD4E8C4EE1A0C229538FCCB4A8">
<Properties>
<string name="Name">dance</string>
<string name="Value"></string>
</Properties>
<Item class="Animation" referent="RBXBB51D8D1C8964CAEBF72AFF33CC3F86B">
<Properties>
<Content name="AnimationId"><url>http://www.roblox.com/asset/?id=507771019</url></Content>
<string name="Name">Animation1</string>
</Properties>
<Item class="NumberValue" referent="RBXE1D01798DA734F9ABD349136360AC0F7">
<Properties>
<string name="Name">Weight</string>
<double name="Value">10</double>
</Properties>
</Item>
</Item>
<Item class="Animation" referent="RBXBF61451CF15640B69CA86ADC9A485D22">
<Properties>
<Content name="AnimationId"><url>http://www.roblox.com/asset/?id=507771955</url></Content>
<string name="Name">Animation2</string>
</Properties>
<Item class="NumberValue" referent="RBX07011263539F410298682B0E484E6DD6">
<Properties>
<string name="Name">Weight</string>
<double name="Value">10</double>
</Properties>
</Item>
</Item>
<Item class="Animation" referent="RBXEC4EDF3394E942239DE459CE0F6311F7">
<Properties>
<Content name="AnimationId"><url>http://www.roblox.com/asset/?id=507772104</url></Content>
<string name="Name">Animation3</string>
</Properties>
<Item class="NumberValue" referent="RBXDE3167369F184A6B88AE3F70209F930B">
<Properties>
<string name="Name">Weight</string>
<double name="Value">10</double>
</Properties>
</Item>
</Item>
</Item>
<Item class="StringValue" referent="RBXE8C147C2797A463683EB841E6E574E72">
<Properties>
<string name="Name">dance2</string>
<string name="Value"></string>
</Properties>
<Item class="Animation" referent="RBX5D79C48B4507452A86A34CCCC944BB6C">
<Properties>
<Content name="AnimationId"><url>http://www.roblox.com/asset/?id=507776043</url></Content>
<string name="Name">Animation1</string>
</Properties>
<Item class="NumberValue" referent="RBX0B464F16C3C94E54AF92B58A72FE1DBC">
<Properties>
<string name="Name">Weight</string>
<double name="Value">10</double>
</Properties>
</Item>
</Item>
<Item class="Animation" referent="RBX67E70DEFF3774D689E6DEADA7AFB2869">
<Properties>
<Content name="AnimationId"><url>http://www.roblox.com/asset/?id=507776720</url></Content>
<string name="Name">Animation2</string>
</Properties>
<Item class="NumberValue" referent="RBX899591DBFD3B4E7DACE3AB4919A6D6C1">
<Properties>
<string name="Name">Weight</string>
<double name="Value">10</double>
</Properties>
</Item>
</Item>
<Item class="Animation" referent="RBX214E40E9BEAA4681B7F79F886FE40302">
<Properties>
<Content name="AnimationId"><url>http://www.roblox.com/asset/?id=507776879</url></Content>
<string name="Name">Animation3</string>
</Properties>
<Item class="NumberValue" referent="RBXD8E0FDD9DA374312BA56E29B080FF00C">
<Properties>
<string name="Name">Weight</string>
<double name="Value">10</double>
</Properties>
</Item>
</Item>
</Item>
<Item class="StringValue" referent="RBXD9DFE6D5CB80438AB23F31F67882BF25">
<Properties>
<string name="Name">dance3</string>
<string name="Value"></string>
</Properties>
<Item class="Animation" referent="RBXAE6D13EFDDE54BECA02633C646419F2B">
<Properties>
<Content name="AnimationId"><url>http://www.roblox.com/asset/?id=507777268</url></Content>
<string name="Name">Animation1</string>
</Properties>
<Item class="NumberValue" referent="RBX77AD6AF4C51E40538099193C6C9151D6">
<Properties>
<string name="Name">Weight</string>
<double name="Value">10</double>
</Properties>
</Item>
</Item>
<Item class="Animation" referent="RBXDF0B79AAB82B4A5CADFFB202FF54D6EB">
<Properties>
<Content name="AnimationId"><url>http://www.roblox.com/asset/?id=507777451</url></Content>
<string name="Name">Animation2</string>
</Properties>
<Item class="NumberValue" referent="RBXF795075B6A07440E91F02457A02CBE47">
<Properties>
<string name="Name">Weight</string>
<double name="Value">10</double>
</Properties>
</Item>
</Item>
<Item class="Animation" referent="RBX6244AB050AA84D8599A87CC474E12288">
<Properties>
<Content name="AnimationId"><url>http://www.roblox.com/asset/?id=507777623</url></Content>
<string name="Name">Animation3</string>
</Properties>
<Item class="NumberValue" referent="RBX1EB4653C0987454F8E77A57DEBC68C9B">
<Properties>
<string name="Name">Weight</string>
<double name="Value">10</double>
</Properties>
</Item>
</Item>
</Item>
</Item>
</roblox>
+11
View File
@@ -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.roblox.com/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">&#13;&#10;while script.Parent.Head==nil do&#13;&#10;&#9;wait(0.05)&#13;&#10;end&#13;&#10;&#13;&#10;function newSound(id)&#13;&#10;&#9;local sound = Instance.new(&quot;Sound&quot;)&#13;&#10;&#9;sound.SoundId = id&#13;&#10;&#9;sound.Parent = script.Parent.Head&#13;&#10;&#9;return sound&#13;&#10;end&#13;&#10;&#13;&#10;sDied = newSound(&quot;rbxasset://sounds/uuhhh.wav&quot;)&#13;&#10;sFallingDown = newSound(&quot;rbxasset://sounds/splat.wav&quot;)&#13;&#10;sFreeFalling = newSound(&quot;rbxasset://sounds/swoosh.wav&quot;)&#13;&#10;sGettingUp = newSound(&quot;rbxasset://sounds/hit.wav&quot;)&#13;&#10;sJumping = newSound(&quot;rbxasset://sounds/button.wav&quot;)&#13;&#10;sRunning = newSound(&quot;rbxasset://sounds/bfsl-minifigfoots1.mp3&quot;)&#13;&#10;sRunning.Looped = true&#13;&#10;&#13;&#10;function onDied()&#13;&#10;&#9;sDied:play()&#13;&#10;end&#13;&#10;&#13;&#10;function onState(state, sound)&#13;&#10;&#9;if state then&#13;&#10;&#9;&#9;sound:play()&#13;&#10;&#9;else&#13;&#10;&#9;&#9;sound:pause()&#13;&#10;&#9;end&#13;&#10;end&#13;&#10;&#13;&#10;function onRunning(speed)&#13;&#10;&#9;if speed&gt;0 then&#13;&#10;&#9;&#9;sRunning:play()&#13;&#10;&#9;else&#13;&#10;&#9;&#9;sRunning:pause()&#13;&#10;&#9;end&#13;&#10;end&#13;&#10;&#13;&#10;while script.Parent.Humanoid==nil do&#13;&#10;&#9;wait(0.05)&#13;&#10;end&#13;&#10;&#13;&#10;h = script.Parent.Humanoid&#13;&#10;h.Died:connect(onDied)&#13;&#10;h.Running:connect(onRunning)&#13;&#10;h.Jumping:connect(function(state) onState(state, sJumping) end)&#13;&#10;h.GettingUp:connect(function(state) onState(state, sGettingUp) end)&#13;&#10;h.FreeFalling:connect(function(state) onState(state, sFreeFalling) end)&#13;&#10;h.FallingDown:connect(function(state) onState(state, sFallingDown) end)&#13;&#10;&#13;&#10;-- regeneration&#13;&#10;while true do&#13;&#10;&#9;local s = wait(1)&#13;&#10;&#9;local health=h.Health&#13;&#10;&#9;if health&gt;0 and health&lt;h.MaxHealth then&#13;&#10;&#9;&#9;health = health + 0.01*s*h.MaxHealth&#13;&#10;&#9;&#9;if health*1.05 &lt; h.MaxHealth then&#13;&#10;&#9;&#9;&#9;h.Health = health&#13;&#10;&#9;&#9;else&#13;&#10;&#9;&#9;&#9;h.Health = h.MaxHealth&#13;&#10;&#9;&#9;end&#13;&#10;&#9;end&#13;&#10;end&#13;&#10;</string>
</Properties>
</Item>
</roblox>
@@ -0,0 +1,191 @@
<roblox xmlns:xmime="http://www.w3.org/2005/05/xmlmime" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://www.roblox.com/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.
--humanoidSoundNewLocal.rbxmx--
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
]]></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:Resume()
sRunning.Pitch = speed / 8.0
else
sRunning:Pause()
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:Resume()
end
function onClimbing(speed)
sRunning:Stop()
sSwimming:Stop()
if speed>0.01 then
sClimbing:Resume()
sClimbing.Pitch = speed / 5.5
else
sClimbing:Pause()
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>
+12
View File
@@ -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.roblox.com/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&#13;&#10;&#13;&#10;local Torso = Figure:findFirstChild(&quot;Torso&quot;)&#13;&#10;&#13;&#10;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.
+737
View File
@@ -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.roblox.com/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>&gt;_&lt;</utterance>
<utterance>T_T</utterance>
<utterance>^_^</utterance>
<utterance>&lt;(0_0&lt;) &lt;(0_0)&gt; (&gt;0_0)&gt; 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.