=========================== Как увеличить скорость бега?
Ответ: Файл <Диск>:\<Каталог установки>\STALKER\gamedata\config\creatures\actor.ltx отвечает за параметры нашего игрока. В нем есть строка
Код: sprint_k=75;150;185;180;200; ;коэффициент на "sprint" бег (умножается walk_power, walk_weight_power)
Она отвечает за то насколько быстро персонаж устает при беге. Если поставить значение не 75, ну а скажем 5, то он практически не будет уставать.
============================ Как увеличить силу оружия?
Ответ: Заходим в папку gamedata/config/weapons, находим нужное нам оружие и строку hit_pover. Меняем её значения на большие.
============================ Как сделать нового и желательно уникального NPC?
Ответ: Для этого нам понадобятся координаты нужного места, где и будет заспаунен наш NPC. Возьмём Кордон, лагерь новичков. Можете снять координаты сами, а можете взять мною уже снятые: (-218.20,-20.2,-145.63),35362,47). Далее. Создаём файл в папке gamedata/scripts файл, скажем esc_unik_npc.script. В нём создаём функцию. Код: function esc_unik_npc () alife():create("esc_unik_npc",vector():set(-218.20,-20.2,-145.63),35362,47) end
Теперь мы в файле npc_profile.xml (в папке gameplay) добавляем нашего НПС. Код: <!-- Escape --> <character id="escape_trader"> <class>Trader</class> <specific_character>escape_trader</specific_character> </character>
Копируем или создаём по образцу только нижний блок smile Второго торговца нам ненадо. Теперь моздадим секцию нашего персоонажа. В файле spawn_section.ltx (gamedata/config/creatures) в блоке: ;--------Escape-------------- ;--------neutrals------------ Создаём секцию. Код: [esc_unik_npc]:stalker $spawn = "respawn\esc_unik_npc" character_profile = esc_unik_npc spec_rank = regular community = dolg
В строке community можете вместо долга вписать другую группировку. Однако если мы хотим, чтоба наш персоонаж не гулял по Зоне, пока не наткнётся на первуюю аномалию, то пропишем чтобы он стоял на месте. Для этого под community вставляем: custom_data = scripts\esc_unik_npc.ltx Далее создаём в gamedata/config папку scripts в в папке создаём файл esc_unik_npc.ltx В наш созданый файл вставляем: Код: [logic] active = remark1 danger = danger_ignore
[danger_ignore] ignore_distance = 5
[remark1] no_move = true
Всё наш НПС будет стоять на месте своего спауна. Едем дальше. Нам надо активировать нашего персоонажа. для этого мы должны вставить строку: <action>esc_unik_npc.esc_unik_npc</action> Либо в диалог, либо в какой-нибудь квест. Давайте вставим строку в файл info_portions.xml (gamedata/gameplay) под Код: <game_information_portions> <info_portion id="storyline_actor_start"> <task>storyline_eliminate_gunslinger</task>
Однако мы не прописали самого НПС, как личность smile В файле character_desc_escape.xml (gamedata/gameplay) добавляем: Код: <!---------------------------------------esc_unik_npc-----------------------------------------------------> <specific_character id="esc_unik_npc" team_default = "1"> <name>GENERATE_NAME_bandit</name> <icon>ui_npc_u_stalker_bandit_3</icon> <bio>esc_wolf_bio</bio>
Правда тут получится у нас долговец в одежде бандита и говорящего голосом монолитовца xD Всё сохроняем. НПС готов.
Но так же можно добавить нашему НПС диалог) Как добавлять диалоги написано в нашем факе) Если хотяте сделать нашему НПС своё имя то в файле stable_bio_name.xml (gamedata/config/text/rus) добавляем: Код: <string id="esc_unik_npc"> <text>Факер-мазафакер</text> </string>
А в файле сharacter_desc_escape.xml (gamedata/gameplay) находим нашего уже прописаного НПС и вставляем в секцию <name></name> (у нас в ней написано GENERATE_NAME_bandit) esc_unik_npc Всё smile Поздравляю)
============================== Как добавить новый побочный (второстепенный) квест?
Ответ: Файл task_manager (config/misc) отвечает за ВСЕ второстепенные (побочные) квесты (задания). Например хотим добавить задание на часть мутанта торговцу. Прописываем: Код: В разделе: ;----------Trader-------------------------------------------------- Находим подраздел: ;---------Monster Part----------- Дописываем: tm_monster_part_3
Дальше находим (ну наверное не обязательно, но чтобы был порядок в файле): Код: [tm_monster_part_1] type = monster_part community = actor condlist = {+agroprom_military_case_have} text = tm_monster_part_1_text description = tm_monster_part_1_descr parent = trader target = mutant_krovosos_jaw reward_money = 3000 reward_reputation = +20 reward_rank = 5 time = 86400 reward_item = ammo_12x76_dart, ammo_12x76_dart, ammo_12x76_dart, ammo_12x76_dart, ammo_12x76_dart prior = 2
Дальше после этого идёт слудющий квест но первая строка начинается с tm_monster_part_2 И после этого блока прописываем к примеру:
Код: [tm_monster_part_3] type = monster_part community = actor text = tm_monster_part_3_text description = tm_monster_part_3_descr parent = trader target = mutant_burer_hand reward_money = 1500 reward_reputation = +10 reward_rank = 5 time = 86400 reward_item = mutant_flesh_eye, mutant_boar_leg, mutant_snork_leg prior = 1
Обозначения:
Код: type - тип (в данном случае найти часть монстра) community - типо команда, но желательно не трогать text - текст который отображается в диалоге при выборе задания description - текст отображающийся, когда вы выберите задание parent - тот кто выдаёт задание target - место, вещь, арт, часть мутанта, сталкер, которых надо защитить, найти, убить reward_money - сколько денег вам дадут за выполнение задания reward_reputation - на скока понизится (-)/повысится(+) репутация ГГ reward_rank - количивство прибовляемых ранговых очков time - время в сек. на выполнение задания reward_item - вознаграждение в предметах prior - на каком месте будет стоять задание в ПДА reward_relation - повышение или ухудшение отношения ГГ при выполении задания (reward_relation = ecolog, +10000 - эокологи станут друзьями)
Всё с этим разобрались теперь в файле storyline_info_taskmanager (config/gameplay): Код: Находим:
article id - внутреннее имя статьи, именно на него ссылаются в файлах игры name - имя статьи, отображаемое в игре, подгружается из строкового массива texture - картинка и её позиция в статье, в данном случае мы использовали обычный белый шум text - текст статьи, отображаемый в игре, подгружается из строкового массива Добавим в, например, config\gameplay\info_l01escape.xml (инфопорции уровня "Кордон") ссылку на получение статьи - скажем, к трупу у туннеля, при обыске которого выдается информация о аномалиях в туннеле (вы его обнаруживаете, проходя второе спецзадание от Сидоровича). Найдем эти строки и дополним их: Код: <!-- труп у аномалии --> <info_portion id="esc_tutorial_dead_novice"> <article>tutorial_moving_anomaly</article> '''<article>zone_anomalies_activation_basic</article>''' </info_portion>
Главное - никогда не путайте article id, name и text статьи. Я в данном примере это сделать легко. Лучше называйте их непохожими друг на друга названиями.
Так как в статье у нас есть такое поле:
<text>enc_zone_anomalies_activation_basic</text>
Да и название тоже не написано прямо, а ссылается на определенную строку, то добавим этот самый text в config\text\rus\string_table_enc_zone.xml, в нашем случае:
Код: <string id="enc_zone_anomalies_activation-basic"> <text>Активация - базис</text> </string> <string id="enc_zone_anomalies_activation_basic"> <text>С артефактами связана, помимо всего прочего, ''(ну, и так далее, там большой текст)''...</text> </string>
Дополнительно Чтобы статья добавлялась при получении определенного задания, в ..._task.xml (вместо ... стоит название уровня) нужно прописать конструкцию вида:
Код: <article>название_задания_descr</article>
============================= Как Менять диалоги?
Ответ: gamedata/config/text/rus и найди dialogs_escape (или наоборот escape_dialogs ) открывай блокнотом и сможешь редактировать текст диалогов которые на кордоне. Так же и по остальным разобраться легко=) Приятной игры!=)
============================== Как сделать, чтобы сталкеры играли на губной гармошке?
Ответ:В файле gamedata\scripts\xr_kamp.scriptнаходим: -- играть на гармошке --if npc:object("harmonica_a") then -- self.npc[npc_id].states["play_harmonica"] = true -- self.npc[npc_id].states["wait_harmonica"] = true --self.kamp_states["pre_harmonica"] = true -- self.kamp_states["harmonica"] = true --self.kamp_states["post_harmonica"] = true --else Раскоментируем эти строки, для этого удалим --. Внимание! Удалять нужно только те --, которые здесь отмечены красным. Затем нужно добавить музыку. Например сталкерам, открываем папку gamedata\sounds\characters_voice\human_01\stalker\musicи добавляем туда свою музыку. Имя файла должно быть harmonica_* (где *, 1, 2, 3 и т.д.). Формат файла должен быть *.ogg. Таким же образом добавляем музыку остальным группировкам.
================================= Как сделать полный квест?
Ответ: Мы создадим квест (например для того чтобы нас пустили к Воронину) Приступим: <text>Найти артефакт панцирь</text> <icon height="50" width="50" x="100" y="50">ui\ui_icons_task</icon> <function_complete>dan_dialog.bar_dolg_propusk_have</function_complete> <infoportion_set_complete>bar_dolg_propusk_have</infoportion_set_complete> </objective> <objective> <text>Принести артефакт Пличко</text> <map_location_type hint="Пличко">blue_location</map_location_type> <object_story_id>bar_dolg_guard_commander</object_story_id> <infoportion_complete>bar_dolg_propusk_done</infoportion_complete> </objective> </game_task>
Все теперь нам надо добавить инфопоршни в наш диалог, находим dialogs_bar ищем в нем наши диалоги и добавляем инфопоршни; <dialog id="bar_ohran_propusk"> <dont_has_info>bar_dolg_propusk_start</dont_has_info> это значит что диалог не появиться у Пличко <dont_has_info>bar_dolg_propusk_have</dont_has_info> если сработали наши инфопоршни т.е. чтобы <dont_has_info>bar_dolg_propusk_done</dont_has_info> после выполнения задания диалог вновь не появлялся <phrase_list> <phrase id="0"> <text>bar_ohran_propusk_0</text> <next>1</next> </phrase> <phrase id="1"> <text>bar_ohran_propusk_1</text> <next>2</next> <next>3</next> </phrase> <phrase id="2"> <text>bar_ohran_propusk_2</text> <action>dan_dialog.bar_dolg_propusk_have</action> т.е. будет выполняться функция <give_info>bar_dolg_propusk_start</give_info> bar_dolg_propusk_have из сриптового файла dan_dialog. </phrase> <phrase id="3"> <text>bar_ohran_propusk_3</text> <give_info>bar_dolg_propusk_start</give_info> информации о получении первого инфопоршня. <action>dialogs.break_dialog</action> </phrase> </phrase_list> </dialog>
<dialog id="bar_friend_propusk"> <dont_has_info>bar_dolg_propusk_done</dont_has_info> не показывать после получения 3 инфопоршня <has_info>bar_dolg_propusk_have</has_info> показывать если есть второй инфопоршень <phrase_list> <phrase id="0"> <text>bar_friend_propusk_0</text> <next>1</next> </phrase> <phrase id="1"> <text>bar_friend_propusk_1</text> <next>2</next> </phrase> <phrase id="2"> <text>bar_friend_propusk_2</text> <action>dan_dialog.bar_dolg_propusk_done</action> вызывается функция bar_dolg_propusk_done <give_info>bar_dolg_propusk_done</give_info> информация о получения 3 инфопоршня задание выполенено <next>3</next> </phrase> <phrase id="3"> <text>bar_friend_propusk_3</text> <give_info>bar_dolg_base_pass</give_info> это срабатывает инфопоршни о пропуске нас на базу долга. <give_info>bar_dolg_community_start</give_info> <give_info>bar_dolg_community_leader</give_info> </phrase> </phrase_list> </dialog> Теперь нам надо создать свой скриптовой файл и вписать 2 функции. Одна нужна для проверки наличия в инвентаре панциря и соответственно включения инфопоршня bar_dolg_propusk_have. Вторая для передачи Пличко арта. Например dan_dialog и вписать наши функции.
function kill_stalker_padla_escape(task, objective) эта функция проверяет наличие арта if db.actor ~= nil then return db.actor:object("af_armor_3") ~= nil end return false end
function bar_dolg_propusk_done(first_speaker, second_speaker) эта функция отдачи арта Пличко dialogs.relocate_item_section(second_speaker, "af_armor_3", "out") second_speaker:set_relation(game_object.friend, first_speaker) эта строчка делает Пличко другом. end
Ну вот вроде все. Если сделали все правильно, то после того, как принесли арт Пличко, вас свободно пропустят на базу долга.