Jump to content
Ropedann

Создание Карт с Нуля

Recommended Posts

На форуме есть только англоязычный гайд по созданию карты с нуля. Решил написать свой гайд на русском. И да я знаю что на МД есть русскоязычный гайд, но МД уже устарел и мало кто ответит там под этим гайдом. А здесь 95%, что помогут решить какую либо проблему. И так приступим, сначала приведу список нужного ПО(Все ссылки на скачивание ПО буду в конце гайда).

  1. Yammi 0.6.2 или ниже по версии.
  2. Map editor
  3. Клиент Piratia Online

Открываем Yammi

Цитата

Советую запускать от имени администратора, да бы избежать такой ошибки 47.png,

46.png

и в конце выйдет это

45.png  

поэтому что бы у вас все было хорошо запускаем от имени администратора.

Потом вас попросят указать путь к клиенту

 44.png

Цитата

Указали? Молодцы!

Теперь создадим новый проект. В верхнем меню выбираем пункт File --> New Project  43.png.

Далее нас просят указать размеры нашей карты.

Цитата

Я люблю указывать 300x300 вы можете указать любое другое число в пределах разумного. 

 42.png

Когда ввели значения нажимаем ОК.  Вот и создалась наша карта.

41.png 

У вас должен появиться синий квадрат или прямоугольник, зависит от того какие вы указали пропорции. Теперь нужно создать землю для этого увеличим зум колесиком (верх) до 200%

Цитата

т.к Yammu не рисует на 100%.  40.png

Теперь выбираем инструмент под названием Define a land Area  39.png  Потом выбираем кисть которой мы будим рисовать  38.png их 5 видов первые две это маленький квадратик и маленький круг их размер можно задавать  37.png  от 1-20, далее прямая линия и две фигуры  квадрат и круг.

Цитата

Я буду использовать все для примера

Маленький квадратик  36.png 

Круглая кисть размера 5  35.png 

Прямая размера 10   34.png

Фигура Квадрат на него заданный размер не влияет т.к. мы его регулируем кистью  33.png 

Фигура Круг на нее заданный размер не влияет т.к. мы ее регулируем кистью 32.png

Землю можно удалять инструментом Define a sea area  31.png

Цитата

Ну вот мы научились рисовать землю, теперь сделаем границы(непроходимые места)

Для этого мы выбираем инструмент Define a zone that can't be crossed  30.png и обводим наш участок любой кистью которой вам удобно.

У меня получилось вот так 29.png

 Удалить непроходимую зону можно инструментом Define a zone which can be passed through 28.png 

Теперь нужно наложить текстуры на нашу территорию. Делаем это с помощью инструмента Texture 27.png  Выбираем любую понравившуюся текстуру, выбираем кисть и наносим на нашу территорию.  Еще для удобства что бы видеть где мы нанесли текстуру, поставьте галочку в панели Views на Texture 26.png 

 У меня вышло так

 20.png 

Теперь выделим безопасную и PvP Зону. Для начала Безопасную зону, делается это с помощью Define a safe zone 24.png  Для удаления безопасной зоны Remove a safe zone 23.png   еще в панели Views поставьте галочку напротив Safe Zones, Что бы у вас отображалось где находится безопасная зона  22.png

Теперь ПВП зона. ПВП зону можно создать, но нельзя удалить, ее можно перекрыть безопасной зоной.  Выбираем инструмент  toolStriptbuttom1 21.png  и на носим на территорию любой удобной кистью. У меня получилось так

 20.png

 Так же поставmте галочку в панели Views на против  Pvp invite area

19.png 

Ну вот наша карта почти готова теперь нажимаем в верхнем меню на Plugins --> Hight map genirator

 18.png 

Теперь сохраним наш проект на всякий случай в меню нажимаем File --> Save Project

 17.png 

 выбираем путь куда будем сохранять и называем наш файл ( 16.png

 подтверждаем наше сохранение нажав ОК

 15.png 

Создаем файлы для Клиента в меню нажимаем File --> Export Top/Pko map file  

 14.png 

 выбираем путь куда будем сохранять и называем файл

13.png

в месте куда вы сохранили появится файл с форматом .map

 12.png  его нужно закинуть в папку с клиентом по вот такому пути (Пиратия Online\map) теперь создадим файлы для сервера действуем по той же схеме как и с файлом для клиента только выбираем последние два пункта в меню file

 11.png 

 в месте куда вы сохранили эти два файла будут файлы с форматом .atr и .blk 10.png 

Теперь создадим папку с названием вашей карты  9.png  и переместим туда наши файлы для сервера с форматом  .atr и .blk дальше нам нужно создать в папке карты следующие файлы: 

  1. ctrl.lua
  2. testmapChaSpn.txt
  3. testmapEntity.lua
  4. testmapmonster_conf.lua
  5. textmapnpc.txt
  6. testmapswhmap.txt

Теперь вам нужно заполнить эти файлы по примеру других карт. Bin файлы появятся после запуска сервера.

Что бы узнать координаты  вашей карты нужно зайти в Yammi в панели Views выбрать вкладку Map Info

 8.png  

после навести курсором мышки на любой участок вашей карты и в разделе location Будут показываться ваши координаты 7.png 

эти координаты вы записываете в сервере в файле  birth_conf.lua

Теперь переходим к редактированию нашей карты. советую называть карту garner так будет проще редактировать не нужно париться над расширением количества карт в клиенте. Но если вы не хотите называть garner, то вам нужно увеличить максимальное разрешенное кол-во карт (помните что game.exe разрешает только 49 карт для mapinfo, что бы сделать больше вам нужно по хексит game.exe скачиваем любой HEX редактор открываем game.exe ищем адрес 0x00016873 находим там 0x32 и заменяем на 0x50 и лимит будет не 49 , а 80 карт)

Для того что бы в редакторе карт у вас отображалось не 29 карт а например 30 заходим в клиент едем в файл  editor.clu (\Пиратия Online\scripts\lua\forms)  там находим этот код 

itemid = UI_CreateTextItem( "\209\239\232\241\238\234 \234\224\240\242", TREE_TEXT_COLOR )
gridid = UI_CreateGridNode( trvEditor, itemid, 4, 32, 32, -1 )
    n = 1
    while 1 do
        name = "texture/photo/sceneobj/map"..n..".tga"
        tex_id = GetTextureID( name )
        if tex_id then
            graphid = UI_CreateGraphItemTex( 0, 0, 30, 30, 1.0, 1.0, tex_id, n  )
            UI_GridNodeAddItem( gridid, graphid )
        end
        n = n + 1
            if n==29 then break end
    end

и в этом коде  находим строчку 

            if n==29 then break end

и 29 меняем на 30 или нужное вам число.

Также если вы редактируете карту со своим название то вам нужно добавить ее в Mapinfo на сервере и скомпилировать для клиента 

Вот пример кода для моей карты:

1	testmap	TestovaiKarta	1	70,70	3,70,70	255,255,255

После того как все подготовительные работы закончены, смело создаем в корне с игрой Bat файл со следующим содержимым.

 

system\game.exe startgame editor

Не большое пояснение, этой строкой мы запускаем файл game.exe, то есть саму игру, но еще передаем ей параметр запуска и говорим, что мы хотим не саму игру, а редактор карт.

 

Дальше при запуске вылетят ошибки. обычно это файлы анимаций. Если не мешают оставьте как есть. Если они вам мешают просто зайдите в папку animation и удалите анимации которые выдают ошибки. (Совет для редактирования карт сделайте себе отдельный клиент )

 

 6.png 

 Когда у вас загрузится редактор вы увидите такую картину 5.png 

 

Данное окно с вопросами это насколько я понял окно логов. Я надеялся в Англоязычном клиенте найти нормальный текст без знаков вопроса (Так как рассчитывал что это просто проблемы кодировки. ) Но оказалось , что в английском клиенте такая же фигня. Если кто то знает как исправить это окно и привести его к человеческому виду. Прошу отписаться)

 

Мы нажимаем на Tab и видим Меню

 4.png 

Хорошо, Теперь нам нужно телепортироваться на нашу карту если вы назвали карту garner, то вы просто делаете как показано на картинке

 1.png

, если вы редактируете карту не под название garner, то в левом меню выбираем пункт (Список Карт)

 3.png 

вылезут ошибки вы их пропустите. Теперь среди появившихся квадратиков найдите свою карту и нажмите на нее  2.png  

и потом проделайте следующие действия 

Цитата

Теперь нам нужно телепортироваться на нашу карту если вы назвали карту garner, то вы просто делаете как показано на картинке  1.png

Теперь опишу  назначения некоторых клавиш:

Цитата

 

Ctrl+D - Показать/Скрыть скрипт отладчик(скроется основное меню появится окно с вопросиками и нажав на вторую кнопку вы сможете посмотреть инфу о поставленных вами объектах)

 

Del - удалить объект

 

=======================================

Tab чтобы зайти в редактирование

=======================================

F5 - Скрыть/показать сетку которая указывает на препятствие

что бы делать непроходимые области и убирать их

Цитата

 Нажмите F5 и потом зажимая Shift нажимайте на клетки левой кнопкой мыши и они станут не проходимыми.
Чтобы сделать наоборот нужно зажать Shift и нажимать на клетки правой кнопкой мыши

F9 - create high error - при наведении на объект допустим лестница или мост делает так что бы персонаж мог подниматься или ходить по мосту.

F12 - меняем одежду и прическу

Q - Автоматически отображать параметры окружающих

H - Скрыть объект

U - Показать все скрытые объекты

A - Поднятие объекта

z - Опускание предмета

I - Двигаем предмет на север

J - Двигаем предмет на запад

K - Двигаем предмет на юг

L - Двигаем предмет на восток

 

========================================

Ctrl+F1 Включение режим клавиш

========================================

В этом режиме:

F5 - Скрыть/показать разные данные: угол камеры, координаты

F6 - Сброс камеры

F7 - Show/Hide Object Terrain(обводит отдельные объекты основного объекта)

F8 - Скрыть/показать все объекты

 

5 - Передвинуть окно в верхний левый угол

x - Показать это и прошлый шаг персонажа

c - Включить/выключить режим слежение камеры(перемещение e,s,f,d или зажатой правой кнопкой мыши приблизить отдалить камеру o,p)

V - close item reduce(закрыть уменьшить) - не знаю

m - показать/скрыть карту

 

Что бы персонаж мог сесть на скамейку или оперся на столб, вам нужно зайти в левое меню там выбрать абстрактный предмет и первые два объекта будут для того что бы персонаж сидел или опирался.

 

 

Для создания Мини Карты в редакторе делаем как на картинке

 8121e95f14df463886bcac521ea4ad9b.png 

(1)Нажимаем на стрелочку

(2)Выбираем Мини-Карта Скриншот,

Дальше берем калькулятор и считаем по формуле x/25,y/25 (x и y это размеры вашей карты высота и ширина) у меня размер карты 300x300

Поэтому 300/25=12, 300/25=12 и когда посчитали нам нужно записать в  Мини-Карта Скриншот 0,0,12,12 и клиент начнет фотографировать вашу карту. Через некоторое время он вас оповестит, что процесс завершен.

Надеюсь мой гайд вам поможет и вы будите радовать нас красивыми картами с вами был Ropedann всем удачи!) 

__________________________________________

P.S. Со временем гайд будет дополнятся.

P.S.S.Знаю что точно есть недочеты прошу сразу меня оповестить в комментах, личку, скайп или вк.

__________________________________________

Skype: ropedann

VK: vk.com/play589

Discord: Ropedann#4285

__________________________________________

https://mega.nz/#F!OUMUgTYb!jtCsqh7halK_O9uzWyaG0g!KcdVQK6a (Все необходимое ПО находится в папке Tools)

 

https://drive.google.com/open?id=1hkjB5rQLxg9kVpOlCx1dJKsGweVsvj8S (Клиент для редактирования карт)

__________________________________________

 

Выкладываю свой клиент в котором я редактирую карты (в нем исправлены ошибки при открытии вкладок )

 

1304856629_.png.2c0d54aa6ec53bfca205b5376df191ed.png

 

 

  

 

___________________________________

 

Так же забыл рассказать про одну интересную  функцию в Yammi

если ее не использовать, тропинки и еще какие то отдельные элементы нарисованные кистью будут очень квадратные и пиксельные.

584445251_.png.917d1c754f90caacd5218d00f5aba6a0.png

 

Что бы это убрать и сгладить в Yammi открываем вкладку Plugins -> Apply texture blending.

После этого у нас получится вот так.

1264260237_.png.d45d37adeac1bc809351716de2677ecf.png

46.png

 

 

Обновление 19.12.2021

 

Для того, чтобы из редактора карт клиента можно было редактировать текстуры земли с помощью кисти, откройте файл editor.clu и замените строку:

\239\238\226\229\240\245\237\238\241\242\252 \231\229\236\235\232

на

\239\238\226\229\240\245\237\238\241\242\252

 

За информацию спасибо @Kst!

В 19.12.2021 в 07:12, Kst сказал:

Насколько я помню в редакторе проверки на выделенный объект делаются по названию ноды.

В чтобы установить "кисть" для редактирования поверхности земли, нужно чтобы название выбранной ноды совпадало с названием указанным в StringSet.

 

* Вырезка из собственных исходников, код может отличаться от публичного


	CTreeNode* parent = dynamic_cast<CTreeNode*>(select->GetParent());
	if (!parent) return;

	item = dynamic_cast<CItem*>(parent->GetItem());
	if (!item) return;

	if (std::strcmp(item->GetString(), CLanguageRecord::inst()->GetString(539)) == 0) // [539]	"поверхность"
	{
		CGraph* p = dynamic_cast<CGraph*>(tree->GetSelect()->GetItem());
		if (p) g_Editor.SetTerr(press, p->nTag);
		return;
	}

	if (std::strcmp(item->GetString(), CLanguageRecord::inst()->GetString(540)) == 0) // [540]	"Строительство"
	{
		CGraph* p = dynamic_cast<CGraph*>(tree->GetSelect()->GetItem());
		if (p) g_Editor.SetObj(press, p->nTag);
	}

 

Судя по первому скриншоту название ноды установлено как "поверхность земли".

Попробуй в StringSet изменить [539] "поверхность" на [540] "поверхность земли", должно помочь.

 

Либо найти в scripts\lua\forms файл editor.clu там поищи там:

поверхность земли


\239\238\226\229\240\245\237\238\241\242\252 \231\229\236\235\232

замени на

поверхность


\239\238\226\229\240\245\237\238\241\242\252

 

Edited by Ropedann
  • Like 1
  • Thanks 1

Share this post


Link to post
Share on other sites

Очень неудобно открывать каждую ссылку, лучше сделать, чтобы отображались сразу картинками.

Да и ссылки вызывают некое нагромождение.

Share this post


Link to post
Share on other sites
2 минуты назад, Ropedann сказал:

А как сделать что бы картинку вставить?

 

На сервисе изображений жмешь правой кнопкой на картинку "Открыть изображение",  и копируешь ссылку полную.

Далее на форуме выше кнопки "отправить ответ" есть иконка "вставить медиа", там выбираешь изображение по ссылке и получаем картинку

104d7fc8543e45fbb8feb723749fdaaa.png

Share this post


Link to post
Share on other sites

Сырота ппц...

Опечаток - тонна (Yammu, textmap -> testmap, клавишь, "не под название  garner" etc.).

 

"Map Editor" это не сторонняя программа... Он встроен в клиент, чтобы попасть в него надо просто создать *любое_название*.bat файл, с определённым текстом (system\Game.exe startgame editor), и поместить в корень клиента (интерфейс должен быть оригинальный).

 

Почему не описано, как "упаковать" миникарту? Ни одного упоминания, что это делается файлом *любое_название*.bat  с определённым текстом, помещённым в корень с игрой. Не сказано, где находится файл миникарты после упаковки.

 

Не сказано, как зафиксировать выделение объекта в режиме редактирования (G).

 

:/ Надеюсь, что не зря тут всё расписывал.

Edited by SoStupid

Share this post


Link to post
Share on other sites
В 31.12.2017 в 22:36, SoStupid сказал:

Сырота ппц...

Опечаток - тонна (Yammu, textmap -> testmap, клавишь, "не под название  garner" etc.).

 

"Map Editor" это не сторонняя программа... Он встроен в клиент, чтобы попасть в него надо просто создать *любое_название*.bat файл, с определённым текстом, и поместить в корень клиента (интерфейс должен быть оригинальный).

 

Почему не описано, как "упаковать" миникарту? Ни одного упоминания, что это делается файлом *любое_название*.bin с определённым текстом, помещённым в корень с игрой. Не сказано, где находится файл миникарты после упаковки.

 

Не сказано, как зафиксировать выделение объекта в режиме редактирования (G).

 

:/ Надеюсь, что не зря тут всё расписывал.

 

"Упаковка" миникарты :

Создаем .bat файл с текстом:

call system\game.exe pack garner

Также не описано, как обрезать карты в yammi и склеивать.. Нужно дополнять гайд.

Share this post


Link to post
Share on other sites
В 07.02.2018 в 23:57, Graf сказал:

Также не описано, как обрезать карты в yammi и склеивать.. Нужно дополнять гайд.

Насколько мне известно, в YAMMI нельзя обрезать и склеивать карты.


Share this post


Link to post
Share on other sites
23 минуты назад, BETEP/macs509 сказал:

можно обрезать и вставлять, но без объектов

Не буду яро оспаривать, но через скайп мне наглядно показывали, что объекты не исчезают.

Share this post


Link to post
Share on other sites

Форумчане, нужна помощь экспертов!

Поставил я к примеру Мост, нажал на f9 - появились так называемые "кубики",  по которым персонаж перемещается по мосту.
Вопрос, убираю я мост, а "кубики" остаются и персонаж так же может перебежать по ним. Как их убрать, какое есть противодействие f9 (create high error)?

Испробовали массу вариантов.... Даже Yammy..

Share this post


Link to post
Share on other sites

Ну если ты поставил мост или пристань, и даже если у тебя карта высот и проходимостей сгенерировалась, то для корректной работы через ямми нужно будет указываать зоны моста/пристани там есть для этого инструмент. В зону там где нужно было эти кубики выравнять я через ямми просто вставлял заплатку, через вырезать вставить кусок. Возможно еще получиться указать высоты и потом через плагин сгенерировать карту высот, но тогда остальная часть карта будет тоже задета, что не есть хорошо, через клиент я хз как там редактировать, не находил но тоже вроде можно

Share this post


Link to post
Share on other sites
1 час назад, BETEP/macs509 сказал:

Ну если ты поставил мост или пристань, и даже если у тебя карта высот и проходимостей сгенерировалась, то для корректной работы через ямми нужно будет указываать зоны моста/пристани там есть для этого инструмент. В зону там где нужно было эти кубики выравнять я через ямми просто вставлял заплатку, через вырезать вставить кусок. Возможно еще получиться указать высоты и потом через плагин сгенерировать карту высот, но тогда остальная часть карта будет тоже задета, что не есть хорошо, через клиент я хз как там редактировать, не находил но тоже вроде можно 

Мост был примером, по факту убираем кучу колон по центру локации. Они были приподняты и после них персонаж "летает" на этом месте.
Всю локацию затрагивать не вариант...

Share this post


Link to post
Share on other sites

Небольшой UpDate

Еще вопрос если есть у когото инфа по упаковке карт в .PK файл можите поделиться?

  • Thanks 1

Share this post


Link to post
Share on other sites

Привет, @Ropedann!

 

Заголовок:

1 байт длина названия .pk файла (например, 0x17)

N байт название .pk файла (например, "texture\minimap\garner2")

4 байта число файлов-фрагментов (.bmp-картинок, из которых состоит карта)

4 байта неизвестно (значение 0x00000000)

 

Таблица файлов:

1 байт длина названия .bmp файла (например, 0x0A)

N байт название .bmp файла (например,  "sm_1_0.bmp")

4 байта адрес .bmp файла относительно начала .pk файла (например, 0x00000293)

4 байта размер .bmp файла

 

Данная структура записывается число файлов-фрагментов раз после заголовка.

 

Файлы:

Далее идут байты .bmp файлов.

 

Вот простая программа на языке C++, которая распаковывает .pk файлы:

#include <iostream>
#include <string>
#include <fstream>

// Точка входа
int main(int argc, char* argv[])
{
	// Путь до .pk файла
	std::string pk_path = "texture\\minimap\\garner2\\garner2.pk";

	// Напишем сообщение что распаковываем файл
	std::cout << "Unpacking file " << pk_path << "..." << std::endl << std::endl;

	// Открываем файл
	std::ifstream pk(pk_path, std::ifstream::binary);

	// Проверим, что файл открылся без ошибок
	if (pk.fail() == true)
	{
		// При открытии файла возникла ошибка
		std::cout << "Can't open file " << pk_path << "!" << std::endl;
		return 1;
	}

	// Длина названия .pk файла
	unsigned char name_len = 0;

	// Буфер под название .pk-файла
	char name[255] = { 0x00 };

	// Число фрагментов в .pk файле
	unsigned int file_num = 0;

	// Неизвестно
	unsigned int unknown = 0;

	// Читаем заголовок
	pk.read(reinterpret_cast<char*>(&name_len), sizeof(name_len));
	pk.read(name, static_cast<unsigned int>(name_len));
	pk.read(reinterpret_cast<char*>(&file_num), sizeof(file_num));
	pk.read(reinterpret_cast<char*>(&unknown), sizeof(unknown));

	// Распечатаем заголовок
	std::cout << "HEADER:" << std::endl;
	std::cout << ".pk file name length: " << static_cast<unsigned int>(name_len) << std::endl;
	std::cout << ".pk file name: " << name << std::endl;
	std::cout << ".bmp files number: " << file_num << std::endl;
	std::cout << "Unknown value: " << unknown << std::endl << std::endl << std::endl;


	// Длина названия .bmp файла
	unsigned char bmp_name_len = 0;

	// Название .bmp файла
	char bmp_name[255] = { 0x00 };

	// Адрес .bmp файла
	unsigned int offset = 0;

	// Размер .bmp файла
	unsigned int size = 0;

	// Распечатаем таблицу
	std::cout << "FILES:" << std::endl;

	// Читаем таблицу файлов
	for (unsigned int i = 0; i < file_num; i++)
	{
		// Считываем запись
		pk.read(reinterpret_cast<char*>(&bmp_name_len), sizeof(bmp_name_len));
		pk.read(bmp_name, static_cast<unsigned int>(bmp_name_len));
		pk.read(reinterpret_cast<char*>(&offset), sizeof(offset));
		pk.read(reinterpret_cast<char*>(&size), sizeof(size));

		// Распечатаем запись
		std::cout << ".bmp file name length: " << static_cast<unsigned int>(bmp_name_len) << std::endl;
		std::cout << ".bmp file name: " << bmp_name << std::endl;
		std::cout << ".bmp file offset: " << offset << std::endl;
		std::cout << ".bmp file size: " << size << std::endl;

		// Запомним текущий адрес
		std::streamoff pos = pk.tellg();

		// Переходим на адрес файла
		pk.seekg(offset, std::ifstream::beg);

		// Выделяем память под файл
		char* bmp_bytes = nullptr;
		try
		{
			bmp_bytes = new char[size];
		}
		catch (const std::bad_alloc & e)
		{
			// Не удалось выделить память!
			std::cout << "Can't allocate memory for file " << bmp_name << "!" << std::endl;
			std::cout << "Error: " << e.what() << std::endl;

			// Возвращаемся к таблице файлов
			pk.seekg(pos, std::ifstream::beg);

			// Пропускаем итерацию
			continue;
		}

		// Считываем файл
		pk.read(bmp_bytes, size);

		// Создаем файл
		std::ofstream bmp(bmp_name, std::ofstream::binary);

		// Проверим, что файл создан
		if (bmp.fail() == false)
		{
			// Пишем байты изображения из .pk файла в новый .bmp файл
			bmp.write(bmp_bytes, size);

			// Напишем в консоль сообщение что файл был извлечен
			std::cout << "File " << bmp_name << " has been extracted!" << std::endl << std::endl;

			// Закрываем .bmp файл
			bmp.close();
		}
		else
		{
			// Не удалось создать файл
			std::cout << "Can't create file " << bmp_name << "!" << std::endl << std::endl;
		}

		// Особождаем память
		delete[] bmp_bytes;

		// Возвращаемся к таблице файлов
		pk.seekg(pos, std::ifstream::beg);
	}

	// Закрываем .pk файл
	pk.close();

	// Программа закончила работу
	std::cout << "Done!" << std::endl;

	return 0;
}

 

Вывод:

Unpacking file texture\minimap\garner2\garner2.pk...

HEADER:
.pk file name length: 23
.pk file name: texture\minimap\garner2
.bmp files number: 33
Unknown value: 0


FILES:
.bmp file name length: 10
.bmp file name: sm_1_0.bmp
.bmp file offset: 659
.bmp file size: 5176
File sm_1_0.bmp has been extracted!

.bmp file name length: 10
.bmp file name: sm_1_1.bmp
.bmp file offset: 5835
.bmp file size: 5176
File sm_1_1.bmp has been extracted!

.bmp file name length: 10
.bmp file name: sm_1_2.bmp
.bmp file offset: 11011
.bmp file size: 5176
File sm_1_2.bmp has been extracted!

.bmp file name length: 10
.bmp file name: sm_1_3.bmp
.bmp file offset: 16187
.bmp file size: 5176
File sm_1_3.bmp has been extracted!

.bmp file name length: 10
.bmp file name: sm_1_4.bmp
.bmp file offset: 21363
.bmp file size: 5176
File sm_1_4.bmp has been extracted!

.bmp file name length: 10
.bmp file name: sm_2_0.bmp
.bmp file offset: 26539
.bmp file size: 5176
File sm_2_0.bmp has been extracted!

.bmp file name length: 10
.bmp file name: sm_2_1.bmp
.bmp file offset: 31715
.bmp file size: 5176
File sm_2_1.bmp has been extracted!

.bmp file name length: 10
.bmp file name: sm_2_2.bmp
.bmp file offset: 36891
.bmp file size: 5176
File sm_2_2.bmp has been extracted!

.bmp file name length: 10
.bmp file name: sm_2_3.bmp
.bmp file offset: 42067
.bmp file size: 5176
File sm_2_3.bmp has been extracted!

.bmp file name length: 10
.bmp file name: sm_2_4.bmp
.bmp file offset: 47243
.bmp file size: 5176
File sm_2_4.bmp has been extracted!

.bmp file name length: 10
.bmp file name: sm_2_5.bmp
.bmp file offset: 52419
.bmp file size: 5176
File sm_2_5.bmp has been extracted!

.bmp file name length: 10
.bmp file name: sm_2_6.bmp
.bmp file offset: 57595
.bmp file size: 5176
File sm_2_6.bmp has been extracted!

.bmp file name length: 10
.bmp file name: sm_3_0.bmp
.bmp file offset: 62771
.bmp file size: 5176
File sm_3_0.bmp has been extracted!

.bmp file name length: 10
.bmp file name: sm_3_1.bmp
.bmp file offset: 67947
.bmp file size: 5176
File sm_3_1.bmp has been extracted!

.bmp file name length: 10
.bmp file name: sm_3_2.bmp
.bmp file offset: 73123
.bmp file size: 5176
File sm_3_2.bmp has been extracted!

.bmp file name length: 10
.bmp file name: sm_3_3.bmp
.bmp file offset: 78299
.bmp file size: 5176
File sm_3_3.bmp has been extracted!

.bmp file name length: 10
.bmp file name: sm_3_4.bmp
.bmp file offset: 83475
.bmp file size: 5176
File sm_3_4.bmp has been extracted!

.bmp file name length: 10
.bmp file name: sm_3_5.bmp
.bmp file offset: 88651
.bmp file size: 5176
File sm_3_5.bmp has been extracted!

.bmp file name length: 10
.bmp file name: sm_3_6.bmp
.bmp file offset: 93827
.bmp file size: 5176
File sm_3_6.bmp has been extracted!

.bmp file name length: 10
.bmp file name: sm_4_0.bmp
.bmp file offset: 99003
.bmp file size: 5176
File sm_4_0.bmp has been extracted!

.bmp file name length: 10
.bmp file name: sm_4_1.bmp
.bmp file offset: 104179
.bmp file size: 5176
File sm_4_1.bmp has been extracted!

.bmp file name length: 10
.bmp file name: sm_4_2.bmp
.bmp file offset: 109355
.bmp file size: 5176
File sm_4_2.bmp has been extracted!

.bmp file name length: 10
.bmp file name: sm_4_3.bmp
.bmp file offset: 114531
.bmp file size: 5176
File sm_4_3.bmp has been extracted!

.bmp file name length: 10
.bmp file name: sm_4_4.bmp
.bmp file offset: 119707
.bmp file size: 5176
File sm_4_4.bmp has been extracted!

.bmp file name length: 10
.bmp file name: sm_4_5.bmp
.bmp file offset: 124883
.bmp file size: 5176
File sm_4_5.bmp has been extracted!

.bmp file name length: 10
.bmp file name: sm_5_0.bmp
.bmp file offset: 130059
.bmp file size: 5176
File sm_5_0.bmp has been extracted!

.bmp file name length: 10
.bmp file name: sm_5_1.bmp
.bmp file offset: 135235
.bmp file size: 5176
File sm_5_1.bmp has been extracted!

.bmp file name length: 10
.bmp file name: sm_5_2.bmp
.bmp file offset: 140411
.bmp file size: 5176
File sm_5_2.bmp has been extracted!

.bmp file name length: 10
.bmp file name: sm_5_3.bmp
.bmp file offset: 145587
.bmp file size: 5176
File sm_5_3.bmp has been extracted!

.bmp file name length: 10
.bmp file name: sm_5_4.bmp
.bmp file offset: 150763
.bmp file size: 5176
File sm_5_4.bmp has been extracted!

.bmp file name length: 10
.bmp file name: sm_5_6.bmp
.bmp file offset: 155939
.bmp file size: 5176
File sm_5_6.bmp has been extracted!

.bmp file name length: 10
.bmp file name: sm_6_4.bmp
.bmp file offset: 161115
.bmp file size: 5176
File sm_6_4.bmp has been extracted!

.bmp file name length: 10
.bmp file name: sm_6_6.bmp
.bmp file offset: 166291
.bmp file size: 4716
File sm_6_6.bmp has been extracted!

Done!

 

В результате получили 33 .bmp файла-фрагмента из которых можно собрать карту:

pk.png

 

Стоит отметить, что если на фрагменте отображается только море, то такой фрагмент не включается в .pk файл, а берется из папки \texture\terrain\water (насколько я помню).

 

В названии каждого фрагмента отражены его координаты X, Y:

sm_X_Y.bmp

 

Вот программа, которая автоматически распаковывает .pk файлы и склеивает фрагменты в полную карту:

 

  • Like 1

Share this post


Link to post
Share on other sites

Большое спасибо! Получается на "ура") Даже немного понравилось редактировать)

Цитата

image.png.353c5b70317128736e750dfd32263cd0.png

 

Share this post


Link to post
Share on other sites

Больше спасибо большое автору, дельный руководство.

Один вопрос, как делать водные участки? озеро лужу или реку? возможно сам чуть позже допру, но это долго может кто раньше ответит в теме)

Спойлер

PP-c9RiM32w.jpg

rpv_BCR1Nyo.jpg

 

Share this post


Link to post
Share on other sites

Добавил в гайд информацию как редактировать текстуры земли с помощью редактора карт клиента (спасибо @Kst).

 

 


Share this post


Link to post
Share on other sites
В 24.08.2020 в 17:58, Venjik сказал:

Больше спасибо большое автору, дельный руководство.

Один вопрос, как делать водные участки? озеро лужу или реку? возможно сам чуть позже допру, но это долго может кто раньше ответит в теме)

  Показать контент

PP-c9RiM32w.jpg

rpv_BCR1Nyo.jpg

 

Делаеться либо продавливанием земли в самом клиенте в режиме редактора. Либо через Yuami заменяя землю на воду. а потом уже подсгладить рельеф в редакторе.

Поздно, но пусть будет.

  • Thanks 1

Share this post


Link to post
Share on other sites

Кто то кстате пробывал создавать своюб шахту. Вчера пробывал окозалось это достаточно проблематично) Если кто то пробывал может будут какието рекомендации?

Share this post


Link to post
Share on other sites

Так же хочу поделиться последней наработкой. (Рекомендую смотретьв х2)
 

 

Edited by Ropedann
  • Like 2

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • Create New...