eXeLab
eXeL@B ВИДЕОКУРС !

ВИДЕОКУРС ВЗЛОМ
выпущен 1 марта!


УЗНАТЬ БОЛЬШЕ >>
Домой | Статьи | RAR-cтатьи | FAQ | Форум | Скачать | Видеокурс
Новичку | Ссылки | Программирование | Интервью | Архив | Связь

Русский / Russian English / Английский

Сейчас на форуме: zmixa (+2 невидимых)
 · Начало · Статистика · Регистрация · Поиск · ПРАВИЛА ФОРУМА · Язык · RSS · SVN ·

 eXeL@B —› Вопросы новичков —› Как это сделать в игре?
Посл.ответ Сообщение

Ранг: 0.3 (гость)
Статус: Участник

Создано: 3 марта 2019 13:29 · Поправил: Simcher New!
Цитата · Личное сообщение · #1

В игре есть диалоговые окна с НПС, в диалог можно войти с расстояния до 4-х клеток, если дальше, то персонаж сначала подбежит вплотную к НПС, а потом появится диалог.
Вопрос, как сделать так, чтобы диалоги открывались с любого расстояния?
Я точно знаю, что это не привязано к серверу, поскольку с спидхаком можно быстрее получать диалог.
Прикрепил видео, чтобы было понятнее.
https://youtu.be/mWtR-38p82c

Ранг: 60.8 (постоянный)
Статус: Участник

Создано: 3 марта 2019 13:39 New!
Цитата · Личное сообщение · #2

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

Ранг: 1.6 (гость)
Статус: Участник

Создано: 3 марта 2019 14:08 · Поправил: LShadow77 New!
Цитата · Личное сообщение · #3

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

Ранг: 0.3 (гость)
Статус: Участник

Создано: 3 марта 2019 14:09 New!
Цитата · Личное сообщение · #4

1 - Когда я нахожусь далеко от НПС и хочу войти в диалог выполняется сначала 1 инструкция, потом вторая, когда я уже подошёл и открылось окно.
2 - Если же я нахожусь в пороге и вхожу в диалог, выполняется только первая инструкция.
Что мне нужно сделать?
------------------
1:


2:

Ранг: 60.8 (постоянный)
Статус: Участник

Создано: 3 марта 2019 14:23 · Поправил: Boostyq New!
Цитата · Личное сообщение · #5

Simcher пишет:
Что мне нужно сделать?

Скинуть сюда главные бинарник игры, посмотрю.

Ранг: 1.6 (гость)
Статус: Участник

Создано: 3 марта 2019 14:25 · Поправил: LShadow77 New!
Цитата · Личное сообщение · #6

Как вариант, изменить je на jmp и посмотреть, что получится. Одним словом, нужно экспериментировать.

Ранг: 0.3 (гость)
Статус: Участник

Создано: 3 марта 2019 14:35 New!
Цитата · Личное сообщение · #7

Вот бинарник - https://dropmefiles.com/aC4E9
LShadow77, менял, никакого эффекта, я подозреваю, что мог найти не то, что нужно.

Ранг: 60.8 (постоянный)
Статус: Участник

Создано: 3 марта 2019 14:53 New!
Цитата · Личное сообщение · #8

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

Ранг: 0.3 (гость)
Статус: Участник

Создано: 3 марта 2019 15:33 New!
Цитата · Личное сообщение · #9

Вчера целый день экспериментировал, заметил такое: когда один из jne меняешь на nop перестаёт браться диалог.

Ранг: 60.8 (постоянный)
Статус: Участник

Создано: 3 марта 2019 16:00 · Поправил: Boostyq New!
Цитата · Личное сообщение · #10

Simcher пишет:
целый день экспериментировал

Чего тут экспериментировать у вас же пдбшка на скрине.
NGELocalHero+0x104 - это актор с которым вы собираетесь говорить
Актор+0x5C - это его координаты в мире (float xzy), если он недосягаем то отправляется пакет следования до его координат.
По 006C4648 планируется контакт, когда ты до него дойдешь, а по 006C4698 непосредственно отправка пакета для следования до него, а 414870 это функа которая отправляет пакет торговли.


Ранг: 155.0 (ветеран)
Статус: Участник

Создано: 3 марта 2019 16:02 New!
Цитата · Личное сообщение · #11

Чем например вот это сравнение с 4.0 не проверка расстояния в 4 клетки перед CActionTrade?

| Сообщение посчитали полезным: Simcher



Ранг: 1002.1 (!!!!)
Статус: Участник

Создано: 3 марта 2019 16:22 New!
Цитата · Личное сообщение · #12

а если НПС больше одного ?
диалог к какому должен будет открываться ?
расстояние 4 клетки видимо максимальное расстояние между ними


Ранг: 155.0 (ветеран)
Статус: Участник

Создано: 3 марта 2019 16:23 New!
Цитата · Личное сообщение · #13

reversecode пишет:
а если НПС больше одного ?

Он не может кликнуть в нескольких нпц, это ж наверное рпг. Клик, проверка 4 ли метра, если да открыть диалог, если нет, бежать.


Ранг: 1002.1 (!!!!)
Статус: Участник

Создано: 3 марта 2019 16:26 New!
Цитата · Личное сообщение · #14

он один на всю карту или на всю область видимости ?
а может они сразу все на всю игру и игра только клетками измеряется
как вычислять на какой будет акшин если убрать лимит в 4 ?


Ранг: 155.0 (ветеран)
Статус: Участник

Создано: 3 марта 2019 16:28 New!
Цитата · Личное сообщение · #15

reversecode пишет:
он один на всю карту или на всю область видимости ?

Наверное при клике выбираются координаты выбранного объекта и по теореме Пифагора берется расстояние, как лимит повлияет на акшин?


Ранг: 1002.1 (!!!!)
Статус: Участник

Создано: 3 марта 2019 16:31 New!
Цитата · Личное сообщение · #16

там событие только на объекте ?
я так понял на любом месте карты в пределах 4 клеток

Ранг: 60.8 (постоянный)
Статус: Участник

Создано: 3 марта 2019 16:34 · Поправил: Boostyq New!
Цитата · Личное сообщение · #17

reversecode пишет:
он один на всю карту

Вы на него клацаете мышкой и уже его указатель идет в функцию 6C4520 (ebp+8), далее в зависимости от типа взаимодействия (ebp+10) происходят проверки и отправки нужных пакетов, например для типа 4 (trade) проверится расстояние, если вы близко то пакет о трейде, если нет, то планирование трейда + пакет следования по координатам актора.
Сам актор наверное вычисляется по координатам клика где-то выше (т.к. игра видимо псевдотрехмерная), перед вызовом этой вирт функи.
П.С. для Simcher сама проверка по адресу 006C428B как написал f13nd, вам нужно заменить jp на nop, но не факт что сервер это скушает, он наверняка знает координаты нпц и может вести логи.


Ранг: 155.0 (ветеран)
Статус: Участник

Создано: 3 марта 2019 16:55 New!
Цитата · Личное сообщение · #18

Boostyq пишет:
он наверняка знает координаты нпц и может вести логи

Там в первом посте сказано, что спидхак в игре работает, разработчики еще не пуганые читерами. В рпг вроде больше стремятся тюнинговать глобал кулдаун абилок, если сервер это не контролирует или хотя бы расстояние до врага, чтоб милишными абилками бить. Но расстояние для взаимодействия с нпц?..

Ранг: 0.3 (гость)
Статус: Участник

Создано: 4 марта 2019 17:48 New!
Цитата · Личное сообщение · #19

Всем спасибо большое!
Совет от f13nd помог.
Заменил 4.0 на 256 и теперь с конца локи могу брать диалог!
У меня есть вопрос, можно ли ещё сделать по типу этого?
Торговать, например, не получается даже со спидхаком, надо, чтобы перс реально подошёл к НПС.


Ранг: 155.0 (ветеран)
Статус: Участник

Создано: 4 марта 2019 18:33 New!
Цитата · Личное сообщение · #20

Simcher пишет:
Tорговать, например, не получается даже со спидхаком, надо, чтобы перс реально подошёл к НПС.

Возможно дистанцию для торговли как раз сервак контролирует. Если ты поменял само значение flt_77FB24, оно должно было и дистанцию атаки до 256 увеличить. Если этого не произошло, значит сервак перепроверил.
 eXeL@B —› Вопросы новичков —› Как это сделать в игре?

Оригинальный DVD-ROM: eXeL@B DVD !

Вы находитесь на форуме сайта EXELAB.RU
Проект ReactOS