Помощь - Поиск - Пользователи - Календарь
Полная версия: Ошибка Error while creating lua virtual machine
UoKit.com Форумы > Кликер > UO Pilot
Yassia
Ошибка при старте скрипта выскакивает сообщением. Как можно решить проблему создания этой VM?
Yassia
Вроде, проблема решена. Стояла 2.39 night версия, скачал просто 2.39 - проблема исчезла сама собой.
DarkMaster
Цитата
Ошибка при старте скрипта выскакивает сообщением. Как можно решить проблему создания этой VM?

Дллку ему луа нужно - лежит рядом на сайте.
lICH
Цитата(DarkMaster @ 11.10.2017, 13:38) *

Дллку ему луа нужно - лежит рядом на сайте.

файл Луа.длл ? а куда его закинуть? у меня такая же ошибка на версии 2.40.
DarkMaster
рядом с exe пилота
cirus
Почему бы вообще не добавить эту длл в экзешник? При запуске пилота проверять наличие длл в папке, если нет распаковать.
Или хоть напишите что длл обязательно нужна, в теме с новой версией и у Кнайта на странице.
Не то скоро это будет самый часто задаваемый вопрос.
WKnight
fixed
Warstone
Не фиксед. Переодически появляется минуты через 3 работы скрипта.
v2.40d b010
DarkMaster
Цитата
Не фиксед. Переодически появляется минуты через 3 работы скрипта.
v2.40d b010

Нестабильную ночную сборку качал?
Код скрипта? У меня есть скрипт который работает 24/7, подобного поведения не замечено.
Warstone
На стабильной не работало что-то... Кажется кнопки или он тупо выбивал ошибку не помню.
Исходный код
set linedelay 0
showwindow workwindow

set %coords [1 1] 819
set %coords [1 2] 1233
set %coords [2 1] 963
set %coords [2 2] 1275
set %coords [3 1] 1387
set %coords [3 2] 1279

while 1 = 1
call is_waiting_input %coords
if $is_waiting_input = 1
call loop_once
if $loop_once = 1
wait 250
else
wait 400
end_if
end_if
end_while

proc loop_once
set $result 1
call is_waiting_1_w
if $is_waiting_1_w = 0
call is_waiting_2_q
if $is_waiting_2_q = 0
call is_waiting_3_d
if $is_waiting_3_d = 0
call is_waiting_4_a
if $is_waiting_4_a = 0
call is_waiting_5_s
if $is_waiting_5_s = 0
call is_waiting_6_x
if $is_waiting_6_x = 0
call is_waiting_7_z
if $is_waiting_7_z = 0
call is_waiting_8_e
if $is_waiting_8_e = 0
call is_waiting_9_c
if $is_waiting_9_c = 9
set $result 0
end_if
end_if
end_if
end_if
end_if
end_if
end_if
end_if
end_if
end_proc

proc is_waiting_input %coords

set $result 1
set #i 1
while #i < 2
set #x %coords [#i 1]
set #y %coords [#i 2]

if_not #x, #y 16777215
set $result 0
break
end_if

set #i #i + 1
end_while
end_proc

proc is_waiting_1_w
if 2007, 1201 16777215
set $result 1
send217_down w
wait 150
send217_up w
else
set $result 0
end_if
end_proc

proc is_waiting_2_q
if 1980, 1234 16777215
set $result 1
send217_down q
wait 150
send217_up q
else
set $result 0
end_if
end_proc

proc is_waiting_3_d
if 1965, 1219 16777215
set $result 1
send217_down d
wait 150
send217_up d
else
set $result 0
end_if
end_proc

proc is_waiting_4_a
if 1977, 1300 16777215
set $result 1
send217_down a
wait 150
send217_up a
else
set $result 0
end_if
end_proc

proc is_waiting_5_s
if 1950, 1254 16777215
set $result 1
send217_down s
wait 150
send217_up s
else
set $result 0
end_if
end_proc

proc is_waiting_6_x
if 1926, 1260 16777215
set $result 1
send217_down x
wait 150
send217_up x
else
set $result 0
end_if
end_proc

proc is_waiting_7_z
if 1923, 1209 16777215
set $result 1
send217_down z
wait 150
send217_up z
else
set $result 0
end_if
end_proc

proc is_waiting_8_e
if 1915, 1236 16777215
set $result 1
send217_down e
wait 150
send217_up e
else
set $result 0
end_if
end_proc

proc is_waiting_9_c
if 1911, 1179 16777215
set $result 1
send217_down c
wait 150
send217_up c
else
set $result 0
end_if
end_proc


И да, еще одна проблема - пришлось отказаться от пилота и написать на Шарпах.

Это код для рыбалки для АРКи под мое разрешение. Рыбу 2.1 он еле вытягивает. В зависимости от тех клавиш, которые надо нажимать. Если попадаются последние, то - жопа. Написал свой из 21 секунды которая дается - осталось 10. То есть с режимом linedelay 0 - пилот нереально медленный. Слежение отпускал.
DarkMaster
Тут просто нечему работать 21 секунду кроме непосредственных вэйтов. На чем время убивалось? linedelay через set прописывал? Логгирование было выключено?

Есть некоторые вопросы по поводу if x y color, т.к. он ждет синхронизации кадра и при низком фпс это может негативно сказываться на производительности. Чтобы этого избежать можно использовать findcolor.

// Если бы написал на Lua, который теперь встроен в пилот, то время выполнения непосредственно интерпретации было бы погрешностью и занимало бы значительно меньше секнуды.
Warstone
Цитата(DarkMaster @ 7.6.2018, 15:42) *

Тут просто нечему работать 21 секунду кроме непосредственных вэйтов. На чем время убивалось? linedelay через set прописывал? Логгирование было выключено?
Первая строчка-же.
Цитата(DarkMaster @ 7.6.2018, 15:42) *

Есть некоторые вопросы по поводу if x y color, т.к. он ждет синхронизации кадра и при низком фпс это может негативно сказываться на производительности. Чтобы этого избежать можно использовать findcolor.
Там есть лесенка из if'ов (OCR на коленке) вот она работает долго. То есть визуально видно что первая буква отрабатывает сильно быстрее. В своей проге я на этапе поиска надписи делаю постоянно скриншоты, а потом уже расшифровку надписи делаю на снятом изображении.
Цитата(DarkMaster @ 7.6.2018, 15:42) *

// Если бы написал на Lua, который теперь встроен в пилот, то время выполнения непосредственно интерпретации было бы погрешностью и занимало бы значительно меньше секнуды.
Я вот зашел на сайт по пилоту и как-то там не нашел что теперь тут можно на луа писать. Возможно проблема в этом ))

PS как быстро вытаскивать изображение? У меня пока такой код (самый медленный, как я понял):
Код
        private static void GetImage(IntPtr hwnd) {
            Graphics memoryGraphics = Graphics.FromImage(bmp);
            IntPtr dc = memoryGraphics.GetHdc();
            PrintWindow(hwnd, dc, 0);
            memoryGraphics.ReleaseHdc(dc);
        }
bmp - глобальная битмапа один раз созданная.
Cockney
GetDIBBits(). В шарпах это по другому именуется.

Это если снимается окно "сверху", забыл добавить. PrintWindow() если перекрыто.
Warstone
Ага... А какие еще варианты есть нажатия клавиш, кроме посылки сообщений в окно и keybd_event'а? А то хочется чтобы нажатия можно было делать на неактивном окне, но с последним это не прокатывает по понятной причине.
Cockney
keybd_event() встраивает клик или нажатие кнопки в системную очередь сообщений, т.е. глобальную. Дальше оно передается текущему активному окну. В неактивное можно достучаться только через сообщения.
REGEDIT
скачал dll закинул в папку с пилотом все равно ошибка выскакивает
DarkMaster
Версия какая? Последний релиз? Скачайте последнюю стабильную ночную.
REGEDIT
да скачал не ту версию спс помогло
T15K6
Цитата(DarkMaster @ 24.8.2018, 13:04) *

Версия какая? Последний релиз? Скачайте последнюю стабильную ночную.


у миня такая ошибка била потом бросил uopilot.exe в scripts папку вместе с lua5.1.dll но шас нету ошибки но ничего не делаит в игре
cirus
Цитата
но ничего не делаит в игре

Может защита у игры есть, типа фроста.
Проверьте в блокноте или браузере.
T15K6
Цитата(cirus @ 21.12.2018, 16:10) *

Может защита у игры есть, типа фроста.
Проверьте в блокноте или браузере.

вблокноте работает а никак не обоити зашиту?
cirus
Цитата
а никак не обоити зашиту?

Я таким не занимался.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.
Русская версия Invision Power Board © 2001-2024 Invision Power Services, Inc.