Garik66 Опубликовано 19 ноября, 2016 Поделиться Опубликовано 19 ноября, 2016 9 минут назад, AntonVit сказал: А где то твое старое видео? ЗЫ: Нашёл здесь (раскрой все спойлеры). Ссылка на комментарий Поделиться на другие сайты Поделиться
Гость Опубликовано 19 ноября, 2016 Поделиться Опубликовано 19 ноября, 2016 48 минуты назад, Garik66 сказал: ЗЫ: Нашёл здесь (раскрой все спойлеры). Ооо, ну наконец то на "ты", а то всё "вы" да "вы". Можно поподробнее об реализации за счет своего множителя? Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 19 ноября, 2016 Поделиться Опубликовано 19 ноября, 2016 (изменено) 11 минуту назад, AntonVit сказал: Ооо, ну наконец то на "ты", а то всё "вы" да "вы". Можно поподробнее об реализации за счет своего множителя? Для этого мне нужно будет по-новой для какой нибудь игры реализовать такое, так как я глобально чистил комп и много что поудалял. (Поэтому не обещаю, так как со свободным временем сейчас плохо). Но в какой то теме, что-то подобное по-моему Vlad2 выкладывал, либо laziz точно не помню, тоже вроде было связано со скоростью передвижения и реализовано было тоже через координаты (ну т.е. свой множитель). Изменено 19 ноября, 2016 пользователем Garik66 Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 19 ноября, 2016 Поделиться Опубликовано 19 ноября, 2016 Кстати вот нашёл одна из реализаций (не множитель) здесь - как работает скрипт в самом конце видео. Скрипт "RUN" из той темы из таблицы: Скрытый текст { Game : Fable Anniversary.exe Version: v.1.0 (Build 867695 / Update 5) R.G. Mechanics Date : 2016-05-02 Author : Garik66 This script does blah blah blah } [ENABLE] {$LUA} getAddressList().getMemoryRecordByID(5322).Color=0x00000ff PlaySound(findTableFile([[Activate]])) {$ASM} aobscanmodule(RUNX,Fable Anniversary.exe,F3 0F 10 81 88 00 00 00 F3 0F 58) aobscanmodule(RUNY,Fable Anniversary.exe,F3 0F 10 40 04 F3 0F 58 81 8C) aobscanmodule(RUNZ,Fable Anniversary.exe,F3 0F 10 40 08 F3 0F 58 81 90) alloc(newmem,$1000) label(newmem1) label(newmem2) label(code) label(code1) label(code2) label(return) label(return1) label(return2) label(NewSpeed) registersymbol(NewSpeed) registersymbol(RUNX) registersymbol(RUNY) registersymbol(RUNZ) newmem: movss xmm0,[ecx+00000088] cmp [NewSpeed],2 jne @f addss xmm0,[eax] jmp code @@: cmp [NewSpeed],3 jne @f addss xmm0,[eax] addss xmm0,[eax] jmp code @@: cmp [NewSpeed],4 jne code addss xmm0,[eax] addss xmm0,[eax] addss xmm0,[eax] code: jmp return newmem1: movss xmm0,[eax+04] cmp [NewSpeed],2 jne @f addss xmm0,[ecx+0000008C] jmp code1 @@: cmp [NewSpeed],3 jne @f addss xmm0,[ecx+0000008C] addss xmm0,[ecx+0000008C] jmp code1 @@: cmp [NewSpeed],4 jne code1 addss xmm0,[ecx+0000008C] addss xmm0,[ecx+0000008C] addss xmm0,[ecx+0000008C] code1: jmp return1 newmem2: movss xmm0,[eax+08] cmp [NewSpeed],2 jne @f addss xmm0,[ecx+00000090] jmp code2 @@: cmp [NewSpeed],3 jne @f addss xmm0,[ecx+00000090] addss xmm0,[ecx+00000090] jmp code2 @@: cmp [NewSpeed],4 jne code2 addss xmm0,[ecx+00000090] addss xmm0,[ecx+00000090] addss xmm0,[ecx+00000090] code2: jmp return2 NewSpeed: dd 1 RUNX: jmp newmem db 90 90 90 return: RUNY: jmp newmem1 return1: RUNZ: jmp newmem2 return2: [DISABLE] {$LUA} getAddressList().getMemoryRecordByID(5322).Color=0x0008000 PlaySound(findTableFile([[Deactivate]])) {$ASM} RUNX: db F3 0F 10 81 88 00 00 00 RUNY: db F3 0F 10 40 04 RUNZ: db F3 0F 10 40 08 unregistersymbol(NewSpeed) unregistersymbol(RUNX) unregistersymbol(RUNY) unregistersymbol(RUNZ) dealloc(newmem) { // ORIGINAL CODE - INJECTION POINT: "Fable Anniversary.exe"+1A742F4 "Fable Anniversary.exe"+1A742E7: CC - int 3 "Fable Anniversary.exe"+1A742E8: CC - int 3 "Fable Anniversary.exe"+1A742E9: CC - int 3 "Fable Anniversary.exe"+1A742EA: CC - int 3 "Fable Anniversary.exe"+1A742EB: CC - int 3 "Fable Anniversary.exe"+1A742EC: CC - int 3 "Fable Anniversary.exe"+1A742ED: CC - int 3 "Fable Anniversary.exe"+1A742EE: CC - int 3 "Fable Anniversary.exe"+1A742EF: CC - int 3 "Fable Anniversary.exe"+1A742F0: 8B 44 24 04 - mov eax,[esp+04] // ---------- INJECTING HERE ---------- "Fable Anniversary.exe"+1A742F4: F3 0F 10 81 88 00 00 00 - movss xmm0,[ecx+00000088] // ---------- DONE INJECTING ---------- "Fable Anniversary.exe"+1A742FC: F3 0F 58 00 - addss xmm0,[eax] "Fable Anniversary.exe"+1A74300: F3 0F 11 81 88 00 00 00 - movss [ecx+00000088],xmm0 "Fable Anniversary.exe"+1A74308: F3 0F 10 40 04 - movss xmm0,[eax+04] "Fable Anniversary.exe"+1A7430D: F3 0F 58 81 8C 00 00 00 - addss xmm0,[ecx+0000008C] "Fable Anniversary.exe"+1A74315: F3 0F 11 81 8C 00 00 00 - movss [ecx+0000008C],xmm0 "Fable Anniversary.exe"+1A7431D: F3 0F 10 40 08 - movss xmm0,[eax+08] "Fable Anniversary.exe"+1A74322: F3 0F 58 81 90 00 00 00 - addss xmm0,[ecx+00000090] "Fable Anniversary.exe"+1A7432A: F3 0F 11 81 90 00 00 00 - movss [ecx+00000090],xmm0 "Fable Anniversary.exe"+1A74332: C2 04 00 - ret 0004 "Fable Anniversary.exe"+1A74335: CC - int 3 } Ссылка на комментарий Поделиться на другие сайты Поделиться
Гость Опубликовано 19 ноября, 2016 Поделиться Опубликовано 19 ноября, 2016 (изменено) Прикольно, получается это такой же метод , по какому @keng делал двойной прыжок Скрытый текст Что интересно, при спидхаке персонаж в Fable Anniversary не только быстрее перемещается, но еще и соответственно этому также быстро передвигает ноги. Например в игре Watch Dog, если изменить множитель на 2,3,4... персонаж будет перемещаться быстро, но его ноги будут двигаться также как и при обычной ходьбе. Есть еще идеи как сделать суперспид персонажа? Тебе не обязательно качать игру, можно просто рассказать суть. Изменено 19 ноября, 2016 пользователем AntonVit Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 19 ноября, 2016 Поделиться Опубликовано 19 ноября, 2016 15 минуту назад, AntonVit сказал: Прикольно, получается это такой же метод , по какому @keng делал двойной прыжок Да здесь я реализовал именно как у kenga. Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 19 ноября, 2016 Поделиться Опубликовано 19 ноября, 2016 17 минуту назад, AntonVit сказал: Есть еще идеи как сделать суперспид персонажа? Не, больше этих трёх (игровой множитель, свой множитель и способа kengа) пока не знаю, не думал. Эту опцию реализовывал очень редко. Ссылка на комментарий Поделиться на другие сайты Поделиться
Dino Опубликовано 19 ноября, 2016 Поделиться Опубликовано 19 ноября, 2016 http://www.cyberforum.ru/geometry/thread552388.html Ссылка на комментарий Поделиться на другие сайты Поделиться
Гость Опубликовано 19 ноября, 2016 Поделиться Опубликовано 19 ноября, 2016 10 минуту назад, Garik66 сказал: Не, больше этих трёх (игровой множитель, свой множитель и способа kengа) пока не знаю, не думал. Эту опцию реализовывал очень редко. Расскажи суть способа "свой множитель", что да как нужно делать? Ссылка на комментарий Поделиться на другие сайты Поделиться
Гость Опубликовано 19 ноября, 2016 Поделиться Опубликовано 19 ноября, 2016 10 минуту назад, Dino сказал: http://www.cyberforum.ru/geometry/thread552388.html У меня немного другой способ, но спасибо. Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 19 ноября, 2016 Поделиться Опубликовано 19 ноября, 2016 3 минуты назад, AntonVit сказал: Расскажи суть способа "свой множитель", что да как нужно делать? 1 час назад, Garik66 сказал: Для этого мне нужно будет по-новой для какой нибудь игры реализовать такое, так как я глобально чистил комп и много что поудалял. (Поэтому не обещаю, так как со свободным временем сейчас плохо). Память плохая стала, не помню уже как делал. Ссылка на комментарий Поделиться на другие сайты Поделиться
Гость Опубликовано 19 ноября, 2016 Поделиться Опубликовано 19 ноября, 2016 Только что, Garik66 сказал: Память плохая стала, не помню уже как делал. Понял, ничего страшного, спасибо. Ссылка на комментарий Поделиться на другие сайты Поделиться
Гость Опубликовано 19 ноября, 2016 Поделиться Опубликовано 19 ноября, 2016 Гарик, а почему я не вижу тебя в онлайне? Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 19 ноября, 2016 Поделиться Опубликовано 19 ноября, 2016 Только что, AntonVit сказал: Гарик, а почему я не вижу тебя в онлайне? При входе, ставлю галочку "Анонимно" Ссылка на комментарий Поделиться на другие сайты Поделиться
Гость Опубликовано 19 ноября, 2016 Поделиться Опубликовано 19 ноября, 2016 1 минуту назад, Garik66 сказал: При входе, ставлю галочку "Анонимно" Зачем? Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 19 ноября, 2016 Поделиться Опубликовано 19 ноября, 2016 Только что, AntonVit сказал: Зачем? В своё время - засыпали вопросами - не успевал отвечать всем, после этого осталась привычка. Ссылка на комментарий Поделиться на другие сайты Поделиться
Dino Опубликовано 19 ноября, 2016 Поделиться Опубликовано 19 ноября, 2016 5 минут назад, AntonVit сказал: У меня немного другой способ, но спасибо. Способов всего два: 1) реверсить игру и искать множитель передвижения 2) самому генерировать новые координаты, посредством тригонометрических формул(ссылку скинул выше), но для этого нужно еще и угол поворота найти Есть еще третий способ, но он грязный - это ускорить или замедлить всю игру, как это делается в СЕ Ссылка на комментарий Поделиться на другие сайты Поделиться
Гость Опубликовано 19 ноября, 2016 Поделиться Опубликовано 19 ноября, 2016 Только что, Dino сказал: Способов всего два: 1) реверсить игру и искать множитель передвижения 2) самому генерировать новые координаты, посредством тригонометрических формул(ссылку скинул выше), но для этого нужно еще и угол поворота найти Есть еще третий способ, но он грязный - это ускорить или замедлить всю игру, как это делается в СЕ А еще есть четвертый способ, - продублировать инструкцию работающую с координатами (как у Гарика и Kenga). Угол поворота - Азимут имеется в виду? Ссылка на комментарий Поделиться на другие сайты Поделиться
Гость Опубликовано 19 ноября, 2016 Поделиться Опубликовано 19 ноября, 2016 Есть еще и пятый, тот что у меня Ссылка на комментарий Поделиться на другие сайты Поделиться
Dino Опубликовано 19 ноября, 2016 Поделиться Опубликовано 19 ноября, 2016 8 минут назад, AntonVit сказал: А еще есть четвертый способ, - продублировать инструкцию работающую с координатами (как у Гарика и Kenga). Это прокатит с высотой прыжка, но не с передвижением 11 минуту назад, AntonVit сказал: Угол поворота - Азимут имеется в виду? Да Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 19 ноября, 2016 Поделиться Опубликовано 19 ноября, 2016 20 минуты назад, Dino сказал: Это прокатит с высотой прыжка, но не с передвижением Если работать именно с координатами, то да. Я работал не с координатами (AntonVit ошибся), а с дельтой (разница м/у текущей и следующей координатой) в Fable Anniversary в коде инструкции с координатами и с дельтами находились рядом. Мне было влом выходить, где эти дельты рассчитываются, поэтому воспользовался способом kengа. Dino, вот посмотри видео: Скрипт здесь. Ссылка на комментарий Поделиться на другие сайты Поделиться
Dino Опубликовано 19 ноября, 2016 Поделиться Опубликовано 19 ноября, 2016 Ну здесь в eax наверное и хранится то что принято называть множителем скорости, а ниже по коду уже производится подсчет новых координат с учетом этого множителя Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 19 ноября, 2016 Поделиться Опубликовано 19 ноября, 2016 3 минуты назад, Dino сказал: Ну здесь в eax наверное и хранится то что принято называть множителем скорости, а ниже по коду уже производится подсчет новых координат с учетом этого множителя в еах лежит адрес в [eax+a] - лежат координты в [ecx+b] - лежат дельты. Ссылка на комментарий Поделиться на другие сайты Поделиться
Гость Опубликовано 19 ноября, 2016 Поделиться Опубликовано 19 ноября, 2016 Не думал что в играх с персонажем, тоже есть так называемые дельты. По средствам них проще всего сделать супер-скорость, не нужно искать множитель, не нужно заниматься тригонометрией. Можно сделать плавное ускорение до выбранной определенной скорости бега, тогда это будет смотреться более естественно. Персонаж будет иметь просто более высокую скорость бега. Пример кода для плавного ускорения Скрытый текст Multiply: dd (float)1.01 MultiplyAdder: dd (float)0.01 newmem: cmp [hotkey_Speed],#1 je SpeedAct some orig code mov [Multiply],(float)1.01 jmp exit SpeedAct: cmp [Multiply],(float)1.2 jge @f fld dword ptr [Multiply] fadd dword ptr [MultiplyAdder] fstp dword ptr [Multiply] @@: fld dword ptr [adress_delta_X] fmul dword ptr [Multiply] fstp dword ptr [adress_delta_X] fld dword ptr [adress_delta_Y] fmul dword ptr [Multiply] fstp dword ptr [adress_delta_Y] jmp exit Получается что способа всего три; множитель, тригонометрия с координатами положения, и работа с дельтами. Я хотел сделать по способу тригонометрии, взять для работы координаты X,Y персонажа, и косинус/синус камеры слежения. Далее воспользоваться формулой to X = X + cos * Multiply to Y = Y + sin * Multiply Но минус такого способа заключается в том, что персонаж может уйти под землю, если перед ним окажется горка. Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 19 ноября, 2016 Поделиться Опубликовано 19 ноября, 2016 18 минуту назад, AntonVit сказал: Не думал что в играх с персонажем, тоже есть так называемые дельты. Тоже не думал, но нашлись. Собственно другая реализация моя была именно в создании этих дельт в ручную (так как не находил игровых ни дельт, ни множителя для игры, т.е. пришлось опираться только на инструкции работающие с координатами) в инъекции и использовании их. И это тоже работало. Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения