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

[Stalker call of pripyat]Вопрос по cheat table lua script


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

Привет.Мне нужно сделать трейнер  который будет исполнять такую последовательность действий.

1.Искать процесс xrEngine.exe, если нашёл то 2.

2.Активировать скрипт из таблицы

3.Ожидать 5 секунд

4.Деактивировать скрипт из таблицы

5.Ожидать 5 секунд

6.Вернутся на 2

Я искал по форуму но так и не понял как это сделать объясните поподробнее пожалуйста.

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

8 часов назад, Cillstrik сказал:

1.Искать процесс xrEngine.exe, если нашёл то 2.

 

Можно так:

- Открытие процесса записать в самое начало Lua Engine.

openProcess(processid) : causes cheat engine to open the given processid
openProcess(processname): causes cheat engine to find and open the given process

- В СЕ дизайнере создать форму, на форме создать таймер, с интервалом 5000 милисекунд. В событии таймера (OnTimer) проверять, если скрипт в таблице не активирован, то активировать, а если активирован, то деактивировать.

Спойлер

openProcess("TOTALCMD64.EXE")
if (getOpenedProcessID() == 0) then
   print("Can't open process")
   --closeCE()
   --return caFree
end

al = getAddressList()
someScriptNameInTable = al.getMemoryRecordByDescription("someScriptNameInTable")

function UDF1_CETimer1Timer(sender)
   if someScriptNameInTable.Active == false then
      someScriptNameInTable.Active = true
   elseif someScriptNameInTable.Active == true then
      someScriptNameInTable.Active = false
   end
end

 

 

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

7 часов назад, Antonshka сказал:

function UDF1_CETimer1Timer(sender) if someScriptNameInTable.Active == false then someScriptNameInTable.Active = true elseif someScriptNameInTable.Active == true then someScriptNameInTable.Active = false end end

Тогда уж вот так:

function UDF1_CETimer1Timer(sender)
   someScriptNameInTable.Active = !someScriptNameInTable.Active
end

Правда не уверен, что not есть в луа. Вроде должен быть.

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

14 часов назад, Xipho сказал:

Тогда уж вот так:


function UDF1_CETimer1Timer(sender)
   someScriptNameInTable.Active = !someScriptNameInTable.Active
end

 

Да, так определенно лучше.

 

14 часов назад, Xipho сказал:

Правда не уверен, что not есть в луа. Вроде должен быть.

Да, только похоже что ты по привычке написал С++ вариан not'a. В Lua not так и пишется - not.

Правда вчера я не понял почему not не сработал вот в этой ситуации

--Допустим процесс открыть не удалось 
if (not getOpenedProcessID()) then -- Так не работает, несмотря на то что getOpenedProcessID() вернул 0
if (not (getOpenedProcessID())) then -- И так тоже не работает
if (getOpenedProcessID() == 0) then -- Так работает
   print("Can't open process")
   --closeCE()
   --return caFree
end

Из celua.txt

getOpenedProcessID() : Returns the currently opened process. If none is open, returns 0

Пришлось сравнивать с нолем, вместо not. Хотя в С++ в таких ситуациях not отрабатывает нормально.

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

1 час назад, Antonshka сказал:

Пришлось сравнивать с нолем, вместо not. Хотя в С++ в таких ситуациях not отрабатывает нормально.

В плюсах есть автокаст. То есть, 0 трактуется как false, а любой не ноль - как true. В луа такого, похоже, нет, потому нужны явные сравнения.

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

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

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

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