Chernobyl-Soul - лучший сайт, посвященный Чернобыльской Зоне отчуждения.
Здесь ты найдёшь интересную ФРПГ, захватывающую браузерную игру, форумные группировки, файлы, арты по игре S.T.A.L.K.E.R., собеседника по душе и ещё много всего.
Наслаждайся!
Правила форума
Самое главное - уважай других пользователей! Остальные правила доступны здесь, обязательно ознакомься с ними.
Голосованием решили, что энциклопедия модостроя заслужила право на своё существование. Сейчас мы будем собирать информацию в этой теме, для заполнения энциклопедии в будущем.
Если хочете поделиться своими знаниями в модострое пишите в этой теме, за каждую статью вы получаете награду ввиде +20 репутации. Самому активному достанеться награда за работу на благо сайта!
Статьи пишем чётко, и ясно. Объясните внятно, так что бы было понятно всем. Заполняем статью по такой форме: 1. Категория (конфиги, скрипты, текстуры, модели, и тп...) 2. Название статьи к примеру (Редактирование погоды) 3. Статья
Запрещено!!! Использовать чужие статьи, и с других сайтов! По всем вопросам пишите мне в лс!
Сообщение отредактировал Пeс - Сб, 29.10.11, 23:51:26
1. Конфиги; текстуры 2. Добавление новой еды в S.T.A.L.K.E.R. Зов Припяти 3.
Для начала открываем блокнотом файл "items.ltx", который находится по пути: .../S.T.A.L.K.E.R. Зов Припяти/gamedata/configs/misc. Находим в файле раздел FOOD и для создания, например пива, копируем исходные характеристики водки, как предмета:
Всё копируем на следующий абзац, сразу под "use_sound". Теперь ниже будет представлен вариант характеристик, в котором в "кавычках" будут пояснения того или иного бустера. Так вот:
Quote
[pivo]:booster "- бустер исполняемого файла (в квадратных скобках на англ. раскладке пишем имя предмета)" $spawn = "food and drugs\pivo" "- адрес раздела спавна предмета" cform = skeleton "- данное имя стандартно для всех, изменять его нельзя!" visual = dynamics\devices\dev_pivo\dev_pivo.ogf "- адрес к визуальной модели предмета" description = st_pivo_descr "- id описания предмета (разберемся ниже)"
inv_name = st_pivo "- id имени в инвентаре (разберемся ниже)" inv_name_short = st_pivo "- краткое имя" inv_weight = 0.6 "- вес предмета"
inv_grid_width = 1 "- кол-во клеток в рюкзаке по горизонтали" inv_grid_height = 2 "- кол-во клеток в рюкзаке по вертикале" inv_grid_x = 18 "- местонахождение иконки предмета по горизонтали (в файле ui_icon_equipment)" inv_grid_y = 23 "- местонахождение иконки предмета по вертикале (в файле ui_icon_equipment)" cost = 30 "- стоимость предмета"
attach_angle_offset = 0.000000, 0.000000, 0.000000 "- данную строку можно оставить без изменений" attach_position_offset = 0.087266, -0.078540, 0.052360 "- данную строку можно оставить без изменений" attach_bone_name = bip01_r_hand "- данную строку не изменять" auto_attach = false "- автоматическое использование (true - да, false - нет)"
bone_name = bip01_r_hand "- данную строку не изменять" position_offset = 0.0,0.0,0.0 "- данную строку можно оставить без изменений" angle_offset = 1.570790,1.570790,3.92699 "- данную строку можно оставить без изменений"
break_particles = destroy_fx\destroy_bottle "- данную строку можно оставить без изменений" break_sound = material\bottle\collide\bottle_break_1 "- звук предмета, при выбрасывании его из рюкзака"
boost_time = 5.0 "- время использования" boost_radiation_restore = 0.005 "- радио-защита" eat_alcohol = 0.1 "- на сколько сильно "вставляет" ГГ после использования" eat_satiety = -0.2 "- насыщение"
use_sound = interface\inv_vodka "- звук при использовании предмета"
Внимание: при копировании у вас должны быть все подходящие файлы в папке gamedata, а именно - визуальная модель в папке meshes, текстура внешнего вида в папке textures/items, текстура иконки в ui_icon_equipment, звук при использовании предмета в папке sounds/interface! Также, не забудьте убрать пояснения, приведенные в кавычках! З.Ы. - Определить местонахождение вставленной иконки вы можете через Альфа-Канал, который можно активировать через Фотошоп.
Далее нам надо отредактировать файл st_items_equipment, который находится по пути: .../S.T.A.L.K.E.R. Зов Припяти/gamedata/configs/text/rus. Можно копировать, например строки, где говориться про хлеб:
Quote
<string id="st_bread"> <text>Хлеб</text> </string> <string id="st_bread_descr"> <text>Неизвестно, кто умудряется печь батоны на территории Зоны, или каким образом их протаскивают через периметр. Однако этот хлеб не заражен, не радиоактивен, достаточно свеж и вполне съедобен. Во всяком случае, никто из сталкеров пока не жаловался.</text>
Копируете под него и меняете на:
Quote
<string id="st_pivo"> <text>Пиво</text> </string> <string id="st_pivo_descr"> <text>Очень вкусное пиво. В самый раз опохмелиться! :)</text>
Процесс почти завершен, теперь нам надо сделать так, чтобы это Пиво продавалось у Гавайца и Бороды. Для этого заходим в папку trade, в пути: .../S.T.A.L.K.E.R. Зов Припяти/gamedata/configs/misc. Итак, в папке trade нам надо найти два файла: trade_jup_b202_stalker_barmen.ltx и trade_zat_a2_barmen.ltx. В каждой из них находим строки, где написано "Еда". Всего, в каждой из них, по 3 таких раздела. Копируем, например:
Quote
energy_drink = 1, 1.8
Вставляем под эту строку и заменяем energy_drink на pivo. Все похожие операции провести во всех раздела в указанных двух файлах. И вауля - предмет добавлен в игру!
Если есть вопросы - не стесняйтесь, спрашивайте меня в ЛС!
Сообщение отредактировал [Dа_Кurlzz] - Вс, 30.10.11, 19:40:28
Возьмём текстуру добавим ей альфа канал,прозрачность 100% Выделим альфа канал и ластиком стираем красный цвет Переходим на RGB и нажимаем на вкладку "Фильтр" и там выбираем "Nvidia Tools", и там-же "Normal Map Filter". Устанавливаем все параметры, как на картинке и жмём "Ок". Выбираем вкладку "Каналы" и видим четыре канала: Красный, Зелёный, Синий и Альфа. Нам надо проделать следующие: Выделяем весь зелёный канал(Ctrl+a), копируем(Ctrl+c) на Альфу(Ctrl+v), выделяем синий(Ctrl+c), и его на зелёный(Ctrl+v), красный(Ctrl+c) на синий(Ctrl+v), зелёный(Ctrl+c) на красный(Ctrl+v). Оставаясь на красном канале применчем Архивная кисть и стираем Далее не уходя с красного канала жмём Ctrl+L открывается окно "Уровни". Красный канал отвечает за блеск текстуры,в данном случае мы понижаем блеск. Применяем как на картинке: Получаем такую картинку: Теперь о сохранении: 1. Можно сохранить в формате DDC -в том случае если у вас есть прописанный .thm файл 2. В формат TGA и отправить его по адресу:C:\Program Files\X-Ray CoP SDK\editors\import для дальнейшей обработке. Название файла:пример act_corp_military_bump act - имя папки corp_military -имя файла _bump -принадлежность к.. by GENIOR
1.Текстуры 2.Создание альфа канала с помощью утилиты TGATool
Создание альфа канала с помощью утилиты TGATool
Берём текстуру в формате jpg.jpeg Открываем с помощью TGATool Далее:Tools>Alpha Chennel>Pixel Brightness Видим такую картинку: Ставим параметры как на картинке и нажимаем крестик на иконке: Полученную картинку сохранаем в TGA: Запускаем Фотошоп и видем готовый альфа канал: by GENIOR
Сообщение отредактировал genior - Вс, 30.10.11, 18:55:16
1.Текстуры 2.Нанесение камуфляжа на текстуру [Для новичков]
1. Камуфляж будем накладовать на act_stalker_neutral_1 За основу камуфляжа берём найденый в интернете бесшовный камуфляж:
2. Накладываем камуфляж на текстуру.
3. Ставим прозрачность камуфляжа 40%, что бы она гармонично сошлась с текстурой.
4. Выделяем всё что не нужно покрывать камуфляжем, и удаляем на слое камуфляжа. Выходит так:
5. Выделяем область на которую хотим накласть камуфляж, на текстуре. Нажимаем Ctrl+U и настраиваем баланс цветов под камуфляж, в нашем случае на зелёный. Нажимаем Оk. Выделение не убираем.
6. Объеденяем оба слоя, не снимая выделения. Заходим в Изображения>Коррекция>Выборочная коррекция цвета... Выбираем чёрный цвет, и настраиваем чёрный так что бы было видно все складки на покрытом камуфляжем участке. Выходит такая текстура покрытая камуфляжем:
В результате у нас получился такой сталкер:
Автор: Пес
Сообщение отредактировал Пeс - Вс, 30.10.11, 22:57:09
1.Спавн 2.Как заставить НПС смотреть в заданую точку
Что бы нпс стоял на месте можно использовать логику walker и чтобы он смотрел в заданую точку. Снимаем координаты где он стоит, пишим их в all.spawn и сдесь. И снимаеи координаты куда он смотрит, в какую точку
Code
[logic] active = walker
[walker] path_walk = название точки где стоит нпс path_look = название точки куда смотрит нпс
Это пишим в way_***.ltx в распакованом all.spawn Координата, где стоит нпс, должна быть такой же, что и писали в самом alife_**.ltx!
Идентификатор профиля конструируется как <префикс_уровня>_<идентификатор_сцены>_<группировка_персонажа>_<описательное_название>, например, zat_b7_stalker_raider_leader. Во избежание путаницы, класс персонажа указывается такой же, как идентификатор профиля. Класс персонажа используется для связи профиля и описания персонажа.
Создание описания персонажа: С одним профилем персонажа может быть ассоциировано несколько описаний персонажей. Это позволяет, добавив в игру несколько персонажей с одним и тем же профилем, получить в результате персонажей с различным набором вещей, разным внешним видом (visual), и т.д. Для того чтобы создать описание персонажа, необходимо в файл «gamedata\configs\gameplay\character_desc_<имя_уровня>.xml» добавить следующую конструкцию:
<идентификатор_описания> Во избежание путаницы идентификатор описания: a) аналогичен идентификаторам класса и профиля в случае, если с профилем ассоциируется только одно описание; b) конструируется как <идентификатор_профиля>__default_<номер> (начиная с нуля), если с профилем ассоциируется несколько описаний.
<идентификатор_строки_имени>Идентификатор строки имени конструируется, как <идентификатор_описания>_name. Строка имени персонажа добавляется в файл «gamedata\configs\text\<локализация>\st_characters.xml» конструкцией:
Также, имя можно сгенерировать, поставив в описание персонажа вместо идентификатора строки имени конструкцию GENERATE_NAME_<имя_группировки>.
<идентификатор_текстуры_иконки> Идентификатор текстуры иконки берётся из файла «gamedata\configs\ui\textures_descr\ui_npc_unique.xml». Эта иконка видна во время диалога с персонажем.
<идентификатор_строки_биографии> На данный момент в игре не используется, так что это поле можно оставить пустым.
<идентификатор_класса> Идентификатор класса, который связывает описание персонажа с соответствующим профилем персонажа.
<группировка_персонажа>Имя группировки, к которой принадлежит данный персонаж.
<ранг> Число, определяющее относительную «крутизну» персонажа: 0 - 300 – новичок (novice) 301 - 600 – опытный (experienced) 601 - 900 – ветеран (veteran) 901 - 999 – мастер (master) <репутация> На данный момент в игре не используется, так что это поле можно оставить пустым.
<минимум_денег> <максимум_денег> <восполняемость> Количество денег, имеющихся у персонажа, будет выбрано случайным образом от указанного минимума до указанного максимума. Восполняемость может принимать значения 0 или 1. В последнем случае количество денег у персонажа будет восполняться после каждой сделки, но каждая отдельная сделка будет ограничена количеством денег персонажа.
<внешний_вид> Путь к файлу «*.ogf» от папки «gamedata\meshes», содержащему внешний вид (visual) персонажа. Указывается без начальной «обратной косой», без точки и без расширения файла. От внешнего вида зависит бронированность персонажа.
<папка_озвучки> Путь к папке универсальной озвучки персонажа от папки «gamedata\sounds». Имеет вид characters_voice\human_<номер>\<группировка>\. В этой конструкции <номер> может быть 01 либо 02(обычные голоса), или же 03(приглушённый голос из-за дыхательной маски, противогаза либо купола).
<предмет> \n <предмет> \n При помощи конструкций <предмет> задаётся список предметов, которые должны быть у данного персонажа. Конструкции имеют следующий вид: <идентификатор_предмета>< = количество><, навес> При этом, < = количество> и <, навес> необязательны. Параметр навес имеет смысл только для оружия и может принимать следующие значения: scope(оптический прицел) silencer(глушитель) launcher(подствольный гранатомёт) Можно добавить несколько конструкций <, навес>, но все они должны стоять после конструкции < = количество>. Вконце всей вышеописанной конструкции обязательно должны стоять символы \n (перенос строки). Пример: wpn_abakan = 1, scope, launcher
#include "gameplay\character_items.xml" Эта и все остальные строки #include должны стоять в начале строки (без отступов перед ней). Она добавляет в список предметов персонажа бинокль, фонарь, детектор и, с долей вероятности, гитару.
#include "gameplay\character_food.xml" Эта строка добавляет в список предметов персонажа хлеб, колбасу и водку.
#include "gameplay\character_drugs.xml" Эта строка с определённой долей вероятности добавляет всписок предметов персонажа бинты и аптечку.
<идентификатор_стартового_диалога> Идентификатор диалога, являющегося для персонажа стартовым. Если этот параметр (вместе с тэгами <start_dialog> </start_dialog> не будет указан – будет использован стандартный стартовый диалог. <идентификатор_диалога_актёра> Идентификатор диалога актёра. Можно указать несколько диалогов актёра каждый – в тэгах <actor_dialog> </actor_dialog> #include "gameplay\character_dialogs.xml"
Автор: Болотный Доктор --------------------------------------------- 1.Скрипты 2.Новый ранг (ТЧ)
Для начала зайдем в gamedata/config/creatures/game_releations.ltx и там изменим:
Code
;реальное разделение на группы репутаций на шкалы rating = novice, 300, experienced, 600, veteran, 900, master, 1200, legend
И затем строчку с наименованием рангов:
Code
;шкалы для вывода названий вместо чисел ;рейтингов, репутаций и благосклонности в интерфейсе rating_names = novice, 300, experienced, 600, veteran, 900, master, 1200, legend
С конфигами вроде разобрались. Лезем в скрипты. gamedata/scripts/_g.script:
Code
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)...
Этот скрипт отвечает за истории, услышанные от сталкеров (которые остаются в дневнике). Я в скриптах не силен, но можно попробовать объединить информацию у мастера и легенды в 1 строчку, добавив в скрипт оператор or. То бишь должно выглядеть так (не проверено!):
Ну, тут, я думаю, понятно. Остался последний штрих, отображение ранга в текстовом значении. То бишь залезаем в config\text\rus и открываем любой файл, например ui_st_mm.xml и добавляем туда:
Думаю это многим известно, но для начинающих: Заходим в gamedata/configs/weapons/w_>Название оружия< Ищем строку: ammo_class = ammo_>Тип патрон<, ammo_>Тип альт. патрон< - Меняем на нужный патрон. Сохраняем. Играем. Что бы легче всё было понять покажу на АК 74, из которого я делал АК 101: gamedata/configs/weapons/w_ak74 ammo_class = ammo_5.45x39_fmj, ammo_5.45x39_ap Поменял на: ammo_class = ammo_7.62x54_7h1, ammo_5.45x39_ap Не уверен, но кажется начинать новую игру не надо. И кстати, если патроны которые вы прописали очень дорогие, а найти их сложно то можно ещё кое что исправить: Открываем gamedata/configs/weapons/weapons.ltx Ищем нужный тип патронов, к примеру: [ammo_7.62x54_7h1]:ammo_base Далее находим строку box_size = 10 - Она отвечает за количество патрон в одной коробке. Исправляем на необходимое число. Либо правим цену: В том же файле строка: cost = 100 Меняем на нужную цену.
Вот ещё решил картинку добавить, что метод действует:
1. Конфиги (в частности all.spawn). 2. Как сменить место старта ГГ в S.T.A.L.K.E.R. - Зов Припяти. 3.
Первым делом у вас должна быть установлена программа "ACDC" для работы с all.spawn, а также программа ActivePerl. Всё это можно скачать в соседней теме. И ещё потребуется скрипт/мод, который отображает координты ГГ во время игры. Итак, распаковываем all.spawn и в появившихся файлах находим этот файл - alife_zaton.ltx Открываем его и видим, что все секции разделены на номера, по пордяку ([1]; [2]; и т.д.). Нас интересует секция - [982]. Ищем вручную, или зажимаем Ctrl + F и в появившемся окне вбиваем - [982]. Мини-поисковик сразу найдет эту секцию. Далее, закрываем окно, перед нами вот эта 982-я секция:
Quote
[982] ; cse_abstract properties section_name = actor name = zaton_actor position = 256.240051269531,19.8124237060547,550.824279785156 direction = -0.0120869996026158,2.81339907646179,-0.0158249996602535 s_flags = 0x29
Разберем по порядку: position - позиция ГГ, которая заключена в координаты (x,y,z) game_vertex_id - гейм вертекс ГГ level_vertex_id - левел вертекс ГГ upd:position - обновленная позиция (зачем она, не знаю) Вы можете сами снять свои координаты, но возьмем мои. Итак, имеющуюся секцию 982 в alife_zaton.ltx, заменям на следующую:
Quote
[982] ; cse_abstract properties section_name = actor name = zaton_actor position = -323.710419,19.474373,627.381042 direction = 0.340094,0.000000,-0.940391 s_flags = 0x29
Сохраняем, запаковываем обратно (не забываем переименовать файл new.spawn в all.spawn), копируем в папку spawns, которая находится в gamedat`е. Запускаем игру, и видим, что ГГ появляется у ворот на краю Затона, недалеко от лесопилки.
Сообщение отредактировал [Dа_Кurlzz] - Пт, 09.03.12, 10:37:54
Как с помощью СДК сделать новый спавн на родных локациях ЗП.
Итак,подгрузите в СДК (C:\Program Files\X-Ray CoP SDK\editors\gamedata\levels) все локации из ЗП - zaton,pripyat,jupiter_underground,labx8,jupiter.С помощью декомпиляторов разберите нужные локации для редактирования. Теперь с помощью LevelEditor загружаем локу.Первым делом заходим в свойства сцены и в графе - префикс имя ставим нужное в соответствии с именем локации: zaton - zat.И приступаем к спавну.Переходим во вкладку Spawn Element. После завершения спавна открываем вкладку Compile и нажимаем Make Game. Обращаю внимание что кроме спавна не трогайте иное - это лишнее. Избавьте себя от дальнейших вылетов. И так мы проделываем с каждой локацией. Следующим этапом будет компиляция того что мы правили.Открываем батник компиляции спавна и вводим следующею команду: start bin\designer\release\xrai -no_separator_check -s zaton,pripyat,jupiter_underground,labx8,jupiter И ждём завершения, ориентировочно от 5 до 15 мин. Переходим по адресу: C:\Program Files\X-Ray CoP SDK\editors\gamedata\spawns и видем новый файл спавна, переименовываем его в all.spawn. Теперь вы можете добавить обновлённый спавн в игровую папку. И заметьте это не займёт несколько дней а 2\3часа в зависимости от Ваших желаний. Всего наилучшего!
Создание тайника Файлы:spawn_sections.ltx,devices.ltx,любой стандартный диалог.
1.Создаём файл ваше_название_скрипта.script в папке gamedata/scripts и пишем в него:
Код function ваше_название_функции() $$$НАЗВАНИЕ ФУНКЦИИ$$$ alife():create(section,position,levelvertex,gamevertex) $$$ЭТО ТОЧКА ГДЕ СПАВНИТСЯ ПРЕДМЕТ$$$ end
2.В папке config/scripts создаём файл m_taynik.ltx и пишем в него: Код [spawn] $$$ Это то, что появится в тайнике $$$ предмет предмет предмет предмет предмет
3. Открываем файл spawn_sections.ltx из папки gamedata/config/creatures и пишем:
Помните вертолет,что пролетает над вами когда подходите к Толику на кордоне?Сколько в него не стреляй,ему по-барабану,улетает дальше до границы левела.При желании можете проверить свои способности по уворачиванию от ракет на открытом пространстве)))Чтоб вертолет на вас заагрился(начал атаковать),всего-то и нужно в бинде вертолета вернуть эту функцию,раскомпилитив строки:
function heli_binder:on_hit( power, impulse, hit_type, enemy_id ) printf( "heli_binder: hit callback")
local enemy = level.object_by_id( enemy_id ) local enemy_cls_id = get_clsid( enemy )
if enemy_cls_id == clsid.actor or enemy_cls_id == clsid.script_stalker then -- if not self.st.combat.enemy_id then -в о т -- self.st.combat.enemy_id = enemy_id - э т и -строки(то есть удаляем "--" перед строкой) -- end - т и и
if self.st.hit then xr_logic.issue_event( self.object, self.st.hit, "hit_callback", self.object, power, nil, enemy, nil ) end end теперь только и нужно что пальнуть в него и бежать куда глаза глядят,подгоняемым взрывами ракет и свистом пролетающих пуль)))
P.S пропишите в выдаваемую волком стартовую снарягу "базуку" и десяток-другой зарядов к ней чтоб его завалить,а то он очень даже хорошо увoрачивается
Дальше в Зону — ближе к небу… (С) Стругацкие "Пикник на Обочине"
Заходим в папку levels в папку с нужной нам локацией,например кордон - l01_escape. Нас интересует папка terrain, содержащая файл terrain_escape.dds . Открываем указанный файл и видим "уровень сверху". Просто раскрашиваем определенные места на карте в свой цвет,и теперь в игре он будет того цвета,что и в вашей текстуре. Если же определенное место на террейне стереть (то есть чтобы там была прозрачность), то почва остается зеленой, но становится темной. Всё потому, что эта текстура - это цветовая карта и ложится она поверх диффузной карты травы, которая сама по себе имеет уже цвет. И если на текстуре террейна участок прозрачный, то в этом месте в игре будет дефолтный цвет травы.
1.SDK Тень Чернобыля 2.Декомпиляция уровней в формат SDK 3.
Для декомпиляции игровых карт в формат LevelEditor'a используется консольная утилита converter.exe, входящая в пакет X-ray Game asset tools pack или X-ray Engine Tools (converter) Открываем файл converter.ini, в нем находим строки:
Здесь $game_data$ - путь до папки gamedata с распаковаными ресурсами игры, $game_levels$ - до папки levels в gamedata соответственно. Необходимо указать полные пути. В файле fsconverter.ltx находим следующую строку:
Здесь $sdk_root$ - путь до полного SDK (русифицированный не работает нормально с converter.exe, я сам проверял). Изменяем путь на свой. Конвертер полностью настроен, теперь нужно создать .bat-файл для конвертирования в формат SDK. Для этого создаем текстовой файл, пишем внутри команду и меняем формат файла с .txt на .bat:
Здесь <имя_карты> - имя папки с картой в каталоге gamedata\levels\, например l08_yantar (локация Янтарь из ТЧ), <имя_сцены> - имя карты после декомпиляции, можно не писать, в этом случае имя карты после декомпиляции не изменится. То есть команда для декомпиляции в формат SDK, например, уровня l08_yantar будет выглядеть так:
Quote
converter -level l08_yantar -out l08_yantar_decompiled -mode le -with_lods
Если все сделано правильно, то после запуска батника пойдет процесс декомпиляции.
1.Скрипты 2.Зов Припяти. Создание места для сна. 3.
Сначала мы распакуем all.spawn, откроем alife_zaton.ltx и добавим в конце секцию:
Quote
[Ваш номер секции] ; cse_abstract properties section_name = space_restrictor name = произвольное название вашего места position=155.8231048584,-6.5563974380493,-138.71978759766 direction = 0,0,0
{ {target = "zat_a2_sr_sleep_id", hint = "st_ui_pda_sleep_place"}, {target = "jup_a6_sr_sleep_id", hint = "st_ui_pda_sleep_place"}, {target = "pri_a16_sr_sleep_id", hint = "st_ui_pda_sleep_place"}, }
и меняем на:
Quote
local sleep_zones_tbl = { {target = "zat_a2_sr_sleep_id", hint = "st_ui_pda_sleep_place"}, {target = "jup_a6_sr_sleep_id", hint = "st_ui_pda_sleep_place"}, {target = "pri_a16_sr_sleep_id", hint = "st_ui_pda_sleep_place"}, {target = "произвольное название вашего места_id", hint = "st_ui_pda_sleep_place"}, }
Открываем xr_effects.script, ищем строки:
Quote
function sleep(actor, npc) local sleep_zones = { "zat_a2_sr_sleep", "jup_a6_sr_sleep", "pri_a16_sr_sleep", "actor_surge_hide_2" }
и также меняем на:
Quote
function sleep(actor, npc) local sleep_zones = { "произвольное название вашего места", "zat_a2_sr_sleep", "jup_a6_sr_sleep", "pri_a16_sr_sleep", "actor_surge_hide_2" }
Собираем all.spawn. Готово! Теперь после запуска игры с новым all.spawn у нас будет спальное место в барже Ноя.
1.Конфигурационные файлы 2.Изменение иконки (аватара) главного героя. 3.
Для того, чтобы изменить иконку героя, надо открыть файл character_desc_general.xml в папке config\gameplay. В самом начале идёт описание нашего героя, находим строку:
Quote
<icon>ui_npc_u_actor</icon>
и изменяем нашу иконку на, скажем, иконку Сидоровича:
Quote
<icon>ui_npc_u_trader</icon>
1.Конфигурационные файлы 2.Изменение внешнего вида героя в зависимости от надетого костюма 3.
Итак, находим в config\misc файл outfit.ltx в нём описания свойств костюмов. В описании каждого костюма есть строка:
Quote
actor_visual = ...\... . ogf
где троеточия - путь к модели. Например чтобы приписать куртке новичка модель с противогазом надо прописать в разделе куртки:
В этой статье мы научимся создавать новые образцы вооружения. Для начала, мы будем использовать модели из оригинальной игры. Если вы хотите создать оружие, имеющее уникальный внешний вид, ознакомьтесь с уроком по созданию моделей.
Добавим в игру АК101.
Внешний вид
Позаботимся о том, чтобы наше оружие отличалось внешне от того же АК74. Текстуры
Нарисуем для оружия новую текстуру. Подробно останавливаться на этом процессе не буду, ознакомьтесь с примером, приведенным здесь. Итак, основываясь на текстуре АК74, мы сделали вот такую текстуру:
Файлы текстур мы назвали: wpn_ak10.dds wpn_ak10_bump#.dds wpn_ak10_bump.dds Модели
Новых моделей мы пока делать не станем, просто воспользуемся дублированными моделями от АК74. Скопируем папку:
gamedata\meshes\weapons\ak47\
И назовем её ak-101. Содержимое, соответственно, переименуем в: wpn_ak101.ogf wpn_ak101_hud.ogf.
Теперь пропишем в эти модели созданные нами текстуры. Способ описан здесь. Иконки
Добавим в игру иконки, которыми оружие будет отображаться в инвентаре. Способ подробно описан здесь.
Вот, что получилось в конечном итоге:
Конфиги
Новое оружие мы будем делать на базе оригинальных конфигурационных файлов. Создадим АК101 на базе конфигов АК74. Свойства оружия
Скопируем файл из папки:
gamedata\config\ak74.ltx
Назовем его ak101.ltx.
Отредактируем свойства по своему усмотрению (но лучше - в соответствии с достоверной информацией о характеристиках оружия, т.к. АК101 - всё-таки оружие реально существующее). Редактирование конфигов оружия подробно описано в отдельном уроке. В данном случае конфиг был составлен таким образом: ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; [wpn_ak101]:identity_immunities GroupControlSection = spawn_group discovery_dependency = $spawn = "weapons\ak-101" ; name and section in level editor $npc = on $prefetch = 8 scheduled = off ;[] option for ALife Simulator cform = skeleton class = WP_AK74 ; class of the weapon that corresponding to CPP class min_radius = 30 ; [] for AI max_radius = 100 ; [] for AI description = enc_weapons1_wpn-ak101
ef_main_weapon_type = 2 ef_weapon_type = 6
;----------------------------------------------------------------------------------- holder_range_modifier = 1.0 ; во сколько раз увеличивается eye_range holder_fov_modifier = 0.7 ; во сколько раз увеличивается eye_fov ;-----------------------------------------------------------------------------------
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;HUD offset in zoom mode (to all) ;(use CONSOLE: hud_adjust_mode 0,1,2, then keys WSADQE and P to show current value in console)
Итак, с характеристиками разобрались. Теперь зарегистрируем оружие в файле weapons.ltx. Для этого пропишем в него строку следующего вида: #include "w_ak101.ltx"
Также, необходимо прописать модели, используемые для отображения оружия, в prefetch.ltx: [...] weapons\abakan\wpn_abakan weapons\abakan\wpn_abakan_hud weapons\ak-101\wpn_ak101 weapons\ak-101\wpn_ak101_hud weapons\ak74\wpn_ak74 weapons\ak74\wpn_ak74_hud [...]
Так же не забудте в файле mp_ranks.ltx прописать после available_items (которое внизу) прописать название своего оружия. Это предотвратит вылет при убийстве ГГ. Добавление в игру