-- [[ Rscripts Risk Notice ]] -- This script is not verified by rscripts.net. Deal with caution. -- -- Stay safe: -- • Never log in on unofficial Roblox sites or lookalike domains. -- • Real Roblox links use roblox.com (check the .com ending). -- • Treat fake Roblox login / "claim reward" pages as phishing. -- [[ End Rscripts Risk Notice ]] local zone = script.Parent local CollectionService = game:GetService("CollectionService") local Players = game:GetService("Players") local DAMAGE = 10 local FIRE_RATE = 0.5 local targets = {} local shooting = {} local function getEnemyModel(part) local model = part:FindFirstAncestorOfClass("Model") if model and CollectionService:HasTag(model, "Enemy") then return model end return nil end local function shootAt(enemy) if shooting[enemy] then return end shooting[enemy] = true task.spawn(function() while targets[enemy] and enemy.Parent do local humanoid = enemy:FindFirstChildOfClass("Humanoid") if not humanoid or humanoid.Health <= 0 then break end -- Deal damage humanoid:TakeDamage(DAMAGE) -- Small delay between shots task.wait(FIRE_RATE) end shooting[enemy] = nil end) end zone.Touched:Connect(function(hit) local enemy = getEnemyModel(hit) if enemy then targets[enemy] = true shootAt(enemy) end end) zone.TouchEnded:Connect(function(hit) local enemy = getEnemyModel(hit) if enemy then -- Wait briefly because NPCs have multiple body parts task.delay(0.1, function() if enemy.Parent then local touching = false for _, part in ipairs(enemy:GetDescendants()) do if part:IsA("BasePart") then for _, touchingPart in ipairs(part:GetTouchingParts()) do if touchingPart == zone then touching = true break end end if touching then break end end end if not touching then targets[enemy] = nil end end end) end end)