CS. Создание враждующих фракций — различия между версиями — S.T.A.L.K.E.R. Inside Wiki

CS. Создание враждующих фракций — различия между версиями

Материал из S.T.A.L.K.E.R. Inside Wiki

Перейти к: навигация, поиск
(ZyzFdBZVNSJrVNldhR)
м
Строка 1: Строка 1:
  http://www.edicionesvedra.com/ Comprando viagra online wix http://www.autisme-modedemploi.org/Generic-Cialis/ Cialis pas cher =PPP http://www.icedtrish.com/Generic-Cialis/ billig cialis :PPP http://www.blogdemoteros.com/ cialis generico johr
+
== Теория ==
 +
Для моего мода мне понадобилось сделать новую группировку. Сообственно, для начала вы должны создать свою группировку. Не люблю теорий, перейдём сразу к практике!
 +
 
 +
== Практика ==
 +
 
 +
Рассмотрим функцию из '''dialogs.script''':
 +
 
 +
<lua>
 +
function actor_set_stalker(actor, npc)
 +
printf("ACTOR NOW IN [STALKER] COMMUNITY")
 +
sim_board.get_sim_board():set_actor_community("stalker")
 +
return true
 +
end
 +
</lua>
 +
 
 +
Если попробовать добавить
 +
 
 +
<lua>
 +
sim_board.get_sim_board():set_actor_community("my_comm")
 +
</lua>
 +
 
 +
то ничего не произойдет, значит идём дальше, в '''sim_board.script''':
 +
 
 +
<lua>
 +
-- Перевод игрока в группировку.
 +
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
 +
</lua>
 +
 
 +
Здесь есть два выхода - либо подправить '''actor_communitites''' в текущем скрипте
 +
 
 +
<lua>
 +
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"
 +
}
 +
</lua>
 +
 
 +
и в '''game_relation.ltx''':
 +
 
 +
<pre>
 +
[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
 +
</pre>
 +
 
 +
(обратите внимание, что в конфиге после знака "=", идёт "Группировка-друзья, Группировка-враги"),
 +
или вторым способом:
 +
 
 +
<lua>
 +
db.actor:set_character_community("my_comm", 0, 0)
 +
</lua>
 +
 
 +
И в конфиге, естественно.
 +
 
 +
Вот мы и разобрались со вступлением, но при переходе в раздел "Война группировок" - вылет. Идём дальше. Видим, что ошибка в скрипте '''pda.script''', значит, по аналогии добавляем туда:
 +
 
 +
<lua>
 +
        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")--Локация обитания
 +
</lua>
 +
 
 +
 
 +
== The End ==
 +
Ну вроде всё! Тутор рассчитан на опытных модмейкеров! Сам процесс вступления не описывал.
 +
 
 +
== Титры) ==
 +
 
 +
Автор - '''russian-stalker'''
 +
Статья перенесена с оф. мод-ресурса by '''stalers-life''' ('''stunder''')
 +
 
 +
[[Категория: Скрипты]]

Версия 10:51, 5 марта 2011

Теория

Для моего мода мне понадобилось сделать новую группировку. Сообственно, для начала вы должны создать свою группировку. Не люблю теорий, перейдём сразу к практике!

Практика

Рассмотрим функцию из 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 в текущем скрипте

 
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

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

 
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)

Другие места
LANGUAGE