Advertisement
HowToRoblox

AchievementsServer

Dec 15th, 2022
1,205
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 2.01 KB | None | 0 0
  1. local rs = game.ReplicatedStorage:WaitForChild("AchievementSystemReplicatedStorage")
  2. local remote = rs:WaitForChild("AchievementsRemoteEvent")
  3. local allAchievements = require(rs:WaitForChild("AchievementsList"))
  4. local achievementFuncs = require(rs:WaitForChild("AchievementFunctions"))
  5.  
  6.  
  7. --Save data
  8. game.Players.PlayerRemoving:Connect(achievementFuncs.SavePlayerAchievements)
  9. game:BindToClose(function()
  10.     for _, plr in pairs(game.Players:GetPlayers()) do
  11.         achievementFuncs.SavePlayerAchievements(plr)
  12.     end
  13. end)
  14.  
  15. game.Players.PlayerAdded:Connect(function(plr)
  16.    
  17.     achievementFuncs.LoadPlayerAchievements(plr) --Load data
  18.    
  19.     achievementFuncs.AwardAchievement(plr, "Welcome") --Give achievement to player for playing the game
  20.    
  21.    
  22.     --Handle the "Energetic" achievement for walking 500 studs
  23.     local studsWalked = 0
  24.     local moving = false
  25.    
  26.     plr.CharacterAdded:Connect(function(char)
  27.         local hum = char:WaitForChild("Humanoid")
  28.        
  29.         hum:GetPropertyChangedSignal("MoveDirection"):Connect(function()
  30.             if (hum.MoveDirection * Vector3.new(1, 0, 1)).Magnitude > 0 then
  31.                 moving = true
  32.             else
  33.                 moving = false
  34.             end
  35.         end)
  36.     end)
  37.    
  38.     local lastStep = tick()
  39.     local achievementHeartbeatConnection
  40.     achievementHeartbeatConnection = game:GetService("RunService").Heartbeat:Connect(function()
  41.        
  42.         local delta = tick() - lastStep
  43.        
  44.         if plr.Character and plr.Character:FindFirstChild("Humanoid") then
  45.             studsWalked += delta * (plr.Character.Humanoid.MoveDirection * Vector3.new(1, 0, 1)).Magnitude * plr.Character.Humanoid.WalkSpeed
  46.         end
  47.        
  48.         if studsWalked >= 500 then
  49.             achievementFuncs.AwardAchievement(plr, "Energetic") --Give achievement for playing for walking 500 studs
  50.             achievementHeartbeatConnection:Disconnect()
  51.         end
  52.        
  53.         lastStep = tick()
  54.     end)
  55.    
  56.    
  57.     --Handle the "10 minutes" achievement for walking 500 studs
  58.     task.wait(10 * 60) --Wait 10 minutes before awarding ten minute achievement
  59.     achievementFuncs.AwardAchievement(plr, "10 minutes") --Give achievement for playing for 10 minutes
  60. end)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement