Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- -- Pobranie usługi RunService
- local runService = game:GetService("RunService")
- -- Pobranie folderu Players z przestrzeni roboczej
- local playersFolder = workspace:WaitForChild("Players")
- -- Ustawienie ilości zwierząt w rzędzie
- local petsPerRow = 5
- -- Ustawienie wartości przesunięć w osi X, Z i odsunięcia od gracza
- local offsetX = 4
- local offsetZ = 5
- local offsetPlayer = 6
- -- Funkcja, która ustawia pozycje zwierząt względem gracza
- local function positionPets(character, playerFolder, deltaTime, sin, cos)
- -- Liczba zwierząt w folderze gracza
- local petCount = #playerFolder:GetChildren()
- -- Liczba rzędów potrzebna do wyświetlenia wszystkich zwierząt
- local rows = math.ceil(petCount / petsPerRow)
- -- Pętla, która ustawia pozycję każdego zwierzęcia
- for i, pet in pairs(playerFolder:GetChildren()) do
- -- Numer rzędu, w którym znajduje się zwierzę
- local row = math.floor((i - 1) / petsPerRow)
- -- Numer kolumny, w której znajduje się zwierzę
- local col = (i - 1) % petsPerRow
- -- Pobranie rozmiaru postaci i zwierzęcia
- local characterSize = character:GetExtentsSize()
- local petSize = pet:GetExtentsSize()
- -- Liczba zwierząt w rzędzie
- local petsInRow = math.min(petCount - row * petsPerRow, petsPerRow)
- -- Obliczenie pozycji zwierzęcia w osi X, Y i Z
- local x = (col - petsInRow/2 + 0.5) * offsetX
- local y = petSize.Y/2 - characterSize.Y/2
- local z = (row * offsetZ) + offsetPlayer
- -- Sprawdzenie czy postać porusza się
- if character.Humanoid.MoveDirection.Magnitude > 0 then
- -- Jeżeli zwierzę zawiera w sobie element o nazwie Walks to będzie chodziło
- if pet:FindFirstChild("Walks") then
- pet:SetPrimaryPartCFrame(pet.PrimaryPart.CFrame:Lerp(
- character.PrimaryPart.CFrame * CFrame.new(x, y + sin, z) * CFrame.fromEulerAnglesXYZ(0,0,cos),0.1))
- -- Jeżeli zwierzę zawiera w sobie element o nazwie Flying to będzie latało
- elseif pet:FindFirstChild("Flying") then
- pet:SetPrimaryPartCFrame(pet.PrimaryPart.CFrame:Lerp(
- character.PrimaryPart.CFrame * CFrame.new(x, y / 2 +math.sin(time()*3)+1, z), 0.1))
- end
- else
- -- Jeżeli zwierzę zawiera w sobie element o nazwie Walks to będzie stać w miejscu jeżeli postać się nie rusza
- if pet:FindFirstChild("Walks") then
- pet:SetPrimaryPartCFrame(pet.PrimaryPart.CFrame:Lerp(
- character.PrimaryPart.CFrame * CFrame.new(x, y, z) ,0.1))
- -- Jeżeli zwierzę zawiera w sobie element o nazwie Flying to będzie lewitować w miejscu jeżeli postać się nie rusza
- elseif pet:FindFirstChild("Flying") then
- pet:SetPrimaryPartCFrame(pet.PrimaryPart.CFrame:Lerp(
- character.PrimaryPart.CFrame * CFrame.new(x, y / 2 + math.sin(time()*3)+1, z) , 0.1))
- end
- end
- end
- end
- -- Przypisanie funkcji do zdarzenia RenderStepped w RunService
- runService.RenderStepped:Connect(function(deltaTime)
- local sin = (math.sin(15 * time() + 1.6)/.5)+1
- local cos = math.cos(7 * time() + 1) / 4
- -- Pętla po folderach graczy w folderze Players
- for i, playerFolder in pairs(playersFolder:GetChildren()) do
- -- Pobranie gracza o takim samym nicku jak nazwa folderu
- local player = game.Players:FindFirstChild(playerFolder.Name)
- if player ~= nil then
- -- pobranie modelu gracza lub ustawienie wartości nil
- local character = player.Character or nil
- -- sprawdzenie czy model gracza istnieje
- if character ~= nil then
- -- Wywołanie funkcji positionPets, która ustawia pozycję zwierząt względem gracza
- positionPets(character, playerFolder, deltaTime, sin, cos)
- end
- end
- end
- end)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement