Skip to content
RoRoScripts
TriggerBot preview
Unknown

TriggerBot

Script
RivalsAI_ScriptMaker
Views
502
Likes
0
Dislikes
0
Added
Script
-- Trigger Bot LocalScript with weapon blocklist
local Players = game:GetService("Players")
local UserInputService = game:GetService("UserInputService")
local VirtualInputManager = game:GetService("VirtualInputManager")
local RunService = game:GetService("RunService")
local Workspace = game:GetService("Workspace")

local LocalPlayer = Players.LocalPlayer
local Mouse = LocalPlayer:GetMouse()

-- Settings
local PROXIMITY_RADIUS = 85        -- mouse-targeting tolerance (pixels)
local MIN_CLICK_DELAY = 0.02
local MAX_CLICK_DELAY = 0.07
local CLICK_OFFSET = 12            -- random click offset (± pixels)

-- Blocklist: trigger bot pauses while one of these is equipped
local BLOCKED_WEAPONS = {
	"Fists", "Knife", "Katana", "Riot Shield", "Scythe", "Chainsaw",
	"Battle Axe", "Spear", "Maul", "Trowel", "Glast Shard"
}

local triggerOn = false
local lastClick = 0
local nextClickDelay = 0

local viewModels = Workspace:FindFirstChild("ViewModels")
local firstPerson = viewModels and viewModels:FindFirstChild("FirstPerson")

-- Weapon state, updated only when the viewmodel changes
local weaponBlocked = false

local function evaluateViewmodel()
	weaponBlocked = false
	if not firstPerson then return end

	local names = {
		string.lower(LocalPlayer.Name),
		string.lower(LocalPlayer.DisplayName),
	}

	for _, model in ipairs(firstPerson:GetDescendants()) do
		if model:IsA("Model") then
			local modelName = string.lower(model.Name)
			local isMine = false
			for _, n in ipairs(names) do
				if string.find(modelName, n, 1, true) then
					isMine = true
					break
				end
			end
			if isMine then
				for _, weapon in ipairs(BLOCKED_WEAPONS) do
					if string.find(modelName, string.lower(weapon), 1, true) then
						weaponBlocked = true
						return
					end
				end
				return -- found my viewmodel; weapon not on blocklist
			end
		end
	end
end

-- Re-evaluate ONLY when the viewmodel hierarchy changes (event-driven, no polling)
if firstPerson then
	firstPerson.DescendantAdded:Connect(evaluateViewmodel)
	firstPerson.DescendantRemoving:Connect(evaluateViewmodel)
	evaluateViewmodel()
end

local function humanoidAtCursor()
	local target = Mouse.Target
	if not target then return nil end
	local model = target:FindFirstAncestorOfClass("Model")
	while model do
		if model:FindFirstChildOfClass("Humanoid") then
			return (model ~= LocalPlayer.Character) and model or nil
		end
		model = model.Parent
	end
	return nil
end

RunService.RenderStepped:Connect(function()
	if not triggerOn or weaponBlocked then return end

	local now = os.clock()
	if now - lastClick < nextClickDelay then return end

	if humanoidAtCursor() then
		local pos = UserInputService:GetMouseLocation()
		local x = pos.X + math.random(-CLICK_OFFSET, CLICK_OFFSET)
		local y = pos.Y + math.random(-CLICK_OFFSET, CLICK_OFFSET)
		VirtualInputManager:SendMouseButtonEvent(x, y, 0, true, game, 0)
		VirtualInputManager:SendMouseButtonEvent(x, y, 0, false, game, 0)
		lastClick = now
		nextClickDelay = MIN_CLICK_DELAY + math.random() * (MAX_CLICK_DELAY - MIN_CLICK_DELAY)
	end
end)

UserInputService.InputBegan:Connect(function(input, gameProcessed)
	if gameProcessed then return end
	if input.KeyCode == Enum.KeyCode.P then
		triggerOn = not triggerOn
		print("Trigger Bot:", triggerOn and "ON" or "OFF")
	end
end)

print("Trigger Bot:", triggerOn and "ON" or "OFF")
if weaponBlocked then
	print("Trigger Bot: paused (blocked weapon equipped)")
end