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

Как найти скорость передвижения игрока?


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

Привет всем!!!

Столкнулся с таким вопросом как в топике, а искать даже не знаю как :-( Ломаю игру Darksiders 1 Wrath of War(лицензия стим). Видел трейнер в Deviated с этой опцией, а сделать сам не могу.

Прошу вашей помощи. Очень нужно. Хочу свой трейнер сделать с этой опцией.

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

Как вариант - находишь координаты игрока, находишь инструкцию, с ними работающую, делаешь инъекцию кода, в которой добавляешь к координате определенный множитель.

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

Вот у меня инструкция отвечающая за координату Z:

"DarksidersPC.exe"+327374:

fstp dword ptr [edi+68]

Допустим фильтр я сделал. Смещение по координатам равно 4 байта. А как сделать инъекцию с множителем? Можно какой-то конкретный пример?

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

Эм, я конечно не спец, но попробуй так:


push eax
mov eax,[edi+68] //берем значение
mul 4 //умножаем его на 4
mov [edi+68],eax //устанавливаем полученный результат
pop eax
fstp dword ptr [edi+68]

За работу скрипта не ручаюсь, но в ассемблере команда умножения это mul, насколько я помню... :)

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

  • 3 месяца спустя...

Я спросит хочу, как найти скорость передвижения игрока, на до идти в перед и делать увеличилось, или надо лести в верх и делать увеличилось,

хочу сделать что бы игрок быстрее бегал.

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

Я спросит хочу, как найти скорость передвижения игрока, на до идти в перед и делать увеличилось, или надо лести в верх и делать увеличилось,

хочу сделать что бы игрок быстрее бегал.

Используем поиск по форуму, не раз уже обсуждалось, и даже статьи писали по этому вопросу.
Ссылка на комментарий
Поделиться на другие сайты

Был урок кенга, где он там несколько раз вписывал инструкцию, но в этой игре такое не проходит. Пробовал. Кроме того ни один из представленых способов не действует. Вопрос все еще открыт.

 

NullAlex если знаешь где обсуждалось и ответ уже есть, то кинь ссылку на тему пожалуйста.

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

Покажите пожалуйста, как через Cheat Engine найти скорость передвижения, у меня olly 1.10 подключатся к игре не хочет, выдает ошибку.

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

Привет всем!!!

Столкнулся с таким вопросом как в топике, а искать даже не знаю как :-( Ломаю игру Darksiders 1 Wrath of War(лицензия стим). Видел трейнер в Deviated с этой опцией, а сделать сам не могу.

Прошу вашей помощи. Очень нужно. Хочу свой трейнер сделать с этой опцией.

 

Мой криминальный мозг додумался до такого: скачай trainer cracker от coder94, открой трейнер от Deviated в нем и ты увидишь какие WinAPI функции вызывает твой трейнер, а именно - какие байты и куда пишет.

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

  • 1 месяц спустя...

RockHammer пробовал я этой и другой прогой ломать толку 0.

 

Взял я и искал эту быстроту через СЕ. Включил игру, потом трейнер, потом СЕ и давай искать.

 

Включил быстроту и ищу "увеличилось", подвигался в игре и "не изменилось", выключил и "уменьшилось" ну и т.д. и т.п. 

 

В результате нашел адрес и его значение при вкл быстрота значение 64, а при выкл быстрота 0. Перехожу в отладчик а там инструкция, которая работает на dll из трейнера и облом. За значение быстроты отвечает инструкция из подключенной dll. И на этом я вошел в ступор и ничего понять не смог.

 

Да и еще с mul, imul пробовал в своем скрипте писать, но он делает не то что мне надо. Так вопрос далее открыт. Я понятия не имею как они сделали быстроту.

 

А да еще реверсил игру по адресам и их значениям по структуре игрока(вылетов из игры была целая куча) Потратил уйму времени результата = 0. Использовал и СЕ и ReClass.

 

Да в игре mafia нашел без проблем за минут 10-15.

 

Ребята прошу подскажите как ее найти эту быстроту.

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

Мне кажется всё дело в том, что координаты имеют вещественный тип и для них такие инструкции как: add. sub, mul и т.д. не подойдут.

Нужно использовать fadd. fsub и т.д. 


Если нужен пример работы с типом float, то посмотрите скрипт из этого сообщения (часть песвдо-полёт)

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

Допустим в этой теме

http://forum.gamehacklab.ru/topic/3085-new-crimsonland/

Я совершенно случайно наткнулся на множитель скорости ГГ

в структуре самого ГГ

Рядом с координатами да и на них сами ставил много бряков да и много чего менял рядом сними

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

Думаю, для изменения скорости можно искать непосредственно множитель и работать с ним, но можно работать и непосредственно с координатами.

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

В игре Torchlight2 (RPG) чтоб добавить больше опыта при убийстве моба (инструкция была на запись ) делал так

число что нужно прибавить в EBX

push eaximul eax ebx,#10mov ebx,eaxpop eaxadd [esi+00000594],ebx

Предпологаю что можно и с любым другим значением так поступить

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

Я опираюсь на инфу по Ассемблеру из интернета, вот например из одного учебника:

Оперировать вещественными значениями как таковыми может только математический сопроцессор. Работа с вещественными числами


требует отдельного рассмотрения.

Поэтому и предполагаю, что в ранее приведённом примере нужно использовать вместо mul - fmul (только применить это правильно). 

 


т.е. переписал бы скрипт NullAlexa:

Эм, я конечно не спец, но попробуй так:
 

push eaxmov eax,[edi+68] //берем значениеmul 4 //умножаем его на 4mov [edi+68],eax //устанавливаем полученный результатpop eaxfstp dword ptr [edi+68]
За работу скрипта не ручаюсь, но в ассемблере команда умножения это mul, насколько я помню... :)

 

так:

Как то так.


Только, т.к. в  [edi+68] лежит Z , ГГ будет высоко прыгать. Для быстрого передвижения, нужно будет сделать это с координатами X и Y.  


Только и это всё не верно.

Объясню:

в [edi+68] -лежит именно координата, допустим 1000.

Если мы применим умножение, то скорее всего окажемся за координатами игровой карты (а это скорее всего приведёт к вылету или ничего не произойдёт, если стоит проверка координат).

Нам нужно умножать не саму координату, а разницу м/у двумя соседними координатами ГГ (до шага и после шага), вот тогда всё и заработает. 


Это если работать через координаты.

Но можно найти именно множитель и работать с ним, тогда будет всё проще.


Всё таки стало интересно, поэтому написал быстренько скрипт для Fallout 3:


и заснял видео:

Осталось только приспособить скрипт к нуждам игры добавить тоже самое к Y и всё.


Дополню, как приспособить вышеизложенное к нуждам игры:

1. Выбрать инструкцию, которая срабатывает на адресе координаты (X) на запись разово. (я в скрипте использовал для наглядности именно многоразовую инструкцию и показал на видео как быстро добраться до края карты).

2. Проверить нужен ли фильтр (в моём скрипте фильтр использован), если нужен найти его.

3. Откалибровать множитель (так как в Fallout 3 координаты имеет четыре значимых знака, т.е. например координата Z: 2000, X:-456. Y: -1200): то множитель Mnoziteldd (float)1.004 в скрипте нужно ставить порядка (float)1.0004, чтобы ГГ не перемещался, как Кот в Сапогах.

4. Проделать всё тоже для (Y).

5. Объединить скрипты в один.

6. Всё - быстро ходим в игре. 

fmul 4 //умножаем на 4 значение в стеке (в стеке как раз лежит [edi+68])fstp dword ptr [edi+68] // выталкиваем новое (умноженное на 4) значение из стека. 
[ENABLE]alloc(newMem, 128)label(returnHere)label(OK)label(Mnozitel)registersymbol(Mnozitel)newMem:cmp eax,18f4a0                // Для работы с координатами только ГГjne OKfmul dword ptr [Mnozitel]OK:fstp dword ptr [esi+000000D0]jmp returnHereMnozitel:dd (float)1.004               // Множитель или скорость перемещенияFallout3.exe+50DDB1:jmp newMemnopreturnHere:[DISABLE]Fallout3.exe+50DDB1:fstp dword ptr [esi+000000D0]unregistersymbol(Mnozitel)dealloc(newMem) 
  • Плюс 2
Ссылка на комментарий
Поделиться на другие сайты

Допустим в этой теме

http://forum.gamehacklab.ru/topic/3085-new-crimsonland/

Я совершенно случайно наткнулся на множитель скорости ГГ

в структуре самого ГГ

Рядом с координатами да и на них сами ставил много бряков да и много чего менял рядом сними

JleXA, этот пример нечего не доказывает, больше чем уверен, ты в скрипте с множителем использовал в коде инструкцию:

MOV (например так: mov eax, [mnozitel]), а это можно делать с вещественными числами.

Второй приведённый тобою пример, тоже нужно рассмотреть конкретно (какой тип используется в игре для опыта и т.д.). Скорее всего пример тоже ничего не докажет. 

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

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

 

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

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

Повторю: нужно для каждой координаты (X и Y)  взять разовую инструкцию и будет всё работать. Прочитай полностью сообщение # 18.


Разовая инструкция - на каждый шаг героя одно срабатывание на запись.


Если таких инструкций не окажется, тогда только искать множитель.

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

  • 1 год спустя...
В 30.07.2014в07:52, Xipho сказал:

Как вариант - находишь координаты игрока, находишь инструкцию, с ними работающую, делаешь инъекцию кода, в которой добавляешь к координате определенный множитель.

 

А если к примеру персонаж движется по X в сторону отрицательного значения, то есть имеет X = 10, и движется к X = 0, если умножать или прибавлять к X, то персонажа понесет совсем в противоположную направлении, в сторону увеличения X. Тоже самое и с Y.

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

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

если умножать или прибавлять к X, то персонажа понесет совсем в противоположную направлении, в сторону увеличения X. Тоже самое и с Y.

Нет конечно - множитель не влияет на знак + (в прямом направлении) - (в обратном).  ЗЫ: если именно множитель найден.

 

Если делаете через координаты, то в зависимости от того как реализуете скрипт. Если как на моём том старом видео, то ДА - персонажа понесет совсем в противоположную направлении.

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

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

Нет конечно - множитель не влияет на знак + (в прямом направлении) - (в обратном).  ЗЫ: если именно множитель найден.

Если делаете через координаты, то в зависимости от того как реализуете скрипт. Если как на моём том старом видео, то ДА - персонажа понесет совсем в противоположную направлении.

 

А где то твое старое видео? Тебе Гарик известно как реализовать иначе, то есть так чтобы скорость передвижения была скоростью передвижения. По средствам координат?

 

Про множитель мне известно, работал уже с ним ранее.

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

 

Xipho, что скажешь? По поводу твоего предложения. Тебе что-то еще известно о чем ты не сказал, потому как одного того чтобы перемножить, недостаточно, точнее так совсем ничего не выйдет (как мне кажется).

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

4 минуты назад, AntonVit сказал:

А где то твое старое видео?

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

6 минут назад, AntonVit сказал:

Тебе Гарик известно как реализовать иначе, то есть так чтобы скорость передвижения была скоростью передвижения.

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

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

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

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

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