Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Помогите со скриптом для стандофф 2 чтобы лочит скины за 0.03 на базе perfect click

Юрий Кобылянский Ученик (93), на голосовании 1 месяц назад
-- Координаты точек на экране
local stickT = Point.get(2717, 247) -- Верхний левый угол области наблюдения
local stickB = Point.get(2994, 344) -- Нижний правый угол области наблюдения
local buyBtn = Point.get(1953, 1456) -- Координаты кнопки "Купить"
local confirmBtn = Point.get(3456, 532) -- Координаты кнопки "Подтвердить"

-- Задержки (в мс)
local checkDelay = 250 -- Задержка между проверками области
local clickDelay = 1000 -- Задержка после нажатия кнопки "Купить" перед нажатием "Подтвердить"

-- Функция для захвата части экрана
function captureRegion(topLeft, bottomRight)
local width = bottomRight.x - topLeft.x
local height = bottomRight.y - topLeft.y
return CaptureArea(topLeft.x, topLeft.y, width, height)
end

-- Функция для поэлементного сравнения двух изображений
function imagesAreEqual(img1, img2)
if img1.width ~= img2.width or img1.height ~= img2.height then
return false
end
for x = 0, img1.width - 1 do
for y = 0, img1.height - 1 do
if img1:GetPixel(x, y) ~= img2:GetPixel(x, y) then
return false
end
end
end
return true
end

-- Функция имитации клика с небольшой рандомизацией координат, чтобы избежать детекции ботов
function clickWithRandomization(point)
local randomX = point.x + math.random(-5, 5)
local randomY = point.y + math.random(-5, 5)
MoveMouseTo(randomX, randomY)
PressMouseButton(1)
Sleep(50)
ReleaseMouseButton(1)
end

-- Захватываем первое изображение области для сравнения
local previousImage = captureRegion(stickT, stickB)

-- Основной цикл скрипта
while not EXIT do
-- Захватим текущее состояние области
local currentImage = captureRegion(stickT, stickB)

-- Если обнаружено изменение (например, появление нового скина)
if not imagesAreEqual(previousImage, currentImage) then
print("Обнаружено изменение в области!")

-- Нажимаем кнопку "Купить"
clickWithRandomization(buyBtn)
print("Нажата кнопка 'Купить'")
Sleep(clickDelay)

-- Нажимаем кнопку "Подтвердить"
clickWithRandomization(confirmBtn)
print("Нажата кнопка 'Подтвердить'")

-- Обновляем предыдущую картинку на текущую, чтобы не повторять срабатывание на одном и том же изменении
previousImage = currentImage
end

Sleep(checkDelay)
end







если есть вопросы писать в тг @vilca_acliv
Голосование за лучший ответ
Никита Игнатович Гуру (3231) 2 месяца назад
лечись, дай боже тебя оклемают
Данил Чедов Ученик (127) 2 недели назад
-- Конфигурационные параметры
local config = {
detectionArea = {
topLeft = Point.get(2717, 247),
bottomRight = Point.get(2994, 344)
},
buttons = {
buy = Point.get(1953, 1456),
confirm = Point.get(3456, 532)
},
timings = {
checkInterval = 30, -- 30ms для 0.03 реакции
clickDelay = 25, -- Задержка между кликами
cooldown = 1000 -- Задержка после успешной покупки
},
randomization = {
xOffset = 3, -- Смещение по X
yOffset = 2 -- Смещение по Y
}
}

-- Расширенная функция умного сравнения изображений
local function smartCompare(img1, img2)
if img1.hash ~= img2.hash then return false end
for x = 0, img1.width - 1, 2 do -- Проверка через пиксель
for y = 0, img1.height - 1, 2 do
if img1:GetPixel(x, y) ~= img2:GetPixel(x, y) then
return false
end
end
end
return true
end

-- Оптимизированный клик с нормальным распределением
local function perfectClick(point)
local randX = math.random(-config.randomization.xOffset, config.randomization.xOffset)
local randY = math.random(-config.randomization.yOffset, config.randomization.yOffset)
MoveMouseTo(point.x + randX, point.y + randY)
PressAndReleaseMouseButton(1)
end

-- Инициализация
local lastCapture = CaptureArea(
config.detectionArea.topLeft.x,
config.detectionArea.topLeft.y,
config.detectionArea.bottomRight.x - config.detectionArea.topLeft.x,
config.detectionArea.bottomRight.y - config.detectionArea.topLeft.y
)
lastCapture.hash = lastCapture:CalculateHash()

-- Основной цикл
while not EXIT do
local current = CaptureArea(
config.detectionArea.topLeft.x,
config.detectionArea.topLeft.y,
config.detectionArea.bottomRight.x - config.detectionArea.topLeft.x,
config.detectionArea.bottomRight.y - config.detectionArea.topLeft.y
)
current.hash = current:CalculateHash()

if not smartCompare(lastCapture, current) then
perfectClick(config.buttons.buy)
Sleep(config.timings.clickDelay)
perfectClick(config.buttons.confirm)

-- Обновление эталонного изображения
lastCapture = current
lastCapture.hash = current.hash
Sleep(config.timings.cooldown)
end

Sleep(config.timings.checkInterval)
end
Артём ТонковскийУченик (100) 1 неделю назад
А topLeft = Point.get и bottomRight = Point.get которые в самом начале, от куда для них "координаты" брать?
Похожие вопросы