Сегодня мы создадим новую
группировку. Назовем её, скажем, "Ветер". Не суть важно.
Практика
Базовый уровень
1. Для начала в game_relations.ltx и
в таблицу отношений группировок в конце и в заголовке добавляем название своей
группировки и коэффициенты отношений к ней у других группировок. Также, не
забываем прописать её собственное отношение к другим группировкам:
Отсчет идет построчно начиная
сверху. Хотя есть небольшой нюанс. У первых трех строк - нумерация начинается с
нуля, с остальных группировок она идет как надо. Для wind(наша группировка
ветер) выставили 18, так как мы эту группировку отделили от других.
Далее, в разделе
[communities_sympathy] в конце добавляем свою группировку и коэффициент
"впечатлительности" - чем он меньше, тем меньше отношение группировки
будет меняться к вам в целом:
4. Если предусматривается респавн
бойцов новой группировки, в se_respawn.script прописываем в local simMaxCount =
{ после строчек с зомбированными сталкерами строку:
7. Чтобы у персонажа в графе
"Группировка" отображалось не "wind", а "Ветер",
зарегистрируем соответствующую строку в файле string_table_general.xml:
Ветер
Одиночка
[...]
8. Существует возможность создать
для нашей новой группировки места, где они будут ходить (*_terrain брать из
m_stalker.ltx):
То есть, к примеру, существует
секция:
[stalker_terrain]
255,000,255,255
008,001,255,255 ;Разрешено ходить по опасным местам на баре
012,001,255,255 ;Разрешено ходить по опасным местам на Милитари
Тогда можно создать новую, по
аналогии:
[wind_terrain]
255,000,255,255
008,001,255,255 ;Разрешено ходить по опасным местам на баре
012,001,255,255 ;Разрешено ходить по опасным местам на Милитари
010,001,255,255 ;Разрешено ходить по опасным местам на янтаре
Здесь, очевидно, указаны координаты
самого уровня. Для каждого уровня существует своя начальная координата.
Продвинутый уровень
Такой метод достаточно примитивен.
Это не полноценная группировка. Нам нужны соответствующие диалоги, возможность
получения квестов и вступления в группировку, уникальные NPC.
Квесты
Добавим квесты, которые нужно
выполнить для группировки. Пока - простые поручения распространенных типов.
Во-первых, пропишите в список
диалогов персонажа следующие строки:
Этим мы добавили ему ветку диалога
"Есть работа?", а также ветку для награды за квест/отказа от него.
Теперь зарегистрируем в task_manager.ltx набор новых заданий.
[wind_find_item]
type = find_item
community = actor
text = [ссылка на текст с рассказом заказчика о задании]
description = [ссылка на текст с описанием задания]
parent = [имя NPC-заказчика]
target = scientific_outfit
reward_money = 5000
reward_reputation = +5
reward_rank = 4
reward_item = wpn_sig_m1
time = 86400
[wind_kill_stalker]
type = kill_stalker
community = actor
text = [ссылка на текст с рассказом заказчика о задании]
description = [ссылка на текст с описанием задания]
parent = [имя NPC-заказчика]
target = sim_stalker_master_master
reward_money = 4000
reward_reputation = +5
reward_rank = 9
reward_item = ammo_5.56x45_ap, ammo_5.56x45_ap, ammo_5.56x45_ap
time = 86400
Не
забудьте прописать описания заданий в текстовые массивы. Подробнее о
редактировании task_manager.ltx читайте в уроке, посвященном однотипным
квестам.
Да,
и зарегистрируйте сами ветки диалогов в файле dialogs.xml. Вот пример того, как
это сделано для заданий "Долга":
Соответственно,
пройдем туда, куда указывает строка task_manager.init_dolg_task_dialog - в
task_manager.script:
function
init_dolg_task_dialog(dlg)
get_random_task():init_task_dialog(dlg, "dolg")
По
аналогии делаем и с нашим "Ветром".
Вступление в группировку
Реализуем
возможность вступления в группировку.
Прописываем
в dialogs.script такие action'ы:
-----------------------------------------------------------------------------------
-- Community
-----------------------------------------------------------------------------------
[...]
function
actor_set_wind (actor, npc)
printf ("ACTOR NOW IN WIND COMMUNITY"
if db.actor then
db.actor:set_character_community ("actor_wind", 0, 0)
end
return true
end