add
This commit is contained in:
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,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.
@@ -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("RunService") shaft = script.Parent position = Vector3.new(0,0,0) function fly() 	direction = shaft.CFrame.lookVector 	position = position + direction 	error = position - shaft.Position 	shaft.Velocity = 7*error end function blow() 	swoosh:Stop() 	explosion = Instance.new("Explosion") 	explosion.Position = shaft.Position 	explosion.Parent = game.Workspace 	connection:disconnect() 	shaft:remove() end t, s = r.Stepped:wait() swoosh = script.Parent.Swoosh swoosh:Play() position = shaft.Position d = t + 10.0 - s connection = shaft.Touched:connect(blow) while t < d do 	fly() 	t = r.Stepped:wait() end script.Parent.Explosion.PlayOnRemove = false swoosh:Stop() shaft:remove() </string>
|
||||
</Properties>
|
||||
</Item>
|
||||
</Item>
|
||||
</roblox>
|
||||
Binary file not shown.
@@ -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"> pellet = script.Parent damage = 8 function onTouched(hit) 	humanoid = hit.Parent:findFirstChild("Humanoid") 	if humanoid~=nil then 		humanoid.Health = humanoid.Health - damage 		connection:disconnect() 	else 		damage = damage / 2 		if damage < 0.1 then 			connection:disconnect() 		end 	end end connection = pellet.Touched:connect(onTouched) r = game:service("RunService") t, s = r.Stepped:wait() d = t + 1.0 - s while t < d do 	t = r.Stepped:wait() end pellet.Parent = nil</string>
|
||||
</Properties>
|
||||
</Item>
|
||||
</Item>
|
||||
</roblox>
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,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>
|
||||
@@ -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
@@ -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.
@@ -0,0 +1,356 @@
|
||||
a 6>
|
||||
4=:90
|
||||
4;499,
|
||||
4; &
|
||||
4&=:90
|
||||
4&=:90&
|
||||
4&&=:90
|
||||
4&&=:90&
|
||||
4&&><&&0'
|
||||
704&!<49<!,
|
||||
704&!<9<!,
|
||||
70&!<49<!,
|
||||
7<6=
|
||||
7<6=0&
|
||||
7<6!=
|
||||
7<!6
|
||||
7<!6=
|
||||
7<!6=0'
|
||||
7<!6=0'&
|
||||
7<!6=0&
|
||||
7<!6=<;
|
||||
7<!6=<;2
|
||||
7<!6=&
|
||||
79:"?:7
|
||||
79:"?:7&
|
||||
7:;0'
|
||||
7 99&=<!
|
||||
7 9&=<!
|
||||
7 !!3 6>
|
||||
7 !!3 6>0'
|
||||
7 !!=4<'
|
||||
7 !!&0-
|
||||
7 !!&06&
|
||||
7 !!&0>&
|
||||
6=<;>
|
||||
6<'690?0'>
|
||||
69<!
|
||||
6e;1e8&
|
||||
6:;1e8&
|
||||
6e;1:8&
|
||||
6:6>
|
||||
6:6>{
|
||||
6:6>&
|
||||
6:6>& 6>
|
||||
6:6>& 6>01
|
||||
6:6>& 6>0'
|
||||
6:6>& 6><;2
|
||||
6:6>& 6>&
|
||||
6:>
|
||||
6:;1:8
|
||||
6:;1:8&
|
||||
6::!0'
|
||||
6 8
|
||||
6 880'
|
||||
6 88<;2
|
||||
6 8&
|
||||
6 8&=:!
|
||||
6 8&=:!
|
||||
6 ;<9<;2 &
|
||||
6 ;<99<;2 &
|
||||
6 ;;<9<;2 &
|
||||
6 ;!
|
||||
6 ;!9<6>
|
||||
6 ;!9<6>0'
|
||||
6 ;!9<6><;2
|
||||
6 ;!&
|
||||
6,70'3 6
|
||||
6,70'3 6>
|
||||
6,70'3 6>01
|
||||
6,70'3 6>0'
|
||||
6,70'3 6>0'&
|
||||
6,70'3 6><;2
|
||||
1<6>
|
||||
1<6>&
|
||||
1<>0
|
||||
1<91:
|
||||
1<91:
|
||||
1<91:&
|
||||
1<91:&
|
||||
1<%&=<!
|
||||
1: 6=0
|
||||
1: 6=0742
|
||||
1,>0
|
||||
0?46 94!0
|
||||
0?46 94!01
|
||||
0?46 94!0&
|
||||
0?46 94!<;2
|
||||
0?46 94!<;2&
|
||||
0?46 94!<:;
|
||||
30'
|
||||
3<;2
|
||||
342
|
||||
3420!
|
||||
3422
|
||||
34220!
|
||||
3422<;2
|
||||
3422<!
|
||||
3422:!
|
||||
3422&
|
||||
342<!
|
||||
342:!
|
||||
342:!&
|
||||
342&
|
||||
34%%0'
|
||||
34%%<;2
|
||||
34%%<;
|
||||
34">
|
||||
36><;2
|
||||
3094!<:
|
||||
3094!<:
|
||||
30994!<:
|
||||
3<;20'74;2
|
||||
3<;20'3 6>
|
||||
3<;20'3 6>01
|
||||
3<;20'3 6>0'
|
||||
3<;20'3 6>0'&
|
||||
3<;20'3 6><;2
|
||||
3<;20'3 6>&
|
||||
3<&!3 6>
|
||||
3<&!3 6>01
|
||||
3<&!3 6>0'
|
||||
3<&!3 6>0'&
|
||||
3<&!3 6><;2
|
||||
3<&!3 6><;2&
|
||||
3<&!3 6>&
|
||||
3:6><;2
|
||||
3 6>
|
||||
3 6>t
|
||||
3 6>0
|
||||
3 6>01
|
||||
3 6>0;
|
||||
3 6>0'
|
||||
3 6>0'&
|
||||
3 6><;
|
||||
3 6><;2
|
||||
3 6><;2&
|
||||
3 6>>>>>>>>>>>>>>>>>
|
||||
3 6>80
|
||||
3 6>&
|
||||
3 6>!4'1
|
||||
3 6>,:
|
||||
3 >
|
||||
3 >0'
|
||||
3 ><;
|
||||
3 ><;2
|
||||
3 >>
|
||||
3 >&
|
||||
3 '7 '20'
|
||||
24;274;2
|
||||
24;274;201
|
||||
24;274;2&
|
||||
24,
|
||||
24,&0-
|
||||
24/:;24&
|
||||
24/:;20'&
|
||||
2:;41&
|
||||
2::>
|
||||
=4'16:'0&0-
|
||||
=4'1:;
|
||||
=:8:
|
||||
=::>0'
|
||||
=:';<0&!
|
||||
=:';,
|
||||
=:!&0-
|
||||
= 8%
|
||||
?46>4&&
|
||||
?46><;2:33
|
||||
?46>:33
|
||||
?46>x:33
|
||||
?4%
|
||||
?0'>x:33
|
||||
?0"
|
||||
?<&8
|
||||
?</
|
||||
?</8
|
||||
?<//
|
||||
><>0
|
||||
>>>
|
||||
>:6>
|
||||
>:;1 8
|
||||
>:;1 8&
|
||||
> 8
|
||||
> 880'
|
||||
> 88<;2
|
||||
> 8&
|
||||
> ;<9<;2 &
|
||||
90&7<4;
|
||||
90&7:
|
||||
9 &!<;2
|
||||
80'10
|
||||
8:90&!
|
||||
8:!=43 6>
|
||||
8:!=43 6>
|
||||
8:!=43 6>4
|
||||
8:!=43 6>4
|
||||
8:!=43 6>4&
|
||||
8:!=43 6>4&
|
||||
8:!=43 6>4/
|
||||
8:!=43 6>4/
|
||||
8:!=43 6>01
|
||||
8:!=43 6>01
|
||||
8:!=43 6>0'
|
||||
8:!=43 6>0'
|
||||
8:!=43 6>0'&
|
||||
8:!=43 6>0'&
|
||||
8:!=43 6><;
|
||||
8:!=43 6><;
|
||||
8:!=43 6><;2
|
||||
8:!=43 6><;2
|
||||
8:!=43 6><;2&
|
||||
8:!=43 6><;2&
|
||||
8:!=43 6>&
|
||||
8:!=43 6>&
|
||||
8:!=0'3 6>
|
||||
8:!=0'3 6>
|
||||
8:!=0'3 6>01
|
||||
8:!=0'3 6>0'
|
||||
8:!=0'3 6>0'
|
||||
8:!=0'3 6>0'&
|
||||
8:!=0'3 6>0'&
|
||||
8:!=0'3 6><;
|
||||
8:!=0'3 6><;
|
||||
8:!=0'3 6><;2
|
||||
8:!=0'3 6><;2
|
||||
8:!=0'3 6><;2&
|
||||
8:!=0'3 6><;2&
|
||||
8:!=0'3 6>&
|
||||
8:!=0'3 6>&
|
||||
;4/<
|
||||
;<20'
|
||||
;<224
|
||||
;<224&
|
||||
;<220'
|
||||
;<220'
|
||||
;<220'&
|
||||
;<220'&
|
||||
:'24&<8
|
||||
:'24&<8&
|
||||
:'24&8
|
||||
:'24&8&
|
||||
%06>0'
|
||||
%0;<&
|
||||
%=:;0&0-
|
||||
%= >01
|
||||
%= ><;2
|
||||
%= >>01
|
||||
%= >><;2
|
||||
%= >
|
||||
%= >&
|
||||
%= $
|
||||
%<8%
|
||||
%<&&:33
|
||||
%:';
|
||||
%:';:
|
||||
%:';:2'4%=,
|
||||
%:';:&
|
||||
%'<6>
|
||||
%'<6>&
|
||||
%':&!<! !0
|
||||
% &<0&
|
||||
% &&<0&
|
||||
% &&,
|
||||
% &&,&
|
||||
% &,
|
||||
% &,&
|
||||
$ 00'
|
||||
'%0
|
||||
'%01
|
||||
'4%0
|
||||
'4%01
|
||||
&6=9:;2
|
||||
&0-
|
||||
&0--
|
||||
&0---
|
||||
&=<!3 99
|
||||
&=<!<;2
|
||||
&=<!<;2&
|
||||
&=<!&
|
||||
&=<!!01
|
||||
&=<!!0'
|
||||
&=<!!0'&
|
||||
&=<!!<;2
|
||||
&=<!!<;2&
|
||||
&=<!!,
|
||||
&=<!,
|
||||
&9 !
|
||||
&9 !&
|
||||
&8 !
|
||||
&;4!6=
|
||||
&:1:8<!0
|
||||
&:1:8</0
|
||||
&:1:8</0'
|
||||
&:1:8,
|
||||
&% ;>
|
||||
& 6>
|
||||
!'48%
|
||||
!"4!
|
||||
#42<;4
|
||||
#<7'4!:'
|
||||
"4;2
|
||||
"4;>
|
||||
"4;>0'
|
||||
"0!746>
|
||||
"=:'0
|
||||
":%
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Binary file not shown.
@@ -0,0 +1,89 @@
|
||||
# Windows - DINPUT
|
||||
8f0e1200000000000000504944564944,Acme,platform:Windows,x:b2,a:b0,b:b1,y:b3,back:b8,start:b9,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b5,rightshoulder:b6,righttrigger:b7,leftstick:b10,rightstick:b11,leftx:a0,lefty:a1,rightx:a3,righty:a2,
|
||||
341a3608000000000000504944564944,Afterglow PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,
|
||||
ffff0000000000000000504944564944,GameStop Gamepad,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Windows,
|
||||
6d0416c2000000000000504944564944,Generic DirectInput Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,
|
||||
6d0419c2000000000000504944564944,Logitech F710 Gamepad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,
|
||||
88880803000000000000504944564944,PS3 Controller,a:b2,b:b1,back:b8,dpdown:h0.8,dpleft:h0.4,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b9,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:b7,rightx:a3,righty:a4,start:b11,x:b0,y:b3,platform:Windows,
|
||||
4c056802000000000000504944564944,PS3 Controller,a:b14,b:b13,back:b0,dpdown:b6,dpleft:b7,dpright:b5,dpup:b4,guide:b16,leftshoulder:b10,leftstick:b1,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b11,rightstick:b2,righttrigger:b9,rightx:a2,righty:a3,start:b3,x:b15,y:b12,platform:Windows,
|
||||
25090500000000000000504944564944,PS3 DualShock,a:b2,b:b1,back:b9,dpdown:h0.8,dpleft:h0.4,dpright:h0.2,dpup:h0.1,guide:,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a2,righty:a3,start:b8,x:b0,y:b3,platform:Windows,
|
||||
4c05c405000000000000504944564944,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows,
|
||||
6d0418c2000000000000504944564944,Logitech RumblePad 2 USB,platform:Windows,x:b0,a:b1,b:b2,y:b3,back:b8,start:b9,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,leftstick:b10,rightstick:b11,leftx:a0,lefty:a1,rightx:a2,righty:a3,
|
||||
36280100000000000000504944564944,OUYA Controller,platform:Windows,a:b0,b:b3,y:b2,x:b1,start:b14,guide:b15,leftstick:b6,rightstick:b7,leftshoulder:b4,rightshoulder:b5,dpup:b8,dpleft:b10,dpdown:b9,dpright:b11,leftx:a0,lefty:a1,rightx:a3,righty:a4,lefttrigger:b12,righttrigger:b13,
|
||||
4f0400b3000000000000504944564944,Thrustmaster Firestorm Dual Power,a:b0,b:b2,y:b3,x:b1,start:b10,guide:b8,back:b9,leftstick:b11,rightstick:b12,leftshoulder:b4,rightshoulder:b6,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:b5,righttrigger:b7,platform:Windows,
|
||||
00f00300000000000000504944564944,RetroUSB.com RetroPad,a:b1,b:b5,x:b0,y:b4,back:b2,start:b3,leftshoulder:b6,rightshoulder:b7,leftx:a0,lefty:a1,platform:Windows,
|
||||
00f0f100000000000000504944564944,RetroUSB.com Super RetroPort,a:b1,b:b5,x:b0,y:b4,back:b2,start:b3,leftshoulder:b6,rightshoulder:b7,leftx:a0,lefty:a1,platform:Windows,
|
||||
28040140000000000000504944564944,GamePad Pro USB,platform:Windows,a:b1,b:b2,x:b0,y:b3,back:b8,start:b9,leftshoulder:b4,rightshoulder:b5,leftx:a0,lefty:a1,lefttrigger:b6,righttrigger:b7,
|
||||
ff113133000000000000504944564944,SVEN X-PAD,platform:Windows,a:b2,b:b3,y:b1,x:b0,start:b5,back:b4,leftshoulder:b6,rightshoulder:b7,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftx:a0,lefty:a1,rightx:a2,righty:a4,lefttrigger:b8,righttrigger:b9,
|
||||
8f0e0300000000000000504944564944,Piranha xtreme,platform:Windows,x:b3,a:b2,b:b1,y:b0,back:b8,start:b9,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,dpup:h0.1,leftshoulder:b6,lefttrigger:b4,rightshoulder:b7,righttrigger:b5,leftstick:b10,rightstick:b11,leftx:a0,lefty:a1,rightx:a3,righty:a2,
|
||||
8f0e0d31000000000000504944564944,Multilaser JS071 USB,platform:Windows,a:b1,b:b2,y:b3,x:b0,start:b9,back:b8,leftstick:b10,rightstick:b11,leftshoulder:b4,rightshoulder:b5,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:b6,righttrigger:b7,
|
||||
10080300000000000000504944564944,PS2 USB,platform:Windows,a:b2,b:b1,y:b0,x:b3,start:b9,back:b8,leftstick:b10,rightstick:b11,leftshoulder:b6,rightshoulder:b7,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftx:a0,lefty:a1,rightx:a4,righty:a2,lefttrigger:b4,righttrigger:b5,
|
||||
79000600000000000000504944564944,G-Shark GS-GP702,a:b2,b:b1,x:b3,y:b0,back:b8,start:b9,leftstick:b10,rightstick:b11,leftshoulder:b4,rightshoulder:b5,dpup:h0.1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,leftx:a0,lefty:a1,rightx:a2,righty:a4,lefttrigger:b6,righttrigger:b7,platform:Windows,
|
||||
4b12014d000000000000504944564944,NYKO AIRFLO,a:b0,b:b1,x:b2,y:b3,back:b8,guide:b10,start:b9,leftstick:a0,rightstick:a2,leftshoulder:a3,rightshoulder:b5,dpup:h0.1,dpdown:h0.0,dpleft:h0.8,dpright:h0.2,leftx:h0.6,lefty:h0.12,rightx:h0.9,righty:h0.4,lefttrigger:b6,righttrigger:b7,platform:Windows,
|
||||
d6206dca000000000000504944564944,PowerA Pro Ex,a:b1,b:b2,x:b0,y:b3,back:b8,guide:b12,start:b9,leftstick:b10,rightstick:b11,leftshoulder:b4,rightshoulder:b5,dpup:h0.1,dpdown:h0.0,dpleft:h0.8,dpright:h0.2,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:b6,righttrigger:b7,platform:Windows,
|
||||
a3060cff000000000000504944564944,Saitek P2500,a:b2,b:b3,y:b1,x:b0,start:b4,guide:b10,back:b5,leftstick:b8,rightstick:b9,leftshoulder:b6,rightshoulder:b7,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftx:a0,lefty:a1,rightx:a2,righty:a3,platform:Windows,
|
||||
8f0e0300000000000000504944564944,Trust GTX 28,a:b2,b:b1,y:b0,x:b3,start:b9,back:b8,leftstick:b10,rightstick:b11,leftshoulder:b4,rightshoulder:b5,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:b6,righttrigger:b7,platform:Windows,
|
||||
4f0415b3000000000000504944564944,Thrustmaster Dual Analog 3.2,platform:Windows,x:b1,a:b0,b:b2,y:b3,back:b8,start:b9,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b5,rightshoulder:b6,righttrigger:b7,leftstick:b10,rightstick:b11,leftx:a0,lefty:a1,rightx:a2,righty:a3,
|
||||
|
||||
# OS X
|
||||
0500000047532047616d657061640000,GameStop Gamepad,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Mac OS X,
|
||||
6d0400000000000016c2000000000000,Logitech F310 Gamepad (DInput),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X,
|
||||
6d0400000000000018c2000000000000,Logitech F510 Gamepad (DInput),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X,
|
||||
6d040000000000001fc2000000000000,Logitech F710 Gamepad (XInput),a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b8,x:b2,y:b3,platform:Mac OS X,
|
||||
6d0400000000000019c2000000000000,Logitech Wireless Gamepad (DInput),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X,
|
||||
4c050000000000006802000000000000,PS3 Controller,a:b14,b:b13,back:b0,dpdown:b6,dpleft:b7,dpright:b5,dpup:b4,guide:b16,leftshoulder:b10,leftstick:b1,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b11,rightstick:b2,righttrigger:b9,rightx:a2,righty:a3,start:b3,x:b15,y:b12,platform:Mac OS X,
|
||||
4c05000000000000c405000000000000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,Platform:Mac OS X,
|
||||
5e040000000000008e02000000000000,X360 Controller,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b8,x:b2,y:b3,platform:Mac OS X,
|
||||
891600000000000000fd000000000000,Razer Onza Tournament,a:b0,b:b1,y:b3,x:b2,start:b8,guide:b10,back:b9,leftstick:b6,rightstick:b7,leftshoulder:b4,rightshoulder:b5,dpup:b11,dpleft:b13,dpdown:b12,dpright:b14,leftx:a0,lefty:a1,rightx:a3,righty:a4,lefttrigger:a2,righttrigger:a5,platform:Mac OS X,
|
||||
4f0400000000000000b3000000000000,Thrustmaster Firestorm Dual Power,a:b0,b:b2,y:b3,x:b1,start:b10,guide:b8,back:b9,leftstick:b11,rightstick:,leftshoulder:b4,rightshoulder:b6,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:b5,righttrigger:b7,platform:Mac OS X,
|
||||
8f0e0000000000000300000000000000,Piranha xtreme,platform:Mac OS X,x:b3,a:b2,b:b1,y:b0,back:b8,start:b9,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,dpup:h0.1,leftshoulder:b6,lefttrigger:b4,rightshoulder:b7,righttrigger:b5,leftstick:b10,rightstick:b11,leftx:a0,lefty:a1,rightx:a3,righty:a2,
|
||||
0d0f0000000000004d00000000000000,HORI Gem Pad 3,platform:Mac OS X,a:b1,b:b2,y:b3,x:b0,start:b9,guide:b12,back:b8,leftstick:b10,rightstick:b11,leftshoulder:b4,rightshoulder:b5,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:b6,righttrigger:b7,
|
||||
79000000000000000600000000000000,G-Shark GP-702,a:b2,b:b1,x:b3,y:b0,back:b8,start:b9,leftstick:b10,rightstick:b11,leftshoulder:b4,rightshoulder:b5,dpup:h0.1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,leftx:a0,lefty:a1,rightx:a3,righty:a4,lefttrigger:b6,righttrigger:b7,platform:Mac OS X,
|
||||
4f0400000000000015b3000000000000,Thrustmaster Dual Analog 3.2,platform:Mac OS X,x:b1,a:b0,b:b2,y:b3,back:b8,start:b9,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b5,rightshoulder:b6,righttrigger:b7,leftstick:b10,rightstick:b11,leftx:a0,lefty:a1,rightx:a2,righty:a3,
|
||||
|
||||
# Linux
|
||||
0500000047532047616d657061640000,GameStop Gamepad,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Linux,
|
||||
03000000ba2200002010000001010000,Jess Technology USB Game Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b3,y:b0,platform:Linux,
|
||||
030000006d04000019c2000010010000,Logitech Cordless RumblePad 2,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux,
|
||||
030000006d0400001dc2000014400000,Logitech F310 Gamepad (XInput),a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,
|
||||
030000006d0400001ec2000020200000,Logitech F510 Gamepad (XInput),a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,
|
||||
030000006d04000019c2000011010000,Logitech F710 Gamepad (DInput),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux,
|
||||
030000006d0400001fc2000005030000,Logitech F710 Gamepad (XInput),a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,
|
||||
030000004c0500006802000011010000,PS3 Controller,a:b14,b:b13,back:b0,dpdown:b6,dpleft:b7,dpright:b5,dpup:b4,guide:b16,leftshoulder:b10,leftstick:b1,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b11,rightstick:b2,righttrigger:b9,rightx:a2,righty:a3,start:b3,x:b15,y:b12,platform:Linux,
|
||||
030000004c050000c405000011010000,Sony DualShock 4,a:b1,b:b2,y:b3,x:b0,start:b9,guide:b12,back:b8,leftstick:b10,rightstick:b11,leftshoulder:b4,rightshoulder:b5,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftx:a0,lefty:a1,rightx:a2,righty:a5,lefttrigger:b6,righttrigger:b7,platform:Linux,
|
||||
03000000de280000ff11000001000000,Valve Streaming Gamepad,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,
|
||||
030000005e0400008e02000014010000,X360 Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,
|
||||
030000005e0400008e02000010010000,X360 Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,
|
||||
030000005e0400001907000000010000,X360 Wireless Controller,a:b0,b:b1,back:b6,dpdown:b14,dpleft:b11,dpright:b12,dpup:b13,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,
|
||||
03000000100800000100000010010000,Twin USB PS2 Adapter,a:b2,b:b1,y:b0,x:b3,start:b9,guide:,back:b8,leftstick:b10,rightstick:b11,leftshoulder:b6,rightshoulder:b7,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftx:a0,lefty:a1,rightx:a3,righty:a2,lefttrigger:b4,righttrigger:b5,platform:Linux,
|
||||
03000000a306000023f6000011010000,Saitek Cyborg V.1 Game Pad,a:b1,b:b2,y:b3,x:b0,start:b9,guide:b12,back:b8,leftstick:b10,rightstick:b11,leftshoulder:b4,rightshoulder:b5,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftx:a0,lefty:a1,rightx:a2,righty:a4,lefttrigger:b6,righttrigger:b7,platform:Linux,
|
||||
030000004f04000020b3000010010000,Thrustmaster 2 in 1 DT,a:b0,b:b2,y:b3,x:b1,start:b9,guide:,back:b8,leftstick:b10,rightstick:b11,leftshoulder:b4,rightshoulder:b6,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:b5,righttrigger:b7,platform:Linux,
|
||||
030000004f04000023b3000000010000,Thrustmaster Dual Trigger 3-in-1,platform:Linux,x:b0,a:b1,b:b2,y:b3,back:b8,start:b9,dpleft:h0.8,dpdown:h0.0,dpdown:h0.4,dpright:h0.0,dpright:h0.2,dpup:h0.0,dpup:h0.1,leftshoulder:h0.0,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,leftstick:b10,rightstick:b11,leftx:a0,lefty:a1,rightx:a2,righty:a5,
|
||||
030000008f0e00000300000010010000,GreenAsia Inc. USB Joystick ,platform:Linux,x:b3,a:b2,b:b1,y:b0,back:b8,start:b9,dpleft:h0.8,dpdown:h0.0,dpdown:h0.4,dpright:h0.0,dpright:h0.2,dpup:h0.0,dpup:h0.1,leftshoulder:h0.0,leftshoulder:b6,lefttrigger:b4,rightshoulder:b7,righttrigger:b5,leftstick:b10,rightstick:b11,leftx:a0,lefty:a1,rightx:a3,righty:a2,
|
||||
030000008f0e00001200000010010000,GreenAsia Inc. USB Joystick ,platform:Linux,x:b2,a:b0,b:b1,y:b3,back:b8,start:b9,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b5,rightshoulder:b6,righttrigger:b7,leftstick:b10,rightstick:b11,leftx:a0,lefty:a1,rightx:a3,righty:a2,
|
||||
030000005e0400009102000007010000,X360 Wireless Controller,a:b0,b:b1,y:b3,x:b2,start:b7,guide:b8,back:b6,leftstick:b9,rightstick:b10,leftshoulder:b4,rightshoulder:b5,dpup:b13,dpleft:b11,dpdown:b14,dpright:b12,leftx:a0,lefty:a1,rightx:a3,righty:a4,lefttrigger:a2,righttrigger:a5,platform:Linux,
|
||||
030000006d04000016c2000010010000,Logitech Logitech Dual Action,platform:Linux,x:b0,a:b1,b:b2,y:b3,back:b8,start:b9,dpleft:h0.8,dpdown:h0.0,dpdown:h0.4,dpright:h0.0,dpright:h0.2,dpup:h0.0,dpup:h0.1,leftshoulder:h0.0,dpup:h0.1,leftshoulder:h0.0,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,leftstick:b10,rightstick:b11,leftx:a0,lefty:a1,rightx:a2,righty:a3,
|
||||
03000000260900008888000000010000,GameCube {WiseGroup USB box},a:b0,b:b2,y:b3,x:b1,start:b7,leftshoulder:,rightshoulder:b6,dpup:h0.1,dpleft:h0.8,rightstick:,dpdown:h0.4,dpright:h0.2,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:a4,righttrigger:a5,platform:Linux,
|
||||
030000006d04000011c2000010010000,Logitech WingMan Cordless RumblePad,a:b0,b:b1,y:b4,x:b3,start:b8,guide:b5,back:b2,leftshoulder:b6,rightshoulder:b7,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftx:a0,lefty:a1,rightx:a3,righty:a4,lefttrigger:b9,righttrigger:b10,platform:Linux,
|
||||
030000006d04000018c2000010010000,Logitech Logitech RumblePad 2 USB,platform:Linux,x:b0,a:b1,b:b2,y:b3,back:b8,start:b9,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,leftstick:b10,rightstick:b11,leftx:a0,lefty:a1,rightx:a2,righty:a3,
|
||||
05000000d6200000ad0d000001000000,Moga Pro,platform:Linux,a:b0,b:b1,y:b3,x:b2,start:b6,leftstick:b7,rightstick:b8,leftshoulder:b4,rightshoulder:b5,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:a5,righttrigger:a4,
|
||||
030000004f04000009d0000000010000,Thrustmaster Run N Drive Wireless PS3,platform:Linux,a:b1,b:b2,x:b0,y:b3,start:b9,guide:b12,back:b8,leftstick:b10,rightstick:b11,leftshoulder:b4,rightshoulder:b5,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:b6,righttrigger:b7,
|
||||
030000004f04000008d0000000010000,Thrustmaster Run N Drive Wireless,platform:Linux,a:b1,b:b2,x:b0,y:b3,start:b9,back:b8,leftstick:b10,rightstick:b11,leftshoulder:b4,rightshoulder:b5,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftx:a0,lefty:a1,rightx:a2,righty:a5,lefttrigger:b6,righttrigger:b7,
|
||||
0300000000f000000300000000010000,RetroUSB.com RetroPad,a:b1,b:b5,x:b0,y:b4,back:b2,start:b3,leftshoulder:b6,rightshoulder:b7,leftx:a0,lefty:a1,platform:Linux,
|
||||
0300000000f00000f100000000010000,RetroUSB.com Super RetroPort,a:b1,b:b5,x:b0,y:b4,back:b2,start:b3,leftshoulder:b6,rightshoulder:b7,leftx:a0,lefty:a1,platform:Linux,
|
||||
030000006f0e00001f01000000010000,Generic X-Box pad,platform:Linux,x:b2,a:b0,b:b1,y:b3,back:b6,guide:b8,start:b7,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:a2,rightshoulder:b5,righttrigger:a5,leftstick:b9,rightstick:b10,leftx:a0,lefty:a1,rightx:a3,righty:a4,
|
||||
03000000280400000140000000010000,Gravis GamePad Pro USB ,platform:Linux,x:b0,a:b1,b:b2,y:b3,back:b8,start:b9,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,leftx:a0,lefty:a1,
|
||||
030000005e0400008902000021010000,Microsoft X-Box pad v2 (US),platform:Linux,x:b3,a:b0,b:b1,y:b4,back:b6,start:b7,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,dpup:h0.1,leftshoulder:b5,lefttrigger:a2,rightshoulder:b2,righttrigger:a5,leftstick:b8,rightstick:b9,leftx:a0,lefty:a1,rightx:a3,righty:a4,
|
||||
030000006f0e00001e01000011010000,Rock Candy Gamepad for PS3,platform:Linux,a:b1,b:b2,x:b0,y:b3,back:b8,start:b9,guide:b12,leftshoulder:b4,rightshoulder:b5,leftstick:b10,rightstick:b11,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:b6,righttrigger:b7,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,
|
||||
03000000250900000500000000010000,Sony PS2 pad with SmartJoy adapter,platform:Linux,a:b2,b:b1,y:b0,x:b3,start:b8,back:b9,leftstick:b10,rightstick:b11,leftshoulder:b6,rightshoulder:b7,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:b4,righttrigger:b5,
|
||||
030000008916000000fd000024010000,Razer Onza Tournament,a:b0,b:b1,y:b3,x:b2,start:b7,guide:b8,back:b6,leftstick:b9,rightstick:b10,leftshoulder:b4,rightshoulder:b5,dpup:b13,dpleft:b11,dpdown:b14,dpright:b12,leftx:a0,lefty:a1,rightx:a3,righty:a4,lefttrigger:a2,righttrigger:a5,platform:Linux,
|
||||
030000004f04000000b3000010010000,Thrustmaster Firestorm Dual Power,a:b0,b:b2,y:b3,x:b1,start:b10,guide:b8,back:b9,leftstick:b11,rightstick:b12,leftshoulder:b4,rightshoulder:b6,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:b5,righttrigger:b7,platform:Linux,
|
||||
03000000ad1b000001f5000033050000,Hori Pad EX Turbo 2,a:b0,b:b1,y:b3,x:b2,start:b7,guide:b8,back:b6,leftstick:b9,rightstick:b10,leftshoulder:b4,rightshoulder:b5,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftx:a0,lefty:a1,rightx:a3,righty:a4,lefttrigger:a2,righttrigger:a5,platform:Linux,
|
||||
050000004c050000c405000000010000,PS4 Controller (Bluetooth),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux,
|
||||
060000004c0500006802000000010000,PS3 Controller (Bluetooth),a:b14,b:b13,y:b12,x:b15,start:b3,guide:b16,back:b0,leftstick:b1,rightstick:b2,leftshoulder:b10,rightshoulder:b11,dpup:b4,dpleft:b7,dpdown:b6,dpright:b5,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:b8,righttrigger:b9,platform:Linux,
|
||||
03000000790000000600000010010000,DragonRise Inc. Generic USB Joystick ,platform:Linux,x:b3,a:b2,b:b1,y:b0,back:b8,start:b9,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,leftstick:b10,rightstick:b11,leftx:a0,lefty:a1,rightx:a3,righty:a4,
|
||||
03000000666600000488000000010000,Super Joy Box 5 Pro,platform:Linux,a:b2,b:b1,x:b3,y:b0,back:b9,start:b8,leftshoulder:b6,rightshoulder:b7,leftstick:b10,rightstick:b11,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:b4,righttrigger:b5,dpup:b12,dpleft:b15,dpdown:b14,dpright:b13,
|
||||
05000000362800000100000002010000,OUYA Game Controller,a:b0,b:b3,dpdown:b9,dpleft:b10,dpright:b11,dpup:b8,guide:b14,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,platform:Linux,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,x:b1,y:b2,
|
||||
05000000362800000100000003010000,OUYA Game Controller,a:b0,b:b3,dpdown:b9,dpleft:b10,dpright:b11,dpup:b8,guide:b14,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,platform:Linux,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,x:b1,y:b2,
|
||||
030000008916000001fd000024010000,Razer Onza Classic Edition,platform:Linux,x:b2,a:b0,b:b1,y:b3,back:b6,guide:b8,start:b7,dpleft:b11,dpdown:b14,dpright:b12,dpup:b13,leftshoulder:b4,lefttrigger:a2,rightshoulder:b5,righttrigger:a5,leftstick:b9,rightstick:b10,leftx:a0,lefty:a1,rightx:a3,righty:a4,
|
||||
030000005e040000d102000001010000,Microsoft X-Box One pad,platform:Linux,x:b2,a:b0,b:b1,y:b3,back:b6,guide:b8,start:b7,dpleft:h0.8,dpdown:h0.0,dpdown:h0.4,dpright:h0.0,dpright:h0.2,dpup:h0.0,dpup:h0.1,leftshoulder:h0.0,leftshoulder:b4,lefttrigger:a2,rightshoulder:b5,righttrigger:a5,leftstick:b9,rightstick:b10,leftx:a0,lefty:a1,rightx:a3,righty:a4,
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,296 @@
|
||||
<roblox xmlns:xmime="http://www.w3.org/2005/05/xmlmime" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://www.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("Body Colors")
|
||||
if not old then return end
|
||||
old:clone().Parent = char
|
||||
old.Parent = nil
|
||||
else
|
||||
local head = char:findFirstChild("Head")
|
||||
local torso = char:findFirstChild("Torso")
|
||||
local left_arm = char:findFirstChild("Left Arm")
|
||||
local right_arm = char:findFirstChild("Right Arm")
|
||||
local left_leg = char:findFirstChild("Left Leg")
|
||||
local right_leg = char:findFirstChild("Right Leg")
|
||||
|
||||
if head then head.BrickColor = BrickColor.new(24) end
|
||||
if torso then torso.BrickColor = player.TeamColor end
|
||||
if left_arm then left_arm.BrickColor = BrickColor.new(26) end
|
||||
if right_arm then right_arm.BrickColor = BrickColor.new(26) end
|
||||
if left_leg then left_leg.BrickColor = BrickColor.new(26) end
|
||||
if right_leg then right_leg.BrickColor = BrickColor.new(26) end
|
||||
end
|
||||
end
|
||||
|
||||
function onPlayerPropChanged(property, player)
|
||||
if property == "Character" then
|
||||
onTeamChanged(player)
|
||||
end
|
||||
if property== "TeamColor" or property == "Neutral" then
|
||||
onTeamChanged(player)
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
local cPlayer = game.Players:GetPlayerFromCharacter(script.Parent)
|
||||
cPlayer.Changed:connect(function(property) onPlayerPropChanged(property, cPlayer) end )
|
||||
onTeamChanged(cPlayer)
|
||||
|
||||
|
||||
-- ANIMATION
|
||||
|
||||
-- declarations
|
||||
|
||||
local Figure = script.Parent
|
||||
local Torso = waitForChild(Figure, "Torso")
|
||||
local RightShoulder = waitForChild(Torso, "Right Shoulder")
|
||||
local LeftShoulder = waitForChild(Torso, "Left Shoulder")
|
||||
local RightHip = waitForChild(Torso, "Right Hip")
|
||||
local LeftHip = waitForChild(Torso, "Left Hip")
|
||||
local Neck = waitForChild(Torso, "Neck")
|
||||
local Humanoid = waitForChild(Figure, "Humanoid")
|
||||
local pose = "Standing"
|
||||
|
||||
local toolAnim = "None"
|
||||
local toolAnimTime = 0
|
||||
|
||||
-- functions
|
||||
|
||||
function onRunning(speed)
|
||||
if speed>0 then
|
||||
pose = "Running"
|
||||
else
|
||||
pose = "Standing"
|
||||
end
|
||||
end
|
||||
|
||||
function onDied()
|
||||
pose = "Dead"
|
||||
end
|
||||
|
||||
function onJumping()
|
||||
pose = "Jumping"
|
||||
end
|
||||
|
||||
function onClimbing()
|
||||
pose = "Climbing"
|
||||
end
|
||||
|
||||
function onGettingUp()
|
||||
pose = "GettingUp"
|
||||
end
|
||||
|
||||
function onFreeFall()
|
||||
pose = "FreeFall"
|
||||
end
|
||||
|
||||
function onFallingDown()
|
||||
pose = "FallingDown"
|
||||
end
|
||||
|
||||
function onSeated()
|
||||
pose = "Seated"
|
||||
end
|
||||
|
||||
function onPlatformStanding()
|
||||
pose = "PlatformStanding"
|
||||
end
|
||||
|
||||
function moveJump()
|
||||
RightShoulder.MaxVelocity = 0.5
|
||||
LeftShoulder.MaxVelocity = 0.5
|
||||
RightShoulder:SetDesiredAngle(3.14)
|
||||
LeftShoulder:SetDesiredAngle(-3.14)
|
||||
RightHip:SetDesiredAngle(0)
|
||||
LeftHip:SetDesiredAngle(0)
|
||||
end
|
||||
|
||||
|
||||
-- same as jump for now
|
||||
|
||||
function moveFreeFall()
|
||||
RightShoulder.MaxVelocity = 0.5
|
||||
LeftShoulder.MaxVelocity = 0.5
|
||||
RightShoulder:SetDesiredAngle(3.14)
|
||||
LeftShoulder:SetDesiredAngle(-3.14)
|
||||
RightHip:SetDesiredAngle(0)
|
||||
LeftHip:SetDesiredAngle(0)
|
||||
end
|
||||
|
||||
function moveSit()
|
||||
RightShoulder.MaxVelocity = 0.15
|
||||
LeftShoulder.MaxVelocity = 0.15
|
||||
RightShoulder:SetDesiredAngle(3.14 /2)
|
||||
LeftShoulder:SetDesiredAngle(-3.14 /2)
|
||||
RightHip:SetDesiredAngle(3.14 /2)
|
||||
LeftHip:SetDesiredAngle(-3.14 /2)
|
||||
end
|
||||
|
||||
function getTool()
|
||||
for _, kid in ipairs(Figure:GetChildren()) do
|
||||
if kid.className == "Tool" then return kid end
|
||||
end
|
||||
return nil
|
||||
end
|
||||
|
||||
function getToolAnim(tool)
|
||||
for _, c in ipairs(tool:GetChildren()) do
|
||||
if c.Name == "toolanim" and c.className == "StringValue" then
|
||||
return c
|
||||
end
|
||||
end
|
||||
return nil
|
||||
end
|
||||
|
||||
function animateTool()
|
||||
|
||||
if (toolAnim == "None") then
|
||||
RightShoulder:SetDesiredAngle(1.57)
|
||||
return
|
||||
end
|
||||
|
||||
if (toolAnim == "Slash") then
|
||||
RightShoulder.MaxVelocity = 0.5
|
||||
RightShoulder:SetDesiredAngle(0)
|
||||
return
|
||||
end
|
||||
|
||||
if (toolAnim == "Lunge") then
|
||||
RightShoulder.MaxVelocity = 0.5
|
||||
LeftShoulder.MaxVelocity = 0.5
|
||||
RightHip.MaxVelocity = 0.5
|
||||
LeftHip.MaxVelocity = 0.5
|
||||
RightShoulder:SetDesiredAngle(1.57)
|
||||
LeftShoulder:SetDesiredAngle(1.0)
|
||||
RightHip:SetDesiredAngle(1.57)
|
||||
LeftHip:SetDesiredAngle(1.0)
|
||||
return
|
||||
end
|
||||
end
|
||||
|
||||
function move(time)
|
||||
local amplitude
|
||||
local frequency
|
||||
|
||||
if (pose == "Jumping") then
|
||||
moveJump()
|
||||
return
|
||||
end
|
||||
|
||||
if (pose == "FreeFall") then
|
||||
moveFreeFall()
|
||||
return
|
||||
end
|
||||
|
||||
if (pose == "Seated") then
|
||||
moveSit()
|
||||
return
|
||||
end
|
||||
|
||||
local climbFudge = 0
|
||||
|
||||
if (pose == "Running") then
|
||||
RightShoulder.MaxVelocity = 0.15
|
||||
LeftShoulder.MaxVelocity = 0.15
|
||||
amplitude = 1
|
||||
frequency = 9
|
||||
elseif (pose == "Climbing") then
|
||||
RightShoulder.MaxVelocity = 0.5
|
||||
LeftShoulder.MaxVelocity = 0.5
|
||||
amplitude = 1
|
||||
frequency = 9
|
||||
climbFudge = 3.14
|
||||
else
|
||||
amplitude = 0.1
|
||||
frequency = 1
|
||||
end
|
||||
|
||||
desiredAngle = amplitude * math.sin(time*frequency)
|
||||
|
||||
RightShoulder:SetDesiredAngle(desiredAngle + climbFudge)
|
||||
LeftShoulder:SetDesiredAngle(desiredAngle - climbFudge)
|
||||
RightHip:SetDesiredAngle(-desiredAngle)
|
||||
LeftHip:SetDesiredAngle(-desiredAngle)
|
||||
|
||||
|
||||
local tool = getTool()
|
||||
|
||||
if tool then
|
||||
|
||||
animStringValueObject = getToolAnim(tool)
|
||||
|
||||
if animStringValueObject then
|
||||
toolAnim = animStringValueObject.Value
|
||||
-- message recieved, delete StringValue
|
||||
animStringValueObject.Parent = nil
|
||||
toolAnimTime = time + .3
|
||||
end
|
||||
|
||||
if time > toolAnimTime then
|
||||
toolAnimTime = 0
|
||||
toolAnim = "None"
|
||||
end
|
||||
|
||||
animateTool()
|
||||
|
||||
|
||||
else
|
||||
toolAnim = "None"
|
||||
toolAnimTime = 0
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
-- connect events
|
||||
|
||||
Humanoid.Died:connect(onDied)
|
||||
Humanoid.Running:connect(onRunning)
|
||||
Humanoid.Jumping:connect(onJumping)
|
||||
Humanoid.Climbing:connect(onClimbing)
|
||||
Humanoid.GettingUp:connect(onGettingUp)
|
||||
Humanoid.FreeFalling:connect(onFreeFall)
|
||||
Humanoid.FallingDown:connect(onFallingDown)
|
||||
Humanoid.Seated:connect(onSeated)
|
||||
Humanoid.PlatformStanding:connect(onPlatformStanding)
|
||||
|
||||
-- main program
|
||||
|
||||
local runService = game:service("RunService");
|
||||
|
||||
while Figure.Parent~=nil do
|
||||
local _, time = wait(0.1)
|
||||
move(time)
|
||||
end
|
||||
</string>
|
||||
<bool name="archivable">true</bool>
|
||||
</Properties>
|
||||
</Item>
|
||||
</roblox>
|
||||
@@ -0,0 +1,336 @@
|
||||
<roblox xmlns:xmime="http://www.w3.org/2005/05/xmlmime" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://www.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, "Torso")
|
||||
local RightShoulder = waitForChild(Torso, "Right Shoulder")
|
||||
local LeftShoulder = waitForChild(Torso, "Left Shoulder")
|
||||
local RightHip = waitForChild(Torso, "Right Hip")
|
||||
local LeftHip = waitForChild(Torso, "Left Hip")
|
||||
local Neck = waitForChild(Torso, "Neck")
|
||||
local Humanoid = waitForChild(Figure, "Humanoid")
|
||||
local pose = "Standing"
|
||||
|
||||
local toolAnim = "None"
|
||||
local toolAnimTime = 0
|
||||
|
||||
local jumpMaxLimbVelocity = 0.75
|
||||
|
||||
-- functions
|
||||
|
||||
function onRunning(speed)
|
||||
if speed>0 then
|
||||
pose = "Running"
|
||||
else
|
||||
pose = "Standing"
|
||||
end
|
||||
end
|
||||
|
||||
function onDied()
|
||||
pose = "Dead"
|
||||
end
|
||||
|
||||
function onJumping()
|
||||
pose = "Jumping"
|
||||
end
|
||||
|
||||
function onClimbing()
|
||||
pose = "Climbing"
|
||||
end
|
||||
|
||||
function onGettingUp()
|
||||
pose = "GettingUp"
|
||||
end
|
||||
|
||||
function onFreeFall()
|
||||
pose = "FreeFall"
|
||||
end
|
||||
|
||||
function onFallingDown()
|
||||
pose = "FallingDown"
|
||||
end
|
||||
|
||||
function onSeated()
|
||||
pose = "Seated"
|
||||
end
|
||||
|
||||
function onPlatformStanding()
|
||||
pose = "PlatformStanding"
|
||||
end
|
||||
|
||||
function onSwimming(speed)
|
||||
if speed>0 then
|
||||
pose = "Running"
|
||||
else
|
||||
pose = "Standing"
|
||||
end
|
||||
end
|
||||
|
||||
function moveJump()
|
||||
RightShoulder.MaxVelocity = jumpMaxLimbVelocity
|
||||
LeftShoulder.MaxVelocity = jumpMaxLimbVelocity
|
||||
RightShoulder:SetDesiredAngle(3.14)
|
||||
LeftShoulder:SetDesiredAngle(-3.14)
|
||||
RightHip:SetDesiredAngle(0)
|
||||
LeftHip:SetDesiredAngle(0)
|
||||
end
|
||||
|
||||
|
||||
-- same as jump for now
|
||||
|
||||
function moveFreeFall()
|
||||
RightShoulder.MaxVelocity = jumpMaxLimbVelocity
|
||||
LeftShoulder.MaxVelocity = jumpMaxLimbVelocity
|
||||
RightShoulder:SetDesiredAngle(3.14)
|
||||
LeftShoulder:SetDesiredAngle(-3.14)
|
||||
RightHip:SetDesiredAngle(0)
|
||||
LeftHip:SetDesiredAngle(0)
|
||||
end
|
||||
|
||||
function moveSit()
|
||||
RightShoulder.MaxVelocity = 0.15
|
||||
LeftShoulder.MaxVelocity = 0.15
|
||||
RightShoulder:SetDesiredAngle(3.14 /2)
|
||||
LeftShoulder:SetDesiredAngle(-3.14 /2)
|
||||
RightHip:SetDesiredAngle(3.14 /2)
|
||||
LeftHip:SetDesiredAngle(-3.14 /2)
|
||||
end
|
||||
|
||||
function getTool()
|
||||
for _, kid in ipairs(Figure:GetChildren()) do
|
||||
if kid.className == "Tool" then return kid end
|
||||
end
|
||||
return nil
|
||||
end
|
||||
|
||||
function getToolAnim(tool)
|
||||
for _, c in ipairs(tool:GetChildren()) do
|
||||
if c.Name == "toolanim" and c.className == "StringValue" then
|
||||
return c
|
||||
end
|
||||
end
|
||||
return nil
|
||||
end
|
||||
|
||||
function animateTool()
|
||||
|
||||
if (toolAnim == "None") then
|
||||
RightShoulder:SetDesiredAngle(1.57)
|
||||
return
|
||||
end
|
||||
|
||||
if (toolAnim == "Slash") then
|
||||
RightShoulder.MaxVelocity = 0.5
|
||||
RightShoulder:SetDesiredAngle(0)
|
||||
return
|
||||
end
|
||||
|
||||
if (toolAnim == "Lunge") then
|
||||
RightShoulder.MaxVelocity = 0.5
|
||||
LeftShoulder.MaxVelocity = 0.5
|
||||
RightHip.MaxVelocity = 0.5
|
||||
LeftHip.MaxVelocity = 0.5
|
||||
RightShoulder:SetDesiredAngle(1.57)
|
||||
LeftShoulder:SetDesiredAngle(1.0)
|
||||
RightHip:SetDesiredAngle(1.57)
|
||||
LeftHip:SetDesiredAngle(1.0)
|
||||
return
|
||||
end
|
||||
end
|
||||
|
||||
function move(time)
|
||||
local amplitude
|
||||
local frequency
|
||||
|
||||
if (pose == "Jumping") then
|
||||
moveJump()
|
||||
return
|
||||
end
|
||||
|
||||
if (pose == "FreeFall") then
|
||||
moveFreeFall()
|
||||
return
|
||||
end
|
||||
|
||||
if (pose == "Seated") then
|
||||
moveSit()
|
||||
return
|
||||
end
|
||||
|
||||
local climbFudge = 0
|
||||
|
||||
if (pose == "Running") then
|
||||
if (RightShoulder.CurrentAngle > 1.5 or RightShoulder.CurrentAngle < -1.5) then
|
||||
RightShoulder.MaxVelocity = jumpMaxLimbVelocity
|
||||
else
|
||||
RightShoulder.MaxVelocity = 0.15
|
||||
end
|
||||
if (LeftShoulder.CurrentAngle > 1.5 or LeftShoulder.CurrentAngle < -1.5) then
|
||||
LeftShoulder.MaxVelocity = jumpMaxLimbVelocity
|
||||
else
|
||||
LeftShoulder.MaxVelocity = 0.15
|
||||
end
|
||||
amplitude = 1
|
||||
frequency = 9
|
||||
elseif (pose == "Climbing") then
|
||||
RightShoulder.MaxVelocity = 0.5
|
||||
LeftShoulder.MaxVelocity = 0.5
|
||||
amplitude = 1
|
||||
frequency = 9
|
||||
climbFudge = 3.14
|
||||
else
|
||||
amplitude = 0.1
|
||||
frequency = 1
|
||||
end
|
||||
|
||||
desiredAngle = amplitude * math.sin(time*frequency)
|
||||
|
||||
RightShoulder:SetDesiredAngle(desiredAngle + climbFudge)
|
||||
LeftShoulder:SetDesiredAngle(desiredAngle - climbFudge)
|
||||
RightHip:SetDesiredAngle(-desiredAngle)
|
||||
LeftHip:SetDesiredAngle(-desiredAngle)
|
||||
|
||||
|
||||
local tool = getTool()
|
||||
|
||||
if tool then
|
||||
|
||||
animStringValueObject = getToolAnim(tool)
|
||||
|
||||
if animStringValueObject then
|
||||
toolAnim = animStringValueObject.Value
|
||||
-- message recieved, delete StringValue
|
||||
animStringValueObject.Parent = nil
|
||||
toolAnimTime = time + .3
|
||||
end
|
||||
|
||||
if time > toolAnimTime then
|
||||
toolAnimTime = 0
|
||||
toolAnim = "None"
|
||||
end
|
||||
|
||||
animateTool()
|
||||
|
||||
|
||||
else
|
||||
toolAnim = "None"
|
||||
toolAnimTime = 0
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
-- connect events
|
||||
|
||||
Humanoid.Died:connect(onDied)
|
||||
Humanoid.Running:connect(onRunning)
|
||||
Humanoid.Jumping:connect(onJumping)
|
||||
Humanoid.Climbing:connect(onClimbing)
|
||||
Humanoid.GettingUp:connect(onGettingUp)
|
||||
Humanoid.FreeFalling:connect(onFreeFall)
|
||||
Humanoid.FallingDown:connect(onFallingDown)
|
||||
Humanoid.Seated:connect(onSeated)
|
||||
Humanoid.PlatformStanding:connect(onPlatformStanding)
|
||||
Humanoid.Swimming:connect(onSwimming)
|
||||
-- main program
|
||||
|
||||
local runService = game:service("RunService");
|
||||
|
||||
while Figure.Parent~=nil do
|
||||
local _, time = wait(0.1)
|
||||
move(time)
|
||||
end
|
||||
</string>
|
||||
<bool name="archivable">true</bool>
|
||||
</Properties>
|
||||
</Item>
|
||||
<Item class="Script" referent="RBX1">
|
||||
<Properties>
|
||||
<bool name="Disabled">false</bool>
|
||||
<Content name="LinkedSource">
|
||||
<null></null>
|
||||
</Content>
|
||||
<string name="Name">RobloxTeam</string>
|
||||
<string name="Source">
|
||||
-- Now with exciting TeamColors HACK!
|
||||
|
||||
function waitForChild(parent, childName)
|
||||
local child = parent:findFirstChild(childName)
|
||||
if child then return child end
|
||||
while true do
|
||||
child = parent.ChildAdded:wait()
|
||||
if child.Name==childName then return child end
|
||||
end
|
||||
end
|
||||
|
||||
-- TEAM COLORS
|
||||
|
||||
|
||||
function onTeamChanged(player)
|
||||
|
||||
wait(1)
|
||||
|
||||
local char = player.Character
|
||||
if char == nil then return end
|
||||
|
||||
if player.Neutral then
|
||||
-- Replacing the current BodyColor object will force a reset
|
||||
local old = char:findFirstChild("Body Colors")
|
||||
if not old then return end
|
||||
old:clone().Parent = char
|
||||
old.Parent = nil
|
||||
else
|
||||
local head = char:findFirstChild("Head")
|
||||
local torso = char:findFirstChild("Torso")
|
||||
local left_arm = char:findFirstChild("Left Arm")
|
||||
local right_arm = char:findFirstChild("Right Arm")
|
||||
local left_leg = char:findFirstChild("Left Leg")
|
||||
local right_leg = char:findFirstChild("Right Leg")
|
||||
|
||||
if head then head.BrickColor = BrickColor.new(24) end
|
||||
if torso then torso.BrickColor = player.TeamColor end
|
||||
if left_arm then left_arm.BrickColor = BrickColor.new(26) end
|
||||
if right_arm then right_arm.BrickColor = BrickColor.new(26) end
|
||||
if left_leg then left_leg.BrickColor = BrickColor.new(26) end
|
||||
if right_leg then right_leg.BrickColor = BrickColor.new(26) end
|
||||
end
|
||||
end
|
||||
|
||||
function onPlayerPropChanged(property, player)
|
||||
if property == "Character" then
|
||||
onTeamChanged(player)
|
||||
end
|
||||
if property== "TeamColor" or property == "Neutral" then
|
||||
onTeamChanged(player)
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
local cPlayer = game.Players:GetPlayerFromCharacter(script.Parent)
|
||||
cPlayer.Changed:connect(function(property) onPlayerPropChanged(property, cPlayer) end )
|
||||
onTeamChanged(cPlayer)
|
||||
|
||||
</string>
|
||||
<bool name="archivable">true</bool>
|
||||
</Properties>
|
||||
</Item>
|
||||
</roblox>
|
||||
@@ -0,0 +1,649 @@
|
||||
<roblox xmlns:xmime="http://www.w3.org/2005/05/xmlmime" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://www.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)
|
||||
	local child = parent:findFirstChild(childName)
|
||||
	if child then return child end
|
||||
	while true do
|
||||
		child = parent.ChildAdded:wait()
|
||||
		if child.Name==childName then return child end
|
||||
	end
|
||||
end
|
||||
|
||||
local Figure = script.Parent
|
||||
local Torso = waitForChild(Figure, "Torso")
|
||||
local RightShoulder = waitForChild(Torso, "Right Shoulder")
|
||||
local LeftShoulder = waitForChild(Torso, "Left Shoulder")
|
||||
local RightHip = waitForChild(Torso, "Right Hip")
|
||||
local LeftHip = waitForChild(Torso, "Left Hip")
|
||||
local Neck = waitForChild(Torso, "Neck")
|
||||
local Humanoid = waitForChild(Figure, "Humanoid")
|
||||
local pose = "Standing"
|
||||
|
||||
local currentAnim = ""
|
||||
local currentAnimTrack = nil
|
||||
local currentAnimKeyframeHandler = nil
|
||||
local currentAnimSpeed = 1.0
|
||||
local animTable = {}
|
||||
local animNames = {
|
||||
	idle = 	{	
|
||||
				{ id = "http://www.roblox.com/asset/?id=125750544", weight = 9 },
|
||||
				{ id = "http://www.roblox.com/asset/?id=125750618", weight = 1 }
|
||||
			},
|
||||
	walk = 	{ 	
|
||||
				{ id = "http://www.roblox.com/asset/?id=125749145", 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=125750759", weight = 10 }
|
||||
			},
|
||||
	climb = {
|
||||
				{ id = "http://www.roblox.com/asset/?id=125750800", weight = 10 }
|
||||
			},
|
||||
	sit = 	{
|
||||
				{ id = "http://www.roblox.com/asset/?id=178130996", weight = 10 }
|
||||
			},	
|
||||
	toolnone = {
|
||||
				{ id = "http://www.roblox.com/asset/?id=125750867", 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 }
|
||||
			},
|
||||
	dance = {
|
||||
				{ id = "http://www.roblox.com/asset/?id=130018893", weight = 10 },
|
||||
				{ id = "http://www.roblox.com/asset/?id=132546839", weight = 10 },
|
||||
				{ id = "http://www.roblox.com/asset/?id=132546884", weight = 10 }
|
||||
			},
|
||||
	dance2 = {
|
||||
				{ id = "http://www.roblox.com/asset/?id=160934142", weight = 10 },
|
||||
				{ id = "http://www.roblox.com/asset/?id=160934298", weight = 10 },
|
||||
				{ id = "http://www.roblox.com/asset/?id=160934376", weight = 10 }
|
||||
			},
|
||||
	dance3 = {
|
||||
				{ id = "http://www.roblox.com/asset/?id=160934458", weight = 10 },
|
||||
				{ id = "http://www.roblox.com/asset/?id=160934530", weight = 10 },
|
||||
				{ id = "http://www.roblox.com/asset/?id=160934593", weight = 10 }
|
||||
			},
|
||||
	laugh = {
|
||||
				{ id = "http://www.roblox.com/asset/?id=129423131", weight = 10 }
|
||||
			},
|
||||
	cheer = {
|
||||
				{ id = "http://www.roblox.com/asset/?id=129423030", weight = 10 }
|
||||
			},
|
||||
}
|
||||
|
||||
-- Existance in this list signifies that it is an emote, the value indicates if it is a looping emote
|
||||
local emoteNames = { wave = false, point = false, dance = true, dance2 = true, dance3 = true, laugh = false, cheer = false}
|
||||
|
||||
math.randomseed(tick())
|
||||
|
||||
function configureAnimationSet(name, fileList)
|
||||
	if (animTable[name] ~= nil) then
|
||||
		for _, connection in pairs(animTable[name].connections) do
|
||||
			connection:disconnect()
|
||||
		end
|
||||
	end
|
||||
	animTable[name] = {}
|
||||
	animTable[name].count = 0
|
||||
	animTable[name].totalWeight = 0	
|
||||
	animTable[name].connections = {}
|
||||
|
||||
	-- check for config values
|
||||
	local config = script:FindFirstChild(name)
|
||||
	if (config ~= nil) then
|
||||
--		print("Loading anims " .. name)
|
||||
		table.insert(animTable[name].connections, config.ChildAdded:connect(function(child) configureAnimationSet(name, fileList) end))
|
||||
		table.insert(animTable[name].connections, config.ChildRemoved:connect(function(child) configureAnimationSet(name, fileList) end))
|
||||
		local idx = 1
|
||||
		for _, childPart in pairs(config:GetChildren()) do
|
||||
			if (childPart:IsA("Animation")) then
|
||||
				table.insert(animTable[name].connections, childPart.Changed:connect(function(property) configureAnimationSet(name, fileList) end))
|
||||
				animTable[name][idx] = {}
|
||||
				animTable[name][idx].anim = childPart
|
||||
				local weightObject = childPart:FindFirstChild("Weight")
|
||||
				if (weightObject == nil) then
|
||||
					animTable[name][idx].weight = 1
|
||||
				else
|
||||
					animTable[name][idx].weight = weightObject.Value
|
||||
				end
|
||||
				animTable[name].count = animTable[name].count + 1
|
||||
				animTable[name].totalWeight = animTable[name].totalWeight + animTable[name][idx].weight
|
||||
	--			print(name .. " [" .. idx .. "] " .. animTable[name][idx].anim.AnimationId .. " (" .. animTable[name][idx].weight .. ")")
|
||||
				idx = idx + 1
|
||||
			end
|
||||
		end
|
||||
	end
|
||||
|
||||
	-- fallback to defaults
|
||||
	if (animTable[name].count <= 0) then
|
||||
		for idx, anim in pairs(fileList) do
|
||||
			animTable[name][idx] = {}
|
||||
			animTable[name][idx].anim = Instance.new("Animation")
|
||||
			animTable[name][idx].anim.Name = name
|
||||
			animTable[name][idx].anim.AnimationId = anim.id
|
||||
			animTable[name][idx].weight = anim.weight
|
||||
			animTable[name].count = animTable[name].count + 1
|
||||
			animTable[name].totalWeight = animTable[name].totalWeight + anim.weight
|
||||
--			print(name .. " [" .. idx .. "] " .. anim.id .. " (" .. anim.weight .. ")")
|
||||
		end
|
||||
	end
|
||||
end
|
||||
|
||||
-- Setup animation objects
|
||||
function scriptChildModified(child)
|
||||
	local fileList = animNames[child.Name]
|
||||
	if (fileList ~= nil) then
|
||||
		configureAnimationSet(child.Name, fileList)
|
||||
	end	
|
||||
end
|
||||
|
||||
script.ChildAdded:connect(scriptChildModified)
|
||||
script.ChildRemoved:connect(scriptChildModified)
|
||||
|
||||
|
||||
for name, fileList in pairs(animNames) do
|
||||
	configureAnimationSet(name, fileList)
|
||||
end	
|
||||
|
||||
-- ANIMATION
|
||||
|
||||
-- declarations
|
||||
local toolAnim = "None"
|
||||
local toolAnimTime = 0
|
||||
|
||||
local jumpAnimTime = 0
|
||||
local jumpAnimDuration = 0.3
|
||||
|
||||
local toolTransitionTime = 0.1
|
||||
local fallTransitionTime = 0.3
|
||||
local jumpMaxLimbVelocity = 0.75
|
||||
|
||||
-- functions
|
||||
|
||||
function stopAllAnimations()
|
||||
	local oldAnim = currentAnim
|
||||
|
||||
	-- return to idle if finishing an emote
|
||||
	if (emoteNames[oldAnim] ~= nil and emoteNames[oldAnim] == false) then
|
||||
		oldAnim = "idle"
|
||||
	end
|
||||
|
||||
	currentAnim = ""
|
||||
	if (currentAnimKeyframeHandler ~= nil) then
|
||||
		currentAnimKeyframeHandler:disconnect()
|
||||
	end
|
||||
|
||||
	if (currentAnimTrack ~= nil) then
|
||||
		currentAnimTrack:Stop()
|
||||
		currentAnimTrack:Destroy()
|
||||
		currentAnimTrack = nil
|
||||
	end
|
||||
	return oldAnim
|
||||
end
|
||||
|
||||
function setAnimationSpeed(speed)
|
||||
	if speed ~= currentAnimSpeed then
|
||||
		currentAnimSpeed = speed
|
||||
		currentAnimTrack:AdjustSpeed(currentAnimSpeed)
|
||||
	end
|
||||
end
|
||||
|
||||
function keyFrameReachedFunc(frameName)
|
||||
	if (frameName == "End") then
|
||||
--		print("Keyframe : ".. frameName)
|
||||
		local repeatAnim = stopAllAnimations()
|
||||
		local animSpeed = currentAnimSpeed
|
||||
		playAnimation(repeatAnim, 0.0, Humanoid)
|
||||
		setAnimationSpeed(animSpeed)
|
||||
	end
|
||||
end
|
||||
|
||||
-- Preload animations
|
||||
function playAnimation(animName, transitionTime, humanoid)
|
||||
	local idleFromEmote = (animName == "idle" and emoteNames[currentAnim] ~= nil)
|
||||
	if (animName ~= currentAnim and not idleFromEmote) then		
|
||||
		
|
||||
		if (currentAnimTrack ~= nil) then
|
||||
			currentAnimTrack:Stop(transitionTime)
|
||||
			currentAnimTrack:Destroy()
|
||||
		end
|
||||
|
||||
		currentAnimSpeed = 1.0
|
||||
		local roll = math.random(1, animTable[animName].totalWeight)
|
||||
		local origRoll = roll
|
||||
		local idx = 1
|
||||
		while (roll > animTable[animName][idx].weight) do
|
||||
			roll = roll - animTable[animName][idx].weight
|
||||
			idx = idx + 1
|
||||
		end
|
||||
--		print(animName .. " " .. idx .. " [" .. origRoll .. "]")
|
||||
		local anim = animTable[animName][idx].anim
|
||||
|
||||
		-- load it to the humanoid; get AnimationTrack
|
||||
		currentAnimTrack = humanoid:LoadAnimation(anim)
|
||||
		
|
||||
		-- play the animation
|
||||
		currentAnimTrack:Play(transitionTime)
|
||||
		currentAnim = animName
|
||||
|
||||
		-- set up keyframe name triggers
|
||||
		if (currentAnimKeyframeHandler ~= nil) then
|
||||
			currentAnimKeyframeHandler:disconnect()
|
||||
		end
|
||||
		currentAnimKeyframeHandler = currentAnimTrack.KeyframeReached:connect(keyFrameReachedFunc)
|
||||
	end
|
||||
end
|
||||
|
||||
-------------------------------------------------------------------------------------------
|
||||
-------------------------------------------------------------------------------------------
|
||||
|
||||
local toolAnimName = ""
|
||||
local toolAnimTrack = nil
|
||||
local currentToolAnimKeyframeHandler = nil
|
||||
|
||||
function toolKeyFrameReachedFunc(frameName)
|
||||
	if (frameName == "End") then
|
||||
--		print("Keyframe : ".. frameName)
|
||||
		local repeatAnim = stopToolAnimations()
|
||||
		playToolAnimation(repeatAnim, 0.0, Humanoid)
|
||||
	end
|
||||
end
|
||||
|
||||
|
||||
function playToolAnimation(animName, transitionTime, humanoid)
|
||||
	if (animName ~= toolAnimName) then		
|
||||
		
|
||||
		if (toolAnimTrack ~= nil) then
|
||||
			toolAnimTrack:Stop()
|
||||
			toolAnimTrack:Destroy()
|
||||
			transitionTime = 0
|
||||
		end
|
||||
|
||||
		local roll = math.random(1, animTable[animName].totalWeight)
|
||||
		local origRoll = roll
|
||||
		local idx = 1
|
||||
		while (roll > animTable[animName][idx].weight) do
|
||||
			roll = roll - animTable[animName][idx].weight
|
||||
			idx = idx + 1
|
||||
		end
|
||||
--		print(animName .. " * " .. idx .. " [" .. origRoll .. "]")
|
||||
		local anim = animTable[animName][idx].anim
|
||||
|
||||
		-- load it to the humanoid; get AnimationTrack
|
||||
		toolAnimTrack = humanoid:LoadAnimation(anim)
|
||||
		
|
||||
		-- play the animation
|
||||
		toolAnimTrack:Play(transitionTime)
|
||||
		toolAnimName = animName
|
||||
|
||||
		currentToolAnimKeyframeHandler = toolAnimTrack.KeyframeReached:connect(toolKeyFrameReachedFunc)
|
||||
	end
|
||||
end
|
||||
|
||||
function stopToolAnimations()
|
||||
	local oldAnim = toolAnimName
|
||||
|
||||
	if (currentToolAnimKeyframeHandler ~= nil) then
|
||||
		currentToolAnimKeyframeHandler:disconnect()
|
||||
	end
|
||||
|
||||
	toolAnimName = ""
|
||||
	if (toolAnimTrack ~= nil) then
|
||||
		toolAnimTrack:Stop()
|
||||
		toolAnimTrack:Destroy()
|
||||
		toolAnimTrack = nil
|
||||
	end
|
||||
|
||||
|
||||
	return oldAnim
|
||||
end
|
||||
|
||||
-------------------------------------------------------------------------------------------
|
||||
-------------------------------------------------------------------------------------------
|
||||
|
||||
|
||||
function onRunning(speed)
|
||||
	if speed>0.5 then
|
||||
		playAnimation("walk", 0.1, Humanoid)
|
||||
		pose = "Running"
|
||||
	else
|
||||
		playAnimation("idle", 0.1, Humanoid)
|
||||
		pose = "Standing"
|
||||
	end
|
||||
end
|
||||
|
||||
function onDied()
|
||||
	pose = "Dead"
|
||||
end
|
||||
|
||||
function onJumping()
|
||||
	playAnimation("jump", 0.1, Humanoid)
|
||||
	jumpAnimTime = jumpAnimDuration
|
||||
	pose = "Jumping"
|
||||
end
|
||||
|
||||
function onClimbing(speed)
|
||||
	playAnimation("climb", 0.1, Humanoid)
|
||||
	setAnimationSpeed(speed / 12.0)
|
||||
	pose = "Climbing"
|
||||
end
|
||||
|
||||
function onGettingUp()
|
||||
	pose = "GettingUp"
|
||||
end
|
||||
|
||||
function onFreeFall()
|
||||
	if (jumpAnimTime <= 0) then
|
||||
		playAnimation("fall", fallTransitionTime, Humanoid)
|
||||
	end
|
||||
	pose = "FreeFall"
|
||||
end
|
||||
|
||||
function onFallingDown()
|
||||
	pose = "FallingDown"
|
||||
end
|
||||
|
||||
function onSeated()
|
||||
	pose = "Seated"
|
||||
end
|
||||
|
||||
function onPlatformStanding()
|
||||
	pose = "PlatformStanding"
|
||||
end
|
||||
|
||||
function onSwimming(speed)
|
||||
	if speed>0 then
|
||||
		pose = "Running"
|
||||
	else
|
||||
		pose = "Standing"
|
||||
	end
|
||||
end
|
||||
|
||||
function getTool()	
|
||||
	for _, kid in ipairs(Figure:GetChildren()) do
|
||||
		if kid.className == "Tool" then return kid end
|
||||
	end
|
||||
	return nil
|
||||
end
|
||||
|
||||
function getToolAnim(tool)
|
||||
	for _, c in ipairs(tool:GetChildren()) do
|
||||
		if c.Name == "toolanim" and c.className == "StringValue" then
|
||||
			return c
|
||||
		end
|
||||
	end
|
||||
	return nil
|
||||
end
|
||||
|
||||
function animateTool()
|
||||
	
|
||||
	if (toolAnim == "None") then
|
||||
		playToolAnimation("toolnone", toolTransitionTime, Humanoid)
|
||||
		return
|
||||
	end
|
||||
|
||||
	if (toolAnim == "Slash") then
|
||||
		playToolAnimation("toolslash", 0, Humanoid)
|
||||
		return
|
||||
	end
|
||||
|
||||
	if (toolAnim == "Lunge") then
|
||||
		playToolAnimation("toollunge", 0, Humanoid)
|
||||
		return
|
||||
	end
|
||||
end
|
||||
|
||||
function moveSit()
|
||||
	RightShoulder.MaxVelocity = 0.15
|
||||
	LeftShoulder.MaxVelocity = 0.15
|
||||
	RightShoulder:SetDesiredAngle(3.14 /2)
|
||||
	LeftShoulder:SetDesiredAngle(-3.14 /2)
|
||||
	RightHip:SetDesiredAngle(3.14 /2)
|
||||
	LeftHip:SetDesiredAngle(-3.14 /2)
|
||||
end
|
||||
|
||||
local lastTick = 0
|
||||
|
||||
function move(time)
|
||||
	local amplitude = 1
|
||||
	local frequency = 1
|
||||
	local deltaTime = time - lastTick
|
||||
	lastTick = time
|
||||
|
||||
	local climbFudge = 0
|
||||
	local setAngles = false
|
||||
|
||||
	if (jumpAnimTime > 0) then
|
||||
		jumpAnimTime = jumpAnimTime - deltaTime
|
||||
	end
|
||||
|
||||
	if (pose == "FreeFall" and jumpAnimTime <= 0) then
|
||||
		playAnimation("fall", fallTransitionTime, Humanoid)
|
||||
	elseif (pose == "Seated") then
|
||||
		playAnimation("sit", 0.5, Humanoid)
|
||||
		return
|
||||
	elseif (pose == "Running") then
|
||||
		playAnimation("walk", 0.1, Humanoid)
|
||||
	elseif (pose == "Dead" or pose == "GettingUp" or pose == "FallingDown" or pose == "Seated" or pose == "PlatformStanding") then
|
||||
--		print("Wha " .. pose)
|
||||
		stopAllAnimations()
|
||||
		amplitude = 0.1
|
||||
		frequency = 1
|
||||
		setAngles = true
|
||||
	end
|
||||
|
||||
	if (setAngles) then
|
||||
		desiredAngle = amplitude * math.sin(time * frequency)
|
||||
|
||||
		RightShoulder:SetDesiredAngle(desiredAngle + climbFudge)
|
||||
		LeftShoulder:SetDesiredAngle(desiredAngle - climbFudge)
|
||||
		RightHip:SetDesiredAngle(-desiredAngle)
|
||||
		LeftHip:SetDesiredAngle(-desiredAngle)
|
||||
	end
|
||||
|
||||
	-- Tool Animation handling
|
||||
	local tool = getTool()
|
||||
	if tool then
|
||||
	
|
||||
		animStringValueObject = getToolAnim(tool)
|
||||
|
||||
		if animStringValueObject then
|
||||
			toolAnim = animStringValueObject.Value
|
||||
			-- message recieved, delete StringValue
|
||||
			animStringValueObject.Parent = nil
|
||||
			toolAnimTime = time + .3
|
||||
		end
|
||||
|
||||
		if time > toolAnimTime then
|
||||
			toolAnimTime = 0
|
||||
			toolAnim = "None"
|
||||
		end
|
||||
|
||||
		animateTool()		
|
||||
	else
|
||||
		stopToolAnimations()
|
||||
		toolAnim = "None"
|
||||
		toolAnimTime = 0
|
||||
	end
|
||||
end
|
||||
|
||||
-- connect events
|
||||
Humanoid.Died:connect(onDied)
|
||||
Humanoid.Running:connect(onRunning)
|
||||
Humanoid.Jumping:connect(onJumping)
|
||||
Humanoid.Climbing:connect(onClimbing)
|
||||
Humanoid.GettingUp:connect(onGettingUp)
|
||||
Humanoid.FreeFalling:connect(onFreeFall)
|
||||
Humanoid.FallingDown:connect(onFallingDown)
|
||||
Humanoid.Seated:connect(onSeated)
|
||||
Humanoid.PlatformStanding:connect(onPlatformStanding)
|
||||
Humanoid.Swimming:connect(onSwimming)
|
||||
|
||||
-- setup emote chat hook
|
||||
Game.Players.LocalPlayer.Chatted:connect(function(msg)
|
||||
	local emote = ""
|
||||
	if (string.sub(msg, 1, 3) == "/e ") then
|
||||
		emote = string.sub(msg, 4)
|
||||
	elseif (string.sub(msg, 1, 7) == "/emote ") then
|
||||
		emote = string.sub(msg, 8)
|
||||
	end
|
||||
	
|
||||
	if (pose == "Standing" and emoteNames[emote] ~= nil) then
|
||||
		playAnimation(emote, 0.1, Humanoid)
|
||||
	end
|
||||
--	print("===> " .. string.sub(msg, 1, 3) .. "(" .. emote .. ")")
|
||||
end)
|
||||
|
||||
|
||||
-- main program
|
||||
|
||||
local runService = game:service("RunService");
|
||||
|
||||
-- initialize to idle
|
||||
playAnimation("idle", 0.1, Humanoid)
|
||||
pose = "Standing"
|
||||
|
||||
while Figure.Parent~=nil do
|
||||
	local _, time = wait(0.1)
|
||||
	move(time)
|
||||
end
|
||||
|
||||
|
||||
</ProtectedString>
|
||||
</Properties>
|
||||
<Item class="StringValue" referent="RBXB9F94AC9C8714EE9B8DC5AC6394A39D8">
|
||||
<Properties>
|
||||
<string name="Name">idle</string>
|
||||
<string name="Value"></string>
|
||||
</Properties>
|
||||
<Item class="Animation" referent="RBX00CF3DBBF6A44ED5BBC717359071CB44">
|
||||
<Properties>
|
||||
<Content name="AnimationId"><url>http://www.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>
|
||||
@@ -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>
|
||||
@@ -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"> while script.Parent.Head==nil do 	wait(0.05) end function newSound(id) 	local sound = Instance.new("Sound") 	sound.SoundId = id 	sound.Parent = script.Parent.Head 	return sound end sDied = newSound("rbxasset://sounds/uuhhh.wav") sFallingDown = newSound("rbxasset://sounds/splat.wav") sFreeFalling = newSound("rbxasset://sounds/swoosh.wav") sGettingUp = newSound("rbxasset://sounds/hit.wav") sJumping = newSound("rbxasset://sounds/button.wav") sRunning = newSound("rbxasset://sounds/bfsl-minifigfoots1.mp3") sRunning.Looped = true function onDied() 	sDied:play() end function onState(state, sound) 	if state then 		sound:play() 	else 		sound:pause() 	end end function onRunning(speed) 	if speed>0 then 		sRunning:play() 	else 		sRunning:pause() 	end end while script.Parent.Humanoid==nil do 	wait(0.05) end h = script.Parent.Humanoid h.Died:connect(onDied) h.Running:connect(onRunning) h.Jumping:connect(function(state) onState(state, sJumping) end) h.GettingUp:connect(function(state) onState(state, sGettingUp) end) h.FreeFalling:connect(function(state) onState(state, sFreeFalling) end) h.FallingDown:connect(function(state) onState(state, sFallingDown) end) -- regeneration while true do 	local s = wait(1) 	local health=h.Health 	if health>0 and health<h.MaxHealth then 		health = health + 0.01*s*h.MaxHealth 		if health*1.05 < h.MaxHealth then 			h.Health = health 		else 			h.Health = h.MaxHealth 		end 	end end </string>
|
||||
</Properties>
|
||||
</Item>
|
||||
</roblox>
|
||||
@@ -0,0 +1,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>
|
||||
@@ -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 local Torso = Figure:findFirstChild("Torso") Torso:makeJoints()</string>
|
||||
<bool name="archivable">true</bool>
|
||||
</Properties>
|
||||
</Item>
|
||||
</roblox>
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,737 @@
|
||||
<roblox xmlns:xmime="http://www.w3.org/2005/05/xmlmime" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://www.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>>_<</utterance>
|
||||
<utterance>T_T</utterance>
|
||||
<utterance>^_^</utterance>
|
||||
<utterance><(0_0<) <(0_0)> (>0_0)> KIRBY DANCE</utterance>
|
||||
<utterance>)';</utterance>
|
||||
<utterance>:3</utterance>
|
||||
</utterance>
|
||||
<utterance>
|
||||
Ratings
|
||||
<utterance>Rate it!</utterance>
|
||||
<utterance>I give it a 1 out of 10</utterance>
|
||||
<utterance>I give it a 2 out of 10</utterance>
|
||||
<utterance>I give it a 3 out of 10</utterance>
|
||||
<utterance>I give it a 4 out of 10</utterance>
|
||||
<utterance>I give it a 5 out of 10</utterance>
|
||||
<utterance>I give it a 6 out of 10</utterance>
|
||||
<utterance>I give it a 7 out of 10</utterance>
|
||||
<utterance>I give it a 8 out of 10</utterance>
|
||||
<utterance>I give it a 9 out of 10</utterance>
|
||||
<utterance>I give it a 10 out of 10!</utterance>
|
||||
</utterance>
|
||||
</roblox>
|
||||
Binary file not shown.
Binary file not shown.
Reference in New Issue
Block a user