И так, возможно многим эта тема покажется странной и неактуальной в наши дни так как по всему интернету полно таких уроков, но я решил сделать его и на AP pro, так как не раз сталкивался с этим вопросом. И так! ===========================================================================
Давайте создавать новую группировку! Создадим к примеру группировку Чистое небо (уж очень нравится мне эта группировка)
Что нам понадобится?
Папка configs
1. Папка creatures а)файл game_relations.ltx ;----- Отношение группировки к другим фракциям и к ГГ. б)файл spawn_sections_general.ltx ;----- Регистрация character_profile дефолтных персов группировки.
3. Папка misc а)файл death_items_by_communities.ltx ;----- Предметы которые могут появится у трупа непися группировки. б)файл script_sound.ltx ;----- Звуковые схемы, просьба о помощи, различные фразы, реакций на действия. в)файл script_sound_music_and_stories.ltx ;----- Звуковые схемы, анекдоты, историй, применяется в посиделках у костра или на базах. г)файл simulation.ltx ;----- Спавен сквадов группировки при старте игры. д)файл squad_behaviours.ltx ;----- Возможность спавнить сквады группировки через смарты. е)файл squad_descr.ltx ;----- Симуляция сквадов для распавна (пока не обезателен). ё) файл dialog_manager.ltx ;----- Название говорит само за себя.
4. Папка text\rus\ui_st_pda.xml ;----- Название группировки на русском языке. ================================================================================================================== Папка scripts а)фаил _g.script ;----- Регистрация новой группировки. б)фаил death_manager.script ;----- Регистрация новой группировки. г)фаил sound_theme.script ;----- Прописывается возможность произнесения фраз группировкой. =========================================================================
Важно! Цифру после запятой ставить обязательно, т.е. если у вас была 10, то после названия клана вы должны дописать следующею цифру, 11 .
Теперь ищем такую строку:
Цитата
;коэффициенты "сочувствия" группировок ;после воздействия на одного из членов группировки ;goodwill его распространится на остальных членов группировки ;с определенным коэффициентом ;(порядок должен совпадать с communities_relations) [communities_sympathy] actor = 0.0 bandit = 0.0 dolg = 0.0 ecolog = 0.0 freedom = 0.0 killer = 0.0 army = 0.0 monolith = 0.0 monster = 0.0 stalker = 0.0 ;0.01 zombied = 0.0
И дописываем наш клан:
Цитата
;коэффициенты "сочувствия" группировок ;после воздействия на одного из членов группировки ;goodwill его распространится на остальных членов группировки ;с определенным коэффициентом ;(порядок должен совпадать с communities_relations) [communities_sympathy] actor = 0.0 bandit = 0.0 dolg = 0.0 ecolog = 0.0 freedom = 0.0 killer = 0.0 army = 0.0 monolith = 0.0 monster = 0.0 stalker = 0.0 ;0.01 zombied = 0.0 nebo = 0.0
Всё сохраняем и закрываем!
А теперь давайте сделаем нашу группировку говорящей. Это делается всего двумя файлами: Список: configs/misc/script_sound.ltx configs/misc/script_sound_music_and_stories.ltx
И везде где есть список группировок, как тут пишем свою. Аналогично и со следующим файлом.
Далее можно добавить разные продукты для группировки, заходим в файл gamedata\configs\misc\death_items_by_communities.ltx и добавляем в самом низу секцию нашей группировки.
Цитата
[nebo]:stalker
Теперь весь список продуктов, а так же вероятность их спавна в инвентаре НПС новой группировки будет, как у сталкеров. Если вы захотите добавить свои продукты или изменить вероятность спавна старых, то под секцией своей группировки дописываем нужный продукт с другой вероятностью. Например: У сталкеров возьмём секцию респа какого-нибудь арта: [stalker] af_cristall_flower = 0 И перетащим её в нашу группировку с другой вероятностью спавна [nebo]:stalker af_cristall_flower = 0.1
Можно вобще не трогать этот файл, всё продукты будут спавниться по дефолту без вылетов.
Теперь "научим" НПС новой группировки общаться с ГГ. Открываешь файл dialog_manager
"Научим" НПС просить аптечку. Я буду делать на секции сталкеров. Ищем секцию Wounded dialogs и дописываем через запятую свой клан:
Цитата
;Wounded dialogs [dm_help_0] category = hello npc_community = stalker, trader, monolith, nebo level = all wounded = true
[dm_help_1] category = hello npc_community = stalker, trader, monolith, nebo level = all wounded = true
Ну а теперь "научим" НПС здороваться. Ищем следующие:
Цитата
[dm_hello_0] category = hello npc_community = stalker, trader, monolith, nebo level = all
[dm_hello_1] category = hello npc_community = stalker, trader, monolith, nebo level = all
[dm_hello_2] category = hello npc_community = stalker, monolith, nebo level = all
Вот и всё! Теперь наши НПС могут говорить без вылетов.
Сделаем наш клан понятным игроку. Идём в файл ui_st_pda.xml
Начинаем с этого файла. Давайте создадим пять профилей группировки: новичок, бывалый, опытный, ветеран, мастер. В самом низу списка создаём пять секции:
Цитата
;**************************************************************** ; nebo ;****************************************************************
[sim_default_nebo_0]:stalker $spawn = "respawn\sim_default_nebo_0" character_profile = sim_default_nebo_0 spec_rank = novice community = nebo
[sim_default_nebo_1]:stalker $spawn = "respawn\sim_default_nebo_1" character_profile = sim_default_nebo_1 spec_rank = regular community = nebo
[sim_default_nebo_2]:stalker $spawn = "respawn\sim_default_nebo_2" character_profile = sim_default_nebo_2 spec_rank = experienced community = nebo
[sim_default_nebo_3]:stalker $spawn = "respawn\sim_default_nebo_3" character_profile = sim_default_nebo_3 spec_rank = veteran community = nebo
[sim_default_nebo_4]:stalker $spawn = "respawn\sim_default_nebo_4" character_profile = sim_default_nebo_4 spec_rank = master community = nebo
Сохраняем, закрываем.
Создаём секцию своих НПС в самом низу. Я буду показывать на одной секции, т.к. все займут много места.
Цитата
<specific_character id="sim_default_nebo_0_default_0" team_default = "1"> ;- ID <name>GENERATE_NAME_stalker</name> ;-ИМЯ (в данном случае генерирутся из файлов сталкерских имён и кличек) <icon>ui_inGame2_neutral_1</icon> ;- иконка <map_icon x="1" y="0"></map_icon> <bio>Опытный сталкер. Детальная информация отсутствует.</bio>
<class>sim_default_nebo_0</class> - класс <community>nebo</community> <terrain_sect>stalker_terrain</terrain_sect> <snd_config>characters_voice\human_01\stalker\</snd_config> ;- голос
В данном файле пишем следующие(чтобы не запутаться, пишите свой клан после секции зомбей(zombied)).
Цитата
[nebo]:default_behaviour
Тут создаём сквады нашего клана. В Simulation SQUADS пишем:
Цитата
[nebo_sim_squad_novice]:online_offline_group ;--id отряда с указанием скриптового класса. faction = nebo - клан npc_random = sim_default_nebo_0, sim_default_nebo_1 ;- НПС заданные для спавна npc_in_squad = 2, 3 - количество НПС в скваде (в данном случае 2 или 3)
Теперь лезем в папку scripts и ищем файл death_manager.ltx
Открываем и ищем такую строку:
Цитата
function init_drop_settings() local community_list = { "stalker", "dolg", "freedom", "bandit", "army", "zombied", "ecolog", "killer", "monolith" }
И дописываем свой клан:
Цитата
function init_drop_settings() local community_list = { "stalker", "dolg", "freedom", "bandit", "army", "zombied", "ecolog", "killer", "monolith", "nebo" }
Важно! Делать именно так! После последнего клана ставим запятую, открываем кавычки, пишем название своего клана, закрываем кавычки.
Для чего надо регистрировать клан в этом скрипте?
Если вы не зарегистрируете его там, то при убийстве НПС нового клана у вас вылетит игра, другими словами этот файл является менеджером убийств всех ИИ существ в игре, от сталкеров до мутантов разных фракций.
В данном файле ищем строку squad_community_by_behaviour = { После секции Монолита пишем свою группировку:
Цитата
["nebo"] = "nebo",
Не забываем про запятые!
В данном файле ищем строку local avail_communities = parse_names(utils.cfg_get_string(snd_ini, section, "avail_communities", nil, false, "", "stalker, ecolog, bandit, dolg, freedom, army, zombied, monolith, killer")) И вписываем свой клан:
Тут ищем таблицу поведения относительно смартов. И после monster_special пишем следующие:
Цитата
nebo = { squad = nil, smart = { base = { prec = function(squad, target) return in_time_interval(18,8) and not xr_conditions.surge_started() and not travel_manager.check_squad_for_enemies(squad) and (target:name() == "zat_stalker_base_smart" or target:name() == "jup_a6" or target:name() == "pri_a16") end }, surge = { prec = function() return xr_conditions.surge_started() end }, territory= { prec = function() return in_time_interval(8,18) and not xr_conditions.surge_started() end }, resource = { prec = function(squad, target) return in_time_interval(8,18) and not xr_conditions.surge_started() end } -- and squad:has_detector() }, actor = nil },
[nebo_sim_squad_novice]:online_offline_group ;--id отряда с указанием скриптового класса. <- УДАЛИТЬ! faction = nebo - клан npc_random = sim_default_nebo_0, sim_default_nebo_1 ;- НПС заданные для спавна <- УДАЛИТЬ! npc_in_squad = 2, 3 - количество НПС в скваде (в данном случае 2 или 3) <- УДАЛИТЬ!
Добавлено (17.06.2015, 11:04) --------------------------------------------- Все эти пояснения на русском нужно удалять. У тебя даже в логе всё прекрасно понятно.
Знакомься: это описание ошибки. И, если ты хотя бы на примитивном уровне знаешь английский язык, тебе не составит труда перевести многие типы ошибок. А если составит, то гугл транслейтер поможет Данный лог гласит о том, что у тебя продублирована какая-то секция. Хотя почему какая-то? Вот в аргументе указана:
ЦитатаArhnagel228 ()
Arguments : sim_default_nebo_0_default_0
Совет: если хочешь стать модмейкером и не оставаться вечно нубом (тут есть много людей, которые три года тусят в этом разделе, но не понимают прикола вылета Can't open section ), то пробуй сам разбирать логи. Для того, чтобы понять причину вылета, необязательно писать на форум или гуглить. Иногда достаточно немного соображалки.