Advertisement
Jalapenox

Roblox - Scp Roleplay Script

Jun 29th, 2024
6,276
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 4.44 KB | Gaming | 0 0
  1. -- Head Hitbox for Enemies Only
  2.  
  3. local player = game.Players.LocalPlayer
  4.  
  5. -- Define team groups
  6. local classDAndChaosInsurgency = { "Class - D", "Chaos Insurgency" }
  7. local otherTeams = { "Security Department", "Mobile Task Force", "Internal Security Department", "Administrative Department", "Intelligence Agency", "Rapid Response Team", "Scientific Department", "Medical Department" }
  8.  
  9. local resizedHeads = {} -- Track resized heads
  10.  
  11. -- Function to check if a player's team is an enemy team
  12. local function isOnEnemyTeam(targetPlayer)
  13.     if targetPlayer.Team then
  14.         local playerTeam = player.Team and player.Team.Name
  15.         local targetTeam = targetPlayer.Team.Name
  16.  
  17.         if table.find(classDAndChaosInsurgency, playerTeam) then
  18.             return table.find(otherTeams, targetTeam) ~= nil
  19.         else
  20.             return table.find(classDAndChaosInsurgency, targetTeam) ~= nil
  21.         end
  22.     end
  23.     return false
  24. end
  25.  
  26. -- Function to resize heads and set color to match player's skin tone
  27. local function resizeHead(character, headSize)
  28.     local head = character:FindFirstChild("Head")
  29.     if head then
  30.         -- Save original properties
  31.         if not resizedHeads[character] then
  32.             resizedHeads[character] = {
  33.                 head = head,
  34.                 originalSize = head.Size,
  35.                 originalTransparency = head.Transparency,
  36.                 originalMaterial = head.Material,
  37.                 originalCanCollide = head.CanCollide
  38.             }
  39.         end
  40.  
  41.         -- Find the player's skin tone (assuming "Left Arm" has the correct skin color)
  42.         local leftArm = character:FindFirstChild("Left Arm") or character:FindFirstChild("LeftUpperArm")
  43.         if leftArm then
  44.             head.BrickColor = leftArm.BrickColor
  45.         else
  46.             head.BrickColor = BrickColor.new("Really white") -- Default if skin tone cannot be found
  47.         end
  48.  
  49.         head.Size = Vector3.new(headSize, headSize, headSize)
  50.         head.Transparency = 1.0 -- Make head fully opaque
  51.         head.Material = "Neon"
  52.         head.CanCollide = false
  53.     end
  54. end
  55.  
  56. -- Function to handle character addition for enemies
  57. local function onCharacterAdded(character)
  58.     local headSize = 3 -- Resize head size to 3
  59.     resizeHead(character, headSize)
  60. end
  61.  
  62. -- Function to handle player addition for enemies
  63. local function onPlayerAdded(enemyPlayer)
  64.     enemyPlayer.CharacterAdded:Connect(function(character)
  65.         onCharacterAdded(character)
  66.     end)
  67.     -- If the player already has a character, resize the head immediately
  68.     if enemyPlayer.Character then
  69.         onCharacterAdded(enemyPlayer.Character)
  70.     end
  71. end
  72.  
  73. -- Function to update enemies when the player's team changes
  74. local function updateEnemies()
  75.     -- Restore original properties for all players
  76.     for character, tracked in pairs(resizedHeads) do
  77.         if tracked.head then
  78.             tracked.head.Size = tracked.originalSize
  79.             tracked.head.Transparency = tracked.originalTransparency
  80.             tracked.head.Material = tracked.originalMaterial
  81.             tracked.head.CanCollide = tracked.originalCanCollide
  82.         end
  83.     end
  84.     resizedHeads = {}
  85.  
  86.     -- Resize heads for current enemies
  87.     for _, v in ipairs(game:GetService('Players'):GetPlayers()) do
  88.         if v ~= player and isOnEnemyTeam(v) then
  89.             onPlayerAdded(v)
  90.         end
  91.     end
  92. end
  93.  
  94. -- Initial update of enemies
  95. updateEnemies()
  96.  
  97. -- Update enemies if the local player's team changes
  98. player:GetPropertyChangedSignal("Team"):Connect(updateEnemies)
  99.  
  100. -- Connect the player added event
  101. game:GetService('Players').PlayerAdded:Connect(function(newPlayer)
  102.     if newPlayer ~= player and isOnEnemyTeam(newPlayer) then
  103.         onPlayerAdded(newPlayer)
  104.     end
  105. end)
  106.  
  107. -- Function to repeatedly resize heads of enemies every second
  108. local function autoResizeHeads()
  109.     while true do
  110.         wait(1) -- Wait for 1 second
  111.         for _, v in ipairs(game:GetService('Players'):GetPlayers()) do
  112.             if v ~= player and isOnEnemyTeam(v) then
  113.                 pcall(function()
  114.                     local character = v.Character
  115.                     if character then
  116.                         local headSize = 3 -- Resize head size to 3
  117.                         resizeHead(character, headSize)
  118.                     end
  119.                 end)
  120.             end
  121.         end
  122.     end
  123. end
  124.  
  125. -- Start a new thread to auto-resize heads of enemies
  126. coroutine.wrap(autoResizeHeads)()
  127.  
Tags: Roblox
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement