Практика

Рассмотрим функцию из dialogs.script:

Code
function actor_set_stalker(actor, npc)
  printf("ACTOR NOW IN [STALKER] COMMUNITY")
  sim_board.get_sim_board():set_actor_community("stalker")
  return true
end

Если попробовать добавить

Code
sim_board.get_sim_board():set_actor_community("my_comm")

то ничего не произойдет, значит идём дальше, в sim_board.script:

Code
-- Перевод игрока в группировку.
function sim_board:set_actor_community(community)
     ---- Устанавливаем группировку игрока
     db.actor:set_character_community(actor_communitites[community], 0, 0)
  local tm = task_manager.get_task_manager()
   
     for k,v in pairs(self.players) do
         if v.player_name == community then
             v.community_player = true
         else
             v.community_player = false
             -- Обнуляем все квесты, которые выдала эта группировка
    for kk,vv in pairs(v.random_tasks) do
     local task = tm:get_task_by_entity_id(vv)
     task.last_check_task = "reversed"
    end                         
         end
         v.brain:calculate_expansion_targets()
     end
end

Здесь есть два выхода - либо подправить actor_communitites в текущем скрипте

Code
local actor_communitites = {
         csky                 = "actor_csky",
         dolg                 = "actor_dolg",
         freedom              = "actor_freedom",
         bandit               = "actor_bandit",
         stalker              = "actor_stalker",
         none                 = "actor",
         zombied              = "zombied",
         monolith             = "monolith",
         my_comm              = "my_comm"
}

и в game_relation.ltx:

Code
[actor_communities]
actor           = actor, actor
actor_csky      = csky, renegade
actor_bandit    = bandit, stalker
actor_dolg      = dolg, freedom
actor_freedom  = freedom, dolg
actor_stalker  = stalker, bandit
my_comm         = my_comm, bandit

[pda_rank_communities]
dolg
freedom
stalker
bandit
csky
renegade
my_comm

(обратите внимание, что в конфиге после знака "=", идёт "Группировка-друзья, Группировка-враги"), или вторым способом:

Code
db.actor:set_character_community("my_comm", 0, 0)

И в конфиге, естественно.

Вот мы и разобрались со вступлением, но при переходе в раздел "Война группировок" - вылет. Идём дальше. Видим, что ошибка в скрипте pda.script, значит, по аналогии добавляем туда:

Code
        elseif(state.faction_id=="freedom") then
         state.name = game.translate_string("ui_st_name_freedom")
         state.icon = "freedom_wide"
         state.icon_big = "freedom_big"
         if faction ~= nil then
          state.target = faction:get_war_target_title()
          state.target_desc = faction:get_war_target_descr()
         else
          state.target = ""
          state.target_desc = ""
         end
         state.location = game.translate_string("st_location_freedom")
   
         state.war_state1 = faction:get_war_stage_icon(4)
         state.war_state_hint1 = faction:get_war_stage_icon(4)
   state.war_state2 = faction:get_war_stage_icon(5)
   state.war_state_hint2 = faction:get_war_stage_icon(5)
   state.war_state3 = faction:get_war_stage_icon(6)
   state.war_state_hint3 = faction:get_war_stage_icon(6)
   state.war_state4 = faction:get_war_stage_icon(7)
   state.war_state_hint4 = faction:get_war_stage_icon(7)
   state.war_state5 = faction:get_war_stage_icon(8)
   state.war_state_hint5 = faction:get_war_stage_icon(8)
   
--Наша часть
     elseif(state.faction_id=="my_comm") then
         state.name = game.translate_string("ui_st_name_freedom")--Имя нашей группировки в войне группировок
         state.icon = "freedom_wide" --Иконка в инвентаре
         state.icon_big = "freedom_big" --Иконка в войне группировок
         if faction ~= nil then
          state.target = faction:get_war_target_title()
          state.target_desc = faction:get_war_target_descr()
         else
          state.target = ""
          state.target_desc = ""
         end
          state.location = game.translate_string("st_location_freedom")--Локация обитания
 
Автор - russian-stalker