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

Dishonored Trayner by Fixer [SPEDHACK] *New


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

Всем привет!

Представляю вам свою вторую работу по части экспериментов!!! В этот раз добавил... нет, не догадаетесь! SpeedHack!!!

ЕЩЕ НИКТО НЕ ДОГАДАЛСЯ ЗАСУНУТЬ В ТРЕЙНЕР - СПИДХАК!!! Может не знают, как его в LUA сделать, а может не хотят...

Но я всеже решился)))

Итак, вот ScreenShoot:

eb767dc7.jpg

Итак, в остальном все то же, что и в первой работе.

Сделал сигнатуру байтов в чек боксы. Хоткеи думаю сами знаете как делается :-D

0cbcfcb08630.png

Не судите строго... первый раз делаю сх :unsure:

сейчас еще раз проверял... забыл поставить защиту от растяжки :( печаль, печаль...

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

В Дишореде есть несколько умений, которые по времени работают - замедление времени, зрение и вселение.

Причем, у них свой таймер, поэтому нередко бывает, что использовав замедление времени, и включив зрение, что то да слетает через какое то время)

Кроме того, иногда бывает необходимым сделать прыжок (телепортирование), но его никто не пытался увеличить - дальность телепорта)

И еще - когда работают волынки. Смотрители ходят с такими, то магия сразу сваливается. Было бы неплохо это убрать)

Ну это как вариант, если захочется попробовать себя и дальше)

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

В Дишореде есть несколько умений, которые по времени работают - замедление времени, зрение и вселение.

Причем, у них свой таймер, поэтому нередко бывает, что использовав замедление времени, и включив зрение, что то да слетает через какое то время)

Кроме того, иногда бывает необходимым сделать прыжок (телепортирование), но его никто не пытался увеличить - дальность телепорта)

Ну это как вариант, если захочется попробовать себя и дальше)

да, да, да... я не пробывал искать координаты игроков, но как подсказывает опыт - они статичны. можно сделать в чек бокс телепорт, однако жаль что в хоткей нельзя... на хоткей было бы удобней)

а на счет лицензированного вх (черное зрение) оно действительно по времени работает... только не знаю как это время уловить) ведь никакой полоски нету) еслиб была - сделал бы)

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

ну так в чем проблема? берешь 1) поиск неизвестного значения(скорей всего float) 2) врубаешь умение ждешь секунду 3) делаешь отсев на уменьшилось 4) делаешь 2 и 3 пункты так пока время не кончится 5) как время закончилось ждешь пока восстановится и врубаешь умение и повторяешь пункты 2, 3, 4, 5 пока не найдешь нужный адрес, а найдешь ты его в этой игре таким образом 100%

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

ну так в чем проблема? берешь 1) поиск неизвестного значения(скорей всего float) 2) врубаешь умение ждешь секунду 3) делаешь отсев на уменьшилось 4) делаешь 2 и 3 пункты так пока время не кончится 5) как время закончилось ждешь пока восстановится и врубаешь умение и повторяешь пункты 2, 3, 4, 5 пока не найдешь нужный адрес, а найдешь ты его в этой игре таким образом 100%

Ок! Спасиб)

ребят, а вот на счет спидхака еще никто ничего не сказал :(

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

Я не проверял еще, если будет работать с ДЛСами, то проверю, иначе ни как)) А вообще, там вроде не такая уж и большая территория, хотя не знаю)

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

Fixer а развернуть трейнер можно было убрать.

А спидхак я не проверял, вкл.выкл чекбокс СПИДХАКА выходит одно и то ж сообщение с этим как?

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

Fixer а развернуть трейнер можно было убрать.

А спидхак я не проверял, вкл.выкл чекбокс СПИДХАКА выходит одно и то ж сообщение с этим как?

за эту ошибку с разворотом я написал что извиняюсь))) просто там при компиле выдавало ошибку я психанул чето отключил, вот оно и зароботало...

но в будущем такой ошибки не будет.

не ну а че ты хотел? это простая сообщенька! и сх включается единажды и больше не отключается. я не пойму вообще нафига отключать то? включил и бегай.

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

  • 2 года спустя...

А не пробовал ли кто искать статы в конце миссий? т.е. сколько убитых, сколько тревог поднято, сколько денег\рун и проч. собрано, сколько раз тела убитых обнаружили и т.д. А то тут проходишь на призрака и только в конце тебе говорят, мол, звиняй, ты один раз накосячил и фиг тебе, а не "призрак". Обидно... А так можно было бы за статами в любой момент следить. Я такие статы находил для Commandos 2 и здесь выкладывал, а тут вроде что-то нашёл, но не всё. На форуме Дарк Байта был скрипт на идеальные статы во всех миссиях, но я этот скрипт так и не увидел (таблица есть со скриптом, но про статы в том скрипте ни строчки).

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

aliast,

 

1. параметры статистики могут находится рядом в памяти. Можно попробовать найти их всех рядом

2. одна инструкция может читать все параметры статистики. Чтобы найти её попробовать поставить брейкпоинт на чтение на один адрес параметра статистики и ждать инструкций в логах на протяжении игры

3. дизассмить по трейслогу и ковырять

4. статистика может храниться не в оперативной памяти, а на жестком диске, в реестре. Есть специальные утилиты, которые проверяют обращение к реестру, жесткому диску (например, Procmon.exe)

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

ВОзможно нашёл счетчик обнаруженных тел. Теперь такой вопрос - как заставить CE бибикать звук при значении определенного адреса > 0 ? Можно даже сделать "бип" при выполнении определенной инструкции, без разницы. В чём ошибка? Вылетает после добавления LuaCall.

В общем, работает с WinAPI, а с Луашным не знаю как правильно. Пикает правда как попало, ну тут уже надо скрипт фиксить.


NullAlex: Большой код принято обрамлять в тег спойлера. Читай правила и FAQ.

[ENABLE]//code from here to '[DISABLE]' will be used to enable the cheatalloc(newmem,2048)registersymbol(bodies)label(bodies)label(returnhere)label(originalcode)label(exit)label(beep)newmem: //this is allocated memory, you have read,write,execute access//place your code heremov [bodies],eaxcmp eax,01jge beepjmp originalcodebeep:LuaCall(beep())originalcode:mov [esi+04],eaxjle Dishonored.exe+28382exit:jmp returnherebodies:dd 0"Dishonored.exe"+28347:jmp newmemreturnhere:  [DISABLE]//code from here till the end of the code will be used to disable the cheatunregistersymbol(bodies)dealloc(newmem)"Dishonored.exe"+28347:mov [esi+04],eaxjle Dishonored.exe+28382//Alt: db 89 46 04 7E 36
beep: push #300 push #750 call kernel32.Beep
Изменено пользователем aliast
Ссылка на комментарий
Поделиться на другие сайты

Процесс в CE уже должен быть открыт

address = 0x0045b5a4m_streamTada_tada = createMemoryStream()m_streamTada_tada.loadFromFile('D:\\tada.wav') -- заменить на свой звукfunction OnTimer()  if(readInteger(address) > 0) then    m_timer.Enabled = false    playSound(m_streamTada_tada, false)  endendlocal m_timer = createTimer()m_timer.Interval = 1000m_timer.OnTimer = OnTimer
Ссылка на комментарий
Поделиться на другие сайты

выдаёт ошибку Error:[string "local address = getAddress("Dishonored.exe")..."]:12: attempt to index a nil value (global 'm_timer')

local address = getAddress("Dishonored.exe")address = readPointer(address + 0x007F80A0)address = readPointer(address + 0x35C)local Bodies = readInteger(address + 0x4)  -- должно быть [[["Dishonored.exe" + 0x007F80A0] + 0x35C] + 0x4]if (Bodies == nil) then Bodies = 0         -- дефолтное значение переменнойendm_streamTada_tada = createMemoryStream()m_streamTada_tada.loadFromFile('d:\\Files\\wav\\Sound.wav') -- заменить на свой звукfunction OnTimer()  if (Bodies > 0) then    m_timer.Enabled = false    playSound(m_streamTada_tada, false)  endendlocal m_timer = createTimer()m_timer.Interval = 1000m_timer.OnTimer = OnTimer
Изменено пользователем aliast
Ссылка на комментарий
Поделиться на другие сайты

выдаёт ошибку Error:[string "local address = getAddress("Dishonored.exe")..."]:12: attempt to index a nil value (global 'm_timer')

Попробуйте так

local address = getAddress("Dishonored.exe")address = readPointer(address + 0x007F80A0)address = readPointer(address + 0x35C)local Bodies = readInteger(address + 0x4)  -- должно быть [[["Dishonored.exe" + 0x007F80A0] + 0x35C] + 0x4]if (Bodies == nil) then Bodies = 0         -- дефолтное значение переменнойendm_streamTada_tada = createMemoryStream()m_streamTada_tada.loadFromFile('d:\\Files\\wav\\Sound.wav') -- заменить на свой звукfunction OnTimer()  if (Bodies > 0) then    m_timer.Enabled = false    playSound(m_streamTada_tada, false)  endendlocal m_timer = createTimer()m_timer.Interval = 1000m_timer.OnTimer = OnTimer
local m_timer = createTimer()m_timer.Interval = 1000function OnTimer()  if (Bodies > 0) then    m_timer.Enabled = false    playSound(m_streamTada_tada, false)  endendm_timer.OnTimer = OnTimer
Ссылка на комментарий
Поделиться на другие сайты

Ура! Кажется получилось. Вот рабочий скрипт. Я кажется уже задавал этот вопрос раньше или нет, не помню - как этот скрипт повесить на хоткей?

]

А что за косяк такой с тегом code - в первой строке делается такой неудаляемый отступ? Появляется вроде как при правке сообщения с таким тегом.


Что-то я уже совсем ничего не понимаю. Изначально скрипт работал как я хотел - при Bodies > 0 начинало бибикать без остановки, пока не загрузишь сэйв с Bodies = 0. Но стоило поменять цепочку указателей и изменить тип с 4 байт на float, так теперь пикает только один раз и всё (local Bodies = readInteger(address + 0x4) поменял на local Bodies = readFloat(address + 0x4) ). И даже если загрузить сэйв и снова сделать Bodies > 0 ничего пиликать уже не будет. Вроде бы всё правильно, да? Строчка m_timer.Enabled = false как раз и заставляет таймер сработать только 1 раз :( А как сделать чтобы постоянно пиликало? Если выставить m_timer.Enabled = true то он будет всегда пиликать, даже после нарушения условия if (Bodies > 0) Без этой строчки то же самое.

local address = getAddress("Dishonored.exe")address = readPointer(address + 0x01084EE0)address = readPointer(address + 0x40)address = readPointer(address + 0x10)address = readPointer(address + 0x1D8)   -- от версии игры зависит, адрес счетчика обнаруженных тел.                                      --Изначально ссылается на один адрес, равный нулю, потом когда кто-то тело находит                                     --перескакивает на другой. Не знаю почему так, но вроде работаетm_streamTada_tada = createMemoryStream()m_streamTada_tada.loadFromFile('d:\\Files\\wav\\Sound.wav') -- заменить на свой звукfunction OnTimer()  local Bodies = readInteger(address + 0x4)  if (Bodies == nil) then Bodies = 0  end  if (Bodies > 0) then    m_timer.Enabled = false    playSound(m_streamTada_tada, false)  --начинаем бескночено пиликать "Найден труп, срочно грузите сэйв, а то призрака не дажут"   endendm_timer = createTimer()m_timer.Interval = 1000m_timer.OnTimer = OnTimer
Изменено пользователем aliast
Ссылка на комментарий
Поделиться на другие сайты

А что за косяк такой с тегом code - в первой строке делается такой неудаляемый отступ?

Насколько я знаю, этот косяк только у Интернет браузера Опера.

 

1. Необходимо читать весь указатель, а не часть его. Потому что на протяжении игры путь указателя может поменяться

 

2. Необходимо быть точно уверенным, что при чтении float адреса корректно условие if (Bodies > 0). Т.е. надо посмотреть значение Bodies до и после изменений с помощью функции print. Можно обратить внимание на someValue > 0.0 (ниже в скрипте), надо в консоли lua (из окна отладчика) используя print(readFloat ('[[[[Dishonored.exe+01084EE0]+40]+10]+1D8]+0x4')) посмотреть чему равно значение до и после "тревоги"

 

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

 

 

Повесить на хот кей на обычный АА скрипт в таблицу с луа в ставками

[Enable]{$lua}alarmTimer.Enabled = true[Disable]{$lua}alarmTimer.Enabled = false
function OnTimer()	-- должны читать всегда указатель полностью, т.к. его путь может меняться	local bodies	=	readInteger	('[[[[Dishonored.exe+01084EE0]+40]+10]+1D8]+4')	-- заменить цепочку указателей для чтения float	local someValue	=	readFloat	('[[[[Dishonored.exe+01084EE0]+40]+10]+1D8]+4') 		-- Если удалось прочитать значение указателя и bodies > 0	if (bodies ~= nil and bodies > 0) then		-- ирать файл, если он не играет		playSound(streamTada, true)	end		if (someValue != nil and someValue > 0.0) then		-- ирать файл, если он не играет		playSound(streamTada, true)	end	end-- Должно вызываться один разstreamTada = createMemoryStream()streamTada.loadFromFile('d:\\Files\\wav\\Sound.wav') -- заменить на свой звукalarmTimer = createTimer()alarmTimer.Interval = 1000alarmTimer.OnTimer = OnTimer

Поместить код в окно "Lua Script: Cheat Table"

 

Код я не тестил, мог где-то ошибиться.

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

Код рабочий, но Луа вставка в АА не фурычит (ошибок не выдаётся, но скрипт невозможно включить, крестик не ставится.

Upd: хоткей начинает работать после запуска Lua скрипта, всё ок. Надо его перед игрой влючать. А чтобы этого избежать, можно весь Lua скрипт целиком запихнуть под тег {$lua} в [ENABLE]. [DISABLE] оставить без изменений. Тоже всё прекрасно пашет.

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

Запуск lua скрипта происходит автоматически один раз в начале работы трейнера, таблицы .cetrainer, но не .ct.

 

 

Lua скрипт целиком запихнуть под тег {$lua} в [ENABLE]. [DISABLE

 

Можно, но с каждым включением будут создаваться новый тамер и стрим звука, а при выключнии скрипта таймер будет отключаться всего лишь. Поэтому надо либо разрушать их под disable, либо не создавать повторно. Лучше последнее.

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

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

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

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