parent
75798b1038
commit
582df460ea
|
|
@ -0,0 +1,26 @@
|
||||||
|
local Players = game:GetService("Players")
|
||||||
|
|
||||||
|
local character = script.Parent
|
||||||
|
local player = Players:GetPlayerFromCharacter(character)
|
||||||
|
|
||||||
|
local climbing = Instance.new("BoolValue")
|
||||||
|
climbing.Name = "Climbing"
|
||||||
|
climbing.Parent = character
|
||||||
|
|
||||||
|
local setValue = Instance.new("RemoteEvent")
|
||||||
|
setValue.Name = "SetValue"
|
||||||
|
setValue.Parent = climbing
|
||||||
|
|
||||||
|
local function onSetValue(requester, value)
|
||||||
|
if requester ~= player then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
if typeof(value) ~= "boolean" then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
climbing.Value = value
|
||||||
|
end
|
||||||
|
|
||||||
|
setValue.OnServerEvent:Connect(onSetValue)
|
||||||
|
|
@ -0,0 +1,21 @@
|
||||||
|
local Debris = game:GetService("Debris")
|
||||||
|
|
||||||
|
local char = script.Parent
|
||||||
|
local humanoid = char:WaitForChild("Humanoid")
|
||||||
|
local head = char:WaitForChild("Head")
|
||||||
|
|
||||||
|
local function onStateChanged(old,new)
|
||||||
|
if new.Name == "Landed" then
|
||||||
|
local velocity = humanoid.Torso.Velocity
|
||||||
|
local power = (-velocity.Y * workspace.Gravity) / 2
|
||||||
|
|
||||||
|
local force = Instance.new("BodyForce")
|
||||||
|
force.Name = "Bounce"
|
||||||
|
force.Force = Vector3.new(0,power,0)
|
||||||
|
force.Parent = head
|
||||||
|
|
||||||
|
Debris:AddItem(force, 1/30)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
humanoid.StateChanged:connect(onStateChanged)
|
||||||
|
|
@ -0,0 +1,34 @@
|
||||||
|
local handle = script.Parent
|
||||||
|
local hat = handle:FindFirstChildWhichIsA("Accoutrement")
|
||||||
|
local equipSignal
|
||||||
|
|
||||||
|
local function onTouched(hit)
|
||||||
|
local char = hit:FindFirstAncestorWhichIsA("Model")
|
||||||
|
|
||||||
|
if char then
|
||||||
|
local hitHum = char:FindFirstChild("Humanoid")
|
||||||
|
|
||||||
|
if hitHum then
|
||||||
|
local existingHat = char:FindFirstChildWhichIsA("Accoutrement")
|
||||||
|
|
||||||
|
if existingHat == nil or existingHat == hat then
|
||||||
|
if equipSignal then
|
||||||
|
equipSignal:Disconnect()
|
||||||
|
equipSignal = nil
|
||||||
|
end
|
||||||
|
|
||||||
|
hat.Parent = workspace
|
||||||
|
handle.Parent = hat
|
||||||
|
|
||||||
|
handle:SetNetworkOwnershipAuto()
|
||||||
|
hitHum:AddAccessory(hat)
|
||||||
|
|
||||||
|
script:Destroy()
|
||||||
|
else
|
||||||
|
hat.Parent = workspace
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
equipSignal = handle.Touched:Connect(onTouched)
|
||||||
|
|
@ -0,0 +1,15 @@
|
||||||
|
local UserInputService = game:GetService("UserInputService")
|
||||||
|
|
||||||
|
local server = script.Parent
|
||||||
|
local dropHat = server:WaitForChild("DropHat")
|
||||||
|
|
||||||
|
local function onInputBegan(input, gameProcessed)
|
||||||
|
if not gameProcessed then
|
||||||
|
local keyCode = input.KeyCode.Name
|
||||||
|
if keyCode == "Equals" or keyCode == "DPadDown" then
|
||||||
|
dropHat:FireServer()
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
UserInputService.InputBegan:Connect(onInputBegan)
|
||||||
|
|
@ -0,0 +1,50 @@
|
||||||
|
local Players = game:GetService("Players")
|
||||||
|
|
||||||
|
local char = script.Parent
|
||||||
|
local torso = char:WaitForChild("HumanoidRootPart")
|
||||||
|
|
||||||
|
local humanoid = char:WaitForChild("Humanoid")
|
||||||
|
local hatPickup = script:WaitForChild("HatPickup")
|
||||||
|
|
||||||
|
local dropHat = Instance.new("RemoteEvent")
|
||||||
|
dropHat.Name = "DropHat"
|
||||||
|
dropHat.Parent = script
|
||||||
|
|
||||||
|
local function onDropHat(player)
|
||||||
|
local myPlayer = Players:GetPlayerFromCharacter(char)
|
||||||
|
assert(player == myPlayer, "Cannot drop hats unless it is your character.")
|
||||||
|
|
||||||
|
local dropPos = torso.CFrame * CFrame.new(0, 5.4, -8)
|
||||||
|
|
||||||
|
for _,hat in pairs(humanoid:GetAccessories()) do
|
||||||
|
local handle = hat:FindFirstChild("Handle")
|
||||||
|
|
||||||
|
if handle then
|
||||||
|
local newHandle = handle:Clone()
|
||||||
|
|
||||||
|
for _,joint in pairs(newHandle:GetJoints()) do
|
||||||
|
joint:Destroy()
|
||||||
|
end
|
||||||
|
|
||||||
|
newHandle.CFrame = dropPos
|
||||||
|
newHandle.Anchored = true
|
||||||
|
newHandle.CanCollide = false
|
||||||
|
newHandle.Parent = workspace
|
||||||
|
|
||||||
|
handle:Destroy()
|
||||||
|
hat.Parent = newHandle
|
||||||
|
|
||||||
|
wait(.1)
|
||||||
|
|
||||||
|
newHandle.Anchored = false
|
||||||
|
newHandle.CanCollide = true
|
||||||
|
newHandle:SetNetworkOwner(nil)
|
||||||
|
|
||||||
|
local pickup = hatPickup:Clone()
|
||||||
|
pickup.Parent = newHandle
|
||||||
|
pickup.Disabled = false
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
dropHat.OnServerEvent:Connect(onDropHat)
|
||||||
|
|
@ -0,0 +1,45 @@
|
||||||
|
local RunService = game:GetService("RunService")
|
||||||
|
|
||||||
|
local char = script.Parent
|
||||||
|
local rootPart = char:WaitForChild("HumanoidRootPart")
|
||||||
|
|
||||||
|
local platform = Instance.new("Part")
|
||||||
|
platform.Name = "NoForceField"
|
||||||
|
platform.TopSurface = 0
|
||||||
|
platform.BottomSurface = 0
|
||||||
|
platform.BrickColor = BrickColor.new("Bright orange")
|
||||||
|
platform.Size = Vector3.new(5, 1, 2)
|
||||||
|
platform.Anchored = true
|
||||||
|
platform.Transparency = 1
|
||||||
|
|
||||||
|
local down = Vector3.new(0, -100, 0)
|
||||||
|
local platformOffset = Vector3.new(0, -.5, 0)
|
||||||
|
|
||||||
|
while wait() do
|
||||||
|
local start = rootPart.CFrame
|
||||||
|
local startPos = start.p
|
||||||
|
local startRay = Ray.new(startPos, start.lookVector * 5)
|
||||||
|
|
||||||
|
local hit, pos, norm = workspace:FindPartOnRay(startRay, char)
|
||||||
|
local floorCheckRay
|
||||||
|
|
||||||
|
local pass = false
|
||||||
|
|
||||||
|
if hit and hit.CanCollide and hit:IsGrounded() then
|
||||||
|
if hit:IsA("UnionOperation") or (not hit:IsA("Part") or hit.Shape.Name == "Block") then
|
||||||
|
local floorCheckRay = Ray.new(pos - (norm / 5), down)
|
||||||
|
local floor, floorPos = workspace:FindPartOnRayWithIgnoreList(floorCheckRay, {char, hit})
|
||||||
|
|
||||||
|
if floor and floor.CanCollide and startPos.Y - 2 > floorPos.Y then
|
||||||
|
floorPos = floorPos + platformOffset
|
||||||
|
platform.Parent = char
|
||||||
|
platform.CFrame = CFrame.new(Vector3.new(pos.X + norm.X, floorPos.Y, pos.Z + norm.Z),floorPos)
|
||||||
|
pass = true
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
if not pass then
|
||||||
|
platform.Parent = nil
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
@ -0,0 +1,58 @@
|
||||||
|
local RunService = game:GetService("RunService")
|
||||||
|
|
||||||
|
local char = script.Parent
|
||||||
|
local humanoid = char:WaitForChild("Humanoid")
|
||||||
|
local rootPart = char:WaitForChild("HumanoidRootPart")
|
||||||
|
local climbForce = rootPart:WaitForChild("ClimbForce")
|
||||||
|
local rayDown = Vector3.new(0, -5000, 0)
|
||||||
|
|
||||||
|
local function moveTowards(value, goal, rate)
|
||||||
|
if value < goal then
|
||||||
|
return math.min(goal, value + rate)
|
||||||
|
elseif value > goal then
|
||||||
|
return math.max(goal, value - rate)
|
||||||
|
else
|
||||||
|
return goal
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
local lastFloorLevel = 0
|
||||||
|
|
||||||
|
local function getFloorLevel()
|
||||||
|
local origin = rootPart.Position
|
||||||
|
local ray = Ray.new(origin, rayDown)
|
||||||
|
local hit, pos = workspace:FindPartOnRay(ray, char)
|
||||||
|
return pos.Y, math.clamp(math.abs(pos.Y - origin.Y), -1, 1)
|
||||||
|
end
|
||||||
|
|
||||||
|
local lastLevel = getFloorLevel()
|
||||||
|
local updateCon
|
||||||
|
|
||||||
|
local function update()
|
||||||
|
if humanoid.Health == 0 then
|
||||||
|
updateCon:Disconnect()
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
local level, dist = getFloorLevel()
|
||||||
|
|
||||||
|
if humanoid.SeatPart then
|
||||||
|
humanoid.HipHeight = 0
|
||||||
|
lastLevel = level
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
local yVel = rootPart.Velocity.Y
|
||||||
|
|
||||||
|
if math.abs(yVel) > 8 then
|
||||||
|
local goal = math.sign(yVel)
|
||||||
|
humanoid.HipHeight = moveTowards(humanoid.HipHeight, goal, 0.1)
|
||||||
|
elseif lastLevel ~= level then
|
||||||
|
humanoid.HipHeight = math.sign(lastLevel - level) * math.clamp(dist - 3, 0, 1)
|
||||||
|
lastLevel = level
|
||||||
|
else
|
||||||
|
humanoid.HipHeight = humanoid.HipHeight * 0.925
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
updateCon = RunService.RenderStepped:Connect(update)
|
||||||
|
|
@ -0,0 +1,26 @@
|
||||||
|
local char = script.Parent
|
||||||
|
local humanoid = char:WaitForChild("Humanoid")
|
||||||
|
|
||||||
|
local function onStateChanged(old,new)
|
||||||
|
if new == Enum.HumanoidStateType.RunningNoPhysics then
|
||||||
|
humanoid:ChangeState(Enum.HumanoidStateType.Running)
|
||||||
|
elseif new == Enum.HumanoidStateType.FallingDown then
|
||||||
|
humanoid:ChangeState("Ragdoll")
|
||||||
|
|
||||||
|
while wait(0.5) do
|
||||||
|
if humanoid.RootPart then
|
||||||
|
local velocity = humanoid.RootPart.Velocity
|
||||||
|
|
||||||
|
if velocity.Magnitude < 0.1 then
|
||||||
|
wait(2)
|
||||||
|
humanoid:ChangeState("GettingUp")
|
||||||
|
break
|
||||||
|
end
|
||||||
|
else
|
||||||
|
break
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
humanoid.StateChanged:Connect(onStateChanged)
|
||||||
|
|
@ -0,0 +1,60 @@
|
||||||
|
local RunService = game:GetService("RunService")
|
||||||
|
local GameSettings = UserSettings():GetService("UserGameSettings")
|
||||||
|
|
||||||
|
local char = script.Parent
|
||||||
|
local humanoid = char:WaitForChild("Humanoid")
|
||||||
|
local climbing = char:WaitForChild("Climbing")
|
||||||
|
local rootPart = humanoid.RootPart
|
||||||
|
|
||||||
|
local c = workspace.CurrentCamera
|
||||||
|
local blankV3 = Vector3.new()
|
||||||
|
local xz = Vector3.new(1,0,1)
|
||||||
|
local bg = rootPart:FindFirstChild("FirstPersonGyro")
|
||||||
|
|
||||||
|
local runState = Enum.HumanoidStateType.Running
|
||||||
|
|
||||||
|
if not bg then
|
||||||
|
bg = Instance.new("BodyGyro")
|
||||||
|
bg.Name = "FirstPersonGyro"
|
||||||
|
bg.MaxTorque = Vector3.new(0,10e6,0)
|
||||||
|
bg.D = 100
|
||||||
|
end
|
||||||
|
|
||||||
|
local function toRotation(dir)
|
||||||
|
return CFrame.new(blankV3,dir)
|
||||||
|
end
|
||||||
|
|
||||||
|
local velocityThreshold = 200
|
||||||
|
spawn(function ()
|
||||||
|
local threshold = char:WaitForChild("VelocityThreshold",5)
|
||||||
|
if threshold then
|
||||||
|
velocityThreshold = threshold.Value
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
|
||||||
|
local function update()
|
||||||
|
local rotationType = GameSettings.RotationType
|
||||||
|
local seatPart = humanoid.SeatPart
|
||||||
|
|
||||||
|
if rotationType.Name == "CameraRelative" and not seatPart then
|
||||||
|
local dir = c.CFrame.lookVector * xz
|
||||||
|
bg.CFrame = toRotation(dir)
|
||||||
|
bg.Parent = rootPart
|
||||||
|
humanoid.AutoRotate = false
|
||||||
|
else
|
||||||
|
local state = humanoid:GetState()
|
||||||
|
local isRunning = (state == runState)
|
||||||
|
local isClimbing = climbing.Value
|
||||||
|
humanoid.AutoRotate = (isRunning or isClimbing)
|
||||||
|
bg.Parent = nil
|
||||||
|
end
|
||||||
|
|
||||||
|
if rootPart.Velocity.Magnitude > velocityThreshold and not seatPart then
|
||||||
|
humanoid:ChangeState("FallingDown")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
humanoid.AutoRotate = false
|
||||||
|
humanoid:SetStateEnabled("Climbing",false)
|
||||||
|
RunService.RenderStepped:connect(update)
|
||||||
|
c.FieldOfView = 65
|
||||||
|
|
@ -0,0 +1,18 @@
|
||||||
|
local ServerStorage = game:GetService("ServerStorage")
|
||||||
|
local inputGateway = ServerStorage:WaitForChild("InputGateway")
|
||||||
|
local char = script.Parent
|
||||||
|
|
||||||
|
local function onChildAdded(child)
|
||||||
|
if child:IsA("Tool") and not child:FindFirstChild("InputGateway") then
|
||||||
|
wait(.1)
|
||||||
|
local gateway = inputGateway:Clone()
|
||||||
|
gateway.Parent = child
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
local tool = char:FindFirstChildWhichIsA("Tool")
|
||||||
|
if tool then
|
||||||
|
onChildAdded(tool)
|
||||||
|
end
|
||||||
|
|
||||||
|
char.ChildAdded:Connect(onChildAdded)
|
||||||
|
|
@ -0,0 +1,12 @@
|
||||||
|
local char = script.Parent
|
||||||
|
local humanoid = char:WaitForChild("Humanoid")
|
||||||
|
|
||||||
|
local function onStateChanged(old,new)
|
||||||
|
if old == Enum.HumanoidStateType.Freefall and new == Enum.HumanoidStateType.Landed then
|
||||||
|
humanoid:SetStateEnabled("Jumping",false)
|
||||||
|
wait(0.5)
|
||||||
|
humanoid:SetStateEnabled("Jumping",true)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
humanoid.StateChanged:Connect(onStateChanged)
|
||||||
|
|
@ -0,0 +1,235 @@
|
||||||
|
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||||
|
-- Setup
|
||||||
|
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
local char = script.Parent
|
||||||
|
|
||||||
|
local humanoid = char:WaitForChild("Humanoid")
|
||||||
|
humanoid:SetStateEnabled("Climbing", false)
|
||||||
|
|
||||||
|
local rootPart = humanoid.RootPart
|
||||||
|
local bv = rootPart:FindFirstChild("ClimbForce")
|
||||||
|
|
||||||
|
if not bv then
|
||||||
|
bv = Instance.new("BodyVelocity")
|
||||||
|
bv.Name = "ClimbForce"
|
||||||
|
bv.Parent = humanoid.RootPart
|
||||||
|
end
|
||||||
|
|
||||||
|
bv.MaxForce = Vector3.new()
|
||||||
|
|
||||||
|
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||||
|
-- Climbing State
|
||||||
|
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
local climbing = char:WaitForChild("Climbing")
|
||||||
|
local setValue = climbing:WaitForChild("SetValue")
|
||||||
|
|
||||||
|
local function onClimbing(value)
|
||||||
|
setValue:FireServer(value)
|
||||||
|
end
|
||||||
|
|
||||||
|
climbing.Changed:Connect(onClimbing)
|
||||||
|
|
||||||
|
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||||
|
-- Debug Visuals
|
||||||
|
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
local Debris = game:GetService("Debris")
|
||||||
|
local isDevTest = false
|
||||||
|
|
||||||
|
local DEBUG_COLOR_RED = Color3.new(1, 0, 0)
|
||||||
|
local DEBUG_COLOR_YLW = Color3.new(1, 1, 0)
|
||||||
|
local DEBUG_COLOR_GRN = Color3.new(0, 1, 0)
|
||||||
|
|
||||||
|
local debugBox = Instance.new("BoxHandleAdornment")
|
||||||
|
debugBox.Adornee = workspace.Terrain
|
||||||
|
debugBox.Color3 = DEBUG_COLOR_RED
|
||||||
|
debugBox.Visible = false
|
||||||
|
debugBox.Parent = script
|
||||||
|
|
||||||
|
local debugCylinder = Instance.new("CylinderHandleAdornment")
|
||||||
|
debugCylinder.Color = BrickColor.new("Bright violet")
|
||||||
|
debugCylinder.Adornee = workspace.Terrain
|
||||||
|
debugCylinder.Height = 0.2
|
||||||
|
debugCylinder.Radius = 1.0
|
||||||
|
debugCylinder.Visible = false
|
||||||
|
debugCylinder.Parent = script
|
||||||
|
|
||||||
|
local debugSBox = Instance.new("SelectionBox")
|
||||||
|
debugSBox.Color3 = DEBUG_COLOR_RED
|
||||||
|
debugSBox.Parent = script
|
||||||
|
|
||||||
|
local function drawRayIfDebugging(rayStart, look, length, color)
|
||||||
|
if isDevTest then
|
||||||
|
local line = Instance.new("LineHandleAdornment")
|
||||||
|
line.CFrame = CFrame.new(rayStart, rayStart + (look.Unit * length))
|
||||||
|
line.Adornee = workspace.Terrain
|
||||||
|
line.Length = length
|
||||||
|
line.Color3 = color
|
||||||
|
line.Thickness = 4
|
||||||
|
line.Parent = script
|
||||||
|
|
||||||
|
local cone = Instance.new("ConeHandleAdornment")
|
||||||
|
cone.CFrame = CFrame.new(rayStart + (look.Unit * (length - 0.32)), rayStart + (look.Unit * length))
|
||||||
|
cone.Adornee = workspace.Terrain
|
||||||
|
cone.Color3 = color
|
||||||
|
cone.Radius = 1 / 10
|
||||||
|
cone.Height = 1 / 3
|
||||||
|
cone.Parent = script
|
||||||
|
|
||||||
|
Debris:AddItem(line, .5)
|
||||||
|
Debris:AddItem(cone, .5)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||||
|
-- Main Climbing Logic
|
||||||
|
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
local searchDepth = 0.7
|
||||||
|
local maxClimbDist = 2.45
|
||||||
|
local sampleSpacing = 1 / 7
|
||||||
|
local lowLadderSearch = 2.7
|
||||||
|
local stepForwardFrames = 0
|
||||||
|
local ladderSearchDist = 2.0
|
||||||
|
|
||||||
|
local running = Enum.HumanoidStateType.Running
|
||||||
|
local freefall = Enum.HumanoidStateType.Freefall
|
||||||
|
|
||||||
|
local function findPartInLadderZone()
|
||||||
|
debug.profilebegin("FastClimbCheck")
|
||||||
|
--
|
||||||
|
|
||||||
|
local cf = rootPart.CFrame
|
||||||
|
|
||||||
|
local top = -humanoid.HipHeight
|
||||||
|
local bottom = -lowLadderSearch + top
|
||||||
|
local radius = 0.5 * ladderSearchDist
|
||||||
|
|
||||||
|
local center = cf.Position + (cf.LookVector * ladderSearchDist * 0.5)
|
||||||
|
local min = Vector3.new(-radius, bottom, -radius)
|
||||||
|
local max = Vector3.new(radius, top, radius)
|
||||||
|
|
||||||
|
local extents = Region3.new(center + min, center + max)
|
||||||
|
local parts = workspace:FindPartsInRegion3(extents, char)
|
||||||
|
|
||||||
|
if isDevTest then
|
||||||
|
if #parts > 0 then
|
||||||
|
debugBox.Visible = false
|
||||||
|
debugSBox.Visible = true
|
||||||
|
debugSBox.Adornee = parts[1]
|
||||||
|
else
|
||||||
|
debugBox.Visible = true
|
||||||
|
debugSBox.Visible = false
|
||||||
|
|
||||||
|
debugBox.Size = extents.Size
|
||||||
|
debugBox.CFrame = extents.CFrame
|
||||||
|
|
||||||
|
debugCylinder.Visible = false
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
--
|
||||||
|
debug.profileend()
|
||||||
|
return #parts > 0
|
||||||
|
end
|
||||||
|
|
||||||
|
local function findLadder()
|
||||||
|
if not findPartInLadderZone() then
|
||||||
|
return false
|
||||||
|
end
|
||||||
|
|
||||||
|
debug.profilebegin("ExpensiveClimbCheck")
|
||||||
|
|
||||||
|
local torsoCoord = rootPart.CFrame
|
||||||
|
local torsoLook = torsoCoord.LookVector
|
||||||
|
|
||||||
|
local firstSpace = 0
|
||||||
|
local firstStep = 0
|
||||||
|
|
||||||
|
local lookForSpace = true
|
||||||
|
local lookForStep = false
|
||||||
|
|
||||||
|
local debugColor = DEBUG_COLOR_YLW
|
||||||
|
local topRay = math.floor(lowLadderSearch / sampleSpacing)
|
||||||
|
|
||||||
|
for i = 1, topRay do
|
||||||
|
local distFromBottom = i * sampleSpacing
|
||||||
|
local originOnTorso = Vector3.new(0, -lowLadderSearch + distFromBottom, 0)
|
||||||
|
|
||||||
|
local casterOrigin = torsoCoord.Position + originOnTorso
|
||||||
|
local casterDirection = torsoLook * ladderSearchDist
|
||||||
|
|
||||||
|
local ray = Ray.new(casterOrigin, casterDirection)
|
||||||
|
local hitPrim, hitLoc = workspace:FindPartOnRay(ray, char)
|
||||||
|
|
||||||
|
-- make trusses climbable.
|
||||||
|
if hitPrim and hitPrim:IsA("TrussPart") then
|
||||||
|
return true
|
||||||
|
end
|
||||||
|
|
||||||
|
local mag = (hitLoc - casterOrigin).Magnitude
|
||||||
|
|
||||||
|
if mag < searchDepth then
|
||||||
|
if lookForSpace then
|
||||||
|
debugColor = DEBUG_COLOR_GRN
|
||||||
|
firstSpace = distFromBottom
|
||||||
|
|
||||||
|
lookForSpace = false
|
||||||
|
lookForStep = true
|
||||||
|
end
|
||||||
|
elseif lookForStep then
|
||||||
|
firstStep = distFromBottom - firstSpace
|
||||||
|
debugColor = DEBUG_COLOR_RED
|
||||||
|
lookForStep = false
|
||||||
|
end
|
||||||
|
|
||||||
|
drawRayIfDebugging(casterOrigin, casterDirection, mag, debugColor)
|
||||||
|
end
|
||||||
|
|
||||||
|
local found = (firstSpace < maxClimbDist and firstStep > 0 and firstStep < maxClimbDist)
|
||||||
|
debugCylinder.Visible = isDevTest and found
|
||||||
|
|
||||||
|
if debugCylinder.Visible then
|
||||||
|
local y = Vector3.FromAxis('Y')
|
||||||
|
local pos = torsoCoord.Position + Vector3.new(0, 5, 0)
|
||||||
|
debugCylinder.CFrame = CFrame.new(pos, pos + y)
|
||||||
|
end
|
||||||
|
|
||||||
|
debug.profileend()
|
||||||
|
return found
|
||||||
|
end
|
||||||
|
|
||||||
|
while wait() do
|
||||||
|
local canClimb = false
|
||||||
|
|
||||||
|
local state = humanoid:GetState()
|
||||||
|
local speed = humanoid.WalkSpeed
|
||||||
|
|
||||||
|
if state == freefall or state == running then
|
||||||
|
canClimb = findLadder()
|
||||||
|
end
|
||||||
|
|
||||||
|
if canClimb then
|
||||||
|
local climbSpeed = speed * 0.7
|
||||||
|
bv.Velocity = Vector3.new(0, climbSpeed, 0)
|
||||||
|
bv.MaxForce = Vector3.new(climbSpeed * 100, 10e6, climbSpeed * 100)
|
||||||
|
else
|
||||||
|
if climbing.Value then
|
||||||
|
stepForwardFrames = 2
|
||||||
|
end
|
||||||
|
|
||||||
|
bv.MaxForce = Vector3.new()
|
||||||
|
end
|
||||||
|
|
||||||
|
if stepForwardFrames > 0 then
|
||||||
|
local cf = rootPart.CFrame
|
||||||
|
humanoid:Move(cf.LookVector)
|
||||||
|
stepForwardFrames = stepForwardFrames - 1
|
||||||
|
end
|
||||||
|
|
||||||
|
climbing.Value = canClimb
|
||||||
|
end
|
||||||
|
|
||||||
|
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||||
|
|
@ -0,0 +1,68 @@
|
||||||
|
-- util
|
||||||
|
|
||||||
|
function waitForChild(parent, childName)
|
||||||
|
local child = parent:findFirstChild(childName)
|
||||||
|
if child then return child end
|
||||||
|
while true do
|
||||||
|
child = parent.ChildAdded:wait()
|
||||||
|
if child.Name==childName then return child end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function newSound(id)
|
||||||
|
local sound = Instance.new("Sound")
|
||||||
|
sound.SoundId = id
|
||||||
|
sound.archivable = false
|
||||||
|
sound.Parent = script.Parent.Head
|
||||||
|
return sound
|
||||||
|
end
|
||||||
|
|
||||||
|
-- declarations
|
||||||
|
|
||||||
|
local sDied = newSound("rbxasset://sounds/uuhhh.wav")
|
||||||
|
local sFallingDown = newSound("rbxasset://sounds/splat.wav")
|
||||||
|
local sFreeFalling = newSound("rbxasset://sounds/swoosh.wav")
|
||||||
|
local sGettingUp = newSound("rbxasset://sounds/hit.wav")
|
||||||
|
local sJumping = newSound("rbxasset://sounds/button.wav")
|
||||||
|
local sRunning = newSound("rbxasset://sounds/bfsl-minifigfoots1.mp3")
|
||||||
|
sRunning.Looped = true
|
||||||
|
|
||||||
|
local Figure = script.Parent
|
||||||
|
local Head = waitForChild(Figure, "Head")
|
||||||
|
local Humanoid = waitForChild(Figure, "Humanoid")
|
||||||
|
--local Climbing = Figure:WaitForChild("Climbing")
|
||||||
|
|
||||||
|
-- functions
|
||||||
|
|
||||||
|
function onDied()
|
||||||
|
sDied:Play()
|
||||||
|
end
|
||||||
|
|
||||||
|
function onJumping()
|
||||||
|
sJumping:Play()
|
||||||
|
wait(0.2)
|
||||||
|
sJumping:Stop()
|
||||||
|
end
|
||||||
|
|
||||||
|
function onState(state, sound)
|
||||||
|
sound.TimePosition = 0
|
||||||
|
sound.Playing = state
|
||||||
|
end
|
||||||
|
|
||||||
|
function onRunning(speed)
|
||||||
|
sRunning.Playing = (speed>0.1)
|
||||||
|
end
|
||||||
|
|
||||||
|
-- connect up
|
||||||
|
|
||||||
|
Humanoid.Died:connect(onDied)
|
||||||
|
Humanoid.Running:connect(onRunning)
|
||||||
|
Humanoid.Jumping:connect(onJumping)
|
||||||
|
Humanoid.GettingUp:connect(function(state) onState(state, sGettingUp) end)
|
||||||
|
Humanoid.FreeFalling:connect(function(state)
|
||||||
|
--if not Climbing.Value then
|
||||||
|
onState(state, sFreeFalling)
|
||||||
|
--end
|
||||||
|
end)
|
||||||
|
|
||||||
|
Humanoid.FallingDown:connect(function(state) onState(state, sFallingDown) end)
|
||||||
|
|
@ -0,0 +1,35 @@
|
||||||
|
local CollectionService = game:GetService("CollectionService")
|
||||||
|
local Players = game:GetService("Players")
|
||||||
|
|
||||||
|
local char = script.Parent
|
||||||
|
local player = Players:GetPlayerFromCharacter(char)
|
||||||
|
local teamListener = player:GetPropertyChangedSignal("TeamColor")
|
||||||
|
local bodyColors = char:WaitForChild("BodyColors")
|
||||||
|
|
||||||
|
local teamColors = Instance.new("BodyColors")
|
||||||
|
teamColors.Name = "TeamColors"
|
||||||
|
teamColors.HeadColor = BrickColor.new("Bright yellow")
|
||||||
|
teamColors.LeftArmColor = BrickColor.Black()
|
||||||
|
teamColors.LeftLegColor = BrickColor.Black()
|
||||||
|
teamColors.RightArmColor = BrickColor.Black()
|
||||||
|
teamColors.RightLegColor = BrickColor.Black()
|
||||||
|
|
||||||
|
CollectionService:AddTag(teamColors, "RespectCharacterAsset")
|
||||||
|
|
||||||
|
local function onTeamChanged()
|
||||||
|
local team = player.Team
|
||||||
|
if team then
|
||||||
|
teamColors.TorsoColor = player.TeamColor
|
||||||
|
bodyColors.Parent = nil
|
||||||
|
|
||||||
|
if not CollectionService:HasTag(team, "NoAutoColor") then
|
||||||
|
teamColors.Parent = char
|
||||||
|
end
|
||||||
|
else
|
||||||
|
teamColors.Parent = nil
|
||||||
|
bodyColors.Parent = char
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
onTeamChanged()
|
||||||
|
teamListener:Connect(onTeamChanged)
|
||||||
|
|
@ -0,0 +1,43 @@
|
||||||
|
-- This replicates an old sound bug that used to occur with tools back then.
|
||||||
|
|
||||||
|
local CollectionService = game:GetService("CollectionService")
|
||||||
|
local Debris = game:GetService("Debris")
|
||||||
|
|
||||||
|
local char = script.Parent
|
||||||
|
local torso = char:WaitForChild("Torso")
|
||||||
|
local marked = {}
|
||||||
|
|
||||||
|
local function processHandle(handle)
|
||||||
|
for _,child in pairs(handle:GetChildren()) do
|
||||||
|
if child:IsA("Sound") then
|
||||||
|
if not marked[child.SoundId] then
|
||||||
|
marked[child.SoundId] = true
|
||||||
|
else
|
||||||
|
local replica = child:Clone()
|
||||||
|
replica.Name = "ToolSoundGlitch"
|
||||||
|
replica.MaxDistance = 0
|
||||||
|
replica.Parent = torso
|
||||||
|
|
||||||
|
CollectionService:AddTag(replica, "ToolSoundGlitch")
|
||||||
|
replica:Play()
|
||||||
|
|
||||||
|
replica.Ended:connect(function ()
|
||||||
|
Debris:AddItem(replica, 1)
|
||||||
|
end)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
local function onChild(child)
|
||||||
|
if child:IsA("Tool") then
|
||||||
|
local handle = child:FindFirstChild("Handle")
|
||||||
|
|
||||||
|
if handle then
|
||||||
|
processHandle(handle)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
char.ChildAdded:connect(onChild)
|
||||||
|
char.ChildRemoved:connect(onChild)
|
||||||
|
|
@ -0,0 +1,262 @@
|
||||||
|
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||||
|
-- Services
|
||||||
|
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
local CollectionService = game:GetService("CollectionService")
|
||||||
|
local RunService = game:GetService("RunService")
|
||||||
|
|
||||||
|
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||||
|
-- Animator Data
|
||||||
|
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
local Animators = {}
|
||||||
|
|
||||||
|
local function createAnimator(humanoid)
|
||||||
|
local Figure = humanoid.Parent
|
||||||
|
local Torso = Figure:WaitForChild("Torso")
|
||||||
|
local Climbing = Figure:WaitForChild("Climbing")
|
||||||
|
|
||||||
|
local animator = {}
|
||||||
|
animator.Joints = {}
|
||||||
|
|
||||||
|
do
|
||||||
|
local joints =
|
||||||
|
{
|
||||||
|
RightShoulder = Torso:WaitForChild("Right Shoulder", 5);
|
||||||
|
LeftShoulder = Torso:WaitForChild("Left Shoulder", 5);
|
||||||
|
RightHip = Torso:WaitForChild("Right Hip", 5);
|
||||||
|
LeftHip = Torso:WaitForChild("Left Hip", 5);
|
||||||
|
}
|
||||||
|
|
||||||
|
if not (joints.RightShoulder and joints.LeftShoulder) then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
if not (joints.RightHip and joints.LeftHip) then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
for name, joint in pairs(joints) do
|
||||||
|
local object =
|
||||||
|
{
|
||||||
|
JointObject = joint;
|
||||||
|
MaxVelocity = joint.MaxVelocity;
|
||||||
|
DesiredAngle = joint.DesiredAngle;
|
||||||
|
CurrentAngle = joint.CurrentAngle;
|
||||||
|
}
|
||||||
|
|
||||||
|
animator.Joints[name] = object
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
local joints = animator.Joints
|
||||||
|
|
||||||
|
local pi = math.pi
|
||||||
|
local sin = math.sin
|
||||||
|
|
||||||
|
local pose = "Standing"
|
||||||
|
local toolAnim = "None"
|
||||||
|
local toolAnimTime = 0
|
||||||
|
|
||||||
|
local RightShoulder = joints.RightShoulder
|
||||||
|
local LeftShoulder = joints.LeftShoulder
|
||||||
|
|
||||||
|
local RightHip = joints.RightHip
|
||||||
|
local LeftHip = joints.LeftHip
|
||||||
|
|
||||||
|
function animator:SetMaxVelocities(value)
|
||||||
|
RightShoulder.MaxVelocity = value
|
||||||
|
LeftShoulder.MaxVelocity = value
|
||||||
|
|
||||||
|
RightHip.MaxVelocity = value
|
||||||
|
LeftHip.MaxVelocity = value
|
||||||
|
end
|
||||||
|
|
||||||
|
function animator:Update()
|
||||||
|
local now = tick()
|
||||||
|
|
||||||
|
if Climbing.Value then
|
||||||
|
pose = "Climbing"
|
||||||
|
else
|
||||||
|
local stateType = humanoid:GetState()
|
||||||
|
pose = stateType.Name
|
||||||
|
|
||||||
|
if pose == "Running" then
|
||||||
|
local speed = humanoid.WalkSpeed
|
||||||
|
local movement = (Torso.Velocity * Vector3.new(1, 0, 1)).Magnitude
|
||||||
|
|
||||||
|
if (speed * movement) < 1 then
|
||||||
|
pose = "Standing"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
if pose == "Jumping" then
|
||||||
|
self:SetMaxVelocities(.5)
|
||||||
|
|
||||||
|
RightShoulder.DesiredAngle = 1
|
||||||
|
LeftShoulder.DesiredAngle = -1
|
||||||
|
|
||||||
|
RightHip.DesiredAngle = 0
|
||||||
|
LeftHip.DesiredAngle = 0
|
||||||
|
elseif pose == "Freefall" then
|
||||||
|
self:SetMaxVelocities(.5)
|
||||||
|
|
||||||
|
RightShoulder.DesiredAngle = pi
|
||||||
|
LeftShoulder.DesiredAngle = -pi
|
||||||
|
|
||||||
|
RightHip.DesiredAngle = 0
|
||||||
|
LeftHip.DesiredAngle = 0
|
||||||
|
elseif pose == "Seated" then
|
||||||
|
self:SetMaxVelocities(.15)
|
||||||
|
|
||||||
|
RightShoulder.DesiredAngle = pi / 2
|
||||||
|
LeftShoulder.DesiredAngle = -pi / 2
|
||||||
|
|
||||||
|
RightHip.DesiredAngle = pi / 2
|
||||||
|
LeftHip.DesiredAngle = -pi / 2
|
||||||
|
else
|
||||||
|
local climbFudge = 0
|
||||||
|
local amplitude = .1
|
||||||
|
local frequency = 1
|
||||||
|
|
||||||
|
if pose == "Running" then
|
||||||
|
self:SetMaxVelocities(0.15)
|
||||||
|
amplitude = 1
|
||||||
|
frequency = 9
|
||||||
|
elseif pose == "Climbing" then
|
||||||
|
self:SetMaxVelocities(0.5)
|
||||||
|
climbFudge = pi
|
||||||
|
|
||||||
|
amplitude = 1
|
||||||
|
frequency = 9
|
||||||
|
end
|
||||||
|
|
||||||
|
local desiredAngle = amplitude * sin(now * frequency)
|
||||||
|
|
||||||
|
RightShoulder.DesiredAngle = desiredAngle + climbFudge
|
||||||
|
LeftShoulder.DesiredAngle = desiredAngle - climbFudge
|
||||||
|
|
||||||
|
RightHip.DesiredAngle = -desiredAngle
|
||||||
|
LeftHip.DesiredAngle = -desiredAngle
|
||||||
|
|
||||||
|
local tool = Figure:FindFirstChildWhichIsA("Tool")
|
||||||
|
|
||||||
|
if tool and tool.RequiresHandle and not CollectionService:HasTag(tool, "Flag") then
|
||||||
|
local animString = tool:FindFirstChild("toolanim")
|
||||||
|
|
||||||
|
if animString and animString:IsA("StringValue") then
|
||||||
|
-- apply tool animation
|
||||||
|
toolAnim = animString.Value
|
||||||
|
toolAnimTime = now + .3
|
||||||
|
|
||||||
|
-- delete event sender
|
||||||
|
animString:Destroy()
|
||||||
|
end
|
||||||
|
|
||||||
|
if now > toolAnimTime then
|
||||||
|
toolAnimTime = 0
|
||||||
|
toolAnim = "None"
|
||||||
|
end
|
||||||
|
|
||||||
|
if toolAnim == "None" then
|
||||||
|
RightShoulder.DesiredAngle = pi / 2
|
||||||
|
elseif toolAnim == "Slash" then
|
||||||
|
RightShoulder.MaxVelocity = 0.5
|
||||||
|
RightShoulder.DesiredAngle = 0
|
||||||
|
elseif toolAnim == "Lunge" then
|
||||||
|
self:SetMaxVelocities(0.5)
|
||||||
|
|
||||||
|
RightShoulder.DesiredAngle = pi / 2
|
||||||
|
RightHip.DesiredAngle = pi / 2
|
||||||
|
|
||||||
|
LeftShoulder.DesiredAngle = 1
|
||||||
|
LeftHip.DesiredAngle = 1
|
||||||
|
end
|
||||||
|
else
|
||||||
|
toolAnim = "None"
|
||||||
|
toolAnimTime = 0
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
return animator
|
||||||
|
end
|
||||||
|
|
||||||
|
local function onAnimatorAdded(humanoid)
|
||||||
|
if humanoid:IsA("Humanoid") then
|
||||||
|
local animator = createAnimator(humanoid)
|
||||||
|
Animators[humanoid] = animator
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
local function onAnimatorRemoved(humanoid)
|
||||||
|
if Animators[humanoid] then
|
||||||
|
Animators[humanoid] = nil
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||||
|
-- Collection Handler
|
||||||
|
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
local animTag = "Animator"
|
||||||
|
|
||||||
|
local animAdded = CollectionService:GetInstanceAddedSignal(animTag)
|
||||||
|
local animRemoved = CollectionService:GetInstanceRemovedSignal(animTag)
|
||||||
|
|
||||||
|
for _,humanoid in pairs(CollectionService:GetTagged(animTag)) do
|
||||||
|
spawn(function ()
|
||||||
|
onAnimatorAdded(humanoid)
|
||||||
|
end)
|
||||||
|
end
|
||||||
|
|
||||||
|
animAdded:Connect(onAnimatorAdded)
|
||||||
|
animRemoved:Connect(onAnimatorRemoved)
|
||||||
|
|
||||||
|
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||||
|
-- Motor Angle Updater
|
||||||
|
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
local desiredFPS = 1 / 30 -- The framerate that would be expected given the MaxVelocity in use.
|
||||||
|
local lastUpdate = tick()
|
||||||
|
|
||||||
|
local function updateAnimations(deltaTime)
|
||||||
|
local velocityAdjust = (1 / desiredFPS) * deltaTime
|
||||||
|
|
||||||
|
for humanoid, animator in pairs(Animators) do
|
||||||
|
-- Update the motor states
|
||||||
|
animator:Update()
|
||||||
|
|
||||||
|
-- Step the motor angles
|
||||||
|
for name, jointData in pairs(animator.Joints) do
|
||||||
|
local joint = jointData.JointObject
|
||||||
|
local maxVelocity = jointData.MaxVelocity
|
||||||
|
|
||||||
|
local desiredAngle = jointData.DesiredAngle
|
||||||
|
local currentAngle = jointData.CurrentAngle
|
||||||
|
|
||||||
|
-- Adjust the MaxVelocity based on the current framerate
|
||||||
|
maxVelocity = math.abs(maxVelocity * velocityAdjust)
|
||||||
|
|
||||||
|
-- Update the CurrentAngle
|
||||||
|
local delta = (desiredAngle - currentAngle)
|
||||||
|
|
||||||
|
if math.abs(delta) < maxVelocity then
|
||||||
|
currentAngle = desiredAngle
|
||||||
|
elseif delta > 0 then
|
||||||
|
currentAngle = currentAngle + maxVelocity
|
||||||
|
else
|
||||||
|
currentAngle = currentAngle - maxVelocity
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Apply the motor transform
|
||||||
|
joint.Transform = CFrame.Angles(0, 0, currentAngle)
|
||||||
|
jointData.CurrentAngle = currentAngle
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
RunService:BindToRenderStep("UpdateAnimations", 301, updateAnimations)
|
||||||
|
|
||||||
|
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||||
File diff suppressed because it is too large
Load Diff
|
|
@ -0,0 +1,176 @@
|
||||||
|
-- SolarCrane
|
||||||
|
|
||||||
|
local module = {}
|
||||||
|
|
||||||
|
local LastUpdate = tick()
|
||||||
|
local TransparencyDirty = false
|
||||||
|
local Enabled = false
|
||||||
|
local LastTransparency = nil
|
||||||
|
|
||||||
|
local DescendantAddedConn, DescendantRemovingConn = nil, nil
|
||||||
|
local ToolDescendantAddedConns = {}
|
||||||
|
local ToolDescendantRemovingConns = {}
|
||||||
|
local CachedParts = {}
|
||||||
|
|
||||||
|
local function HasToolAncestor(object)
|
||||||
|
return (object:FindFirstAncestorWhichIsA("Tool")) ~= nil
|
||||||
|
end
|
||||||
|
|
||||||
|
local function IsValidPartToModify(part)
|
||||||
|
if part:IsA('BasePart') or part:IsA('Decal') then
|
||||||
|
return not HasToolAncestor(part)
|
||||||
|
end
|
||||||
|
return false
|
||||||
|
end
|
||||||
|
|
||||||
|
local function TeardownTransparency()
|
||||||
|
for child, _ in pairs(CachedParts) do
|
||||||
|
child.LocalTransparencyModifier = 0
|
||||||
|
end
|
||||||
|
|
||||||
|
CachedParts = {}
|
||||||
|
TransparencyDirty = true
|
||||||
|
LastTransparency = nil
|
||||||
|
|
||||||
|
if DescendantAddedConn then
|
||||||
|
DescendantAddedConn:disconnect()
|
||||||
|
DescendantAddedConn = nil
|
||||||
|
end
|
||||||
|
|
||||||
|
if DescendantRemovingConn then
|
||||||
|
DescendantRemovingConn:disconnect()
|
||||||
|
DescendantRemovingConn = nil
|
||||||
|
end
|
||||||
|
|
||||||
|
for object, conn in pairs(ToolDescendantAddedConns) do
|
||||||
|
conn:disconnect()
|
||||||
|
ToolDescendantAddedConns[object] = nil
|
||||||
|
end
|
||||||
|
|
||||||
|
for object, conn in pairs(ToolDescendantRemovingConns) do
|
||||||
|
conn:disconnect()
|
||||||
|
ToolDescendantRemovingConns[object] = nil
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
local function SetupTransparency(character)
|
||||||
|
TeardownTransparency()
|
||||||
|
|
||||||
|
if DescendantAddedConn then
|
||||||
|
DescendantAddedConn:Disconnect()
|
||||||
|
end
|
||||||
|
|
||||||
|
DescendantAddedConn = character.DescendantAdded:connect(function (object)
|
||||||
|
-- This is a part we want to invisify
|
||||||
|
if IsValidPartToModify(object) then
|
||||||
|
CachedParts[object] = true
|
||||||
|
TransparencyDirty = true
|
||||||
|
-- There is now a tool under the character
|
||||||
|
elseif object:IsA('Tool') then
|
||||||
|
if ToolDescendantAddedConns[object] then
|
||||||
|
ToolDescendantAddedConns[object]:Disconnect()
|
||||||
|
end
|
||||||
|
|
||||||
|
ToolDescendantAddedConns[object] = object.DescendantAdded:connect(function (toolChild)
|
||||||
|
CachedParts[toolChild] = nil
|
||||||
|
if toolChild:IsA('BasePart') or toolChild:IsA('Decal') then
|
||||||
|
-- Reset the transparency
|
||||||
|
toolChild.LocalTransparencyModifier = 0
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
|
||||||
|
if ToolDescendantRemovingConns[object] then
|
||||||
|
ToolDescendantRemovingConns[object]:Disconnect()
|
||||||
|
end
|
||||||
|
|
||||||
|
ToolDescendantRemovingConns[object] = object.DescendantRemoving:connect(function (formerToolChild)
|
||||||
|
wait() -- wait for new parent
|
||||||
|
if character and formerToolChild and formerToolChild:IsDescendantOf(character) then
|
||||||
|
if IsValidPartToModify(formerToolChild) then
|
||||||
|
CachedParts[formerToolChild] = true
|
||||||
|
TransparencyDirty = true
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
|
||||||
|
if DescendantRemovingConn then
|
||||||
|
DescendantRemovingConn:Disconnect()
|
||||||
|
end
|
||||||
|
|
||||||
|
DescendantRemovingConn = character.DescendantRemoving:connect(function (object)
|
||||||
|
if CachedParts[object] then
|
||||||
|
CachedParts[object] = nil
|
||||||
|
-- Reset the transparency
|
||||||
|
object.LocalTransparencyModifier = 0
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
|
||||||
|
for _,desc in pairs(character:GetDescendants()) do
|
||||||
|
if IsValidPartToModify(desc) then
|
||||||
|
CachedParts[desc] = true
|
||||||
|
TransparencyDirty = true
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
function module:SetEnabled(newState)
|
||||||
|
if Enabled ~= newState then
|
||||||
|
Enabled = newState
|
||||||
|
self:Update()
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function module:SetSubject(subject)
|
||||||
|
local character = nil
|
||||||
|
if subject and subject:IsA("Humanoid") then
|
||||||
|
character = subject.Parent
|
||||||
|
end
|
||||||
|
if subject and subject:IsA("VehicleSeat") and subject.Occupant then
|
||||||
|
character = subject.Occupant.Parent
|
||||||
|
end
|
||||||
|
if character then
|
||||||
|
SetupTransparency(character)
|
||||||
|
else
|
||||||
|
TeardownTransparency()
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function module:Update()
|
||||||
|
local instant = false
|
||||||
|
local now = tick()
|
||||||
|
local currentCamera = workspace.CurrentCamera
|
||||||
|
|
||||||
|
if currentCamera then
|
||||||
|
local transparency = 0
|
||||||
|
if not Enabled then
|
||||||
|
instant = true
|
||||||
|
else
|
||||||
|
local distance = (currentCamera.Focus.p - currentCamera.CFrame.p).magnitude
|
||||||
|
if distance < 2 then
|
||||||
|
transparency = 1
|
||||||
|
elseif distance < 6 then
|
||||||
|
transparency = 0.5
|
||||||
|
else
|
||||||
|
transparency = 0
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
if TransparencyDirty or LastTransparency ~= transparency then
|
||||||
|
for child in pairs(CachedParts) do
|
||||||
|
if child.ClassName == "Decal" then
|
||||||
|
child.LocalTransparencyModifier = math.floor(transparency)
|
||||||
|
else
|
||||||
|
child.LocalTransparencyModifier = transparency
|
||||||
|
end
|
||||||
|
end
|
||||||
|
TransparencyDirty = false
|
||||||
|
LastTransparency = transparency
|
||||||
|
end
|
||||||
|
end
|
||||||
|
LastUpdate = now
|
||||||
|
end
|
||||||
|
|
||||||
|
return module
|
||||||
|
|
@ -0,0 +1,129 @@
|
||||||
|
-- PopperCam Version 16
|
||||||
|
-- OnlyTwentyCharacters
|
||||||
|
|
||||||
|
local PopperCam = {} -- Guarantees your players won't see outside the bounds of your map!
|
||||||
|
|
||||||
|
-----------------
|
||||||
|
--| Constants |--
|
||||||
|
-----------------
|
||||||
|
|
||||||
|
local POP_RESTORE_RATE = 0.3
|
||||||
|
local MIN_CAMERA_ZOOM = 0.5
|
||||||
|
|
||||||
|
local VALID_SUBJECTS = {
|
||||||
|
'Humanoid',
|
||||||
|
'VehicleSeat',
|
||||||
|
'SkateboardPlatform',
|
||||||
|
}
|
||||||
|
|
||||||
|
-----------------
|
||||||
|
--| Variables |--
|
||||||
|
-----------------
|
||||||
|
|
||||||
|
local Players = game:GetService('Players')
|
||||||
|
|
||||||
|
local Camera = nil
|
||||||
|
local CameraSubjectChangeConn = nil
|
||||||
|
|
||||||
|
local SubjectPart = nil
|
||||||
|
|
||||||
|
local PlayerCharacters = {} -- For ignoring in raycasts
|
||||||
|
local VehicleParts = {} -- Also just for ignoring
|
||||||
|
|
||||||
|
local LastPopAmount = 0
|
||||||
|
local LastZoomLevel = 0
|
||||||
|
local PopperEnabled = true
|
||||||
|
|
||||||
|
local CFrame_new = CFrame.new
|
||||||
|
|
||||||
|
-----------------------
|
||||||
|
--| Local Functions |--
|
||||||
|
-----------------------
|
||||||
|
|
||||||
|
local math_abs = math.abs
|
||||||
|
|
||||||
|
local function OnCharacterAdded(player, character)
|
||||||
|
PlayerCharacters[player] = character
|
||||||
|
end
|
||||||
|
|
||||||
|
local function OnPlayersChildAdded(child)
|
||||||
|
if child:IsA('Player') then
|
||||||
|
child.CharacterAdded:connect(function(character)
|
||||||
|
OnCharacterAdded(child, character)
|
||||||
|
end)
|
||||||
|
if child.Character then
|
||||||
|
OnCharacterAdded(child, child.Character)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
local function OnPlayersChildRemoved(child)
|
||||||
|
if child:IsA('Player') then
|
||||||
|
PlayerCharacters[child] = nil
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
-------------------------
|
||||||
|
--| Exposed Functions |--
|
||||||
|
-------------------------
|
||||||
|
|
||||||
|
function PopperCam:Update()
|
||||||
|
if PopperEnabled then
|
||||||
|
-- First, prep some intermediate vars
|
||||||
|
local Camera = workspace.CurrentCamera
|
||||||
|
local cameraCFrame = Camera.CFrame
|
||||||
|
local focusPoint = Camera.Focus.p
|
||||||
|
|
||||||
|
if SubjectPart then
|
||||||
|
focusPoint = SubjectPart.CFrame.p
|
||||||
|
end
|
||||||
|
|
||||||
|
local ignoreList = {}
|
||||||
|
for _, character in pairs(PlayerCharacters) do
|
||||||
|
ignoreList[#ignoreList + 1] = character
|
||||||
|
end
|
||||||
|
for i = 1, #VehicleParts do
|
||||||
|
ignoreList[#ignoreList + 1] = VehicleParts[i]
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Get largest cutoff distance
|
||||||
|
local largest = Camera:GetLargestCutoffDistance(ignoreList)
|
||||||
|
|
||||||
|
-- Then check if the player zoomed since the last frame,
|
||||||
|
-- and if so, reset our pop history so we stop tweening
|
||||||
|
local zoomLevel = (cameraCFrame.p - focusPoint).Magnitude
|
||||||
|
if math_abs(zoomLevel - LastZoomLevel) > 0.001 then
|
||||||
|
LastPopAmount = 0
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Finally, zoom the camera in (pop) by that most-cut-off amount, or the last pop amount if that's more
|
||||||
|
local popAmount = largest
|
||||||
|
if LastPopAmount > popAmount then
|
||||||
|
popAmount = LastPopAmount
|
||||||
|
end
|
||||||
|
|
||||||
|
if popAmount > 0 then
|
||||||
|
Camera.CFrame = cameraCFrame + (cameraCFrame.lookVector * popAmount)
|
||||||
|
LastPopAmount = popAmount - POP_RESTORE_RATE -- Shrink it for the next frame
|
||||||
|
if LastPopAmount < 0 then
|
||||||
|
LastPopAmount = 0
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
LastZoomLevel = zoomLevel
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
--------------------
|
||||||
|
--| Script Logic |--
|
||||||
|
--------------------
|
||||||
|
|
||||||
|
|
||||||
|
-- Connect to all Players so we can ignore their Characters
|
||||||
|
Players.ChildRemoved:connect(OnPlayersChildRemoved)
|
||||||
|
Players.ChildAdded:connect(OnPlayersChildAdded)
|
||||||
|
for _, player in pairs(Players:GetPlayers()) do
|
||||||
|
OnPlayersChildAdded(player)
|
||||||
|
end
|
||||||
|
|
||||||
|
return PopperCam
|
||||||
|
|
@ -0,0 +1,60 @@
|
||||||
|
local RunService = game:GetService("RunService")
|
||||||
|
local UserInputService = game:GetService("UserInputService")
|
||||||
|
local Players = game:GetService("Players")
|
||||||
|
|
||||||
|
local playerScripts = script.Parent
|
||||||
|
local playerModule = require(playerScripts:WaitForChild("PlayerModule"))
|
||||||
|
|
||||||
|
local cameraSystem = playerModule:GetCameras()
|
||||||
|
|
||||||
|
local main = require(script:WaitForChild("Main"))
|
||||||
|
local popper = require(script:WaitForChild("Popper"))
|
||||||
|
local opacity = require(script:WaitForChild("Opacity"))
|
||||||
|
|
||||||
|
local cameraSubjectChangedConn = nil
|
||||||
|
local renderSteppedConn = nil
|
||||||
|
|
||||||
|
local function onCameraSubjectChanged()
|
||||||
|
local currentCamera = workspace.CurrentCamera
|
||||||
|
if currentCamera then
|
||||||
|
local newSubject = currentCamera.CameraSubject
|
||||||
|
opacity:SetSubject(newSubject)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
local function onNewCamera()
|
||||||
|
local currentCamera = workspace.CurrentCamera
|
||||||
|
if currentCamera then
|
||||||
|
if cameraSubjectChangedConn then
|
||||||
|
cameraSubjectChangedConn:Disconnect()
|
||||||
|
end
|
||||||
|
|
||||||
|
local cameraSubjectChanged = currentCamera:GetPropertyChangedSignal("CameraSubject")
|
||||||
|
cameraSubjectChangedConn = cameraSubjectChanged:Connect(onCameraSubjectChanged)
|
||||||
|
|
||||||
|
onCameraSubjectChanged()
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Initialize cameras.
|
||||||
|
local cameraUpdated = workspace:GetPropertyChangedSignal("CurrentCamera")
|
||||||
|
cameraUpdated:Connect(onNewCamera)
|
||||||
|
|
||||||
|
onNewCamera()
|
||||||
|
main:SetEnabled(true)
|
||||||
|
opacity:SetEnabled(true)
|
||||||
|
|
||||||
|
-- Overload the camera update function.
|
||||||
|
function cameraSystem:Update()
|
||||||
|
if cameraSystem.activeCameraController then
|
||||||
|
cameraSystem.activeCameraController:Enable(false)
|
||||||
|
cameraSystem.activeCameraController = nil
|
||||||
|
end
|
||||||
|
|
||||||
|
main:Update()
|
||||||
|
popper:Update()
|
||||||
|
opacity:Update()
|
||||||
|
end
|
||||||
|
|
||||||
|
playerScripts:RegisterTouchCameraMovementMode(Enum.TouchCameraMovementMode.Default)
|
||||||
|
playerScripts:RegisterComputerCameraMovementMode(Enum.ComputerCameraMovementMode.Default)
|
||||||
|
|
@ -0,0 +1,25 @@
|
||||||
|
local CollectionService = game:GetService("CollectionService")
|
||||||
|
local TeleportService = game:GetService("TeleportService")
|
||||||
|
|
||||||
|
local noBevelsTag = "NoCharacterBevels"
|
||||||
|
local bevelTracker = CollectionService:GetInstanceAddedSignal(noBevelsTag)
|
||||||
|
|
||||||
|
local function safeDestroy(obj)
|
||||||
|
spawn(function ()
|
||||||
|
obj:Destroy()
|
||||||
|
end)
|
||||||
|
end
|
||||||
|
|
||||||
|
local function onInstanceAdded(inst)
|
||||||
|
if TeleportService:GetTeleportSetting("CharacterBevels") then
|
||||||
|
safeDestroy(inst)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
for _,inst in pairs(CollectionService:GetTagged(noBevelsTag)) do
|
||||||
|
onInstanceAdded(inst)
|
||||||
|
end
|
||||||
|
|
||||||
|
bevelTracker:Connect(onInstanceAdded)
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -0,0 +1,301 @@
|
||||||
|
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||||
|
-- @CloneTrooper1019, 2018
|
||||||
|
-- ClickToMove
|
||||||
|
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||||
|
-- Constants
|
||||||
|
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
local ContextActionService = game:GetService("ContextActionService")
|
||||||
|
local GuiService = game:GetService("GuiService")
|
||||||
|
local Players = game:GetService("Players")
|
||||||
|
local RunService = game:GetService("RunService")
|
||||||
|
local TeleportService = game:GetService("TeleportService")
|
||||||
|
local UserInputService = game:GetService("UserInputService")
|
||||||
|
|
||||||
|
local IS_TOUCH = UserInputService.TouchEnabled
|
||||||
|
|
||||||
|
local ICON_IDLE = "rbxassetid://334630296"
|
||||||
|
local ICON_HOVER = "rbxassetid://1000000"
|
||||||
|
local ICON_CLICK = "rbxasset://textures/DragCursor.png"
|
||||||
|
|
||||||
|
local DISK_OFFSET = CFrame.Angles(math.pi / 2,0,0)
|
||||||
|
|
||||||
|
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||||
|
-- Character Listener
|
||||||
|
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
local player = game.Players.LocalPlayer
|
||||||
|
local character,humanoid
|
||||||
|
|
||||||
|
local function onCharacterAdded(char)
|
||||||
|
humanoid = char:WaitForChild("Humanoid")
|
||||||
|
character = char
|
||||||
|
end
|
||||||
|
|
||||||
|
if player.Character then
|
||||||
|
onCharacterAdded(player.Character)
|
||||||
|
end
|
||||||
|
|
||||||
|
player.CharacterAdded:Connect(onCharacterAdded)
|
||||||
|
|
||||||
|
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||||
|
-- Gui Focus
|
||||||
|
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
local isMouseHoveringUi = false
|
||||||
|
|
||||||
|
local function onInputChanged(input, gameProcessed)
|
||||||
|
local inputType = input.UserInputType.Name
|
||||||
|
|
||||||
|
if inputType == "MouseMovement" then
|
||||||
|
isMouseHoveringUi = gameProcessed
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
local function isGuiFocused()
|
||||||
|
return isMouseHoveringUi or GuiService.SelectedObject ~= nil
|
||||||
|
end
|
||||||
|
|
||||||
|
UserInputService.InputChanged:Connect(onInputChanged)
|
||||||
|
|
||||||
|
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||||
|
-- Movement Goal
|
||||||
|
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
local currentGoal, moveSignal
|
||||||
|
|
||||||
|
local function findAngleBetweenXZVectors(vec2, vec1)
|
||||||
|
return math.atan2(vec1.X*vec2.Z-vec1.Z*vec2.X, vec1.X*vec2.X + vec1.Z*vec2.Z)
|
||||||
|
end
|
||||||
|
|
||||||
|
local function isFinite(num)
|
||||||
|
return num == num and num ~= 1/0 and num ~= -1/0
|
||||||
|
end
|
||||||
|
|
||||||
|
local function rotateCameraTowardsGoal()
|
||||||
|
local c = workspace.CurrentCamera
|
||||||
|
if c then
|
||||||
|
local cf = c.CFrame
|
||||||
|
local focus = c.Focus
|
||||||
|
|
||||||
|
local desiredAngle = CFrame.new(cf.p,currentGoal).lookVector
|
||||||
|
local currentAngle = cf.lookVector
|
||||||
|
|
||||||
|
local angleBetween = findAngleBetweenXZVectors(desiredAngle,currentAngle)
|
||||||
|
|
||||||
|
if isFinite(angleBetween) then
|
||||||
|
local abs = math.abs(angleBetween)
|
||||||
|
local sign = math.sign(angleBetween)
|
||||||
|
local rotation = math.min(0.01,abs)
|
||||||
|
|
||||||
|
local cfLocal = focus:toObjectSpace(cf)
|
||||||
|
c.CFrame = focus * CFrame.Angles(0,-rotation*sign,0) * cfLocal
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
local function finishGoal()
|
||||||
|
if currentGoal then
|
||||||
|
currentGoal = nil
|
||||||
|
end
|
||||||
|
if moveSignal then
|
||||||
|
moveSignal:Disconnect()
|
||||||
|
moveSignal = nil
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
local function clickToMove(goal)
|
||||||
|
finishGoal()
|
||||||
|
currentGoal = goal
|
||||||
|
|
||||||
|
moveSignal = humanoid.MoveToFinished:Connect(finishGoal)
|
||||||
|
|
||||||
|
humanoid:Move(Vector3.new(1,1,1))
|
||||||
|
humanoid:MoveTo(currentGoal)
|
||||||
|
end
|
||||||
|
|
||||||
|
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||||
|
-- Green Disk
|
||||||
|
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
local mouse = player:GetMouse()
|
||||||
|
local mouseIcon = script.Parent
|
||||||
|
mouse.TargetFilter = workspace.CurrentCamera
|
||||||
|
|
||||||
|
local lastTarget
|
||||||
|
local lastTargetCanClick = false
|
||||||
|
|
||||||
|
local disk = Instance.new("CylinderHandleAdornment")
|
||||||
|
disk.Name = "Disk"
|
||||||
|
disk.Color3 = Color3.new(0,1,0)
|
||||||
|
disk.Radius = 1
|
||||||
|
disk.Height = 0.2
|
||||||
|
disk.Visible = false
|
||||||
|
disk.Adornee = workspace.Terrain
|
||||||
|
disk.Parent = script
|
||||||
|
|
||||||
|
local goalDisk = disk:Clone()
|
||||||
|
goalDisk.Name = "Goal"
|
||||||
|
goalDisk.Parent = script
|
||||||
|
|
||||||
|
local function hasTool()
|
||||||
|
if character then
|
||||||
|
return character:FindFirstChildOfClass("Tool") ~= nil
|
||||||
|
end
|
||||||
|
|
||||||
|
return false
|
||||||
|
end
|
||||||
|
|
||||||
|
local function isFirstPerson()
|
||||||
|
if character then
|
||||||
|
local head = character:FindFirstChild("Head")
|
||||||
|
if head then
|
||||||
|
return head.LocalTransparencyModifier == 1
|
||||||
|
end
|
||||||
|
end
|
||||||
|
return false
|
||||||
|
end
|
||||||
|
|
||||||
|
local function canClickTarget()
|
||||||
|
local target = mouse.Target
|
||||||
|
if target then
|
||||||
|
if target ~= lastTarget then
|
||||||
|
local canClick = false
|
||||||
|
local clickDetector = target:FindFirstChildOfClass("ClickDetector")
|
||||||
|
|
||||||
|
if clickDetector then
|
||||||
|
local dist = player:DistanceFromCharacter(target.Position)
|
||||||
|
if dist <= clickDetector.MaxActivationDistance then
|
||||||
|
canClick = true
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
lastTarget = target
|
||||||
|
lastTargetCanClick = canClick
|
||||||
|
end
|
||||||
|
|
||||||
|
return lastTargetCanClick
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
local function canRenderDisk(rendering)
|
||||||
|
if not TeleportService:GetTeleportSetting("ClickToMove") then
|
||||||
|
return false
|
||||||
|
end
|
||||||
|
|
||||||
|
if rendering and IS_TOUCH then
|
||||||
|
return false
|
||||||
|
end
|
||||||
|
|
||||||
|
if humanoid then
|
||||||
|
local movement = humanoid.MoveDirection
|
||||||
|
if movement.Magnitude == 0 then
|
||||||
|
local pos = mouse.Hit.p
|
||||||
|
local dist = player:DistanceFromCharacter(pos)
|
||||||
|
|
||||||
|
if dist < 32 then
|
||||||
|
local blockers = {hasTool, isFirstPerson, canClickTarget, isGuiFocused}
|
||||||
|
|
||||||
|
for _,blocker in pairs(blockers) do
|
||||||
|
if blocker() then
|
||||||
|
return false
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
return true
|
||||||
|
end
|
||||||
|
else
|
||||||
|
finishGoal()
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
return false
|
||||||
|
end
|
||||||
|
|
||||||
|
local function render3dAdorn()
|
||||||
|
disk.Visible = canRenderDisk(true)
|
||||||
|
|
||||||
|
if disk.Visible then
|
||||||
|
disk.CFrame = CFrame.new(mouse.Hit.p) * DISK_OFFSET
|
||||||
|
mouseIcon.Image = ICON_HOVER
|
||||||
|
elseif canClickTarget() then
|
||||||
|
mouseIcon.Image = ICON_CLICK
|
||||||
|
elseif not hasTool() then
|
||||||
|
mouseIcon.Image = ICON_IDLE
|
||||||
|
end
|
||||||
|
|
||||||
|
if currentGoal then
|
||||||
|
goalDisk.Visible = true
|
||||||
|
goalDisk.CFrame = CFrame.new(currentGoal) * DISK_OFFSET
|
||||||
|
rotateCameraTowardsGoal()
|
||||||
|
else
|
||||||
|
goalDisk.Visible = false
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
RunService.Heartbeat:Connect(render3dAdorn)
|
||||||
|
|
||||||
|
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||||
|
-- Click Action
|
||||||
|
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
local function onInputBegan(input,gameProcessed)
|
||||||
|
local goal = mouse.Hit.p
|
||||||
|
if not gameProcessed and canRenderDisk() and humanoid then
|
||||||
|
local name = input.UserInputType.Name
|
||||||
|
|
||||||
|
if name == "MouseButton1" then
|
||||||
|
clickToMove(goal)
|
||||||
|
elseif name == "Touch" then
|
||||||
|
wait(.1)
|
||||||
|
if input.UserInputState == Enum.UserInputState.End then
|
||||||
|
clickToMove(goal)
|
||||||
|
end
|
||||||
|
elseif name == "Gamepad1" then
|
||||||
|
if input.KeyCode == Enum.KeyCode.ButtonR2 then
|
||||||
|
clickToMove(goal)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
UserInputService.InputBegan:Connect(onInputBegan)
|
||||||
|
|
||||||
|
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||||
|
-- OBLITERATE the invasive click to move mode that Roblox provides
|
||||||
|
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
pcall(function ()
|
||||||
|
if IS_TOUCH then
|
||||||
|
local playerScripts = player:WaitForChild("PlayerScripts")
|
||||||
|
local no = function () end
|
||||||
|
|
||||||
|
spawn(function ()
|
||||||
|
local controlScript = playerScripts:WaitForChild("ControlScript", 86400)
|
||||||
|
if controlScript then
|
||||||
|
local masterControl = controlScript:WaitForChild("MasterControl")
|
||||||
|
|
||||||
|
local clickToMove = masterControl:WaitForChild("ClickToMoveController")
|
||||||
|
clickToMove = require(clickToMove)
|
||||||
|
|
||||||
|
clickToMove:Disable()
|
||||||
|
clickToMove.Enable = no
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
|
||||||
|
spawn(function ()
|
||||||
|
local playerModule = playerScripts:WaitForChild("PlayerModule", 86400)
|
||||||
|
if playerModule then
|
||||||
|
local controlModule = playerModule:WaitForChild("ControlModule")
|
||||||
|
|
||||||
|
local clickToMove = controlModule:WaitForChild("ClickToMoveController")
|
||||||
|
clickToMove = require(clickToMove)
|
||||||
|
|
||||||
|
clickToMove:Stop()
|
||||||
|
clickToMove.Enable = no
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
|
||||||
|
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||||
|
|
@ -0,0 +1,34 @@
|
||||||
|
local UserInputService = game:GetService("UserInputService")
|
||||||
|
local GuiService = game:GetService("GuiService")
|
||||||
|
|
||||||
|
local function addUIScale(obj,scale)
|
||||||
|
local uiScale = Instance.new("UIScale")
|
||||||
|
uiScale.Scale = scale
|
||||||
|
uiScale.Parent = obj
|
||||||
|
end
|
||||||
|
|
||||||
|
if GuiService:IsTenFootInterface() then
|
||||||
|
local gui = script.Parent
|
||||||
|
local zoomControls = gui:WaitForChild("ZoomControls")
|
||||||
|
zoomControls.Visible = false
|
||||||
|
|
||||||
|
local backpack = gui:WaitForChild("Backpack")
|
||||||
|
backpack.Position = UDim2.new(0, 0, 1, 0)
|
||||||
|
|
||||||
|
local chat = gui:WaitForChild("Chat")
|
||||||
|
addUIScale(chat, 1.5)
|
||||||
|
|
||||||
|
local chatPadding = gui:WaitForChild("ChatPadding", 1)
|
||||||
|
if chatPadding then
|
||||||
|
chatPadding:Destroy()
|
||||||
|
end
|
||||||
|
|
||||||
|
local safeChat = gui:WaitForChild("SafeChat")
|
||||||
|
addUIScale(safeChat, 1.5)
|
||||||
|
|
||||||
|
local health = gui:WaitForChild("Health")
|
||||||
|
addUIScale(health, 1.5)
|
||||||
|
end
|
||||||
|
|
||||||
|
wait()
|
||||||
|
script:Destroy()
|
||||||
|
|
@ -0,0 +1,38 @@
|
||||||
|
<roblox version="4">
|
||||||
|
<Item class="ParticleEmitter" referent="RBXC90F783B636444DEB505CF11032972AF">
|
||||||
|
<Properties>
|
||||||
|
<Vector3 name="Acceleration">
|
||||||
|
<X>0</X>
|
||||||
|
<Y>0</Y>
|
||||||
|
<Z>0</Z>
|
||||||
|
</Vector3>
|
||||||
|
<BinaryString name="AttributesSerialize"></BinaryString>
|
||||||
|
<ColorSequence name="Color">0 1 1 1 0 1 0.498039 0.498039 0.498039 0 </ColorSequence>
|
||||||
|
<float name="Drag">0</float>
|
||||||
|
<token name="EmissionDirection">1</token>
|
||||||
|
<bool name="Enabled">false</bool>
|
||||||
|
<NumberRange name="Lifetime">0.3 0.5 </NumberRange>
|
||||||
|
<float name="LightEmission">1</float>
|
||||||
|
<float name="LightInfluence">0</float>
|
||||||
|
<bool name="LockedToPart">false</bool>
|
||||||
|
<string name="Name">ClassicExp</string>
|
||||||
|
<float name="Rate">500</float>
|
||||||
|
<NumberRange name="RotSpeed">0 0 </NumberRange>
|
||||||
|
<NumberRange name="Rotation">0 0 </NumberRange>
|
||||||
|
<NumberSequence name="Size">0 3 1.1875 0.75 2.62 0 1 0 0 </NumberSequence>
|
||||||
|
<NumberRange name="Speed">20 25 </NumberRange>
|
||||||
|
<Vector2 name="SpreadAngle">
|
||||||
|
<X>360</X>
|
||||||
|
<Y>360</Y>
|
||||||
|
</Vector2>
|
||||||
|
<BinaryString name="Tags"></BinaryString>
|
||||||
|
<Content name="Texture">
|
||||||
|
<url>rbxassetid://334788053</url>
|
||||||
|
</Content>
|
||||||
|
<NumberSequence name="Transparency">0 0 0 0.993111 0.1625 0 1 1 0 </NumberSequence>
|
||||||
|
<float name="VelocityInheritance">0</float>
|
||||||
|
<float name="ZOffset">3</float>
|
||||||
|
<bool name="Archivable">true</bool>
|
||||||
|
</Properties>
|
||||||
|
</Item>
|
||||||
|
</roblox>
|
||||||
|
|
@ -0,0 +1,50 @@
|
||||||
|
local TeleportService = game:GetService("TeleportService")
|
||||||
|
|
||||||
|
local classicExp = script:WaitForChild("ClassicExp")
|
||||||
|
local c = workspace.CurrentCamera
|
||||||
|
|
||||||
|
local baseExpAdorn = Instance.new("UnionOperation")
|
||||||
|
baseExpAdorn.Name = "ExplosionAdorn"
|
||||||
|
baseExpAdorn.Anchored = true
|
||||||
|
baseExpAdorn.CanCollide = false
|
||||||
|
baseExpAdorn.Locked = true
|
||||||
|
baseExpAdorn.Transparency = 1
|
||||||
|
baseExpAdorn.Size = Vector3.new()
|
||||||
|
|
||||||
|
local function onDescendantAdded(exp)
|
||||||
|
if exp:IsA("Explosion") then
|
||||||
|
local cf = CFrame.new(exp.Position)
|
||||||
|
local expAdorn = baseExpAdorn:Clone()
|
||||||
|
local lifeTime = 1.5
|
||||||
|
exp.Visible = false
|
||||||
|
if TeleportService:GetTeleportSetting("RetroExplosions") then
|
||||||
|
local expObj = Instance.new("SphereHandleAdornment")
|
||||||
|
expObj.Adornee = expAdorn
|
||||||
|
expObj.Radius = exp.BlastRadius
|
||||||
|
expObj.Color3 = Color3.new(1,0,0)
|
||||||
|
expObj.CFrame = cf
|
||||||
|
expObj.Parent = expAdorn
|
||||||
|
lifeTime = 1
|
||||||
|
if exp.BlastRadius > 1 then
|
||||||
|
lifeTime = lifeTime - (1/exp.BlastRadius)
|
||||||
|
end
|
||||||
|
else
|
||||||
|
spawn(function ()
|
||||||
|
local e = classicExp:Clone()
|
||||||
|
e.Parent = expAdorn
|
||||||
|
expAdorn.CFrame = cf
|
||||||
|
local lessParticles = TeleportService:GetTeleportSetting("ReducedParticles")
|
||||||
|
local count = lessParticles and 25 or 100
|
||||||
|
for i = 1,8 do
|
||||||
|
e:Emit(count)
|
||||||
|
wait(0.125)
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
end
|
||||||
|
expAdorn.Parent = c
|
||||||
|
wait(lifeTime)
|
||||||
|
expAdorn:Destroy()
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
workspace.DescendantAdded:Connect(onDescendantAdded)
|
||||||
|
|
@ -0,0 +1,55 @@
|
||||||
|
local RunService = game:GetService("RunService")
|
||||||
|
|
||||||
|
local ffAdorns = workspace:WaitForChild("_ForceFieldAdorns")
|
||||||
|
local registry = {}
|
||||||
|
local cycleStates = {}
|
||||||
|
local cycles = 60
|
||||||
|
|
||||||
|
local function onChildAdded(child)
|
||||||
|
if child:IsA("SelectionBox") then
|
||||||
|
spawn(function ()
|
||||||
|
while not child.Adornee do
|
||||||
|
child.Changed:Wait()
|
||||||
|
end
|
||||||
|
registry[child] = child.Adornee
|
||||||
|
end)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
local function onChildRemoved(child)
|
||||||
|
if registry[child] then
|
||||||
|
registry[child] = nil
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
local function update()
|
||||||
|
local now = tick()
|
||||||
|
for adorn,adornee in pairs(registry) do
|
||||||
|
local model = adornee:FindFirstAncestorWhichIsA("Model")
|
||||||
|
local key
|
||||||
|
if model then
|
||||||
|
local key = model:GetFullName()
|
||||||
|
local startTime = cycleStates[key]
|
||||||
|
if not startTime then
|
||||||
|
startTime = tick()
|
||||||
|
cycleStates[key] = startTime
|
||||||
|
end
|
||||||
|
local cycle = math.floor(((now-startTime)*2) * cycles) % (cycles*2)
|
||||||
|
if cycle > cycles then
|
||||||
|
cycle = cycles - (cycle - cycles)
|
||||||
|
end
|
||||||
|
local invertCycle = cycles - cycle
|
||||||
|
adorn.Color3 = Color3.new(cycle/cycles, 0, invertCycle/cycles)
|
||||||
|
adorn.Transparency = 0
|
||||||
|
end
|
||||||
|
adorn.Visible = adornee:IsDescendantOf(workspace) and adornee.LocalTransparencyModifier < 1
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
for _,v in pairs(ffAdorns:GetChildren()) do
|
||||||
|
onChildAdded(v)
|
||||||
|
end
|
||||||
|
|
||||||
|
RunService.Heartbeat:Connect(update)
|
||||||
|
ffAdorns.ChildAdded:Connect(onChildAdded)
|
||||||
|
ffAdorns.ChildRemoved:Connect(onChildRemoved)
|
||||||
|
|
@ -0,0 +1,29 @@
|
||||||
|
-- Seriously Roblox?
|
||||||
|
|
||||||
|
local Players = game:GetService("Players")
|
||||||
|
local RunService = game:GetService("RunService")
|
||||||
|
local UserInputService = game:GetService("UserInputService")
|
||||||
|
|
||||||
|
local player = Players.LocalPlayer
|
||||||
|
local playerScripts = player:WaitForChild("PlayerScripts")
|
||||||
|
|
||||||
|
local playerModule = playerScripts:WaitForChild("PlayerModule")
|
||||||
|
local controlModule = playerModule:WaitForChild("ControlModule")
|
||||||
|
local gamepad = require(controlModule:WaitForChild("Gamepad"))
|
||||||
|
|
||||||
|
playerModule = require(playerModule)
|
||||||
|
controlModule = playerModule:GetControls()
|
||||||
|
|
||||||
|
local function fixGamepad()
|
||||||
|
local lastInputType = UserInputService:GetLastInputType()
|
||||||
|
|
||||||
|
if lastInputType.Name == "Gamepad1" then
|
||||||
|
local controllers = controlModule.controllers
|
||||||
|
|
||||||
|
if controlModule.activeController ~= controllers[gamepad] then
|
||||||
|
controlModule:SwitchToController(gamepad)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
RunService:BindToRenderStep("GamepadPatch", 0, fixGamepad)
|
||||||
|
|
@ -0,0 +1,237 @@
|
||||||
|
<roblox version="4">
|
||||||
|
<Item class="BillboardGui" referent="RBX285AF39E6F624CF0917C07089C9C838A">
|
||||||
|
<Properties>
|
||||||
|
<bool name="Active">false</bool>
|
||||||
|
<Ref name="Adornee">null</Ref>
|
||||||
|
<bool name="AlwaysOnTop">true</bool>
|
||||||
|
<BinaryString name="AttributesSerialize"></BinaryString>
|
||||||
|
<bool name="AutoLocalize">true</bool>
|
||||||
|
<bool name="ClipsDescendants">false</bool>
|
||||||
|
<float name="DistanceLowerLimit">0</float>
|
||||||
|
<float name="DistanceStep">0</float>
|
||||||
|
<float name="DistanceUpperLimit">-1</float>
|
||||||
|
<bool name="Enabled">true</bool>
|
||||||
|
<Vector3 name="ExtentsOffset">
|
||||||
|
<X>0</X>
|
||||||
|
<Y>0</Y>
|
||||||
|
<Z>0</Z>
|
||||||
|
</Vector3>
|
||||||
|
<Vector3 name="ExtentsOffsetWorldSpace">
|
||||||
|
<X>0</X>
|
||||||
|
<Y>0</Y>
|
||||||
|
<Z>0</Z>
|
||||||
|
</Vector3>
|
||||||
|
<float name="LightInfluence">0</float>
|
||||||
|
<float name="MaxDistance">INF</float>
|
||||||
|
<string name="Name">Health</string>
|
||||||
|
<Ref name="PlayerToHideFrom">null</Ref>
|
||||||
|
<bool name="ResetOnSpawn">true</bool>
|
||||||
|
<Ref name="RootLocalizationTable">null</Ref>
|
||||||
|
<UDim2 name="Size">
|
||||||
|
<XS>0</XS>
|
||||||
|
<XO>96</XO>
|
||||||
|
<YS>0</YS>
|
||||||
|
<YO>24</YO>
|
||||||
|
</UDim2>
|
||||||
|
<Vector2 name="SizeOffset">
|
||||||
|
<X>0</X>
|
||||||
|
<Y>0</Y>
|
||||||
|
</Vector2>
|
||||||
|
<Vector3 name="StudsOffset">
|
||||||
|
<X>0</X>
|
||||||
|
<Y>0</Y>
|
||||||
|
<Z>0</Z>
|
||||||
|
</Vector3>
|
||||||
|
<Vector3 name="StudsOffsetWorldSpace">
|
||||||
|
<X>0</X>
|
||||||
|
<Y>1.5</Y>
|
||||||
|
<Z>0</Z>
|
||||||
|
</Vector3>
|
||||||
|
<BinaryString name="Tags"></BinaryString>
|
||||||
|
<token name="ZIndexBehavior">0</token>
|
||||||
|
<bool name="Archivable">true</bool>
|
||||||
|
</Properties>
|
||||||
|
<Item class="TextLabel" referent="RBX69042A4E12214255B323916F4F4CFB9C">
|
||||||
|
<Properties>
|
||||||
|
<bool name="Active">false</bool>
|
||||||
|
<Vector2 name="AnchorPoint">
|
||||||
|
<X>0.5</X>
|
||||||
|
<Y>0.75</Y>
|
||||||
|
</Vector2>
|
||||||
|
<BinaryString name="AttributesSerialize"></BinaryString>
|
||||||
|
<bool name="AutoLocalize">true</bool>
|
||||||
|
<Color3 name="BackgroundColor3">
|
||||||
|
<R>1</R>
|
||||||
|
<G>1</G>
|
||||||
|
<B>1</B>
|
||||||
|
</Color3>
|
||||||
|
<float name="BackgroundTransparency">1</float>
|
||||||
|
<Color3 name="BorderColor3">
|
||||||
|
<R>0.1058824</R>
|
||||||
|
<G>0.1647059</G>
|
||||||
|
<B>0.2078432</B>
|
||||||
|
</Color3>
|
||||||
|
<token name="BorderMode">0</token>
|
||||||
|
<int name="BorderSizePixel">1</int>
|
||||||
|
<bool name="ClipsDescendants">false</bool>
|
||||||
|
<bool name="Draggable">false</bool>
|
||||||
|
<token name="Font">9</token>
|
||||||
|
<int name="LayoutOrder">0</int>
|
||||||
|
<float name="LineHeight">1</float>
|
||||||
|
<string name="Name">PlayerName</string>
|
||||||
|
<Ref name="NextSelectionDown">null</Ref>
|
||||||
|
<Ref name="NextSelectionLeft">null</Ref>
|
||||||
|
<Ref name="NextSelectionRight">null</Ref>
|
||||||
|
<Ref name="NextSelectionUp">null</Ref>
|
||||||
|
<UDim2 name="Position">
|
||||||
|
<XS>0.5</XS>
|
||||||
|
<XO>0</XO>
|
||||||
|
<YS>0</YS>
|
||||||
|
<YO>0</YO>
|
||||||
|
</UDim2>
|
||||||
|
<Ref name="RootLocalizationTable">null</Ref>
|
||||||
|
<float name="Rotation">0</float>
|
||||||
|
<bool name="Selectable">false</bool>
|
||||||
|
<Ref name="SelectionImageObject">null</Ref>
|
||||||
|
<UDim2 name="Size">
|
||||||
|
<XS>10</XS>
|
||||||
|
<XO>0</XO>
|
||||||
|
<YS>1</YS>
|
||||||
|
<YO>0</YO>
|
||||||
|
</UDim2>
|
||||||
|
<token name="SizeConstraint">0</token>
|
||||||
|
<BinaryString name="Tags"></BinaryString>
|
||||||
|
<string name="Text">CloneTrooper1019</string>
|
||||||
|
<Color3 name="TextColor3">
|
||||||
|
<R>1</R>
|
||||||
|
<G>1</G>
|
||||||
|
<B>1</B>
|
||||||
|
</Color3>
|
||||||
|
<bool name="TextScaled">true</bool>
|
||||||
|
<float name="TextSize">24</float>
|
||||||
|
<Color3 name="TextStrokeColor3">
|
||||||
|
<R>0</R>
|
||||||
|
<G>0</G>
|
||||||
|
<B>0</B>
|
||||||
|
</Color3>
|
||||||
|
<float name="TextStrokeTransparency">0</float>
|
||||||
|
<float name="TextTransparency">0</float>
|
||||||
|
<token name="TextTruncate">0</token>
|
||||||
|
<bool name="TextWrapped">true</bool>
|
||||||
|
<token name="TextXAlignment">2</token>
|
||||||
|
<token name="TextYAlignment">1</token>
|
||||||
|
<bool name="Visible">true</bool>
|
||||||
|
<int name="ZIndex">1</int>
|
||||||
|
<bool name="Archivable">true</bool>
|
||||||
|
</Properties>
|
||||||
|
</Item>
|
||||||
|
<Item class="Frame" referent="RBX32E2F9B55F8D4A0D861563FBE870D467">
|
||||||
|
<Properties>
|
||||||
|
<bool name="Active">false</bool>
|
||||||
|
<Vector2 name="AnchorPoint">
|
||||||
|
<X>0.5</X>
|
||||||
|
<Y>0.5</Y>
|
||||||
|
</Vector2>
|
||||||
|
<BinaryString name="AttributesSerialize"></BinaryString>
|
||||||
|
<bool name="AutoLocalize">true</bool>
|
||||||
|
<Color3 name="BackgroundColor3">
|
||||||
|
<R>1</R>
|
||||||
|
<G>0</G>
|
||||||
|
<B>0</B>
|
||||||
|
</Color3>
|
||||||
|
<float name="BackgroundTransparency">0</float>
|
||||||
|
<Color3 name="BorderColor3">
|
||||||
|
<R>0.1058824</R>
|
||||||
|
<G>0.1647059</G>
|
||||||
|
<B>0.2078432</B>
|
||||||
|
</Color3>
|
||||||
|
<token name="BorderMode">0</token>
|
||||||
|
<int name="BorderSizePixel">0</int>
|
||||||
|
<bool name="ClipsDescendants">false</bool>
|
||||||
|
<bool name="Draggable">false</bool>
|
||||||
|
<int name="LayoutOrder">0</int>
|
||||||
|
<string name="Name">RedBar</string>
|
||||||
|
<Ref name="NextSelectionDown">null</Ref>
|
||||||
|
<Ref name="NextSelectionLeft">null</Ref>
|
||||||
|
<Ref name="NextSelectionRight">null</Ref>
|
||||||
|
<Ref name="NextSelectionUp">null</Ref>
|
||||||
|
<UDim2 name="Position">
|
||||||
|
<XS>0.5</XS>
|
||||||
|
<XO>0</XO>
|
||||||
|
<YS>0.5</YS>
|
||||||
|
<YO>0</YO>
|
||||||
|
</UDim2>
|
||||||
|
<Ref name="RootLocalizationTable">null</Ref>
|
||||||
|
<float name="Rotation">0</float>
|
||||||
|
<bool name="Selectable">false</bool>
|
||||||
|
<Ref name="SelectionImageObject">null</Ref>
|
||||||
|
<UDim2 name="Size">
|
||||||
|
<XS>0.6</XS>
|
||||||
|
<XO>0</XO>
|
||||||
|
<YS>0.3</YS>
|
||||||
|
<YO>0</YO>
|
||||||
|
</UDim2>
|
||||||
|
<token name="SizeConstraint">0</token>
|
||||||
|
<token name="Style">0</token>
|
||||||
|
<BinaryString name="Tags"></BinaryString>
|
||||||
|
<bool name="Visible">true</bool>
|
||||||
|
<int name="ZIndex">1</int>
|
||||||
|
<bool name="Archivable">true</bool>
|
||||||
|
</Properties>
|
||||||
|
<Item class="Frame" referent="RBXC3055B01C9B546139D22C75F5548AEDA">
|
||||||
|
<Properties>
|
||||||
|
<bool name="Active">false</bool>
|
||||||
|
<Vector2 name="AnchorPoint">
|
||||||
|
<X>0</X>
|
||||||
|
<Y>0</Y>
|
||||||
|
</Vector2>
|
||||||
|
<BinaryString name="AttributesSerialize"></BinaryString>
|
||||||
|
<bool name="AutoLocalize">true</bool>
|
||||||
|
<Color3 name="BackgroundColor3">
|
||||||
|
<R>0.5058824</R>
|
||||||
|
<G>0.7725491</G>
|
||||||
|
<B>0.08627451</B>
|
||||||
|
</Color3>
|
||||||
|
<float name="BackgroundTransparency">0</float>
|
||||||
|
<Color3 name="BorderColor3">
|
||||||
|
<R>0.1058824</R>
|
||||||
|
<G>0.1647059</G>
|
||||||
|
<B>0.2078432</B>
|
||||||
|
</Color3>
|
||||||
|
<token name="BorderMode">0</token>
|
||||||
|
<int name="BorderSizePixel">0</int>
|
||||||
|
<bool name="ClipsDescendants">false</bool>
|
||||||
|
<bool name="Draggable">false</bool>
|
||||||
|
<int name="LayoutOrder">0</int>
|
||||||
|
<string name="Name">GreenBar</string>
|
||||||
|
<Ref name="NextSelectionDown">null</Ref>
|
||||||
|
<Ref name="NextSelectionLeft">null</Ref>
|
||||||
|
<Ref name="NextSelectionRight">null</Ref>
|
||||||
|
<Ref name="NextSelectionUp">null</Ref>
|
||||||
|
<UDim2 name="Position">
|
||||||
|
<XS>0</XS>
|
||||||
|
<XO>0</XO>
|
||||||
|
<YS>0</YS>
|
||||||
|
<YO>0</YO>
|
||||||
|
</UDim2>
|
||||||
|
<Ref name="RootLocalizationTable">null</Ref>
|
||||||
|
<float name="Rotation">0</float>
|
||||||
|
<bool name="Selectable">false</bool>
|
||||||
|
<Ref name="SelectionImageObject">null</Ref>
|
||||||
|
<UDim2 name="Size">
|
||||||
|
<XS>1</XS>
|
||||||
|
<XO>0</XO>
|
||||||
|
<YS>1</YS>
|
||||||
|
<YO>0</YO>
|
||||||
|
</UDim2>
|
||||||
|
<token name="SizeConstraint">0</token>
|
||||||
|
<token name="Style">0</token>
|
||||||
|
<BinaryString name="Tags"></BinaryString>
|
||||||
|
<bool name="Visible">true</bool>
|
||||||
|
<int name="ZIndex">1</int>
|
||||||
|
<bool name="Archivable">true</bool>
|
||||||
|
</Properties>
|
||||||
|
</Item>
|
||||||
|
</Item>
|
||||||
|
</Item>
|
||||||
|
</roblox>
|
||||||
|
|
@ -0,0 +1,139 @@
|
||||||
|
local humanoids = {}
|
||||||
|
local player = game.Players.LocalPlayer
|
||||||
|
local pgui = player:WaitForChild("PlayerGui")
|
||||||
|
local healthBase = script:WaitForChild("Health")
|
||||||
|
local rs = game:GetService("RunService")
|
||||||
|
|
||||||
|
local farStudsOffset = Vector3.new(0,2,0)
|
||||||
|
local closeStudsOffset = Vector3.new(0,1,0)
|
||||||
|
|
||||||
|
local farSize = UDim2.new(0,50,0,20)
|
||||||
|
local closeSize = UDim2.new(0,100,0,30)
|
||||||
|
|
||||||
|
local function isFinite(num)
|
||||||
|
return num == num and num ~= -1/0 and num ~= 1/0
|
||||||
|
end
|
||||||
|
|
||||||
|
local function setupHumanoid(h)
|
||||||
|
local updateCon = nil
|
||||||
|
local currentHealth = nil
|
||||||
|
|
||||||
|
local function onAncestryChanged()
|
||||||
|
if updateCon then
|
||||||
|
updateCon:disconnect()
|
||||||
|
updateCon = nil
|
||||||
|
end
|
||||||
|
|
||||||
|
if currentHealth then
|
||||||
|
currentHealth:Destroy()
|
||||||
|
currentHealth = nil
|
||||||
|
end
|
||||||
|
|
||||||
|
local char = h.Parent
|
||||||
|
|
||||||
|
if char then
|
||||||
|
while not char:FindFirstChild("Head") do
|
||||||
|
if h.Parent ~= char then break end
|
||||||
|
char.ChildAdded:wait()
|
||||||
|
end
|
||||||
|
|
||||||
|
local head = char:FindFirstChild("Head")
|
||||||
|
|
||||||
|
if head then
|
||||||
|
local health = healthBase:Clone()
|
||||||
|
local playerName = health:WaitForChild("PlayerName")
|
||||||
|
local redBar = health:WaitForChild("RedBar")
|
||||||
|
local greenBar = redBar:WaitForChild("GreenBar")
|
||||||
|
local inOverWrite = false
|
||||||
|
local overWriter = nil
|
||||||
|
|
||||||
|
local hPlayer = game.Players:GetPlayerFromCharacter(char)
|
||||||
|
playerName.Text = char.Name
|
||||||
|
health.Adornee = head
|
||||||
|
health.PlayerToHideFrom = hPlayer
|
||||||
|
health.Parent = head
|
||||||
|
|
||||||
|
local c = workspace.CurrentCamera
|
||||||
|
|
||||||
|
local function update()
|
||||||
|
local dist = (c.CFrame.p - head.Position).magnitude
|
||||||
|
local fontSize = 12
|
||||||
|
|
||||||
|
if dist < 20 then
|
||||||
|
fontSize = 24
|
||||||
|
elseif dist < 50 then
|
||||||
|
fontSize = 18
|
||||||
|
end
|
||||||
|
|
||||||
|
local ratio = h.Health / h.MaxHealth
|
||||||
|
redBar.Visible = isFinite(ratio)
|
||||||
|
redBar.BackgroundTransparency = math.floor(ratio)
|
||||||
|
redBar.Size = UDim2.new(0, fontSize * 4, 0, fontSize / 2)
|
||||||
|
greenBar.Size = UDim2.new(ratio, 0, 1, 0)
|
||||||
|
|
||||||
|
local width = fontSize * 4
|
||||||
|
health.Size = UDim2.new(0, width, 0, fontSize)
|
||||||
|
health.Enabled = (dist <= 100 and head.Transparency < 1)
|
||||||
|
health.StudsOffsetWorldSpace = Vector3.new(0, 1.5, 0)
|
||||||
|
|
||||||
|
if hPlayer and game:FindService("Teams") then
|
||||||
|
playerName.TextColor = hPlayer.TeamColor
|
||||||
|
else
|
||||||
|
playerName.TextColor3 = Color3.new(1, 1, 1)
|
||||||
|
end
|
||||||
|
|
||||||
|
local overWriter = char:FindFirstChild("NameOverwrite")
|
||||||
|
if overWriter and overWriter:IsA("StringValue") then
|
||||||
|
playerName.Text = overWriter.Value
|
||||||
|
else
|
||||||
|
playerName.Text = char.Name
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
updateCon = rs.RenderStepped:Connect(update)
|
||||||
|
currentHealth = health
|
||||||
|
h.DisplayDistanceType = "None"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
onAncestryChanged()
|
||||||
|
h.AncestryChanged:Connect(onAncestryChanged)
|
||||||
|
end
|
||||||
|
|
||||||
|
local function recurse(obj)
|
||||||
|
for _,v in pairs(obj:GetChildren()) do
|
||||||
|
if v:IsA("Humanoid") then
|
||||||
|
humanoids[v] = true
|
||||||
|
else
|
||||||
|
recurse(v)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
recurse(workspace)
|
||||||
|
|
||||||
|
for h in pairs(humanoids) do
|
||||||
|
humanoids[h] = true
|
||||||
|
|
||||||
|
spawn(function ()
|
||||||
|
setupHumanoid(h)
|
||||||
|
end)
|
||||||
|
end
|
||||||
|
|
||||||
|
local function onDescendantAdded(child)
|
||||||
|
if child:IsA("Humanoid") then
|
||||||
|
humanoids[child] = true
|
||||||
|
setupHumanoid(child)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
local function onDescendantRemoved(child)
|
||||||
|
if humanoids[child] then
|
||||||
|
humanoids[child] = nil
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
recurse(workspace)
|
||||||
|
|
||||||
|
workspace.DescendantAdded:connect(onDescendantAdded)
|
||||||
|
workspace.DescendantRemoving:connect(onDescendantRemoved)
|
||||||
|
|
@ -0,0 +1,185 @@
|
||||||
|
local UserInputService = game:GetService("UserInputService")
|
||||||
|
local ContextActionService = game:GetService("ContextActionService")
|
||||||
|
local Debris = game:GetService("Debris")
|
||||||
|
|
||||||
|
local gateway = script.Parent
|
||||||
|
local tool = gateway.Parent
|
||||||
|
local remote = gateway:WaitForChild("Gateway")
|
||||||
|
local player = game.Players.LocalPlayer
|
||||||
|
local mouse = player:GetMouse()
|
||||||
|
local isActive = false
|
||||||
|
|
||||||
|
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||||
|
-- Standard Input
|
||||||
|
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
local function activate(active,cf)
|
||||||
|
isActive = active
|
||||||
|
remote:FireServer("SetActive",active,cf)
|
||||||
|
while isActive do
|
||||||
|
wait(.1)
|
||||||
|
remote:FireServer("SetTarget",mouse.Hit)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
local function onKey(input)
|
||||||
|
local keyCode = input.KeyCode.Name
|
||||||
|
local down = (input.UserInputState.Name == "Begin")
|
||||||
|
remote:FireServer("KeyEvent",keyCode,down)
|
||||||
|
end
|
||||||
|
|
||||||
|
local function onInputBegan(input,gameProcessed)
|
||||||
|
if not gameProcessed then
|
||||||
|
local name = input.UserInputType.Name
|
||||||
|
if name == "MouseButton1" then
|
||||||
|
activate(true,mouse.Hit)
|
||||||
|
elseif name == "Touch" then
|
||||||
|
wait(.1)
|
||||||
|
local state = input.UserInputState.Name
|
||||||
|
if state == "End" or state == "Cancel" then
|
||||||
|
activate(true,mouse.Hit)
|
||||||
|
end
|
||||||
|
elseif name == "Gamepad1" then
|
||||||
|
local keyCode = input.KeyCode.Name
|
||||||
|
if keyCode == "ButtonR2" then
|
||||||
|
activate(true,mouse.Hit)
|
||||||
|
end
|
||||||
|
elseif name == "Keyboard" then
|
||||||
|
onKey(input)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
local function onInputEnded(input,gameProcessed)
|
||||||
|
if not gameProcessed and isActive then
|
||||||
|
local name = input.UserInputType.Name
|
||||||
|
if name == "MouseButton1" or name == "Touch" or name == "Gamepad1" then
|
||||||
|
activate(false,mouse.Hit)
|
||||||
|
elseif name == "Keyboard" then
|
||||||
|
onKey(input)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
UserInputService.InputBegan:Connect(onInputBegan)
|
||||||
|
UserInputService.InputEnded:Connect(onInputEnded)
|
||||||
|
|
||||||
|
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||||
|
-- Special case Input
|
||||||
|
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
local mControlScheme = tool:WaitForChild("ControlScheme",5)
|
||||||
|
|
||||||
|
if mControlScheme then
|
||||||
|
local controlSchemeData = require(mControlScheme)
|
||||||
|
local controlScheme = controlSchemeData.Buttons
|
||||||
|
local activateContext = controlSchemeData.ActivateContext
|
||||||
|
local keyEvent = tool:WaitForChild("KeyEvent")
|
||||||
|
local callbacks = {}
|
||||||
|
|
||||||
|
local hands = { L = "Left", R = "Right" }
|
||||||
|
local handTypes = {"Bumper","Trigger","Joystick (Press)"}
|
||||||
|
|
||||||
|
local schemeDocs =
|
||||||
|
{
|
||||||
|
Keyboard = {"Hold Left Mouse Button - " .. activateContext};
|
||||||
|
Gamepad = {"Hold Right Trigger - " .. activateContext};
|
||||||
|
}
|
||||||
|
|
||||||
|
for key,data in pairs(controlScheme) do
|
||||||
|
local down = false
|
||||||
|
callbacks[key] = function (actionName,inputState,inputObject)
|
||||||
|
if (inputState.Name == "Begin") and not down then
|
||||||
|
down = true
|
||||||
|
if data.Client then
|
||||||
|
keyEvent:Fire(key,true)
|
||||||
|
else
|
||||||
|
remote:FireServer("KeyEvent",key,true)
|
||||||
|
end
|
||||||
|
elseif (inputState.Name == "End") and down then
|
||||||
|
down = false
|
||||||
|
if data.Client then
|
||||||
|
keyEvent:Fire(key,false)
|
||||||
|
else
|
||||||
|
remote:FireServer("KeyEvent",key,false)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
local xBtn = data.XboxButton:gsub("Button","")
|
||||||
|
if #xBtn == 2 then
|
||||||
|
local handId,hTypeId = xBtn:match("(%u)(%d)")
|
||||||
|
local hand = hands[handId]
|
||||||
|
local hType = handTypes[tonumber(hTypeId)]
|
||||||
|
xBtn = hand .. " " .. hType
|
||||||
|
else
|
||||||
|
xBtn = "(" .. xBtn .. ")"
|
||||||
|
end
|
||||||
|
table.insert(schemeDocs.Keyboard,key .. " - " .. data.Label)
|
||||||
|
table.insert(schemeDocs.Gamepad,xBtn .. " - " .. data.Label)
|
||||||
|
end
|
||||||
|
|
||||||
|
local currentSchemeDocMsg
|
||||||
|
|
||||||
|
local function onLastInputTypeChanged(inputType)
|
||||||
|
if currentSchemeDocMsg and not UserInputService.TouchEnabled and not controlSchemeData.HideControls then
|
||||||
|
local schemeDoc
|
||||||
|
if inputType.Name:find("Gamepad") then
|
||||||
|
schemeDoc = "Gamepad"
|
||||||
|
else
|
||||||
|
schemeDoc = "Keyboard"
|
||||||
|
end
|
||||||
|
currentSchemeDocMsg.Text = schemeDoc .. " Controls:\n\n" .. table.concat(schemeDocs[schemeDoc],"\n")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
local diedCon
|
||||||
|
local equipped = false
|
||||||
|
|
||||||
|
local function onUnequipped()
|
||||||
|
if equipped then
|
||||||
|
equipped = false
|
||||||
|
for key,data in pairs(controlScheme) do
|
||||||
|
ContextActionService:UnbindAction(data.Label)
|
||||||
|
end
|
||||||
|
currentSchemeDocMsg:Destroy()
|
||||||
|
currentSchemeDocMsg = nil
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
local function onEquipped()
|
||||||
|
if not equipped then
|
||||||
|
equipped = true
|
||||||
|
for key,data in pairs(controlScheme) do
|
||||||
|
ContextActionService:BindAction(data.Label,callbacks[key],true,Enum.KeyCode[data.XboxButton])
|
||||||
|
ContextActionService:SetTitle(data.Label,data.Label)
|
||||||
|
end
|
||||||
|
if UserInputService.TouchEnabled then
|
||||||
|
spawn(function ()
|
||||||
|
local playerGui = player:WaitForChild("PlayerGui")
|
||||||
|
local contextActionGui = playerGui:WaitForChild("ContextActionGui")
|
||||||
|
local contextButtonFrame = contextActionGui:WaitForChild("ContextButtonFrame")
|
||||||
|
contextButtonFrame.Size = UDim2.new(3/8,0,3/8,0)
|
||||||
|
contextButtonFrame.AnchorPoint = Vector2.new(1,1)
|
||||||
|
contextButtonFrame.Position = UDim2.new(1,0,1,0)
|
||||||
|
end)
|
||||||
|
end
|
||||||
|
currentSchemeDocMsg = Instance.new("Message")
|
||||||
|
currentSchemeDocMsg.Parent = player
|
||||||
|
onLastInputTypeChanged(UserInputService:GetLastInputType())
|
||||||
|
if not diedCon then
|
||||||
|
local char = tool.Parent
|
||||||
|
if char then
|
||||||
|
local humanoid = char:FindFirstChildWhichIsA("Humanoid")
|
||||||
|
if humanoid then
|
||||||
|
diedCon = humanoid.Died:Connect(onUnequipped)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
tool.Equipped:Connect(onEquipped)
|
||||||
|
tool.Unequipped:Connect(onUnequipped)
|
||||||
|
UserInputService.LastInputTypeChanged:Connect(onLastInputTypeChanged)
|
||||||
|
end
|
||||||
|
|
@ -0,0 +1,5 @@
|
||||||
|
local TeleportService = game:GetService("TeleportService")
|
||||||
|
local gameMusic = workspace:WaitForChild("GameMusic",10)
|
||||||
|
if gameMusic and TeleportService:GetTeleportSetting("AllowMusic") then
|
||||||
|
gameMusic:Play()
|
||||||
|
end
|
||||||
|
|
@ -0,0 +1,9 @@
|
||||||
|
local TARGET = script.Name
|
||||||
|
|
||||||
|
do
|
||||||
|
local ReplicatedStorage = game:GetService("ReplicatedStorage")
|
||||||
|
local client = ReplicatedStorage:WaitForChild("Client")
|
||||||
|
local targetScript = client:WaitForChild(TARGET)
|
||||||
|
local activation = require(targetScript)
|
||||||
|
activation(script)
|
||||||
|
end
|
||||||
|
|
@ -0,0 +1,12 @@
|
||||||
|
local CollectionService = game:GetService("CollectionService")
|
||||||
|
local TeleportService = game:GetService("TeleportService")
|
||||||
|
|
||||||
|
local function onGlitchSoundAdded(glitchSound)
|
||||||
|
if TeleportService:GetTeleportSetting("SoundEquipBug") then
|
||||||
|
glitchSound.MaxDistance = 10000
|
||||||
|
glitchSound:Play()
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
local addSignal = CollectionService:GetInstanceAddedSignal("ToolSoundGlitch")
|
||||||
|
addSignal:Connect(onGlitchSoundAdded)
|
||||||
|
|
@ -0,0 +1,10 @@
|
||||||
|
<roblox version="4">
|
||||||
|
<Item class="RemoteEvent" referent="RBXEC158FB6465D4F58B4EB58B92272E9AF">
|
||||||
|
<Properties>
|
||||||
|
<BinaryString name="AttributesSerialize"></BinaryString>
|
||||||
|
<string name="Name">ChatRemote</string>
|
||||||
|
<BinaryString name="Tags"></BinaryString>
|
||||||
|
<bool name="Archivable">true</bool>
|
||||||
|
</Properties>
|
||||||
|
</Item>
|
||||||
|
</roblox>
|
||||||
|
|
@ -0,0 +1,10 @@
|
||||||
|
<roblox version="4">
|
||||||
|
<Item class="RemoteEvent" referent="RBX0D1AE774974B43A6AAF746E2EE819A42">
|
||||||
|
<Properties>
|
||||||
|
<BinaryString name="AttributesSerialize"></BinaryString>
|
||||||
|
<string name="Name">RequestCharacter</string>
|
||||||
|
<BinaryString name="Tags"></BinaryString>
|
||||||
|
<bool name="Archivable">true</bool>
|
||||||
|
</Properties>
|
||||||
|
</Item>
|
||||||
|
</roblox>
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
Shared/Safechat
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
Server/Badges
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
Server/Bevels
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
Server/BuildTools
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
Server/CaptureTheFlag
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
Server/Characters
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
Server/Chat
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
Server/Cylinders
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
Server/Explosions
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
Server/ForceFields
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
Server/HatGranter
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
Server/Heads
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
Server/Leaderboard
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
Server/LoadTools
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
Server/Parts
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
Server/Regeneration
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
Server/SessionTracker
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
Server/Time
|
||||||
|
|
@ -0,0 +1,99 @@
|
||||||
|
<roblox version="4">
|
||||||
|
<Item class="MeshPart" referent="RBXDB19E5E4E6164EBB8D41D1FFEE0AA2C9">
|
||||||
|
<Properties>
|
||||||
|
<bool name="Anchored">false</bool>
|
||||||
|
<BinaryString name="AttributesSerialize"></BinaryString>
|
||||||
|
<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>
|
||||||
|
<CoordinateFrame name="CFrame">
|
||||||
|
<X>0</X>
|
||||||
|
<Y>1.800009</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>
|
||||||
|
<bool name="CanCollide">true</bool>
|
||||||
|
<bool name="CastShadow">true</bool>
|
||||||
|
<int name="CollisionGroupId">0</int>
|
||||||
|
<Color3uint8 name="Color3uint8">4288914085</Color3uint8>
|
||||||
|
<PhysicalProperties name="CustomPhysicalProperties">
|
||||||
|
<CustomPhysics>false</CustomPhysics>
|
||||||
|
</PhysicalProperties>
|
||||||
|
<float name="FrontParamA">-0.5</float>
|
||||||
|
<float name="FrontParamB">0.5</float>
|
||||||
|
<token name="FrontSurface">0</token>
|
||||||
|
<token name="FrontSurfaceInput">0</token>
|
||||||
|
<Vector3 name="InitialSize">
|
||||||
|
<X>1</X>
|
||||||
|
<Y>0.4</Y>
|
||||||
|
<Z>1</Z>
|
||||||
|
</Vector3>
|
||||||
|
<BinaryString name="LODData"></BinaryString>
|
||||||
|
<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>
|
||||||
|
<bool name="Massless">false</bool>
|
||||||
|
<token name="Material">272</token>
|
||||||
|
<Content name="MeshID">
|
||||||
|
<url>rbxassetid://3188648073</url>
|
||||||
|
</Content>
|
||||||
|
<Content name="MeshId">
|
||||||
|
<url>rbxassetid://3188648073</url>
|
||||||
|
</Content>
|
||||||
|
<string name="Name">1.00 ~ 0.40 ~ 1.00</string>
|
||||||
|
<SharedString name="PhysicalConfigData">+KXn2PVkmG8K5+S8Au8qxA==</SharedString>
|
||||||
|
<BinaryString name="PhysicsData"></BinaryString>
|
||||||
|
<float name="Reflectance">0</float>
|
||||||
|
<token name="RenderFidelity">0</token>
|
||||||
|
<float name="RightParamA">-0.5</float>
|
||||||
|
<float name="RightParamB">0.5</float>
|
||||||
|
<token name="RightSurface">0</token>
|
||||||
|
<token name="RightSurfaceInput">0</token>
|
||||||
|
<int name="RootPriority">0</int>
|
||||||
|
<Vector3 name="RotVelocity">
|
||||||
|
<X>0</X>
|
||||||
|
<Y>0</Y>
|
||||||
|
<Z>0</Z>
|
||||||
|
</Vector3>
|
||||||
|
<BinaryString name="Tags"><![CDATA[SGFzQmV2ZWxz]]></BinaryString>
|
||||||
|
<Content name="TextureID">
|
||||||
|
<null></null>
|
||||||
|
</Content>
|
||||||
|
<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>
|
||||||
|
<Vector3 name="size">
|
||||||
|
<X>1</X>
|
||||||
|
<Y>0.4</Y>
|
||||||
|
<Z>1</Z>
|
||||||
|
</Vector3>
|
||||||
|
<token name="CollisionFidelity">0</token>
|
||||||
|
<bool name="Archivable">true</bool>
|
||||||
|
</Properties>
|
||||||
|
</Item>
|
||||||
|
<SharedStrings>
|
||||||
|
<SharedString md5="+KXn2PVkmG8K5+S8Au8qxA=="><![CDATA[Q1NHUEhTAAAAAEJMT0NL]]></SharedString>
|
||||||
|
</SharedStrings>
|
||||||
|
</roblox>
|
||||||
|
|
@ -0,0 +1,99 @@
|
||||||
|
<roblox version="4">
|
||||||
|
<Item class="MeshPart" referent="RBX21778373B6E0466D9B566E868BB1203B">
|
||||||
|
<Properties>
|
||||||
|
<bool name="Anchored">false</bool>
|
||||||
|
<BinaryString name="AttributesSerialize"></BinaryString>
|
||||||
|
<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>
|
||||||
|
<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>
|
||||||
|
<bool name="CanCollide">true</bool>
|
||||||
|
<bool name="CastShadow">true</bool>
|
||||||
|
<int name="CollisionGroupId">0</int>
|
||||||
|
<Color3uint8 name="Color3uint8">4288914085</Color3uint8>
|
||||||
|
<PhysicalProperties name="CustomPhysicalProperties">
|
||||||
|
<CustomPhysics>false</CustomPhysics>
|
||||||
|
</PhysicalProperties>
|
||||||
|
<float name="FrontParamA">-0.5</float>
|
||||||
|
<float name="FrontParamB">0.5</float>
|
||||||
|
<token name="FrontSurface">3</token>
|
||||||
|
<token name="FrontSurfaceInput">0</token>
|
||||||
|
<Vector3 name="InitialSize">
|
||||||
|
<X>1</X>
|
||||||
|
<Y>1</Y>
|
||||||
|
<Z>4</Z>
|
||||||
|
</Vector3>
|
||||||
|
<BinaryString name="LODData"></BinaryString>
|
||||||
|
<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>
|
||||||
|
<bool name="Massless">false</bool>
|
||||||
|
<token name="Material">272</token>
|
||||||
|
<Content name="MeshID">
|
||||||
|
<url>rbxassetid://3188498185</url>
|
||||||
|
</Content>
|
||||||
|
<Content name="MeshId">
|
||||||
|
<url>rbxassetid://3188498185</url>
|
||||||
|
</Content>
|
||||||
|
<string name="Name">1.00 ~ 1.00 ~ 4.00</string>
|
||||||
|
<SharedString name="PhysicalConfigData">+KXn2PVkmG8K5+S8Au8qxA==</SharedString>
|
||||||
|
<BinaryString name="PhysicsData"></BinaryString>
|
||||||
|
<float name="Reflectance">0</float>
|
||||||
|
<token name="RenderFidelity">0</token>
|
||||||
|
<float name="RightParamA">-0.5</float>
|
||||||
|
<float name="RightParamB">0.5</float>
|
||||||
|
<token name="RightSurface">3</token>
|
||||||
|
<token name="RightSurfaceInput">0</token>
|
||||||
|
<int name="RootPriority">0</int>
|
||||||
|
<Vector3 name="RotVelocity">
|
||||||
|
<X>0</X>
|
||||||
|
<Y>0</Y>
|
||||||
|
<Z>0</Z>
|
||||||
|
</Vector3>
|
||||||
|
<BinaryString name="Tags"><![CDATA[SGFzQmV2ZWxz]]></BinaryString>
|
||||||
|
<Content name="TextureID">
|
||||||
|
<null></null>
|
||||||
|
</Content>
|
||||||
|
<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>
|
||||||
|
<Vector3 name="size">
|
||||||
|
<X>1</X>
|
||||||
|
<Y>1</Y>
|
||||||
|
<Z>4</Z>
|
||||||
|
</Vector3>
|
||||||
|
<token name="CollisionFidelity">0</token>
|
||||||
|
<bool name="Archivable">true</bool>
|
||||||
|
</Properties>
|
||||||
|
</Item>
|
||||||
|
<SharedStrings>
|
||||||
|
<SharedString md5="+KXn2PVkmG8K5+S8Au8qxA=="><![CDATA[Q1NHUEhTAAAAAEJMT0NL]]></SharedString>
|
||||||
|
</SharedStrings>
|
||||||
|
</roblox>
|
||||||
|
|
@ -0,0 +1,99 @@
|
||||||
|
<roblox version="4">
|
||||||
|
<Item class="MeshPart" referent="RBX98D9341F0F524E6ABBBD3254DFBFADAD">
|
||||||
|
<Properties>
|
||||||
|
<bool name="Anchored">false</bool>
|
||||||
|
<BinaryString name="AttributesSerialize"></BinaryString>
|
||||||
|
<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>
|
||||||
|
<CoordinateFrame name="CFrame">
|
||||||
|
<X>0</X>
|
||||||
|
<Y>11.80001</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>
|
||||||
|
<bool name="CanCollide">true</bool>
|
||||||
|
<bool name="CastShadow">true</bool>
|
||||||
|
<int name="CollisionGroupId">0</int>
|
||||||
|
<Color3uint8 name="Color3uint8">4288914085</Color3uint8>
|
||||||
|
<PhysicalProperties name="CustomPhysicalProperties">
|
||||||
|
<CustomPhysics>false</CustomPhysics>
|
||||||
|
</PhysicalProperties>
|
||||||
|
<float name="FrontParamA">-0.5</float>
|
||||||
|
<float name="FrontParamB">0.5</float>
|
||||||
|
<token name="FrontSurface">0</token>
|
||||||
|
<token name="FrontSurfaceInput">0</token>
|
||||||
|
<Vector3 name="InitialSize">
|
||||||
|
<X>2</X>
|
||||||
|
<Y>1.2</Y>
|
||||||
|
<Z>4</Z>
|
||||||
|
</Vector3>
|
||||||
|
<BinaryString name="LODData"></BinaryString>
|
||||||
|
<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>
|
||||||
|
<bool name="Massless">false</bool>
|
||||||
|
<token name="Material">272</token>
|
||||||
|
<Content name="MeshID">
|
||||||
|
<url>rbxassetid://3188159241</url>
|
||||||
|
</Content>
|
||||||
|
<Content name="MeshId">
|
||||||
|
<url>rbxassetid://3188159241</url>
|
||||||
|
</Content>
|
||||||
|
<string name="Name">2.00 ~ 1.20 ~ 4.00</string>
|
||||||
|
<SharedString name="PhysicalConfigData">+KXn2PVkmG8K5+S8Au8qxA==</SharedString>
|
||||||
|
<BinaryString name="PhysicsData"></BinaryString>
|
||||||
|
<float name="Reflectance">0</float>
|
||||||
|
<token name="RenderFidelity">0</token>
|
||||||
|
<float name="RightParamA">-0.5</float>
|
||||||
|
<float name="RightParamB">0.5</float>
|
||||||
|
<token name="RightSurface">0</token>
|
||||||
|
<token name="RightSurfaceInput">0</token>
|
||||||
|
<int name="RootPriority">0</int>
|
||||||
|
<Vector3 name="RotVelocity">
|
||||||
|
<X>0</X>
|
||||||
|
<Y>0</Y>
|
||||||
|
<Z>0</Z>
|
||||||
|
</Vector3>
|
||||||
|
<BinaryString name="Tags"><![CDATA[SGFzQmV2ZWxz]]></BinaryString>
|
||||||
|
<Content name="TextureID">
|
||||||
|
<null></null>
|
||||||
|
</Content>
|
||||||
|
<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>
|
||||||
|
<Vector3 name="size">
|
||||||
|
<X>2</X>
|
||||||
|
<Y>1.2</Y>
|
||||||
|
<Z>4</Z>
|
||||||
|
</Vector3>
|
||||||
|
<token name="CollisionFidelity">0</token>
|
||||||
|
<bool name="Archivable">true</bool>
|
||||||
|
</Properties>
|
||||||
|
</Item>
|
||||||
|
<SharedStrings>
|
||||||
|
<SharedString md5="+KXn2PVkmG8K5+S8Au8qxA=="><![CDATA[Q1NHUEhTAAAAAEJMT0NL]]></SharedString>
|
||||||
|
</SharedStrings>
|
||||||
|
</roblox>
|
||||||
|
|
@ -0,0 +1,10 @@
|
||||||
|
<roblox version="4">
|
||||||
|
<Item class="BindableEvent" referent="RBXA6ACA15CEB984C049B873C7C5B3255E0">
|
||||||
|
<Properties>
|
||||||
|
<BinaryString name="AttributesSerialize"></BinaryString>
|
||||||
|
<string name="Name">GrantHatToUser</string>
|
||||||
|
<BinaryString name="Tags"></BinaryString>
|
||||||
|
<bool name="Archivable">true</bool>
|
||||||
|
</Properties>
|
||||||
|
</Item>
|
||||||
|
</roblox>
|
||||||
|
|
@ -0,0 +1,10 @@
|
||||||
|
<roblox version="4">
|
||||||
|
<Item class="RemoteEvent" referent="RBX35D3FDA6FD7F4E948C4620D48F40D896">
|
||||||
|
<Properties>
|
||||||
|
<BinaryString name="AttributesSerialize"></BinaryString>
|
||||||
|
<string name="Name">Gateway</string>
|
||||||
|
<BinaryString name="Tags"></BinaryString>
|
||||||
|
<bool name="Archivable">true</bool>
|
||||||
|
</Properties>
|
||||||
|
</Item>
|
||||||
|
</roblox>
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
Client/InputGateway
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
Server/InputGateway
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
Character/Animate
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
Character/Bounciness
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
Character/DropHats
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
Character/EdgeWalking
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
Character/FloorDrag
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
Character/GoofyBalance
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
Character/GoofyMotion
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
Character/InputGateway
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
Character/JumpLimiter
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
Character/RetroClimbing
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
Character/Sound
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
Character/TeamColors
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
Character/ToolSoundGlitch
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
Client/Backpack
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
Client/ChatScript
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
Client/ClickToMove
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
Client/UnivShared
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
Client/Health
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
Client/PlayerList
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
Client/Safechat
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
Client/ConsoleTweaks
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
Client/Messages
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
Client/ZoomControls
|
||||||
|
|
@ -0,0 +1,10 @@
|
||||||
|
<roblox version="4">
|
||||||
|
<Item class="BindableEvent" referent="RBX683013E92D5E4F5C9C0CC64C96398A95">
|
||||||
|
<Properties>
|
||||||
|
<BinaryString name="AttributesSerialize"></BinaryString>
|
||||||
|
<string name="Name">PassCameraEvent</string>
|
||||||
|
<BinaryString name="Tags"></BinaryString>
|
||||||
|
<bool name="Archivable">true</bool>
|
||||||
|
</Properties>
|
||||||
|
</Item>
|
||||||
|
</roblox>
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
Client/Animator
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
Client/CharacterBevels
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
Client/Explosions
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
Client/ForceFields
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
Client/UnivShared
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
Client/GamepadPatch
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
Client/HumanoidLabels
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
Client/UnivShared
|
||||||
|
|
@ -0,0 +1,194 @@
|
||||||
|
<roblox version="4">
|
||||||
|
<Item class="Part" referent="RBX91B619449DA640BA9B61309FB2B292A2">
|
||||||
|
<Properties>
|
||||||
|
<bool name="Anchored">true</bool>
|
||||||
|
<BinaryString name="AttributesSerialize"></BinaryString>
|
||||||
|
<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>
|
||||||
|
<CoordinateFrame name="CFrame">
|
||||||
|
<X>511.7728</X>
|
||||||
|
<Y>175.8011</Y>
|
||||||
|
<Z>482.2249</Z>
|
||||||
|
<R00>0.74845</R00>
|
||||||
|
<R01>-0.2371427</R01>
|
||||||
|
<R02>0.6193432</R02>
|
||||||
|
<R10>1.490116E-08</R10>
|
||||||
|
<R11>0.9338833</R11>
|
||||||
|
<R12>0.3575782</R12>
|
||||||
|
<R20>-0.6631912</R20>
|
||||||
|
<R21>-0.2676294</R21>
|
||||||
|
<R22>0.698965</R22>
|
||||||
|
</CoordinateFrame>
|
||||||
|
<bool name="CanCollide">false</bool>
|
||||||
|
<bool name="CastShadow">true</bool>
|
||||||
|
<int name="CollisionGroupId">0</int>
|
||||||
|
<Color3uint8 name="Color3uint8">4288914085</Color3uint8>
|
||||||
|
<PhysicalProperties name="CustomPhysicalProperties">
|
||||||
|
<CustomPhysics>false</CustomPhysics>
|
||||||
|
</PhysicalProperties>
|
||||||
|
<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>
|
||||||
|
<bool name="Massless">false</bool>
|
||||||
|
<token name="Material">256</token>
|
||||||
|
<string name="Name">Moon</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>
|
||||||
|
<int name="RootPriority">0</int>
|
||||||
|
<Vector3 name="RotVelocity">
|
||||||
|
<X>0</X>
|
||||||
|
<Y>0</Y>
|
||||||
|
<Z>0</Z>
|
||||||
|
</Vector3>
|
||||||
|
<BinaryString name="Tags"></BinaryString>
|
||||||
|
<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">1</float>
|
||||||
|
<Vector3 name="Velocity">
|
||||||
|
<X>0</X>
|
||||||
|
<Y>0</Y>
|
||||||
|
<Z>0</Z>
|
||||||
|
</Vector3>
|
||||||
|
<token name="formFactorRaw">1</token>
|
||||||
|
<token name="shape">1</token>
|
||||||
|
<Vector3 name="size">
|
||||||
|
<X>100</X>
|
||||||
|
<Y>100</Y>
|
||||||
|
<Z>1</Z>
|
||||||
|
</Vector3>
|
||||||
|
<bool name="Archivable">true</bool>
|
||||||
|
</Properties>
|
||||||
|
<Item class="SurfaceGui" referent="RBX8158805B659F432E9E3A225CDFB22E81">
|
||||||
|
<Properties>
|
||||||
|
<bool name="Active">true</bool>
|
||||||
|
<Ref name="Adornee">null</Ref>
|
||||||
|
<bool name="AlwaysOnTop">false</bool>
|
||||||
|
<BinaryString name="AttributesSerialize"></BinaryString>
|
||||||
|
<bool name="AutoLocalize">true</bool>
|
||||||
|
<Vector2 name="CanvasSize">
|
||||||
|
<X>800</X>
|
||||||
|
<Y>800</Y>
|
||||||
|
</Vector2>
|
||||||
|
<bool name="ClipsDescendants">false</bool>
|
||||||
|
<bool name="Enabled">true</bool>
|
||||||
|
<token name="Face">5</token>
|
||||||
|
<float name="LightInfluence">0</float>
|
||||||
|
<string name="Name">MoonGui</string>
|
||||||
|
<float name="PixelsPerStud">50</float>
|
||||||
|
<bool name="ResetOnSpawn">true</bool>
|
||||||
|
<Ref name="RootLocalizationTable">null</Ref>
|
||||||
|
<token name="SizingMode">0</token>
|
||||||
|
<BinaryString name="Tags"></BinaryString>
|
||||||
|
<float name="ToolPunchThroughDistance">0</float>
|
||||||
|
<token name="ZIndexBehavior">0</token>
|
||||||
|
<float name="ZOffset">0</float>
|
||||||
|
<bool name="Archivable">true</bool>
|
||||||
|
</Properties>
|
||||||
|
<Item class="ImageLabel" referent="RBXF40781F1E29D44E788986602C7689180">
|
||||||
|
<Properties>
|
||||||
|
<bool name="Active">false</bool>
|
||||||
|
<Vector2 name="AnchorPoint">
|
||||||
|
<X>0</X>
|
||||||
|
<Y>0</Y>
|
||||||
|
</Vector2>
|
||||||
|
<BinaryString name="AttributesSerialize"></BinaryString>
|
||||||
|
<bool name="AutoLocalize">true</bool>
|
||||||
|
<Color3 name="BackgroundColor3">
|
||||||
|
<R>1</R>
|
||||||
|
<G>1</G>
|
||||||
|
<B>1</B>
|
||||||
|
</Color3>
|
||||||
|
<float name="BackgroundTransparency">1</float>
|
||||||
|
<Color3 name="BorderColor3">
|
||||||
|
<R>0.1058824</R>
|
||||||
|
<G>0.1647059</G>
|
||||||
|
<B>0.2078432</B>
|
||||||
|
</Color3>
|
||||||
|
<token name="BorderMode">0</token>
|
||||||
|
<int name="BorderSizePixel">0</int>
|
||||||
|
<bool name="ClipsDescendants">false</bool>
|
||||||
|
<bool name="Draggable">false</bool>
|
||||||
|
<Content name="Image">
|
||||||
|
<url>rbxassetid://599112257</url>
|
||||||
|
</Content>
|
||||||
|
<Color3 name="ImageColor3">
|
||||||
|
<R>1</R>
|
||||||
|
<G>1</G>
|
||||||
|
<B>1</B>
|
||||||
|
</Color3>
|
||||||
|
<Vector2 name="ImageRectOffset">
|
||||||
|
<X>0</X>
|
||||||
|
<Y>0</Y>
|
||||||
|
</Vector2>
|
||||||
|
<Vector2 name="ImageRectSize">
|
||||||
|
<X>0</X>
|
||||||
|
<Y>0</Y>
|
||||||
|
</Vector2>
|
||||||
|
<float name="ImageTransparency">0</float>
|
||||||
|
<int name="LayoutOrder">0</int>
|
||||||
|
<string name="Name">MoonImage</string>
|
||||||
|
<Ref name="NextSelectionDown">null</Ref>
|
||||||
|
<Ref name="NextSelectionLeft">null</Ref>
|
||||||
|
<Ref name="NextSelectionRight">null</Ref>
|
||||||
|
<Ref name="NextSelectionUp">null</Ref>
|
||||||
|
<UDim2 name="Position">
|
||||||
|
<XS>-0.5</XS>
|
||||||
|
<XO>0</XO>
|
||||||
|
<YS>-0.5</YS>
|
||||||
|
<YO>0</YO>
|
||||||
|
</UDim2>
|
||||||
|
<Ref name="RootLocalizationTable">null</Ref>
|
||||||
|
<float name="Rotation">0</float>
|
||||||
|
<token name="ScaleType">0</token>
|
||||||
|
<bool name="Selectable">false</bool>
|
||||||
|
<Ref name="SelectionImageObject">null</Ref>
|
||||||
|
<UDim2 name="Size">
|
||||||
|
<XS>2</XS>
|
||||||
|
<XO>0</XO>
|
||||||
|
<YS>2</YS>
|
||||||
|
<YO>0</YO>
|
||||||
|
</UDim2>
|
||||||
|
<token name="SizeConstraint">0</token>
|
||||||
|
<Rect2D name="SliceCenter">
|
||||||
|
<min>
|
||||||
|
<X>0</X>
|
||||||
|
<Y>0</Y>
|
||||||
|
</min>
|
||||||
|
<max>
|
||||||
|
<X>0</X>
|
||||||
|
<Y>0</Y>
|
||||||
|
</max>
|
||||||
|
</Rect2D>
|
||||||
|
<float name="SliceScale">1</float>
|
||||||
|
<BinaryString name="Tags"></BinaryString>
|
||||||
|
<UDim2 name="TileSize">
|
||||||
|
<XS>1</XS>
|
||||||
|
<XO>0</XO>
|
||||||
|
<YS>1</YS>
|
||||||
|
<YO>0</YO>
|
||||||
|
</UDim2>
|
||||||
|
<bool name="Visible">true</bool>
|
||||||
|
<int name="ZIndex">1</int>
|
||||||
|
<bool name="Archivable">true</bool>
|
||||||
|
</Properties>
|
||||||
|
</Item>
|
||||||
|
</Item>
|
||||||
|
</Item>
|
||||||
|
</roblox>
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
Client/UnivShared
|
||||||
|
|
@ -0,0 +1,194 @@
|
||||||
|
<roblox version="4">
|
||||||
|
<Item class="Part" referent="RBX0ABD723CA5544C42A21A528B06CB9CA6">
|
||||||
|
<Properties>
|
||||||
|
<bool name="Anchored">true</bool>
|
||||||
|
<BinaryString name="AttributesSerialize"></BinaryString>
|
||||||
|
<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>
|
||||||
|
<CoordinateFrame name="CFrame">
|
||||||
|
<X>511.7728</X>
|
||||||
|
<Y>175.8011</Y>
|
||||||
|
<Z>482.2249</Z>
|
||||||
|
<R00>0.74845</R00>
|
||||||
|
<R01>-0.2371427</R01>
|
||||||
|
<R02>0.6193432</R02>
|
||||||
|
<R10>1.490116E-08</R10>
|
||||||
|
<R11>0.9338833</R11>
|
||||||
|
<R12>0.3575782</R12>
|
||||||
|
<R20>-0.6631912</R20>
|
||||||
|
<R21>-0.2676294</R21>
|
||||||
|
<R22>0.698965</R22>
|
||||||
|
</CoordinateFrame>
|
||||||
|
<bool name="CanCollide">false</bool>
|
||||||
|
<bool name="CastShadow">true</bool>
|
||||||
|
<int name="CollisionGroupId">0</int>
|
||||||
|
<Color3uint8 name="Color3uint8">4288914085</Color3uint8>
|
||||||
|
<PhysicalProperties name="CustomPhysicalProperties">
|
||||||
|
<CustomPhysics>false</CustomPhysics>
|
||||||
|
</PhysicalProperties>
|
||||||
|
<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>
|
||||||
|
<bool name="Massless">false</bool>
|
||||||
|
<token name="Material">256</token>
|
||||||
|
<string name="Name">Moon</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>
|
||||||
|
<int name="RootPriority">0</int>
|
||||||
|
<Vector3 name="RotVelocity">
|
||||||
|
<X>0</X>
|
||||||
|
<Y>0</Y>
|
||||||
|
<Z>0</Z>
|
||||||
|
</Vector3>
|
||||||
|
<BinaryString name="Tags"></BinaryString>
|
||||||
|
<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">1</float>
|
||||||
|
<Vector3 name="Velocity">
|
||||||
|
<X>0</X>
|
||||||
|
<Y>0</Y>
|
||||||
|
<Z>0</Z>
|
||||||
|
</Vector3>
|
||||||
|
<token name="formFactorRaw">1</token>
|
||||||
|
<token name="shape">1</token>
|
||||||
|
<Vector3 name="size">
|
||||||
|
<X>80</X>
|
||||||
|
<Y>80</Y>
|
||||||
|
<Z>1</Z>
|
||||||
|
</Vector3>
|
||||||
|
<bool name="Archivable">true</bool>
|
||||||
|
</Properties>
|
||||||
|
<Item class="SurfaceGui" referent="RBXD056A1B3FD7E4281AE37FB174B6F092C">
|
||||||
|
<Properties>
|
||||||
|
<bool name="Active">true</bool>
|
||||||
|
<Ref name="Adornee">null</Ref>
|
||||||
|
<bool name="AlwaysOnTop">false</bool>
|
||||||
|
<BinaryString name="AttributesSerialize"></BinaryString>
|
||||||
|
<bool name="AutoLocalize">true</bool>
|
||||||
|
<Vector2 name="CanvasSize">
|
||||||
|
<X>800</X>
|
||||||
|
<Y>800</Y>
|
||||||
|
</Vector2>
|
||||||
|
<bool name="ClipsDescendants">false</bool>
|
||||||
|
<bool name="Enabled">true</bool>
|
||||||
|
<token name="Face">5</token>
|
||||||
|
<float name="LightInfluence">0</float>
|
||||||
|
<string name="Name">MoonGui</string>
|
||||||
|
<float name="PixelsPerStud">50</float>
|
||||||
|
<bool name="ResetOnSpawn">true</bool>
|
||||||
|
<Ref name="RootLocalizationTable">null</Ref>
|
||||||
|
<token name="SizingMode">0</token>
|
||||||
|
<BinaryString name="Tags"></BinaryString>
|
||||||
|
<float name="ToolPunchThroughDistance">0</float>
|
||||||
|
<token name="ZIndexBehavior">0</token>
|
||||||
|
<float name="ZOffset">0</float>
|
||||||
|
<bool name="Archivable">true</bool>
|
||||||
|
</Properties>
|
||||||
|
<Item class="ImageLabel" referent="RBXAC7B455F3FA240F589767BE98B788572">
|
||||||
|
<Properties>
|
||||||
|
<bool name="Active">false</bool>
|
||||||
|
<Vector2 name="AnchorPoint">
|
||||||
|
<X>0</X>
|
||||||
|
<Y>0</Y>
|
||||||
|
</Vector2>
|
||||||
|
<BinaryString name="AttributesSerialize"></BinaryString>
|
||||||
|
<bool name="AutoLocalize">true</bool>
|
||||||
|
<Color3 name="BackgroundColor3">
|
||||||
|
<R>1</R>
|
||||||
|
<G>1</G>
|
||||||
|
<B>1</B>
|
||||||
|
</Color3>
|
||||||
|
<float name="BackgroundTransparency">1</float>
|
||||||
|
<Color3 name="BorderColor3">
|
||||||
|
<R>0.1058824</R>
|
||||||
|
<G>0.1647059</G>
|
||||||
|
<B>0.2078432</B>
|
||||||
|
</Color3>
|
||||||
|
<token name="BorderMode">0</token>
|
||||||
|
<int name="BorderSizePixel">0</int>
|
||||||
|
<bool name="ClipsDescendants">false</bool>
|
||||||
|
<bool name="Draggable">false</bool>
|
||||||
|
<Content name="Image">
|
||||||
|
<url>rbxassetid://599112257</url>
|
||||||
|
</Content>
|
||||||
|
<Color3 name="ImageColor3">
|
||||||
|
<R>1</R>
|
||||||
|
<G>1</G>
|
||||||
|
<B>1</B>
|
||||||
|
</Color3>
|
||||||
|
<Vector2 name="ImageRectOffset">
|
||||||
|
<X>0</X>
|
||||||
|
<Y>0</Y>
|
||||||
|
</Vector2>
|
||||||
|
<Vector2 name="ImageRectSize">
|
||||||
|
<X>0</X>
|
||||||
|
<Y>0</Y>
|
||||||
|
</Vector2>
|
||||||
|
<float name="ImageTransparency">0</float>
|
||||||
|
<int name="LayoutOrder">0</int>
|
||||||
|
<string name="Name">MoonImage</string>
|
||||||
|
<Ref name="NextSelectionDown">null</Ref>
|
||||||
|
<Ref name="NextSelectionLeft">null</Ref>
|
||||||
|
<Ref name="NextSelectionRight">null</Ref>
|
||||||
|
<Ref name="NextSelectionUp">null</Ref>
|
||||||
|
<UDim2 name="Position">
|
||||||
|
<XS>-0.5</XS>
|
||||||
|
<XO>0</XO>
|
||||||
|
<YS>-0.5</YS>
|
||||||
|
<YO>0</YO>
|
||||||
|
</UDim2>
|
||||||
|
<Ref name="RootLocalizationTable">null</Ref>
|
||||||
|
<float name="Rotation">0</float>
|
||||||
|
<token name="ScaleType">0</token>
|
||||||
|
<bool name="Selectable">false</bool>
|
||||||
|
<Ref name="SelectionImageObject">null</Ref>
|
||||||
|
<UDim2 name="Size">
|
||||||
|
<XS>2</XS>
|
||||||
|
<XO>0</XO>
|
||||||
|
<YS>2</YS>
|
||||||
|
<YO>0</YO>
|
||||||
|
</UDim2>
|
||||||
|
<token name="SizeConstraint">0</token>
|
||||||
|
<Rect2D name="SliceCenter">
|
||||||
|
<min>
|
||||||
|
<X>0</X>
|
||||||
|
<Y>0</Y>
|
||||||
|
</min>
|
||||||
|
<max>
|
||||||
|
<X>0</X>
|
||||||
|
<Y>0</Y>
|
||||||
|
</max>
|
||||||
|
</Rect2D>
|
||||||
|
<float name="SliceScale">1</float>
|
||||||
|
<BinaryString name="Tags"></BinaryString>
|
||||||
|
<UDim2 name="TileSize">
|
||||||
|
<XS>1</XS>
|
||||||
|
<XO>0</XO>
|
||||||
|
<YS>1</YS>
|
||||||
|
<YO>0</YO>
|
||||||
|
</UDim2>
|
||||||
|
<bool name="Visible">true</bool>
|
||||||
|
<int name="ZIndex">1</int>
|
||||||
|
<bool name="Archivable">true</bool>
|
||||||
|
</Properties>
|
||||||
|
</Item>
|
||||||
|
</Item>
|
||||||
|
</Item>
|
||||||
|
</roblox>
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
Client/Music
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
Client/Camera
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
Client/UnivShared
|
||||||
|
|
@ -0,0 +1,186 @@
|
||||||
|
<roblox version="4">
|
||||||
|
<Item class="Part" referent="RBX90A12E9BCE9B488D974B3D4B61CA545F">
|
||||||
|
<Properties>
|
||||||
|
<bool name="Anchored">true</bool>
|
||||||
|
<BinaryString name="AttributesSerialize"></BinaryString>
|
||||||
|
<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>
|
||||||
|
<CoordinateFrame name="CFrame">
|
||||||
|
<X>491.4301</X>
|
||||||
|
<Y>0.025031</Y>
|
||||||
|
<Z>324.0601</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>
|
||||||
|
<bool name="CastShadow">true</bool>
|
||||||
|
<int name="CollisionGroupId">0</int>
|
||||||
|
<Color3uint8 name="Color3uint8">4288914085</Color3uint8>
|
||||||
|
<PhysicalProperties name="CustomPhysicalProperties">
|
||||||
|
<CustomPhysics>false</CustomPhysics>
|
||||||
|
</PhysicalProperties>
|
||||||
|
<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>
|
||||||
|
<bool name="Massless">false</bool>
|
||||||
|
<token name="Material">256</token>
|
||||||
|
<string name="Name">SkyAdorn</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>
|
||||||
|
<int name="RootPriority">0</int>
|
||||||
|
<Vector3 name="RotVelocity">
|
||||||
|
<X>0</X>
|
||||||
|
<Y>0</Y>
|
||||||
|
<Z>0</Z>
|
||||||
|
</Vector3>
|
||||||
|
<BinaryString name="Tags"></BinaryString>
|
||||||
|
<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">1</float>
|
||||||
|
<Vector3 name="Velocity">
|
||||||
|
<X>0</X>
|
||||||
|
<Y>0</Y>
|
||||||
|
<Z>0</Z>
|
||||||
|
</Vector3>
|
||||||
|
<token name="formFactorRaw">1</token>
|
||||||
|
<token name="shape">1</token>
|
||||||
|
<Vector3 name="size">
|
||||||
|
<X>0.05</X>
|
||||||
|
<Y>0.05</Y>
|
||||||
|
<Z>0.05</Z>
|
||||||
|
</Vector3>
|
||||||
|
<bool name="Archivable">true</bool>
|
||||||
|
</Properties>
|
||||||
|
<Item class="BillboardGui" referent="RBXBA2BBD0E503E43FA8B8A728726D169B1">
|
||||||
|
<Properties>
|
||||||
|
<bool name="Active">false</bool>
|
||||||
|
<Ref name="Adornee">null</Ref>
|
||||||
|
<bool name="AlwaysOnTop">false</bool>
|
||||||
|
<BinaryString name="AttributesSerialize"></BinaryString>
|
||||||
|
<bool name="AutoLocalize">true</bool>
|
||||||
|
<bool name="ClipsDescendants">false</bool>
|
||||||
|
<float name="DistanceLowerLimit">0</float>
|
||||||
|
<float name="DistanceStep">0</float>
|
||||||
|
<float name="DistanceUpperLimit">-1</float>
|
||||||
|
<bool name="Enabled">true</bool>
|
||||||
|
<Vector3 name="ExtentsOffset">
|
||||||
|
<X>0</X>
|
||||||
|
<Y>0</Y>
|
||||||
|
<Z>0</Z>
|
||||||
|
</Vector3>
|
||||||
|
<Vector3 name="ExtentsOffsetWorldSpace">
|
||||||
|
<X>0</X>
|
||||||
|
<Y>0</Y>
|
||||||
|
<Z>0</Z>
|
||||||
|
</Vector3>
|
||||||
|
<float name="LightInfluence">1</float>
|
||||||
|
<float name="MaxDistance">INF</float>
|
||||||
|
<string name="Name">Night</string>
|
||||||
|
<Ref name="PlayerToHideFrom">null</Ref>
|
||||||
|
<bool name="ResetOnSpawn">true</bool>
|
||||||
|
<Ref name="RootLocalizationTable">null</Ref>
|
||||||
|
<UDim2 name="Size">
|
||||||
|
<XS>0</XS>
|
||||||
|
<XO>3000</XO>
|
||||||
|
<YS>0</YS>
|
||||||
|
<YO>3000</YO>
|
||||||
|
</UDim2>
|
||||||
|
<Vector2 name="SizeOffset">
|
||||||
|
<X>0</X>
|
||||||
|
<Y>0</Y>
|
||||||
|
</Vector2>
|
||||||
|
<Vector3 name="StudsOffset">
|
||||||
|
<X>0</X>
|
||||||
|
<Y>0</Y>
|
||||||
|
<Z>-3000</Z>
|
||||||
|
</Vector3>
|
||||||
|
<Vector3 name="StudsOffsetWorldSpace">
|
||||||
|
<X>0</X>
|
||||||
|
<Y>0</Y>
|
||||||
|
<Z>0</Z>
|
||||||
|
</Vector3>
|
||||||
|
<BinaryString name="Tags"></BinaryString>
|
||||||
|
<token name="ZIndexBehavior">0</token>
|
||||||
|
<bool name="Archivable">true</bool>
|
||||||
|
</Properties>
|
||||||
|
<Item class="Frame" referent="RBX6EB115050DCA4007AE67D2E5ED3C9014">
|
||||||
|
<Properties>
|
||||||
|
<bool name="Active">false</bool>
|
||||||
|
<Vector2 name="AnchorPoint">
|
||||||
|
<X>0</X>
|
||||||
|
<Y>0</Y>
|
||||||
|
</Vector2>
|
||||||
|
<BinaryString name="AttributesSerialize"></BinaryString>
|
||||||
|
<bool name="AutoLocalize">true</bool>
|
||||||
|
<Color3 name="BackgroundColor3">
|
||||||
|
<R>0</R>
|
||||||
|
<G>0</G>
|
||||||
|
<B>0</B>
|
||||||
|
</Color3>
|
||||||
|
<float name="BackgroundTransparency">1</float>
|
||||||
|
<Color3 name="BorderColor3">
|
||||||
|
<R>0.1058824</R>
|
||||||
|
<G>0.1647059</G>
|
||||||
|
<B>0.2078432</B>
|
||||||
|
</Color3>
|
||||||
|
<token name="BorderMode">0</token>
|
||||||
|
<int name="BorderSizePixel">0</int>
|
||||||
|
<bool name="ClipsDescendants">false</bool>
|
||||||
|
<bool name="Draggable">false</bool>
|
||||||
|
<int name="LayoutOrder">0</int>
|
||||||
|
<string name="Name">NightFrame</string>
|
||||||
|
<Ref name="NextSelectionDown">null</Ref>
|
||||||
|
<Ref name="NextSelectionLeft">null</Ref>
|
||||||
|
<Ref name="NextSelectionRight">null</Ref>
|
||||||
|
<Ref name="NextSelectionUp">null</Ref>
|
||||||
|
<UDim2 name="Position">
|
||||||
|
<XS>0</XS>
|
||||||
|
<XO>0</XO>
|
||||||
|
<YS>0</YS>
|
||||||
|
<YO>0</YO>
|
||||||
|
</UDim2>
|
||||||
|
<Ref name="RootLocalizationTable">null</Ref>
|
||||||
|
<float name="Rotation">0</float>
|
||||||
|
<bool name="Selectable">false</bool>
|
||||||
|
<Ref name="SelectionImageObject">null</Ref>
|
||||||
|
<UDim2 name="Size">
|
||||||
|
<XS>1</XS>
|
||||||
|
<XO>0</XO>
|
||||||
|
<YS>1</YS>
|
||||||
|
<YO>0</YO>
|
||||||
|
</UDim2>
|
||||||
|
<token name="SizeConstraint">0</token>
|
||||||
|
<token name="Style">0</token>
|
||||||
|
<BinaryString name="Tags"></BinaryString>
|
||||||
|
<bool name="Visible">true</bool>
|
||||||
|
<int name="ZIndex">1</int>
|
||||||
|
<bool name="Archivable">true</bool>
|
||||||
|
</Properties>
|
||||||
|
</Item>
|
||||||
|
</Item>
|
||||||
|
</Item>
|
||||||
|
</roblox>
|
||||||
|
|
@ -0,0 +1,109 @@
|
||||||
|
<roblox version="4">
|
||||||
|
<Item class="BillboardGui" referent="RBX1DD3652FB86B475D98746E861F4C4D30">
|
||||||
|
<Properties>
|
||||||
|
<bool name="Active">false</bool>
|
||||||
|
<Ref name="Adornee">null</Ref>
|
||||||
|
<bool name="AlwaysOnTop">false</bool>
|
||||||
|
<BinaryString name="AttributesSerialize"></BinaryString>
|
||||||
|
<bool name="AutoLocalize">true</bool>
|
||||||
|
<bool name="ClipsDescendants">false</bool>
|
||||||
|
<float name="DistanceLowerLimit">0</float>
|
||||||
|
<float name="DistanceStep">0</float>
|
||||||
|
<float name="DistanceUpperLimit">-1</float>
|
||||||
|
<bool name="Enabled">true</bool>
|
||||||
|
<Vector3 name="ExtentsOffset">
|
||||||
|
<X>0</X>
|
||||||
|
<Y>0</Y>
|
||||||
|
<Z>0</Z>
|
||||||
|
</Vector3>
|
||||||
|
<Vector3 name="ExtentsOffsetWorldSpace">
|
||||||
|
<X>0</X>
|
||||||
|
<Y>0</Y>
|
||||||
|
<Z>0</Z>
|
||||||
|
</Vector3>
|
||||||
|
<float name="LightInfluence">0</float>
|
||||||
|
<float name="MaxDistance">INF</float>
|
||||||
|
<string name="Name">Star</string>
|
||||||
|
<Ref name="PlayerToHideFrom">null</Ref>
|
||||||
|
<bool name="ResetOnSpawn">true</bool>
|
||||||
|
<Ref name="RootLocalizationTable">null</Ref>
|
||||||
|
<UDim2 name="Size">
|
||||||
|
<XS>0</XS>
|
||||||
|
<XO>3</XO>
|
||||||
|
<YS>0</YS>
|
||||||
|
<YO>3</YO>
|
||||||
|
</UDim2>
|
||||||
|
<Vector2 name="SizeOffset">
|
||||||
|
<X>0</X>
|
||||||
|
<Y>0</Y>
|
||||||
|
</Vector2>
|
||||||
|
<Vector3 name="StudsOffset">
|
||||||
|
<X>0</X>
|
||||||
|
<Y>0</Y>
|
||||||
|
<Z>0</Z>
|
||||||
|
</Vector3>
|
||||||
|
<Vector3 name="StudsOffsetWorldSpace">
|
||||||
|
<X>0</X>
|
||||||
|
<Y>0</Y>
|
||||||
|
<Z>0</Z>
|
||||||
|
</Vector3>
|
||||||
|
<BinaryString name="Tags"></BinaryString>
|
||||||
|
<token name="ZIndexBehavior">0</token>
|
||||||
|
<bool name="Archivable">true</bool>
|
||||||
|
</Properties>
|
||||||
|
<Item class="Frame" referent="RBX2017E07EA1A6463D980A73D05E39BA0C">
|
||||||
|
<Properties>
|
||||||
|
<bool name="Active">false</bool>
|
||||||
|
<Vector2 name="AnchorPoint">
|
||||||
|
<X>0</X>
|
||||||
|
<Y>0</Y>
|
||||||
|
</Vector2>
|
||||||
|
<BinaryString name="AttributesSerialize"></BinaryString>
|
||||||
|
<bool name="AutoLocalize">true</bool>
|
||||||
|
<Color3 name="BackgroundColor3">
|
||||||
|
<R>1</R>
|
||||||
|
<G>1</G>
|
||||||
|
<B>1</B>
|
||||||
|
</Color3>
|
||||||
|
<float name="BackgroundTransparency">0</float>
|
||||||
|
<Color3 name="BorderColor3">
|
||||||
|
<R>0.1058824</R>
|
||||||
|
<G>0.1647059</G>
|
||||||
|
<B>0.2078432</B>
|
||||||
|
</Color3>
|
||||||
|
<token name="BorderMode">0</token>
|
||||||
|
<int name="BorderSizePixel">0</int>
|
||||||
|
<bool name="ClipsDescendants">false</bool>
|
||||||
|
<bool name="Draggable">false</bool>
|
||||||
|
<int name="LayoutOrder">0</int>
|
||||||
|
<string name="Name">Frame</string>
|
||||||
|
<Ref name="NextSelectionDown">null</Ref>
|
||||||
|
<Ref name="NextSelectionLeft">null</Ref>
|
||||||
|
<Ref name="NextSelectionRight">null</Ref>
|
||||||
|
<Ref name="NextSelectionUp">null</Ref>
|
||||||
|
<UDim2 name="Position">
|
||||||
|
<XS>0</XS>
|
||||||
|
<XO>0</XO>
|
||||||
|
<YS>0</YS>
|
||||||
|
<YO>0</YO>
|
||||||
|
</UDim2>
|
||||||
|
<Ref name="RootLocalizationTable">null</Ref>
|
||||||
|
<float name="Rotation">0</float>
|
||||||
|
<bool name="Selectable">false</bool>
|
||||||
|
<Ref name="SelectionImageObject">null</Ref>
|
||||||
|
<UDim2 name="Size">
|
||||||
|
<XS>1</XS>
|
||||||
|
<XO>0</XO>
|
||||||
|
<YS>1</YS>
|
||||||
|
<YO>0</YO>
|
||||||
|
</UDim2>
|
||||||
|
<token name="SizeConstraint">0</token>
|
||||||
|
<token name="Style">0</token>
|
||||||
|
<BinaryString name="Tags"></BinaryString>
|
||||||
|
<bool name="Visible">true</bool>
|
||||||
|
<int name="ZIndex">1</int>
|
||||||
|
<bool name="Archivable">true</bool>
|
||||||
|
</Properties>
|
||||||
|
</Item>
|
||||||
|
</Item>
|
||||||
|
</roblox>
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue