Scripting Helpers is winding down operations and is now read-only. More info→
Ad
Log in to vote
0

Problem with Awarding System?

Asked by 10 years ago

How could this be more efficient? This is suppose wait after a certain time and then award the player, and also show the time left until the player will be awarded. How could this be more efficient because it does not loop the way It should. Thanks!

DataStore = Game:GetService("DataStoreService"):GetDataStore("Reward")
Amount = 120

Game.Players.PlayerAdded:connect(function(Player)
repeat wait(1) until Player:FindFirstChild("CashPLAYER")
repeat wait(1) until Player:FindFirstChild("LevelPLAYER")
local CashPLAYER = Player:FindFirstChild("CashPLAYER");
local LevelPLAYER = Player:FindFirstChild("LevelPLAYER");
local PlayerGui = Player:WaitForChild("PlayerGui"):WaitForChild("Menu");
local TextLabel = PlayerGui.TextLabel5
local Timer = PlayerGui.Level.TextLabel3
mod = Instance.new("BoolValue", Player)
mod.Name = "Award"
mod.Value = false
while true do wait()
if DataStore:GetAsync(Player.Name) then
Orginal = DataStore:GetAsync(Player.Name)
time = math.floor(tick())
if time-Orginal > Amount then
CashPLAYER.Value = CashPLAYER.Value + 75
TextLabel.Visible = true
Player.Award.Value = true   
wait(3) 
TextLabel.Visible = false
end
else
time = tick()
DataStore:SetAsync(Player.Name, time)
CashPLAYER.Value = CashPLAYER.Value + 75
TextLabel.Visible = true
Player.Award.Value = true
wait(3) 
TextLabel.Visible = false
end
Seconds = Amount-(time-Orginal)
Minutes = Seconds/60
Timer.Text = "Next award: "..math.ceil(Minutes)
end
end)

Game.Players.PlayerRemoving:connect(function(Player)
    if Player.Award.Value == true then
    time = math.floor(tick())
    DataStore:SetAsync(Player.Name, time)   
    end
end)

Answer this question