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

Супер прыжок. Сталкер Зов Припяти


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

Скрытый текст

 

GAMEHACKLAB[RU]
http://gamehacklab.ru/

Тема "Супер прыжок"
Игра S.T.A.L.K.E.R Call of Pripyat 1.6.02

 

План:
1. Рассказать о векторе скорости Velocity
2. Поиск Velocity.Y в игре
3. Поиск инструкции меняющей Velocity.Y
    - На инструкции требуется множество фильтров. Без фильтров игрок будет неправильно двигаться в том числе неправильно будут двигаться другие персонажи.
    - Через TraceLog подняться вверх по условному брейкпоинту. Ищем значение, которое влияет на Velocity
    - На значение ставим брейкпоинт и выходим на инструкцию записи
    - Сделать АА скрипт на супер прыжок
4. Добавить АА скрипт-ы: на здоровье, стамину.
-------------------

Velocity.png.e27a8ba44b37d873ca321f35e4d

 

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

О косяках на видео я знаю. По техническим причинам я переделывал первое видео три раза . Я запарился :ph34r: Я думаю, что следующее видео будет намного лучше ;)

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

Может быть всё таки стоило довести видео до ума, перед тем как выкладывать? Да 3 раза перезаписывалось, да это неприятно, но ведь никто и не торопит.

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

14 часа назад, MasterGH сказал:

Тема "Супер прыжок"

Урра!! Долгожданное видео - MasterGH, Большое спасибо!!! :):):) 

Для первого видео - не плохо, но не на пять. (За объяснение 10 +++, за видео 3 - ;)

Подписался на канале, 

Одно замечание (но ты про него уже и сам отписался):

"MasterGH, Болшой СЕНКУ!!! :) Жаль только, что на минут 10 видео начиная с середины, слышно только, а видео не меняется." (Скопировано с Тюба).

Пожелание:

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

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

Так в чём же была ошибка Xipho на последнем стриме? В том видимо, что он искал velocity на увеличение когда прыгал вверх, и на уменьшение когда падал вниз. А нужно было искать только один раз на увеличение и далее на уменьшение. Я в Deus Ex пока не пробовал искать, но в том же Limbo всё прекрасно находится.

За видео спасибо. Очень интересная техника отсева с привлечением правил больше-меньше нуля. Жаль только что на самом интересном месте, backtracing'е, видео слегка поехало и в итоге толком ничего мы там и не увидели (что касается бэктрейсинга). Было бы неплохо это дело осветить в следующих уроках. Например, как выйти на реальный адрес через экранный.

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

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

 

Скрытый текст

Программа, которой я снимаю называется PlayClaw. Два монитора. Сталкер, который жестко "захватывает курсор". Программа скриннер для перехвата экрана - возвращения курсора. Пошаговая отладка... Огромный размер данных — 20 Гб видеофайл. Скорость захвата 30 кадрасеков. Много риска для того чтобы видео стало глючить из-за случайных конфликтов.

 

...Есть большой кусок видео пошаговой отладки, который подвис. Я не понял как-так получилось. Если я начну опять снимать, то есть риск опять потерять ценные данные для зрителей (буду снимать частями что ли). Все же осталось в конце видео краткое объяснение. Советую посмотреть, тем кто не дошел до конца. Можете задать вопросы по видео, желательно с указанием времени.

 

 Кстати можно на стриме попытаться повторить "Высокий прыжок".

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

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

...Есть большой кусок видео пошаговой отладки, который подвис.

Скорее всего не подвис - думаю всё дело в том, что ты действия делал на втором мониторе, а снимал первый. Я, когда смотрел видео, так и предположил, что у тебя:

 

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

Два монитора.

 

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

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

Спасибо за видео, все понятно и доступно объяснено.

 

Спасибо за отзыв.  Если все-таки будут вопросы, то пишите.

 

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

Жаль только, что на минут 10 видео начиная с середины, слышно только, а видео не меняется." (Скопировано с Тюба).

Да, есть такой косяк. Но не смертельный ) На видео не оказалось пошаговой отладки по кнопке F7, но есть звук. В этот момент был проход по коду, который застыл на экране и заход в call. Больше ничего нового

 

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

В следующих видео просьба ещё больших касаться различных опций нашего любимого инструмента СЕ

Учту пожелания

 

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

Так в чём же была ошибка Xipho на последнем стриме? В том видимо, что он искал velocity на увеличение когда прыгал вверх, и на уменьшение когда падал вниз. А нужно было искать только один раз на увеличение и далее на уменьшение. Я в Deus Ex пока не пробовал искать, но в том же Limbo всё прекрасно находится.

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

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

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

Скорее всего не подвис - думаю всё дело в том, что ты действия делал на втором мониторе, а снимал первый.

 

Исключено. На правом мониторе я никогда не снимал взлом. Я точно помню, что видео записывалось с левого монитора и действия были на левом мониторе. На правом мониторе была временная инфа, которую я перетаскивал на левый

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

16 час назад, MasterGH сказал:

Супер прыжок

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

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

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

Может быть всё таки стоило довести видео до ума, перед тем как выкладывать? Да 3 раза перезаписывалось, да это неприятно, но ведь никто и не торопит.

offtopic.gifAntonVit, часто читаю от тебя критику :wacko:, попробуй сам снять какой-нибудь урок ;).

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

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

можно ли через обычные координаты выйти на те же велосити

 

В игре СТАЛКЕР зов Припяти можно выйти на Velocity зная адрес координат (позиции) и наоборот. Дело в том, что они находятся в одной структуре. Можно вести поиск в структуре или поиск в отладочном коде через трейслог (искать "иснтрукции-тройки", который работаю с тремя координатами, они проще всего попадаются на глаза).

 

В других играх могут быть разные варианты поиска. Могут быть в разных структурах. Через трейслог предположительно найдем 100% эту Velocity.y.

 

Я искал адрес коодрианат (позиции) в игре  СТАЛКЕР зов Припяти и выходил на velocity через сравнение структуры в DessectData. Потом я понял, что проще искать Veolocity.Y чем координаты. Быстрее найдем Veolocity.Y адрес чем координату Position.Y, но только в том случае если быть очень внимательным выбирая правила поиска.

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

22 минуты назад, MasterGH сказал:

Дело в том, что они находятся в одной структуре.

Это было моим первым предположением. 

 

22 минуты назад, MasterGH сказал:

Быстрее найдем Veolocity.Y адрес чем координату Position.Y

Ну для DS проще найти именно  Position.Y.

 

Короче нужно будет попробовать.

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

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

(даже на свой канал, планировалось выкладывать на основной канал)

Мне думаю лучше :) на свой канал выкладывать видосики ;)

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

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

Видео конечно не на русском, но тот кто хоть не много шарит, должен понять, что и чего там он делает.  

Скрытый текст

 

 

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

На этом видео, которое привел LIRW, делается поиск адреса расстояния от персонажа до поверхности. Далее выход  на начало структуры и рядом ищет другие параметры экспериментально. Т.е. можно искать не только Position.Y и не не толко Velocity.Y, но еще и расстояние до поверхности. Эти адреса по идеи должны быть в одной структуре на большинстве игр.

 

Три способа

1. Поиск координаты Y позиции (Position.Y)

2. Поиск Velocity.Y

3. Поиск расстояния до земли.

 

Как лучше делать не скажу. Мне интересно искать Velocity.Y.

 

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

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

MasterGH, возможешь сделать супер прыжок имея одну координату Y (не Velocity.Y)?

 

Для всех игр не знаю. Попытаться выйти на начало структуры. Рядом значения экспериментально изменять. Как на стриме было с Деус Икс. Либо через трейслог искать. Либо другими способами.

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

37 минуты назад, MasterGH сказал:

3. Поиск расстояния до земли.

Я это расстояние искал в асассинс крид 1 или 2. Давно дело было, не помню чем дело кончилось. Либо не нашёл, либо не придумал как это потом использовать)) Вроде бы идея была - сделать телепорт к метке на карте, а высоту Y точки назначения вычислять вот из этого самого расстояния до земли. Но что-то там не срослось..

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

17 час назад, MasterGH сказал:

Для всех игр не знаю. Попытаться выйти на начало структуры. Рядом значения экспериментально изменять. Как на стриме было с Деус Икс. Либо через трейслог искать. Либо другими способами.

 

Я не так выразился. Мне интересно стало, можно ли сделать супер прыжок имея при себе только адрес координаты Y. Например попробовать создать разные условия в скрипте, которые будут имитировать прыжок.

Попробовал вчера сделать такое на игре Dirt 3, но появилась одна проблема, пока автомобиль устремляется вверх, значение Velocity Y уменьшается, и в момент отключения действия прыжка, происходит рывок вниз. Как ни крути, нужен Velocity Y.

 

Этот скрипт создавал имитация прыжка. Но не до конца правильно, ведь сперва объект имеет нулевую скорость, затем идет плавный прирост до максимума, затем идет убывание до ноля, и наконец убывание в минус. В этом скрипте нет плавного старта с ноля, но сразу прибавляется 0,00025

Скрытый текст

[ENABLE]
alloc(PLACEjump_by_coord,2048)
label(BACKjump_by_coord)
label(Jump_by_coord_Act)

globalalloc(Jump_by_coord_Checker,8)
globalalloc(Jump_by_coord_Value_Decreaser,8)
globalalloc(Jump_by_coord_Value,8)


PLACEjump_by_coord:
pushad
push 32
call GetAsyncKeyState
shr ax,#15
cmp ax,1
popad
jne @f
mov [Jump_by_coord_Checker],#1
mov [Jump_by_coord_Value],(float)0.00025
mov [Jump_by_coord_Value_Decreaser],(float)0.000000001
@@:
cmp [Jump_by_coord_Checker],#1
je Jump_by_coord_Act
movaps xmm0,[eax+000001B0]
jmp BACKjump_by_coord



Jump_by_coord_Act:
cmp [Jump_by_coord_Value],(float)0.0000409052929
jge @f
mov [Jump_by_coord_Checker],#0
movaps xmm0,[eax+000001B0]
jmp BACKjump_by_coord
@@:
fld dword ptr [Jump_by_coord_Value]
fsub dword ptr [Jump_by_coord_Value_Decreaser]
fstp dword ptr [Jump_by_coord_Value]
fld dword ptr [eax+000001B4]
fadd dword ptr [Jump_by_coord_Value]
fstp dword ptr [eax+000001B4]
movaps xmm0,[eax+000001B0]
jmp BACKjump_by_coord




/////////////////////////
"dirt3_game.exe"+4143C9:
jmp PLACEjump_by_coord
nop
nop
BACKjump_by_coord:
[DISABLE]
dealloc(PLACEjump_by_coord)
"dirt3_game.exe"+4143C9:
movaps xmm0,[eax+000001B0]

 

 

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

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

Я не так выразился. Мне интересно стало, можно ли сделать супер прыжок имея при себе только адрес координаты Y. Например попробовать создать разные условия в скрипте, которые будут имитировать прыжок.

Попробовал вчера сделать такое на игре Dirt 3, но появилась одна проблема, пока автомобиль устремляется вверх, значение Velocity Y уменьшается, и в момент отключения действия прыжка, происходит рывок вниз. Как ни крути, нужен Velocity Y.

Мне кажется можно, рассчитав ускорение a= Δv /  Δt   и прибавлять ее к координате.  а – ускорение, Δv – изменение скорости, Δt – время, необходимое для достижения конечной скорости.

 

Но если изменяя координату, изменяет внутреигровое ускоренe, то только занопив или изменив инструкцию можно.

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

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

можно ли сделать супер прыжок имея при себе только адрес координаты Y

 

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

можешь сделать имитацию лунной гравитации, по средствам координат или по средствам Velocity, или по тем и тем?

Моё мнение:можно и то, и другое - какая разница на одном участке игрового кода будут рассчитываться новые координаты, или на двух (участок игрового кода и участок кода нашей инъекции). 

 

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

В этом скрипте нет плавного старта с ноля, но сразу прибавляется 0,00025

Думаю можно добавить ещё одну переменную:

globalalloc(Jump_by_coord_Value_Increase,8)

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

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

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

Мне интересно стало, можно ли сделать супер прыжок имея при себе только адрес координаты Y. Например попробовать создать разные условия в скрипте, которые будут имитировать прыжок.

 

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

 

Разработчик имеет исходники на высоком уровне, а у нас этих исходников как правило нет. У нас есть дизассемблер, отладчик, декомпиялтор. У нас ограничено время, разный уровень желания этим заниматься. Опыт ломания игр у меня где-то меньше чем у людей, которым нравиться заниматься гонками. Я например, сделал очень мало трейнеров, потому что мне нравиться искать способ как сделать чит и поделиться им тоже прикольно. Его смогут использовать те, кто например не хочет ковыряться в реверсинге много часов. Я занимаюсь профессионально игровым движком Unity. По Unity могу сказать  что можно сделать какой угодно прыжок гораздо быстрее в самом движке, чем делать это в дизассемблере. Короче можно создать разные условия имитации прыжка, но это может быть и просто, и очень сложно или просто и долго по времени.

 

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

Этот скрипт создавал имитация прыжка. Но не до конца правильно, ведь сперва объект имеет нулевую скорость, затем идет плавный прирост до максимума, затем идет убывание до ноля, и наконец убывание в минус. В этом скрипте нет плавного старта с ноля, но сразу прибавляется 0,00025

Не могу подсказать сейчас. Может быть потом

 

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

MasterGH, а возможешь сделать имитацию лунной гравитации, по средствам координат или по средствам Velocity, или по тем и тем?

Лунная гравитация это типа устремления к одной точке. Могу сделать в игровом движке Unity как два пальца обо асфальт стандартным компонентом Joint. По поводу скрипта, сделал бы что-то типа этого.


Узнаю направления от точки1 до точки2, где точка 2, на которую смотрим. Это точка2 - точка1.

Точка это Vector3.

 

Car.Velocity = (точка2 - точка1) * (скаляр speed) * (по времени фрейма time.DeltaTime).

 

Скаляр - float константа скорости.

по времени фрейма time.DeltaTime - разница между вызовами функции Update, тоже float

 

Рекомендую поставить игровой движок Unity. Там есть машинки в стандратных ассетах. Написать свой скриптец Лунной гравитации. Потренироваться. Тренировка на высоком уровне помогает делать читы на низком уровне в других играх.

 

upd. А еще надо вектор нормализовать

(точка2 - точка1).normalize

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

 

Car.Velocity = (точка2 - точка1).normalize * (скаляр speed) * (по времени фрейма time.DeltaTime).

 

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

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

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

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