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

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


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

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

 

Также как узнать максимальное значение, если оно бывает в диапазоне от -10 до 10

 

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

Так я и нашел его на видео (в первом посте). Оно равно шести. Если поменяется на другое, то будет другим.

Если речь о другой игре, то по аналогии.

А если есть ограничение по скорости, то ставить на адрес трейслог (ставиться из окна памяти). Подниматься вверх и исследователь ветку.

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

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

Так я и нашел его на видео (в первом посте). Оно равно шести. Если поменяется на другое, то будет другим.

Если речь о другой игре, то по аналогии.

А если есть ограничение по скорости, то ставить на адрес трейслог (ставиться из окна памяти). Подниматься вверх и исследователь ветку.

 

Я смотрел видео, но не заметил этот момент. На какой минуте оно равно шести?

Игра FarCryPrimal. Попробовал сейчас этот код, но он не работает, наверно это из-за отрицательности значения, когда персонаж падает вниз.

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

alloc(Max_Velocity,100)
registersymbol(Max_Velocity)


PLACEgravitymode:
push rbp
mov rbp,[rcx+68]
cmp rbp,[Max_Velocity]
pop rbp
jle @f
fld dword ptr [rcx+68]
fstp dword ptr [Max_Velocity]
@@:
movaps [rcx+60],xmm0
ret
jmp BACKgravitymode

 

 

Velocity Y я нашел, мне просто нужно узнать насколько большим бывает его значение.

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

21:29 в стеке второе значение равно 6.0. Код слева. Из

 

fld dword ptr [edi+31C]

 

забирается 6.0. Это есть значение, которое будет записано в стек, а из стека, когда уже будем внутри call-а будет записано в Velocity.Y

 

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

Velocity Y я нашел, мне просто нужно узнать насколько большим бывает его значение.

 

Максимально большое будет таким, каким будет его записывать игра и оно может меняться (т.е. может быть не постянно 6 как в Сталкере, а разное). Мы должны увидеть запись в Velocity.y и это будет максимальным значением на текущий момент игры. Возможно, оно будет динамически меняющимся. Вообще я бы не называл его максимальным значением, а называл параметром скорости. Узнать какие параметры скорости записываются.

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

Посмотрел, понял.

А если нет возможности ставить брекпоинты. Как узнать максимум через саму инструкцию записи

Вот так теперь работает

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

alloc(Max_Velocity,100)
registersymbol(Max_Velocity)


PLACEgravitymode:
fld dword ptr [rcx+68]
fld dword ptr [Max_Velocity]
fcompp
fnstsw ax
sahf
ja @f
fld dword ptr [rcx+68]
fstp dword ptr [Max_Velocity]
@@:
movaps [rcx+60],xmm0
ret
jmp BACKgravitymode

 

 

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

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

А если нет возможности ставить брекпоинты. Как узнать максимум через саму инструкцию записи

 

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

 

if (newValue > lastValue)
{
    lastValue = newValue;
}

 

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

В 30.01.2017в12:37, MasterGH сказал:

Лунная гравитация это типа устремления к одной точке.

 

Например персонаж подпрыгнул, подлетел немного выше обычного (то есть не как на планете Земля), а затем более плавно (в сравнении с планетой Земля) опускается на землю. (я так себе представляю прыжок человека на луне). Вот такой эффект как сделать по средствам Velocity Y? Вот сейчас сижу и размышляю...

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

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

Например персонаж подпрыгнул, подлетел немного выше обычного (то есть не как на планете Земля), а затем более плавно (в сравнении с планетой Земля) опускается на землю. (я так себе представляю прыжок человека на луне). Вот такой эффект как сделать по средствам Velocity Y? Вот сейчас сижу и размышляю...


 

Теория. На практике не пробовал
Ставить брейкпоинт на запись. Прыгаем, падаем под спидхаком.  Там где Velocity.Y записывается (когда падаем), там смотрим код. Делаем инъекцию кода, чтобы при падении  Velocity.Y уменьшалась менее быстро. Проверить не могу, может быть позже на стриме или на видео.



 

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

В 31 января 2017 г.в08:53, Angelika сказал:

Не знала что она на юнити , интересное решение с движком , понравилось полезно


Могу предложить придти на стрим в голосе. Редко встретишь девушек на форуме. Зрителей прибавиться

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

В 02.02.2017в16:12, MasterGH сказал:

Теория. На практике не пробовал
Ставить брейкпоинт на запись. Прыгаем, падаем под спидхаком.  Там где Velocity.Y записывается (когда падаем), там смотрим код. Делаем инъекцию кода, чтобы при падении  Velocity.Y уменьшалась менее быстро. Проверить не могу, может быть позже на стриме или на видео.

 

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

 

Вчера закончил тестирование, супер прыжок и супер скорость работают только за счёт конечных Velocitys, но для лунной гравитации пришлось еще задействовать и датчик "земля-воздух (1-0)" для персонажа.

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

Прикольно прыгает на видео .

Можно попробовать сделать  прыжок как в Марио. Чем дольше идешь тем сильнее разгоняешься и дальше прыгаешь.

 

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

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

Прикольно прыгает на видео .

Можно попробовать сделать  прыжок как в Марио. Чем дольше идешь тем сильнее разгоняешься и дальше прыгаешь.

 

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

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

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

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

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

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

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