Как прошить сталкер
Эта тема создана не случайно, так как многие начинающие игроки в Сталкер сталкиваются с такой проблемой как установка мода. В связи с большим количеством вопросов связанных с установкой различных модов, аддонов, патчей, адаптаций и фиксов разберем основные способы установки.
Моды следует сразу разделить на две категории.
1. Моды устанавливаемые через инсталятор.
2. Моды выполненные в виде папки "gamedata" как правило помещенные в архив.
В установке модов заключенных в инсталлятор одним из важных моментов состоит правильность установки пути инсталляции. Другими словами тот путь который предлагает выбрать инсталлятор не всегда совпадает с местом установки вашей игры на жестком диске.
ВАЖНО. Перед тем как устанавливать какой либо мод необходимо убедиться в отсутствии уже имеющейся папки gamedata в корневой папке с игрой. Это бывает в том случае если у вас уже устанавливались ранее моды. Всё это из-за того что некоторые моды друг с другом несовместимы.
Первый вариант установки мода:
Другими словами Вам необходимо:
1. Запустить инсталятор.
2. Указать путь к установленной игре Сталкер (нас интересует корневая папка игры).
В итоге в папке с игрой должна появиться папка gamedata.
Следующий шаг самый приятный, а именно запустить ярлык на рабочем столе и играть.
Второй вариант установки мода:
Второй вариант установки в принципе похож, только делать придется все в ручную.
1. Разархивируем скачанный архив как правило это RAR, Zip, 7zip.
2. Полученную папку gamedata копируем в папку с игрой.
Далее запускаем и играем!
Установка Фиксов:
Фиксы к модам ставятся аналогично второму варианту установки модов. Фиксы также выполнены в виде архива с папкой gamedata. Единственный нюанс это при копировании папки gamedata с фиксом в папку с игрой система укажет что такая папка уже существует останется согласится на копирование с заменой.
Установка адаптаций:
Шаг 1. Устанавливается игра, если она ещё не установлена.
Шаг 2. Устанавливаем мод
Шаг 3. Устанавливаем фикс патч к нему Если необходимо.
Шаг 4. Устанавливаем мод который необходимо адаптировать с первым.
Шаг 5. Устанавливаем адаптацию (она как и фиксы выполняется в виде папки gamedata и устанавливается аналогично)
Шаг 6. Наслаждатся игрой.
Как прошить сталкер
Структуру папок и местонахождение основных файлов игры Сталкер смотрим здесь Структура файлов и папок
Короче, нашел у себя в загашнике решение (вроде как от самого Архары) и испытал, создав ситуацию с неотключившимся выбросом (не уходил с локации пока таймер не обнулился), вот описание (подправил немного):
затем, вызов функции в таком виде: <action>arhara_dialog.dell_duratskiy_timer</action>
вставить в любой ближайший диалог.
под строку: function actor_binder:update(delta)
добавить вызов: arhara_dialog.dell_duratskiy_timer()
Сохранить изменения, грузить сейв перед заходом на ЧАЭС-1 и потом переходить, или загружаться с автосейва перехода, тоже сработает.
После, как перешли на ЧАЭС-1 и выброс отключился - сохраняемся, выходим из игры и удаляем строку arhara_dialog.dell_duratskiy_timer() из файла bind_stalker.script
Ключи для быстрого запуска игры , также немного разгружает память .
На рабочем столе , правой кнопкой мышки кликаем на ярлык.S.T.A..L.K.E.R
Далее , выбираем Свойства
Далее , в Объект , после кавычек , делаем пробел и прописываем
. XR_3DA.exe" -nointro -noprefetch -noshadows
Подходит к любому Сталкеру , Н.И. не нужна , удачи .
Ряд дополнительных команд, которые можно запускать при старте STALKER'а называются Переключателями Командной Строки. Эти 'переключатели' - это команды посланные главному исполняемому файлу XR_3DA.exe, говорящие движку выполнить определённые действия при запуске игры. Для использования переключателей командной строки, кликните правой кнопкой мыши на ярлыке STALKER'a и выберите 'Свойства'. Далее в поле 'Объект', через пробел от последнего символа, вставьте переключатель(и) которые вы хотите использовать. Например:
Переключатели -nointro, -noprefetch и -noshadows добавлены для отключения вводных заставок с логотипами, предварительной загрузки информации (ускоряет запуск и загрузку сохранений) и отключения всех не солнечных теней в игре. По другому не возможно использовать предигровые настройки. Можно вернуть настройки в любой момент просто удалив переключатель с ненужной настройкой из ярлыка или создав другой с требуемыми переключателями и использовать его когда ты захочешь запустить игру с другими настройками. дополнение от --HikeR 14:17, 31 мая 2007 (MSD)][
Для различных ситуаций можно создать несколько копий ярлыков для запуска игры с различными параметрами. Например можно использовать ключ -nointro для всех вариантов, комбинацию -noprefetch -noshadows -nosound -r4xx для всяких экспериментов (отключен звук, префетч, тени, форсированно используется DX8, максимально быстрая загрузка), и просто ярлык для обычной игры
Полный список Переключателей Командной Строки для STALKER'а приведённый ниже сопровождается также кратким пояснение для каждого, где это было возможно. Я протестировал каждый и все переключатели, но некоторые переключатели не имеют видимого эффекта или просто подвешивают игру во время загрузки. Инструкции по предполагаемому использованию наиболее полезных переключателей приведены на протяжении этого гида:
Общие правки игровых файлов Сталкер
Меняем блок под той шапкой, на каком уровне сложности играем. Например, уровень сложности у нас "Сталкер". Редактируем следующий блок:
Редактируем следующим образом: после знака равно каждого параметра ставим 0.0 - и наш ГГ бессмертен. ВНИМАНИЕ: СПОЙЛЕР!
Мне кажется многие задавались вопросом "Как же создать худ маски"? Немного пораздумав, я создал функцию, которая крепит текстуру к определенному костюму.
Первым делом в директории gamedata\scripts создайте файл с названием xr_mask.script
Открываем его пишем:
function hud_gas()
local slot_stalker = db.actor:item_in_slot(6)
local object_1 = db.actor:object("stalker_outfit")
local slot_killer = db.actor:item_in_slot(6)
local object_2 = db.actor:object("killer_outfit")
if slot_stalker and slot_stalker:section() == "stalker_outfit" and object_1
= nil or
slot_killer and slot_killer:section() == "killer_outfit" and object_2
= nil then
local hud = get_hud()
local custom_static = hud:GetCustomStatic("hud_gas")
if custom_static == nil then
hud:AddCustomStatic("hud_gas", true)
end
else
local hud = get_hud()
local custom_static = hud:GetCustomStatic("hud_gas")
if custom_static
= nil then
hud:RemoveCustomStatic("hud_gas", false)
end
end
end
function hud_gas() -- функция
local slot_stalker = db.actor:item_in_slot(6) -- переменная костюма
local object_1 = db.actor:object("stalker_outfit") -- переменная объекта
local slot_killer = db.actor:item_in_slot(6) -- переменная костюма
local object_2 = db.actor:object("killer_outfit") -- переменная объекта
if slot_stalker and slot_stalker:section() == "stalker_outfit" and object_1
= nil or
slot_killer and slot_killer:section() == "killer_outfit" and object_2
= nil then -- проверяем надет ли костюм сталкера\наемника
local hud = get_hud() -- худ
local custom_static = hud:GetCustomStatic("hud_gas")
if custom_static == nil then -- если худа нет, выдаем, если одет костюм
hud:AddCustomStatic("hud_gas", true)
end
else
local hud = get_hud()
local custom_static = hud:GetCustomStatic("hud_gas")
if custom_static
= nil then -- если худ есть, убираем при смене костюма
hud:RemoveCustomStatic("hud_gas", false)
end
end
end
Теперь зайдем в bind_stalker.script, который находится в gamedata\scripts, найдем функцию: function actor_binder:update(delta) и после пишем: xr_mask.hud_gas() в итоге:
function actor_binder:update(delta)
xr_mask.hud_gas()
object_binder.update(self, delta)
local time = time_global()
game_stats.update (delta, self.object)
Итак, заходим в директорию gamedata\config\ui, находим файл с названием ui_custom_msgs, открываем его и в самом конце перед строкой: </header> пишем:
<hud_gas x="0" y="0" width="1024" height="768" stretch="1">
<texture>hud\hud_gas</texture> -- текстура маски. Посмотрите внимательно в скрипте мы указывали '''hud_gas'''
</hud_gas>
Теперь заходим в gamedata\textures\ui, находим файл с названием ui_mainmenu.dds. Копируем его, заходим в gamedata\textures\hud вставляем его и переминуем в hud_gas.dds Открываем программой Adobe Photoshop и рисуем подходящую для вас маску.
ВНИМАНИЕ: СПОЙЛЕР!Конфиги, отвечающие за эту особенность, в файле gamedata\configs\misc\effectors.ltx:
[zoom_inertion_effector]
camera_move_epsilon = 0.03 ;разница между двумя векторами направления камера, когда считается что камера двинулась
disp_min = 0.01
speed_min = 0.00001
zoom_aim_disp_k = 1.0 ;коэффициенты соотношения полной дисперсии стрельбы
zoom_aim_speed_k = 0.0025 ;и покачивания прицела
delta_time = 3000 ;время через которое эффектор меняет направление движения (в милисекундах)
у меня лично стоит так:
[zoom_inertion_effector]
camera_move_epsilon = 0.03 ;разница между двумя векторами направления камера, когда считается что камера двинулась
disp_min = 0.02
speed_min = 0.0001
zoom_aim_disp_k = 1.18 ;коэффициенты соотношения полной дисперсии стрельбы
zoom_aim_speed_k = 0.0015 ;и покачивания прицела
delta_time = 1350 ;время через которое эффектор меняет направление движения (в милисекундах)
все настройки, связанные с ассортиментом торговцев в игре, находятся в файлах gamedata\configs\misc\trade_***.ltx
для всех остальных сталкеров - gamedata\configs\misc\trade_generic.ltx
Структура файла
Секция [trader_generic_buy]
Эта секция описывает какие товары торговец будет покупать.
Название предмета = минимальная цена покупки, максимальная цена покупки
Например:
wpn_vintorez = 0.5, 0.7Это значит что торговец купит оружие от 50% полной его стоимости до 70%, т.е. если Винторез стоит 1000, то торговец купит его в диапазоне от 500 до
700 рублей. Диапазон зависит от отношения торговца к Меченому - чем лучше, тем дороже купит
Секция [supplies_start]
Эта секция описывает какие товары у торговца будут вначале.
Название предмета = количество, вероятность появления
Например:
bandage = 5, 1Это значит что у торговеца всегда будут 5 бинтов, с 100 процентной вероятностью появления в магазине.
bandage = 5, 0.6 А тут уже вероятность появления 60%. Т.е. бинты не всегда будут.
Секция [supplies_after_***]
Тоже самое, что в секции [supplies_start], но после выполнения квестов торговца.
Секция [trader_start_sell]
Эта секция описывает за какую цену торговец будет продавать.
Название предмета = минимальная цена продажи, максимальная цена продажиНапример:
wpn_vintorez = 1, 2Это значит что торговец продаст оружие от 100% полной его стоимости до 200%, т.е. если Винторез стоит 1000, то торговец продаст его в диапазоне от
1000 до 2000 рублей. Диапазон зависит от отношения торговца к Меченому - чем лучше, тем дешевле продаст
Секция [trader_after_***_sell]
Тоже самое, что в секции [trader_start_sell], но после выполнения квестов торговца.
деньги торговцев правятся в character_desc_название локации.xml, например, в character_desc_escape.xml такая строка:
<money min="100000" max="100000" infinitive="1"/> (если infinitive="1" - бесконечные деньги)
Часть 1
Сложность: Легко
Как сделать простой диалог.
1. Открываем, например файл dialogs_escape.xml (gamedata/config/gameplay) и пишем в конец:
Это скелет диалога. В нём будут написаны все инфопоршни и actions.
<dialog - это название диалога, которое нужно будет написать НПС.
<phrase - номер фразы.
<text>test_dialog_0</text> - это текст фразы.
<next>?</next> - переход к фразе.
2. Теперь нужно написать тексты диалога. Заходим в файл "stable_dialogs_bar.xml" (gamedata/config/text/rus) и пишем в конце:
<string - это то, на что ссылается скелет диалога.
<text>Это тэстовый диалог</text> - собственно текст.
. ВНИМАНИЕ.
Все диалоги начинаются со слов Меченого.
3. Теперь нужно прописать этот диалог НПС. Например Бармену.
Открываем файл "character_desc_bar.xml" и находим секцию Бармена. Она идёт самой первой.
После всех
<actor_dialog>. </actor_dialog>
Прописываем свой:
<actor_dialog>test_dialog</actor_dialog>
Часть 2
Сложность:Средне
1. Открываем, например файл dialogs_escape.xml (gamedata/config/gameplay) и пишем в конец:
<next>2</next>
и
<next>3</next> это возможные ответы Меченого.
2. Теперь нужно написать тексты диалога. Заходим в файл "stable_dialogs_bar.xml" (gamedata/config/text/rus) и пишем в конце:
3.Чтобы этот диалог не появлялся, пишем инфопоршень. Например в файле info_l01escape.xml
4.Дописываем инфопоршень в скелет диалога:
<dont_has_info>test_pogovoril</dont_has_info> - если ГГ получил инфопоршень, диалог не показывать.
<give_info>test_pogovoril</give_info> - дать ГГ инфопоршень.
Получается, что когда ГГ скажет любую из 2 фраз, диалог больше не появится.
Часть 3
Сложность:Сложно
-Как сделать разные action в диалогах.
1.Создаём обычный диалог:
C такими текстами:
2.Создаём свой скрипт в папке gamedata/script например test.script и пишем в него 3 функции:
Код
function dat_dengi(first_speaker, second_speaker)
dialogs.relocate_money(second_speaker, 3000, "in")
end
Это функция отдачи денег ГГ. На месте 3000 любое число.
На месте dat_dengi любое название.
------------------------------------------------------------
Код
function dat_item(first_speaker, second_speaker)
dialogs.relocate_item_section(second_speaker, "wpn_pm", "in")
end
Это функция отдачи предмета ГГ. На месте wpn_pm любой предмет.
На месте dat_item любое название.
------------------------------------------------------------
Код
function spawn_item_or_monster_or_stalker()
alife():create("wpn_pm",vector():set(pos),lvid,gvid)
end
Это функция спавна чего либо. На месте wpn_pm любой предмет,монстр или сталкер.
На месте (pos),lvid,gvid) любые координаты.
На месте spawn_item_or_monster_or_stalker любое название.
------------------------------------------------------------
Так же функция может быть одна, но с несколькими действиями.
Например:
Код
function all(first_speaker, second_speaker)
dialogs.relocate_money(second_speaker, 3000, "in")
dialogs.relocate_item_section(second_speaker, "wpn_pm", "in")
alife():create("wpn_pm",vector():set(pos),lvid,gvid)
end
Значит что одновременно ГГ дадут 3000 рублей, ПМ и по заданным координатам заспавнится ПМ.
------------------------------------------------------------
3.Впишем функции в диалог:
Это значит что после после фразы
<text>test_dialog_2</text>
ГГ дадут 3000руб.
Это значит что после после фразы
<text>test_dialog_3</text>
ГГ дадут ПМ.
Это значит что после после фразы
<text>test_dialog_3</text>
Заспавнится ПМ.
Часть 4
Сложность: Очень сложно
-Как сделать разные precondition в диалогах.
Прекондишоны - это проверки на появление диалога
1.Создаём обычный диалог:
C такими текстами:
Код
<string
<text>Тест прекондишонов.</text>
</string>
<string
<text>Какой?</text>
</string>
<string
<text>Эта фраза появляется если у ГГ есть . рублей.</text>
</string>
<string
<text>Эта фраза появляется если у ГГ есть . предмет.</text>
</string>
2.Создаём свой скрипт в папке gamedata/script например test.script и пишем в него 3
Код
function has_money_. ()
local money = math.floor(200 *
xr_statistic_freeplay.get_freeplay_statistic():get_found_pda_discount())
return db.actor:money()>=money
end
Это функция проверки количества денег ГГ. На месте 200 любое число.
На месте has_money_. любое название.
------------------------------------------------------------
Код
function has_item(task, objective)
if db.actor
= nil then
return db.actor:object("wpn_pm")
= nil
end
return false
end
Это функция проверки наличия какого либо предмета у ГГ. На месте wpn_pm любой предмет.
На месте has_item любое название.
------------------------------------------------------------
3.Впишем функции в диалог:
Это значит что фраза <text>test_dialog_2</text> появится если у ГГ есть 200рублей
Это значит что фраза <text>test_dialog_3</text> появится если у ГГ есть ПМ.
[af_medusa]:af_base ---Название артефакта
GroupControlSection = spawn_group ---хз
$spawn = "artifacts\moscito medusa" ---спаун
$prefetch = 64 -=-
cform = skeleton =-=Эти три строки не трогать.
class = ARTEFACT -=-
visual = physics\anomaly\artefact_blackdrip.ogf ----визуал артефакта
description = enc_zone_artifact_af-medusa ---описание
inv_name = af-medusa ---имя
inv_name_short = ---имя но короткое,в игре для артов не испоьлзуется
inv_weight = 0.5 ---вес
inv_grid_x = 9 -=-Координаты по оси Х
inv_grid_y = 4 -=-Координаты по оси У
jump_height = .5 ---высота прыжка
;подсветка арта
lights_enabled = true
trail_light_color = 2.5, 2.4, 0
trail_light_range = 1.0
;скорости увеличения (уменьшения) --- думаю обьяснять не нужно
health_restore_speed = 0.0
radiation_restore_speed = 0.0007
satiety_restore_speed = 0.0
power_restore_speed = 0.0
bleeding_restore_speed = 0.0
hit_absorbation_sect = af_medusa_absorbation
[af_medusa_absorbation] - а вот здесь загвоздочка.Допустим вы поставили burn_immunity = 2.0. а в игре заметили что она уменьшает на 100 защиту от ожогов.Ставить нужно наоборот,то есть.хочешь чтобы медуза давала 30 пулестойкости из 100-30=70.Ставишь на fire_wound_immunity = 0.70
burn_immunity = 1.0
strike_immunity = 0.97
shock_immunity = 1.0
wound_immunity = 1.0
radiation_immunity = 1.0
telepatic_immunity = 1.0
chemical_burn_immunity = 1.0
explosion_immunity = 1.0
fire_wound_immunity = 1.0
Рассмотрим костюм долга
;---------------------------------------------------------------------------------------------
; ОБЫЧНЫЙ КОСТЮМ ДОЛГА
;---------------------------------------------------------------------------------------------
[dolg_outfit]:outfit_base ---Название костюма в документах(в скриптах и ltx файлах)
GroupControlSection = spawn_group ---Этого я не знаю,и лучше не трогать,обычно вылет
discovery_dependency = ---Тоже какая то функция
$spawn = "outfit\dolg_outfit" ---Спаун,то есть,костюм лежащий на земле
;$prefetch = 32 ---ХЗ
class = E_STLK ---класс
cform = skeleton ---НЕ ТРОГАТЬ!
visual = equipments\dolg_suit ---Визуал костюма лежащий на земле
actor_visual = actors\hero\stalker_dolg.ogf ---Визуал НПС,В нашем случае ГГ
ef_equipment_type = 3 ---Опять же ХЗ
inv_name = dolg_outfit_name ---Название костюма
inv_name_short = dolg_outfit_name ---Название костюма(короткое)
description = dolg_outfit_description ---Описание(можно и не прописывать их в string_table,можно писать через кавычки.Ставьте "" и пишите описание костюма.Например: "Костюм долга,хорошая защита." Без кавычек пробелы не буду засчитыватся)
inv_weight = 7.0 ---ВЕС
inv_grid_width = 2 -=Эти четыре строки отвечают за иконку в инвентаре,не одетого костюма
inv_grid_height = 3 -=
inv_grid_x = 12 -=
inv_grid_y = 16 -=
full_icon_name = npc_icon_dolg_outfit ---Название иконки
cost = 15000 ---Цена
slot = 6 ---Слот для костюма.НЕ ТРОГАТЬ!
full_scale_icon = 8,11 ---иконка сталкера в костюме в полный рост
nightvision_sect = effector_nightvision_good ---Прибор ночного видения
immunities_sect = sect_dolg_outfit_immunities ---Название иммунитета,для нового костюма введите свой вместо dolg_outfit
ЭТО ЗАЩИТА КОТОРУЮ ДАЕТ КОСТЮМ
burn_protection = 0.1 = Ожог
strike_protection = 0.1 = Удар
shock_protection = 0.1 = Электрошок
wound_protection = 0.1 = Разрыв
radiation_protection = 0.1 = Радиация
telepatic_protection = 0.1 = Телепатия
chemical_burn_protection = 0.1 = Хим.ожог
explosion_protection = 0.1 = Взрыв
fire_wound_protection = 0.1 = Пулестойкость
additional_inventory_weight = 13 ---Дополнительный переносимый вес
additional_inventory_weight2 = 13 ---Дополнительный переносимый вес второй,но ставьте как на первом
bones_koeff_protection = kombez_antigas_damage ---ХЗ,но если делать костюм со средней защитой ставьте такой.Научу ниже
[sect_dolg_outfit_immunities]
burn_immunity = 0.03 ---коэффициенты иммунитета самого костюма(чем меньше значение,тем медленнее костюм портиться.Если на все поставить 0.0 костюм не будет портиться никогда)
strike_immunity = 0.01
shock_immunity = 0.03
wound_immunity = 0.015
radiation_immunity = 0.00
telepatic_immunity = 0.00
chemical_burn_immunity = 0.03
explosion_immunity = 0.03
fire_wound_immunity = 0.01
Обещал рассказать что такое Бонес коэфф протекшн
bones_koeff_protection = kombez_antigas_damage
Оно отвечает за то,как сильно будет защищать костюм.Если например поставить вместо: kombez_antigas_damage ,вот это: kurtka_mask_damage,то сколько бы ты не ставил защиту,она будет слабой.А если поставить exo_helmet_damage то будет высокая защита.Поставите очень много защиты,вы будете бессмертны,и костюм будет защищать вас очень хорошо(то есть,бывает например,оденешь экзоскелет,и иногда пули попадают и наносят совсем крохотный урон.Вот,если поставить экзо хелмет то такие маленьки уроны будут чаще,а если поставить куртка маск то такие случаи будут редкими.)
Все,можете приступать к созданию ваших костюмов,при это зная,в каком документе лежат новые костюмы.
Как установить OGSR MOD
После релиза OGSR MOD, многие игроки столкнулись с проблемой по установке модификации. В представленной инструкции будет описан, весь процесс установки и первичных настроек Сталкер OGSR MOD. В отличие от предыдущей версии, движок игры получил кардинальные изменения, что наложило свои особенности установки и системных требованиях для ПК.
Перед установкой OGSR MOD убедитесь:
- Ваша операционная система Windows, имеет x64-битную разрядность.
- Мод OGSR работает только на Win 7 x64-bit и выше. (Win XP не поддерживается)
- Оригинальная версия игры Сталкер, не требуется. Она уже включена.
Как установить мод OGSR MOD
1. После того как вы скачали папку с игрой, в ней будет находиться 11 архивов, которые необходимо распаковать.
2. Переходим в папку со скачанным модом и кликаем правой кнопкой мыши по архиву с названием OGSRmod.7z.001. В выпадающем меню наводим мышку на пункт 7-Zip, далее выбираем пункт распаковать в OGSR MOD
3. Ждем когда все архивы распакуются.
4. В нашей папке появиться папка OGSRmod и pdf файл "Запуск мода", советуем с ним ознакомиться.
5. Заходим в папку OGSRmod и запускаем игру с помощью файла OGSE_Configurator.exe
6. Далее откроется окно конфигуратора, где вы сможете сделать необходимые настройки или отключить ненужные опции. Когда все настройки сделаны нажимаем, на кнопку "Запустить (x64)"
Читайте также: