Advertisement
Azzz_4565

Untitled

Jun 24th, 2025
273
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.83 KB | None | 0 0
  1. local Players = game:GetService("Players")
  2. local RunService = game:GetService("RunService")
  3. local LocalPlayer = Players.LocalPlayer
  4. local Tycoons = workspace:WaitForChild("Tycoons")
  5.  
  6. -- Permisos por base
  7. local gearPermissions = {
  8.     Web = { "GearGiver4" },
  9.     Spike = { "GearGiver4" },
  10.     Stone = { "GearGiver1", "GearGiver3" },
  11.     Robotic = { "GearGiver1" },
  12.     Storm = { "GearGiver1" },
  13.     Magic = { "GearGiver1" },
  14. }
  15.  
  16. -- Convertir a sets
  17. local permissionSets = {}
  18. for base, gears in pairs(gearPermissions) do
  19.     local set = {}
  20.     for _, gear in ipairs(gears) do
  21.         set[gear] = true
  22.     end
  23.     permissionSets[base] = set
  24. end
  25.  
  26. -- Cache de TouchTransmitters válidos
  27. local validTouchTransmitters = {}
  28.  
  29. local function isValidGearTouch(touch)
  30.     if not touch:IsA("TouchTransmitter") then return false end
  31.     local gearGiver = touch.Parent and touch.Parent.Parent and touch.Parent.Parent.Name
  32.     local baseName = touch.Parent and touch.Parent.Parent and touch.Parent.Parent.Parent and touch.Parent.Parent.Parent.Name
  33.     local allowedGears = permissionSets[baseName]
  34.     return allowedGears and allowedGears[gearGiver]
  35. end
  36.  
  37. local function RefreshTouchCache()
  38.     validTouchTransmitters = {}
  39.     for _, v in ipairs(Tycoons:GetDescendants()) do
  40.         if isValidGearTouch(v) then
  41.             validTouchTransmitters[v] = true
  42.         end
  43.     end
  44. end
  45.  
  46. local function CollectFromCache()
  47.     local Root = LocalPlayer.Character and LocalPlayer.Character:FindFirstChild("HumanoidRootPart")
  48.     if not Root then return end
  49.  
  50.     for transmitter, _ in pairs(validTouchTransmitters) do
  51.         local part = transmitter.Parent
  52.         if part then
  53.             firetouchinterest(Root, part, 0)
  54.             firetouchinterest(Root, part, 1)
  55.         end
  56.     end
  57. end
  58.  
  59. -- Detecta cuando el personaje está listo ultra rápido
  60. local function WaitForCharacter(callback)
  61.     local function try()
  62.         local char = LocalPlayer.Character
  63.         local root = char and char:FindFirstChild("HumanoidRootPart")
  64.         if root then
  65.             callback()
  66.             return true
  67.         end
  68.         return false
  69.     end
  70.  
  71.     if try() then return end
  72.  
  73.     local conn
  74.     conn = RunService.Heartbeat:Connect(function()
  75.         if try() then
  76.             conn:Disconnect()
  77.         end
  78.     end)
  79. end
  80.  
  81. -- Al respawn
  82. local function OnRespawn()
  83.     RefreshTouchCache()
  84.     CollectFromCache()
  85. end
  86.  
  87. -- Conectar al respawn
  88. LocalPlayer.CharacterAdded:Connect(function()
  89.     WaitForCharacter(OnRespawn)
  90. end)
  91.  
  92. -- Si ya hay personaje al cargar
  93. WaitForCharacter(OnRespawn)
  94.  
  95. -- Nuevos GearGivers
  96. Tycoons.DescendantAdded:Connect(function(descendant)
  97.     if isValidGearTouch(descendant) then
  98.         validTouchTransmitters[descendant] = true
  99.         CollectFromCache()
  100.     end
  101. end)
  102.  
  103. -- Cache inicial
  104. RefreshTouchCache()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement