Advertisement
drakon-firestone

PetsClient

Mar 29th, 2023
697
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 3.55 KB | None | 0 0
  1. -- Pobranie usługi RunService
  2. local runService = game:GetService("RunService")
  3.  
  4. -- Pobranie folderu Players z przestrzeni roboczej
  5. local playersFolder = workspace:WaitForChild("Players")
  6.  
  7. -- Ustawienie ilości zwierząt w rzędzie
  8. local petsPerRow = 5
  9.  
  10. -- Ustawienie wartości przesunięć w osi X, Z i odsunięcia od gracza
  11. local offsetX = 4
  12. local offsetZ = 5
  13. local offsetPlayer = 6
  14.  
  15. -- Funkcja, która ustawia pozycje zwierząt względem gracza
  16. local function positionPets(character, playerFolder, deltaTime, sin, cos)
  17.     -- Liczba zwierząt w folderze gracza
  18.     local petCount = #playerFolder:GetChildren()
  19.     -- Liczba rzędów potrzebna do wyświetlenia wszystkich zwierząt
  20.     local rows = math.ceil(petCount / petsPerRow)
  21.  
  22.     -- Pętla, która ustawia pozycję każdego zwierzęcia
  23.     for i, pet in pairs(playerFolder:GetChildren()) do
  24.         -- Numer rzędu, w którym znajduje się zwierzę
  25.         local row = math.floor((i - 1) / petsPerRow)
  26.         -- Numer kolumny, w której znajduje się zwierzę
  27.         local col = (i - 1) % petsPerRow
  28.         -- Pobranie rozmiaru postaci i zwierzęcia
  29.         local characterSize = character:GetExtentsSize()
  30.         local petSize = pet:GetExtentsSize()
  31.         -- Liczba zwierząt w rzędzie
  32.         local petsInRow = math.min(petCount - row * petsPerRow, petsPerRow)
  33.  
  34.         -- Obliczenie pozycji zwierzęcia w osi X, Y i Z
  35.         local x = (col - petsInRow/2 + 0.5) * offsetX
  36.         local y = petSize.Y/2 - characterSize.Y/2
  37.         local z = (row * offsetZ) + offsetPlayer
  38.  
  39.         -- Sprawdzenie czy postać porusza się
  40.         if character.Humanoid.MoveDirection.Magnitude > 0 then
  41.             -- Jeżeli zwierzę zawiera w sobie element o nazwie Walks to będzie chodziło
  42.             if pet:FindFirstChild("Walks") then
  43.                 pet:SetPrimaryPartCFrame(pet.PrimaryPart.CFrame:Lerp(
  44.                     character.PrimaryPart.CFrame * CFrame.new(x, y + sin, z) * CFrame.fromEulerAnglesXYZ(0,0,cos),0.1))
  45.                 -- Jeżeli zwierzę zawiera w sobie element o nazwie Flying to będzie latało
  46.             elseif pet:FindFirstChild("Flying") then
  47.                 pet:SetPrimaryPartCFrame(pet.PrimaryPart.CFrame:Lerp(
  48.                     character.PrimaryPart.CFrame * CFrame.new(x, y / 2 +math.sin(time()*3)+1, z), 0.1))
  49.             end
  50.         else
  51.             -- Jeżeli zwierzę zawiera w sobie element o nazwie Walks to będzie stać w miejscu jeżeli postać się nie rusza
  52.             if pet:FindFirstChild("Walks") then
  53.                 pet:SetPrimaryPartCFrame(pet.PrimaryPart.CFrame:Lerp(
  54.                     character.PrimaryPart.CFrame * CFrame.new(x, y, z) ,0.1))
  55.                 -- Jeżeli zwierzę zawiera w sobie element o nazwie Flying to będzie lewitować w miejscu jeżeli postać się nie rusza
  56.             elseif pet:FindFirstChild("Flying") then
  57.                 pet:SetPrimaryPartCFrame(pet.PrimaryPart.CFrame:Lerp(
  58.                     character.PrimaryPart.CFrame * CFrame.new(x, y / 2 + math.sin(time()*3)+1, z) , 0.1))
  59.             end
  60.         end
  61.     end
  62. end
  63.  
  64. -- Przypisanie funkcji do zdarzenia RenderStepped w RunService
  65. runService.RenderStepped:Connect(function(deltaTime)
  66.     local sin = (math.sin(15 * time() + 1.6)/.5)+1
  67.     local cos = math.cos(7 * time() + 1) / 4
  68.  
  69.     -- Pętla po folderach graczy w folderze Players
  70.     for i, playerFolder in pairs(playersFolder:GetChildren()) do
  71.         -- Pobranie gracza o takim samym nicku jak nazwa folderu
  72.         local player = game.Players:FindFirstChild(playerFolder.Name)
  73.         if player ~= nil then
  74.             -- pobranie modelu gracza lub ustawienie wartości nil
  75.             local character = player.Character or nil
  76.             -- sprawdzenie czy model gracza istnieje
  77.             if character ~= nil then
  78.                 -- Wywołanie funkcji positionPets, która ustawia pozycję zwierząt względem gracza
  79.                 positionPets(character, playerFolder, deltaTime, sin, cos)
  80.             end
  81.         end
  82.     end
  83. end)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement