![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
![]()
Сообщение
#1
|
|
Member Сообщений: 92 Спасибо сказали: 23 раза ![]() |
Вчера долго трассировал экзешник, на предмет запрета прокладывания маршрута в чужой ход, дело немного осложняется частыми вылетами игры под трассером, частым отвалом соединения.
Ещё небольшая проблема, что почему-то, немного по-разному прыгает. Кое-какие изменения уже внёс (спасибо Берсерку за разлоченный экзешник) |
|
|
![]()
Сообщение
#2
|
|
Member Сообщений: 92 Спасибо сказали: 23 раза ![]() |
Мляяяяяяя........
Кажись получилось!!!!!!!!!!!!!!!!!!! П.С. Я в восторге!!!!!! |
|
|
![]()
Сообщение
#3
|
|
Member Сообщений: 92 Спасибо сказали: 23 раза ![]() |
Почти до утра сидел ковырялся в ассемблере
и 1 раз под отладчика получилось - начал прокладывать маршруты в чужой ход!!!! Но потом повторить больше не удалось. А в конце вообще защёл в тупик (((( |
|
|
![]()
Сообщение
#4
|
|
![]() допустим, мяў Сообщений: 24 049 Спасибо сказали: 13350 раз ![]() |
Маршрут сотрётся, если по нему пройдёт другой герой. Хотя не знаю, может он и восстановится при переключении.
-------------------- Вокруг столько фильмов, книг, музыки - а природа какая невероятная!
Если тебе скучно жить - ты совсем дурак. (Татьяна Черниговская) |
|
|
![]()
Сообщение
#5
|
|
![]() Яблочный произвол! Сообщений: 11 080 Спасибо сказали: 3988 раз ![]() |
Цитата(hippocamus @ 05 Dec 2008, 11:04) Маршрут сотрётся, если по нему пройдёт другой герой. Хотя не знаю, может он и восстановится при переключении. если быть точным, то сотрется только изображение |
|
|
![]()
Сообщение
#6
|
|
Member Сообщений: 92 Спасибо сказали: 23 раза ![]() |
Цитата(gamecreator @ 05 Dec 2008, 19:50) Цитата(hippocamus @ 05 Dec 2008, 11:04) Маршрут сотрётся, если по нему пройдёт другой герой. Хотя не знаю, может он и восстановится при переключении. если быть точным, то сотрется только изображение А в свой ход восстановится |
|
|
![]()
Сообщение
#7
|
|
Member Сообщений: 92 Спасибо сказали: 23 раза ![]() |
Ангел, спасибо что разместил инфу про Era.
Модераторы продублируйте тот пост Ангела в отдельную тему. Ещё вопросик насчёт совместимости с ТЕ: получается только необходимо проверить что в ТЕ не используются переменные v50-v99 а так всё должно работать. По поводу запароленых сейвов... не пойму почему невозможно.... у тя же я так понял есть возможность подключать dll-ки + уже есть GZipWrite и Рид Автосейв каунтер - это и есть прога которая просто переименовывает текущий автосейв в автосейв текущего дня. Расскажу как идёт моё обучение ассемблеру: 1) Спасибо сергрою что посоветовал OllyDbg он гораздо удобнее и безглючнее чем W32dasm 2) Оч долго дебажил код, смог найти функцию и добится прокладки маршрута в чужой ход, но после передачи всё возвращается как было ((( нашёл место где передаётся клик в формате карты X, Y, Z понял что там структура посложнее с маршрутами, чем я думал сначала и придётся ещё немало поковырятся что бы разобратся и реализовать правильно понял что теоретически реально реализовать ОДНОВРЕМЕННЫЕ ХОДЫ!!!! 3) Где-то недавно видел на форуме была ссылочка на дизасемблер, который генерит дополнительно псевдо код, даже посмотрел там на сайте видео курс - скиньте плиз если кто знает. Мб проще будет разобратся со всеми этими call'ами |
|
|
![]()
Сообщение
#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л_* |
![]()
Сообщение
#9
|
![]() |
Имхо, всё равно идёт сихронизация между игроками, потому изменения всегда будут исчезать.
|
|
|
![]()
Сообщение
#10
|
|
![]() допустим, мяў Сообщений: 24 049 Спасибо сказали: 13350 раз ![]() |
Хитро!
В принципе даже подмене своей принадлежности можно найти применение, если подумать. -------------------- Вокруг столько фильмов, книг, музыки - а природа какая невероятная!
Если тебе скучно жить - ты совсем дурак. (Татьяна Черниговская) |
|
|
Гость_Хмм.._* |
![]()
Сообщение
#11
|
![]() |
Цитата(asm @ 11 Dec 2008, 10:05) 4160B18 - если сейчас ход красного игрока 4160С80 - если ход синего игрока Эти значения впринципе не постоянны (это динамически выделяемая память). И вероятнее всего указатели на структуру текущего игрока. И все равно одновременный ход врядли возможен. Игра не зря походовая, и все на этом завязано, одной структурой не обойтись Добавлено ([mergetime]1229014805[/mergetime]): Цитата(hippocamus @ 11 Dec 2008, 19:09) Хитро! В принципе даже подмене своей принадлежности можно найти применение, если подумать. Это может привести к багам. Особенно если это провернуть с ИИ игроком. Например захват своего собственного замка? или еще чего. |
|
|
![]()
Сообщение
#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л_* |
![]()
Сообщение
#13
|
![]() |
Цитата Организовать одновременные ходы до ~117. В момент когда ходит красный игрок, синий тоже выполняет некоторые действия. Красный игрок передаёт ход, синий доделывает свой и снова передаёт красному. И так до 117. Потом игра переходит в обычный режим, что бы избежать багов. Ну потом в качестве развития идеи можно что бы красный игрок мог разрешать по кнопке синему игроку делать одновременный ход. Ерм код будет раскоординирован. Нереально писать скрипты для мульта с расчётом на одновременность. |
|
|
![]()
Сообщение
#14
|
|
![]() Организатор лиги WCL Сообщений: 981 Спасибо сказали: 632 раза ![]() |
идея хорошая если бы не баги. в любом случае часть наработок (если они будут) можно будет использовать
-------------------- Постоянно играю на рейтинг www.heroes-III.com в онлайне через сервер GameRanger - в HoMM3 SOD или WT. Присоединяйтесь! Чужие подписи и аватары не читаю - отключил
|
|
|
Гость_Хмм.._* |
![]()
Сообщение
#15
|
![]() |
Цитата(Хмм.. @ 11 Dec 2008, 23:00) Цитата(asm @ 11 Dec 2008, 10:05) 4160B18 - если Эти значения впринципе не постоянны (это динамически выделяемая память). И вероятнее всего указатели на структуру текущего игрока. И все равно одновременный ход врядли возможен. Игра не зря походовая, и все на этом завязано, одной структурой не обойтись Это да, динамическая память, значения выпадали всегда одинаковые, но это неважно. Это значение всегда можно найти по адресу 69CCFC Одновременный возможен и это буде всё-равно пошаговая игра, как в Циве например. Ниже распишу идею как это должно работать и зачем всё это надо. Просто ты сделал упор на то,что по динамическим значениям определял какой игрок ходит. Если ты будешь писать патч для одновременного хода ![]() |
|
|
![]()
Сообщение
#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) Просто ты сделал упор на то,что по динамическим значениям определял какой игрок ходит. Если ты будешь писать патч для одновременного хода ![]() Мне кажется что эти динамические значения постоянныы, хотя даже если они не постоянны, то не составит труда найли место где они расчитываются. Более того, я думаю там надо будет не этим методом позволять ходить, а как-нть по-другому. Просто по-ковырявшись, я понял что это возможно, хотя и не легко. |
|
|
![]()
Сообщение
#17
|
|
Immortal Сообщений: 2 124 Спасибо сказали: 726 раз ![]() |
Цитата(SAG19330184 @ 11 Dec 2008, 23:14) идея хорошая если бы не баги. в любом случае часть наработок (если они будут) можно будет использовать Можно какой вариант - ходы во время чужого хода исполняются (с определенными ограничениями), но не насовсем, а записываются в лог. При передаче хода происходит синхронизация, состояние игрока возвращается в начало хода, а потом лог записи воспроизводится.Добавлено ([mergetime]1229078797[/mergetime]): Цитата(asm @ 12 Dec 2008, 11:42) Цитата(Aнгeл @ 12 Dec 2008, 03:23) Насчёт шифрования сейвов. Если нужна защита от обычных людей, не сведующих в ЕРМ и файлокопательстве, то делается всё просто. Именно для них и надо! А также спрятать куда-нибудь скрипт, который всё это реализует. Чтобы не в открытую в DATA\S писался, а где-нибудь в недрах лежал, причем неоткомментированный (для усложнения поиска). Ну и само собой делать доступной функцию паролирования только в сетевых играх - для усложнения исследований вопроса. А также не стоит обсуждать эту технологию в открытую на форумах, ибо народ их всё-таки читает. |
|
|
![]()
Сообщение
#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л_* |
![]() ![]()
Сообщение
#19
|
![]() |
Ерм будет раскоординирован. Во-первых, события !?TM привязаны к каждому дню и расчитаны на то, что игрок Х уже походил, а сейчас ходит игрок У. Не дай бог игрок Х кодит в это время и запускает другие скрипты. Весь код полетит к чёрту. Это аксиома. Далее, ты щёлкнул мышкой, я щёлкнул мышкой, на компах разные события, нужно переслать другим обновлённые переменные. Но как??? Обычно это делал пользователь У, вызвавший событие, а другие компы лишь "слушали". А теперь у всех обрабатываются скрипты. Это простейшие примеры. Я уже не говорю про банальную логику скрипта. Не может быть глобальной логики, когда нельзя застыть на мгновение и провести расчёты. Обычно все игроки ждут, игрок У инициализирует событие и далее царит ЕРМ игрока У. А тут на карте всё происходит реал-тайм, меняются объекты, доходы...Одним словом, извиняюсь, но затея - бред. Псевдопошаговость есть в Discord Times, но там событий в сотни раз меньше и игрок только один. В Героях it is impossible.
|
|
|
Гость_Хмм.._* |
![]()
Сообщение
#20
|
![]() |
И это только часть. asm, ты еще далек от истины, но все набивают шишки, так что это полезно. Хотя конечно, можешь написать патч для одновременного хода, я, как и все остальные будут этому только рады - успехов!!!!
|
|
|
![]() ![]() |
Текстовая версия | Сейчас: 13 June 2025 - 16:39 |
Copyright by Алексей Крючков
![]() Programming by Degtyarev Dmitry |
|