I’ve been wanting to track kills stat changes that are higher than 1 aka manually me changing stats and my system detected changes higher than 1 but nothing makes sense really and this image above proves it. Here is the block of code responsible for the logging:
local Kills = Instance.new("NumberValue")
Kills.Name = "Kills"
local KillsDataStore = DataStore2("Kills", Player)
Kills.Value = KillsDataStore:Get(0)
local OldKills = Kills.Value
Kills.Changed:Connect(function(Value)
KillsDataStore:Set(Value)
local Character = Player.Character
if Character ~= nil and Character:FindFirstChild("Head") then
local RankGui = Character.Head:FindFirstChild("RankGui")
if RankGui ~= nil then
Functions.GiveRank(Player, RankGui)
end
end
if Value - OldKills == 1 then
Leaderstats.Streak.Value += 1
if Value / 100 == math.floor(Value / 100) then
LocalValues.Spins.Value += 1
GeneralEvent:FireClient(Player, "Message", "EventMessage", "+1 CLAN SPIN")
end
end
if math.abs(Value - OldKills) > 1 then
local Message = Player.Name.."'s Kills changed!\n"
.."Old Kills: "..OldKills.."\n"
.."Current Kills: "..Value
local Webhook = ""
Functions.SendWebhookMessage(Message, Webhook)
end
OldKills = Value
end)
Kills.Parent = Leaderstats
What am I doing wrong? I know for sure I’m not adding up 2 kills at any point only 1 per kill and there is no way to get 2 kills at once for the change event to trigger with a change of 2
stands = {}
CTF_mode = false
function onHumanoidDied(humanoid, player)
local stats = player:findFirstChild("leaderstats")
if stats ~= nil then
local deaths = stats:findFirstChild("Wipeouts")
local streak = stats:findFirstChild("Streak")
deaths.Value = deaths.Value + 1
streak.Value = 0
local killer = getKillerOfHumanoidIfStillInGame(humanoid)
handleKillCount(humanoid, player)
end
end
function onPlayerRespawn(property, player)
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)
local tag = humanoid:findFirstChild("creator")
if tag ~= nil then
local killer = tag.Value
if killer.Parent ~= nil then
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 streak = stats:findFirstChild("Streak")
if killer ~= player then
kills.Value = kills.Value + 1
streak.Value = streak.Value + 1
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
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 streak = Instance.new("IntValue")
streak.Name = "Streak"
streak.Value = 0
kills.Parent = stats
deaths.Parent = stats
streak.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 )
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)