|
Ghost201087
Пользователь
Откуда: Незалежна Рохлянд ... Регистрация: Июль 2007
Всего: 5 сообщений
|
Доброе время суток всем! У меня такой вопрос: Где прописана стартовая карта, она же "ARTemple.map", я так понимаю, что это где то в двиге. Или же я не прав. Если моя догадка верна. То не могли бы многоуважаемые господа форумчане подсказать адрес смещения. И вообще возможно ли изменить ее на свою собственную? Заранее премного благодарен.
----- Сам факт существования существуемого, еще не доказывает, что существование существуемого существует на самом деле...
|
Отправлено: 12:21 - 26 Июля, 2007
|
|
Ray
Модератор
Откуда: Донецк,Украина Регистрация: Янв. 2004
Всего: 746 сообщений
|
0x107AC8 - artemple.map название своей карты должно быть такой же длинны P.S. На сайте же есть дока по оффсетам! Смещения в движке
----- Не бывает невозможных задач – бывает мало времени.
|
Отправлено: 12:54 - 26 Июля, 2007
|
|
Ghost201087
Пользователь
Откуда: Незалежна Рохлянд ... Регистрация: Июль 2007
Всего: 5 сообщений
|
Ray Спасибо огромное. Только я что то такой доки раньше не видел, ну да ладно, впредь надо быть повнимательней!
----- Сам факт существования существуемого, еще не доказывает, что существование существуемого существует на самом деле...
|
Отправлено: 14:29 - 26 Июля, 2007
|
|
eol
Пользователь Регистрация: Март 2008
Всего: 6 сообщений
|
Извиняюсь за возрождение старой темы.
Цитата: Quote: from Ray on 12:54 - 26 Июля, 2007 ... название своей карты должно быть такой же длинны ...
Хочу заметить, что имя файла может быть как короче так и длиннее. Изначально там имя artemple.map длиною 8 символов. Я тестировал с именами от 1 до 16 символов и игра запускалась нормально. Неизвестно только как это может повлиять на другие аспекты игры.
|
Отправлено: 2:27 - 28 Марта, 2008
|
|
Wasteland Ghost
Маленькое Злое Привидение
Откуда: Россия, Самара Регистрация: Дек. 2002
Всего: 2251 сообщение
|
Короче -- это пожалуйста, лишь бы был ноль в конце. А вот длиннее... "меня терзают смутные сомненья"
|
Отправлено: 8:19 - 28 Марта, 2008
|
|
Ray
Модератор
Откуда: Донецк,Украина Регистрация: Янв. 2004
Всего: 746 сообщений
|
16 символов вместе с последним нулём? В принципе ты прав. Ближайшая переменная, используемая двигом, находится по смещению 0x10 относительно начала имени карты. Поэтому теоретически под имя отведено 0x10 байт (15 символов на имя и 1 байт - конец слова). Но 100% гарантии тут быть не может. Поэтому если уж так надо использовать длинное имя - используй sfall Там такое можно сделать без багов.
----- Не бывает невозможных задач – бывает мало времени.
|
Отправлено: 9:52 - 28 Марта, 2008
|
|
eol
Пользователь Регистрация: Март 2008
Всего: 6 сообщений
|
Цитата: Quote: from Ray on 9:52 - 28 Марта, 2008 16 символов вместе с последним нулём? В принципе ты прав. Ближайшая переменная, используемая двигом, находится по смещению 0x10 относительно начала имени карты. Поэтому теоретически под имя отведено 0x10 байт (15 символов на имя и 1 байт - конец слова). Но 100% гарантии тут быть не может. Поэтому если уж так надо использовать длинное имя - используй sfall Там такое можно сделать без багов.
Не совсем так, 16 символов на имя + расширение с точкой + ноль окончания сторки = 21 байт Если имя будет 17 символов (22 байта) то тогда уже не загружается никакой карты. Посмотрел на sfall - чего только люди не творят, мне даже стыдно за свои ламерские выкрутасы. По идее, имя должно быть не более 11 символов (16 байт), но в цикле чтения длина имени никак не проверяется.
|
Отправлено: 15:04 - 29 Марта, 2008 | ИСПРАВЛЕНО: eol - 15:45 - 29 Марта, 2008
|
|
binyan
Пользователь
Откуда: Israel Регистрация: Март 2005
Всего: 292 сообщения
|
ЕМНИП если имя файла длиннее 8 символов, то он просто не отображается в маппере.
----- ...выражая озадаченность, граничащую с озабоченностью..
|
Отправлено: 15:43 - 29 Марта, 2008
|
|
eol
Пользователь Регистрация: Март 2008
Всего: 6 сообщений
|
Цитата: Quote: from binyan on 15:43 - 29 Марта, 2008 ЕМНИП если имя файла длиннее 8 символов, то он просто не отображается в маппере.
Уважаемый, не знаете - не говорите!
|
Отправлено: 15:53 - 29 Марта, 2008
|
|
Ray
Модератор
Откуда: Донецк,Украина Регистрация: Янв. 2004
Всего: 746 сообщений
|
По смещению в 0x10 байт от начала имени находится переменная, которая неоднократно используется двигом. Точнее: Перед началом выполнения переменная просто получает указатель на адрес в памяти с именем карты. mov eax,0x5194c8; call 0x480d4c; а ф-ия уже грузит карту. С этим всё понятно. Но в свою очередь в памяти есть int переменная, которая имеет адресс 0x5194d8 и неоднократно используется. Если точнее, то в момент создания карты (но скорее всего где-то ещё). И если имя будет больше 16 байт (вместе с последним нулём) - мы 100% при старте карты обнулим эту переменную в памяти, а значит и изменим имя стартовой карты. И я не поленился и проверил карту с именем в 19 байт и несколько раз гарантированно словил вылет (и ничуть этому не удивился). В доказательство могу привести код с комментариями. EDIT: P.S. Ах, да. Совсем забыл добавить. Вылет будет если загружать новую игру второй раз. Т.к. при первой загрузке имя мы уже получили, а во время выполнения ф-ии загрузки эта переменная как-раз и обнуляется. Попробуй
----- Не бывает невозможных задач – бывает мало времени.
|
Отправлено: 16:11 - 29 Марта, 2008 | ИСПРАВЛЕНО: Ray - 15:31 - 29 Марта, 2008
|
|
|
|