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

Deus Ex 2: Invisible War автоаатач к процесу?


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

Возникла такая проблемка со вторым Deus Ex (не путать с новым, эта игра 2002 года) - игра зачем-то переподключает процесс игры DX2Main.exe каждый раз при смене локации. А это значит что слетают все скрипты и адреса :( приходится каждый раз алт-табиться и присоединять процесс по новой. Такая фигня происходит и с Artmoney, т.е. проблема в игре. Те скрипты автоаттача что нашёл подключают процесс один раз. А можно ли сделать постоянное переподключение в случае отвала?

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

Izmalkoff, при чём здесь патч, если это такая фишка игры?) особенность движка или защита от читеров (читерам надоест читы каждый раз вводить и они перестанут их вводить))

Вот такой скрипт работает, но ужасно тормозит CE (т.к. выполняется постоянно)

function myattach(timer)
attach = false;
if getProcessIDFromProcessName("DX2Main.exe") ~= nil then
if attach == false then
openProcess("DX2Main.exe")
end
end
end

t=createTimer(nil);
timer_setInterval(t,10)
timer_onTimer(t,myattach)

PS а всё, больше не тормозит вроде. Единственный глюк - если открыть в CE меню опций, то больше это окно не закроется)) придётся CE перезапускать. Сам CE при этом не тормозит, кнопки жмутся, а окно остаётся :) Забавный глюк.

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

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

Одно из решений - написать трейнер, по таймеру переподключающийся к процессу и переписывающий нужные адреса\опкоды.

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

Izmalkoff, при чём здесь патч, если это такая фишка игры?) особенность движка или защита от читеров (читерам надоест читы каждый раз вводить и они перестанут их вводить))Вот такой скрипт работает, но ужасно тормозит CE (т.к. выполняется постоянно)

function myattach(timer)   attach = false;   if getProcessIDFromProcessName("DX2Main.exe") ~= nil then     if attach == false then     openProcess("DX2Main.exe")     end   end end t=createTimer(nil); timer_setInterval(t,10) timer_onTimer(t,myattach)

Да, об этом скрипте я и говорил. Можно поменять интервал таймера (строка "timer_setInterval(t,10)") на 500 или 1000 мсек - тормозить будет меньше.

PS: Извиняюсь за задержку - не знал, что для зарегистрированных юзеров включена премодерация.

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

Использование getProcessIDFromProcessName(name) не разумно в цикле таймера. Эта функция перебирает все процессы сравнивая их имена и возвращает id. Этот цикл можно применить один раз, ну два или три... но не постоянно в таймере. Это ненужные расходы ресурсов процессорного времени.

Чтобы ещё меньше код тормозил нужно пользоваться не getProcessIDFromProcessName("DX2Main.exe"), а другим кодом с getOpenedProcessID(). Последняя возвратит ноль если процесс не подключен.

А ещё лучше использовать автоаттач процессов (код с getAutoAttachList() ) и обработку события подключения процессов onOpenProcess(processid)...

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

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

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

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