Гость
  • Страница 1 из 1
  • 1
Форум » Игры // games » S.T.A.L.K.E.R. » Модостроение сталкер » Урок: Создание НПС и добавление его в смарт («S.T.A.L.K.E.R. SOC»)
Урок: Создание НПС и добавление его в смарт
Xemordio Offline Дата: Понедельник, 17.12.2018, 13:06 | Сообщение # 1
Администратор
Звание: Маршал [?]
Сообщений: 3498
«Урок: Создание НПС и добавление его в смарт»
«S.T.A.L.K.E.R. SOC»

Добрый день! С вами Westheimer, и сегодня я вам раскажу, как создать нового уникального нпс и добавить его в смарт для Сталкер Тень Чернобыля. Начинаем.

Часть I - «Создание профиля НПС»

1. Для начала мы создадим профиль нашего персонажа. Для этого заходим в папку «gameplay» и выбераем файл «character_desc_escape.xml», после чего в самом низу перед </xml> пишем:

Код
<!------------------------------------------------------------------------------------------>

<specific_character id="str_stalker_franger" team_default = "1"> <!-- Это ID нашего НПС. P.S. Все мои коментарии должны быть удалены. -->

<name>str_franger_name</name> <!-- Имя НПС нерекомендуется писать сразу на русском. Пишим имя на английском, после чего в файлах rus уже русифицируем. -->

<icon>ui_npc_u_green_stalker_4</icon> <!-- Иконка НПС -->

<bio>esc_stalker_novice_bio</bio> <!--Биография НПС. В оригинале не используется, оставляем.-->

<class>str_stalker_franger</class> <!-- Класс НПС. Должен быть таким же, как и ID. -->

<community>stalker</community> <!--Группировка НПС. Выбираем нужную. -->

<terrain_sect>stalker_terrain</terrain_sect> <!-- Террайн. По каким териториям НПС может ходить. Не меняем. -->

<rank>400</rank> <!-- Ранг нашего НПС. 100-200 - новичок; 300-400 - опытный; 600-800 - ветеран; 900-1000 - мастер. Пишем необходимое число. -->

<reputation>6</reputation> <!-- Репутация НПС. 6 - хорошая; -6 - ужасная. Выбираем нужное число и прописываем. -->

<money min="200" max="3200" infinitive="0"/> <!-- Кол-во денег. Если прописать, например, числа 200 и 3200 - игра выберет случайное число в этих рамках. Хотим прописать ему 10000 рублей, пишем это число в min и max. Если хотите бесконечное кол-во денег, пишем в min и max 150000 (условно, желательно более 100 тысяч), в скобах вместо 0 пишем 1 -->

<snd_config>characters_voice\human_02\newbie\</snd_config> <!-- Путь к озвучке НПС. Можете прописать свой. -->

<crouch_type>-1</crouch_type> <!-- Определяет, как НПС будет прятаться. Оставляем. -->

<visual>actors\novice\green_stalker_4</visual> <!-- Визуал НПС. Можете сменить на другой просто указывайте путь до модели по аналогии. -->

<supplies>

[spawn] \n <!-- Содержимое НПС. -->

wpn_bm16 \n <!-- В руках НПС будет держать обрез. Можете прописать ему другое оружие. -->

ammo_12x70_buck \n

#include "gameplay\character_items.xml" \n <!-- Список предметов, которые у него будут находиться при торговле или после смерти. -->

#include "gameplay\character_drugs.xml" \n <!-- Список предметов, которые у него будут находиться при торговле или после смерти. -->

#include "gameplay\character_food.xml" <!-- Список предметов, которые у него будут находиться при торговле или после смерти. -->

</supplies>

#include "gameplay\character_criticals_3.xml" <!-- Тип ранения НПС. Отвечает за реакцию НПС на ранения. Можно менять на crit_1:2:3:4:5:6. -->

<start_dialog>hello_dialog</start_dialog> <!-- Стартовый диалог НПС (диалог приветствия). -->

#include "gameplay\character_dialogs.xml" <!-- Прочие диалоги (расскажи мне о...).-->

</specific_character>

2. Профиль написан, теперь необходимо прописать класс. Для этого открываем в этой же папке файл «npc_profile.xml» и в самом низу перед </xml> пишем:

<character id="str_stalker_franger"> <!-- ID НПС. Необходим тот, который прописывали в профиле. -->

<class>str_stalker_franger</class> <!-- Класс НПС -->

<specific_character>str_stalker_franger</specific_character> <!-- Специфичный профиль НПС. -->

</character>


3. Теперь необходимо прописать его в файл «spawn_section», если хотите, чтобы он нпс респавнился. Если не хотите - не пишите. Но мы это сделаем .

Заходим в папку «creatures» и открываем файл «spawn_sections.ltx», после чего пишем в самом низу следующее:

[str_stalker_franger]:stalker ; в скобках ID НПС, который вы указали в профиле

$spawn = "respawn\str_stalker_franger" ; то же самое

character_profile = str_stalker_franger; здесь указываем профиль НПС, который будет респавнится

spec_rank = regular ; ранг

community = stalker ;группировка

Поздравляем вас! НПС создан. Теперь необходимо его заспавнить

Часть II - «Спавн нпс»

1. Для спавна НПС вы можете воспользваться разными программами, например «ACDC» или «SDK 0.4». В этом уроке мы воспользуемся SDK.Открываем level editor. Работать будем с Кордоном.

Летим камерой к лагерю новичков. Открываем вкладку spawn_elements, выбираем сталкер, и ставим профиль нашего НПС.

Отлично сделали! Теперь добавим НПС к смарт терайну esc_lager, допишем в custom_data нашего НПС вот эту логику:

[smart_terrains]

esc_lager = true

После укажем номер сквада "1" и номер группы "5". Должно получиться так, как показано на картинке.



Теперь увиличим численость смарт терайна. Находим смарт терайн esc_lager.

Теперь в custom_data допишем еще одного персонажа:

[smart_terrain]

type = esc_lager -- название смарт терайна

capacity = 14 -- численость смарт терайна. Добавим нашего НПС, станет численость 14

squad = 1 -- к этому смарту подходят сквады с номером 1

groups = 5 -- к этому смарту подходят группы с номером 5; номер сквада и группы у нпс и смарта должны быть одинаковы

respawn = esc_respawn_inventory_box_0000 -- респавн инветарного ящика, а именно содержимое ящика и отрядов к этому смарту

Теперь добавим way_points для нашего НПС. Названия поинта должы быть такими "имя_смарта_имя_точки_walk:look"

Добавим наши точки.

Для этого переходим во вкладку "Way Points" и ставим наш поинт, в разделе pont_mode ставим флаги нашему поинту, например "0". Аналогично создаем точку look. Точка look должна быть в 2 метрах от точки walk, в точку look НПС будет смотреть.

Теперь пропишем имена для наших точек. Точку, на которой НПС стоит, называем esc_lager_str_franger_walk. Точку, на которую НПС смотрим, называем так esc_lager_str_franger_look. Итог таков:



Поздравляю, работа со спавном завершена. Собираем наш all.spawn осталось прописать ему логику и работу в скрипте.

Часть III - "Работа со скриптами гулага"

Заходим в папку scripts, открываем файл gulag_escape, находим работу для лагера "esc_lager", после ищем в ней работу Волка, а именно:

-- Волк, собственной персоной.

Код
t = { section = "logic@esc_lager_volk",

idle = 0,

prior = 16, state = {0,1},

in_rest = "", out_rest = "esc_lager_guard_kill_zone",

predicate = function(obj_info)

return obj_info.profile_name == "esc_wolf"

end

}

table.insert(sj, t)


После него пишем новую секцию работы для нашего НПС. Вот так должно получиться:

-- Волк, собственной персоной.

Код
t = { section = "logic@esc_lager_volk",

idle = 0,

prior = 16, state = {0,1},

in_rest = "", out_rest = "esc_lager_guard_kill_zone",

predicate = function(obj_info)

return obj_info.profile_name == "esc_wolf"

end

}

table.insert(sj, t)


-- Егоров, собственной персоной.

Код
t = { section = "logic@str_lager_franger", -- здесь указывается работа НПС (ссылка на логику НПС)

idle = 0,

prior = 16, state = {0,1}, -- prior приоритет точки. Точки с высоким приоритетом НПС занимают в первую очередь.

in_rest = "", out_rest = "esc_lager_guard_kill_zone", -- out_restr означает, что НПС будет гулять в пределах этой зоны. Название зоны смотреть в редакторе.

predicate = function(obj_info)

return obj_info.profile_name == "str_stalker_franger" -- для этой точки подходит только НПС, которого мы создали

end

}

table.insert(sj, t)


Работа со скриптами завершена.
Дата регистрации: 22.07.2017
Xemordio Offline Дата: Понедельник, 17.12.2018, 13:08 | Сообщение # 2
Администратор
Звание: Маршал [?]
Сообщений: 3498
Часть IV - "Написание логики для НПС"

Ищем файл gulag_escape.ltx (gamedata\config\misc)

Открываем и находим тег с названием ;-- ESCAPE LAGER. Под ним пишем следующую логику:

Код
;;Егоров

[logic@str_lager_franger] ; название логики. Берется из скрипта gulag_escape (gamedata\scripts)

active = walker@str_lager_franger ; активная схема

[walker@str_lager_franger]

path_walk = str_franger_walk ; точка, на которой будет стоять НПС. В редакторе пишется название_смарта_название_точки. В этом файле просто название точки.

path_look = str_franger_look ; точка, в которую будет смотреть нпс

meet = meet@str_franger; реакция нашего НПС

danger = danger_condition@str_franger ; денжер логика

[meet@str_franger]

meet_state = 15|guard@wait ; Если расстояние от ГГ до НПС 15 метров или меньше, НПС переходит в анимацю wait. Можно вписать другую, например ward.

meet_state_wpn = 15|backoff@threat_weap ; Если расстояние от ГГ до НПС 15 метров или меньше, а так же у актера в руках оружие, НПС наводит оружие на актера.

victim = 15|actor ; На кого будет смотреть НПС. В данном случае ГГ.

victim_wpn = 15|actor На кого навести оружие. В данном случае на ГГ.

use = true ; Можно ли использовать НПС (говорить с ним и т.д.). Если поставить false, то с ним нельзя будет взаимодействовать.

use_wpn = false ; Взаимодействовать с НПС будет нельзя до тех пор, пока ГГ не уберет оружие.

syndata = backoff@threat_weap ; НПС просит убрать оружие (отыгрывается звукоой фаил)

[danger_condition@str_franger]

ignore_distance = 0


Часть V - "Локализация"

Последнее, что осталось сделать - прописать нашему НПС русский вариант имени.

Заходим в text\rus и открываем файл stable_bio_name, после чего перед пишем:

Код
<string id="str_franger_name> ; Используется в профиле НПС, непосредственно имя НПС в профиле.

<text>Егоров</text>

</string>


Вот и все, работа проделана! Заходим в игру и смотрим, что у нас получилось.
Дата регистрации: 22.07.2017
Форум » Игры // games » S.T.A.L.K.E.R. » Модостроение сталкер » Урок: Создание НПС и добавление его в смарт («S.T.A.L.K.E.R. SOC»)
  • Страница 1 из 1
  • 1
Поиск:

Обновленные темы

Мини-чат

Лучшие пользователи

Xemordio REP: 11[3498]
Infe[R]nos REP: 5[38]
Бармен REP: 7[31]
StraNNik REP: 1[25]
Waldemar REP: 0[12]
NL-Vincenz REP: 0[12]
Razilator REP: 14[7]
Ghosteron REP: 3[6]
Duzeppa26 REP: 4[5]
LENA_D REP: 0[5]

Статистика форума

Темы: 2439
Всего постов: 3643
Новый юзер:Rilack
Нас сегодня посетили:
Xemordio, Бармен, awsmtrainer, eda, Rilack