afro228offical Опубликовано 9 апреля, 2015 Поделиться Опубликовано 9 апреля, 2015 (изменено) Наткнулся на такую инструкцию "movq" , она изменяет координату (x) . Как сделать speedhack? Все значения , всё нашёл ... Помогите плз... Изменено 9 апреля, 2015 пользователем afro228offical Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 9 апреля, 2015 Поделиться Опубликовано 9 апреля, 2015 Выложи, то что уже написал (скрипт), попробуем его исправить. Ссылка на комментарий Поделиться на другие сайты Поделиться
afro228offical Опубликовано 9 апреля, 2015 Автор Поделиться Опубликовано 9 апреля, 2015 Выложи, то что уже написал (скрипт), попробуем его исправить.Я скрипт не писал... Ссылка на комментарий Поделиться на другие сайты Поделиться
Dison Опубликовано 9 апреля, 2015 Поделиться Опубликовано 9 апреля, 2015 Я скрипт не писал... Ну во первых действительно выложи скрипт, и конкретно объясни что ты хочешь сделать. Ускорить игру? Ссылка на комментарий Поделиться на другие сайты Поделиться
afro228offical Опубликовано 9 апреля, 2015 Автор Поделиться Опубликовано 9 апреля, 2015 (изменено) Ну во первых действительно выложи скрипт, и конкретно объясни что ты хочешь сделать. Ускорить игру?Хочу сделать ускорение по координате "х" , но я хз , как это сделать ... Координату нашёл, инструкцию , пишущую туда, нашёл (movq), а хочу , чтобы персонаж двигался быстрее ... Изменено 9 апреля, 2015 пользователем afro228offical Ссылка на комментарий Поделиться на другие сайты Поделиться
Dison Опубликовано 9 апреля, 2015 Поделиться Опубликовано 9 апреля, 2015 Хочу сделать ускорение по координате "х" Т.е. Хочешь сделать чтобы игрок в игре быстро бегал? Да и еще что за игра? Ссылка на комментарий Поделиться на другие сайты Поделиться
afro228offical Опубликовано 9 апреля, 2015 Автор Поделиться Опубликовано 9 апреля, 2015 Т.е. Хочешь сделать чтобы игрок в игре быстро бегал? Да и еще что за игра?Block-Story Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 9 апреля, 2015 Поделиться Опубликовано 9 апреля, 2015 Сомневаюсь, что с такой малой инфой, которую ты дал, кто-то тебе поможет.Вот обрати внимание на соседний топик (здесь.- вот так нужно подавать инфу: 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
afro228offical Опубликовано 9 апреля, 2015 Автор Поделиться Опубликовано 9 апреля, 2015 Сомневаюсь, что с такой малой инфой, которую ты дал, кто-то тебе поможет.Вот обрати внимание на соседний топик (здесь.- вот так нужно подавать инфу:http://vk.cc/3Ffci2 , хочу сделать как тут, но инструкция в той игре другая (movq) ... Может мне сигнатуры сюда скинуть? Ссылка на комментарий Поделиться на другие сайты Поделиться
Гость Опубликовано 9 апреля, 2015 Поделиться Опубликовано 9 апреля, 2015 Наткнулся на такую инструкцию "movq" , она изменяет координату (x) . Как сделать speedhack? Все значения , всё нашёл ... Помогите плз...Умножай значение координат на свой множитель - это и есть "SpeedHack".Допустим, скорость бега персонажа равняется 50-ти, это значит, что при каждом срабатывании инструкции, при движении вперед - будет увеличиваться значение координаты X на 50, а координата Y - в зависимости от угла направления персонажа.То есть расчет будет примерно такой: (как я себе представляю)X = X + 50; // скорость по координате XY = Y + I; // скорость по координате YГде "X" и "Y" - это координаты, где "i" - направление персонажа (угол поворота камеры).Тебе же нужно сделать как-нибудь так:X = X + (50 * 2); // скорость по координате XY = Y + (I * 2); // скорость по координате YТо есть в данном примере - умножение идет на два (в координате X на константу скорости движения вперед, а в Y - умножение переменной направления персонажа), соответственно, каждое срабатывание инструкции будет двигать персонажа дальше, чем оригинальная инструкция.Ну, это то, как я делаю SpeedHack, может есть методы лучше. Ссылка на комментарий Поделиться на другие сайты Поделиться
afro228offical Опубликовано 9 апреля, 2015 Автор Поделиться Опубликовано 9 апреля, 2015 Умножай значение координат на свой множитель - это и есть "SpeedHack".Допустим, скорость бега персонажа равняется 50-ти, это значит, что при каждом срабатывании инструкции, при движении вперед - будет увеличиваться значение координаты X на 50, а координата Y - в зависимости от угла направления персонажа.То есть расчет будет примерно такой: (как я себе представляю)X = X + 50; // скорость по координате XY = Y + I; // скорость по координате YГде "X" и "Y" - это координаты, где "i" - направление персонажа (угол поворота камеры).Тебе же нужно сделать как-нибудь так:X = X + (50 * 2); // скорость по координате XY = Y + (I * 2); // скорость по координате YТо есть в данном примере - умножение идет на два (в координате X на константу скорости движения вперед, а в Y - умножение переменной направления персонажа), соответственно, каждое срабатывание инструкции будет двигать персонажа дальше, чем оригинальная инструкция.Ну, это то, как я делаю SpeedHack, может есть методы лучше. Твой метод мне и нужен, но как это сделать в отладчике? Ссылка на комментарий Поделиться на другие сайты Поделиться
MasterGH Опубликовано 9 апреля, 2015 Поделиться Опубликовано 9 апреля, 2015 Скорость передвижения игрока должна быть в коде игры. Это железно. 1) либо это +смещение по времени. Тогда менять смещение увеличивая его или умножая его ПримерЗдесь Vector3.Forward = new Vector3(0f,0f,1f). Т.е. здесь по времени приращение 1f по локальному направлению Z. Можем умножать вектор направления на скорость 2) либо это +смещение по времени * скорость. Тогда тупо меняем скорость ПримерИщем адрес скорости и меняем его например на 4 3) либо как предложил автор темы, дописывать дополнительный код по работе с координами. Но для этого надо знать ассемблер. Увеличивать изменении координаты в N раз. Так что либо ищем адрес скорости и меняем его, либо пишем АА скрипты (или на другом языке например C++) работу с координатами.void Update{ transform.Translate(Vector3.Forward * Time.deltaTime);}public float speed = 2f;void Update{ transform.Translate(Vector3.Forward * speed * Time.deltaTime); // перемещение будет в два раза быстрее}public float speed = 2f;void Update{ transform.Translate(Vector3.Forward * speed * Time.deltaTime); // перемещение будет в два раза быстрее}public float speed = 4f;void Update{ transform.Translate(Vector3.Forward * speed * Time.deltaTime); // перемещение будет в два раза быстрее} Ссылка на комментарий Поделиться на другие сайты Поделиться
afro228offical Опубликовано 10 апреля, 2015 Автор Поделиться Опубликовано 10 апреля, 2015 Скорость передвижения игрока должна быть в коде игры. Это железно. 1) либо это +смещение по времени. Тогда менять смещение увеличивая его или умножая его ПримерЗдесь Vector3.Forward = new Vector3(0f,0f,1f). Т.е. здесь по времени приращение 1f по локальному направлению Z. Можем умножать вектор направления на скорость 2) либо это +смещение по времени * скорость. Тогда тупо меняем скорость ПримерИщем адрес скорости и меняем его например на 4 3) либо как предложил автор темы, дописывать дополнительный код по работе с координами. Но для этого надо знать ассемблер. Увеличивать изменении координаты в N раз. Так что либо ищем адрес скорости и меняем его, либо пишем АА скрипты (или на другом языке например C++) работу с координатами.P.S. инструкция выглядит так: movq [edi+смещение],xmm5Что делать?void Update{ transform.Translate(Vector3.Forward * Time.deltaTime);}public float speed = 2f;void Update{ transform.Translate(Vector3.Forward * speed * Time.deltaTime); // перемещение будет в два раза быстрее}public float speed = 2f;void Update{ transform.Translate(Vector3.Forward * speed * Time.deltaTime); // перемещение будет в два раза быстрее}public float speed = 4f;void Update{ transform.Translate(Vector3.Forward * speed * Time.deltaTime); // перемещение будет в два раза быстрее} Ссылка на комментарий Поделиться на другие сайты Поделиться
Xipho Опубликовано 10 апреля, 2015 Поделиться Опубликовано 10 апреля, 2015 Умножить на какое-то число регистр xmm5. Или прибавить к нему какое-то число. Тут уже смотреть надо. Попробуй и то, и другое. Ссылка на комментарий Поделиться на другие сайты Поделиться
afro228offical Опубликовано 10 апреля, 2015 Автор Поделиться Опубликовано 10 апреля, 2015 Умножить на какое-то число регистр xmm5. Или прибавить к нему какое-то число. Тут уже смотреть надо. Попробуй и то, и другое.Ок! , там ещё на верху есть инструкции , попробую узнать , что они делают ... Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 10 апреля, 2015 Поделиться Опубликовано 10 апреля, 2015 (изменено) Что делать?Тут всё зависит от нужной задачи.Дальше мои теоретические выкладки, т.к. вопрос полностью не исследовал. Если нужно нормальное ускорение передвижения, то нужно искать именно коэффициенты скорости. Например как здесь через поиск по заранее известному названию коэффициентов, либо искать в структуре самому (методом проб и ошибок), как например делал JIeXA (написал об этом в этом сообщении. Если достаточно и дискретного увеличения передвижения, т.е. при каждом шаге ГГ делает просто больше шаг, то можно и через координаты.Для этого нужно:1. Выйти на разовые инструкции для каждой координаты (что я подразумеваю под разовые - на каждый шаг -> одно срабатывание инструкции.)2. Дальше можно делать двумя способами: 2.1. Работаем непосредственно с координатой. Возьму твою инструкцию movq [edi+смещение],xmm5fld dword ptr[edi+смещение] // выгружаем в стек значение координатыfmul dword ptr [mnozitel] // умножаем значение в стеке на множитель, про множитель ниже.fstp dword ptr[edi+смещение]// выгружаем из стека в адрес новое значение координаты.про множитель почитай это моё сообщение (или лучше весь) топик. 2.2. Работаем с разницей в значениях координат между шагом.push eax push ebx // сохраняем регистрыmov eax,dword ptr [edi+смещение] // записываем в него координату.push eax // сохраняем старую координату в стеке movq [edi+смещение],xmm5 // получаем новое значение координатыfsub eax,dword ptr [edi+смещение]// рассчитываем разницу imul ebx,eax,4 // ebx - сюда запишется результат (новый шаг), eax - разница, // 4 - в данном случае множительpop eax // восстанавливаем в eax старую координатуfadd eax,ebx // прибавляем к координате новый шагmov dword ptr [edi+смещение],eax // записываем новую координату по адресуpop ebx // восстанавливаем регистры pop eax Коды могут быть неточные, т.к. без отладки в игре я за них не ручаюсь. Но мысль примерно такая. Изменено 10 апреля, 2015 пользователем Garik66 2 Ссылка на комментарий Поделиться на другие сайты Поделиться
afro228offical Опубликовано 10 апреля, 2015 Автор Поделиться Опубликовано 10 апреля, 2015 Тут всё зависит от нужной задачи.Дальше мои теоретические выкладки, т.к. вопрос полностью не исследовал. Если нужно нормальное ускорение передвижения, то нужно искать именно коэффициенты скорости. Например как здесь через поиск по заранее известному названию коэффициентов, либо искать в структуре самому (методом проб и ошибок), как например делал JIeXA (написал об этом в этом сообщении. Если достаточно и дискретного увеличения передвижения, т.е. при каждом шаге ГГ делает просто больше шаг, то можно и через координаты.Для этого нужно:1. Выйти на разовые инструкции для каждой координаты (что я подразумеваю под разовые - на каждый шаг -> одно срабатывание инструкции.)2. Дальше можно делать двумя способами: 2.1. Работаем непосредственно с координатой. Возьму твою инструкцию movq [edi+смещение],xmm5fld dword ptr[edi+смещение] // выгружаем в стек значение координатыfmul dword ptr [mnozitel] // умножаем значение в стеке на множитель, про множитель ниже.fstp dword ptr[edi+смещение]// выгружаем из стека в адрес новое значение координаты.про множитель почитай это моё сообщение (или лучше весь) топик. 2.2. Работаем с разницей в значениях координат между шагом.push eax push ebx // сохраняем регистрыmov eax,dword ptr [edi+смещение] // записываем в него координату.push eax // сохраняем старую координату в стеке movq [edi+смещение],xmm5 // получаем новое значение координатыfsub eax,dword ptr [edi+смещение]// рассчитываем разницу imul ebx,eax,4 // ebx - сюда запишется результат (новый шаг), eax - разница, // 4 - в данном случае множительpop eax // восстанавливаем в eax старую координатуfadd eax,ebx // прибавляем к координате новый шагmov dword ptr [edi+смещение],eax // записываем новую координату по адресуpop ebx // восстанавливаем регистры pop eax Коды могут быть неточные, т.к. без отладки в игре я за них не ручаюсь. Но мысль примерно такая.Суть в том , что когда иду по координате "x" Прибавлялось и уменьшалось не по 1 (допустим, метру) а по 2 (метра) Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 10 апреля, 2015 Поделиться Опубликовано 10 апреля, 2015 Во-первых, не копируйте полностью цитируемое сообщение - потом очень тяжело читать топик. Суть в том , что когда иду по координате "x" Прибавлялось и уменьшалось не по 1 (допустим, метру) а по 2 (метра)Тогда никакого умножения не нужно.fld dword ptr[edi+смещение] // выгружаем в стек значение координатыfadd dword ptr [metr] // прибавляем к значению в стеке metrfstp dword ptr[edi+смещение]// выгружаем из стека в адрес новое значение координаты...................................metr:dd (float)1 // здесь объявляем 1 метр (сколько он равен единицам в игре) 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
afro228offical Опубликовано 10 апреля, 2015 Автор Поделиться Опубликовано 10 апреля, 2015 Во-первых, не копируйте полностью цитируемое сообщение - потом очень тяжело читать топик. Тогда никакого умножения не нужно.fld dword ptr[edi+смещение] // выгружаем в стек значение координатыfadd dword ptr [metr] // прибавляем к значению в стеке metrfstp dword ptr[edi+смещение]// выгружаем из стека в адрес новое значение координаты...................................metr:dd (float)1 // здесь объявляем 1 метр (сколько он равен единицам в игре) Можно в ЛС скину скрин кода? Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 10 апреля, 2015 Поделиться Опубликовано 10 апреля, 2015 Во-первых, не копируйте полностью цитируемое сообщение - потом очень тяжело читать топик. Можно в ЛС скину скрин кода?Зачем?Игру я качать не хочу. Я сейчас другой игрушкой занимаюсь.Лучше сам пробуй: пиши скрипт, выкладывай, спрашивай - учись.Вот к примеру прочти статью по работе с вещественными числами:http://pblog.ru/?p=241 Ссылка на комментарий Поделиться на другие сайты Поделиться
afro228offical Опубликовано 10 апреля, 2015 Автор Поделиться Опубликовано 10 апреля, 2015 Во-первых, не копируйте полностью цитируемое сообщение - потом очень тяжело читать топик. Зачем?Игру я качать не хочу. Я сейчас другой игрушкой занимаюсь.Лучше сам пробуй: пиши скрипт, выкладывай, спрашивай - учись.Вот к примеру прочти статью по работе с вещественными числами:http://pblog.ru/?p=241 ты прост глянь ...Как найти коэффициент ?P.S. , скажу сразу для других ... Инструкция обращается к адресу постоянно , я забыл об этом упомянуть раньше... Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 11 апреля, 2015 Поделиться Опубликовано 11 апреля, 2015 Вот нашёл про сам опкод MOVQ:"инструкция MOV для 64-битных операндов из памяти в MMX регистр, называется MOVQ. Символ Q означает QUAD WORD (четыре слова)" Ссылка на комментарий Поделиться на другие сайты Поделиться
afro228offical Опубликовано 29 апреля, 2015 Автор Поделиться Опубликовано 29 апреля, 2015 Всё , кароч. я понял , как искать множитель скорости... Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 30 апреля, 2015 Поделиться Опубликовано 30 апреля, 2015 Всё , кароч. я понял , как искать множитель скорости...afro228offical, может и нам теперь расскажешь, как гарантированно искать множитель скорости? Ссылка на комментарий Поделиться на другие сайты Поделиться
afro228offical Опубликовано 30 апреля, 2015 Автор Поделиться Опубликовано 30 апреля, 2015 afro228offical, может и нам теперь расскажешь, как гарантированно искать множитель скорости?По структуре ... Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения