• Объявления

    • Garik66

      Пользователям форума   05.11.2017

      Прошу обратить внимание на эту тему (чтобы увидеть ссылку, войдите в объявление - нажмите на заголовок):   
Razi

Почему CE зависает при вызове Lua скрипта горячими клавишами?

9 сообщений в этой теме

Почему CE зависает при вызове Lua скрипта горячими клавишами? Есть таблица с 2 Lua скриптами. В таблице 2 Lua скрипта(Lua script и скрипт для флага script-flag). Назначаю на эти 2 Lua скрипта горячие кнопки. Но, при нажатии горячих кнопок для активирования скриптов cheat engine зависает. (Или зависает во время назначения горячих кнопок на скрипты.) Вопрос: почему происходит зависание на работающих скриптах? Спрашиваю потому что хочу сделать трейнер из таблицы, а для этого нужно вызывать скрипты горячими кнопками. Может нужно поставить таймер в Lua script?

У меня версия cheat engine 6.4. Вот ссылка на таблицу: http://rgho.st/74D6ktTnb

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Покажу пример Lua скрипта, и этот скрипт добавлен в таблицу, через "assign to current cheat table" . И вот в нем по идее что-то не так, потому что из-за этого скрипта скорее всего происходит зависание CE. Может кто-то сможет увидеть, где может быть ошибка.

Кроме этого в таблице еще есть три адреса и они названы: FIRSTAdress, SECONDAdress, THIRDAdress. Также еще есть скрипт для флага: Script-flag. И сам флаг: BUTTONCHECK.

Скрытый текст

{$lua}
al = getAddressList()
BUTTONCHECK = al.getMemoryRecordByDescription("BUTTONCHECK")
FIRSTAdress = al.getMemoryRecordByDescription("FIRSTAdress")
function buttondown()
if BUTTONCHECK.Value~="??" then
if FIRSTAdress.Value~="??" then
if BUTTONCHECK.Value=="2" then
BUTTONCHECK.Value="1"
else
if BUTTONCHECK.Value~="??" then
if FIRSTAdress.Value~="??" then
if BUTTONCHECK.Value=="1" then
BUTTONCHECK.Value="0"
else
if BUTTONCHECK.Value~="??" then
if FIRSTAdress.Value~="??" then
if BUTTONCHECK.Value=="0" then
BUTTONCHECK.Value="0"
end
end
end
end
end
end
end
end
end
end
function buttonup()
if BUTTONCHECK.Value~="??" then
if FIRSTAdress.Value~="??" then
if BUTTONCHECK.Value=="0" then
BUTTONCHECK.Value="1"
else
if BUTTONCHECK.Value~="??" then
if FIRSTAdress.Value~="??" then
if BUTTONCHECK.Value=="1" then
BUTTONCHECK.Value="2"
else
if BUTTONCHECK.Value~="??" then
if FIRSTAdress.Value~="??" then
if BUTTONCHECK.Value=="2" then
BUTTONCHECK.Value="2"
end
end
end
end
end
end
end
end
end
end
createHotkey("buttondown", VK_LEFT);
createHotkey("buttonup", VK_RIGHT);


al = getAddressList()
BUTTONCHECK = al.getMemoryRecordByDescription("BUTTONCHECK")
FIRSTAdress = al.getMemoryRecordByDescription("FIRSTAdress")
SECONDAdress = al.getMemoryRecordByDescription("SECONDAdress")
THIRDAdress = al.getMemoryRecordByDescription("THIRDAdress")
function forupper()
if BUTTONCHECK.Value~="??" then
if FIRSTAdress.Value~="??" then
if BUTTONCHECK.Value=="0" then
FIRSTAdress.Value=FIRSTAdress.Value+8
else
if BUTTONCHECK.Value~="??" then
if FIRSTAdress.Value~="??" then
if BUTTONCHECK.Value=="1" then
SECONDAdress.Value=SECONDAdress.Value+8
else
if BUTTONCHECK.Value~="??" then
if FIRSTAdress.Value~="??" then
if BUTTONCHECK.Value=="2" then
THIRDAdress.Value=THIRDAdress.Value+8
end
end
end
end
end
end
end
end
end
end
function fordownder()
if BUTTONCHECK.Value~="??" then
if FIRSTAdress.Value~="??" then
if BUTTONCHECK.Value=="0" then
FIRSTAdress.Value=FIRSTAdress.Value-8
else
if BUTTONCHECK.Value~="??" then
if FIRSTAdress.Value~="??" then
if BUTTONCHECK.Value=="1" then
SECONDAdress.Value=SECONDAdress.Value-8
else
if BUTTONCHECK.Value~="??" then
if FIRSTAdress.Value~="??" then
if BUTTONCHECK.Value=="2" then
THIRDAdress.Value=THIRDAdress.Value-8
end
end
end
end
end
end
end
end
end
end
createHotkey("forupper", VK_UP);
createHotkey("fordownder", VK_DOWN);
[Enable]
[Disable]

 

 

 

Вот еще скрипт для флага: Script-flag.

Скрытый текст

[ENABLE]
alloc(SELECTOR,2048)
label(BUTTONCHECK)
registersymbol(BUTTONCHECK)

SELECTOR:
BUTTONCHECK:
dd 0

[DISABLE]
unregistersymbol(BUTTONCHECK)
dealloc(SELECTOR)

 

 

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Почему секции [Enable] [Disable], в конце скрипта?

И вообще почему ты просто не занесешь скрипт в луа окно? Там где ему место. 

Сделано криво, потому и не работает 

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Быть может, дело в том, что действие выполняется в одном потоке?

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
2 часа назад, Trix сказал:

Быть может, дело в том, что действие выполняется в одном потоке?

ага, так и есть. LUA скрипты выполняются в главном потоке СЕ

 

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
4 часа назад, Vlad2 сказал:

И вообще почему ты просто не занесешь скрипт в луа окно? Там где ему место. 

Он там и был, но перенес его в таблицу, потому что хочу вызывать скрипт в трейнере через горячие клавиши. А что можно как-то активировать скрипт из Lua окна в трейнере по горячим клавишам?

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

 

2 часа назад, Dino сказал:

ага, так и есть. LUA скрипты выполняются в главном потоке СЕ

Подскажите пожалуйста что нужно сделать с этой таблицей, чтоб получился рабочий трейнер. Сам скрипт работает нормально.

Изменено пользователем Razi
0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Продолжая тему. Тогда вопрос такой. Как сделать трейнер из Lua скрипта, если Lua скрипт находится в Lua окне?

Нашел только один способ: переместить Lua скрипт в таблицу и поставить на него горячие кнопки.

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

В итоге Garik66 сказал главную подсказку. (Спасибо Garikу66 за это.) Подсказав, что LUA-скрипт в трейнере сам активируется. Я думал что по идее он и должен сам активироваться, но когда создавал трейнер выскакивала ошибка:

Error:"72.0" is an invalid integer   // при добавлении +8 к значению в адресе по горячей кнопке "вверх" через Lua скрипт
Error:"56.0" is an invalid integer   // при отнимании -8 от значения в адресе по горячей кнопке "вниз" через Lua скрипт

В итоге маленький трейнер не работал и не работает.

Оказывается если создавать маленький трейнер до 100 кб то показывает эту ошибку, а если создавать большой трейнер (более 3-х мб), то все работает без ошибок.

Интересно узнать почему в маленьком трейнере показывает эту ошибку, а в большом трейнере не показывает?

Изменено пользователем Razi
0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!


Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.


Войти сейчас