generic image
Processing...
  • Games
  • Catalog
  • Develop
  • Robux
  • Search in Players
  • Search in Games
  • Search in Catalog
  • Search in Groups
  • Search in Library
  • Log In
  • Sign Up
  • Games
  • Catalog
  • Develop
  • Robux
   
ROBLOX Forum » Game Creation and Development » Scripters
Home Search
 

Re: saving leaderboards

Previous Thread :: Next Thread 
Scarvis is not online. Scarvis
Joined: 02 Dec 2008
Total Posts: 14213
28 Aug 2015 12:25 PM
So I made this saving leaderboard script and it works for KOs and WOs but not for the Leveling system i made



the leveling system uses BattlePoints


.
Report Abuse
WolfgangVonPrinz is not online. WolfgangVonPrinz
Joined: 24 Oct 2013
Total Posts: 4656
28 Aug 2015 12:26 PM
Post le code?

Private Road - Residents Only
Report Abuse
Scarvis is not online. Scarvis
Joined: 02 Dec 2008
Total Posts: 14213
28 Aug 2015 01:02 PM
leaderboard:

--rbxsig%XYC6H9oKVLF//1itmbaGn5wI5a4YNtkf4beIsIVZsrT29WveOsrP4YfpYDED5Xa8A1oBA/5oDwtjy4/wlvl/DH0rigLCzfNVjszNya26GajrkOvCFifnNhOCVAOLBySGJ7z5gMoZR/XQjW5EO+K1zDWiQi5CLNwBOxOTMDLS8dU=%
--rbxassetid%1018966%
print("LinkedLeaderboard script version 5.00 loaded")

stands = {}
CTF_mode = false


function onHumanoidDied(humanoid, player)
local stats = player:findFirstChild("leaderstats")
if stats ~= nil then
local deaths = stats:findFirstChild("Wipeouts")
deaths.Value = deaths.Value + 1

-- do short dance to try and find the killer

local killer = getKillerOfHumanoidIfStillInGame(humanoid)

handleKillCount(humanoid, player)
end
end

function onPlayerRespawn(property, player)
-- need to connect to new humanoid

if property == "Character" and player.Character ~= nil then
local humanoid = player.Character.Humanoid
local p = player
local h = humanoid
humanoid.Died:connect(function() onHumanoidDied(h, p) end )
end
end

function getKillerOfHumanoidIfStillInGame(humanoid)
-- returns the player object that killed this humanoid
-- returns nil if the killer is no longer in the game

-- check for kill tag on humanoid - may be more than one - todo: deal with this
local tag = humanoid:findFirstChild("creator")

-- find player with name on tag
if tag ~= nil then

local killer = tag.Value
if killer.Parent ~= nil then -- killer still in game
return killer
end
end

return nil
end

function handleKillCount(humanoid, player)
local killer = getKillerOfHumanoidIfStillInGame(humanoid)
if killer ~= nil then
local stats = killer:findFirstChild("leaderstats")
if stats ~= nil then
local kills = stats:findFirstChild("KOs")
local bp = killer:findFirstChild("Battle Points")
if killer ~= player then
kills.Value = kills.Value + 1
bp.Value = bp.Value + 20

script.Kill:clone().Parent = killer.PlayerGui.RSystem
killer.PlayerGui.RSystem.Kill.TextLabel.Text = "Killed "..player.Name.."!"
killer.PlayerGui.RSystem.Kill.Ui:play()
killer.PlayerGui.RSystem.Kill:TweenPosition(UDim2.new(0, 0, 0.5, -250), "Out", "Sine", 1)
wait(2)
killer.PlayerGui.RSystem.Kill:TweenPosition(UDim2.new(1, 0, 0.5, -250), "Out", "Sine", 1)
wait(2)
killer.PlayerGui.RSystem.Kill:remove()

else
kills.Value = kills.Value - 1

end
end
end
end


-----------------------------------------------



function findAllFlagStands(root)
local c = root:children()
for i=1,#c do
if (c[i].className == "Model" or c[i].className == "Part") then
findAllFlagStands(c[i])
end
if (c[i].className == "FlagStand") then
table.insert(stands, c[i])
end
end
end

function hookUpListeners()
for i=1,#stands do
stands[i].FlagCaptured:connect(onCaptureScored)
end
end

function onPlayerEntered(newPlayer)

if CTF_mode == true then

local stats = Instance.new("IntValue")
stats.Name = "leaderstats"

local captures = Instance.new("IntValue")
captures.Name = "Captures"
captures.Value = 0


captures.Parent = stats

-- VERY UGLY HACK
-- Will this leak threads?
-- Is the problem even what I think it is (player arrived before character)?
while true do
if newPlayer.Character ~= nil then break end
wait(5)
end

stats.Parent = newPlayer

else

local stats = Instance.new("IntValue")
stats.Name = "leaderstats"

local kills = Instance.new("IntValue")
kills.Name = "KOs"
kills.Value = 0

local deaths = Instance.new("IntValue")
deaths.Name = "Wipeouts"
deaths.Value = 0

local level = Instance.new("IntValue")
level.Name = "Level"
level.Value = 1

local bp = Instance.new("IntValue")
bp.Name = "Battle Points"
bp.Value = 0

kills.Parent = stats
deaths.Parent = stats
level.Parent = newPlayer
bp.Parent = newPlayer

-- VERY UGLY HACK
-- Will this leak threads?
-- Is the problem even what I think it is (player arrived before character)?
while true do
if newPlayer.Character ~= nil then break end
wait(5)
end

local humanoid = newPlayer.Character.Humanoid

humanoid.Died:connect(function() onHumanoidDied(humanoid, newPlayer) end )

-- start to listen for new humanoid
newPlayer.Changed:connect(function(property) onPlayerRespawn(property, newPlayer) end )


stats.Parent = newPlayer

end

end


function onCaptureScored(player)

local ls = player:findFirstChild("leaderstats")
if ls == nil then return end
local caps = ls:findFirstChild("Captures")
if caps == nil then return end
caps.Value = caps.Value + 1

end


findAllFlagStands(game.Workspace)
hookUpListeners()
if (#stands > 0) then CTF_mode = true end
game.Players.ChildAdded:connect(onPlayerEntered)


Report Abuse
Scarvis is not online. Scarvis
Joined: 02 Dec 2008
Total Posts: 14213
28 Aug 2015 01:02 PM
saving script:

game.Players.PlayerRemoving:connect(function(p)
if p:findFirstChild("leaderstats") then
p:SaveInstance("SavedStatPNum"..tostring(game.PlaceId),p.leaderstats)
end
end)
game.Players.PlayerAdded:connect(function(p)
for k = 1, 60, 0.03 do
wait()
if p:findFirstChild("leaderstats") and p.DataReady then break end
end
local Loaded = nil
if p:findFirstChild("leaderstats") and pcall(function() Loaded = p:LoadInstance("SavedStatPNum"..tostring(game.PlaceId)) end) then
for j, v in pairs(Loaded:GetChildren()) do
pcall(function() p.leaderstats[v.Name].Value = v.Value end)
end
end
end)
Report Abuse
Scarvis is not online. Scarvis
Joined: 02 Dec 2008
Total Posts: 14213
28 Aug 2015 04:30 PM
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
Report Abuse
FiveCakes is not online. FiveCakes
Joined: 15 Feb 2012
Total Posts: 5604
28 Aug 2015 04:32 PM
game.Players.PlayerRemoving:connect(function(p)
if p:findFirstChild("leaderstats") then
p:SaveInstance("SavedStatPNum"..tostring(game.PlaceId),p.leaderstats)
end
end)
game.Players.PlayerAdded:connect(function(p)
for k = 1, 60, 0.03 do
wait()
if p:findFirstChild("leaderstats") and p.DataReady then break end
end
local Loaded = nil
if p:findFirstChild("leaderstats") and pcall(function() Loaded = p:LoadInstance("SavedStatPNum"..tostring(game.PlaceId)) end) then
for j, v in pairs(Loaded:GetChildren()) do
pcall(function() p.leaderstats[v.Name].Value = v.Value end)
end
end
end)

But why are there numbers on top of the first script?
Btw would this work in localscript?
Report Abuse
Scarvis is not online. Scarvis
Joined: 02 Dec 2008
Total Posts: 14213
28 Aug 2015 04:33 PM
those numbers are on the tops of every leaderboard its like a link to something
Report Abuse
Scarvis is not online. Scarvis
Joined: 02 Dec 2008
Total Posts: 14213
28 Aug 2015 04:36 PM
does not work in a localscript
Report Abuse
FiveCakes is not online. FiveCakes
Joined: 15 Feb 2012
Total Posts: 5604
28 Aug 2015 05:43 PM
Oh, ty
Report Abuse
Previous Thread :: Next Thread 
Page 1 of 1
 
 
ROBLOX Forum » Game Creation and Development » Scripters
   
 
   
  • About Us
  • Jobs
  • Blog
  • Parents
  • Help
  • Terms
  • Privacy

©2017 Roblox Corporation. Roblox, the Roblox logo, Robux, Bloxy, and Powering Imagination are among our registered and unregistered trademarks in the U.S. and other countries.



Progress
Starting Roblox...
Connecting to Players...
R R

Roblox is now loading. Get ready to play!

R R

You're moments away from getting into the game!

Click here for help

Check Remember my choice and click Launch Application in the dialog box above to join games faster in the future!

Gameplay sponsored by:
Loading 0% - Starting game...
Get more with Builders Club! Join Builders Club
Choose Your Avatar
I have an account
generic image