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

 
Ответить в эту темуОткрыть новую тему
> Sendex.Как прописать правильно? Жмет два раза, Помогите проверить скрипт.Спасибо
bambuk12
сообщение 10.3.2023, 23:37
Сообщение #1


*

Registred
Сообщений: 7
Регистрация: 10.3.2023
Группа: Пользователи
Наличность: 0
Пользователь №: 20.499
Возраст: 27



Столкнулась с такой проблемой:
вместо того, чтобы один раз зажать две клавиши, скрипт делает паузу и ещё раз нажимает.
интересует также вопрос, нужно ли обязательно добавлять sendex после нажатия клавиш?

Сценарий для скрипта:
1.подождать 1с
2. зажать альт и два (одновременно)
3.подождать 1с
4. зажать и отпустить аль и кью
5.подождать 1с
6. нажать кнопку со стрелкой вниз
7. зациклить все действия.

Сам скрипт:

repeat 11
wait 1000
sendex @{2}
wait 1000
sendex
sendex @{q}
wait 1s
sendex
send down
wait 1s
End_Repeat
end_script


Ставила вэйт в разных местах и убирала сендекс и обратно возвращала.Ничего не помогает.

Очень надеюсь на вашу помощь!
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
nykep
сообщение 11.3.2023, 1:50
Сообщение #2


****

Apprentice
Сообщений: 233
Регистрация: 1.9.2012
Группа: Пользователи
Наличность: 1195
Пользователь №: 15.246
Возраст: 25



у меня этот скрипт вроде работает. Просто sendex без клавиш отжимает зажатые клавиши если вы использовали sendex_down. Попробуйте так
Код
repeat 11
    wait 1s
    sendex_down @
    wait 100
    sendex 2
    wait 1s
    sendex q
    wait 1s
    sendex
    wait 100
    sendex {down}
end_repeat
end_script

Хочу обратить ваше внимание на то, что нажатие прописанное в скрипте срабатывает не в 100% случаев. Если срабатывание критично лучше использовать какие то условия или циклы чтоб удостовериться что он нажал нужную кнопку. В случае с alt shift ctrl лучше продублировать их зажатие несколько раз.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
bambuk12
сообщение 11.3.2023, 2:33
Сообщение #3


*

Registred
Сообщений: 7
Регистрация: 10.3.2023
Группа: Пользователи
Наличность: 0
Пользователь №: 20.499
Возраст: 27



Цитата(nykep @ 11.3.2023, 4:50) *

у меня этот скрипт вроде работает. Просто sendex без клавиш отжимает зажатые клавиши если вы использовали sendex_down. Попробуйте так
Код
repeat 11
    wait 1s
    sendex_down @
    wait 100
    sendex 2
    wait 1s
    sendex q
    wait 1s
    sendex
    wait 100
    sendex {down}
end_repeat
end_script

Хочу обратить ваше внимание на то, что нажатие прописанное в скрипте срабатывает не в 100% случаев. Если срабатывание критично лучше использовать какие то условия или циклы чтоб удостовериться что он нажал нужную кнопку. В случае с alt shift ctrl лучше продублировать их зажатие несколько раз.



я уже третий день мучаюсь,
пока остановилась на этом:

wait 2000
repeat 11
sendex_down @{2}
wait 2000
sendex_up @{2}
wait 1000
sendex_down @{q}
wait 2000
sendex_up @{q}
wait 2000
send down
wait 1000
end_repeat
end_script

Но это не работает, оно нажимает по несколько раз альт+2 и альт+q , а точнее три раза.
а потом или переходит дальше, но чаще всего остается в этом же окне.

Кнопка вниз то работает, то нет.
Не могу понять в чем дело.

Кнопку вниз писала по-всякому:
send217 down//потом всё глючить стало
send down
send {down}
send {Down}
sendex {down}
Не помогает.


Спасибо, что уделили мне время, я думала, форум мёртвый.
Сейчас ваш вариант попробую)

Цитата(nykep @ 11.3.2023, 4:50) *

у меня этот скрипт вроде работает. Просто sendex без клавиш отжимает зажатые клавиши если вы использовали sendex_down. Попробуйте так
Код
repeat 11
    wait 1s
    sendex_down @
    wait 100
    sendex 2
    wait 1s
    sendex q
    wait 1s
    sendex
    wait 100
    sendex {down}
end_repeat
end_script

Хочу обратить ваше внимание на то, что нажатие прописанное в скрипте срабатывает не в 100% случаев. Если срабатывание критично лучше использовать какие то условия или циклы чтоб удостовериться что он нажал нужную кнопку. В случае с alt shift ctrl лучше продублировать их зажатие несколько раз.



Попробовала.
Правда, я немного усовершенствовала, т.к.мне нужно было сначала нажать альт+2, потом отпустить, пауза и нажать альт+q , и ещё дальше стрелку вниз.

Получилось вот так:
repeat 11
wait 1s
sendex_down @
wait 100
sendex 2
wait 1s
sendex_up

sendex_down @
wait 1s
sendex q
wait 100
sendex_up

sendex {down}
end_repeat
end_script

Но оно начинает лагать, создает баг, при котором как будто альт и 2 я нажимаю очень много раз (моргает вот так кнопка плэй), потом также альт и q мигает дофига раз.


Цитата(nykep @ 11.3.2023, 4:50) *

у меня этот скрипт вроде работает. Просто sendex без клавиш отжимает зажатые клавиши если вы использовали sendex_down. Попробуйте так
Код
repeat 11
    wait 1s
    sendex_down @
    wait 100
    sendex 2
    wait 1s
    sendex q
    wait 1s
    sendex
    wait 100
    sendex {down}
end_repeat
end_script

Хочу обратить ваше внимание на то, что нажатие прописанное в скрипте срабатывает не в 100% случаев. Если срабатывание критично лучше использовать какие то условия или циклы чтоб удостовериться что он нажал нужную кнопку. В случае с alt shift ctrl лучше продублировать их зажатие несколько раз.



Оно по моему последнему скрипту делает так:
пауза
альт+2
пауза
альт+q
пауза
альт+2
пауза
альт+q
альт+2
пауза
альт+q
стрелка вниз

и так уже 5 часов, не могу понять почему так...
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
nykep
сообщение 11.3.2023, 2:39
Сообщение #4


****

Apprentice
Сообщений: 233
Регистрация: 1.9.2012
Группа: Пользователи
Наличность: 1195
Пользователь №: 15.246
Возраст: 25



насколько я помню такое проскакивание у меня было если нет привязки к окну. А где вы это используете?
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 11.3.2023, 7:30
Сообщение #5


***********

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



Цитата
wait 2000
repeat 11
sendex_down @{2}
wait 2000
sendex_up @{2}
wait 1000
sendex_down @{q}
wait 2000
sendex_up @{q}
wait 2000
send down
wait 1000
end_repeat
end_script

Но это не работает, оно нажимает по несколько раз альт+2 и альт+q , а точнее три раза.
а потом или переходит дальше, но чаще всего остается в этом же окне.

Ваши дублинажатий напрямую следуют из кода. Вы нажимаете, например, 2 и держите 2 секунды и только потом отжимаете. Соответственно и получается несколько нажатий. Попробуйте на клавиатуре руками нажать и подержать клавишу несколько секунд - тут точно тоже самое.

Цитата
repeat 11
wait 1s
sendex_down @
wait 100
sendex 2
wait 1s
sendex_up

sendex_down @
wait 1s
sendex q
wait 100
sendex_up

sendex {down}
end_repeat
end_script

Но оно начинает лагать, создает баг, при котором как будто альт и 2 я нажимаю очень много раз (моргает вот так кнопка плэй), потом также альт и q мигает дофига раз.

Аналогичная проблема.

Переходите сразу на lua. Не мучайте себя. Там чуть иной синтаксис, новичку может показаться сложнее, но на практике за счет логичности и предсказуемости результата, писать на нем намного проще.

Несколько сложно с вашим описанием схемы работы скрипта:
Сценарий для скрипта:
1.подождать 1с
2. зажать альт и два (одновременно)
3.подождать 1с
4. зажать и отпустить аль и кью
-- на этом этапе мы получаем не отжатый альт, при этом пытаемся зажать его еще раз
-- еще и дожав q. Т.е. у нас получается зажатой комбинация клаваиш alt+2+q
-- а при отпускании альта и q у нас остается зажатой двойка и вообще нигде по коду
-- двойка далее не отжимается.
5.подождать 1с
6. нажать кнопку со стрелкой вниз
7. зациклить все действия.


Далее исключительно мои додумки того, что вы хотели на самом деле, но ошиблись в написании.
Код

--lua
for i = 1, 11 do
    wait(1000)
    sendex("@{2}")
    wait(1000)
    sendex("@{q}")
    wait(1000)
    sendex("{down}")
end


Если смысл иной, то уточните, что именно имели ввиду в плане действий. Так же учтите разницу между "нажать" и "зажать". Обычно когда пишут "нажать", то подразумевают, что клавиша будет сразу же отжата, а "зажать" - клавишу нужно нажать и держать отпустив через некоторое время, зачастую через несколько строк кода.


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


*

Registred
Сообщений: 7
Регистрация: 10.3.2023
Группа: Пользователи
Наличность: 0
Пользователь №: 20.499
Возраст: 27



Цитата(DarkMaster @ 11.3.2023, 10:30) *

Ваши дублинажатий напрямую следуют из кода. Вы нажимаете, например, 2 и держите 2 секунды и только потом отжимаете. Соответственно и получается несколько нажатий. Попробуйте на клавиатуре руками нажать и подержать клавишу несколько секунд - тут точно тоже самое.
Аналогичная проблема.

Переходите сразу на lua. Не мучайте себя. Там чуть иной синтаксис, новичку может показаться сложнее, но на практике за счет логичности и предсказуемости результата, писать на нем намного проще.

Несколько сложно с вашим описанием схемы работы скрипта:
Сценарий для скрипта:
1.подождать 1с
2. зажать альт и два (одновременно)
3.подождать 1с
4. зажать и отпустить аль и кью
-- на этом этапе мы получаем не отжатый альт, при этом пытаемся зажать его еще раз
-- еще и дожав q. Т.е. у нас получается зажатой комбинация клаваиш alt+2+q
-- а при отпускании альта и q у нас остается зажатой двойка и вообще нигде по коду
-- двойка далее не отжимается.
5.подождать 1с
6. нажать кнопку со стрелкой вниз
7. зациклить все действия.
Далее исключительно мои додумки того, что вы хотели на самом деле, но ошиблись в написании.
Код

--lua
for i = 1, 11 do
    wait(1000)
    sendex("@{2}")
    wait(1000)
    sendex("@{q}")
    wait(1000)
    sendex("{down}")
end


Если смысл иной, то уточните, что именно имели ввиду в плане действий. Так же учтите разницу между "нажать" и "зажать". Обычно когда пишут "нажать", то подразумевают, что клавиша будет сразу же отжата, а "зажать" - клавишу нужно нажать и держать отпустив через некоторое время, зачастую через несколько строк кода.



Огромное вам спасибо!
Заработало)

До этого, когда только программу скачала у меня всё работало, а потом вот двойное нажатие было, даже тройное:
надо было:
альт+2
альт+Q
стрелка вниз

а было:
альт+2
альт+Q
альт+2
альт+Q
альт+2
альт+Q
стрелка вниз


Я там и с зажатием и отжатием пробовала (а сначала без него был код) вот, а потом уже не знала, что попробовать.
И в скобках квадратных писала и без.
И со скобками Луа (как у вас сейчас было). Но у меня тогда не было:
for i = 1, 11 do

так что я это от безысходности.

А без Луа не получится, да?
Если допустим мой код отредактировать?
Я вообще думала Пилот работает сразу на Луа, а надо было прописать оказывается это через двойное тире.




Цитата(DarkMaster @ 11.3.2023, 10:30) *

Ваши дублинажатий напрямую следуют из кода. Вы нажимаете, например, 2 и держите 2 секунды и только потом отжимаете. Соответственно и получается несколько нажатий. Попробуйте на клавиатуре руками нажать и подержать клавишу несколько секунд - тут точно тоже самое.
Аналогичная проблема.

Переходите сразу на lua. Не мучайте себя. Там чуть иной синтаксис, новичку может показаться сложнее, но на практике за счет логичности и предсказуемости результата, писать на нем намного проще.

Несколько сложно с вашим описанием схемы работы скрипта:
Сценарий для скрипта:
1.подождать 1с
2. зажать альт и два (одновременно)
3.подождать 1с
4. зажать и отпустить аль и кью
-- на этом этапе мы получаем не отжатый альт, при этом пытаемся зажать его еще раз
-- еще и дожав q. Т.е. у нас получается зажатой комбинация клаваиш alt+2+q
-- а при отпускании альта и q у нас остается зажатой двойка и вообще нигде по коду
-- двойка далее не отжимается.
5.подождать 1с
6. нажать кнопку со стрелкой вниз
7. зациклить все действия.
Далее исключительно мои додумки того, что вы хотели на самом деле, но ошиблись в написании.
Код

--lua
for i = 1, 11 do
    wait(1000)
    sendex("@{2}")
    wait(1000)
    sendex("@{q}")
    wait(1000)
    sendex("{down}")
end


Если смысл иной, то уточните, что именно имели ввиду в плане действий. Так же учтите разницу между "нажать" и "зажать". Обычно когда пишут "нажать", то подразумевают, что клавиша будет сразу же отжата, а "зажать" - клавишу нужно нажать и держать отпустив через некоторое время, зачастую через несколько строк кода.


А вот тут можете указать на ошибку?
repeat 11
wait 1000
sendex @{2}
wait 1000
sendex
sendex @{q}
wait 1s
sendex
send down
wait 1s
End_Repeat
end_script

П.С. я просто действительно новичок и это мой первый код.
Я в прошлом году заканчивала курсы по html и css,
но это конечно, же совсем другое. (я по сайтам больше), а тут кликер.




Цитата(DarkMaster @ 11.3.2023, 10:30) *

Ваши дублинажатий напрямую следуют из кода. Вы нажимаете, например, 2 и держите 2 секунды и только потом отжимаете. Соответственно и получается несколько нажатий. Попробуйте на клавиатуре руками нажать и подержать клавишу несколько секунд - тут точно тоже самое.
Аналогичная проблема.

Переходите сразу на lua. Не мучайте себя. Там чуть иной синтаксис, новичку может показаться сложнее, но на практике за счет логичности и предсказуемости результата, писать на нем намного проще.

Несколько сложно с вашим описанием схемы работы скрипта:
Сценарий для скрипта:
1.подождать 1с
2. зажать альт и два (одновременно)
3.подождать 1с
4. зажать и отпустить аль и кью
-- на этом этапе мы получаем не отжатый альт, при этом пытаемся зажать его еще раз
-- еще и дожав q. Т.е. у нас получается зажатой комбинация клаваиш alt+2+q
-- а при отпускании альта и q у нас остается зажатой двойка и вообще нигде по коду
-- двойка далее не отжимается.
5.подождать 1с
6. нажать кнопку со стрелкой вниз
7. зациклить все действия.
Далее исключительно мои додумки того, что вы хотели на самом деле, но ошиблись в написании.
Код

--lua
for i = 1, 11 do
    wait(1000)
    sendex("@{2}")
    wait(1000)
    sendex("@{q}")
    wait(1000)
    sendex("{down}")
end


Если смысл иной, то уточните, что именно имели ввиду в плане действий. Так же учтите разницу между "нажать" и "зажать". Обычно когда пишут "нажать", то подразумевают, что клавиша будет сразу же отжата, а "зажать" - клавишу нужно нажать и держать отпустив через некоторое время, зачастую через несколько строк кода.



А ещё хотела, чтоб вы мне объяснили пожалуйста, что такое:
for i = 1, 11 do

это типа рипит=повтор, да?
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 12.3.2023, 0:39
Сообщение #7


***********

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



Без луа можно, работать будет, смысла ноль. Это будет иметь смысл исключительно в том случае, если у вас есть какой-то большой скрипт на старом синтаксисе и вам все лишь нужно дополнить его этим кусочком. Если есть еще какой-то небольшой участок кода, то разумнее привести его к луа, нежели приводить луа к старом синтаксису.
Цитата
А вот тут можете указать на ошибку?
repeat 11
wait 1000
sendex @{2}
wait 1000
sendex
sendex @{q}
wait 1s
sendex
send down
wait 1s
End_Repeat
end_script

А что собственно с ним не так?
Ну бросается в глаза два sendex без фактического указания клавиши. А так же нажатие через send (не sendex) клавиши down, при этом down указан без фигурных скобок. Для многосимвольных названий клавиш требуется указывать фигурные скобки иначе он может нажать четыре клавиши d, o, w, n.

Цитата
А ещё хотела, чтоб вы мне объяснили пожалуйста, что такое:
for i = 1, 11 do

это типа рипит=повтор, да?


Формально да, по факту это цикл с увелечением переменной i на 1 до тех пор пока она не станет больше 11. Отличия от репита:
1) вы можете задать начально значение i таким, как вам необходимо. Например, 12.5.
2) аналогично вы можете задать конечное значение: в данном примере оно равно 11, но может быть любым числом, например 144.0978.
3) i - является локальной переменной и ее видно внутри цикла. Имя может быть иным, но начинаться должно с букв a-zA-Z либо символа подчеркивания _, допускается использование цифр (кроме первого символа).
4) внутри цикла вы можете использовать заданную переменную для каких либо целей. Очень часто она используется для перебора элементов массива.
5) Можно указать шаг отличный от 1. По умолчанию шаг равен 1 и указание его не обязательно.
Синтаксис выглядит следующим образом:

Код

for name = стартовое_значение, конечное_значение, шаг do
    -- ваш код
end


Код

--lua
for my_counter = 1, 9 do
    log(my_counter)
end

Код

--lua
for my_counter = 3, 8, 2 do
    log(my_counter)
end


Сообщение отредактировал DarkMaster - 12.3.2023, 0:50


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


*

Registred
Сообщений: 7
Регистрация: 10.3.2023
Группа: Пользователи
Наличность: 0
Пользователь №: 20.499
Возраст: 27



Цитата(DarkMaster @ 12.3.2023, 3:39) *

Без луа можно, работать будет, смысла ноль. Это будет иметь смысл исключительно в том случае, если у вас есть какой-то большой скрипт на старом синтаксисе и вам все лишь нужно дополнить его этим кусочком. Если есть еще какой-то небольшой участок кода, то разумнее привести его к луа, нежели приводить луа к старом синтаксису.
А что собственно с ним не так?
Ну бросается в глаза два sendex без фактического указания клавиши. А так же нажатие через send (не sendex) клавиши down, при этом down указан без фигурных скобок. Для многосимвольных названий клавиш требуется указывать фигурные скобки иначе он может нажать четыре клавиши d, o, w, n.
Формально да, по факту это цикл с увелечением переменной i на 1 до тех пор пока она не станет больше 11. Отличия от репита:
1) вы можете задать начально значение i таким, как вам необходимо. Например, 12.5.
2) аналогично вы можете задать конечное значение: в данном примере оно равно 11, но может быть любым числом, например 144.0978.
3) i - является локальной переменной и ее видно внутри цикла. Имя может быть иным, но начинаться должно с букв a-zA-Z либо символа подчеркивания _, допускается использование цифр (кроме первого символа).
4) внутри цикла вы можете использовать заданную переменную для каких либо целей. Очень часто она используется для перебора элементов массива.
5) Можно указать шаг отличный от 1. По умолчанию шаг равен 1 и указание его не обязательно.
Синтаксис выглядит следующим образом:

Код

for name = стартовое_значение, конечное_значение, шаг do
    -- ваш код
end


Код

--lua
for my_counter = 1, 9 do
    log(my_counter)
end

Код

--lua
for my_counter = 3, 8, 2 do
    log(my_counter)
end




Спасибо!
Два раза sendex я писала, чтобы снять нажатие с клавиш. Я и убирала его (было только один раз написано) и возвращала. И паузу ставила между ними. Ноль реакции. Точнее, два раза тыкалось.

Насчет sendex, я как поняла, раз начал везде его писать, тогда и заканчивать им?
т.е. если вначале sendex стоял, а потом мне надо какую-то клавишу тыкнуть, то его ещё раз пишем (а send не пишем), верно?

send down писала и со скобками и без них, иногда работало, иногда нет.


Сейчас попробовала скорректировать скрипт после ваших замечаний. Всё сработало. Но не всё так просто, как кажется.
Я переустанавливала программу.

Т.е.до этого видимо настройки поправила и вот так криво работало. по три раза тыкалось.


Теперь скрипт выглядит так:

repeat 12
wait 2000
sendex @{2}
wait 3000
sendex @{q}
wait 2000
sendex {Down}
End_Repeat
end_script



1. Ещё хотела бы сразу спросить у вас, может подскажете как прописать рандом и возвращение к первому шагу?
Я вот так вижу (на мой неопытный взгляд). Если что, поправьте.

:0 //так вроде шаг обозначается
repeat 12
wait 1500 + random(500)
sendex @{2}
wait 2500 + random(500)
sendex @{q}
wait 1300 + random(500)
sendex {Down}
End_Repeat
sendex {Enter} //добавила ещё ентер. он нужен мне.
goto 0 //возврат к шагу
end_script //концовка скрипта мне не нужна, так что его можно убрать, думаю.


2.В вашем скрипте тоже интересно как будет выглядеть предыдущий шаг.
Думаю примерно так (но скорее всего, я точно где-то ошиблась):
--lua
:1
for i = 1, 12 do
wait(1000) random (500)
sendex("@{2}")
wait(1000) random (500)
sendex("@{q}")
wait(1000) random (500)
sendex("{down}")
end
sendex ("{Enter}")
goto 1

3. А также, хотела бы узнать, можно ли запустить кликер и свернуть окно, где этот кликер работает?

Спасибо вам большое за помощь и советы, а также объяснения!
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 12.3.2023, 4:03
Сообщение #9


***********

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



Цитата
Два раза sendex я писала, чтобы снять нажатие с клавиш. Я и убирала его (было только один раз написано) и возвращала. И паузу ставила между ними. Ноль реакции. Точнее, два раза тыкалось.

Насчет sendex, я как поняла, раз начал везде его писать, тогда и заканчивать им?

sendex имеет возможность зажать альт/шифт/контрол и не отжимать его. Это используется, если вам нужно сделать какие-то относительно сложные действия. Например, вам нужно с зажатым шифтом провести мышкой по лабиринту. Если вы делаете простое нажатие с этими клавишами типа:
sendex @{y}
все сразу же отожмется, дополнительных вызовов не требуется.

Цитата
:0 //так вроде шаг обозначается
repeat 12
wait 1500 + random(500)
sendex @{2}
wait 2500 + random(500)
sendex @{q}
wait 1300 + random(500)
sendex {Down}
End_Repeat
sendex {Enter} //добавила ещё ентер. он нужен мне.
goto 0 //возврат к шагу
end_script //концовка скрипта мне не нужна, так что его можно убрать, думаю.

Суть верна но от goto лучше уходить. Это ведет к сложности восприятия кода человеком, путанице и в целом неправильному мышлению при построении скрипта. Конкретно в вашем случае это выглядит адекватно, но это примерно, как увидеть, что маленький ребеной стреляет из пистолета, в этот раз даже в сторону мишени и даже попал.

Цитата
--lua
:1
for i = 1, 12 do
wait(1000) random (500)
sendex("@{2}")
wait(1000) random (500)
sendex("@{q}")
wait(1000) random (500)
sendex("{down}")
end
sendex ("{Enter}")
goto 1

В продолжение темы goto. Я думал написать пример с goto, но конфуз случился в том, что я не вспомнил синтаксис в lua для goto. При этом на lua я пишу достаточно много. Не стоит его использовать.
Код

--lua
while 1 do -- бесконечный цикл
    for i = 1, 12 do
        wait(1000 + random (500))
        sendex("@{2}")
        wait(1000 + random (500))
        sendex("@{q}")
        wait(1000 + random (5000))
        sendex("{down}")
    end
    sendex ("{Enter}")
end

По поводу while 1 do. Более логичная для человека конструкция была бы что-то вроде while 1 == 1 do. Тем не менее для lua истина это все что не равно nil и не равно false. Все выражения типа ==, <=, >=, ~=(не равно) на самом деле возвращают true или false. Для понимания операции со знаками на самом деле что-то вроде:
while (123 == 123) do
преобразуется в
while true do
т.е. будет вычислено значение внутри скобок, потом подставлено/

Цитата
3. А также, хотела бы узнать, можно ли запустить кликер и свернуть окно, где этот кликер работает?

Окно с пилотом можно спокойно свернуть. Целевое окно можно свернуть с некоторыми ограничениями по операторам. sendex отправляет только в активное окно. send и send217 могут работать с перекрытыми окнами. При этом нужно понимать, что в зависимости от приложения может быть разное поведение. Какое-то приложение будет спокойно съедать нажатия в любом состоянии, какое-то допустимо только перекрыть, но не сворачивать, а какому-то вообще активность окна должна быть. Только тестить, т.к. это зависит от приложения, а не от пилота.


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


*

Registred
Сообщений: 7
Регистрация: 10.3.2023
Группа: Пользователи
Наличность: 0
Пользователь №: 20.499
Возраст: 27



Спасибо, что объяснили. Не знала, что sendex сам отожмётся.


А если я хочу свернуть активное окно, где работает пилот, то мне нужно будет теперь sendex заменить на send ?
Под активным окном я понимаю не окно программы Пилот, а окно той программы ради которой он и работает(в моём случае, это веладка в гугл хром), к примеру для игры. Т.е.окно игры я теперь не смогу свернуть?


И вот этот скрипт верный? Особенно интересует рандом: правильно ли я его прописала?

:0 //так вроде шаг обозначается
repeat 12
wait 1500 + random(500)
sendex @{2}
wait 2500 + random(500)
sendex @{q}
wait 1300 + random(500)
sendex {Down}
End_Repeat
sendex {Enter} //добавила ещё ентер. он нужен мне.
goto 0 //возврат к шагу
end_script //концовка скрипта мне не нужна, так что его можно убрать, думаю.


Скажу сразу: больше никаких модификаций не требуется и не будет никакого большого кода, мне надо только этот кусочек, чтоб работал и всё. Это не часть кода. Это конечный вариант.


А вот еще хотела спросить: в вашем скрипте, выходит возврата к первому шагу нет?

Код

--lua
while 1 do -- бесконечный цикл
    for i = 1, 12 do
        wait(1000 + random (500))
        sendex("@{2}")
        wait(1000 + random (500))
        sendex("@{q}")
        wait(1000 + random (5000))
        sendex("{down}")
    end
    sendex ("{Enter}")
end
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
nykep
сообщение 13.3.2023, 22:59
Сообщение #11


****

Apprentice
Сообщений: 233
Регистрация: 1.9.2012
Группа: Пользователи
Наличность: 1195
Пользователь №: 15.246
Возраст: 25



Код

while 1 //бесконечный возврат к этому шагу
    repeat 12
        wait 1500 + random(500) //рандом правильный
        sendex @{2}
        wait 2500 + random(500)
        sendex @{q}
        wait 1300 + random(500)
        sendex {Down}
    End_Repeat
    sendex {Enter}
end_while

пробуйте send, но может не работать
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 14.3.2023, 6:53
Сообщение #12


***********

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



У начаная с каких-то версий хром сделал принудильно вытаскивание окна на передний план при кликах мышкой, возможно аналогичный эффект будет при send.
Цитата
А вот еще хотела спросить: в вашем скрипте, выходит возврата к первому шагу нет?

Там есть вечный цикл:
while 1 do

end
он выполняет эту роль.

Сообщение отредактировал DarkMaster - 14.3.2023, 7:12


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


**

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



1. Приветствую. Возникла проблема с sendex. Когда тестирую вручную через Goto для перемещения в нужную часть в большом скрипте -работоспособность написания в чатик сообщения по типу
set $text What you need stupid boy
sendex /local $text

то все прописывает правильно.

Но когда ему в процессе работы скрипта надо написать, он почему-то пишет вместо вот этой палки "/" перед словом local пишет палку вот такую "|" за счет чего не активируется нужная вкладка чата... Вообще не понимаю как такое может быть, многочасовые раздумья и тесты с раскладками никчему не привели. Может быть у меня не отжимается какая-то клавиша когда скрипт подходит к этому моменту? Но вроде ничего особо не зажимается чтоб отжимать потом. Баг?

2. Почему нужно уходить от Goto?
Я когда в процессе обучения познакомился с ним был в восторге. Какой аналог можно использовать вместо него да и зачем? proc что-ли? по сути разница только визуальная. Да и Gosub отличный с возможностью вернуться куда надо. Например когда надо написать в чатик из тела скрипта выкидывается рандом 1-10, в зависимости от этого выбирается сообщение, а сами сообщения и чек какой рандом выпал находятся в жопе скрипта чтоб не мешалось в основном теле, т.к постоянно редактируется и без того большое.
Какая в lua замена есть?
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 1.4.2023, 15:56
Сообщение #14


***********

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



1) возможно включена друга раскладка клавиатуры. sendex зависим от той раскладки которую вы используете в приложении. См ените ее на англ или русский. Так же были подобные приколы в зависимости от раскладки в пилоте.
2) Proc, gosub, while, for, repeat, break. Тут нужно понимать, что сама логика программы будет строиться чуть иначе. Потому что код с goto нечитаемый. Как только вы напишите хотя бы 200-300 строк вы уже не будете понимать, что там происходит в этой лапше и почему оно идет не туда куда надо и что со всем этим делать.
В lua основная замена - function. Полноценная реализация функций то, что в какой-то мере было реализовано в gosub и proc. При это очень удобно бывает прерывать функцию через return при необходимости сделать какую-то более широкую логику. Ну и while, for, repeat, break никто не отменял. goto в luajit есть. Даже работает. Использовать не нужно ровно по тем же причинам.
Вообще в свое время я полностью отказался от goto и не жалею. Это поставило на место очень многие вещи и струтурировало код. Я могу сейчас написать очень много пространных речей, но проблема в том, чтобы понять все это нужен будет опыт написания. Причем не какие-то сухие знания либо уровень интеллекта, а тупо опыт. Вам будет достаточно наступить на пару граблей. Просто послушайте совета от всего сердца и с самыми добрыми намерениями - не используйте его никогда.
// А теперь вредные советы и задачи повышенной сложности со зведочкой. Вообще в современном мире есть одно оправдание использования goto - это прерывание нескольких вложенных циклов. Что-то типа:
Код
while
    for
        if ...
            goto break_while
        end
        тут какой-то код_1. Задача не выполнить его при if
    end
    тут какой-то код_2. Задача не выполнить его при if
end
::break_while

Наличие код_1 или код_2 в данном случае обязательно. Но даже тут можно обойтиесь без goto. Если все это выкинуть в отдельную функцию, то прервать можно использовав return вместо goto.

Сообщение отредактировал DarkMaster - 1.4.2023, 16:25


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


**

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



Цитата(DarkMaster @ 1.4.2023, 15:56) *

1) возможно включена друга раскладка клавиатуры. sendex зависим от той раскладки которую вы используете в приложении. См ените ее на англ или русский. Так же были подобные приколы в зависимости от раскладки в пилоте.
2) Proc, gosub, while, for, repeat, break. Тут нужно понимать, что сама логика программы будет строиться чуть иначе. Потому что код с goto нечитаемый. Как только вы напишите хотя бы 200-300 строк вы уже не будете понимать, что там происходит в этой лапше и почему оно идет не туда куда надо и что со всем этим делать.
В lua основная замена - function. Полноценная реализация функций то, что в какой-то мере было реализовано в gosub и proc. При это очень удобно бывает прерывать функцию через return при необходимости сделать какую-то более широкую логику. Ну и while, for, repeat, break никто не отменял. goto в luajit есть. Даже работает. Использовать не нужно ровно по тем же причинам.
Вообще в свое время я полностью отказался от goto и не жалею. Это поставило на место очень многие вещи и струтурировало код. Я могу сейчас написать очень много пространных речей, но проблема в том, чтобы понять все это нужен будет опыт написания. Причем не какие-то сухие знания либо уровень интеллекта, а тупо опыт. Вам будет достаточно наступить на пару граблей. Просто послушайте совета от всего сердца и с самыми добрыми намерениями - не используйте его никогда.


Спасибо, оязательно прислушаюсь, вероятно вы правы. Мистика, но сегодня я впервые в коде 1200 строк запустался с гото. Столько всего там нужно сделать при самых самых разных обстоятельствах. Пытаясь это реализовать, готов становится все больше и больше по типу если #f = 1 -- goto kek, #r = 1 goto kek2...
а внутри готов тоже самое
потом тестишь и все это листаешь часами фиксишь...
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения

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

 

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