Помогите пожалуйста со скриптом в Clickerman
Помогите переписать скрипт под разрешение 1280х1020 на посадку растений в игре нано ферма! Пропуски делает как это решить можно м? Скрипт изначально писался под разрешение 1920х1200
#name "Нано-ферма помощник v2.3"
// Скрипт помощник для Нано-фермы
//===== Управление ========================================
// Стрелки вверх-вниз-влево-вправо - направление посадки/сбора/расстановки
// Смена режимов
// 1 - Посадка/сбор грядок (По умолчанию)
// 2 - Посадка/сбор грядок (Уменьшенный масштаб игры)
// 3 - Расстановка животных 1х1 клетка (Птицы)
// 4 - Расстановка животных 1х2 клетка (Свиньи и др.)
// 5 - Расстановка животных 2х3 клетка (Коровы и др.)
// 6 - Расстановка животных 2х2 клетка (Пчелы или плитка)
// 0 - Включение/Отключение распределения действий на двух персах
// "Требуется установить среднее или низкое качество графики в игре"
// X - Клики по текущим координатам мыши (Зажать)
//==========================================================
SUB(polovina)
IF((ISKEYDOWN(1)=0)&($pers!=0))
SWITCH($pers)
CASE(1)
LDOWN($orx+50,$ory-30)
WAITMS(1)
LUP($orx+50,$ory-30)
$pers = 2
CASE(2)
LDOWN($orx,$ory-30)
WAITMS(1)
LUP($orx,$ory-30)
$pers = 1
DEFAULT
END_SWITCH
END_IF
END_SUB
SUB(клик, $v)
IF(($mv1 != $_xmouse)&($mv2 != $_ymouse)) // первый клик
LDOWN($_xmouse,$_ymouse)
WAITMS(5)
LUP($_xmouse,$_ymouse)
WAITMS($s)
END_IF
SWITCH($v)
CASE(1)
$mv1 = $_xmouse+$shift_x1 // + - вправо
$mv2 = $_ymouse-$shift_y1
// MOVE($mv1,$mv2)
CASE(2)
$mv1 = $_xmouse-$shift_x1 // - + влево
$mv2 = $_ymouse+$shift_y1
// MOVE($mv1,$mv2)
CASE(3)
$mv1 = $_xmouse-$shift_x2 // - - вверх
$mv2 = $_ymouse-$shift_y2
// MOVE($mv1,$mv2)
CASE(4)
$mv1 = $_xmouse+$shift_x2 // + + вниз
$mv2 = $_ymouse+$shift_y2
// MOVE($mv1,$mv2)
DEFAULT
END_SWITCH
IF($t1 = 1)
IF($pers = 0)
GETSCREEN($pers_1_x1,$pers_1_y1, $pers_2_x2,$pers_2_y2)
COLORMODE(6,$pers_1_x1,$pers_1_y1, $pers_2_x2,$pers_2_y2)
IF(PXLCOUNT($pers_1_x1,$pers_1_y1, $pers_1_x2,$pers_1_y2, 16777023) = 4)
$pers = 1
ELSE
IF(PXLCOUNT($pers_2_x1,$pers_2_y1, $pers_2_x2,$pers_2_y2, 16777023) = 4)
$pers = 2
END_IF
END_IF
END_IF
polovina()
WAITMS(40)
END_IF
MOVE($mv1,$mv2)
WAITMS(40)
LDOWN($_xmouse,$_ymouse)
WAITMS(5)
LUP($_xmouse,$_ymouse)
WAITMS($s)
$s = 30
WAITMS(40)
END_SUB
$shift_x1 = 54
$shift_y1 = 27
$shift_x2 = 54
$shift_y2 = 27
LOGWRITE ("Посадка - масштаб норма")
WHILE(1)
GETKEYSDOWN ($arr)
SWITCH($arr)
CASE(#UP)
клик(3)
CASE(#DOWN)
клик(4)
CASE(#LEFT)
клик(2)
CASE(#RIGHT)
клик(1)
CASE(#1) // посадка - масштаб норма
LOGCLEAR
LOGWRITE ("Посадка - масштаб норма")
HINTPOPUP("Посадка - масштаб норма", "Смена режима")
$shift_x1 = 54
$shift_y1 = 27
$shift_x2 = 54
$shift_y2 = 27
WAITMS(500)
CASE(#2) // посадка - масштаб уменьшенный
LOGCLEAR
LOGWRITE ("Посадка - уменьшенный масштаб")
HINTPOPUP("Посадка - уменьшенный масштаб", "Смена режима")
$shift_x1 = 27
$shift_y1 = 14
$shift_x2 = 27
$shift_y2 = 14
WAITMS(500)
CASE(#3) // расстановка животных - 1x1 клетки
LOGCLEAR
LOGWRITE ("Расстановка животных - 1x1 клетки")
HINTPOPUP("Расстановка животных - 1x1 клетки", "Смена режима")
$shift_x1 = 18
$shift_y1 = 9
$shift_x2 = 18
$shift_y2 = 9
WAITMS(500)
CASE(#4) // расстановка животных - 1x2 клетки
LOGCLEAR
LOGWRITE ("Расстановка животных - 1x2 клетки")
HINTPOPUP("Расстановка животных - 1x2 клетки", "Смена режима")
$shift_x1 = 18
$shift_y1 = 9
$shift_x2 = 36
$shift_y2 = 18
WAITMS(500)
CASE(#5) // расстановка животных - 2x3 клетки
LOGCLEAR
LOGWRITE ("Расстановка животных - 2x3 клетки")
HINTPOPUP("Расстановка животных - 2x3 клетки", "Смена режима")
$shift_x1 = 36
$shift_y1 = 18
$shift_x2 = 54
$shift_y2 = 27
WAITMS(500)
CASE(#6) // расстановка животных - 2x2 клетки
LOGCLEAR
LOGWRITE ("Расстановка животных - 2x2 клетки")
HINTPOPUP("Расстановка животных - 2x2 клетки", "Смена режима")
$shift_x1 = 36
$shift_y1 = 18
$shift_x2 = 36
$shift_y2 = 18
WAITMS(500)
CASE(#X) // кликалка
WHILE(ISKEYDOWN(#X)=1)
LDOWN($_xmouse,$_ymouse)
LUP($_xmouse,$_ymouse)
WAITMS(30)
END_CYC
CASE(#0) // два перса
IF($t1 = 0)
$t1 = $t1^1
// включение
$pers = 0
GETSCREEN
COLORMODE(6)
IF_PICTURE_IN (0,INT($_ymax/2), $_xmax,$_ymax, "Ориентир1.bmp", -1, 98)
$orx = $_return1
$ory = $_return2-24
$pers_1_x1 = $orx
$pers_1_y1 = $ory-23
$pers_1_x2 = $orx+1
$pers_1_y2 = $ory-18
$pers_2_x1 = $orx+50
$pers_2_y1 = $ory-23
$pers_2_x2 = $orx+51
$pers_2_y2 = $ory-18
IF(PXLCOUNT($pers_1_x1,$pers_1_y1, $pers_1_x2,$pers_1_y2, 16777023) > 0)
$pers = 1
END_IF
IF(PXLCOUNT($pers_2_x1,$pers_2_y1, $pers_2_x2,$pers_2_y2, 16777023) > 0)
$pers = 2
END_IF
IF($pers > 0)
HINTPOPUP("Режим: Два перса")
ELSE
$t1 = 0
LOGWRITE ("Персы не найдены")
HINTPOPUP("Персы не найдены")
END_IF
ELSE
IF_PICTURE_IN (0,INT($_ymax/2), $_xmax,$_ymax, "Ориентир1_L.bmp", -1, 98)
$orx = $_return1
$ory = $_return2-24
$pers_1_x1 = $orx
$pers_1_y1 = $ory-23
$pers_1_x2 = $orx+1
$pers_1_y2 = $ory-18
$pers_2_x1 = $orx+50
$pers_2_y1 = $ory-23
$pers_2_x2 = $orx+51
$pers_2_y2 = $ory-18
IF(PXLCOUNT($pers_1_x1,$pers_1_y1, $pers_1_x2,$pers_1_y2, 16777023) > 0)
$pers = 1
END_IF
IF(PXLCOUNT($pers_2_x1,$pers_2_y1, $pers_2_x2,$pers_2_y2, 16777023) > 0)
$pers = 2
END_IF
IF($pers > 0)
HINTPOPUP("Режим: Два перса")
ELSE
$t1 = 0
LOGWRITE ("Персы не найдены")
HINTPOPUP("Персы не найдены")
END_IF
ELSE
$t1 = 0
LOGWRITE ("Ориентир не найден!")
HINTPOPUP("Ориентир не найден!", "Внимание")
END_IF
END_IF
ELSE
$t1 = $t1^1
HINTPOPUP("Режим: Один перс")
END_IF
WAITMS(500)
DEFAULT
$pers = 0
$s = 60
END_SWITCH
WAITMS(40)
END_CYC
//==== Авто завершение при неактивности =========================================
THREAD(wait_kill, 1)
$x_cor = $_xmouse
$y_cor = $_ymouse
WAITMS(1000)
$time_cor = $_time_t + 300 // время реагирования в секундах
WHILE(($x_cor = $_xmouse)&($y_cor = $_ymouse)) // проверка перемещения курсора
IF($time_cor < $_time_t)
HALT
END_IF
WAITMS(100)
END_CYC
END_THREAD#name "Нано-ферма помощник v2.3 (1280)"
// Скрипт помощник для Нано-фермы
//===== Управление ========================================
// Стрелки вверх-вниз-влево-вправо - направление посадки/сбора/расстановки
// Смена режимов
// 1 - Посадка/сбор грядок (По умолчанию)
// 2 - Посадка/сбор грядок (Уменьшенный масштаб игры)
// 3 - Расстановка животных 1х1 клетка (Птицы)
// 4 - Расстановка животных 1х2 клетка (Свиньи и др.)
// 5 - Расстановка животных 2х3 клетка (Коровы и др.)
// 6 - Расстановка животных 2х2 клетка (Пчелы или плитка)
// 0 - Включение/Отключение распределения действий на двух персах
// "Требуется установить среднее или низкое качество графики в игре"
// X - Клики по текущим координатам мыши (Зажать)
//==========================================================
SUB(polovina)
IF((ISKEYDOWN(1)=0)&($pers!=0))
SWITCH($pers)
CASE(1)
LDOWN($orx+33,$ory-20)
WAITMS(1)
LUP($orx+33,$ory-20)
$pers = 2
CASE(2)
LDOWN($orx,$ory-20)
WAITMS(1)
LUP($orx,$ory-20)
$pers = 1
DEFAULT
END_SWITCH
END_IF
END_SUB
SUB(клик, $v)
IF(($mv1 != $_xmouse)&($mv2 != $_ymouse)) // первый клик
LDOWN($_xmouse,$_ymouse)
WAITMS(10) // было 5
LUP($_xmouse,$_ymouse)
WAITMS($s)
END_IF
SWITCH($v)
CASE(1)
$mv1 = $_xmouse+$shift_x1 // + - вправо
$mv2 = $_ymouse-$shift_y1
// MOVE($mv1,$mv2)
CASE(2)
$mv1 = $_xmouse-$shift_x1 // - + влево
$mv2 = $_ymouse+$shift_y1
// MOVE($mv1,$mv2)
CASE(3)
$mv1 = $_xmouse-$shift_x2 // - - вверх
$mv2 = $_ymouse-$shift_y2
// MOVE($mv1,$mv2)
CASE(4)
$mv1 = $_xmouse+$shift_x2 // + + вниз
$mv2 = $_ymouse+$shift_y2
// MOVE($mv1,$mv2)
DEFAULT
END_SWITCH
IF($t1 = 1)
IF($pers = 0)
GETSCREEN($pers_1_x1,$pers_1_y1, $pers_2_x2,$pers_2_y2)
COLORMODE(6,$pers_1_x1,$pers_1_y1, $pers_2_x2,$pers_2_y2)
IF(PXLCOUNT($pers_1_x1,$pers_1_y1, $pers_1_x2,$pers_1_y2, 16777023) = 4)
$pers = 1
ELSE
IF(PXLCOUNT($pers_2_x1,$pers_2_y1, $pers_2_x2,$pers_2_y2, 16777023) = 4)
$pers = 2
END_IF
END_IF
END_IF
polovina()
WAITMS(40)
END_IF
MOVE($mv1,$mv2)
WAITMS(40)
LDOWN($_xmouse,$_ymouse)
WAITMS(10) // было 5
LUP($_xmouse,$_ymouse)
WAITMS($s)
$s = 45 // было 30
WAITMS(40)
END_SUB
// Базовые шаги под 1280 (нормальный масштаб)
$shift_x1 = 36
$shift_y1 = 18
$shift_x2 = 36
$shift_y2 = 18
LOGWRITE ("Посадка - масштаб норма (1280)")
WHILE(1)
GETKEYSDOWN ($arr)
SWITCH($arr)
CASE(#UP)
клик(3)
CASE(#DOWN)
клик(4)
CASE(#LEFT)
клик(2)
CASE(#RIGHT)
клик(1)
CASE(#1) // посадка - масштаб норма (1280)
LOGCLEAR
LOGWRITE ("Посадка - масштаб норма (1280)")
HINTPOPUP("Посадка - масштаб норма", "Смена режима")
$shift_x1 = 36
$shift_y1 = 18
$shift_x2 = 36
$shift_y2 = 18
WAITMS(500)
CASE(#2) // посадка - уменьшенный масштаб (1280)
LOGCLEAR
LOGWRITE ("Посадка - уменьшенный масштаб (1280)")
HINTPOPUP("Посадка - уменьшенный масштаб", "Смена режима")
$shift_x1 = 18
$shift_y1 = 9
$shift_x2 = 18
$shift_y2 = 9
WAITMS(500)
CASE(#3) // расстановка животных - 1x1 клетки (1280)
LOGCLEAR
LOGWRITE ("Расстановка животных - 1x1 клетки (1280)")
HINTPOPUP("Расстановка животных - 1x1 клетки", "Смена режима")
$shift_x1 = 12
$shift_y1 = 6
$shift_x2 = 12
$shift_y2 = 6
WAITMS(500)
CASE(#4) // расстановка животных - 1x2 клетки (1280)
LOGCLEAR
LOGWRITE ("Расстановка животных - 1x2 клетки (1280)")
HINTPOPUP("Расстановка животных - 1x2 клетки", "Смена режима")
$shift_x1 = 12
$shift_y1 = 6
$shift_x2 = 24
$shift_y2 = 12
WAITMS(500)
CASE(#5) // расстановка животных - 2x3 клетки (1280)
LOGCLEAR
LOGWRITE ("Расстановка животных - 2x3 клетки (1280)")
HINTPOPUP("Расстановка животных - 2x3 клетки", "Смена режима")
$shift_x1 = 24
$shift_y1 = 12
$shift_x2 = 36
$shift_y2 = 18
WAITMS(500)
CASE(#6) // расстановка животных - 2x2 клетки (1280)
LOGCLEAR
LOGWRITE ("Расстановка животных - 2x2 клетки (1280)")
HINTPOPUP("Расстановка животных - 2x2 клетки", "Смена режима")
$shift_x1 = 24
$shift_y1 = 12
$shift_x2 = 24
$shift_y2 = 12
WAITMS(500)
CASE(#X) // кликалка
WHILE(ISKEYDOWN(#X)=1)
LDOWN($_xmouse,$_ymouse)
LUP($_xmouse,$_ymouse)
WAITMS(30)
END_CYC
CASE(#0) // два перса (1280)
IF($t1 = 0)
$t1 = $t1^1
// включение
$pers = 0
GETSCREEN
COLORMODE(6)
IF_PICTURE_IN (0,INT($_ymax/2), $_xmax,$_ymax, "Ориентир1.bmp", -1, 98)
$orx = $_return1
$ory = $_return2-16
$pers_1_x1 = $orx
$pers_1_y1 = $ory-15
$pers_1_x2 = $orx+1
$pers_1_y2 = $ory-12
$pers_2_x1 = $orx+33
$pers_2_y1 = $ory-15
$pers_2_x2 = $orx+34
$pers_2_y2 = $ory-12
IF(PXLCOUNT($pers_1_x1,$pers_1_y1, $pers_1_x2,$pers_1_y2, 16777023) > 0)
$pers = 1
END_IF
IF(PXLCOUNT($pers_2_x1,$pers_2_y1, $pers_2_x2,$pers_2_y2, 16777023) > 0)
$pers = 2
END_IF
IF($pers > 0)
HINTPOPUP("Режим: Два перса")
ELSE
$t1 = 0
LOGWRITE ("Персы не найдены")
HINTPOPUP("Персы не найдены")
END_IF
ELSE
IF_PICTURE_IN (0,INT($_ymax/2), $_xmax,$_ymax, "Ориентир1_L.bmp", -1, 98)
$orx = $_return1
$ory = $_return2-16
$pers_1_x1 = $orx
$pers_1_y1 = $ory-15
$pers_1_x2 = $orx+1
$pers_1_y2 = $ory-12
$pers_2_x1 = $orx+33
$pers_2_y1 = $ory-15
$pers_2_x2 = $orx+34
$pers_2_y2 = $ory-12
IF(PXLCOUNT($pers_1_x1,$pers_1_y1, $pers_1_x2,$pers_1_y2, 16777023) > 0)
$pers = 1
END_IF
IF(PXLCOUNT($pers_2_x1,$pers_2_y1, $pers_2_x2,$pers_2_y2, 16777023) > 0)
$pers = 2
END_IF
IF($pers > 0)
HINTPOPUP("Режим: Два перса")
ELSE
$t1 = 0
LOGWRITE ("Персы не найдены")
HINTPOPUP("Персы не найдены")
END_IF
ELSE
$t1 = 0
LOGWRITE ("Ориентир не найден!")
HINTPOPUP("Ориентир не найден!", "Внимание")
END_IF
END_IF
ELSE
$t1 = $t1^1
HINTPOPUP("Режим: Один перс")
END_IF
WAITMS(500)
DEFAULT
$pers = 0
$s = 60
END_SWITCH
WAITMS(40)
END_CYC
//==== Авто завершение при неактивности =========================================
THREAD(wait_kill, 1)
$x_cor = $_xmouse
$y_cor = $_ymouse
WAITMS(1000)
$time_cor = $_time_t + 300 // время реагирования в секундах
WHILE(($x_cor = $_xmouse)&($y_cor = $_ymouse)) // проверка перемещения курсора
IF($time_cor < $_time_t)
HALT
END_IF
WAITMS(100)
END_CYC
END_THREADЕщё хуже только стало( проблема в неправильных расчётах перемещения по X и Y, когда записывал свой скрипт у меня смещения по пикселям максимум 2-3, даже нейронка не может написать под этот монитор скрипт, но спасибо за помощь
Я нашел ответ через z RawMind n AI :
Для того чтобы переписать скрипт под новое разрешение, нужно скорректировать координаты и пропорции в соответствии с новыми размерами экрана. Если скрипт изначально был написан для разрешения 1920x1200, то вам потребуется изменить все координаты относительно нового разрешения.
Вот пример того, как можно пересчитать координаты:
Исходные размеры экрана и новые размеры экрана
old_width = 1920
old_height = 1200
new_width = 1280
new_height = 1024
def convert_coordinates(x, y):
new_x = (x / old_width) * new_width
new_y = (y / old_height) * new_height
return int(new_x), int(new_y)
Пример использования функции для конвертации координат
old_coords = [(1000, 800), (500, 600)] Пример исходных координат
new_coords = [convert_coordinates(x, y) for x, y in old_coords]print(new_coords)
Этот код поможет вам пересчитать все координаты в вашем скрипте. Если же пропуски происходят из-за того, что действия выполняются слишком быстро или медленно для нового разрешения, вы можете попробовать добавить задержку между действиями:import time
Пример с задержкой
time.sleep(0.5) Задержка в полсекунды
```Если у вас есть конкретный фрагмент кода, который не работает как нужно, вы можете показать его мне, и я помогу вам переписать его под новое разрешение.