Для начала зайдем в gamedata/config/creatures/game_releations.ltx и там изменим:
;реальное разделение на группы репутаций на шкалы
rating = novice, 300, experienced, 600, veteran, 900, master, 1200, legend
и затем строчку с наименованием рангов:
;шкалы для вывода названий вместо чисел
;рейтингов, репутаций и благосклонности в интерфейсе
rating_names = novice, 300, experienced, 600, veteran, 900, master, 1200, legend
Затем там же ищем эту строчку и изменяем ее:
[rank_relations]
; novice, experienced, veteran, master, legend
;===================================================================
novice = 0, 0, 0, 0, 0
experienced = 0, 0, 0, 0, 0
veteran = 0, 0, 0, 0, 0
master = 0, 0, 0, 0, 0
legend = 0, 0, 0, 0, 0
Затем там же изменяем одну строчку. Не уверен в ее работоспособности, но лучше не рисковать:
;очки рейтинга, получаемые за убийство персонажа
;с определенным статусом
[rank_kill_points]
novice = 0
experienced = 0
veteran = 0
master = 0
legend = 0
С конфигами вроде разобрались. Лезем в скрипты. gamedata/scripts/_g.script:
function set_actor_rank(rank)
if rank == "novice" then
db.actor:set_character_rank(0)
elseif rank == "stalker" then
db.actor:set_character_rank(300)
elseif rank == "veteran" then
db.actor:set_character_rank(600)
elseif rank == "master" then
db.actor:set_character_rank(900)
elseif rank == "legend" then
db.actor:set_character_rank(1200)
end
end
Вместо 1200 можете поставить любое свое значение. Этот скрипт отвечает либо за то, когда ранг получается у actor`a, либо, если меняешь через скрипт ранг у последнего, то очки его ранга ровны тому, что мы только что подставили (то бишь 1200)...
Затем меняем gamedata/scripts/xr_info.script:
local info_by_rank = {
novice = { "encyclopedy_zone_artifact_af-medusa",
"encyclopedy_zone_artifact_af-cristall-flower",
"encyclopedy_zone_artifact_af-vyvert",
"encyclopedy_zone_artifact_af-gravi",
"encyclopedy_zone_artifact_af-blood",
"encyclopedy_zone_artifact_af-soul",
"encyclopedy_zone_zone-story_story-2006",
"encyclopedy_zone_anomalies_bald",
"encyclopedy_zone_anomalies_gravi",
"encyclopedy_zone_anomalies_meat",
"encyclopedy_zone_anomalies_electra",
"encyclopedy_zone_anomalies_radioactive",
"encyclopedy_zone_locations_escape",
"encyclopedy_zone_locations_garbage",
"encyclopedy_mutant_crow_general",
"encyclopedy_mutant_rat_general",
"encyclopedy_mutant_flesh_general",
"encyclopedy_mutant_blind_general",
"encyclopedy_mutant_boar_general",
"encyclopedy_social_military_army",
"encyclopedy_social_stalker-clans_duty",
"encyclopedy_social_stalker-clans_bandits"
},
stalker = { "encyclopedy_zone_artifact_af-medusa",
"encyclopedy_zone_artifact_af-cristall-flower",
"encyclopedy_zone_artifact_af-night-star",
"encyclopedy_zone_artifact_af-vyvert",
"encyclopedy_zone_artifact_af-gravi",
"encyclopedy_zone_artifact_af-gold-fish",
"encyclopedy_zone_artifact_af-blood",
"encyclopedy_zone_artifact_af-mincer-meat",
"encyclopedy_zone_artifact_af-soul",
"encyclopedy_zone_zone-story_story-2008",
"encyclopedy_zone_anomalies_fuzz",
"encyclopedy_zone_anomalies_radioactive",
"encyclopedy_zone_anomalies_electra",
"encyclopedy_zone_anomalies_ameba",
"encyclopedy_zone_locations_escape",
"encyclopedy_zone_locations_garbage",
"encyclopedy_zone_locations_agroprom",
"encyclopedy_zone_locations_darkdolina",
"encyclopedy_zone_locations_bar",
"encyclopedy_zone_locations_rostok",
"encyclopedy_mutant_tushkano",
"encyclopedy_mutant_pseudodog_general",
"encyclopedy_mutant_bloodsucker_general",
"encyclopedy_mutant_burer_general",
"encyclopedy_mutant_snork_general",
"encyclopedy_mutant_flesh_general",
"encyclopedy_mutant_blind_general",
"encyclopedy_mutant_boar_general",
"encyclopedy_social_stalker-clans_freedom",
"encyclopedy_social_stalker-clans_monolith",
"encyclopedy_social_stalker-clans_killers",
"encyclopedy_social_stalker-clans_zomstalkers",
"encyclopedy_social_scientists_mobile-labs",
"encyclopedy_social_military_army",
"encyclopedy_social_stalker-clans_duty",
"encyclopedy_social_stalker-clans_bandits",
"stalker_story_2",
"stalker_story_3",
"stalker_story_7",
"stalker_story_11",
"stalker_story_12",
"stalker_story_16",
"stalker_story_17",
"stalker_story_18",
"stalker_story_19",
"stalker_story_20"
},
veteran = { "encyclopedy_zone_artifact_af-electra-sparkler",
"encyclopedy_zone_artifact_af-electra-flash",
"encyclopedy_zone_artifact_af-rusty-thorn",
"encyclopedy_zone_artifact_af-rusty-kristall",
"encyclopedy_zone_artifact_af-gravi",
"encyclopedy_zone_artifact_af-gold-fish",
"encyclopedy_zone_artifact_af-blood",
"encyclopedy_zone_artifact_af-mincer-meat",
"encyclopedy_zone_artifact_af-soul",
"encyclopedy_zone_artifact_af-electra-sparkler",
"encyclopedy_zone_artifact_af-electra-flash",
"encyclopedy_zone_artifact_af-electra-moonlight",
"encyclopedy_zone_artifact_af-ameba-slime",
"encyclopedy_zone_artifact_af-ameba-slug",
"encyclopedy_zone_zone-story_story-2010",
"encyclopedy_zone_zone-story_story-raid",
"encyclopedy_zone_anomalies_fuzz",
"encyclopedy_zone_anomalies_radioactive",
"encyclopedy_zone_anomalies_electra",
"encyclopedy_zone_anomalies_ameba",
"encyclopedy_zone_locations_agroprom",
"encyclopedy_zone_locations_darkdolina",
"encyclopedy_zone_locations_bar",
"encyclopedy_zone_locations_rostok",
"encyclopedy_zone_locations_military-loc",
"encyclopedy_zone_locations_yantar",
"encyclopedy_zone_locations_radar",
"encyclopedy_mutant_pseudogiant_general",
"encyclopedy_mutant_poltergeist_general",
"encyclopedy_mutant_controller_general",
"encyclopedy_mutant_bloodsucker_general",
"encyclopedy_mutant_burer_general",
"encyclopedy_mutant_snork_general",
"encyclopedy_social_stalker-clans_loners",
"encyclopedy_social_military_milstalkers",
"encyclopedy_social_stalker-clans_freedom",
"encyclopedy_social_stalker-clans_monolith",
"encyclopedy_social_stalker-clans_killers",
"encyclopedy_social_stalker-clans_zomstalkers",
"encyclopedy_social_scientists_mobile-labs",
"stalker_story_2",
"stalker_story_3",
"stalker_story_7",
"stalker_story_10",
"stalker_story_11",
"stalker_story_12",
"stalker_story_13",
"stalker_story_14",
"stalker_story_16",
"stalker_story_17",
"stalker_story_18",
"stalker_story_19",
"stalker_story_20"
},
master = { "encyclopedy_zone_artifact_af-electra-sparkler",
"encyclopedy_zone_artifact_af-electra-flash",
"encyclopedy_zone_artifact_af-electra-moonlight",
"encyclopedy_zone_artifact_af-rusty-thorn",
"encyclopedy_zone_artifact_af-rusty-kristall",
"encyclopedy_zone_artifact_af-rusty-sea-urchin",
"encyclopedy_zone_artifact_af-drops",
"encyclopedy_zone_artifact_af-fireball",
"encyclopedy_zone_artifact_af-cristall",
"encyclopedy_zone_zone-story_story-raid",
"encyclopedy_zone_anomalies_fuzz",
"encyclopedy_zone_anomalies_radioactive",
"encyclopedy_zone_anomalies_electra",
"encyclopedy_zone_anomalies_ameba",
"encyclopedy_zone_locations_yantar",
"encyclopedy_zone_locations_radar",
"encyclopedy_zone_locations_pripiat",
"encyclopedy_zone_locations_stancia",
"encyclopedy_mutant_pseudogiant_general",
"encyclopedy_mutant_poltergeist_general",
"encyclopedy_mutant_controller_general",
"encyclopedy_social_stalker-clans_loners",
"encyclopedy_social_military_milstalkers",
"stalker_story_6",
"stalker_story_9",
"stalker_story_10",
"stalker_story_13",
"stalker_story_14",
"stalker_story_16",
"stalker_story_17",
"stalker_story_18",
"stalker_story_19",
"stalker_story_20"
},
legend = { "encyclopedy_zone_artifact_af-electra-sparkler",
"encyclopedy_zone_artifact_af-electra-flash",
"encyclopedy_zone_artifact_af-electra-moonlight",
"encyclopedy_zone_artifact_af-rusty-thorn",
"encyclopedy_zone_artifact_af-rusty-kristall",
"encyclopedy_zone_artifact_af-rusty-sea-urchin",
"encyclopedy_zone_artifact_af-drops",
"encyclopedy_zone_artifact_af-fireball",
"encyclopedy_zone_artifact_af-cristall",
"encyclopedy_zone_zone-story_story-raid",
"encyclopedy_zone_anomalies_fuzz",
"encyclopedy_zone_anomalies_radioactive",
"encyclopedy_zone_anomalies_electra",
"encyclopedy_zone_anomalies_ameba",
"encyclopedy_zone_locations_yantar",
"encyclopedy_zone_locations_radar",
"encyclopedy_zone_locations_pripiat",
"encyclopedy_zone_locations_stancia",
"encyclopedy_mutant_pseudogiant_general",
"encyclopedy_mutant_poltergeist_general",
"encyclopedy_mutant_controller_general",
"encyclopedy_social_stalker-clans_loners",
"encyclopedy_social_military_milstalkers",
"stalker_story_6",
"stalker_story_9",
"stalker_story_10",
"stalker_story_13",
"stalker_story_14",
"stalker_story_16",
"stalker_story_17",
"stalker_story_18",
"stalker_story_19",
"stalker_story_20"
}
}
Этот скрипт отвечает за истории, услышанные от сталкеров (которые остаются в дневнике). Я в скриптах не силен, но можно попробовать объединить информацию у мастера и легенды в 1 строчку, добавив в скрипт оператор or. То бишь должно выглядеть так (не проверено!):
master or legend = { "encyclopedy_zone_artifact_af-electra-sparkler",
"encyclopedy_zone_artifact_af-electra-flash",
"encyclopedy_zone_artifact_af-electra-moonlight",
"encyclopedy_zone_artifact_af-rusty-thorn",
"encyclopedy_zone_artifact_af-rusty-kristall",
"encyclopedy_zone_artifact_af-rusty-sea-urchin",
"encyclopedy_zone_artifact_af-drops",
"encyclopedy_zone_artifact_af-fireball",
"encyclopedy_zone_artifact_af-cristall",
"encyclopedy_zone_zone-story_story-raid",
"encyclopedy_zone_anomalies_fuzz",
"encyclopedy_zone_anomalies_radioactive",
"encyclopedy_zone_anomalies_electra",
"encyclopedy_zone_anomalies_ameba",
"encyclopedy_zone_locations_yantar",
"encyclopedy_zone_locations_radar",
"encyclopedy_zone_locations_pripiat",
"encyclopedy_zone_locations_stancia",
"encyclopedy_mutant_pseudogiant_general",
"encyclopedy_mutant_poltergeist_general",
"encyclopedy_mutant_controller_general",
"encyclopedy_social_stalker-clans_loners",
"encyclopedy_social_military_milstalkers",
"stalker_story_6",
"stalker_story_9",
"stalker_story_10",
"stalker_story_13",
"stalker_story_14",
"stalker_story_16",
"stalker_story_17",
"stalker_story_18",
"stalker_story_19",
"stalker_story_20"
}
Затем лезем в gamedata/scripts/xr_statistic.script:
local killCountProps = {
neutral_novice = 1, neutral_experienced = 2, neutral_veteran = 3, neutral_master = 4, neutral_legend = 5,
monolith_novice = 1, monolith_experienced = 2, monolith_veteran = 3, monolith_master = 4, monolith_legend = 5,
military_novice = 1, military_experienced = 2, military_veteran = 3, military_master = 4, military_legend = 5,
killer_novice = 1, killer_experienced = 2, killer_veteran = 3, killer_master = 4, killer_legend = 5,
ecolog_novice = 1, ecolog_experienced = 2, ecolog_veteran = 3, ecolog_master = 4, ecolog_legend = 5,
dolg_novice = 1, dolg_experienced = 2, dolg_veteran = 3, dolg_master = 4, dolg_legend = 5,
freedom_novice = 1, freedom_experienced = 2, freedom_veteran = 3, freedom_master = 4, freedom_legend = 5,
bandit_novice = 1, bandit_experienced = 2, bandit_veteran = 3, bandit_master = 4, bandit_legend = 5,
zombied_novice = 1, zombied_experienced = 2, zombied_veteran = 3, zombied_master = 4, zombied_legend = 5,
Вместо 5 можно подставить любое число. Это сколько капает в ранг очков когда убиваешь людей с рангом легенда...
Лезем далее в gamedata/scripts/se_respawn.script:
-- Таблица ограничений на спаун: всего в симуляции не должно быть больше, чем указано.
local simMaxCount = {
stalker_novice = 43, stalker_regular = 48, stalker_veteran = 43, stalker_master = 20, stalker_legend = 5,
monolith_novice = 0, monolith_regular = 30, monolith_veteran = 35, monolith_master = 30, monolith_legend = 10,
military_novice = 0, military_regular = 32, military_veteran = 22, military_master = 5, military_legend = 2,
killer_novice = 0, killer_regular = 18, killer_veteran = 17, killer_master = 10, killer_legend = 2,
ecolog_novice = 1, ecolog_regular = 1, ecolog_veteran = 1, ecolog_master = 1, ecolog_legend = 0,
dolg_novice = 0, dolg_regular = 33, dolg_veteran = 36, dolg_master = 17, dolg_legend = 13,
freedom_novice = 50, freedom_regular = 20, freedom_veteran = 26, freedom_master = 21, freedom_legend = 13,
bandit_novice = 40, bandit_regular = 50, bandit_veteran = 18, bandit_master = 10, bandit_legend = 2,
zombied_novice = 20, zombied_regular = 15, zombied_veteran = 10, zombied_master = 10, zombied_legend = 10,
Ну, тут, я думаю, понятно. Остался последний штрих, отображение ранга в текстовом значении. То бишь залезаем в config\text\rus и открываем любой файл, например ui_st_mm.xml и добавляем туда:
<string id="legend">
<text>Легенда</text>
</string>
Чтобы протестировать, лезем в config\gameplay\character_desc_general.xml и меняем ранг у актора. Поставим, например, 1201:
<specific_character id="actor" no_random = "1">
<name>actor_name</name>
<icon>ui_npc_u_actor</icon>
<map_icon x="2" y="5"></map_icon>
<team>Actor</team>
<supplies>
[spawn] \n
device_torch \n
</supplies>
<class>actor</class>
<community>actor</community>
<rank>1201</rank>
<reputation>0</reputation>
<visual>actors\hero\stalker_novice</visual>
</specific_character>
Заходим в игру и проверяем. И да! У ГГ теперь ранг Легенда!
Всем спасибо за внимание,автор статьи: Fireman3000.
Спасибо kuperday за то что нашел мои ошибки в статье