- Регистрация
- 6 Окт 2019
- Сообщения
- 60
- Реакции
- 53
Предоставляю два варианта гайда:
1) Полный мой разбор с нуля важных компонентов структуры .data и .sev. Осторожно, многобукаф.
2) Лайтовый вариант для клиент-части. Готовые структуры от @Vice, но они для версии 1.5.3 и ниже. В них нету новых структур под 1.5.5, но новые структуры довольно легкие и я про них допишу естественно.
Прикладываю так же рабочие файлы без Лунной гавани для 1.5.5. Использовать на свой страх и риск.
1) Полный мой разбор с нуля важных компонентов структуры .data и .sev. Осторожно, многобукаф.
2) Лайтовый вариант для клиент-части. Готовые структуры от @Vice, но они для версии 1.5.3 и ниже. В них нету новых структур под 1.5.5, но новые структуры довольно легкие и я про них допишу естественно.
Зачем нужен этот гайд?
1. Domain.data с версии 1.5.5 отличается от версий ниже.
2. Ни один редактор не дает возможности редактировать сами зоны, а многим хотелось бы удалить Лунную гавань на 1.5.5.
3. Возможно кто то напишет наконец то полноценный редактор
4. Редактор дезмонда ломает клиентский файл, если добавить\изменить своё расписание тв (речь про версию 1.5.5) и не совсем верно сохраняет серверный. (на сколько я понял редактор дезмонда основан на структуре подобной той, что скинул @Vice)
Что бы понять что редактировать, нужно просто понять "структуру" файла.
1. Количество зон.
Тут мы указываем сколько у нас зон. Находится в самом начале.
2. Структура зоны
Она примерно такая:
Первые 28 байтов - Название зоны
Вторые 4 байта - Идентификатор зоны
Третьи 4 байта - Уровень зоны
Четвертые 4 байта - Стоимость зоны
Остальные байты - Координаты точек из которых состоят зоны, их количество, их связи, количество соседних зон и номера соседних зон.
Рассмотрим чуть подробнее про зоны.
Первые 4+4 байта (синий) это координаты нулевой точки. Она не участвует в создании отрезков.
Вторые 4 байт (красный по бокам) это количество зон - 61.
Потом идут координаты точки Х - 4 байта (зеленый), Y - 4 байта (красный). Х около 700, Y около 200. Это в пикселях, можно выстроить карту в ФШ например.
Что бы в этом убедиться необходимо выстроить некоторые точки.
В целом мы убедились что это так.
Дальше смотрим код и видим следующее:
Выделенные байты - конец кода с координатами точек
Красное подчеркивание - Количество отрезков (59)
Зеленое подчеркивание - Отрезок из двух точек координат
Далее.
Выделенное - конец кода с постройкой отрезков.
Красное подчеркивание - байты для количества соседних зон.
Последующее дальше байты (4 для каждой зоны) и синее подчеркивание - это id соседних зон.
И так, теперь еще раз и всё вместе :
3. Удаляем зону.
Делаем на примере зоны Лунная гавань (остров расы теней) под номером 52.
Первым делом ищем с кем граничит эта зона. Мы уже знаем что это зона "Роковой город" под номером 6. (см. guildmap, например)
А это значит что перед тем как удалять Лунную гавань, необходимо удалить ее из списка соседей у Рокового города.
Найти Роковой город просто. Можно просто пробить по Text - Роковой город (Font - Unicode), либо по каким то другим параметрам основываясь на знаниях структуры.
Меняем здесь 05 на 04 (подчеркнуто красным), и удаляем полностью байты 34 00 00 00 (подчеркнуто синим)
4. Теперь удаляем саму зону.
Аналогично как в пункте 3 искали Роковой ищем Лунную гавань и согласно структуре из пункта 3 выделяем байты от начала до конца.
Начало - название зоны. Конец - Байты соседних зон. Лунная гавань граничит только с Роковым городом.
Удаляем выделенное фиол и желтым цветом и готово. Главное не забудьте поправить общее количество зон согласно пункту 1.
5. Настройка расписания
Как видно на скриншоте, у нас тут 5 зон для сражений. Начинается с выделенного красным - это количество пунктов для расписания тв. Цветами зеленый, синий, оранж, фиол,серым выделены основные настройки (день недели, час, минута). Розовым подчеркнуто макс. количество сражений.
А вот дальше идут точно такие же настройки, только для второго аналогичного списка (!!!), назовем его Расписания ТВ V2.
Настройки для расписания тв v2 я подчеркну и разделил белым цветом.
Расшифровка расписания ТВ V2: 1) Пятница, 14 час 00 мин 2) Пятница, 22 час 00 мин 3) Четверг, 22 час 00 мин 4) Воскресенье, 16 час 00 мин 5) Воскресенье, 14 час 00 мин
Для чего нужны ТВ v2 до конца мне не ясно. Видимо какие то запасные даты.
К сожалению редактор дезмонда ломает файл при работе с расписанием, поскольку полностью игнорирует пункты связанные V2.
Вот сравнение файла после его редактора (1) и "дефолта"(2)
Отсюда понятно, что и на сервер части этого не будет.
6. Серверная часть
Начнем с сравнения оригинала vs файл после редактора дезмонда.
Как мы видим уже есть отличия, хотя их быть не должно, т.к я просто пересохранил файл. У .sev части сохраненной через редактор отсутствует приличный кусок байтов, который относится к настройкам Расписаний V2.
Косяк редактора лишь в том, что он не знает, следовательно не сохраняет всё что касается части V2.
Поэтому пока что проще просто конвертнуть редактором, а потом просто починить часть V2 вручную. В целом структура .sev части мало чем отличается от клиентской.
6.1 Чиним Расписание V2
Я буду делать на примере уже с вырезанной лунной гаванью.
Открываем конец кода и ищем последнюю соседнюю зону 51 зоны (выделено в хексе) и начало обозначения расписания.
Если я верно понял, последовательность тут наоборот. Сначала идут V2, потом V1.
Расшифровка расписания ТВ V2: 1) Суббота, 14 час 00 мин 2) Воскресенье, 14 час 00 мин 3) Суббота, 09 час 00 мин 4) Понедельник, 14 час 00 мин 5) Суббота, 20 час 00 мин
Это кстати больше похоже на правду, нежели в клиенте, ибо я нашел гайд по тв 2019 года на просторах рунета и обнаружил подобную информацию
Вообщем от начала и до конца удаляем полностью код связанный с расписанием тв обозначенным красным.
После чего вставляем сюда свой код:
Должно получиться так:
Вывод:
По приоритету ставок я так понял от ТВv2 1-5 до TВv1 1-5 или же что идет раньше, то и приоритетнее.
Установив настройки как на этой версии по стандарту и сделав несколько ставок, я обнаружил приоритет ставок описанный выше. По факту же все мои 10 ставок, включая 2 ставки на гвг 3 уровня, установились на Субботу 14:00 +- несколько минут. Предполагаю, что если два клана поставят друг на друга, одно из гвг пройдет в Воскресенье 14:00+-.
В целом, что бы увидеть разницу нужен наверное огромный онлайн с активными ставками. По факту если вы не почините серверный файлик, на месте ТВv2 у вас будут ТВv1, то есть всеми привычные старые тайминги и всё.
Короче говоря ваше расписание будет работать, т.к ТВv1 встанет на место ТВv2. А вот что случится когда приоритет дойдет до расписания из кода ТВv2, а их там нету уже другой вопрос.
1. Domain.data с версии 1.5.5 отличается от версий ниже.
2. Ни один редактор не дает возможности редактировать сами зоны, а многим хотелось бы удалить Лунную гавань на 1.5.5.
3. Возможно кто то напишет наконец то полноценный редактор

4. Редактор дезмонда ломает клиентский файл, если добавить\изменить своё расписание тв (речь про версию 1.5.5) и не совсем верно сохраняет серверный. (на сколько я понял редактор дезмонда основан на структуре подобной той, что скинул @Vice)
Что бы понять что редактировать, нужно просто понять "структуру" файла.
1. Количество зон.
Тут мы указываем сколько у нас зон. Находится в самом начале.
2. Структура зоны
Она примерно такая:
Первые 28 байтов - Название зоны
Вторые 4 байта - Идентификатор зоны
Третьи 4 байта - Уровень зоны
Четвертые 4 байта - Стоимость зоны
Остальные байты - Координаты точек из которых состоят зоны, их количество, их связи, количество соседних зон и номера соседних зон.
Рассмотрим чуть подробнее про зоны.
Первые 4+4 байта (синий) это координаты нулевой точки. Она не участвует в создании отрезков.
Вторые 4 байт (красный по бокам) это количество зон - 61.
Потом идут координаты точки Х - 4 байта (зеленый), Y - 4 байта (красный). Х около 700, Y около 200. Это в пикселях, можно выстроить карту в ФШ например.
Что бы в этом убедиться необходимо выстроить некоторые точки.
В целом мы убедились что это так.
Дальше смотрим код и видим следующее:
Выделенные байты - конец кода с координатами точек
Красное подчеркивание - Количество отрезков (59)
Зеленое подчеркивание - Отрезок из двух точек координат
Далее.
Выделенное - конец кода с постройкой отрезков.
Красное подчеркивание - байты для количества соседних зон.
Последующее дальше байты (4 для каждой зоны) и синее подчеркивание - это id соседних зон.
И так, теперь еще раз и всё вместе :
- Название (28 байт)
- Идентификатор зоны (4 байта)
- Уровень зоны (4 байта)
- Стоимость зоны (4 байта)
- Координаты какой то точки (4+4 байта,х,y), вероятно нулевая точка
- Количество точек зон (4 байта)
- Координаты точек для постройки отрезков зоны (для каждой точки 4 (х) + 4 (у) байта, общее количество зависит от количества зон вероятно)
- Количество отрезков (4 байта)
- Отрезки (для каждого отрезка 4 (id точки) + 4 (id точки) байта, общее количество зависит от количества зон вероятно)
- Количество соседних зон (4 байта)
- Идентификаторы соседних зон (id) (4 байта для 1 зоны, общее количество зависит от количества соседних зон)
3. Удаляем зону.
Делаем на примере зоны Лунная гавань (остров расы теней) под номером 52.
Первым делом ищем с кем граничит эта зона. Мы уже знаем что это зона "Роковой город" под номером 6. (см. guildmap, например)
А это значит что перед тем как удалять Лунную гавань, необходимо удалить ее из списка соседей у Рокового города.
Найти Роковой город просто. Можно просто пробить по Text - Роковой город (Font - Unicode), либо по каким то другим параметрам основываясь на знаниях структуры.
4. Теперь удаляем саму зону.
Аналогично как в пункте 3 искали Роковой ищем Лунную гавань и согласно структуре из пункта 3 выделяем байты от начала до конца.
Начало - название зоны. Конец - Байты соседних зон. Лунная гавань граничит только с Роковым городом.
Удаляем выделенное фиол и желтым цветом и готово. Главное не забудьте поправить общее количество зон согласно пункту 1.
5. Настройка расписания
- Количество пунктов для расписание ТВ (красным) (4 байта)
- День недели 1 зоны (0 - воскресенье, 6 - суббота)
- Час (4 байта)
- Минута (4 байта)
- Количество пунктов для расписание ТВ v2 (черным) (4 байта)
- И так же как в п.2-п.4 (4+4+4) байта под день недели, час, минута.
- Максимальное количество сражений V2 (4 байта) (я не знаю что это, но смею предположить что это дополнительные какие то битвы)
Как видно на скриншоте, у нас тут 5 зон для сражений. Начинается с выделенного красным - это количество пунктов для расписания тв. Цветами зеленый, синий, оранж, фиол,серым выделены основные настройки (день недели, час, минута). Розовым подчеркнуто макс. количество сражений.
А вот дальше идут точно такие же настройки, только для второго аналогичного списка (!!!), назовем его Расписания ТВ V2.
Настройки для расписания тв v2 я подчеркну и разделил белым цветом.
Расшифровка расписания ТВ V2: 1) Пятница, 14 час 00 мин 2) Пятница, 22 час 00 мин 3) Четверг, 22 час 00 мин 4) Воскресенье, 16 час 00 мин 5) Воскресенье, 14 час 00 мин
Для чего нужны ТВ v2 до конца мне не ясно. Видимо какие то запасные даты.
К сожалению редактор дезмонда ломает файл при работе с расписанием, поскольку полностью игнорирует пункты связанные V2.
Вот сравнение файла после его редактора (1) и "дефолта"(2)
Отсюда понятно, что и на сервер части этого не будет.
6. Серверная часть
Начнем с сравнения оригинала vs файл после редактора дезмонда.
Как мы видим уже есть отличия, хотя их быть не должно, т.к я просто пересохранил файл. У .sev части сохраненной через редактор отсутствует приличный кусок байтов, который относится к настройкам Расписаний V2.
Косяк редактора лишь в том, что он не знает, следовательно не сохраняет всё что касается части V2.
Поэтому пока что проще просто конвертнуть редактором, а потом просто починить часть V2 вручную. В целом структура .sev части мало чем отличается от клиентской.
6.1 Чиним Расписание V2
Я буду делать на примере уже с вырезанной лунной гаванью.
Открываем конец кода и ищем последнюю соседнюю зону 51 зоны (выделено в хексе) и начало обозначения расписания.
Если я верно понял, последовательность тут наоборот. Сначала идут V2, потом V1.
Расшифровка расписания ТВ V2: 1) Суббота, 14 час 00 мин 2) Воскресенье, 14 час 00 мин 3) Суббота, 09 час 00 мин 4) Понедельник, 14 час 00 мин 5) Суббота, 20 час 00 мин
Это кстати больше похоже на правду, нежели в клиенте, ибо я нашел гайд по тв 2019 года на просторах рунета и обнаружил подобную информацию
Расписание ТВ
ТВ проходят в один из 7 временных промежутков:
Пятница 20:00-20:18 (каждые 3 минуты стартует ТВ)
Суббота 9.00 — 9.18
Суббота в 14:00-14:18
Суббота в 20:00-20:18
Воскресенье в 9.00 — 9.18
Воскресенье 14:00-14:18
Воскресенье 20:00-20:18
Вообщем от начала и до конца удаляем полностью код связанный с расписанием тв обозначенным красным.
После чего вставляем сюда свой код:
Код:
05 00 00 00 06 00 00 00 0e 00 00 00 00 00 00 00
00 00 00 00 0e 00 00 00 00 00 00 00 06 00 00 00
09 00 00 00 00 00 00 00 01 00 00 00 0e 00 00 00
00 00 00 00 06 00 00 00 14 00 00 00 00 00 00 00
0b 00 00 00 05 00 00 00 05 00 00 00 14 00 00 00
00 00 00 00 05 00 00 00 16 00 00 00 00 00 00 00
04 00 00 00 16 00 00 00 00 00 00 00 00 00 00 00
10 00 00 00 00 00 00 00 00 00 00 00 0e 00 00 00
00 00 00 00 0b 00 00 00
Вывод:
Как видите, ТВ v1 полностью совпадает с тем, что в клиенте. А вот v2 клало на это болт.Расшифровка расписания .sev ТВ V2: 1) Суббота, 14 час 00 мин 2) Воскресенье, 14 час 00 мин 3) Суббота, 09 час 00 мин 4) Понедельник, 14 час 00 мин 5) Суббота, 20 час 00 мин
Расшифровка расписания .sev ТВ V1: 1) Пятница, 20 час 00 мин 2) Пятница, 22 час 00 мин 3) Четверг, 22 час 00 мин 4) Воскресенье, 16 час 00 мин 5) Воскресенье, 14 час 00 мин
По приоритету ставок я так понял от ТВv2 1-5 до TВv1 1-5 или же что идет раньше, то и приоритетнее.
Установив настройки как на этой версии по стандарту и сделав несколько ставок, я обнаружил приоритет ставок описанный выше. По факту же все мои 10 ставок, включая 2 ставки на гвг 3 уровня, установились на Субботу 14:00 +- несколько минут. Предполагаю, что если два клана поставят друг на друга, одно из гвг пройдет в Воскресенье 14:00+-.
В целом, что бы увидеть разницу нужен наверное огромный онлайн с активными ставками. По факту если вы не почините серверный файлик, на месте ТВv2 у вас будут ТВv1, то есть всеми привычные старые тайминги и всё.
Короче говоря ваше расписание будет работать, т.к ТВv1 встанет на место ТВv2. А вот что случится когда приоритет дойдет до расписания из кода ТВv2, а их там нету уже другой вопрос.
1. Скачиваем архив domain.data.zip в нем лежим файлик domain.data.bt
2. Открываем 010 editor, Run Template -> Open и выбираем этот файлик. Нажимаем Run.
3. Открываем Variables (у кого то справа, у кого то снизу) и видим готовую структуру. Единственное, что она до версии 1.5.3 включительно. Разобраться что к чему тут не сложно, а если не поняли можете открыть 1 вариант гайда.
4.В данной структуре не указано следующие пункты которые идут далее (См. скрин):
1. Максимальное количество сражений на зонах BattleServerTime, назовем этот параметр к примеру MaxBattle.
2. int coint 3,т.е количество пунктов BattleServerTime v2
3. Дальше идут неуказанные BattleServerTime v2, их структуры аналогичны BattleServerTime
4. MaxBattle v2.
Про серверную часть я расписал в 1 варианте гайда.
Но если вкратце, то на сервер-части все расписания v2 идут первыми (приоритет), а обычные идут после.
Когда вы конвертируете клиент часть в серверную редактором дезмонда или любым другим на основе подобных структур, не учитывающих v2, ваш серверный файл будет работать, НО происходит следующее: обычные битвы встают на место v2, а расписания v2 просто нету. И если приоритет ставки дойдет до них, то что будет лично мне неизвестно.
С клиент частью же все иначе. Если вы попытаетесь изменить расписание ТВ (Добавить зону например), то ваш клиент будет просто крашиться, т.к ему обязательно нужен тот код для v2.
2. Открываем 010 editor, Run Template -> Open и выбираем этот файлик. Нажимаем Run.
3. Открываем Variables (у кого то справа, у кого то снизу) и видим готовую структуру. Единственное, что она до версии 1.5.3 включительно. Разобраться что к чему тут не сложно, а если не поняли можете открыть 1 вариант гайда.
4.В данной структуре не указано следующие пункты которые идут далее (См. скрин):
1. Максимальное количество сражений на зонах BattleServerTime, назовем этот параметр к примеру MaxBattle.
2. int coint 3,т.е количество пунктов BattleServerTime v2
3. Дальше идут неуказанные BattleServerTime v2, их структуры аналогичны BattleServerTime
4. MaxBattle v2.
Про серверную часть я расписал в 1 варианте гайда.
Но если вкратце, то на сервер-части все расписания v2 идут первыми (приоритет), а обычные идут после.
Когда вы конвертируете клиент часть в серверную редактором дезмонда или любым другим на основе подобных структур, не учитывающих v2, ваш серверный файл будет работать, НО происходит следующее: обычные битвы встают на место v2, а расписания v2 просто нету. И если приоритет ставки дойдет до них, то что будет лично мне неизвестно.
С клиент частью же все иначе. Если вы попытаетесь изменить расписание ТВ (Добавить зону например), то ваш клиент будет просто крашиться, т.к ему обязательно нужен тот код для v2.
Прикладываю так же рабочие файлы без Лунной гавани для 1.5.5. Использовать на свой страх и риск.
- domain.zip: domain.data без лунной гавани и domain.sev без лунной гавани и с расписанием ТВ v2 & ТВ
- domain.data.zip: структура domain до 1.5.3 предоставленные @Vice
Вложения
Последнее редактирование модератором: