CS. Создание враждующих фракций — различия между версиями
Материал из S.T.A.L.K.E.R. Inside Wiki
Loxotron (обсуждение | вклад) |
Ork (обсуждение | вклад) (оформление) |
||
(не показаны 16 промежуточные версии 12 участников) | |||
Строка 1: | Строка 1: | ||
== Теория == | == Теория == | ||
− | Для моего мода | + | Для моего мода мне понадобилось сделать новую группировку. Сообственно, для начала вы должны создать свою группировку. Не люблю теорий, перейдём сразу к практике! |
== Практика == | == Практика == | ||
− | Рассмотрим функцию из '''dialogs.script''' | + | Рассмотрим функцию из '''dialogs.script''': |
− | < | + | <lua> |
function actor_set_stalker(actor, npc) | function actor_set_stalker(actor, npc) | ||
printf("ACTOR NOW IN [STALKER] COMMUNITY") | printf("ACTOR NOW IN [STALKER] COMMUNITY") | ||
Строка 12: | Строка 12: | ||
return true | return true | ||
end | end | ||
− | </ | + | </lua> |
− | Если попробовать добавить | + | Если попробовать добавить |
− | < | + | <lua> |
sim_board.get_sim_board():set_actor_community("my_comm") | sim_board.get_sim_board():set_actor_community("my_comm") | ||
− | </ | + | </lua> |
− | + | то ничего не произойдет, значит идём дальше, в '''sim_board.script''': | |
− | + | <lua> | |
− | < | + | |
-- Перевод игрока в группировку. | -- Перевод игрока в группировку. | ||
function sim_board:set_actor_community(community) | function sim_board:set_actor_community(community) | ||
Строка 44: | Строка 43: | ||
end | end | ||
end | end | ||
− | </ | + | </lua> |
− | Здесь есть два выхода либо подправить '''actor_communitites''' | + | Здесь есть два выхода - либо подправить '''actor_communitites''' в текущем скрипте |
− | < | + | <lua> |
local actor_communitites = { | local actor_communitites = { | ||
csky = "actor_csky", | csky = "actor_csky", | ||
dolg = "actor_dolg", | dolg = "actor_dolg", | ||
− | freedom | + | freedom = "actor_freedom", |
− | bandit | + | bandit = "actor_bandit", |
− | stalker | + | stalker = "actor_stalker", |
− | none | + | none = "actor", |
− | zombied | + | zombied = "zombied", |
− | monolith | + | monolith = "monolith", |
− | my_comm | + | my_comm = "my_comm" |
} | } | ||
− | </ | + | </lua> |
− | '''game_relation.ltx''' | + | и в '''game_relation.ltx''': |
− | < | + | <ini> |
[actor_communities] | [actor_communities] | ||
− | actor | + | actor = actor, actor |
− | actor_csky | + | actor_csky = csky, renegade |
− | actor_bandit | + | actor_bandit = bandit, stalker |
− | actor_dolg | + | actor_dolg = dolg, freedom |
actor_freedom = freedom, dolg | actor_freedom = freedom, dolg | ||
actor_stalker = stalker, bandit | actor_stalker = stalker, bandit | ||
Строка 82: | Строка 81: | ||
renegade | renegade | ||
my_comm | my_comm | ||
− | </ | + | </ini> |
− | + | ||
− | + | ||
− | + | (обратите внимание, что в конфиге после знака "=", идёт "Группировка-друзья, Группировка-враги"), | |
+ | или вторым способом: | ||
− | < | + | <lua> |
db.actor:set_character_community("my_comm", 0, 0) | db.actor:set_character_community("my_comm", 0, 0) | ||
− | </ | + | </lua> |
− | И в конфиге естественно. | + | И в конфиге, естественно. |
− | Вот мы и разобрались со вступлением, но при переходе в раздел | + | Вот мы и разобрались со вступлением, но при переходе в раздел "Война группировок" - вылет. Идём дальше. Видим, что ошибка в скрипте '''pda.script''', значит, по аналогии добавляем туда: |
− | < | + | <lua> |
elseif(state.faction_id=="freedom") then | elseif(state.faction_id=="freedom") then | ||
state.name = game.translate_string("ui_st_name_freedom") | state.name = game.translate_string("ui_st_name_freedom") | ||
Строка 134: | Строка 132: | ||
end | end | ||
state.location = game.translate_string("st_location_freedom")--Локация обитания | state.location = game.translate_string("st_location_freedom")--Локация обитания | ||
− | </ | + | </lua> |
Строка 143: | Строка 141: | ||
Автор - '''russian-stalker''' | Автор - '''russian-stalker''' | ||
− | Статья перенесена с оф мод ресурса by '''stalers-life''' ('''stunder''') | + | Статья перенесена с оф. мод-ресурса by '''stalers-life''' ('''stunder''') |
[[Категория: Скрипты]] | [[Категория: Скрипты]] |
Текущая версия на 15:07, 12 апреля 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)