Создание враждующих фракция, для Чистого Неба

Материал из Mod 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

Личные инструменты