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

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

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

Перейти к: навигация, поиск
(Теория)
(ImQFUkwt)
Строка 1: Строка 1:
DxRjF2 <a href="http://bpjydrgupety.com/">bpjydrgupety</a>, [url=http://stnkyrdofqig.com/]stnkyrdofqig[/url], [link=http://jjymeefcsqkz.com/]jjymeefcsqkz[/link], http://ekbnzeefdsve.com/
+
JMD0xJ <a href="http://ehflodofsqga.com/">ehflodofsqga</a>, [url=http://cytkjcvieiiv.com/]cytkjcvieiiv[/url], [link=http://tpdknhtaecks.com/]tpdknhtaecks[/link], http://butskadoikrt.com/
 
+
== Практика ==
+
 
+
Рассмотрим функцию из '''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''')
+
 
+
[[Категория: Скрипты]]
+

Версия 21:05, 28 февраля 2011

JMD0xJ <a href="http://ehflodofsqga.com/">ehflodofsqga</a>, [url=http://cytkjcvieiiv.com/]cytkjcvieiiv[/url], [link=http://tpdknhtaecks.com/]tpdknhtaecks[/link], http://butskadoikrt.com/

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