| ||||
Заголовок: Почему враги не залазят на крышу нигде, кроме Буки Прислано пользователем neyros на 19.01.2005 в 07:25:33 Потому, что в других версиях ЕХЕ закомментирован вот это участок кода: Модуль TileEngine\WolrdDef.c BOOLEAN LoadWorld( UINT8 *puiFilename ) { ... #ifdef JA2TESTVERSION // ATE: Not while updating maps! // надо восстановить вот эти строки! if ( guiCurrentScreen != MAPUTILITY_SCREEN ) { GenerateBuildings(); } #endif RenderProgressBar( 0, 100 ); DequeueAllKeyBoardEvents(); return( TRUE ); } | ||||
Заголовок: Re: Почему враги не залазят на крышу нигде, кроме Прислано пользователем Bezumnij Kovrik на 19.01.2005 в 12:08:02 2neyros: спасибо, я как раз их искал :D. | ||||
Заголовок: Re: Почему враги не залазят на крышу нигде, кроме Прислано пользователем Bezumnij Kovrik на 19.01.2005 в 13:46:54 2neyros: сейчас глянул - у меня сразу эта часть была раскомментирована... :P Мабыть не понял чего-то? | ||||
Заголовок: Re: Почему враги не залазят на крышу нигде, кроме Прислано пользователем neyros на 20.01.2005 в 08:51:53 Вот это ты убрал ? #ifdef JA2TESTVERSION | ||||
Заголовок: Re: Почему враги не залазят на крышу нигде, кроме Прислано пользователем rifleman на 20.01.2005 в 08:58:15 А исходя из каких соображений вообще закомментировали этот участок? | ||||
Заголовок: Re: Почему враги не залазят на крышу нигде, кроме Прислано пользователем gyv на 20.01.2005 в 09:35:26 2neyros: 2rifleman: а в какой версии гражданские на крышу лезли, как маньяки ночью? В Буке? Мож, из-за этого и закомментировали? | ||||
Заголовок: Re: Почему враги не залазят на крышу нигде, кроме Прислано пользователем neyros на 20.01.2005 в 11:33:54 Я думаю, что этот участок кода закомментировали по соображениям повышения надежности программного кода. Функция GenerateBuidings() производит построение массива, в котором хранится информация о зданиях с плоскими крышами. Эта информация используется АИ, когда он ищет точки на карте, где НПЦ могут залезть на крышу. Этот массив фиксированной длины - 31 позиция. А что будет, если в секторе нарисовать более 31 здания с плоской крышей? Видно, подумали Сиры, и решили убрать это дело, во избежание выхода за границы массива. А буковцы, когда собирали свой ЕХЕ 1.02, почему-то это дело вернули назад. В общем, темна вода в облацах. | ||||
Заголовок: Re: Почему враги не залазят на крышу нигде, кроме Прислано пользователем rifleman на 20.01.2005 в 14:29:16 2gyv: На крышу гражданские лезли в ЦС от буки. Хотя противник на крышу забираться перестал. | ||||
Заголовок: Re: Почему враги не залазят на крышу нигде, кроме Прислано пользователем neyros на 20.01.2005 в 14:52:05 Гражданские в ЦС на крышу не лезли. Они там оказывались при повторной загрузке сектора. Это разные вещи. | ||||
Заголовок: Re: Почему враги не залазят на крышу нигде, кроме Прислано пользователем rifleman на 20.01.2005 в 15:11:54 2neyros: Ну да, совершенно верно причем наличие плоской крыши было совершенно необязательным :) некоторые просто путешествовали в воздухе, другие умудрялись телепортироваться на двухскатные | ||||
Заголовок: Re: Почему враги не залазят на крышу нигде, кроме Прислано пользователем gyv на 20.01.2005 в 15:58:26 2neyros: Так Бука, вроде, исходники не видела. Их канадцы формировали (и портачили в них). 2rifleman: Забыл, опять забыл... но не факт, что эти баги - не ролдственники. Возможно, в исходниках ЦС "стоячие места" для гражданских формировались аналогичным способом и предпочтительные после загрузки оказывались именно на крышах (может, не тот порядок вызова функций при чтении сейва). | ||||
Заголовок: Re: Почему враги не залазят на крышу нигде, кроме Прислано пользователем Artem13 на 28.02.2005 в 09:23:15 2neyros: Quote:
Возможно. Но не исключён и антихардкорный вариант. Уж очень такие вещи за бугром не любят... | ||||
Заголовок: Re: Почему враги не залазят на крышу нигде, кроме Прислано пользователем Пакос Мира на 03.02.2006 в 16:36:07 2neyros: А можно патчик не только для ЦС? Для Голда, пожалйуста состряпаешь? О :idea: и для WF (5.0)... ;) :pray: | ||||
Заголовок: Re: Почему враги не залазят на крышу нигде, кроме Прислано пользователем TheDrill на 06.02.2006 в 09:49:54 Дело явно не в границах массива зданий, так как CreateNewBuilding не позволяет создать больше MAX_BUILDINGS зданий. Кстати, рекомендую так же в GenerateBuilding использовать модифицированные версии функций WallExistsOfTopRightOrientation и WallExistsOfTopLeftOrientation, в которых бы искалась не обычная стена, а нормальная крыша. Иначе ИИ не будет забираться на крышу у стены с окном, дверью, или если совсем нет стены. | ||||
Заголовок: Re: Почему враги не залазят на крышу нигде, кроме Прислано пользователем Терапевт на 05.02.2008 в 15:02:42 2neyros: Quote:
Этот участок кода "закомментирован" из-за проблем с работой функции BUILDING * GenerateBuilding( INT16 sDesiredSpot ), програмный код которой может зацикливаться "навечно". | ||||
Заголовок: Re: Почему враги не залазят на крышу нигде, кроме Прислано пользователем Raty на 06.02.2008 в 10:41:19 Правильно ли я понимаю, функции WallExistsOfTopRightOrientation и WallExistsOfTopLeftOrientation используются только при лазании на крышу? Т.е. изменения в них ничего другого не заденут? И еще один момент. Падение смертельно раненого бойца с крыши и связанные с этим глюки и вылеты. Кто-нибудь код смотрел? | ||||
Заголовок: Re: Почему враги не залазят на крышу нигде, кроме Прислано пользователем Терапевт на 07.02.2008 в 16:20:58 2Raty: Quote:
Поищи текстовым поиском по всем исходникам, где встречаются эти функции, и посмотри их применение. Quote:
Игра падает в инлайновом ассемблерном коде изометрического движка игры, в который в некоторых случаях передаётся левый указатель. Причину появления левого указателя пока отследить (мне) не удалось. | ||||
Заголовок: Re: Почему враги не залазят на крышу нигде, кроме Прислано пользователем bugmonster на 08.02.2008 в 12:11:14 2Терапевт: А этот баг гарантированно воспроизводится с сейвника? Если так, то можно запустить Джа в режиме отладки и после падания посмотреть стек и откуда есть пошел этот левый указатель. | ||||
Заголовок: Re: Почему враги не залазят на крышу нигде, кроме Прислано пользователем Терапевт на 08.02.2008 в 14:34:44 2bugmonster: Quote:
Нет. Quote:
Применив слово "передаётся", я выразился не очень удачно. Там не вызов функции, а прямое присваивание регистру значения переменной с указателем, который получается вычислениями где-то выше по коду. При этом указатель не нулевой и с виду вполне нормальный. | ||||
Заголовок: Re: Почему враги не залазят на крышу нигде, кроме Прислано пользователем jarni на 08.02.2008 в 17:11:37 2Терапевт: В любое место в асм блоке можно всавлять обычный С/С++ код. Так что вопрос: есть хоть что-то что было бы подозрительным в указателе или в том куда он указывает? | ||||
Заголовок: Re: Почему враги не залазят на крышу нигде, кроме Прислано пользователем Терапевт на 11.02.2008 в 09:07:49 2jarni: Ассемблерный блок здесь вообще ни при чём. Проблемы где-то до него, но вот где? | ||||
Заголовок: Re: Почему враги не залазят на крышу нигде, кроме Прислано пользователем jarni на 11.02.2008 в 09:35:24 2Терапевт: Ответ на мой вопрос есть? Quote:
| ||||
Заголовок: Re: Почему враги не залазят на крышу нигде, кроме Прислано пользователем Терапевт на 11.02.2008 в 12:51:28 2jarni: Естественно он указывает на область памяти к игре не относящейся, но визуально это сложно было заметить. | ||||
Заголовок: Re: Почему враги не залазят на крышу нигде, кроме Прислано пользователем jarni на 11.02.2008 в 17:00:48 2Терапевт: А какая принципиальная проблема под дебагом в момент падения пройтись по стэку вызовов и посмотреть где поломался указатель? | ||||
Заголовок: Re: Почему враги не залазят на крышу нигде, кроме Прислано пользователем Терапевт на 12.02.2008 в 09:04:47 2jarni: :) Ну если бы всё было так просто, то неужели ты думаешь, что я бы это не нашёл и не исправил? Там алгоритм расчётов не позволяет навскидку понять правильно вычисляется указатель или нет. | ||||
Заголовок: Re: Почему враги не залазят на крышу нигде, кроме Прислано пользователем bugmonster на 12.02.2008 в 14:28:08 2Терапевт: А что, известно место где указатель вычисляется? Можно для начала визуально проанализировать код, на переполнения или на некорректные входные значения. | ||||
Заголовок: Re: Почему враги не залазят на крышу нигде, кроме Прислано пользователем Терапевт на 13.02.2008 в 11:05:23 2bugmonster: Игра падает в Standard Gaming Platform\vobject_blitters.c в одной из функций перегона из 8 и 16 битный буфер. Больше ничего конкретного не помню. | ||||
A.I.M. » Powered by YaBB Modification 4 (v.4.0.0-pre)! YaBB © 2000-2003. All Rights Reserved. |