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