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)