Репутация: 1197
Регистрация: 17.02.2011
Город: Воронеж
Адреналин, пять сек.
Создание НПС
Для того, чтобы создать нового НПС нам понадобятся координаты нужного места, где и будет заспаунен наш 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) добавляем нашего НПС. Код: <character id="escape_trader"> <class>Trader</class> <specific_character>escape_trader</specific_character> </character>
Копируем или создаём по образцу только нижний блок Второго торговца нам ненадо. Теперь моздадим секцию нашего персоонажа. В файле spawn_section.ltx (gamedata/config/creatures) в блоке:
Создаём секцию. Код: [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>
Однако мы не прописали самого НПС, как личность В файле character_desc_escape.xml (gamedata/gameplay) добавляем: Код: <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>
1. include "gameplay\character_items.xml" \n 2. include "gameplay\character_food.xml"
</supplies>
1. include "gameplay\character_criticals_3.xml"
1. include "gameplay\character_dialogs.xml"
</specific_character>
Правда тут получится у нас долговец в одежде бандита и говорящего голосом монолитовца 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 Всё Поздравляю)
Репутация: 6
Регистрация: 02.09.2010
Город: Москва
Попробуйте по этому:
PS: правда я внес изменения в свой мод и получилось - Сообщение # 2773
Сейчас мы научимся создавать нового торговца - Петровича: 1.Для начала создадим нового NPC, к которому и привяжем функцию торговли. Cоздадим описание нашего NPC, для этого в папке gamedata\config\gameplay создадим xml файл, содержащий описание нашего торговца. Назовем его к примеру character_by_escape.xml (вообще называть можно как угодно). В нем пишем: <?xml version='1.0' encoding="windows-1251"?>
За тем прописываем его в npc_profile.xml(gamedata\config\gameplay), т.е под строчкой Новые Профиля пишем: <character id="petrovich_trader"> <class>petrovich_trader</class> <specific_character>petrovich_trader</specific_character> </character> После этого регистрируем описание нашего торговца в файле gamedata\config\system.ltx В секцию [profiles] дописываем в конец после запятой character_by_escape. 3.Чтобы персонаж появился, нужно его заспавнить, для этого: В папке gamedata\config\creatures есть замечательный файл spawn_sections.ltx Будем править его. Дабы не путаться потом, в самое его начало пишем:
[petrovich_trader_spawn]:stalker_trader character_profile = petrovich_trader spec_rank = veteran community = stalker use_single_item_rule = off can_select_items = off custom_data = scripts\petrovich_trader.ltx Далее создаем скрипт с названием, например my_spawns.script в папке gamedata\scripts\ Прописываем в него функцию:
function petrovich_trader_spwn1() local obj local a = vector() -- Задаем тип переменной local dir = db.actor:direction()
a.x = -246.51 -- координата X a.y = -19.52 -- высота Y a.z = -144.60 -- координата Z
obj = alife():create("petrovich_trader_spawn",a,13193,8,65535) alife():create_ammo("ammo_9x18_fmj", obj.position, obj.m_level_vertex_id, obj.m _game_vertex_id, obj.id, 20) -- число патронов, которые будут спавнится при убиистве Петровича end
Открываем блокнотом escape_dialog.script(gamedata\scripts\) и там в диалоге с Сидоровичем, например, после квеста с флешкой Шустрого, функция: "function give_wounded_flash(first_speaker,second_speaker)" (Можно впринципе в любой диалог) вставляем:
my_spawns.petrovich_trader_spwn1()
вот так будет выглядеть разговор с Сидером:
function give_wounded_flash(first_speaker, second_speaker) dialogs.relocate_item_section(second_speaker, "esc_wounded_flash", "out") dialogs.relocate_money(second_speaker, 1500, "in" ) my_spawns.petrovich_trader_spwn1() -- Вызов Петровича end Т.е наш персонаж появится только после выполнения задания с флешкой Шустрого, и когда Сидорович выдаст вам деньги за это задание, а торговец появляется по нашим координатам рядом с лагерем новичков. 4.Теперь в папке \gamedata\config\scripts создаем файл petrovich_trader.ltx Этот файл является проводником к файлу торговли и логикой персонажа. И в нем пишем: [logic] trade = misc\trade_petrovich.ltx active = remark
[remark] anim = wait
5.Теперь создаем в папке \gamedata\config\misc файл trade_petrovich.ltx Это и есть файл торговли. И в начале пишем: [trader] buy_condition = petrovich_generic_buy sell_condition = petrovich_start_sell buy_supplies = supplies_start
и потом как у других торговцев,т.е у бармена например [barman_generic_buy], а у нас будет [petrovich_generic_buy] Если кому то не понятно можете посмотреть мой файл торговли: [Гости не могут видеть ссылки,регистрация не отнимет много времени ]
Все, торговец создан. Спасибо за материал по созданию NPC - Pereiro За все остальное - участникам форума http://sdk.stalker-game.com/ И лично мне
<class>petrovich_trader</class> <community>stalker</community> -- группировка, которая будет указана при разговоре с ним <money min="100000" max="110000" infinitive="1"></money> -- деньги, на которые он покупает оружие и все, что принесет на продажу сам игрок <terrain_sect>stalker_terrain</terrain_sect>
<rank>730</rank> <reputation>96</reputation> <visual>actors\svoboda\stalker_sv_balon_1</visual> --модель героя, можно поменять, указав путь другой модели <snd_config>characters_voice\human_02\freedom\</snd_config> -- озвучка, тоже можно заменить на другую <crouch_type>-1</crouch_type> --оставлять также, не трогать
2. <character id="petrovich_trader"> --id указывайте тот, который указан в созданном файле описания торговца (предыдущий пункт), т.е. можно назвать как угодно торговца, но id сохранять в каждом файле <class>petrovich_trader</class> <specific_character>petrovich_trader</specific_character> </character>
Quote В секцию [profiles] дописываем в конец после запятой character_by_escape
Т.е. дописываем название файла описания торговца (см. в 1 пункте)
3. [petrovich_trader_spawn]:stalker_trader character_profile = petrovich_trader -- это наш id, который будет использоваться в файлах как ссылка на нашего персонажа, типа, связки spec_rank = veteran community = stalker use_single_item_rule = off can_select_items = off custom_data = scripts\petrovich_trader.ltx
Quote (qwerty111) Далее создаем скрипт с названием, например my_spawns.script в папке gamedata\scripts\
Называйте как угодно, главное потом в файле escape_dialog.script(gamedata\scripts\) укажите в функции function give_wounded_flash(first_speaker,second_speaker) ссылку на ваш скрипт. Например, в указанном здесь my_spawns.petrovich_trader_spwn1() , где my_spawns. - наш созданный скрипт, а petrovich_trader_spwn1() - выполнение функции в этом скрипте.
4. [logic] trade = misc\trade_petrovich.ltx --указываем на созданный файл торговца (где и будет находится ассортимент оружия) active = remark
[remark] anim = wait
5. Здесь объяснять ничего не нужно, и так все ясно уже давно
PSS: урок не мой, где взял - забыл
Сообщение отредактировал Адреналин - Среда, 01.06.2011, 21:37:26