Elite Games - Свобода среди звезд!

Freelancer - Советы и рекомендации - Создаём свою систему

КАК СОЗДАТЬ СВОЮ СИСТЕМУ В FREELANCER

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

* Структура Вселенной описывается ini-файлами, расположенными в папке и вложенных папках \Freelancer\DATA\UNIVERSE. Открыв папку \Freelancer\DATA\UNIVERSE\SYSTEMS, мы увидим папки со всеми уже созданными там системами. Их имена содержат первые буквы названия пространств. Пример: LI01 «первая» система пространства Либерти (потом нам пригодится, это система Нью-Йорк).

1. Теперь создадим здесь свою систему.
Создайте системную директорию:
В DATA/UNIVERSE/SYSTEMS создайте новую папку, я назвала ее, к примеру, DA01.
В этой папке создайте новую, и назовите ее BASES, и в ней папку с именем ROOMS.
Создайте в SYSTEMS/DA01 ini-файл (DA01.ini)
[SystemInfo]
space_color = 0, 0, 0
local_faction = li_p_grp

[Dust]
spacedust = Dust
[TexturePanels]
file = universe\heavens\shapes.ini

[Music]
space = music_li_space
danger = music_li_danger
battle = music_li_battle

[Ambient]
color = 30, 50, 80

[Background]
basic_stars = solar\starsphere\starsphere_stars_basic.cmp
complex_stars = solar\starsphere\starsphere_li01_stars.cmp
nebulae = solar\starsphere\starsphere_li01.cmp

[EncounterParameters]
nickname = tradelane_trade_freighter
filename = missions\encounters\tradelane_trade_freighter.ini

[LightSource]
nickname = System_LIGHT
pos = 642, 0, 198
color = 255, 255, 255
range = 120000
type = DIRECTIONAL
atten_curve = DYNAMIC_DIRECTION

[Object]
nickname = DA01_to_LI01
ids_name = 061982
pos = -83176, 0, 44831
rotate = 0, -70, 0
Archetype = jumpgate
msg_id_prefix = gcs_refer_system_Li02
ids_info = 66145
jump_effect = jump_effect_bretonia
reputation = li_p_grp
behavior = NOTHING
difficulty_level = 1
goto = Li01, Li01_to_Da01, gate_tunnel_bretonia
loadout = jumpgate_da_01
pilot = pilot_solar_easiest

[Object]
nickname = Da01_01 ; измените в соответствии с вашими пожеланиями о названии
ids_name = 196774
pos = -83176, 0, 49831
rotate = 0, 45, 0
Archetype = outpost
ids_info = 65771
base = Da01_01_base
dock_with = Da01_01_base
voice = atc_leg_f01
space_costume = li_newscaster_head_gen, li_female_elite_body
reputation = li_n_grp
behavior = NOTHING
faction = li_n_grp
behavior = NOTHING
difficulty_level = 1
loadout = trading_outpost_li_01
pilot = pilot_solar_hardest

В данном случае будет одни прыжковые ворота (джампгейт) и одна станция. Остальное будет из системы Нью-Йорк. Просто скопируем это (не забудьте заменять там, где это нужно, LI01 на ваше название).

2. Хорошо, перейдем к станции:
В SYSTEMS/DA01/BASES создайте ini-файл. Его имя должно содержать название (nickname) будущей станции (посмотрите в примере дальше, в моем случае имя файла будет da01_01_base.ini).
[BaseInfo]
nickname = Da01_01_Base
start_room = Cityscape

[Room]
nickname = Cityscape
file = Universe\Systems\Da01\Bases\Rooms\Da01_01_cityscape.ini ; измените соответствующую часть на название будущей стации

[Room]
nickname = Bar
file = Universe\Systems\Da01\Bases\Rooms\Da01_01_bar.ini

[Room]
nickname = Trader
file = Universe\Systems\Da01\Bases\Rooms\Da01_01_trader.ini

[Room]
nickname = ShipDealer
file = Universe\Systems\Da01\Bases\Rooms\Da01_01_shipdealer.ini

[Room]
nickname = Equipment
file = Universe\Systems\Da01\Bases\Rooms\Da01_01_equipment.ini

Это отделения (комнаты) cтанции, они были скопированы из Манхеттена.

И для каждого отделения станции создайте (или скопируйте и переименуйте оригинальные) ini-файлы.

* Открыв папку, предположим одной из систем Кусари, Freelancer\DATA\UNIVERSE\SYSTEMS\KU04\BASES\ROOMS, мы увидим целую кучу инишников. Видно, что для объекта KU04_01 существует целых пять ini-файлов, это как раз то, о чем мы только что говорили. Понятно, что для данного объекта существует весь набор возможностей, вплоть до покупки корабля. Не забудьте, чтобы редактировать наши ini-файлы, их нужно сначала разархивировать. Об этом подробно написано в Руководстве по покупке крузера на сайте. Если коротко, то это утилитка bini.exe( утилита находится здесь в "Наборе моддера" ): bini.exe xxx.ini и получаем xxx.ini.txt, его и редактируем и заменяем, убрав txt конечно. Всегда невредно предварительно сохранить то, что будем изменять, на всякий случай. Если мы хотим чтобы на станции были старт, бар и продажа оборудования, нам необходимы три соответствующих ini-файла. Вот их названия для станции 01 системы KU04:
ku04_01_bar.ini
ku04_01_cityscape.ini
ku04_01_equipment.ini

*Сделайте необходимые изменения в названии и скопируйте содержимое из соответствующих файлов какой-нибудь базы.

*Здесь предлагается пример с файлом для бара станции 01 системы Li01

[Room_Info]
set_script = Scripts\Bases\Li_01_Bar_hardpoint_01.thn
scene = all, ambient, Scripts\Bases\Li_01_Bar_ambi_int_01.thn

[Room_Sound]
music = music_bar_li01
ambient = ambience_bar_ground_larger

[Camera]
name = Camera_0

[CharacterPlacement]
name = Zg/PC/Player/01/A/Stand
start_script = scripts\bases\Li_01_Bar_enter_01.thn

[Hotspot]
name = IDS_HOTSPOT_EXIT
behavior = ExitDoor
room_switch = Cityscape

[Hotspot]
name = IDS_HOTSPOT_BAR
behavior = ExitDoor
room_switch = Bar

[Hotspot]
name = IDS_HOTSPOT_COMMODITYTRADER_ROOM
behavior = ExitDoor
room_switch = Trader

[Hotspot]
name = IDS_HOTSPOT_EQUIPMENTDEALER_ROOM
behavior = ExitDoor
room_switch = Equipment

[Hotspot]
name = IDS_HOTSPOT_SHIPDEALER_ROOM
behavior = ExitDoor
room_switch = ShipDealer

[Hotspot]
name = IDS_HOTSPOT_NEWSVENDOR
behavior = NewsVendor

[Hotspot]
name = IDS_HOTSPOT_MISSIONVENDOR
behavior = MissionVendor

3. Теперь сложнее: как попасть в вашу новую систему.
В SYSTEMS/LI01/li01.ini я добавил новые ворота (джампгейт).
*Найдите это место в файле, там описаны ворота в системе Li01.

[Object]
nickname = Li01_to_Li02
ids_name = 260911
pos = -83176, 0, 44831
rotate = 0, -70, 0
Archetype = jumpgate
msg_id_prefix = gcs_refer_system_Li02
ids_info = 66145
jump_effect = jump_effect_bretonia
reputation = li_p_grp
behavior = NOTHING
difficulty_level = 1
goto = Li02, Li02_to_Li01, gate_tunnel_bretonia
loadout = jumpgate_li_01
pilot = pilot_solar_easiest

*Найдите это место в файле, там описаны ворота в системе Li01. [pos = -83176, 0, 44831] — координаты ворот. Обратите внимание, вертикальная составляющая инвертирована, то есть ось направлена вниз. Это может вам пригодится, когда вы освоитесь и начнете располагать свои объекты, где пожелаете.
*Вставьте следующие строчки в файл:

[Object]
nickname = Li01_to_Da01 ; нужно ли это менять не знаю
ids_name = 061983 ;
pos = -84976, 0, 44711 ; изменим немного значения так, чтобы ворота оказались рядом с оригинальными
rotate = 0, -70, 0
Archetype = jumpgate
msg_id_prefix = gcs_refer_system_Da01
ids_info = 66145
jump_effect = jump_effect_bretonia
reputation = li_p_grp
behavior = NOTHING
difficulty_level = 1
goto = Da01, Da01_to_Li01, gate_tunnel_bretonia ; Здесь важно указать в какую систему ведет дыра
loadout = jumpgate_li_01
pilot = pilot_solar_easiest

Комментарий
При проверке я долго мучилась с поиском сделанного, но вам скажу сразу, новые ворота появятся в системе Нью-Йорк рядом с воротами на Калифорнию.
Прикол: когда я к ним подлетела, там уже активно в них залетали други-недруги всякие, как будто ворота там всегда «висели».

Продолжение
В UNIVERSE/universe.ini
Добавьте вот это:
[system]
nickname = Da01 ; поменяйте на название вашей системы
file = Systems\Da01\Da01.ini ; и это
pos = 7, 9 ; Это позиция по направлению к Нью Йорку
msg_id_prefix = gcs_refer_system_Li01
visit = 0
strid_name = 196609
ids_info = 66106

и

[Base]
nickname = Da01_01_Base ; Измените на свои названия
system = Da01 ; и здесь
strid_name = 196766
file = Universe\Systems\Da01\Bases\Da01_01_Base.ini ; здесь тоже важно не ошибиться с вашими названиями
BGCS_base_run_by = W02bF35

4. Хорошо, перейдем к оборудованию, доступному на нашей станции:
В EQUIPMENT/market_commodities.ini добавьте:

[BaseGood]
base = Da01_01_base
MarketGood = commodity_boron, 0, -1, 150, 500, 0, 100.300000
MarketGood = commodity_gold, 0, -1, 0, 0, 1, 2
MarketGood = commodity_silver, 0, -1, 0, 0, 1, 2.250000
MarketGood = commodity_niobium, 0, -1, 0, 0, 1, 2.850000
MarketGood = commodity_oxygen, 0, -1, 150, 500, 0, 0.500000
MarketGood = commodity_water, 0, -1, 150, 500, 0, 0.500000
MarketGood = commodity_diamonds, 0, -1, 0, 0, 1, 1.500000
MarketGood = commodity_food, 0, -1, 150, 500, 0, 0.862100
MarketGood = commodity_alien_artifacts, 0, -1, 0, 0, 1, 4.750000
MarketGood = commodity_luxury_food, 0, -1, 0, 0, 1, 7.500000
MarketGood = commodity_H_fuel, 0, -1, 150, 500, 0, 1.200000
MarketGood = commodity_construction_machinery, 0, -1, 0, 0, 1, 1.300000
MarketGood = commodity_pharm, 0, -1, 150, 500, 0, 0.789500
MarketGood = commodity_consumer_goods, 0, -1, 150, 500, 0, 1.100000
MarketGood = commodity_luxury_consumer_goods, 0, -1, 150, 500, 0, 1
MarketGood = commodity_cardamine, 0, -1, 0, 0, 1, 2
MarketGood = commodity_sidearms, 0, -1, 0, 0, 1, 0.550000

Здесь первое значение показывает, в каких взаимоотношениях вы должны быть к обитателям станции, чтобы купить данное оборудование (0 = нейтральное; 1 = дружеское; -1 = враждебное). Последнее число — цена оборудования (ее можно найти в goods.ini).

В EQUIPMENT/market_ships.ini добавьте:
[BaseGood]
base = Da01_01_base
marketgood = gf1_package, 0, -1, 0, 0, 1, 1, 1
marketgood = gf2_package, 4, -1, 0, 0, 0, 1, 1
marketgood = gf4_package, 13, -1, 0, 0, 1, 1, 1
marketgood = gf5_package, 24, -1, 0, 0, 1, 1, 1
marketgood = gf6_package, 30, -1, 0, 0, 1, 1, 1
marketgood = bwf_package, 4, -1, 0, 0, 1, 1, 1
marketgood = bwe_package, 20, -1, 0, 0, 1, 1, 1
marketgood = bwe2_package, 30, -1, 0, 0, 1, 1, 1
marketgood = bwfr_package, 10, -1, 0, 0, 1, 1, 1
marketgood = cof_package, 8, -1, 0, 0, 1, 1, 1
marketgood = coe_package, 28, -1, 0, 0, 1, 1, 1
marketgood = coe2_package, 32, -1, 0, 0, 1, 1, 1
marketgood = lf_package, 1, -1, 0, 0, 0, 1, 1
marketgood = le_package, 2, -1, 0, 0, 1, 1, 1
marketgood = lfr_package, 1, -1, 0, 0, 0, 1, 1
marketgood = bf_package, 6, -1, 0, 0, 1, 1, 1
marketgood = be_package, 8, -1, 0, 0, 1, 1, 1
marketgood = bfr_package, 4, -1, 0, 0, 1, 1, 1
marketgood = kf_package, 10, -1, 0, 0, 1, 1, 1
marketgood = ke_package, 13, -1, 0, 0, 1, 1, 1
marketgood = kfr_package, 10, -1, 0, 0, 1, 1, 1
marketgood = rf_package, 20, -1, 0, 0, 1, 1, 1
marketgood = re_package, 22, -1, 0, 0, 1, 1, 1
marketgood = rfr_package, 1, -1, 1, 1, 0, 1, 1
marketgood = pf_package, 2, -1, 0, 0, 1, 1, 1
marketgood = pe_package, 13, -1, 0, 0, 1, 1, 1
marketgood = pfr_package, 4, -1, 0, 0, 1, 1, 1
marketgood = bhf_package, 1, -1, 1, 1, 0, 1, 1
marketgood = bhe_package, 13, -1, 0, 0, 1, 1, 1
marketgood = bhe2_package, 1, -1, 1, 1, 0, 1, 1
marketgood = oe_package, 16, -1, 0, 0, 1, 1, 1
Эти строчки служат для возможности приобретать корабли, но вы можете выбирать для покупки только из трех. Так что выберите свои любимые.

Пример:
rfr = Rheinland FReighter
lf = Liberty Fighter (не уверен, но кажется это так)
Первое число — необходимый для покупки уровень.
Второе — не знаю.
Если вы хотите сделать корабль доступным для покупки, поменяйте следующие два номера на 1 и третье на 0, но можно купить только три корабля!

Комментарий
Это я не проверяла, на форуме пишут, что впихивают всякие корабли в любом количестве, не знаю.
Пример:
marketgood = lf_package, 1, -1, 1, 1, 0, 1, 1
IВ EQUIPMENT/market_misc.ini
Добавьте (это взято из weapons/equipment Манхеттена):

[BaseGood]
base = Da01_01_base
MarketGood = li_gun01_mark01, 0, -1, 10, 10, 0, 1
MarketGood = li_gun01_mark02, 0, -0.200000, 10, 10, 0, 1
MarketGood = li_gun01_mark03, 2, 0.100000, 10, 10, 0, 1
MarketGood = li_gun01_mark04, 6, 0.300000, 10, 10, 0, 1
MarketGood = li_gun02_mark01, 0, -1, 10, 10, 0, 1
MarketGood = li_gun02_mark02, 0, -0.200000, 10, 10, 0, 1
MarketGood = li_gun02_mark03, 2, 0.100000, 10, 10, 0, 1
MarketGood = li_gun02_mark04, 6, 0.300000, 10, 10, 0, 1
MarketGood = li_turret02_mark01, 0, -1, 10, 10, 0, 1
MarketGood = li_turret02_mark02, 2, -0.200000, 10, 10, 0, 1
MarketGood = ge_s_thruster_01, 0, -1, 10, 10, 0, 1
MarketGood = missile01_mark01, 0, -1, 10, 10, 0, 1
MarketGood = missile01_mark01_ammo, 0, -1, 50, 50, 0, 1
MarketGood = missile01_mark02_ammo, 2, -1, 50, 50, 0, 1
MarketGood = missile01_mark03_ammo, 10, -1, 50, 50, 0, 1
MarketGood = missile01_mark04_ammo, 22, -1, 50, 50, 0, 1
MarketGood = missile01_mark05_ammo, 30, -1, 50, 50, 0, 1
MarketGood = missile02_mark01, 0, -1, 10, 10, 0, 1
MarketGood = missile02_mark01_ammo, 0, -1, 50, 50, 0, 1
MarketGood = missile02_mark02_ammo, 2, -0.200000, 50, 50, 0, 1
MarketGood = missile02_mark03_ammo, 10, 0.200000, 50, 50, 0, 1
MarketGood = missile02_mark04_ammo, 22, 0.400000, 50, 50, 0, 1
MarketGood = missile02_mark05_ammo, 30, 0.750000, 50, 50, 0, 1
MarketGood = missile03_mark01, 0, -1, 10, 10, 0, 1
MarketGood = missile03_mark01_ammo, 0, -1, 50, 50, 0, 1
MarketGood = missile03_mark02_ammo, 6, -1, 50, 50, 0, 1
MarketGood = missile03_mark03_ammo, 22, -1, 50, 50, 0, 1
MarketGood = missile03_mark04_ammo, 30, -1, 50, 50, 0, 1
MarketGood = cruise_disruptor01_mark01_ammo, 2, -1, 50, 50, 0, 1
MarketGood = cruise_disruptor01_mark02_ammo, 26, -1, 50, 50, 0, 1
MarketGood = torpedo01_mark01_ammo, 10, -1, 50, 50, 0, 1
MarketGood = torpedo01_mark02_ammo, 30, -1, 50, 50, 0, 1
MarketGood = mine01_mark01, 0, -1, 10, 10, 0, 1
MarketGood = mine01_mark01_ammo, 0, -1, 50, 50, 0, 1
MarketGood = mine01_mark02_ammo, 2, -1, 50, 50, 0, 1
MarketGood = mine01_mark03_ammo, 10, -1, 50, 50, 0, 1
MarketGood = mine01_mark04_ammo, 22, -1, 50, 50, 0, 1
MarketGood = mine01_mark05_ammo, 30, -1, 50, 50, 0, 1
MarketGood = mine02_mark01, 0, -1, 10, 10, 0, 1
MarketGood = mine02_mark01_ammo, 0, -1, 50, 50, 0, 1
MarketGood = mine02_mark02_ammo, 6, -1, 50, 50, 0, 1
MarketGood = mine02_mark03_ammo, 16, -1, 50, 50, 0, 1
MarketGood = mine02_mark04_ammo, 26, -1, 50, 50, 0, 1
MarketGood = mine02_mark05_ammo, 30, -1, 50, 50, 0, 1
MarketGood = ge_s_repair_01, 0, -1, 100, 100, 0, 1
MarketGood = ge_s_cm_01, 0, -1, 10, 10, 0, 1
MarketGood = ge_s_cm_01_ammo, 0, -1, 50, 50, 0, 1
MarketGood = ge_s_cm_02_ammo, 2, -1, 50, 50, 0, 1
MarketGood = ge_s_cm_03_ammo, 6, -1, 50, 50, 0, 1
MarketGood = shield01_mark01_lf, 0, -1, 10, 10, 0, 1
MarketGood = shield01_mark02_lf, 0, -1, 10, 10, 0, 1
MarketGood = shield01_mark01_hf, 0, -1, 10, 10, 0, 1
MarketGood = shield01_mark02_hf, 0, -1, 10, 10, 0, 1
MarketGood = shield01_mark01_fr, 0, -1, 10, 10, 0, 1
MarketGood = shield01_mark02_fr, 0, -1, 10, 10, 0, 1
MarketGood = ge_s_battery_01, 0, -1, 100, 100, 0, 1

5. Напоследок: информация для дальнейшего творчества.

Package Name Корабль
gf1_package Starflyer
gf2_package StarTracker
gf4_package Hawk
gf5_package Falcon
gf6_package Eagle
bwf_package Dagger
bwe_package Stilleto
bwe2_package Sabre
bwfr_package Dromedary
cof_package Legion
coe_package Centurion
coe2_package Titan
lf_package Patriot
le_package Defender
lfr_package Rhino
bf_package Cavalier
be_package Crusader
bfr_package Clydesdale
kf_package Drake
ke_package Dragon
kfr_package Drone
rf_package Banshee
re_package Valkyrie
rfr_package Humpback
pf_package Bloodhound
pe_package Wolfhound
pfr_package Mule
bhf_package Piranha
bhe_package Barracuda
bhe2_package Hammerhead
oe_package Anubis

Добавьте, если хотите, больше ini-файлов, чтобы в вашей системе появились базы, планеты или другие объекты.
Типы Станций:
Archetype Model Type System Base # ID #
outpost West Point Liberty 09 196774
Smallstation1 Ft. Bush Liberty 11
largestation1 Newark Station Liberty 08 196773
miningbase_badlands ?asteroid mining station?
depot Detroit Munitions Liberty 10 196775
shipyard
space_shipping02
space_factory01
space_industrial
space_port_dmg Rochester Liberty 13
docking_fixture
Ithaca_station

Комментарий
Можно ведь и скопировать целую систему, а потом потихонечку поменять там все по своему вкусу. Теперь, когда становится понятнее что к чему, додумать уже не составляет труда. Давайте обратим внимание на файл Li01.ini. Мы его уже распаковывали. Это полная схема что где и как. Проще сразу скопировать такой файл и потом изменять что-то в нем, потому что всякие описания полей для планет и светил замучаешься сам составлять или текстуры искать. Вот небольшой кусочек:

[Object]
nickname = Sun_Li01
ids_name = 261008
pos = 0, 0, 0
ambient_color = 255, 255, 255
Archetype = sun_2000
ids_info = 66162
star = med_white_sun
atmosphere_range = 11000
burn_color = 160, 222, 245

Это солнце. Видно, что его координаты точно посредине системы [0,0,0].

[LightSource]
nickname = System_LIGHT
pos = 642, 0, 198
color = 255, 255, 255
range = 120000
type = DIRECTIONAL
atten_curve = DYNAMIC_DIRECTION

Свечение солнца

[Object]
nickname = Li01_01
ids_name = 196766
pos = -33270, 0, -33039
rotate = 0, -10, -10
ambient_color = 255, 0, 0
Archetype = planet_earthgrncld_4000
ids_info = 65759
spin = 0, 0.001000, 0
atmosphere_range = 4200
burn_color = 160, 222, 245
base = Li01_01_Base
reputation = li_p_grp
visit = 1

Это уже планета. В данном случае Манхеттен. Ее координаты отрицательны, но находится она в верхней половине, не забудьте про направление оси. Приведены ее параметры, тут можно не задумываться и скопировать все для себя. На ней есть база Li01 и планета (посещена, visit = 1).

[zone]
nickname = Zone_Li01_Manhattan_death
pos = -33270, 0, -33039
shape = SPHERE
size = 4100
damage = 2000000
sort = 99.500000
density = 0
relief_time = 0
population_additive = false

Опасность приближения к планете (никогда не отправляли противников сгорать в плотных слоях?)
Дальше разбирать можно самостоятельно. Всем удачи.


a.k.a. Lisa
К началу раздела | Наверх страницы Сообщить об ошибке
Freelancer - Советы и рекомендации - Создаём свою систему
Все документы раздела: Как подключиться к серверу | Как сделать русский чат в игре | Как дружить со всеми | Создаём свою систему | Аляска | Как можно купить BattleCruiser | Восстановление ключей | Как сделать открытую карту | А Знаете ли Вы, что... | Тайна третьей миссии или звук в игре | Как помочь другу | Настройка широкоформатного разрешения |


Дизайн Elite Games V5 beta.18
EGM Elite Games Manager v5.17 02.05.2010