Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- local Players = game:GetService("Players")
- local RunService = game:GetService("RunService")
- local LocalPlayer = Players.LocalPlayer
- local Tycoons = workspace:WaitForChild("Tycoons")
- -- Permisos por base
- local gearPermissions = {
- Web = { "GearGiver4" },
- Spike = { "GearGiver4" },
- Stone = { "GearGiver1", "GearGiver3" },
- Robotic = { "GearGiver1" },
- Storm = { "GearGiver1" },
- Magic = { "GearGiver1" },
- }
- -- Convertir a sets
- local permissionSets = {}
- for base, gears in pairs(gearPermissions) do
- local set = {}
- for _, gear in ipairs(gears) do
- set[gear] = true
- end
- permissionSets[base] = set
- end
- -- Cache de TouchTransmitters válidos
- local validTouchTransmitters = {}
- local function isValidGearTouch(touch)
- if not touch:IsA("TouchTransmitter") then return false end
- local gearGiver = touch.Parent and touch.Parent.Parent and touch.Parent.Parent.Name
- local baseName = touch.Parent and touch.Parent.Parent and touch.Parent.Parent.Parent and touch.Parent.Parent.Parent.Name
- local allowedGears = permissionSets[baseName]
- return allowedGears and allowedGears[gearGiver]
- end
- local function RefreshTouchCache()
- validTouchTransmitters = {}
- for _, v in ipairs(Tycoons:GetDescendants()) do
- if isValidGearTouch(v) then
- validTouchTransmitters[v] = true
- end
- end
- end
- local function CollectFromCache()
- local Root = LocalPlayer.Character and LocalPlayer.Character:FindFirstChild("HumanoidRootPart")
- if not Root then return end
- for transmitter, _ in pairs(validTouchTransmitters) do
- local part = transmitter.Parent
- if part then
- firetouchinterest(Root, part, 0)
- firetouchinterest(Root, part, 1)
- end
- end
- end
- -- Detecta cuando el personaje está listo ultra rápido
- local function WaitForCharacter(callback)
- local function try()
- local char = LocalPlayer.Character
- local root = char and char:FindFirstChild("HumanoidRootPart")
- if root then
- callback()
- return true
- end
- return false
- end
- if try() then return end
- local conn
- conn = RunService.Heartbeat:Connect(function()
- if try() then
- conn:Disconnect()
- end
- end)
- end
- -- Al respawn
- local function OnRespawn()
- RefreshTouchCache()
- CollectFromCache()
- end
- -- Conectar al respawn
- LocalPlayer.CharacterAdded:Connect(function()
- WaitForCharacter(OnRespawn)
- end)
- -- Si ya hay personaje al cargar
- WaitForCharacter(OnRespawn)
- -- Nuevos GearGivers
- Tycoons.DescendantAdded:Connect(function(descendant)
- if isValidGearTouch(descendant) then
- validTouchTransmitters[descendant] = true
- CollectFromCache()
- end
- end)
- -- Cache inicial
- RefreshTouchCache()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement