Leaderstats w Roblox

Zbieranie monet i wyświetlanie ich ilości w leaderstats

Stwórz Script w ServerScriptService o nazwie np. LeaderStatsManager

local function AddLeaderstatsBoard(player)
	local leaderBoard = Instance.new("Folder", player)
	leaderBoard.Name = "leaderstats"
	local coins = Instance.new("IntValue", leaderBoard)
	coins.Name = "Coins"
end

game.Players.PlayerAdded:Connect(AddLeaderstatsBoard)

Stwórz obiekt, np. Coin, który po dotknięciu, będzie modyfikował statsy w leaderstats. Dodamy zabezpieczenie w przypadku, gdyby leaderstats i Coins nie istniały

--Coin
local item = script.Parent

local function OnTouch(other)
	local player = game.Players:GetPlayerFromCharacter(other.Parent)
	if player then
		item.CollectAudio:Play()
		local lead = player:FindFirstChild("leaderstats")
		if lead then
			local coins = lead:FindFirstChild("Coins")
			if coins then
				coins.Value += 1	
			end
		end
		item.Transparency = 1
		item.CanTouch = false
		wait(0.5)
		item:Destroy()
	end
end

item.Touched:Connect(OnTouch)

--Rotate
local heart = script.Parent
local startRotation = math.random(0,360)
heart.Orientation = Vector3.new(0, startRotation, 0)

while true do
	heart.Orientation += Vector3.new(0,4,0)
	wait(0.05)
end

Zliczanie ilości zabitych graczy Kills leaderstats

Script w ServerScriptService o nazwie np. LeaderStatsManager


local function AddLeaderstatsBoard(player)
	local leaderBoard = Instance.new("Folder", player)
	leaderBoard.Name = "leaderstats"
	local coins = Instance.new("IntValue", leaderBoard)
	coins.Name = "Coins"
	local kills = Instance.new("IntValue", leaderBoard)
	kills.Name = "Kills"
end

game.Players.PlayerAdded:Connect(function(player)
	AddLeaderstatsBoard(player)
	player.CharacterAdded:Connect(function(char)
		local hum = char:WaitForChild("Humanoid")
		hum.Died:Connect(function()
			hum:UnequipTools()
			local tag = char:FindFirstChild("creator")
			if tag and tag.Value then
				local killer = tag.Value
				killer.leaderstats.Kills.Value += 1
			end
		end)
	end)
end)

Script GunServ dołączony do broni zadającej obrażenia, sprawdź artykuł o tworzeniu broni: Tworzenie broni w Roblox

Mechanizm działa w ten sposób, że po zadaniu obrażeń na characterze playera tworzy się tag o nazwie creator, wewnątrz którego zapisywany jest gracz, który zadał mu obrażenia. Przy kolejnych obrażeniach usuwany jest tag i dodawany nowy z nową nazwą playera, który zadał obrażenia. Dzięki temu ostatni tag przed śmiercią wskazuje na killera i to jemu przypisywany jest punkt.
Tag usuwany jest automatycznie po określonym czasie, np 0.1s, aby podczas upadku lub wejściu w lawę, śmierć nie była przypisana któremukolwiek z graczy.

--GunServ
local remoteEvent = script.Parent.RemoteEvent
local gunDamage = 20

local function DeleteTags(char)
	for i, creatorTag in pairs(char:GetChildren()) do
		if creatorTag:IsA("ObjectValue") and creatorTag.Name == "creator" then
			creatorTag:Destroy()
		end
	end
end

local function CreateTag(char, player)
	local creatorTag = Instance.new("ObjectValue", char)
	creatorTag.Name = "creator"
	creatorTag.Value = player
	game.Debris:AddItem(creatorTag, 0.1)
end

remoteEvent.OnServerEvent:Connect(function(player, target)
	DeleteTags(target)
	CreateTag(target, player)
	target.Humanoid.Health -= gunDamage
end)

Scroll to Top