Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
04 Dec 2008, 14:27
Сообщение
#1
|
|
|
Member Сообщений: 92 Спасибо сказали: 23 раза |
Вчера долго трассировал экзешник, на предмет запрета прокладывания маршрута в чужой ход, дело немного осложняется частыми вылетами игры под трассером, частым отвалом соединения.
Ещё небольшая проблема, что почему-то, немного по-разному прыгает. Кое-какие изменения уже внёс (спасибо Берсерку за разлоченный экзешник) |
|
|
|
05 Dec 2008, 01:17
Сообщение
#2
|
|
|
Member Сообщений: 92 Спасибо сказали: 23 раза |
Мляяяяяяя........
Кажись получилось!!!!!!!!!!!!!!!!!!! П.С. Я в восторге!!!!!! |
|
|
|
05 Dec 2008, 08:19
Сообщение
#3
|
|
|
Member Сообщений: 92 Спасибо сказали: 23 раза |
Почти до утра сидел ковырялся в ассемблере
и 1 раз под отладчика получилось - начал прокладывать маршруты в чужой ход!!!! Но потом повторить больше не удалось. А в конце вообще защёл в тупик (((( |
|
|
|
05 Dec 2008, 11:04
Сообщение
#4
|
|
![]() допустим, мяў Сообщений: 24 123 Спасибо сказали: 13434 раза |
Маршрут сотрётся, если по нему пройдёт другой герой. Хотя не знаю, может он и восстановится при переключении.
-------------------- Вокруг столько фильмов, книг, музыки - а природа какая невероятная!
Если тебе скучно жить - ты совсем дурак. (Татьяна Черниговская) |
|
|
|
05 Dec 2008, 16:50
Сообщение
#5
|
|
![]() Яблочный произвол! Сообщений: 11 080 Спасибо сказали: 3988 раз |
Цитата(hippocamus @ 05 Dec 2008, 11:04) Маршрут сотрётся, если по нему пройдёт другой герой. Хотя не знаю, может он и восстановится при переключении. если быть точным, то сотрется только изображение |
|
|
|
05 Dec 2008, 17:28
Сообщение
#6
|
|
|
Member Сообщений: 92 Спасибо сказали: 23 раза |
Цитата(gamecreator @ 05 Dec 2008, 19:50) Цитата(hippocamus @ 05 Dec 2008, 11:04) Маршрут сотрётся, если по нему пройдёт другой герой. Хотя не знаю, может он и восстановится при переключении. если быть точным, то сотрется только изображение А в свой ход восстановится |
|
|
|
07 Dec 2008, 19:04
Сообщение
#7
|
|
|
Member Сообщений: 92 Спасибо сказали: 23 раза |
Ангел, спасибо что разместил инфу про Era.
Модераторы продублируйте тот пост Ангела в отдельную тему. Ещё вопросик насчёт совместимости с ТЕ: получается только необходимо проверить что в ТЕ не используются переменные v50-v99 а так всё должно работать. По поводу запароленых сейвов... не пойму почему невозможно.... у тя же я так понял есть возможность подключать dll-ки + уже есть GZipWrite и Рид Автосейв каунтер - это и есть прога которая просто переименовывает текущий автосейв в автосейв текущего дня. Расскажу как идёт моё обучение ассемблеру: 1) Спасибо сергрою что посоветовал OllyDbg он гораздо удобнее и безглючнее чем W32dasm 2) Оч долго дебажил код, смог найти функцию и добится прокладки маршрута в чужой ход, но после передачи всё возвращается как было ((( нашёл место где передаётся клик в формате карты X, Y, Z понял что там структура посложнее с маршрутами, чем я думал сначала и придётся ещё немало поковырятся что бы разобратся и реализовать правильно понял что теоретически реально реализовать ОДНОВРЕМЕННЫЕ ХОДЫ!!!! 3) Где-то недавно видел на форуме была ссылочка на дизасемблер, который генерит дополнительно псевдо код, даже посмотрел там на сайте видео курс - скиньте плиз если кто знает. Мб проще будет разобратся со всеми этими call'ами |
|
|
|
11 Dec 2008, 10:05
Сообщение
#8
|
|
|
Member Сообщений: 92 Спасибо сказали: 23 раза |
Сегодня почти до утра опять копал код.
Есть подвижки: Удалось в чужой ход совершать все действия: ходить, драться, собирать ресурсы Но после передачи хода, всё вернулось на круги своя (((( Правда и было это реализовано корявенько: в переменной по адресу 69CCFC содержатся следующий значения: 4160B18 - если сейчас ход красного игрока 4160С80 - если ход синего игрока видимо и так далее для остальных цветов. И по этим адресам всякие структуры соответственно если играешь красным, то в 4160B18, а 4160С80 нули. По адресу [69CCFC+4] - вроде текущий выбранный герой Если играешь красным игроком, то в твой ход 69CCFC = 4160B18, после передачи хода = 4160С80 Я после передачи 4160С80 изменил на 4160B18 и смог делать все действия с некоторыми бажками, правда все действия совершал от имени синего игрока ))) т.е. если подходишь к синему игроку, то с ним открывается диалог передачи войск, а если к своему, то битва )))) После передачи хода обратно всё вернулось на место. В общем надо дальше ковырять: что бы всё происходило от своего имени, что бы после передачи не перетирались ячейки памяти, которые отвечают за расположение героев. Тогда реально будет реализовать одновременные ходы. В общем надежда появилась. P.S. ИДА + HEXRay - рулит для исследования кода OllyDbg - для изменения на лету в дебагере Спасибо сказали: |
|
|
|
| Гость_Aнгeл_* |
11 Dec 2008, 19:07
Сообщение
#9
|
|
|
Имхо, всё равно идёт сихронизация между игроками, потому изменения всегда будут исчезать.
|
|
|
|
11 Dec 2008, 19:09
Сообщение
#10
|
|
![]() допустим, мяў Сообщений: 24 123 Спасибо сказали: 13434 раза |
Хитро!
В принципе даже подмене своей принадлежности можно найти применение, если подумать. -------------------- Вокруг столько фильмов, книг, музыки - а природа какая невероятная!
Если тебе скучно жить - ты совсем дурак. (Татьяна Черниговская) |
|
|
|
| Гость_Хмм.._* |
11 Dec 2008, 20:00
(Сообщение отредактировал Хмм.. - 11 Dec 2008, 19:58)
Сообщение
#11
|
|
|
Цитата(asm @ 11 Dec 2008, 10:05) 4160B18 - если сейчас ход красного игрока 4160С80 - если ход синего игрока Эти значения впринципе не постоянны (это динамически выделяемая память). И вероятнее всего указатели на структуру текущего игрока. И все равно одновременный ход врядли возможен. Игра не зря походовая, и все на этом завязано, одной структурой не обойтись Добавлено ([mergetime]1229014805[/mergetime]): Цитата(hippocamus @ 11 Dec 2008, 19:09) Хитро! В принципе даже подмене своей принадлежности можно найти применение, если подумать. Это может привести к багам. Особенно если это провернуть с ИИ игроком. Например захват своего собственного замка? или еще чего. |
|
|
|
11 Dec 2008, 21:07
Сообщение
#12
|
|
|
Member Сообщений: 92 Спасибо сказали: 23 раза |
Цитата(Aнгeл @ 11 Dec 2008, 22:07) Имхо, всё равно идёт сихронизация между игроками, потому изменения всегда будут исчезать. Ну я же говорю что ща надо копать в сторону, что бы принимать не все изменения. Это долгая, трудная и кропотливая работа, но она возможна! Цитата(hippocamus @ 11 Dec 2008, 22:09) Хитро! В принципе даже подмене своей принадлежности можно найти применение, если подумать. ага, можно, например, играть одновременно за 1 цвет, обмениватся армией, заходить в чужой замок )))) но это пока только в теории ) Цитата(Хмм.. @ 11 Dec 2008, 23:00) Цитата(asm @ 11 Dec 2008, 10:05) 4160B18 - если сейчас ход красного игрока 4160С80 - если ход синего игрока Эти значения впринципе не постоянны (это динамически выделяемая память). И вероятнее всего указатели на структуру текущего игрока. И все равно одновременный ход врядли возможен. Игра не зря походовая, и все на этом завязано, одной структурой не обойтись Это да, динамическая память, значения выпадали всегда одинаковые, но это неважно. Это значение всегда можно найти по адресу 69CCFC Одновременный возможен и это буде всё-равно пошаговая игра, как в Циве например. Ниже распишу идею как это должно работать и зачем всё это надо. Цитата(Хмм.. @ 11 Dec 2008, 23:00) Добавлено ([mergetime]1229014805[/mergetime]): Цитата(hippocamus @ 11 Dec 2008, 19:09) Хитро! В принципе даже подмене своей принадлежности можно найти применение, если подумать. Это может привести к багам. Особенно если это провернуть с ИИ игроком. Например захват своего собственного замка? или еще чего. Баги тут неизбежны, надо оч аккуратно ковырять. Одновременные ходы. Проблема: Онлайн партии оч интересны, но занимают оч много времени от 4 до 10 часов. Притом что примерно до 3-го месяца игроки зачастую не втречаются, а просто собирают ресурсы и копят армию. Потом начиная примерно с 3-й недели (иногда раньше иногда позже) происходят некоторые контакты игроков. Оч ранняя встреча игроков (на первой неделе) зачастую это баг генератора карт и чаще всего переигрывается, даже есть специальное правило рестарт по встрече до 116. Решение: Организовать одновременные ходы до ~117. В момент когда ходит красный игрок, синий тоже выполняет некоторые действия. Красный игрок передаёт ход, синий доделывает свой и снова передаёт красному. И так до 117. Потом игра переходит в обычный режим, что бы избежать багов. Ну потом в качестве развития идеи можно что бы красный игрок мог разрешать по кнопке синему игроку делать одновременный ход. |
|
|
|
| Гость_Aнгeл_* |
11 Dec 2008, 22:10
Сообщение
#13
|
|
|
Цитата Организовать одновременные ходы до ~117. В момент когда ходит красный игрок, синий тоже выполняет некоторые действия. Красный игрок передаёт ход, синий доделывает свой и снова передаёт красному. И так до 117. Потом игра переходит в обычный режим, что бы избежать багов. Ну потом в качестве развития идеи можно что бы красный игрок мог разрешать по кнопке синему игроку делать одновременный ход. Ерм код будет раскоординирован. Нереально писать скрипты для мульта с расчётом на одновременность. |
|
|
|
11 Dec 2008, 22:14
Сообщение
#14
|
|
|
Организатор лиги WCL Сообщений: 984 Спасибо сказали: 639 раз |
идея хорошая если бы не баги. в любом случае часть наработок (если они будут) можно будет использовать
-------------------- Постоянно играю на рейтинг www.heroes-III.com в онлайне через сервер GameRanger - в HoMM3 SOD или WT. Присоединяйтесь! Чужие подписи и аватары не читаю - отключил
|
|
|
|
| Гость_Хмм.._* |
12 Dec 2008, 01:11
(Сообщение отредактировал Хмм.. - 12 Dec 2008, 01:14)
Сообщение
#15
|
|
|
Цитата(Хмм.. @ 11 Dec 2008, 23:00) Цитата(asm @ 11 Dec 2008, 10:05) 4160B18 - если Эти значения впринципе не постоянны (это динамически выделяемая память). И вероятнее всего указатели на структуру текущего игрока. И все равно одновременный ход врядли возможен. Игра не зря походовая, и все на этом завязано, одной структурой не обойтись Это да, динамическая память, значения выпадали всегда одинаковые, но это неважно. Это значение всегда можно найти по адресу 69CCFC Одновременный возможен и это буде всё-равно пошаговая игра, как в Циве например. Ниже распишу идею как это должно работать и зачем всё это надо. Просто ты сделал упор на то,что по динамическим значениям определял какой игрок ходит. Если ты будешь писать патч для одновременного хода |
|
|
|
12 Dec 2008, 10:42
Сообщение
#16
|
|
|
Member Сообщений: 92 Спасибо сказали: 23 раза |
Цитата(Aнгeл @ 12 Dec 2008, 01:10) Ерм код будет раскоординирован. Нереально писать скрипты для мульта с расчётом на одновременность. Что может быть раскоординировано? С какими проблемами можно столкнутся ещё? Ну и в общем-то идея такая что бы одновременные ходы длились до того момента пока между игноками не случился контакт, т.е. до 117 гарантированно, а потом в обычном режиме. А если даже встретились до 117, то там пусть будут баги и делать рестарт. Тут вот такую проблему вижу: ЕРМ отрабатывает только в момент передачи хода, т.е. у красного на 111 начинается игра, отработали скрипты, а у синего пока нет, пока ему не передастся ход.... Цитата(Aнгeл @ 12 Dec 2008, 03:23) Насчёт шифрования сейвов. Если нужна защита от обычных людей, не сведующих в ЕРМ и файлокопательстве, то делается всё просто. Именно для них и надо! Т.е. как я понял делается на одном ЕРМ? Мог бы помочь реализовать? Цитата(Хмм.. @ 12 Dec 2008, 04:11) Просто ты сделал упор на то,что по динамическим значениям определял какой игрок ходит. Если ты будешь писать патч для одновременного хода Мне кажется что эти динамические значения постоянныы, хотя даже если они не постоянны, то не составит труда найли место где они расчитываются. Более того, я думаю там надо будет не этим методом позволять ходить, а как-нть по-другому. Просто по-ковырявшись, я понял что это возможно, хотя и не легко. |
|
|
|
12 Dec 2008, 13:46
Сообщение
#17
|
|
|
Immortal Сообщений: 2 130 Спасибо сказали: 731 раз |
Цитата(SAG19330184 @ 11 Dec 2008, 23:14) идея хорошая если бы не баги. в любом случае часть наработок (если они будут) можно будет использовать Можно какой вариант - ходы во время чужого хода исполняются (с определенными ограничениями), но не насовсем, а записываются в лог. При передаче хода происходит синхронизация, состояние игрока возвращается в начало хода, а потом лог записи воспроизводится.Добавлено ([mergetime]1229078797[/mergetime]): Цитата(asm @ 12 Dec 2008, 11:42) Цитата(Aнгeл @ 12 Dec 2008, 03:23) Насчёт шифрования сейвов. Если нужна защита от обычных людей, не сведующих в ЕРМ и файлокопательстве, то делается всё просто. Именно для них и надо! А также спрятать куда-нибудь скрипт, который всё это реализует. Чтобы не в открытую в DATA\S писался, а где-нибудь в недрах лежал, причем неоткомментированный (для усложнения поиска). Ну и само собой делать доступной функцию паролирования только в сетевых играх - для усложнения исследований вопроса. А также не стоит обсуждать эту технологию в открытую на форумах, ибо народ их всё-таки читает. |
|
|
|
12 Dec 2008, 14:22
Сообщение
#18
|
|
|
Member Сообщений: 92 Спасибо сказали: 23 раза |
Цитата(Wic @ 12 Dec 2008, 16:46) Цитата(SAG19330184 @ 11 Dec 2008, 23:14) идея хорошая если бы не баги. в любом случае часть наработок (если они будут) можно будет использовать Можно какой вариант - ходы во время чужого хода исполняются (с определенными ограничениями), но не насовсем, а записываются в лог. При передаче хода происходит синхронизация, состояние игрока возвращается в начало хода, а потом лог записи воспроизводится.Лог написать наверно возможно хотя и оч сложно. А вот потом по логу повторить все действия практически не реально. Проще реализовать как я описал. Цитата(Wic @ 12 Dec 2008, 16:46) Добавлено ([mergetime]1229078797[/mergetime]): Цитата(asm @ 12 Dec 2008, 11:42) Цитата(Aнгeл @ 12 Dec 2008, 03:23) Насчёт шифрования сейвов. Если нужна защита от обычных людей, не сведующих в ЕРМ и файлокопательстве, то делается всё просто. Именно для них и надо! А также спрятать куда-нибудь скрипт, который всё это реализует. Чтобы не в открытую в DATA\S писался, а где-нибудь в недрах лежал, причем неоткомментированный (для усложнения поиска). Ну и само собой делать доступной функцию паролирования только в сетевых играх - для усложнения исследований вопроса. А также не стоит обсуждать эту технологию в открытую на форумах, ибо народ их всё-таки читает. Это всё верно говориш. Главное начать двигатся в этом направлении. Цитата(Монца @ 12 Dec 2008, 16:59) Останется только быстро поправить лог. Про пароли - не стоит это того, читеров это не остановит, есть куча других способов играть не честно. Защищатся стоит. По-моему 90%-95% читеров в компе не шарят. И если нет явного и легко доступного чита (вскрытие карты, сейва), то читерить и разбиратся не будут! А если и начнут разбиратся, то возможно научатся ЕРМу и перейдут в разряд разработчиков, программистов и неинтересно им станет читерить. А если потом ещё реп писать, то легко можно будет проверить. Так что работать точно стоит в этом направлении. Добавлено ([mergetime]1229080968[/mergetime]): Кстати, САГ, ты же в этой теме спрашивал можно ли запретить переключатся по Алт+Таб. Я думаю это достаточно просто реализуемо. И это исключит АртМанщиков. Но тогда сильно затруднит времяпрепровождение в чужой ход, а то вот я, например, смотрю фильмы, читаю форумы на чужом ходу. |
|
|
|
| Гость_Aнгeл_* |
12 Dec 2008, 19:17
Сообщение
#19
|
|
|
Ерм будет раскоординирован. Во-первых, события !?TM привязаны к каждому дню и расчитаны на то, что игрок Х уже походил, а сейчас ходит игрок У. Не дай бог игрок Х кодит в это время и запускает другие скрипты. Весь код полетит к чёрту. Это аксиома. Далее, ты щёлкнул мышкой, я щёлкнул мышкой, на компах разные события, нужно переслать другим обновлённые переменные. Но как??? Обычно это делал пользователь У, вызвавший событие, а другие компы лишь "слушали". А теперь у всех обрабатываются скрипты. Это простейшие примеры. Я уже не говорю про банальную логику скрипта. Не может быть глобальной логики, когда нельзя застыть на мгновение и провести расчёты. Обычно все игроки ждут, игрок У инициализирует событие и далее царит ЕРМ игрока У. А тут на карте всё происходит реал-тайм, меняются объекты, доходы...Одним словом, извиняюсь, но затея - бред. Псевдопошаговость есть в Discord Times, но там событий в сотни раз меньше и игрок только один. В Героях it is impossible.
|
|
|
|
| Гость_Хмм.._* |
12 Dec 2008, 20:30
(Сообщение отредактировал Хмм.. - 12 Dec 2008, 20:47)
Сообщение
#20
|
|
|
И это только часть. asm, ты еще далек от истины, но все набивают шишки, так что это полезно. Хотя конечно, можешь написать патч для одновременного хода, я, как и все остальные будут этому только рады - успехов!!!!
|
|
|
|
![]() ![]() |
| Текстовая версия | Сейчас: 14 November 2025 - 11:07 |
|
Copyright by Алексей Крючков
Programming by Degtyarev Dmitry |
|