Перейти к содержанию

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


Razi

Рекомендуемые сообщения

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

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

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

Покажу пример 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)

 

 

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

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

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

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

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

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

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

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

 

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

4 часа назад, Vlad2 сказал:

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

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

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

 

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

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

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

Изменено пользователем Razi
Ссылка на комментарий
Поделиться на другие сайты

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

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

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

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

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

  • 2 недели спустя...

В итоге 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
Ссылка на комментарий
Поделиться на другие сайты

×
×
  • Создать...

Важная информация

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