wait()
local function get(parent,name) while (not parent:FindFirstChild(name)) do wait() end return parent[name] end;
local plr = game.Players.LocalPlayer
local screen = get(script.Parent,"ScreenGui")
local workspace = get(screen,"Workspace")
local menu = get(workspace,"Menu")
local mouse = plr:GetMouse()
local bird = get(workspace,"Bird")
local paused,jump = false,false
local hit = false
local stats = {
score = script.Score;
best = script.Best;
}
local settings = {
}
function bird_physics()
local grav = 20--14
local function collision()
for _,v in pairs(workspace.Obstacles:GetChildren()) do
local p1x,p1y,p2x,p2y = bird.AbsolutePosition.X,bird.AbsolutePosition.Y,v.AbsolutePosition.X,v.AbsolutePosition.Y
local s1x,s1y,s2x,s2y = bird.AbsoluteSize.X,bird.AbsoluteSize.Y,v.AbsoluteSize.X,v.AbsoluteSize.Y
if (((((p1y+s1y) >= p2y) and (p1y <= (p2y+s2y))) and (((p1x >= p2x) or ((p1x+s1x) >= p2x)) and (p1x <= (p2x+s2x)))) or ((bird.Position.Y.Offset > 460) or (bird.Position.Y.Offset < 0)) ) then
bird:TweenPosition(bird.Position,"Out","Sine",0,true)
game_over()
end
end
end
while wait() do
if ((not paused) and (not jump) and (bird.Visible)) then
bird:TweenPosition((bird.Position+UDim2.new(0,0,0,grav)),"Out","Sine",0.1,true)
collision()
end
wait()
end
end
function bird_jump()
if (paused) then return end
jump = true
bird.Rotation = -50
bird:TweenPosition((bird.Position+UDim2.new(0,0,0,-90)),"Out","Sine",0.15,true)
wait(0.25)
bird.Rotation = -10
jump = false
end
function generate_obstacles()
local obj = workspace.Obstacles.Obj:Clone(); workspace.Obstacles.Obj:Remove()
local logs = {}
local function same_ob(index)
local yes = false
for _,v in pairs(logs) do
if (v == index) then
yes = true
end
end
return yes
end
delay(1,function() while wait() do
if (not paused) then
for _,v in pairs(workspace.Obstacles:GetChildren()) do
v.Position = (v.Position+UDim2.new(0,-6,0,0)) --4
if ((v.Position.Y.Scale == 0) and (bird.AbsolutePosition.X > (v.AbsolutePosition.X+v.AbsoluteSize.X)) and (not same_ob(v.Name))) then
stats.score.Value = (stats.score.Value+1)
table.insert(logs,v.Name)
end
if (v.AbsolutePosition.X < 435) then v:Remove() end
end
end
wait()
end end)
delay(3,function() while wait() do -- 140 space
if (not paused) then
local size1 = math.random(50,360)
local size2 = ((500-size1)-140)
local new1,new2 = obj:Clone(),obj:Clone()
new1.Size,new1.Position = UDim2.new(0,25,0,size1),UDim2.new(1,10,0,0)
new2.Size,new2.Position = UDim2.new(0,25,0,size2),UDim2.new(1,10,1,-size2)
new1.Name,new2.Name = math.random(),math.random()
new1.Parent,new2.Parent = workspace.Obstacles,workspace.Obstacles
wait(2)
end
end end)
end
function game_over()
hit,paused = true,true
workspace.GameOver.Score.Text = stats.score.Value
workspace.GameOver.Visible = true
workspace.GameOver.Ok.MouseButton1Up:wait()
bird.Position = UDim2.new(0.5,-20,0,200)
workspace.GameOver.Visible,menu.Visible = false,true
workspace.Obstacles:ClearAllChildren()
stats.score.Value = 0
end
function actions()
local function update_stats()
stats.best.Value = (stats.score.Value > stats.best.Value and stats.score.Value or stats.best.Value)
workspace.Score.Current.Text = stats.score.Value
workspace.Score.Best.Text = stats.best.Value
end
mouse.Button1Down:connect(function()
bird_jump()
end)
menu.Play.MouseButton1Up:connect(function()
menu.Visible = false
paused = false
end)
menu.Changed:connect(function()
bird.Visible,workspace.Obstacles.Visible = (not menu.Visible),(not menu.Visible)
paused = menu.Visible
end)
stats.score.Changed:connect(update_stats)
script.Ready.Value = true
delay(2,update_stats)
end
while (not plr.Character) do wait() end; plr.Character:Remove()
actions()
generate_obstacles()
bird_physics()
Leaderstats.Score.Value = 0
if (not paused) then
for _,v in pairs(workspace.Obstacles:GetChildren()) do
v.Position = (v.Position+UDim2.new(0,-6,0,0)) --4
if ((v.Position.Y.Scale == 0) and (bird.AbsolutePosition.X > (v.AbsolutePosition.X+v.AbsoluteSize.X)) and (not same_ob(v.Name))) then
Leaderstats.Score.value = Leaderstats.Score.Value + 1
table.insert(logs,v.Name)
end
if (v.AbsolutePosition.X < 435) then v:Remove() end
end
end
How would i make this in to a leaderboard of the best and there current score (This is for flappy bird) And the script is in startergui
