Top.Mail.Ru
Ответы

Помогите пожалуйста со скриптом в Clickerman

Помогите переписать скрипт под разрешение 1280х1020 на посадку растений в игре нано ферма! Пропуски делает как это решить можно м? Скрипт изначально писался под разрешение 1920х1200

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263
#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
По дате
По рейтингу
Аватар пользователя
Мудрец
9мес
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264
#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
Аватар пользователя
Ученик
9мес

Ещё хуже только стало( проблема в неправильных расчётах перемещения по X и Y, когда записывал свой скрипт у меня смещения по пикселям максимум 2-3, даже нейронка не может написать под этот монитор скрипт, но спасибо за помощь

Аватар пользователя
Ученик
9мес

Я нашел ответ через z RawMind n AI :

Для того чтобы переписать скрипт под новое разрешение, нужно скорректировать координаты и пропорции в соответствии с новыми размерами экрана. Если скрипт изначально был написан для разрешения 1920x1200, то вам потребуется изменить все координаты относительно нового разрешения.

Вот пример того, как можно пересчитать координаты:

1234567891011121314
Исходные размеры экрана и новые размеры экрана
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)

12

Этот код поможет вам пересчитать все координаты в вашем скрипте. Если же пропуски происходят из-за того, что действия выполняются слишком быстро или медленно для нового разрешения, вы можете попробовать добавить задержку между действиями:
12345
import time

Пример с задержкой
time.sleep(0.5) Задержка в полсекунды
```

Если у вас есть конкретный фрагмент кода, который не работает как нужно, вы можете показать его мне, и я помогу вам переписать его под новое разрешение.



Видео по теме