Fallout 3

Главная


Fallout 4


Поиск


ЧаВО


Статьи


Форум

 

Галерея


Файлы


Файлообмен


Counter Strike


Чат


Новости


Скриншоты


Написать


Ссылки


Ордена


Участники

 

Online:

 
 

 

Форум -- Забор

Страницы: 1 2 3 4 5 6 7

antony87
Участник проекта
Авторейтинг:
Гуру
(896-0)
Знания
Магистр Ордена
Звание:
Великий Магистр
Репутация:
Идеолог Знания
Тема: Добавляем созданные карты в игру.
 
для ответа необходимо зарегистрироваться
Теперь я расскажу вам, как добавить в игру карты, созданные и отредактированные нами в предыдущей статье при помощи утилиты Mapper.
Для начала хочу определить для вас два понятия карта и локация.
Карта - это определенная зона, в которой, собственно и находится игрок. На карте располагаются объекты, предметы и NPC. В Mappere  мы с вами рисовали и редактировали именно карты, а не локации.
Локация же состоит из карт. То есть мы объединяем несколько карт в локацию, которая у нас отображается на глобальной карте.
Итак, для того, чтобы создать локацию из нескольких карт, нам предварительно нужно нарисовать/отредактировать по желанию эти карты, и обязательно назвать их именами с одинаковой составной частью, например test_location_entrance и test_location_main. Пробелы в названиях карт не допускаются
Карты обязательно должны находится в папке ...\server\maps, однако если вы их создавали/редактировали маппером из комплекта SDK, то они находятся в этой директории по умолчанию.
Первое, что нам нужно сделать - задать PID для наших карт. Для этого мы открываем любым текстовым редактором (но я рекомендую Notepad++, потому что в нем есть нумерация строк, что очень удобно) файл _maps.fos, который находится по пути ...\server\scripts\_maps.fos. Этот скрипт задает соответствие именам локаий и карт их PID'у. Пролистываем до конца списка раздел *// Maps этого файла и в конце записываем свои карты и присваиваем им любой свободный PID следующим образом:
#define MAP_test_location_entrance (500)
#define MAP_test_location_main (501)
(надеюсь, вы еще помните, что значит директива  #define?)) Закрываем и сохраняем этот файл
Можно в этом файле ставить ассоциацию PID с именами локаций, но если вы создаете не квестовую локацию (т.е. ту, в которую можно заходить из глобальной карты независимо от результата игры), то такое действие никакого смысла не несет, но и лишним тоже не будет, поэтому оставляю этот пункт на ваше усмотрение.
Этим действием мы присвоили нашим карта персональный идентификационный номер, т.е. PID. Запомните его, потому что он нам еще пригодится не один раз
Теперь настраиваем связь между нашими картами (т.е. возможность переходов между ними)
Для этого снова открываем наши карты в маппере. Для того, сделать переходы между локациями, а также выход на глобальную карту нам надо разместить на карте объекты scenery, находящиеся в соответствующей вкладке панели маппера.
Ищем там красную или зеленую зону выхода и добавляем их на карту, там, где у нас будем зона перехода (кто не играл в Fallout 1 и 2, красными обозначаются зоны выхода на глобальную карту, зелеными - перехода на другую локацию)
После того, как мы нанесли зоны выхода/перехода, открываем в маппере вкладку Fast. В ней находятся 16 объектов, которые являются специальными гексами. Это технические объекты, которые в игре не отображаются, но необходимы на каждой карте.
Выбираем EG-гекс, и ставим один на зону выхода\перехода.
Откроется уже знакомое нам окно параметров объекта, в котором нас будут интересовать только строчки ToMapPid и ToEntire.
ToMapPid задает PID карты, на которую перемещается игрок;
ToEntire - точку входа, на которую он перемещается.
Если параметры этих двух функций равны 0, то игрок перемещается на глобальную карту, поэтому, если вы делаете выход на глобальную карту, но ставите такой гекс на красной зоне выхода, и копируете его не меняя параметров по всей поверхности красной зоны выхода.
Если же вы создаете переход, то ставите в первой строке PID карты, на которую осуществляется переход (PID карт мы с вами прописали в скрипт _maps.fos, его и используем), а во вторую - номер точки входа. Но сперва нам надо расставить эти точки входа.
Для этого мы используем еще один специальный гекс - ENT-гекс
Начинаем ставить точку входа с карты, на которую можно непосредственно войти из глобальной карты. Если же можно будет войти из нескольких карт - начинаем с той, с которой можно выйти на глобальную карту(т.е. где есть ENG-гексы с параметрами 0,0)
Ставим точку входа с глобальной карты в нужном вам месте (т.е. когда вы войдете в локацию с глобальной карты, ваш персонаж появится в этой точке).
Откроется окно параметров, в котором нас интересуют лишь два: EntrieNumber и ToDir
EntrieNumber - номер точки входа. Точка входа с глобальной карты обязательно должна иметь номер 0. Существуют также и другие обязательные номера номера точек входа:
240 - стартовая позиция игрока, первый раз зашедшего в игру
242 - точка респауна игрока
243 - точка входа для автомобилей
245 - точка входа для больших автомобилей/вертибердов
Ставим для входа с глобальной карты точку с номером 0, для входа с соседней карты 1, 2, 3 и т.д.
ToDir определяет, в каком направлении смотрит персонаж после входа. Может принимать значения от 0 до 5. Значения меняют направление по часовой стрелке, 0 - это северо-восток.
После того, как мы расставили точки входа на карты, можем прописать номера точек входа на всех EG-геках.
Помните, что EG-гексы должны покрывать всю цветную зону перехода, чтобы у вас не возникал где-нибудь пробел. Проще всего ставить сначала один EG-гекс, назначать ему параметры, а потом копировать его по всей поверхности зоны. Параметры при этом сохранятся. На этом маппер нам больше не потребуется, сохраняем наши карты под теми же именами (поскольку мы их прописали с этими именами в скрипте).
Теперь нам нужно создать локацию из этих отдельных, пусть и связанных переходов, карт.
Открываем ...\server\maps\Locations.cfg
В него добавляем примерно следующее:
[Area 200]
name= TestLocation
max_copy=1
max_players=0
size= 12
map_0= test_location_entrance
map_1= test_location_main
entrance= 0
visible= 1
auto_garbage =0

Теперь поясню, что значат все эти строки:
Area 200 - PID локации. Задавайте любой свободный PID, но лучше соблюдать последовательную нумерацию.
name - название локации
max_copy - максимально число копий этой локации в игровом мире. По умолчанию - 1
max_players - максимальное количество игроков на этой локации. По умолчанию - 0, т.е. количество игроков не ограниченно.
size  - размер локации. Другими словами - это диаметр кружка, которым обозначается локация на глобальной карте. Параметр может принимать следующие значения: 6-маленькая, 12-средняя, 24-большая.
map_x, где х - число от нуля до бесконечности - указание всех карт в локации. Обязательно начинать с map_0 и использовать нулевой ту локацию, на которую первоначально есть вход с глобальной карты.
entrance - номера точек входа в локацию. Если с глобальной карты можно попасть на несколько карт в локации, то надо перечислить все точки входа во всех картах следующим образом: entrance =$0 0,1 1,0 3. Такая строчка будет означать, что существует три входа на локацию с глобальной карты: на карту 0 в точку 0; на карту 1 в точку 1; на карту 0 в точку 3 (здесь номер карты - это х в строке map_x).
visible - видимость локации на глобальной карте. При значении 1 локация сразу отображается, при значении 0 - будет видна только если вы ее найдете.
auto_garbage. Если стоит значение 1, то карта автоматически удалится при условии отсутствия на карте игроков и NPC.
Максимальное количество локаций в игре - 500, карт - неограниченно
Теперь добавим описание карт и локаций и воспроизводимую музыку на них. Для этого нам потребуется файл FOGM.MSG, находящийся в ...server\text\russ\FOGM.MSG. Открываем его и видим, что он состоит из трех подразделов.
Вписываем строчки следующего содержания для наших тестовых карт:
# Map 500, base 5010
{5010}{}{Test Entrance}
{5016}{}{05raider}
{5017}{}{dogbark:10, dogbark1:10, gntlwind:20, gntlwin1:20, blank:40}

Рассмотрим теперь, откуда я взял все эти значения. Первая строка #Map 500, где 500 это PID карты, который мы присвоили ей ранее в скрипте _maps.fos. Значение параметра base рассчитывается по формуле (pid + 1) * 10 + 0 и несет в себе базовый номер строки в этом файле для этой карты, Номер следующей строки сохраняет значение base и содержит имя карты для этого файла (это имя никак не будет отображаться в игре, поэтому пишите понятное вам, только латиницей, пробелы допустимы).
Следующая строка - это музыка на карте. Номер строки вычисляется по формуле (pid + 1) * 10 + 5. Значение параметра равно имени музыкального файла с расширением .acm, который берется из папки ...client\soud\music. Поддерживается также звуковой формат .ogg, для его использования необходимо с строке указать расширение .ogg после имени файла.
Следующая строка - звуки окружения. Номер строки рассчитывается по формуле (pid + 1) * 10 + 6. Звуки окружения совпадают с именами клиентских файлов из директории ...client\sound\SFX. На данном этапе я вам не рекомендую использовать свои звуки в силу особенности интеграции их в игру. Просто копируйте содержание этих строк из других карт и присылайте мне музыкальные файлы, которые хотите добавить, вместе с вашими локациями.
Следующая часть файла - параметры локаций. Код этой части выглядит так для нашей локации:
# TestLocation, pid 200, base 300000
{300005}{}{Тестовая локация}
{300020}{}{art\intrface\twnden.frm}
{300030}{}{art\intrface\WM_DEN.FRM}
{300090}{}{1}
{300101}{}{Главный вход}
{300102}{}{140}
{300103}{}{278}
{300122}{}{280}
{300123}{}{380}

Расшифрую все вышеперечисленное:
Первая строчка - это название локации, ее pid и номер базовый строки, рассчитанный как (pid + 100) * 1000
Номер следующей строки совпадает с base, и содержит название локации, под которым она будет отображаться в игре.
Следующая строка - описание локации в игре. Номер строки вычисляется как (pid + 100) * 1000 + 5
Далее строка, которая задает картинку локации (которая используется при выборе точки входа на карты локации в игре). Номер ее равен (pid + 100) * 1000 + 20
Далее идет картинка названия в списке городов на глобальной карте, ее номер - (pid + 100) * 1000 + 30
Как использовать свои картинки мы рассмотрим потом, но поскольку эти картинки, как и звуки на картах, должны быть интегрированы в клиентскую часть, а не в серверную, то не рекомендую вам делать это самостоятельно, присылайте мне картинки для своих локаций и я все интегрирую как надо.
Следующая строка задает количество точек входа. Ее номер мы находим по формуле (pid + 100) * 1000 + 90
Строка, номер которой вычисляется как (pid + 100) * 1000 + 100 + X*10 + 1 задает название точки входа, отображаемое в игре.
Следующая строка - координата х точки входа Х. Номер строки находим по формуле (pid + 100) * 1000 + 100 + X*10 + 2 Сама же координата я является абсциссой гекса ENT c номером 0 на карте. Чтобы узнать координаты, открываем карту в маппере, щелкаем на этот гекс и в верхнем правом углу видим координаты x и y.
Далее идет координата y точки входа Х. Номер строки соответствует (pid + 100) * 1000 + 100 + X*10 + 3
Последние три строки дублируются для каждой точки входа со значением ноль.
А теперь финальный этап интеграции нашей локации - ее генерация на глобальной карте игры. Для этого находим и открываем файл GenerateWorld.cfg, который находится в директории ...\server\maps\GenerateWorld.cfg
Здесь ничего сложного, просто вписываем следующую строку:
@  200   777   466 # Test location
В этом коде первое число - это pid нашей локации (мы его задали в файле locations.cfg). Следующие два числа - х и у координаты нашей локации на глобальной карте, то что после значка # название нашей локации.
В общем то, ничего сложного в этом нет. Главное - будьте внимательны, не перепутываете pid'ы карт и локаций, сохраняйте синтаксис именно таким, как указанно в данном примере. Чтобы не лохонутся с координатами локации на глобальной карте, т.е. не поставить свою локацию поверх уже существующей, открывайте игру, выходите на глобальную карту, ищите удобное для вас место (квадрат), и записывайте его координаты.
Теперь мы посмотрим, как наша локация будет выглядеть непосредственно в игре. Для этого нам надо будет запустить сервер и клиент.
Запускаем файл FOnlineServer.exe, который находится в папке ...server\FOnlineServer.exe. Перед вами откроется приложения сервера FOnline. Нажмите start server. Ждите запуска. Если вы запускаете сервер впервые, этот процесс может занять некоторое время, поскольку именно при первом запуски приложение компилирует скрипты из исходного кода в машинный. Если в процессе запуска возникли ошибки, приложение уведомит вас об этом. Поскольку вы ничего, кроме карт и локаций, не меняли, то значит вы допустили ошибку именно в написании кода в каком то файле. Если возникает ошибка, пожалуйста, выкладывайте лог запуска вашего сервера и вместе мы отыщем вашу ошибку.
Если же сервер запустился, запускаем клиент, предварительно его настроив. Запускаем приложение FOconfig.exe из папки ...\client\FOcinfig.exe и настраиваем желаемые параметры. Главное, во вкладке "Сеть" в поле "Хост" должно быть вписано "localhost", порт должен быть "4000". Теперь запускаем приложение FOnline.exe, регистрируемся (создаем персонажа), заходим в игру, находим свою локацию и тестим))
По всем вопросам - как всегда.
 
Последний раз редактировалось: 07.08.2011 23:09
07.08.2011 15:32
Kxokon
Пользователь
Авторейтинг:
Рядовой
(12-0)
Тема: RE: Добавляем созданные карты в игру.
 
для ответа необходимо зарегистрироваться
Скоко эта скачиваемая херня весит.
 
 
_____________________________________
Origin: Khokon (ну кокон же)
08.08.2011 00:00
antony87
Участник проекта
Авторейтинг:
Гуру
(896-0)
Знания
Магистр Ордена
Звание:
Великий Магистр
Репутация:
Идеолог Знания
Тема: RE[2]: Добавляем созданные карты в игру.
 
для ответа необходимо зарегистрироваться
Kxokon писал(а)
Скоко эта скачиваемая херня весит.
1,3 Gb
 
 
08.08.2011 00:11
Kxokon
Пользователь
Авторейтинг:
Рядовой
(12-0)
Тема: RE[3]: Добавляем созданные карты в игру.
 
для ответа необходимо зарегистрироваться
antony87 писал(а)
Kxokon писал(а)
Скоко эта скачиваемая херня весит.
1,3 Gb
=( ТОКО 400МБ скачал,скорость 250кб/с - я бомж
 
 
_____________________________________
Origin: Khokon (ну кокон же)
08.08.2011 00:25
antony87
Участник проекта
Авторейтинг:
Гуру
(896-0)
Знания
Магистр Ордена
Звание:
Великий Магистр
Репутация:
Идеолог Знания
Тема: RE[4]: Добавляем созданные карты в игру.
 
для ответа необходимо зарегистрироваться
Kxokon писал(а)
antony87 писал(а)
Kxokon писал(а)
Скоко эта скачиваемая херня весит.
1,3 Gb
=( ТОКО 400МБ скачал,скорость 250кб/с - я бомж
Это печально(
 
 
08.08.2011 12:37
Kxokon
Пользователь
Авторейтинг:
Рядовой
(12-0)
Тема: RE[5]: Добавляем созданные карты в игру.
 
для ответа необходимо зарегистрироваться
antony87 писал(а)
Kxokon писал(а)
antony87 писал(а)
Kxokon писал(а)
Скоко эта скачиваемая херня весит.
1,3 Gb
=( ТОКО 400МБ скачал,скорость 250кб/с - я бомж
Это печально(
очень
 
 
_____________________________________
Origin: Khokon (ну кокон же)
08.08.2011 18:37
leoshin
Пользователь
Авторейтинг:
Рядовой
(4-0)
Тема: RE[6]: Добавляем созданные карты в игру.
 
для ответа необходимо зарегистрироваться
Создал я карту....  теперь вопрос: как сделать ее стартовой. Т.е., чтобы при респе и начале игры перс именно на ней появлялся?
 
 
04.01.2013 19:50
Lavr
Участник проекта
Авторейтинг:
Гуру
(825-0)
Братство Стали
Звание:
Старший палладин
Тема: RE[7]: Добавляем созданные карты в игру.
 
для ответа необходимо зарегистрироваться
leoshin писал(а)
Создал я карту....  теперь вопрос: как сделать ее стартовой. Т.е., чтобы при респе и начале игры перс именно на ней появлялся?
А ты вообще кто?
 
 
05.01.2013 16:22
leoshin
Пользователь
Авторейтинг:
Рядовой
(4-0)
Тема: RE[8]: Добавляем созданные карты в игру.
 
для ответа необходимо зарегистрироваться
В смысле - "Кто"? Человек =). Да и при чем это здесь? Я просто задал вопрос. Если не знаете ответ,   то не отвечайте. Значит этот вопрос не к Вам
 
 
07.01.2013 06:24
Lavr
Участник проекта
Авторейтинг:
Гуру
(825-0)
Братство Стали
Звание:
Старший палладин
Тема: RE[9]: Добавляем созданные карты в игру.
 
для ответа необходимо зарегистрироваться
leoshin писал(а)
В смысле - "Кто"? Человек =). Да и при чем это здесь? Я просто задал вопрос. Если не знаете ответ,   то не отвечайте. Значит этот вопрос не к Вам
Сайт мёртв. Вам здесь врядли помогут.
 
 
07.01.2013 12:13

Страницы: 1 2 3 4 5 6 7

 

 запомнить
Регистрация
Забыли пароль?
 

ГАЛЕРЕЯ


Робомозх