I want a system so everytime a player reaches a certain streak they get a special item, I have a streak script, but i can’t get it to work.
help would be appreciated.
I want a system so everytime a player reaches a certain streak they get a special item, I have a streak script, but i can’t get it to work.
help would be appreciated.
Consider sharing the script to make helping easier.
stands = {}
CTF_mode = falselocal plr = game.Players.LocalPlayer
local sss = game:GetService(“ServerStorage”)function onHumanoidDied(humanoid, player)
local stats = player:findFirstChild(“leaderstats”)
if stats ~= nil then
local deaths = stats:findFirstChild(“Deaths”)
local spree = stats:findFirstChild(“KillStreak”)
deaths.Value = deaths.Value + 1
spree.Value = 0local killer = getKillerOfHumanoidIfStillInGame(humanoid) handleKillCount(humanoid, player)
end
endfunction onPlayerRespawn(property, player)
– need to connect to new humanoidif 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
endfunction 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 thenlocal killer = tag.Value if killer.Parent ~= nil then -- killer still in game return killer end
end
return nil
endfunction handleKillCount(humanoid, player)
local killer = getKillerOfHumanoidIfStillInGame(humanoid)
if killer ~= nil then
local stats = killer:findFirstChild(“leaderstats”)
if stats ~= nil then
local kills = stats:findFirstChild(“Kills”)
local spree = stats:findFirstChild(“KillStreak”)
if killer ~= player then
kills.Value = kills.Value + 1
spree.Value = spree.Value + 1
else
kills.Value = kills.Value - 1
end
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
endfunction hookUpListeners()
for i=1,#stands do
stands[i].FlagCaptured:connect(onCaptureScored)
end
endfunction 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 while true do if newPlayer.Character ~= nil then break end
wait(5)
endstats.Parent = newPlayer
else
local stats = Instance.new("IntValue") stats.Name = "leaderstats" local kills = Instance.new("IntValue") kills.Name = "Kills" kills.Value = 0 local deaths = Instance.new("IntValue") deaths.Name = "Deaths" deaths.Value = 0 local spree = Instance.new("IntValue") spree.Name = "KillStreak" spree.Value = 0 kills.Parent = stats deaths.Parent = stats spree.Parent = stats 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)
“deaths.Value = deaths.Value + 1”
You writing it in local script. Changes of values in leaderstats must be done in server script. You can create event and fire it if player died.
About other things idk