CS. Создание враждующих фракций
Материал из S.T.A.L.K.E.R. Inside Wiki
Содержание
Теория
Для моего мода, мне понадобилось сделать новую группировку. Сообственно для начала вы должны создать свою группировку. Не люблю теорий, перейдём сразу к практике!
Практика
Рассмотрим функцию из dialogs.script
function actor_set_stalker(actor, npc)
printf("ACTOR NOW IN [STALKER] COMMUNITY")
sim_board.get_sim_board():set_actor_community("stalker")
return true
end
Если попробовать добавить:
sim_board.get_sim_board():set_actor_community("my_comm")
То ничего не произойдет, значит идём дальше в sim_board.script:
-- Перевод игрока в группировку.
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(в текущем скрипте и в game_relation.ltx)
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
[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
Обратите внимание, что в конфиге после знака "=", идёт "Группировка-друзья,Группировка-враги"
Или 2 способом:
db.actor:set_character_community("my_comm", 0, 0)
И в конфиге естественно.
Вот мы и разобрались со вступлением, но при переходе в раздел, война группировок-вылет. Идём дальше. Видем что ошибка в скрипте pda.script, значит поаналогии добавляем туда:
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")--Локация обитания
The End
Ну вроде всё! Тутор рассчитан на опытных модмейкеров! Сам процесс вступления не описывал.
Титры)
Автор - russian-stalker Статья перенесена с оф мод ресурса by stalers-life (stunder)