1
Общие вопросы / Re: не срабатывает перетаскивание между двух окон
« on: January 30, 2019, 10:35:54 PM »
У меня была похожая проблема.2 внутриигровых она,все координаты известны,,но с перетаскиванием беда.Казалось бы берешь LDOWN ,делаешь MOVE и отпускаешь на нужных координатах через LUP.Все работает прекрасно,до тех пор пока не включаешьрежим привязки.В режиме привязки почему-то работать отказывается и все тут.После нескольких неудачных попыток я заметил,что если именно записать через сам кликер перетаскивание предметов,то оно будет работать даже в оконном режиме.Я понятия не имею с чем это связано,но каким-то непостижимым образом это заработало,хотя там все то же самое по сути в коде.Мне помогло : я выкинул весь лишний код,вставил переменные какие мне нужны вместо точечных значений и скрипт заработал как я хотел. + подключил плавное движение мыши
Прекрасно работает в режиме привязки.Тянет с одного окна на другое будь здоров.
А вот вам и подпрограмма для плавного движения мыши.Скорее всего работать будет и без нее,но с ней покрасивше
Рекомендую выкинуть ее в отдельный файл и подключить где-то в самом начале.
Code: [Select]
move($x_mod+20,$y_mod-28) //ставишь мышь на позицию "откуда надо тянуть"
waitms(42)
lDown($x_mod+20,$y_mod-28)
waitms(42)
MOVE_SLOW($x_gila,$y_gila) //Куда надо тянуть
waitms(42)
lUp($x_gila,$y_gila) //отпускаем
Прекрасно работает в режиме привязки.Тянет с одного окна на другое будь здоров.
А вот вам и подпрограмма для плавного движения мыши.Скорее всего работать будет и без нее,но с ней покрасивше
Code: [Select]
SUB(MOVE_SLOW, $MOVE_END_X, $MOVE_END_Y)
$MOVE_SPEED = 15 // множитель скорости в попугаях меньше-быстрее. Можно дробный
$MOVE_Start_X = $_xmouse
$MOVE_Start_Y = $_ymouse
$MOVE_X = $MOVE_Start_X
$MOVE_Y = $MOVE_Start_Y
$dist= DIST($MOVE_END_X,$MOVE_END_Y,$MOVE_Start_X,$MOVE_Start_Y)
$MOVE_SPEEDVAR= INT((SQRT($dist))/$MOVE_SPEED)
IF($MOVE_SPEEDVAR < 1)
$MOVE_SPEEDVAR=1
END_IF
$MOVE_step=($dist-1)/$MOVE_SPEEDVAR
$MOVE_X_step = ($MOVE_END_X-$MOVE_Start_X)/$MOVE_step
$MOVE_Y_step = ($MOVE_END_Y-$MOVE_Start_Y)/$MOVE_step
FOR($MOVE_i=0, $MOVE_i<INT($MOVE_step))
$MOVE_X = $MOVE_X+$MOVE_X_step
$MOVE_Y = $MOVE_Y+$MOVE_Y_step
MOVE(ROUND($MOVE_X,0), ROUND($MOVE_Y,0))
WAITMS(1)
END_CYC
MOVE($MOVE_END_X, $MOVE_END_Y)
END_SUB
Рекомендую выкинуть ее в отдельный файл и подключить где-то в самом начале.