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

2 страниц V  1 2 >  
Ответить в эту темуОткрыть новую тему
> переменная ' ' is not a valid integer value
nykep
сообщение 11.9.2020, 19:37
Сообщение #1


****

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



у меня один скрипт присваивает переменным значение из другого, делает это примерно раз в секунду и делает клик в в эти переменные, может работать 10 часов без проблем, а может выдавать такую ошибку каждые полчаса. Скрипт из которого берутся значения работает всегда и эти переменные описываются сразу на старте, затем findcolor ищет цвет и только при нахождении присваивает этим переменным новые значения, то есть больше они нигде не задействованы - только в "шапке" и в условии после findcolor и по идее всегда имеют определенное целое значение. Есть третий скрипт с задержкой 1 который управляет остальными и в нем при определенном условии есть команда на остановку первых двух скриптов stop_script allex, но она срабатывает довольно редко - раз в несколько часов и даже реже, то есть те два скрипта останавливаются одновременно и вроде бы второй скрипт не должен пытаться что-то считывать с первого. Прописывал кучу всяких условий перед kleft x#, #y дабы быть уверенным что в момент считывания значений из другого скрипта он находится в рабочем состоянии, написал на всякий случай kleft round(#x), round(#y), ничего не помогает. Может быть это заглюк какой то не знаю. Есть ли какой то способ избежать ошибки при выполнении move #x, #y и kleft #x, #y если переменные имеют не подходящие значения для этих команд?
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 12.9.2020, 1:34
Сообщение #2


**********

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



Попробуйте вместо stop_script использовать pause_script.
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
nykep
сообщение 12.9.2020, 2:02
Сообщение #3


****

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



я уже пробовал прямо перед stop_script allex писать pause_script allex, но вроде ошибка опять была и я убрал, че то я уже запарился и не помню что там у меня выскакивало, ну да ладно попробую еще раз. А нельзя написать какое то условие на проверку типа if #x <> null или что-то такое?
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 12.9.2020, 2:06
Сообщение #4


**********

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



Цитата
перед stop_script

Вообще не использовать stop_script.
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
nykep
сообщение 12.9.2020, 2:45
Сообщение #5


****

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



если не использовать stop_script то после resume_script те скрипты продолжат нажимать все не впопад, я однажды включил монитор а у меня скрипт, который должен быть остановлен когда персонаж зашел в город не остановился и пытается выкидывать мои вещи, просто тыкая куда попало, хорошо что там выскакивает окно с подтверждением на выброс и он не попал по кнопке подтвердить (IMG:style_emoticons/default/smile.gif)
Кстати проверил сейчас при выключенном скрипте 0
Код

move round(#x.0), round(#y.0)

двигает в -1 -1 без каких либо ошибок и меня это вполне устраивает, но видимо дело не в этом. Если без округления то выдает ошибку '#x.0' is not a valid integer value, и теперь я припоминаю что в моей ошибке название переменной то и не упоминается просто кавычки ' ' is not a valid integer value , но указывает на строку move round(#x.0), round(#y.0) вот что странно
Вот еще что - первый скрипт периодически останавливает второй около 3 раз в минуту, может ли быть такое что второй скрипт выполняя команду move round(#x.0), round(#y.0) останавливается прямо на ней и поэтому выдает такую ошибку ?
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 12.9.2020, 3:37
Сообщение #6


**********

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



Причина, приводящая к ошибке при использовании stop_script, не была выявлена. Гадать смысла нет. Ответ тот же - не использовать stop_script.
Цитата
если не использовать stop_script то после resume_script те скрипты продолжат нажимать все не впопад

restart_script вместо resume_script.
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
nykep
сообщение 12.9.2020, 3:41
Сообщение #7


****

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



спасибо, попробую
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
nykep
сообщение 12.9.2020, 4:29
Сообщение #8


****

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



возникла проблема - когда первый скрипт ставит на паузу второй в тот момент когда во втором зажата кнопка Е, то отжать ее в первом скрипте с помощью sendex не получается, да что там сендексом, даже пальцем в кнопку не отжимается
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 19.9.2020, 5:04
Сообщение #9


***********

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



1) Вам действительно нужно 2 скирпта? При использовании считывания/записи данных нужно понимать, что для корректной работы нужна синхронизация потоков. Фактически получившаяся ситуация с залипшей клавишей, как раз частный случай подобной проблемы.
2) Если уже слишком много наворочено и исправлять все в разумное русло через чур ресурсоемко, то могу предложить проверять статус клавиш после остановки скрипта через stop_script и отжимать их через вкладку вызвавшую этот stop_script.


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


****

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



да у меня 4 очень больших скрипта, 3 из которых работают постоянно, переделать все в один скрипт у меня не хватит ни сил ни ума, и я не уверен что это то, что мне нужно, например раньше у меня было не 4, а 3 скрипта и мне всегда не очень нравилось как они выполняют свою работу, но после разделения одного скрипта на два и небольших корректировок, время прохождения инста сократилось с 3.5 минут до 2.5, и "качество" прохождения значительно выросло, теперь он лучше зачищает и лучше собирает лут и т д. Дело в том что для меня имеет большое значение именно скорость прохождения и качество зачистки, а этого позволяет добиться одновременная проверка цветов findcolor и поиск картинок findimage в разных скриптах. Как бы там ни было я уже решил этот вопрос с помощью всяких костылей (IMG:style_emoticons/default/smile.gif)

еще возник вопрос - можно ли как то завершить приложение по хэндлу, у меня к примеру 2 одинаковых окна и мне надо завершить лишь одно определенное из них.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 24.9.2020, 1:40
Сообщение #11


***********

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



Через пид можно.
https://uopilot.uokit.com/wiki/index.php?title=WorkwindowPID
будет что-то вроде:
Код
set #pid WorkwindowPID
exec taskkill /PID #pid


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


**********

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



Цитата
одновременная проверка цветов findcolor и поиск картинок findimage в разных скриптах.

Поиск происходит поочереди, что в одном скрипте, что в нескольких.
Цитата
можно ли как то завершить приложение по хэндлу

sendmessage Пример1
Ещё можно используя луа вызвать EndTask.
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
nykep
сообщение 24.9.2020, 7:30
Сообщение #13


****

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



Цитата(cirus @ 24.9.2020, 1:49) *

Поиск происходит поочереди, что в одном скрипте, что в нескольких.

об этом я уже слышал, просто мне нужно чтобы пока один скрипт нажимает куда то мышкой и клавишами со всеми нужным задержками, другой в это время проверял цвета и картинки, всё это делается на ходу и задержка даже в 100 миллисекунд когда он не производит поиск, приводит к тому что он пробегает мимо лута или какого-нибудь ящика, там всё происходит быстро.
спасибо за ответ
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 24.9.2020, 11:22
Сообщение #14


***********

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



Цитата
об этом я уже слышал, просто мне нужно чтобы пока один скрипт нажимает куда то мышкой и клавишами со всеми нужным задержками, другой в это время проверял цвета и картинки, всё это делается на ходу и задержка даже в 100 миллисекунд когда он не производит поиск, приводит к тому что он пробегает мимо лута или какого-нибудь ящика, там всё происходит быстро.

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


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


*****

Journeyman
Сообщений: 497
Регистрация: 19.12.2017
Группа: Пользователи
Наличность: 2383
Пользователь №: 18.746



Цитата(nykep @ 23.9.2020, 21:55) *
завершить приложение по хэндлу

Код
// Ваш код
--lua
require"luaposh";PScode('void',{[[#}
#
ps|where mainWindowHandle -eq 14483740|kill
#
]]})
--endlua
// Ваш код
end_script

Завершит приложение по хэндлу окна 14483740.


--------------------
Для связиИзображение
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 24.9.2020, 13:28
Сообщение #16


***********

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



Цитата
EndTask

Это где и чего?

// Вариант Cirus мне кажется наиболее разумным. Ничего лишнего подключать не требует, быстрый, паразитных окон не вылазит.


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


**********

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



Цитата
EndTask
Это где и чего?

winapi.
Код
--lua
local ffi = require("ffi")
ffi.cdef[[ bool EndTask(int hWnd, bool fShutDown, bool fForce); ]]

ffi.C.EndTask(workwindow(), false, true)   -- закрыть рабочее окно
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Fors1k
сообщение 24.9.2020, 14:08
Сообщение #18


*****

Journeyman
Сообщений: 497
Регистрация: 19.12.2017
Группа: Пользователи
Наличность: 2383
Пользователь №: 18.746



Цитата(DarkMaster @ 24.9.2020, 13:28) *

// Вариант Cirus мне кажется наиболее разумным. Ничего лишнего подключать не требует, быстрый, паразитных окон не вылазит.

sendmessage?
Каких окон?


--------------------
Для связиИзображение
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 24.9.2020, 15:34
Сообщение #19


***********

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



Цитата
winapi.

мля) я думал очередные полускрытые фичи luajit. Типа меток. Luajit из стейбл ветки типа 5.1, а метки пашут.
Цитата
sendmessage?

Ну или postmessage в зависимости от требований.
Цитата
Каких окон?

вызов taskkill в моем варианте скорее всего вызовет появление консольки. можно убрать через vbs, но зачем этот огород когда есть готовая функция?


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


*****

Journeyman
Сообщений: 497
Регистрация: 19.12.2017
Группа: Пользователи
Наличность: 2383
Пользователь №: 18.746



Цитата(DarkMaster @ 24.9.2020, 15:34) *

вызов taskkill в моем варианте скорее всего вызовет появление консольки.

А, это да. Но все равно taskkill по хэндлу не закроет.
Цитата(DarkMaster @ 24.9.2020, 15:34) *

Ну или postmessage в зависимости от требований.
есть готовая функция

Эта готовая функция не подойдет, так как "An application can prompt the user for confirmation"(с)MSDN.
Вот EndTask - да, сработает как надо.

Сообщение отредактировал Fors1k - 24.9.2020, 16:06


--------------------
Для связиИзображение
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения

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

 

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