Здравствуйте, гость ( Вход | Регистрация )

2 страниц V < 1 2  
Ответить в эту темуОткрыть новую тему
> Несколько вопросов, Если вопросы уже обсуждались, можно меня тыкнуть в эту тему ))
maxximum3000
сообщение 26.12.2014, 21:19
Сообщение #21


**

Neophyte
Сообщений: 18
Регистрация: 18.12.2014
Группа: Пользователи
Наличность: 0
Пользователь №: 17.189
Возраст: 24



Решил переделать скрипт (убрать паузу скрипта) следующим образом:

Скрипт 4:

Цитата
set #needClick 1
while_not %clickAccept.6 [ 4 ] = 1
wait 10
end_while
wait 5s
set #needClick 0
while_not %clickAccept.6 [ 4 ] = 0
wait 10
end_while



Скрипт 5:

Цитата
set #needClick 1
// ???? ?????????? ?? ???????????? ???????
while_not %clickAccept.6 [ 5 ] = 1
wait 10
end_while
wait 5s
set #needClick 0
while_not %clickAccept.6 [ 5 ] = 0
wait 10
end_while



Скрипт 6:

Цитата
:start
for #i 4 5 1
if #needClick.#i = 1
set %clickAccept [ #i ] 1
while #needClick.#i = 1
wait 10
end_while
set %clickAccept [ #i ] 0
end_if
end_for
goto start



В скриптах 4 и 5 предполагается за место wait 5s вписывать сам клик.

Проблема следующая:
Когда я запускаю скрипты в последовательности 6 > 5 > 4 все работает хорошо.

Когда я запускаю скрипты в последовательности 6 > 4 > 5 то при запуске скрипта №5 выскакивает следующая ошибка:
http://prntscr.com/5l697j


От нее можно как то избавиться, или она будет постоянно и запускать можно только в последовательности 6 > 5 > 4 ?

П.с. в данной последовательности работа скрипта меня устраивает, но хотелось бы иметь независимый запуск очередности, т.к. сейчас задействовано только 2 клиента игры и 3 скрипта, завтра будет 4 клиента игры и 5-6 скриптов уже
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
maxximum3000
сообщение 26.12.2014, 22:53
Сообщение #22


**

Neophyte
Сообщений: 18
Регистрация: 18.12.2014
Группа: Пользователи
Наличность: 0
Пользователь №: 17.189
Возраст: 24



Еще один бред получился... Скрипт номер 3 (такой же как в прошлом сообщении номер 6) сбивает внутрипрограммный счетчик времени...

Описываю:

Имеется скрипт (фрагмент):

Цитата
Repeat 15
set #needClick 1
while_not %clickAccept.3 [ 1 ] = 1
wait 10
end_while
move 825, 179 //взять в прицел астероид 1
left 825, 179
wait 500
move 877, 74
left 877, 74
set #needClick 0
while_not %clickAccept.3 [ 1 ] = 0
wait 10
end_while
wait 1s
set #needClick 1
while_not %clickAccept.3 [ 1 ] = 1
wait 10
end_while
move 815, 197 //взять в прицел астероид 2
left 815, 197
wait 500
move 877, 74
left 877, 74
set #needClick 0
while_not %clickAccept.3 [ 1 ] = 0
wait 10
end_while
wait 5s
set #needClick 1
while_not %clickAccept.3 [ 1 ] = 1
wait 10
end_while
move 710, 48 //запустить модуль 1 на астероид 1
left 710, 48
move 710, 48
wait 750
send {F1}
wait 1000
move 612, 53 //запустить модуль 2 на астероид 2
left 612, 53
move 612, 53
wait 750
send {F2}
set #needClick 0
while_not %clickAccept.3 [ 1 ] = 0
wait 10
end_while
wait 130s //ожидание цикла модуля
repeat 3 //снять прицел с астероида 1 и 2
set #needClick 1
while_not %clickAccept.3 [ 1 ] = 1
wait 10
end_while
send_down 9
wait 500
move 711, 59
left 711, 59
send_up 9
set #needClick 0
while_not %clickAccept.3 [ 1 ] = 0
wait 10
end_while
wait 2s
end_repeat
wait 20s //ожидание цикла модуля
end_repeat



В данном скрипте между командой send {F1} примерно 158 секунд (скорость 60)
Цикл работы модуля 1 (который запускается кнопкой F1) 149 секунд.
кнопка F1 нажимается через каждые 147-150 секунд. (цикл еще не успевает завершиться).

В итоге представленный мной фрагмент скрипта работает примерно на 10 секунд быстрее положенного времени (на сам клиент игры не пинать, дело не в нем 100%)
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 27.12.2014, 3:33
Сообщение #23


**********

Elder
Сообщений: 3.480
Регистрация: 18.8.2014
Группа: Пользователи
Наличность: 26540
Пользователь №: 16.971
Возраст: 29



Цитата
wait 130s

Попробуйте в мили секундах: wait 130000.
Была похожая проблема, при ожидании в несколько минут время сбивалось на несколько секунд.

Цитата
Цикл работы модуля 1 (который запускается кнопкой F1) 149 секунд.
кнопка F1 нажимается через каждые 147-150 секунд. (цикл еще не успевает завершиться).

А что мешает увеличить wait перед нажатием кнопки?
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 27.12.2014, 17:18
Сообщение #24


***********

Модератор UOPilot
Сообщений: 9.460
Регистрация: 2.12.2008
Группа: Супермодераторы
Наличность: 27708
Пользователь №: 11.279



чтобы избежать проблем с задержками при приостановке скриптов используйте такие конструкции:
Код
for #i 1 100 1
     wait 10
end_for

Дело в том, что при паузе строка с задержкой считается выполненной и обрывается. При такой реализации так же будет обрыв, но обрыв только 10мс, а конструкция ждет 1000мс(1 секунда).


--------------------
Скрипты UOPilot под заказ.
Консультации по UOpilot 15$/час.
Услуги Lua разработчика (не пилот, проекты, постоянка)
Disсоrd:
Kov____
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
maxximum3000
сообщение 29.12.2014, 2:07
Сообщение #25


**

Neophyte
Сообщений: 18
Регистрация: 18.12.2014
Группа: Пользователи
Наличность: 0
Пользователь №: 17.189
Возраст: 24



Цитата(DarkMaster @ 27.12.2014, 17:18) *

чтобы избежать проблем с задержками при приостановке скриптов используйте такие конструкции:
Код
for #i 1 100 1
     wait 10
end_for

Дело в том, что при паузе строка с задержкой считается выполненной и обрывается. При такой реализации так же будет обрыв, но обрыв только 10мс, а конструкция ждет 1000мс(1 секунда).




Задержку по времени ожидания убрал. Нужно было в третьем скрипте просто поставить скорость другую (стояла 0, поставил 10) и все ожидание тут же стало работать нормально.

Третий скрипт:

Цитата
:start
for #i 1 2 1
if #needClick.#i = 1
set %clickAccept [ #i ] 1
while #needClick.#i = 1
wait 10
end_while
set %clickAccept [ #i ] 0
end_if
end_for
goto start



Паузу скриптов убрал полностью теперь они просто ждут, когда третий скрипт им даст разрешение на использование мышки. Все работает так, как мне и нужно.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 29.12.2014, 2:47
Сообщение #26


***********

Модератор UOPilot
Сообщений: 9.460
Регистрация: 2.12.2008
Группа: Супермодераторы
Наличность: 27708
Пользователь №: 11.279



Цитата
Задержку по времени ожидания убрал. Нужно было в третьем скрипте просто поставить скорость другую (стояла 0, поставил 10) и все ожидание тут же стало работать нормально.

Работать оно стало потому что вы:
Цитата
Паузу скриптов убрал полностью теперь они просто ждут, когда третий скрипт им даст разрешение на использование мышки.


--------------------
Скрипты UOPilot под заказ.
Консультации по UOpilot 15$/час.
Услуги Lua разработчика (не пилот, проекты, постоянка)
Disсоrd:
Kov____
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
maxximum3000
сообщение 29.12.2014, 18:36
Сообщение #27


**

Neophyte
Сообщений: 18
Регистрация: 18.12.2014
Группа: Пользователи
Наличность: 0
Пользователь №: 17.189
Возраст: 24



Цитата(DarkMaster @ 29.12.2014, 2:47) *

Работать оно стало потому что вы:



Паузу я убрал почти сразу. И без нее пошли эти задержки во времени, когда скрипт разрешающий использовать мышку был с 0 скоростью. Поменял на 10 и только после этого все стало работать нормально.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
maxximum3000
сообщение 7.1.2015, 14:17
Сообщение #28


**

Neophyte
Сообщений: 18
Регистрация: 18.12.2014
Группа: Пользователи
Наличность: 0
Пользователь №: 17.189
Возраст: 24



Что то никак не могу понять как сделать (праздники дают о себе знать) следующую вещь:

Мой скрипт:

Действие А
wait 10s
действие Б
wait 100s
действие В


Действие Б может длиться от 5 до 30 секунд.
Нужно сделать так, что бы между действием А и действием В прошло 115 секунд, вне зависимости от затраченного времени на действие Б

Как это реализовать?
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 7.1.2015, 15:56
Сообщение #29


**********

Elder
Сообщений: 3.480
Регистрация: 18.8.2014
Группа: Пользователи
Наличность: 26540
Пользователь №: 16.971
Возраст: 29



Между действием А и В добавить условие и переменную.
set #time timer + 115000
while #time > timer
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Sashka.
сообщение 12.1.2015, 19:59
Сообщение #30


***

Novice
Сообщений: 89
Регистрация: 4.12.2014
Группа: Пользователи
Наличность: 0
Пользователь №: 17.151
Возраст: 48



Цитата(DarkMaster @ 19.12.2014, 0:16) *

Либо продумывать логику так, чтобы этих одновременных перемещений не было, либо ставить виртуалки.
Если работает без move, то убрать move.

Из читанного мною о подобных программах и их реализациях ничего хорошего сказать не могу. По сути в винде все так же одна мышь, просто два курсора отображется. При работе со второй в моменты кликов происходит обыкновенное перемещение и нажатие первой мыши.

Астер/виртуалки/

имеется два окна VB, из вышесказанного комментария немног не понял, юпилот в каждую ОСь ставить?
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
maxximum3000
сообщение 12.1.2015, 20:49
Сообщение #31


**

Neophyte
Сообщений: 18
Регистрация: 18.12.2014
Группа: Пользователи
Наличность: 0
Пользователь №: 17.189
Возраст: 24



Цитата(Sashka. @ 12.1.2015, 19:59) *

имеется два окна VB, из вышесказанного комментария немног не понял, юпилот в каждую ОСь ставить?



У меня проблема заключалась в том, что несколько скриптов работающие с несколькими окнами захватывали мышку одновременно. Это исправилось вышеописанным кодом.
Если ты хочешь убрать данную проблему используя виртуалки, то да. Надо ставить под каждую ОСь.
Я к сожалению такого сделать не могу (или может подскажете норм виртуалку, в которой игры будут считать, что стоит видеокарта поддерживающая шейдеры 3.0. Буду крайне благодарен).



Можно как то расставить приоритеты в следующий скрипт:

Скрипт 1:

Цитата
set #needClick 1
while_not %clickAccept.5 [ 1 ] = 1
wait 10
end_while

<необходимый клик>

set #needClick 0
while_not %clickAccept.5 [ 1 ] = 0
wait 10
end_while



Скрипт 2:

Цитата
set #needClick 1
while_not %clickAccept.5 [ 2 ] = 1
wait 10
end_while

<необходимый клик>

set #needClick 0
while_not %clickAccept.5 [ 2 ] = 0
wait 10
end_while



Скрипт 5:

Цитата
:start
for #i 1 4 1
if #needClick.#i = 1
set %clickAccept [ #i ] 1
while #needClick.#i = 1
wait 10
end_while
set %clickAccept [ #i ] 0
end_if
end_for
goto start




Сама задача: в случае запроса от первого и второго скрипта отдать приоритет выполнения первому скрипту. Желательно не плодить новые скрипты... Итак сейчас 5 рабочих и будет еще около 10...
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 12.1.2015, 21:28
Сообщение #32


***********

Модератор UOPilot
Сообщений: 9.460
Регистрация: 2.12.2008
Группа: Супермодераторы
Наличность: 27708
Пользователь №: 11.279



Цитата
Я к сожалению такого сделать не могу (или может подскажете норм виртуалку, в которой игры будут считать, что стоит видеокарта поддерживающая шейдеры 3.0. Буду крайне благодарен).

Юзай астер.


--------------------
Скрипты UOPilot под заказ.
Консультации по UOpilot 15$/час.
Услуги Lua разработчика (не пилот, проекты, постоянка)
Disсоrd:
Kov____
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
maxximum3000
сообщение 12.1.2015, 23:52
Сообщение #33


**

Neophyte
Сообщений: 18
Регистрация: 18.12.2014
Группа: Пользователи
Наличность: 0
Пользователь №: 17.189
Возраст: 24



Цитата(DarkMaster @ 12.1.2015, 21:28) *

Юзай астер.



Спасибо за совет. Буду искать как запустить под WIN 10 )))
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
MAXXIMUM
сообщение 12.10.2017, 12:05
Сообщение #34


**

Neophyte
Сообщений: 21
Регистрация: 4.2.2009
Группа: Пользователи
Наличность: 0
Пользователь №: 11.453
Возраст: 27



Все бы ничего, но есть проблема...

Управляющий скрипт (№14) скорость 10
Код

:start
for #n 1 8 1
if #needstory.#n = 1
set %storyAccept [ #n ] 1
while #needstory.#n = 1
wait 10
end_while
set %storyAccept [ #n ] 0
end_if
end_for
goto start


Часть скрипта, которая обращается (вначале указаны номера строчек) скорость 70:
Код

53:    set #needstory 1
54:    while_not %storyAccept.14 [ 6 ] = 1
55:        wait 10
56:    end_while



И вот такое вот системное сообщение, которое останавливает скрипт:
Цитата

11:00:01 6 (6.txt, 54): while_not - (54): Ошибка! Проверьте правильность скрипта! EAccessViolation Access violation at address 00405184 in module 'uopilot.exe'. Read of address 03FFFFF8
while_not %storyAccept.14 [ 6 ] = 1


Другие скрипты к скрипту 14 в этот момент не обращались.

Что делать? (IMG:style_emoticons/default/sad.gif)



П.с. Комментарии к появлению ошибки:
Влияет очередность первого!(при запуске скриптов) обращения скриптов (1-8) к скрипту 14. очередность первых обращений должна быть строго убывающей. Если к примеру после старта скриптов обратился вначале скрипт №8, а потом скрипт №5 то проблем нет, но если после этого обратится скрипт №6 то появляется такая ошибка (всегда)
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 12.10.2017, 12:47
Сообщение #35


**********

Elder
Сообщений: 3.480
Регистрация: 18.8.2014
Группа: Пользователи
Наличность: 26540
Пользователь №: 16.971
Возраст: 29



Если вкратце, то вы пытаетесь из другого скрипта обратиться к несуществующему элементу массива.
Код
for #i 1 8    // заполняем массив нулями
    set %storyAccept [ #i ] 0
end_for

:start
for #n 1 8 1
    if  #needstory.#n = 1
        set %storyAccept [ #n ] 1
        while #needstory.#n = 1
            wait 10
        end_while
        set %storyAccept [ #n ] 0
    end_if
end_for
goto start
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения

2 страниц V < 1 2
Ответить в эту темуОткрыть новую тему
3 чел. читают эту тему (гостей: 3, скрытых пользователей: 0)
Пользователей: 0

 

- Текстовая версия | Версия для КПК Сейчас: 28.3.2024, 15:33
Designed by Nickostyle