» TeamX (Архив Форума)«


Форум TeamX » Тех. поддержка » Стартовая карта (несколько важных вопросов)

Переход по темам
<< Пред. След. >>
Страницы этой темы [ 1 2 ] Все собщения

 
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
 

Переход по темам
<< Пред. След. >>
Страницы этой темы [ 1 2 ] Все собщения


Powered by Ikonboard 2.1.9 RUS
Modified by RU.Board Team
© 2000 Ikonboard.com