Author Topic: Как сохранить координаты записанных действий в окне при его перемещении.  (Read 9885 times)

0 Members and 4 Guests are viewing this topic.

Jon

  • Зашел в гости
  • *
  • Posts: 12
    • View Profile
Здравствуйте.
Возникла некая проблем с написанием, точнее, хочется довести до ума. Но у меня ума не хватает :(
Есть некий скрипт, корявый конечно, но как сумел)
В игре есть окно(небольшое), его можно передвигать по всему экрану. В этом маленьком окне производятся несложные пассы мышкой
Code: [Select]
...
...
KEYPRESS (#J)
WAIT(3)
// Что сюда написать????
move(2925,872)
waitms(10 + $S_CORR)
move(2952,874)
waitms(10 + $S_CORR)
move(2966,874)
waitms(11 + $S_CORR)
move(2976,874)
waitms(10 + $S_CORR)
move(2981,873)
waitms(10 + $S_CORR)
move(2984,872)
waitms(10 + $S_CORR)
...
...
...
и таких строчек много-много, аж почти 10 000 (движения мышки примерно на 2-3 минуты)
Это окно обозначено своей цифрой (2-4) см. скрин
Внимание вопрос:  ;)
Что мне нужно написать, чтобы в случаи перемещения этого маленького окошка, все движения мышки, оставались в нем?
То есть. хотелось бы чтобы кликер ориентировался на определенный фрагмент этого маленького окошка, и в случаи перемещения этого окошка, он все свои движения (move) тоже корректировал относительно этого фрагмента.
« Last Edit: March 13, 2017, 02:05:36 PM by Vint »

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: Помогите пожалуйста с написанием.
« Reply #1 on: March 13, 2017, 09:34:23 AM »
А почему бы не использовать нормальные уже написанные скрипты для DarkOrbit?


Jon

  • Зашел в гости
  • *
  • Posts: 12
    • View Profile
Re: Помогите пожалуйста с написанием.
« Reply #2 on: March 13, 2017, 09:38:41 AM »
Code: [Select]
LCLICK(RND(X1 ,X2), RND(Y1,Y2)
WAIT(RND(10,20)
Вот этот?
 это не скрипт....

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: Помогите пожалуйста с написанием.
« Reply #3 on: March 13, 2017, 09:55:59 AM »
Это - не скрипт. Но твоя запись тоже не совсем скрипт.

Что-то вроде такого:
http://crapware.aidf.org/forum/index.php?topic=2085.msg12395#msg12395
https://vk.com/topic-14410794_32095607?post=30773


Jon

  • Зашел в гости
  • *
  • Posts: 12
    • View Profile
Re: Помогите пожалуйста с написанием.
« Reply #4 on: March 13, 2017, 10:14:41 AM »
явно извращённый подход к задаче.
Понятно, что мини карта может быть передвинута.
Поэтому нефиг её двигать, если записал скрипт.
К тому же все реализуют целевые перемещения по мини карте и сильно плачутся когда мимо кораБЛЯ, богато ништяков пролетает, а тут перемещение  и действия по жёсткому шаблону.
 Моё мнение, представлено тупиковое решение - из него конфетку делать не стоит.
Кирилл, да, мне нужен жесткий шаблон! Жесткий шаблон перемещения корабля по миникарте. Возможно Вам известно, что коробки респятся в бОльшей части , в определенных местах, именно по этому мне не нужно рандомное тыканье по миникарте, нужен жесткий шаблон.
Допустим кликер радомно тыкнет рядом с кораблем ,в паре милиметрах и все, корабль тупо пролетел 1 секунду и стоит и ждет свови 10-15 секунд до нового цикла. Зачем это??? Это не эффективно.

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: Помогите пожалуйста с написанием.
« Reply #5 on: March 13, 2017, 10:28:08 AM »
А кто сказал что нужно делать именно так? Всё можно сделать гораздо сложней и умней.

А хочешь жёстко, привяжись жёстко. Ищи элемент миникарты типа как на скрине и определяй начало координат миникарты.
Дальше все свои движения отсчитывай от этого начала.


Jon

  • Зашел в гости
  • *
  • Posts: 12
    • View Profile
Re: Помогите пожалуйста с написанием.
« Reply #6 on: March 13, 2017, 10:39:12 AM »
А кто сказал что нужно делать именно так? Всё можно сделать гораздо сложней и умней.

А хочешь жёстко, привяжись жёстко. Ищи элемент миникарты типа как на скрине и определяй начало координат миникарты.
Дальше все свои движения отсчитывай от этого начала.
Дык я это и просил у вас, помочь мне с маленьким кусочком кода, как это написать?
Прочтите еще раз внимательней мой первый пост. Мне и нужно взять определенный обьект(ориентир) и к нему приклеить манипуляции на миникарте.
Я просто не знаю что там нужно написать...
И это, "отсчитывать движения", у меня, как ты видел, простая запись движения мышки. Как эту запись привязать к обьекту?
Да, и еще, корабль не собирает коробки, коробки собирает лишь ПЕТ

P.S. Вы же понимаете, что та желтая линия на миникарте(скрине), это всего лишь пример :)На самом деле там все гораздо сложнее.
« Last Edit: March 13, 2017, 10:43:31 AM by Jon »

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: Помогите пожалуйста с написанием.
« Reply #7 on: March 13, 2017, 11:03:05 AM »
Так находим начало координат
Code: (clickermann) [Select]
GETSCREEN
IF_PICTURE_IN(0,0, $_xmax,$_ymax, "minimap.bmp")
    $sx = $_return1 - $recx
    $sy = $_return2 - $recy
END_IF

//где $recx, $recy  - координаты этой картинки $_return1/2 [b]сохранённые во время записи движений[/b].

// дальше идёт код

код содержащий координаты на миникарте прогнать через поиск/заменить в Notepad++ с настройками:
Найти:(move\(.+)(,.+)\)
Заменить на:\1 + $sx\2 + $sy\)
Регулярные выражения вкл.

Получится код вида
Code: (clickermann) [Select]
move(2925 + $sx,872 + $sy)
waitms(10 + $S_CORR)
move(2952 + $sx,874 + $sy)
waitms(10 + $S_CORR)
move(2966 + $sx,874 + $sy)
waitms(11 + $S_CORR)
move(2976 + $sx,874 + $sy)
waitms(10 + $S_CORR)
move(2981 + $sx,873 + $sy)
waitms(10 + $S_CORR)
move(2984 + $sx,872 + $sy)
« Last Edit: March 13, 2017, 12:59:34 PM by Vint »


Jon

  • Зашел в гости
  • *
  • Posts: 12
    • View Profile
Re: Помогите пожалуйста с написанием.
« Reply #8 on: March 13, 2017, 11:08:33 AM »
Да, отвечу на Ваш вопрос "зачем перемещать миникарту"
Зрительно все, да и я в том числе, привыкли видеть миникарту в правом нижнем углу экрана, ей там место.
Только есть одно "НО" Так же все знают, что в этом самом углу экрана всплывают всякого рода уведомления: Почта, Антивирус(напоминает что нужно обновить) и тд. и т.п.
В связи с этим, мне бы очень не хотелось, чтобы кликер наворотил тут дел, в мое отсутствие, а отсутствую я долго, целый рабочий день. По этому, Миникарту приходится сдвигать вверх, или вообще в другое место.
Вот отсюда и вытекает вся моя проблема)

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: Помогите пожалуйста с написанием.
« Reply #9 on: March 13, 2017, 11:19:07 AM »
Возможно Вам известно, что коробки респятся в бОльшей части , в определенных местах
...Так же все знают...

Нам, в большинстве, ничего не известно пока нам не расскажут  :)
Поэтому объяснение обычно нужно, но все об этом забывают.

Не думаю что все играли в DO. Oraven он точно играл, остальные хз


Jon

  • Зашел в гости
  • *
  • Posts: 12
    • View Profile
Re: Помогите пожалуйста с написанием.
« Reply #10 on: March 13, 2017, 12:04:04 PM »
Да, отвечу на Ваш вопрос "зачем перемещать миникарту"
Зрительно все, да и я в том числе, привыкли видеть миникарту в правом нижнем углу экрана, ей там место.
Только есть одно "НО" Так же все знают, что в этом самом углу экрана всплывают всякого рода уведомления: Почта, Антивирус(напоминает что нужно обновить) и тд. и т.п.
В связи с этим, мне бы очень не хотелось, чтобы кликер наворотил тут дел, в мое отсутствие, а отсутствую я долго, целый рабочий день. По этому, Миникарту приходится сдвигать вверх, или вообще в другое место.
Вот отсюда и вытекает вся моя проблема)
Ищите и создаёте трудности, там где их нет, чтоб затем их героически для вас преодолевали.
Ваша игра настолько примитивна, что не запоминает пользовательское расположение окон?
Вы удивитесь, НО СООБЩЕНИЯ ПАНЕЛИ УВЕДОМЛЕНИЙ КЛИКЕР НЕ ВИДИТ!!! и кликает только в те окна что на рабочем столе!
Вы занимаетесь сизифовым трудом и воруете время у тех кто помогает с написанием скриптов.
Кирилл, я конкретно ВАС ни о чем не просил, нет желания помочь, проходите мимо! И не тратте свое драгоценнейшее время на меня!

Jon

  • Зашел в гости
  • *
  • Posts: 12
    • View Profile
Re: Помогите пожалуйста с написанием.
« Reply #11 on: March 13, 2017, 02:26:16 PM »
давайте разберёмся, я вам помогаю и гораздо больше, чем все остальные, если вы этого не понимаете, то ваш уровень интелекта пока недостаточен для самостоятельных занятий программированием.
 Поэтому притча для примера. Однажды  мне нужно было доехать до вокзала несколько остановок, номер троллейбуса я знал, но не знал сколько остановок нужно ехать и в каком направлении. Естествено спросил у кондуктора доеду ли на этом троллейбусе до вокзала и получил однозначный утвердительный ответ.
И ЕХАЛ ДВА ЧАСА, так как маршрут оказался кольцевой!!!
Но ведь и кондуктор мне помог и даже не соврала тётя ни единым словом.
Так вот вы катаетесь по кругу и ещё таскаете за собой форумчан.
Одумайтесь, удачи в ваших начинаниях! ;)
Давайте разберемся.
Что вы мне предложили конкретного???
Да ничего!
"посмотри где-то там на каком-то форуме" ??? это???
Конкретного ответа , на мою просьбу, как не было, так и нет!
Предложите мне хоть что-нибудь!!! Конкретное решение моей проблемы.

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Сообщения могут быть совсем не такими о которых ты подумал.
Вот например сообщение антивиря, вполне видимое и кликабельное.



Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Вот пример.

Два скрипта.
Один записывает в файл  координаты курсора относительно начальной точки. Второй воспроизводит движение относительно положения курсора. И никаких там 10000 строк

Запись
Code: (clickermann) [Select]
$x = $_xmouse // координата начальной точки
$y = $_ymouse

WHILE(1)
   $x2 = $_xmouse-$x
   $y2 = $_ymouse-$y
   TFWRITE("Move.txt", STRCONCAT($x2, ",", $y2))
   WAITMS(50)
END_CYC

Воспроизведение
Code: (clickermann) [Select]
$x = $_xmouse
$y = $_ymouse

FOR($a=1,$a<TFCOUNT("Move.txt")+1)
   STRSEPARATE(TFREAD("Move.txt", $a), ",", $a_cor)
   MOVE($x + $a_cor[0],$y + $a_cor[1])
   UNDEFINE($a_cor)
   WAITMS(50)
END_CYC

HALT

Jon

  • Зашел в гости
  • *
  • Posts: 12
    • View Profile
УРА!! Решение проблемы почти найдено! Осталось совсем чуть-чуть :)
Благодаря помощи Vint и Oraven мне удалось сделать следующее: Записать движение мышки относительно некоего обьекта, у меня это "bmp"
Вот скрипт для записи движения курсора относительно обьекта.
Все эти движения мыши записываются в файл "Move.txt" и ОЧЕНЬ сильно сокращают размер (длину) скрипта.
Code: [Select]
GETSCREEN
IF_PICTURE_IN(0,0, $_xmax,$_ymax, "ориентир.bmp") // объект
    $x = $_return1
    $y = $_return2
END_IF

$x = $_return1 // координата начальной точки
$y = $_return2
 
WHILE(1)
   $x2 = $_xmouse-$x
   $y2 = $_ymouse-$y
   TFWRITE("Move.txt", STRCONCAT($x2, ",", $y2))
   WAITMS(50)
END_CYC
Затем второй скрипт.
Code: [Select]
GETSCREEN
IF_PICTURE_IN(0,0, $_xmax,$_ymax, "ориентир.bmp") // объект
    $x = $_return1
    $y = $_return2
END_IF

$x = $_return1
$y = $_return2
 
FOR($a=1,$a<TFCOUNT("Move.txt")+1)
   STRSEPARATE(TFREAD("Move.txt", $a), ",", $a_cor)
   MOVE($x + $a_cor[0],$y + $a_cor[1])
   UNDEFINE($a_cor)
   WAITMS(50)
END_CYC
 
HALT
Кликер читает файл Move.txt и выполняет движения мыши относительно файла  "ориентир.bmp".
Куда бы я не передвинул по экрану картинку "ориентир.bmp", курсор, все свои движения будет совершать так же, относительно этой картинки.
С этим разобрались. Еще раз благодарю Vint и Oraven

Теперь другая проблемка у меня)
мой прежний скрипт выглядел примерно так:
Code: [Select]
  lDown(2902,835)
waitms(646 + $S_CORR)
move(2901,835)
...
...
waitms(44 + $S_CORR)
move(2900,834)
waitms(16 + $S_CORR)
  lUp(3081,975)
waitms(1509 + $S_CORR)
  lDown(3081,975)
waitms(2340 + $S_CORR)
move(3080,975)
waitms(24 + $S_CORR)
...
...
move(3008,899)
waitms(486 + $S_CORR)
  lUp(3008,899)
Проблема в том, что в новом скрипте не записываются команды
 lUp(... , ...) и  lDown(... , ...)
Курсор передвигается, все отлично, но нет зажатой левой клавиши.
Подскажите пожалуйста, как вписать в новый скрипт команды  lUp(... , ...) и  lDown(... , ...)???