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 |
|
|
|
| 28 Aug 2015 12:26 PM |
Post le code?
Private Road - Residents Only |
|
|
| Report Abuse |
|
|
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
|
  |
| 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
|
  |
| Joined: 02 Dec 2008 |
| Total Posts: 14213 |
|
|
| 28 Aug 2015 04:30 PM |
| aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa |
|
|
| Report Abuse |
|
|
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
|
  |
| 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
|
  |
| Joined: 02 Dec 2008 |
| Total Posts: 14213 |
|
|
| 28 Aug 2015 04:36 PM |
| does not work in a localscript |
|
|
| Report Abuse |
|
|
FiveCakes
|
  |
| Joined: 15 Feb 2012 |
| Total Posts: 5604 |
|
| |
|